summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2019-09-01 00:00:32 +0200
committerSuren A. Chilingaryan <csa@suren.me>2019-09-01 00:00:32 +0200
commitca9627e70852f6b2e835660df870fe3ab405882d (patch)
tree0a008b1d5b16fa0679a195ed7b5662c7891f591c
downloaddarklin4-ca9627e70852f6b2e835660df870fe3ab405882d.tar.gz
darklin4-ca9627e70852f6b2e835660df870fe3ab405882d.tar.bz2
darklin4-ca9627e70852f6b2e835660df870fe3ab405882d.tar.xz
darklin4-ca9627e70852f6b2e835660df870fe3ab405882d.zip
Initial import
-rw-r--r--app-admin/ansible/Manifest12
-rw-r--r--app-admin/ansible/ansible-2.2.0.0-r1.ebuild62
-rw-r--r--app-admin/ansible/ansible-2.3.3.0.ebuild56
-rw-r--r--app-admin/ansible/ansible-2.4.3.0-r1.ebuild63
-rw-r--r--app-admin/ansible/ansible-2.4.3.0-r2.ebuild64
-rw-r--r--app-admin/ansible/files/README.gentoo8
-rw-r--r--app-admin/ansible/files/ansible-ds-dns4.patch12
-rw-r--r--app-admin/ansible/files/ansible-ds-gi.patch14
-rw-r--r--app-admin/ansible/files/ansible-include-role.patch34
-rw-r--r--app-admin/ansible/files/ansible.env2
-rw-r--r--app-admin/openshift-client-tools/Manifest6
-rw-r--r--app-admin/openshift-client-tools/openshift-client-tools-1.3.2.ebuild38
-rw-r--r--app-admin/openshift-client-tools/openshift-client-tools-1.4.1.ebuild38
-rw-r--r--app-admin/openshift-client-tools/openshift-client-tools-3.7.1.ebuild47
-rw-r--r--app-admin/openshift-source-to-image/Manifest2
-rw-r--r--app-admin/openshift-source-to-image/openshift-source-to-image-1.1.8.ebuild38
-rw-r--r--app-admin/vlogger/Manifest2
-rw-r--r--app-admin/vlogger/vlogger-1.3.ebuild34
-rw-r--r--app-arch/p7zip/Manifest40
-rw-r--r--app-arch/p7zip/files/4.65-hardlink.patch13
-rw-r--r--app-arch/p7zip/files/4.65-makefile.patch20
-rw-r--r--app-arch/p7zip/files/7z5
-rw-r--r--app-arch/p7zip/files/7za5
-rw-r--r--app-arch/p7zip/files/9.04-kde4.patch87
-rw-r--r--app-arch/p7zip/files/9.04-makefile.patch19
-rw-r--r--app-arch/p7zip/files/p7zip73
-rw-r--r--app-arch/p7zip/files/p7zip-4.16_x86_static.patch10
-rw-r--r--app-arch/p7zip/files/p7zip-9.13-QA.patch17
-rw-r--r--app-arch/p7zip/files/p7zip-9.20.1-QA.patch17
-rw-r--r--app-arch/p7zip/files/p7zip-9.20.1-execstack.patch24
-rw-r--r--app-arch/p7zip/files/p7zip-ds-442.patch11
-rw-r--r--app-arch/p7zip/files/p7zip-ds-rcc.patch314
-rw-r--r--app-arch/p7zip/files/p7zip_4.27-libun7zip.patch597
-rw-r--r--app-arch/p7zip/files/p7zip_4.44-libun7zip.patch599
-rw-r--r--app-arch/p7zip/files/p7zip_4.57-ds-rusxmms.patch336
-rw-r--r--app-arch/p7zip/files/p7zip_4.57-libun7zip.patch684
-rw-r--r--app-arch/p7zip/files/p7zip_4.65-ds-rusxmms.patch305
-rw-r--r--app-arch/p7zip/files/p7zip_4.65-libun7zip.patch550
-rw-r--r--app-arch/p7zip/files/p7zip_9.04-ds-rusxmms.patch294
-rw-r--r--app-arch/p7zip/files/p7zip_9.13-ds-dynbuf.patch12
-rw-r--r--app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch307
-rw-r--r--app-arch/p7zip/p7zip-4.27-r1.ebuild66
-rw-r--r--app-arch/p7zip/p7zip-4.30-r1.ebuild65
-rw-r--r--app-arch/p7zip/p7zip-4.42-r1.ebuild81
-rw-r--r--app-arch/p7zip/p7zip-4.44-r1.ebuild86
-rw-r--r--app-arch/p7zip/p7zip-4.44-r2.ebuild87
-rw-r--r--app-arch/p7zip/p7zip-4.57-r1.ebuild101
-rw-r--r--app-arch/p7zip/p7zip-4.65-r2.ebuild150
-rw-r--r--app-arch/p7zip/p7zip-9.13-r2.ebuild151
-rw-r--r--app-arch/p7zip/p7zip-9.13-r3.ebuild152
-rw-r--r--app-arch/p7zip/p7zip-9.20.1-r5.ebuild172
-rw-r--r--app-arch/ruszip/Manifest6
-rw-r--r--app-arch/ruszip/files/zip-2.3-unix_configure-pic.patch12
-rw-r--r--app-arch/ruszip/files/zip-2.31-exec-stack.patch20
-rw-r--r--app-arch/ruszip/files/zip-2.32-build.patch89
-rw-r--r--app-arch/ruszip/files/zip232-ds-recoderus.patch165
-rw-r--r--app-arch/ruszip/ruszip-2.32-r1.ebuild46
-rw-r--r--app-arch/unrar/Manifest11
-rw-r--r--app-arch/unrar/files/ftello_unrar_fix.patch16
-rw-r--r--app-arch/unrar/files/unrar-3.4.3_fix.patch71
-rw-r--r--app-arch/unrar/files/unrar-3.5.3_fix.patch60
-rw-r--r--app-arch/unrar/unrar-3.4.3-r1.ebuild51
-rw-r--r--app-arch/unrar/unrar-3.5.4-r2.ebuild39
-rw-r--r--app-arch/unrar/unrar-3.6.5-r1.ebuild48
-rw-r--r--app-arch/unrar/unrar-3.7.3-r1.ebuild47
-rw-r--r--app-arch/unzip/Manifest18
-rw-r--r--app-arch/unzip/files/librcc-0.2.7.h1544
-rw-r--r--app-arch/unzip/files/unzip-5.50-dotdot.patch84
-rw-r--r--app-arch/unzip/files/unzip-5.52-CVE-2008-0888.patch35
-rw-r--r--app-arch/unzip/files/unzip-5.52-ds-rusxmms.patch150
-rw-r--r--app-arch/unzip/files/unzip-5.52-ds-rusxmms2.patch149
-rw-r--r--app-arch/unzip/files/unzip-5.52-no-exec-stack.patch13
-rw-r--r--app-arch/unzip/files/unzip-6.0-no-exec-stack.patch13
-rw-r--r--app-arch/unzip/files/unzip-ds-lazyrcc.patch146
-rw-r--r--app-arch/unzip/files/unzip-ds-rcc.patch105
-rw-r--r--app-arch/unzip/files/unzip-ds-unixenc.patch9
-rw-r--r--app-arch/unzip/files/unzip60-ds-isprint.patch12
-rw-r--r--app-arch/unzip/unzip-5.52-r3.ebuild51
-rw-r--r--app-arch/unzip/unzip-5.52-r4.ebuild67
-rw-r--r--app-arch/unzip/unzip-5.52-r5.ebuild74
-rw-r--r--app-arch/unzip/unzip-5.52-r6.ebuild74
-rw-r--r--app-arch/unzip/unzip-6.0-r3.ebuild94
-rw-r--r--app-backup/duplicity/Manifest3
-rw-r--r--app-backup/duplicity/duplicity-0.7.09.ebuild49
-rw-r--r--app-backup/duplicity/files/duplicity-0.6.24-skip-test.patch10
-rw-r--r--app-cdr/nero/Manifest6
-rw-r--r--app-cdr/nero/files/digest-nero-2.1.0.13
-rw-r--r--app-cdr/nero/files/digest-nero-2.1.0.4b3
-rw-r--r--app-cdr/nero/files/nero.desktop9
-rw-r--r--app-cdr/nero/nero-2.1.0.1.ebuild121
-rw-r--r--app-cdr/nero/nero-2.1.0.4b-r1.ebuild107
-rw-r--r--app-cdr/nero/nero-2.1.0.4b.ebuild105
-rw-r--r--app-dicts/libtranslate/Manifest13
-rw-r--r--app-dicts/libtranslate/files/libtranslate-0.99-charsetparse.diff47
-rw-r--r--app-dicts/libtranslate/files/libtranslate-0.99-condfix.diff38
-rw-r--r--app-dicts/libtranslate/files/libtranslate-ds-empty.patch17
-rw-r--r--app-dicts/libtranslate/files/libtranslate-ds-fixcharset.patch93
-rw-r--r--app-dicts/libtranslate/files/libtranslate-ds-memory.patch12
-rw-r--r--app-dicts/libtranslate/files/libtranslate-ds-promt.patch27
-rw-r--r--app-dicts/libtranslate/files/libtranslate-ds-timed.patch.bz2bin0 -> 2863 bytes
-rw-r--r--app-dicts/libtranslate/files/libtranslate-ds-timed24.patch360
-rw-r--r--app-dicts/libtranslate/files/libtranslate-soup24inc.patch533
-rw-r--r--app-dicts/libtranslate/files/services.xml258
-rw-r--r--app-dicts/libtranslate/libtranslate-0.99-r4.ebuild45
-rw-r--r--app-dicts/libtranslate/libtranslate-0.99-r6.ebuild58
-rw-r--r--app-dicts/makedict/Manifest1
-rw-r--r--app-dicts/makedict/makedict-9999.ebuild31
-rw-r--r--app-dicts/slowo/Manifest2
-rw-r--r--app-dicts/slowo/slowo-1.0.ebuild59
-rw-r--r--app-i18n/gtk1-utf8/Manifest7
-rw-r--r--app-i18n/gtk1-utf8/files/Compose5600
-rw-r--r--app-i18n/gtk1-utf8/files/XI18N_OBJS7
-rw-r--r--app-i18n/gtk1-utf8/files/XLC_LOCALE149
-rw-r--r--app-i18n/gtk1-utf8/files/gtkrc.ru_RU.utf-830
-rw-r--r--app-i18n/gtk1-utf8/gtk1-utf8-1.0.ebuild36
-rw-r--r--app-i18n/gtk1-utf8/gtk1-utf8-1.1.ebuild36
-rw-r--r--app-i18n/gtk1-utf8/gtk1-utf8-1.2.ebuild40
-rw-r--r--app-i18n/libguess/Manifest3
-rw-r--r--app-i18n/libguess/files/libguess-ds-cn.patch62
-rw-r--r--app-i18n/libguess/libguess-0.2.0-r1.ebuild40
-rw-r--r--app-i18n/librcc/Manifest18
-rw-r--r--app-i18n/librcc/files/librcc-strnlen.patch11
-rw-r--r--app-i18n/librcc/files/rcc-debug.patch14
-rw-r--r--app-i18n/librcc/librcc-0.2.10.ebuild55
-rw-r--r--app-i18n/librcc/librcc-0.2.12-r1.ebuild56
-rw-r--r--app-i18n/librcc/librcc-0.2.12.ebuild55
-rw-r--r--app-i18n/librcc/librcc-0.2.3-r4.ebuild45
-rw-r--r--app-i18n/librcc/librcc-0.2.5-r1.ebuild46
-rw-r--r--app-i18n/librcc/librcc-0.2.6.ebuild46
-rw-r--r--app-i18n/librcc/librcc-0.2.8-r1.ebuild56
-rw-r--r--app-i18n/librcc/librcc-0.2.8.ebuild55
-rw-r--r--app-i18n/librcc/librcc-0.2.9.ebuild55
-rw-r--r--app-i18n/librcd/Manifest9
-rw-r--r--app-i18n/librcd/librcd-0.1.10.ebuild28
-rw-r--r--app-i18n/librcd/librcd-0.1.11-r1.ebuild30
-rw-r--r--app-i18n/librcd/librcd-0.1.14-r1.ebuild31
-rw-r--r--app-i18n/librcd/librcd-0.1.14.ebuild30
-rw-r--r--app-i18n/librcd/librcd-0.1.8-r2.ebuild28
-rw-r--r--app-i18n/rcctools/Manifest2
-rw-r--r--app-i18n/rcctools/rcctools-0.1.1.ebuild26
-rw-r--r--app-misc/ds-scripts/Manifest6
-rw-r--r--app-misc/ds-scripts/ds-scripts-1.0-r1.ebuild54
-rw-r--r--app-misc/ds-scripts/ds-scripts-1.0.ebuild80
-rw-r--r--app-misc/ds-scripts/files/alias.sh.darklin.sh71
-rw-r--r--app-misc/ds-scripts/files/ds-scripts.tar.bz2bin0 -> 1751 bytes
-rw-r--r--app-misc/ds-scripts/files/ds-video.tar.bz2bin0 -> 3863 bytes
-rwxr-xr-xapp-misc/ds-scripts/files/m3u48
-rw-r--r--app-misc/everpad/Manifest3
-rw-r--r--app-misc/everpad/everpad-9999.ebuild55
-rw-r--r--app-misc/everpad/files/everpad-9999-content.py.patch13
-rw-r--r--app-misc/everpad/files/everpad-9999-everpad.desktop.patch41
-rw-r--r--app-misc/geeknote/Manifest2
-rw-r--r--app-misc/geeknote/files/geeknote15
-rw-r--r--app-misc/geeknote/geeknote-9999.ebuild42
-rw-r--r--app-misc/lcdproc/Manifest6
-rw-r--r--app-misc/lcdproc/files/LCDd22
-rw-r--r--app-misc/lcdproc/files/lcdproc21
-rw-r--r--app-misc/lcdproc/files/lcdproc-ds-adas.patch91
-rw-r--r--app-misc/lcdproc/files/lcdproc.confd16
-rw-r--r--app-misc/lcdproc/lcdproc-0.4.5-r1.ebuild102
-rw-r--r--app-misc/mumpot/Manifest2
-rw-r--r--app-misc/mumpot/mumpot-0.5.ebuild36
-rw-r--r--app-misc/navit/Manifest4
-rw-r--r--app-misc/navit/files/navit-ds-externc.patch34
-rw-r--r--app-misc/navit/navit-0.0.4.ebuild58
-rw-r--r--app-misc/navit/navit-9999-r1.ebuild54
-rw-r--r--app-misc/nixnote2/Manifest6
-rw-r--r--app-misc/nixnote2/nixnote2-2.0.ebuild91
-rw-r--r--app-misc/nixnote2/nixnote2-2.0_beta7.ebuild86
-rw-r--r--app-misc/nixnote2/nixnote2-2.0_beta8.ebuild80
-rw-r--r--app-misc/roadnav/Manifest4
-rw-r--r--app-misc/roadnav/roadnav-0.19.ebuild59
-rw-r--r--app-misc/roadnav/roadnav-0.20_alpha.ebuild62
-rw-r--r--app-misc/sshsleeper/Manifest2
-rw-r--r--app-misc/sshsleeper/files/sshsleeper.c38
-rw-r--r--app-misc/sshsleeper/sshsleeper-0.1.ebuild37
-rw-r--r--app-misc/tangogps/Manifest2
-rw-r--r--app-misc/tangogps/tangogps-0.9.3.ebuild36
-rw-r--r--app-text/a2ps/Manifest22
-rw-r--r--app-text/a2ps/a2ps-4.14-r4.ebuild155
-rw-r--r--app-text/a2ps/files/50a2ps-gentoo.el5
-rw-r--r--app-text/a2ps/files/a2ps-4.13-manpage-chmod.patch12
-rw-r--r--app-text/a2ps/files/a2ps-4.13-select-freebsd.patch57
-rw-r--r--app-text/a2ps/files/a2ps-4.13-stdout.diff13
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-emacs.patch10
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-fixps.patch19
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-fnmatch-replacement.patch43
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-locale-gentoo.diff25
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-psmandup.diff19
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-psset.patch11
-rw-r--r--app-text/a2ps/files/a2ps-4.13c-stdarg.patch74
-rw-r--r--app-text/a2ps/files/a2ps-4.14-check-mempcpy.patch12
-rw-r--r--app-text/a2ps/files/a2ps-4.14-cleanup.patch106
-rw-r--r--app-text/a2ps/files/a2ps-4.14-fix-stpcpy-proto.patch17
-rw-r--r--app-text/a2ps/files/a2ps-4.14-ja-cleanup.patch122
-rw-r--r--app-text/a2ps/files/a2ps-4.14-psset.patch21
-rw-r--r--app-text/a2ps/files/a2ps-4.14-ptrdiff_t.patch14
-rw-r--r--app-text/a2ps/files/a2ps-ds2.patch53
-rwxr-xr-xapp-text/a2ps/files/cyr2ps49
-rw-r--r--dev-db/freetds/Manifest13
-rw-r--r--dev-db/freetds/files/SQLGetData.utf8.odbc.c-r3.diff196
-rw-r--r--dev-db/freetds/files/SQLGetData.utf8.odbc.c.diff199
-rw-r--r--dev-db/freetds/files/SQLGetData_cvs.patch67
-rw-r--r--dev-db/freetds/files/freetds-0.82-odbc-csa2.patch484
-rw-r--r--dev-db/freetds/files/freetds-20080603-odbc-csa2.patch404
-rw-r--r--dev-db/freetds/files/freetds-ds-connect_timeout.patch12
-rw-r--r--dev-db/freetds/files/freetds-ds-odbc.patch222
-rw-r--r--dev-db/freetds/freetds-0.82-r1.ebuild37
-rw-r--r--dev-db/freetds/freetds-0.82-r2.ebuild38
-rw-r--r--dev-db/freetds/freetds-0.82-r3.ebuild37
-rw-r--r--dev-db/freetds/freetds-0.82-r4.ebuild38
-rw-r--r--dev-db/freetds/freetds-0.82-r5.ebuild38
-rw-r--r--dev-java/oracle-jdk-bin/Manifest4
-rw-r--r--dev-java/oracle-jdk-bin/files/fontconfig.properties161
-rw-r--r--dev-java/oracle-jdk-bin/files/oracle-jdk-bin.env.sh16
-rw-r--r--dev-java/oracle-jdk-bin/oracle-jdk-bin-1.8.0.221.ebuild287
-rw-r--r--dev-lang/php/Manifest41
-rw-r--r--dev-lang/php/files/20php4-envd2
-rw-r--r--dev-lang/php/files/20php5-envd2
-rw-r--r--dev-lang/php/files/70_mod_php.conf-apache217
-rw-r--r--dev-lang/php/files/70_mod_php5.conf-apache2-r117
-rw-r--r--dev-lang/php/files/70_mod_php5_concurr.conf-apache2-r117
-rw-r--r--dev-lang/php/files/70_mod_php_concurr.conf-apache214
-rw-r--r--dev-lang/php/files/eblits/common-v1.eblit9
-rw-r--r--dev-lang/php/files/eblits/common-v2.eblit9
-rw-r--r--dev-lang/php/files/eblits/pkg_postinst-v1.eblit76
-rw-r--r--dev-lang/php/files/eblits/pkg_postinst-v2.eblit64
-rw-r--r--dev-lang/php/files/eblits/pkg_setup-v1.eblit28
-rw-r--r--dev-lang/php/files/eblits/pkg_setup-v2.eblit16
-rw-r--r--dev-lang/php/files/eblits/pkg_setup-v3.eblit9
-rw-r--r--dev-lang/php/files/eblits/src_compile-v1.eblit60
-rw-r--r--dev-lang/php/files/eblits/src_compile-v2.eblit17
-rw-r--r--dev-lang/php/files/eblits/src_configure-v1.eblit280
-rw-r--r--dev-lang/php/files/eblits/src_configure-v2.eblit276
-rw-r--r--dev-lang/php/files/eblits/src_configure-v52.eblit279
-rw-r--r--dev-lang/php/files/eblits/src_configure-v521.eblit273
-rw-r--r--dev-lang/php/files/eblits/src_configure-v53.eblit262
-rw-r--r--dev-lang/php/files/eblits/src_configure-v54.eblit260
-rw-r--r--dev-lang/php/files/eblits/src_install-v1.eblit160
-rw-r--r--dev-lang/php/files/eblits/src_install-v2.eblit165
-rw-r--r--dev-lang/php/files/eblits/src_install-v3.eblit160
-rw-r--r--dev-lang/php/files/eblits/src_prepare-v1.eblit70
-rw-r--r--dev-lang/php/files/eblits/src_prepare-v2.eblit71
-rw-r--r--dev-lang/php/files/eblits/src_prepare-v3.eblit73
-rw-r--r--dev-lang/php/files/eblits/src_prepare-v4.eblit62
-rw-r--r--dev-lang/php/files/eblits/src_test-v1.eblit54
-rwxr-xr-xdev-lang/php/files/php-fpm-r4.init47
-rw-r--r--dev-lang/php/files/php-fpm.conf310
-rwxr-xr-xdev-lang/php/files/php-fpm.init22
-rw-r--r--dev-lang/php/files/php-fpm_at-simple.service13
-rw-r--r--dev-lang/php/files/php-fpm_at.service14
-rw-r--r--dev-lang/php/files/php4-ldvs1
-rw-r--r--dev-lang/php/files/php5-ldvs1
-rw-r--r--dev-lang/php/files/php529-ds-odbc64.patch16
-rw-r--r--dev-lang/php/files/php532-ds-odbc_timeout.patch43
-rw-r--r--dev-lang/php/files/php547-ds-odbc_blob.patch19
-rw-r--r--dev-lang/php/php-5.5.17-r1.ebuild790
-rw-r--r--dev-libs/libds/Manifest15
-rw-r--r--dev-libs/libds/libds-0.0.12.ebuild32
-rw-r--r--dev-libs/libds/libds-0.0.13.ebuild32
-rw-r--r--dev-libs/libds/libds-0.0.14-r1.ebuild32
-rw-r--r--dev-libs/libds/libds-0.0.14.ebuild32
-rw-r--r--dev-libs/libds/libds-0.1.0.ebuild32
-rw-r--r--dev-libs/libds/libds-0.1.1.ebuild32
-rw-r--r--dev-libs/libds/libds-0.1.2.ebuild32
-rw-r--r--dev-libs/libds/libds-0.1.3.ebuild32
-rw-r--r--dev-libs/libroadnav/Manifest4
-rw-r--r--dev-libs/libroadnav/libroadnav-0.19.ebuild39
-rw-r--r--dev-libs/libroadnav/libroadnav-0.20_alpha.ebuild41
-rw-r--r--dev-libs/pocl/Manifest6
-rw-r--r--dev-libs/pocl/files/vendor_opencl_libs_location.epatch21
-rw-r--r--dev-libs/pocl/pocl-1.1.ebuild25
-rw-r--r--dev-libs/pocl/pocl-1.2.ebuild35
-rw-r--r--dev-libs/pocl/pocl-9999.ebuild40
-rw-r--r--dev-php/pecl-rrd/Manifest2
-rw-r--r--dev-php/pecl-rrd/pecl-rrd-1.0.5.ebuild20
-rw-r--r--dev-php/pecl-sqlite/Manifest3
-rw-r--r--dev-php/pecl-sqlite/files/sqlite-svn.patch12200
-rw-r--r--dev-php/pecl-sqlite/pecl-sqlite-1.0.3.ebuild32
-rw-r--r--dev-php/pecl-stats/Manifest3
-rw-r--r--dev-php/pecl-stats/files/stats-php54.diff7930
-rw-r--r--dev-php/pecl-stats/pecl-stats-1.0.2.ebuild31
-rw-r--r--dev-python/PyAutoGUI/Manifest1
-rw-r--r--dev-python/PyAutoGUI/PyAutoGUI-0.9.31-r1.ebuild21
-rw-r--r--dev-python/PyMsgBox/Manifest1
-rw-r--r--dev-python/PyMsgBox/PyMsgBox-1.0.3-r1.ebuild21
-rw-r--r--dev-python/evernote-sdk-python/Manifest1
-rw-r--r--dev-python/evernote-sdk-python/evernote-sdk-python-9999.ebuild37
-rw-r--r--dev-python/matplotlib/Manifest12
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-agg.patch26
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-pycxx.patch22
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.4.3-backport-GH5291-2462.patch126
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-1.patch50
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-2.patch54
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-3.patch58
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.5.1-sphinx-1.4.3-backport.patch58
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport-2.patch22
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport.patch115
-rw-r--r--dev-python/matplotlib/files/matplotlib-1.5.3-freetype-spurious-failure.patch26
-rw-r--r--dev-python/matplotlib/matplotlib-2.0.0.ebuild263
-rw-r--r--dev-python/py-oauth2/Manifest2
-rw-r--r--dev-python/py-oauth2/py-oauth2-0.0.6.ebuild16
-rw-r--r--dev-util/biew/Manifest5
-rw-r--r--dev-util/biew/biew-5.6.2-r1.ebuild67
-rw-r--r--dev-util/biew/biew-6.1.0.ebuild57
-rw-r--r--dev-util/biew/files/biew-562-lvalue-casts.patch152
-rw-r--r--dev-util/decuda/Manifest3
-rw-r--r--dev-util/decuda/decuda-0.4.2.ebuild28
-rw-r--r--dev-util/decuda/files/decuda-ds-setup.patch74
-rw-r--r--dev-util/mutrace/Manifest4
-rw-r--r--dev-util/mutrace/files/mutrace-ds-compile.patch12
-rw-r--r--dev-util/mutrace/files/mutrace-ds-compile2.patch12
-rw-r--r--dev-util/mutrace/mutrace-0.2-r1.ebuild26
-rw-r--r--dev-util/nvidia-cuda-toolkit/Manifest3
-rwxr-xr-xdev-util/nvidia-cuda-toolkit/files/cuda-config28
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9-r1.ebuild15
-rw-r--r--dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9.ebuild10
-rw-r--r--dev-util/objconv/Manifest2
-rw-r--r--dev-util/objconv/objconv-2.08.ebuild41
-rw-r--r--dev-vcs/bzr-search/Manifest1
-rw-r--r--dev-vcs/bzr-search/bzr-search-9999.ebuild22
-rw-r--r--dev-vcs/bzr-svn/bzr-svn-1.2.2.ebuild38
-rw-r--r--dev-vcs/bzr-webdav/Manifest2
-rw-r--r--dev-vcs/bzr-webdav/bzr-webdav-9999.ebuild34
-rw-r--r--dev-vcs/bzr-webdav/files/bzr_webdav-ds-error400.patch12
-rw-r--r--eclass/g-sorcery.eclass49
-rw-r--r--eclass/gs-pypi.eclass15
-rw-r--r--eclass/qt3.eclass7
-rw-r--r--eclass/rusxmms-plugin.eclass122
-rw-r--r--gnome-base/gnome-libs/Makefile.am61
-rw-r--r--gnome-base/gnome-libs/Manifest15
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-db.diff50
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-gmodule.diff18
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-1.4.2-gcc4.patch13
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-1.4.2-gtkdoc_fixes.patch29
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-1.4.2-m4.patch9
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-1.4.2-ppc64.patch11
-rw-r--r--gnome-base/gnome-libs/files/gnome-libs-ds-gnorba.patch47
-rw-r--r--gnome-base/gnome-libs/files/gnome-png.diff33
-rw-r--r--gnome-base/gnome-libs/gnome-libs-1.4.2-r1.ebuild97
-rw-r--r--gnome-base/gnome-libs/gnome-libs-1.4.2-r2.ebuild98
-rw-r--r--gnome-base/gnome-libs/gnome-libs-1.4.2-r3.ebuild97
-rw-r--r--gnome-base/gnome-libs/gnome-libs-1.4.2-r4.ebuild99
-rw-r--r--gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild94
-rw-r--r--gnome-base/libglade/Manifest3
-rw-r--r--gnome-base/libglade/files/libglade-ds-m4.diff12
-rw-r--r--gnome-base/libglade/libglade-0.17-r7.ebuild66
-rw-r--r--mail-client/mailx/Manifest5
-rw-r--r--mail-client/mailx/files/mailx-8.1.2.20050715-offsetof.patch36
-rw-r--r--mail-client/mailx/files/mailx-ds-rt.patch12
-rw-r--r--mail-client/mailx/mailx-8.1.2.20160123-r1.ebuild57
-rw-r--r--media-fonts/ds-fonts/Manifest6
-rw-r--r--media-fonts/ds-fonts/ds-fonts-1.0-r2.ebuild114
-rw-r--r--media-fonts/ds-fonts/files/aliases.tar.bz2bin0 -> 533 bytes
-rw-r--r--media-gfx/zimg/.svn/all-wcprops29
-rw-r--r--media-gfx/zimg/.svn/entries167
-rw-r--r--media-gfx/zimg/.svn/format1
-rw-r--r--media-gfx/zimg/.svn/text-base/ChangeLog.svn-base31
-rw-r--r--media-gfx/zimg/.svn/text-base/Manifest.svn-base5
-rw-r--r--media-gfx/zimg/.svn/text-base/metadata.xml.svn-base14
-rw-r--r--media-gfx/zimg/.svn/text-base/openscenegraph-1.2.ebuild.svn-base136
-rw-r--r--media-gfx/zimg/Manifest2
-rw-r--r--media-gfx/zimg/zimg-5.0.0.ebuild22
-rw-r--r--media-libs/gdk-pixbuf/Manifest9
-rw-r--r--media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch48
-rw-r--r--media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_secure.patch19
-rw-r--r--media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-loaders.patch134
-rw-r--r--media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-m4.patch9
-rw-r--r--media-libs/gdk-pixbuf/files/gdk-pixbuf-ds-png.diff47
-rw-r--r--media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild70
-rw-r--r--media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r6.ebuild73
-rw-r--r--media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r7.ebuild73
-rw-r--r--media-libs/id3lib/Manifest12
-rw-r--r--media-libs/id3lib/files/1.diff19
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-autoconf259.patch31
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-doxyinput.patch23
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-gcc-4.3.patch82
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-security.patch50
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-test_io.patch10
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-unicode16.patch39
-rw-r--r--media-libs/id3lib/files/id3lib-3.8.3-zlib.patch23
-rw-r--r--media-libs/id3lib/files/id3lib-ds-rcc.patch169
-rw-r--r--media-libs/id3lib/id3lib-3.8.3-r5.ebuild56
-rw-r--r--media-libs/id3lib/id3lib-3.8.3-r8.ebuild66
-rw-r--r--media-libs/imlib/Manifest9
-rw-r--r--media-libs/imlib/files/imlib-1.9.15-asneeded.patch38
-rw-r--r--media-libs/imlib/files/imlib-1.9.15-bpp16-CVE-2007-3568.patch11
-rw-r--r--media-libs/imlib/files/imlib-1.9.15-fix-rendering.patch105
-rw-r--r--media-libs/imlib/files/imlib-1.9.15-libpng15.patch142
-rw-r--r--media-libs/imlib/files/imlib-1.9.15.patch70
-rw-r--r--media-libs/imlib/files/imlib-security.patch510
-rw-r--r--media-libs/imlib/imlib-1.9.15-r99.ebuild60
-rw-r--r--media-libs/libaudclient/Manifest2
-rw-r--r--media-libs/libaudclient/libaudclient-3.5_rc2.ebuild25
-rw-r--r--media-libs/libid3tag/Manifest14
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch24
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch35
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch13
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch52
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch11
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch17
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch27
-rw-r--r--media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch22
-rw-r--r--media-libs/libid3tag/files/id3tag.pc11
-rw-r--r--media-libs/libid3tag/files/libid3tag-0.15.1b-ds-rcc.patch300
-rw-r--r--media-libs/libid3tag/libid3tag-0.15.1b-r1.ebuild47
-rw-r--r--media-libs/libid3tag/libid3tag-0.15.1b-r3.ebuild55
-rw-r--r--media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild56
-rw-r--r--media-libs/mac/Manifest7
-rw-r--r--media-libs/mac/files/mac-3.99-u4-b5-s4-ds-fix.patch12
-rw-r--r--media-libs/mac/files/mac-3.99-u4-b5-s4-ds-gcc44.patch27
-rw-r--r--media-libs/mac/mac-3.99-r1.ebuild35
-rw-r--r--media-libs/mac/mac-3.99-r2.ebuild36
-rw-r--r--media-libs/mac/mac-3.99.ebuild34
-rw-r--r--media-libs/nv-codec-headers/Manifest2
-rw-r--r--media-libs/nv-codec-headers/nv-codec-headers-9.0.18.1.ebuild31
-rw-r--r--media-libs/taglib/Manifest10
-rw-r--r--media-libs/taglib/files/taglib-1.10-ds-rusxmms.patch1339
-rw-r--r--media-libs/taglib/files/taglib-1.6.1-install-examples.patch16
-rw-r--r--media-libs/taglib/files/taglib-1.9.1-abi-breakage.patch107
-rw-r--r--media-libs/taglib/files/taglib-1.9.1-bytevector-simpler.patch131
-rw-r--r--media-libs/taglib/files/taglib-1.9.1-ds-rusxmms-enforce.patch20
-rw-r--r--media-libs/taglib/files/taglib-1.9.1-ds-rusxmms.patch676
-rw-r--r--media-libs/taglib/files/taglib-1.9.1-missing-deletes.patch48
-rw-r--r--media-libs/taglib/files/taglib-1.9.1-order-big-endian.patch33
-rw-r--r--media-libs/taglib/taglib-1.9.1-r4.ebuild83
-rw-r--r--media-libs/win32codecs/Manifest2
-rw-r--r--media-libs/win32codecs/win32codecs-20071007-r5.ebuild57
-rw-r--r--media-plugins/eq-xmms/Manifest3
-rw-r--r--media-plugins/eq-xmms/eq-xmms-0.7.ebuild46
-rw-r--r--media-plugins/eq-xmms/files/eq-xmms-0.7-amd64_support.patch45
-rw-r--r--media-plugins/xmmplayer/Manifest2
-rw-r--r--media-plugins/xmmplayer/xmmplayer-0.3.3.ebuild26
-rw-r--r--media-plugins/xmms-alsa/Manifest12
-rw-r--r--media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild19
-rw-r--r--media-plugins/xmms-alsa/xmms-alsa-1.2.11-r2.ebuild19
-rw-r--r--media-plugins/xmms-alsa/xmms-alsa-1.2.11.ebuild19
-rw-r--r--media-plugins/xmms-arts/Manifest3
-rw-r--r--media-plugins/xmms-arts/files/xmms-arts-0.7.1-eintr.patch15
-rw-r--r--media-plugins/xmms-arts/xmms-arts-0.7.1-r2.ebuild32
-rw-r--r--media-plugins/xmms-crossfade/ChangeLog123
-rw-r--r--media-plugins/xmms-crossfade/Manifest4
-rw-r--r--media-plugins/xmms-crossfade/metadata.xml5
-rw-r--r--media-plugins/xmms-crossfade/xmms-crossfade-0.3.11.ebuild33
-rw-r--r--media-plugins/xmms-flac/Manifest6
-rw-r--r--media-plugins/xmms-flac/files/flac-1.2.1-asm.patch80
-rw-r--r--media-plugins/xmms-flac/files/flac-1.2.1-asneeded.patch22
-rw-r--r--media-plugins/xmms-flac/files/flac-1.2.1-cflags.patch12
-rw-r--r--media-plugins/xmms-flac/files/xmms-flac-ds-gcc4.patch11
-rw-r--r--media-plugins/xmms-flac/xmms-flac-1.2.1-r2.ebuild60
-rw-r--r--media-plugins/xmms-jack/Manifest2
-rw-r--r--media-plugins/xmms-jack/xmms-jack-0.17.ebuild45
-rw-r--r--media-plugins/xmms-lirc/Manifest2
-rw-r--r--media-plugins/xmms-lirc/xmms-lirc-1.4.ebuild32
-rw-r--r--media-plugins/xmms-mac/Manifest3
-rw-r--r--media-plugins/xmms-mac/files/xmms-mac-ds-gcc44.patch18
-rw-r--r--media-plugins/xmms-mac/xmms-mac-0.3.1-r2.ebuild34
-rw-r--r--media-plugins/xmms-mad/Manifest4
-rw-r--r--media-plugins/xmms-mad/files/xmms-mad-0.8-mp3-header.patch47
-rw-r--r--media-plugins/xmms-mad/files/xmms-mad-0.8-song_change.patch12
-rw-r--r--media-plugins/xmms-mad/xmms-mad-0.8-r2.ebuild34
-rw-r--r--media-plugins/xmms-mikmod/Manifest12
-rw-r--r--media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild19
-rw-r--r--media-plugins/xmms-mikmod/xmms-mikmod-1.2.11-r2.ebuild19
-rw-r--r--media-plugins/xmms-mikmod/xmms-mikmod-1.2.11.ebuild19
-rw-r--r--media-plugins/xmms-mpg123/Manifest13
-rw-r--r--media-plugins/xmms-mpg123/files/xmms-ds-id3v2fix.patch12
-rw-r--r--media-plugins/xmms-mpg123/xmms-mpg123-1.2.10-r6.ebuild29
-rw-r--r--media-plugins/xmms-mpg123/xmms-mpg123-1.2.11-r2.ebuild29
-rw-r--r--media-plugins/xmms-mpg123/xmms-mpg123-1.2.11.ebuild29
-rw-r--r--media-plugins/xmms-oss/Manifest12
-rw-r--r--media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild18
-rw-r--r--media-plugins/xmms-oss/xmms-oss-1.2.11-r2.ebuild18
-rw-r--r--media-plugins/xmms-oss/xmms-oss-1.2.11.ebuild18
-rw-r--r--media-plugins/xmms-pulse/Manifest2
-rw-r--r--media-plugins/xmms-pulse/xmms-pulse-0.9.4.ebuild28
-rw-r--r--media-plugins/xmms-rva/ChangeLog108
-rw-r--r--media-plugins/xmms-rva/Manifest4
-rw-r--r--media-plugins/xmms-rva/metadata.xml5
-rw-r--r--media-plugins/xmms-rva/xmms-rva-0.7.7.ebuild41
-rw-r--r--media-plugins/xmms-sndfile/Manifest2
-rw-r--r--media-plugins/xmms-sndfile/xmms-sndfile-1.2.ebuild25
-rw-r--r--media-plugins/xmms-vorbis/Manifest12
-rw-r--r--media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild23
-rw-r--r--media-plugins/xmms-vorbis/xmms-vorbis-1.2.11-r2.ebuild23
-rw-r--r--media-plugins/xmms-vorbis/xmms-vorbis-1.2.11.ebuild23
-rw-r--r--media-plugins/xmms-wavpack/Manifest2
-rw-r--r--media-plugins/xmms-wavpack/xmms-wavpack-1.0.3.ebuild20
-rw-r--r--media-plugins/xmms-wma/Manifest10
-rw-r--r--media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg.patch193
-rw-r--r--media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg0.10.patch411
-rw-r--r--media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg20081014.patch209
-rw-r--r--media-plugins/xmms-wma/files/xmms-wma-ds-fifo_init.patch32
-rw-r--r--media-plugins/xmms-wma/files/xmms-wma-ds-rcc.patch98
-rw-r--r--media-plugins/xmms-wma/xmms-wma-1.0.5-r1.ebuild39
-rw-r--r--media-plugins/xmms-wma/xmms-wma-1.0.5-r2.ebuild39
-rw-r--r--media-plugins/xmms-wma/xmms-wma-1.0.5-r3.ebuild40
-rw-r--r--media-plugins/xmms-wma/xmms-wma-1.0.5-r4.ebuild37
-rw-r--r--media-sound/grip/Manifest3
-rw-r--r--media-sound/grip/files/grip-ds-editnext.patch12
-rw-r--r--media-sound/grip/grip-3.3.1-r1.ebuild55
-rw-r--r--media-sound/lossless2lossy/Manifest2
-rw-r--r--media-sound/lossless2lossy/lossless2lossy-1.21.ebuild31
-rw-r--r--media-sound/mpg123/Manifest14
-rw-r--r--media-sound/mpg123/files/mpg123-ds-rcc.patch150
-rw-r--r--media-sound/mpg123/files/mpg123-ds-rcc1121.patch247
-rw-r--r--media-sound/mpg123/files/mpg123-ds-rcc173.patch271
-rw-r--r--media-sound/mpg123/files/mpg123-ds-rcc65.patch240
-rw-r--r--media-sound/mpg123/files/mpg123-osx.diff394
-rw-r--r--media-sound/mpg123/mpg123-0.59s-r11.ebuild143
-rw-r--r--media-sound/mpg123/mpg123-0.65-r1.ebuild89
-rw-r--r--media-sound/mpg123/mpg123-1.12.2-r2.ebuild85
-rw-r--r--media-sound/mpg123/mpg123-1.7.3-r1.ebuild87
-rw-r--r--media-sound/xmms/Manifest18
-rw-r--r--media-sound/xmms/files/xmms-1.2.10-gcc41.patch10
-rw-r--r--media-sound/xmms/files/xmms-1.2.10-locale_fix.patch11
-rw-r--r--media-sound/xmms/files/xmms-ds-gentoofix.patch36
-rw-r--r--media-sound/xmms/xmms-1.2.10-r24.ebuild183
-rw-r--r--media-sound/xmms/xmms-1.2.11-r2.ebuild176
-rw-r--r--media-sound/xmms/xmms-1.2.11-r3.ebuild175
-rw-r--r--media-sound/xmms/xmms-1.2.11.ebuild176
-rw-r--r--media-sound/xmmsctrl/Manifest4
-rw-r--r--media-sound/xmmsctrl/files/xmmsctrl-1.8-jump.patch15
-rw-r--r--media-sound/xmmsctrl/files/xmmsctrl.bash-completion38
-rw-r--r--media-sound/xmmsctrl/xmmsctrl-1.9.ebuild37
-rw-r--r--media-video/nvidia-settings/Manifest2
-rw-r--r--media-video/nvidia-settings/nvidia-settings-355.11.ebuild79
-rw-r--r--metadata/layout.conf1
-rw-r--r--metadata/md5-cache/app-admin/vlogger-1.310
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.27-r110
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.30-r110
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.42-r110
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.44-r110
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.44-r210
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.57-r112
-rw-r--r--metadata/md5-cache/app-arch/p7zip-4.65-r213
-rw-r--r--metadata/md5-cache/app-arch/p7zip-9.13-r213
-rw-r--r--metadata/md5-cache/app-arch/p7zip-9.13-r313
-rw-r--r--metadata/md5-cache/app-arch/ruszip-2.32-r110
-rw-r--r--metadata/md5-cache/app-arch/unrar-3.4.3-r111
-rw-r--r--metadata/md5-cache/app-arch/unrar-3.5.4-r211
-rw-r--r--metadata/md5-cache/app-arch/unrar-3.6.5-r111
-rw-r--r--metadata/md5-cache/app-arch/unrar-3.7.3-r111
-rw-r--r--metadata/md5-cache/app-arch/unzip-5.52-r312
-rw-r--r--metadata/md5-cache/app-arch/unzip-5.52-r412
-rw-r--r--metadata/md5-cache/app-arch/unzip-5.52-r511
-rw-r--r--metadata/md5-cache/app-arch/unzip-5.52-r611
-rw-r--r--metadata/md5-cache/app-arch/unzip-6.0-r313
-rw-r--r--metadata/md5-cache/app-cdr/nero-2.1.0.113
-rw-r--r--metadata/md5-cache/app-cdr/nero-2.1.0.4b13
-rw-r--r--metadata/md5-cache/app-dicts/libtranslate-0.99-r411
-rw-r--r--metadata/md5-cache/app-dicts/libtranslate-0.99-r611
-rw-r--r--metadata/md5-cache/app-dicts/slowo-1.011
-rw-r--r--metadata/md5-cache/app-dicts/stardict-3.0.1-r313
-rw-r--r--metadata/md5-cache/app-emulation/qemu-1.3.014
-rw-r--r--metadata/md5-cache/app-emulation/qemu-1.5.014
-rw-r--r--metadata/md5-cache/app-emulation/qemulator-0.5-r110
-rw-r--r--metadata/md5-cache/app-emulation/vmware-dsp-1.3-r111
-rw-r--r--metadata/md5-cache/app-i18n/gtk1-utf8-1.010
-rw-r--r--metadata/md5-cache/app-i18n/gtk1-utf8-1.110
-rw-r--r--metadata/md5-cache/app-i18n/libguess-0.2.08
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.1010
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.3-r410
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.5-r110
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.610
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.810
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.8-r110
-rw-r--r--metadata/md5-cache/app-i18n/librcc-0.2.910
-rw-r--r--metadata/md5-cache/app-i18n/librcd-0.1.108
-rw-r--r--metadata/md5-cache/app-i18n/librcd-0.1.11-r18
-rw-r--r--metadata/md5-cache/app-i18n/librcd-0.1.8-r28
-rw-r--r--metadata/md5-cache/app-i18n/rcctools-0.1.18
-rw-r--r--metadata/md5-cache/app-misc/ds-scripts-1.07
-rw-r--r--metadata/md5-cache/app-misc/ds-scripts-1.0-r17
-rw-r--r--metadata/md5-cache/app-misc/gcaldaemon-1.0_beta1611
-rw-r--r--metadata/md5-cache/app-misc/lcdproc-0.4.5-r112
-rw-r--r--metadata/md5-cache/app-misc/mc-4.6.1-r1012
-rw-r--r--metadata/md5-cache/app-misc/mc-4.6.1-r1112
-rw-r--r--metadata/md5-cache/app-misc/mc-4.6.1-r712
-rw-r--r--metadata/md5-cache/app-misc/mc-4.6.1-r812
-rw-r--r--metadata/md5-cache/app-misc/mc-4.6.1-r912
-rw-r--r--metadata/md5-cache/app-misc/mumpot-0.512
-rw-r--r--metadata/md5-cache/app-misc/navit-0.0.412
-rw-r--r--metadata/md5-cache/app-misc/navit-9999-r112
-rw-r--r--metadata/md5-cache/app-misc/roadnav-0.1912
-rw-r--r--metadata/md5-cache/app-misc/roadnav-0.20_alpha12
-rw-r--r--metadata/md5-cache/app-misc/sshsleeper-0.18
-rw-r--r--metadata/md5-cache/app-misc/tangogps-0.9.39
-rw-r--r--metadata/md5-cache/app-text/a2ps-4.13c-r412
-rw-r--r--metadata/md5-cache/app-text/a2ps-4.13c-r612
-rw-r--r--metadata/md5-cache/app-text/mpage-2.5.4-r111
-rw-r--r--metadata/md5-cache/dev-db/freetds-0.82-r113
-rw-r--r--metadata/md5-cache/dev-db/freetds-0.82-r213
-rw-r--r--metadata/md5-cache/dev-db/freetds-0.82-r313
-rw-r--r--metadata/md5-cache/dev-db/freetds-0.82-r413
-rw-r--r--metadata/md5-cache/dev-db/freetds-0.82-r513
-rw-r--r--metadata/md5-cache/dev-db/oracle-instantclient-basic-11.2.0.2-r112
-rw-r--r--metadata/md5-cache/dev-lang/php-5.3.5-r215
-rw-r--r--metadata/md5-cache/dev-lang/php-5.3.9-r115
-rw-r--r--metadata/md5-cache/dev-lang/php-5.4.15-r114
-rw-r--r--metadata/md5-cache/dev-lang/php-5.4.7-r115
-rw-r--r--metadata/md5-cache/dev-lang/php-5.4.8-r115
-rw-r--r--metadata/md5-cache/dev-libs/axis2c-0.9611
-rw-r--r--metadata/md5-cache/dev-libs/libcutil-0.1.58
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.0.1210
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.0.1310
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.0.1410
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.0.14-r110
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.1.010
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.1.110
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.1.210
-rw-r--r--metadata/md5-cache/dev-libs/libds-0.1.310
-rw-r--r--metadata/md5-cache/dev-libs/libiconv-1.11-r210
-rw-r--r--metadata/md5-cache/dev-libs/libroadnav-0.1911
-rw-r--r--metadata/md5-cache/dev-libs/libroadnav-0.20_alpha11
-rw-r--r--metadata/md5-cache/dev-libs/openproducer-1.1.0-r112
-rw-r--r--metadata/md5-cache/dev-libs/openthreads-1.5.0-r111
-rw-r--r--metadata/md5-cache/dev-libs/rapidxml-1.139
-rw-r--r--metadata/md5-cache/dev-libs/vtd-xml-2.69
-rw-r--r--metadata/md5-cache/dev-php/pecl-rrd-1.0.514
-rw-r--r--metadata/md5-cache/dev-php/pecl-sqlite-1.0.314
-rw-r--r--metadata/md5-cache/dev-php/pecl-stats-1.0.214
-rw-r--r--metadata/md5-cache/dev-python/json-py-3.411
-rw-r--r--metadata/md5-cache/dev-python/pybaz-1.5.311
-rw-r--r--metadata/md5-cache/dev-ruby/rb-inotify-0.8.113
-rw-r--r--metadata/md5-cache/dev-tcltk/itk-3.14.012
-rw-r--r--metadata/md5-cache/dev-util/biew-5.6.2-r112
-rw-r--r--metadata/md5-cache/dev-util/biew-6.1.012
-rw-r--r--metadata/md5-cache/dev-util/cudpp-1.112
-rw-r--r--metadata/md5-cache/dev-util/cudpp-1.1-r112
-rw-r--r--metadata/md5-cache/dev-util/cudpp-1.1.112
-rw-r--r--metadata/md5-cache/dev-util/decuda-0.4.211
-rw-r--r--metadata/md5-cache/dev-util/objconv-2.0812
-rw-r--r--metadata/md5-cache/dev-util/obs-service-download_url-0.111
-rw-r--r--metadata/md5-cache/dev-util/oprofileui-0.2.011
-rw-r--r--metadata/md5-cache/dev-vcs/bzr-search-999911
-rw-r--r--metadata/md5-cache/dev-vcs/bzr-webdav-999910
-rw-r--r--metadata/md5-cache/gnome-base/gnome-libs-1.4.212
-rw-r--r--metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r112
-rw-r--r--metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r212
-rw-r--r--metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r312
-rw-r--r--metadata/md5-cache/gnome-base/libglade-0.17-r613
-rw-r--r--metadata/md5-cache/mail-filter/libdkim-1.0.1910
-rw-r--r--metadata/md5-cache/media-fonts/ds-fonts-1.08
-rw-r--r--metadata/md5-cache/media-fonts/ds-fonts-1.0-r18
-rw-r--r--metadata/md5-cache/media-gfx/VirtualPlanetBuilder-0.9.112
-rw-r--r--metadata/md5-cache/media-gfx/VirtualPlanetBuilder-999912
-rw-r--r--metadata/md5-cache/media-gfx/imagej-1.42k13
-rw-r--r--metadata/md5-cache/media-gfx/openvrml-0.17.1011
-rw-r--r--metadata/md5-cache/media-gfx/pti-0.2.010
-rw-r--r--metadata/md5-cache/media-gfx/xmedcon-0.10.411
-rw-r--r--metadata/md5-cache/media-gfx/zimg-5.0.011
-rw-r--r--metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r513
-rw-r--r--metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r613
-rw-r--r--metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r713
-rw-r--r--metadata/md5-cache/media-libs/id3lib-3.8.3-r512
-rw-r--r--metadata/md5-cache/media-libs/id3lib-3.8.3-r813
-rw-r--r--metadata/md5-cache/media-libs/imlib-1.9.15-r9913
-rw-r--r--metadata/md5-cache/media-libs/libid3tag-0.15.1b-r112
-rw-r--r--metadata/md5-cache/media-libs/libid3tag-0.15.1b-r312
-rw-r--r--metadata/md5-cache/media-libs/libid3tag-0.15.1b-r412
-rw-r--r--metadata/md5-cache/media-libs/mac-3.999
-rw-r--r--metadata/md5-cache/media-libs/mac-3.99-r19
-rw-r--r--metadata/md5-cache/media-libs/mac-3.99-r29
-rw-r--r--metadata/md5-cache/media-libs/taglib-1.7.2-r213
-rw-r--r--metadata/md5-cache/media-libs/taglib-1.8-r513
-rw-r--r--metadata/md5-cache/media-libs/win32codecs-20071007-r512
-rw-r--r--metadata/md5-cache/media-plugins/eq-xmms-0.712
-rw-r--r--metadata/md5-cache/media-plugins/xmmplayer-0.3.310
-rw-r--r--metadata/md5-cache/media-plugins/xmms-alsa-1.2.10-r312
-rw-r--r--metadata/md5-cache/media-plugins/xmms-alsa-1.2.1112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-alsa-1.2.11-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-arts-0.7.1-r211
-rw-r--r--metadata/md5-cache/media-plugins/xmms-crossfade-0.3.1111
-rw-r--r--metadata/md5-cache/media-plugins/xmms-esd-1.2.10-r112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-esd-1.2.1112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-esd-1.2.11-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-flac-1.2.1-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-jack-0.1711
-rw-r--r--metadata/md5-cache/media-plugins/xmms-lirc-1.410
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mac-0.3.1-r211
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mad-0.8-r211
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mikmod-1.2.1012
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mikmod-1.2.1112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mpg123-1.2.10-r612
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mpg123-1.2.1112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-oss-1.2.10-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-oss-1.2.1112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-oss-1.2.11-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-pulse-0.9.410
-rw-r--r--metadata/md5-cache/media-plugins/xmms-rva-0.7.711
-rw-r--r--metadata/md5-cache/media-plugins/xmms-sndfile-1.210
-rw-r--r--metadata/md5-cache/media-plugins/xmms-vorbis-1.2.10-r112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-vorbis-1.2.1112
-rw-r--r--metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11-r212
-rw-r--r--metadata/md5-cache/media-plugins/xmms-wavpack-1.0.310
-rw-r--r--metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r111
-rw-r--r--metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r211
-rw-r--r--metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r311
-rw-r--r--metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r411
-rw-r--r--metadata/md5-cache/media-sound/grip-3.3.1-r112
-rw-r--r--metadata/md5-cache/media-sound/gxmms2-0.7.011
-rw-r--r--metadata/md5-cache/media-sound/lossless2lossy-1.2110
-rw-r--r--metadata/md5-cache/media-sound/mpg123-0.59s-r1113
-rw-r--r--metadata/md5-cache/media-sound/mpg123-0.65-r113
-rw-r--r--metadata/md5-cache/media-sound/mpg123-1.12.2-r213
-rw-r--r--metadata/md5-cache/media-sound/mpg123-1.7.3-r113
-rw-r--r--metadata/md5-cache/media-sound/xmms-1.2.10-r2413
-rw-r--r--metadata/md5-cache/media-sound/xmms-1.2.1113
-rw-r--r--metadata/md5-cache/media-sound/xmms-1.2.11-r213
-rw-r--r--metadata/md5-cache/media-sound/xmms2-0.4-r113
-rw-r--r--metadata/md5-cache/media-sound/xmmsctrl-1.913
-rw-r--r--metadata/md5-cache/net-analyzer/netams-3.3.59
-rw-r--r--metadata/md5-cache/net-analyzer/openvas-3.0.19
-rw-r--r--metadata/md5-cache/net-analyzer/openvas-client-3.0.012
-rw-r--r--metadata/md5-cache/net-analyzer/openvas-libraries-3.0.311
-rw-r--r--metadata/md5-cache/net-analyzer/openvas-scanner-3.0.111
-rw-r--r--metadata/md5-cache/net-dialup/mingetty-1.07.310
-rw-r--r--metadata/md5-cache/net-dialup/mingetty-1.07.3-r110
-rw-r--r--metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r19
-rw-r--r--metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r29
-rw-r--r--metadata/md5-cache/net-ftp/gftp-2.0.18-r512
-rw-r--r--metadata/md5-cache/net-im/jabberd-1.4.4-r412
-rw-r--r--metadata/md5-cache/net-im/jabberd-1.4.4-r512
-rw-r--r--metadata/md5-cache/net-im/jabberd2-2.2.1112
-rw-r--r--metadata/md5-cache/net-im/psi-0.14-r515
-rw-r--r--metadata/md5-cache/net-im/skype-4.1.0.2014
-rw-r--r--metadata/md5-cache/net-libs/courier-authlib-0.60.6-r113
-rw-r--r--metadata/md5-cache/net-libs/courier-authlib-0.62.2-r113
-rw-r--r--metadata/md5-cache/net-mail/biff-0.177
-rw-r--r--metadata/md5-cache/net-mail/ezmlm-idx-7.1.112
-rw-r--r--metadata/md5-cache/net-mail/qmail-usergen-0.17
-rw-r--r--metadata/md5-cache/net-mail/qmailadmin-1.2.10-r113
-rw-r--r--metadata/md5-cache/net-mail/qmailadmin-1.2.10-r313
-rw-r--r--metadata/md5-cache/net-mail/solid-pop3d-0.158
-rw-r--r--metadata/md5-cache/net-mail/solid-pop3d-0.15-r18
-rw-r--r--metadata/md5-cache/net-mail/vpopmail-5.4.16-r113
-rw-r--r--metadata/md5-cache/net-mail/vpopmail-5.4.25-r112
-rw-r--r--metadata/md5-cache/net-misc/d4x-2.5.7.1-r312
-rw-r--r--metadata/md5-cache/net-misc/httptunnel-3.3-r18
-rw-r--r--metadata/md5-cache/net-misc/rdesktop-1.6.0-r212
-rw-r--r--metadata/md5-cache/net-misc/rdesktop-1.7.1-r113
-rw-r--r--metadata/md5-cache/net-nntp/colobus-2.1-r110
-rw-r--r--metadata/md5-cache/net-proxy/socks5-1.0-r118
-rw-r--r--metadata/md5-cache/net-wireless/blueman-1.21-r213
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.2.610
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.2.710
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.2.810
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.2.910
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.3.010
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.3.110
-rw-r--r--metadata/md5-cache/sci-electronics/adas-3.3.210
-rw-r--r--metadata/md5-cache/sci-electronics/lpc2k_pgm-1.0212
-rw-r--r--metadata/md5-cache/sci-geosciences/gipfel-0.2.512
-rw-r--r--metadata/md5-cache/sci-geosciences/gosmore-999910
-rw-r--r--metadata/md5-cache/sci-geosciences/happycamel-1_beta311
-rw-r--r--metadata/md5-cache/sci-geosciences/osmcut-999910
-rw-r--r--metadata/md5-cache/sci-libs/dcmtk-3.5.4-r312
-rw-r--r--metadata/md5-cache/sci-visualization/amide-0.9.1-r111
-rw-r--r--metadata/md5-cache/sys-apps/darklin-4.0.19
-rw-r--r--metadata/md5-cache/sys-apps/darklin-4.0.29
-rw-r--r--metadata/md5-cache/sys-apps/fbres-1.08
-rw-r--r--metadata/md5-cache/sys-apps/groff-1.19.2-r113
-rw-r--r--metadata/md5-cache/sys-apps/groff-1.19.2-r212
-rw-r--r--metadata/md5-cache/sys-apps/kbd-1.12-r1011
-rw-r--r--metadata/md5-cache/sys-apps/kbd-1.12-r1111
-rw-r--r--metadata/md5-cache/sys-apps/kbd-1.12-r911
-rw-r--r--metadata/md5-cache/sys-apps/kbd-1.14.1-r211
-rw-r--r--metadata/md5-cache/sys-apps/kbd-1.15.1-r111
-rw-r--r--metadata/md5-cache/sys-apps/mkinitrd-4.2.17-r313
-rw-r--r--metadata/md5-cache/sys-apps/mkinitrd-6.0.93-r114
-rw-r--r--metadata/md5-cache/sys-apps/util-linux-2.12r-r912
-rw-r--r--metadata/md5-cache/sys-apps/util-linux-2.13.1.1-r112
-rw-r--r--metadata/md5-cache/sys-apps/util-linux-2.14.2-r112
-rw-r--r--metadata/md5-cache/sys-apps/util-linux-2.16.2-r113
-rw-r--r--metadata/md5-cache/sys-auth/pam_x509-1.0.2-r111
-rw-r--r--metadata/md5-cache/sys-auth/pam_x509-1.0.2-r211
-rw-r--r--metadata/md5-cache/sys-auth/pam_x509-1.0.2-r312
-rw-r--r--metadata/md5-cache/sys-boot/usb-creator-0.2.2613
-rw-r--r--metadata/md5-cache/www-apps/loggerhead-1.1812
-rw-r--r--metadata/md5-cache/www-apps/loggerhead-1.18.113
-rw-r--r--metadata/md5-cache/www-apps/trac-0.10.4-r112
-rw-r--r--metadata/md5-cache/www-apps/trac-0.10.512
-rw-r--r--metadata/md5-cache/www-apps/trac-webadmin-0.1.111
-rw-r--r--metadata/md5-cache/www-apps/trac-webadmin-0.1.211
-rw-r--r--metadata/md5-cache/www-apps/trac-webadmin-0.1.2-r111
-rw-r--r--metadata/md5-cache/x11-libs/gtk+-1.2.10-r1412
-rw-r--r--metadata/md5-cache/x11-libs/vte-0.30.1-r314
-rw-r--r--metadata/md5-cache/x11-plugins/gkrellm-xkb-1.05-r111
-rw-r--r--metadata/md5-cache/x11-plugins/wmvolman-0.711
-rw-r--r--metadata/md5-cache/x11-plugins/wmvolman-0.911
-rw-r--r--metadata/md5-cache/x11-plugins/wmvolman-1.011
-rw-r--r--metadata/md5-cache/x11-terms/xterm-215-r312
-rw-r--r--metadata/md5-cache/x11-terms/xterm-225-r112
-rw-r--r--metadata/md5-cache/x11-terms/xterm-243-r113
-rw-r--r--metadata/md5-cache/x11-terms/xterm-278-r113
-rw-r--r--metadata/md5-cache/x11-terms/xterm-278-r213
-rw-r--r--metadata/md5-cache/x11-themes/ds-engines-1.011
-rw-r--r--metadata/md5-cache/x11-themes/ds-engines-1.0-r111
-rw-r--r--metadata/md5-cache/x11-themes/ds-engines-1.0-r211
-rw-r--r--metadata/md5-cache/x11-themes/ds-themes-1.08
-rw-r--r--metadata/md5-cache/x11-wm/windowmaker-0.92.0-r1013
-rw-r--r--metadata/md5-cache/x11-wm/windowmaker-0.92.0-r212
-rw-r--r--metadata/md5-cache/x11-wm/windowmaker-0.92.0-r412
-rw-r--r--metadata/md5-cache/x11-wm/windowmaker-0.92.0-r512
-rw-r--r--metadata/md5-cache/x11-wm/windowmaker-0.92.0-r913
-rw-r--r--net-analyzer/netams/Manifest9
-rw-r--r--net-analyzer/netams/files/netams-3.4.5-ds-compile.patch24
-rw-r--r--net-analyzer/netams/files/netams-ds-compile.patch24
-rw-r--r--net-analyzer/netams/files/netams-ds-portrange.patch96
-rw-r--r--net-analyzer/netams/files/netams.init32
-rw-r--r--net-analyzer/netams/files/netams33.init25
-rw-r--r--net-analyzer/netams/netams-3.3.5.ebuild38
-rw-r--r--net-analyzer/netams/netams-3.4.5.ebuild41
-rw-r--r--net-analyzer/openvas-client/Manifest2
-rw-r--r--net-analyzer/openvas-client/openvas-client-3.0.0.ebuild33
-rw-r--r--net-analyzer/openvas-libraries/Manifest3
-rw-r--r--net-analyzer/openvas-libraries/files/openvas-libraries-3.0.3-ds-gpgme.patch12
-rw-r--r--net-analyzer/openvas-libraries/openvas-libraries-3.0.3.ebuild28
-rw-r--r--net-analyzer/openvas-scanner/Manifest3
-rw-r--r--net-analyzer/openvas-scanner/files/openvasd27
-rw-r--r--net-analyzer/openvas-scanner/openvas-scanner-3.0.1.ebuild46
-rw-r--r--net-analyzer/openvas/Manifest1
-rw-r--r--net-analyzer/openvas/openvas-3.0.1.ebuild18
-rw-r--r--net-dialup/mingetty/Manifest5
-rw-r--r--net-dialup/mingetty/files/mingetty-ds-x509-v2.patch22
-rw-r--r--net-dialup/mingetty/files/mingetty-ds-x509.patch22
-rw-r--r--net-dialup/mingetty/mingetty-1.07.3-r1.ebuild38
-rw-r--r--net-dialup/mingetty/mingetty-1.07.3.ebuild38
-rw-r--r--net-ftp/bsdftpd-ssl/Manifest17
-rw-r--r--net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r1.ebuild43
-rw-r--r--net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r2.ebuild46
-rw-r--r--net-ftp/bsdftpd-ssl/files/auth.sslftp43
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-anonymous.patch.bz2bin0 -> 768 bytes
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-argmax.diff17
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-cmdtab.diff20
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-compile.patch89
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-extprog.patch.bz2bin0 -> 608 bytes
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-getline.diff45
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-keypassword.patch.bz2bin0 -> 1162 bytes
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-pport.patch.bz2bin0 -> 1210 bytes
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd-ds-termcap.patch.bz2bin0 -> 322 bytes
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd.pam5
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd.sysconfig7
-rw-r--r--net-ftp/bsdftpd-ssl/files/bsdftpd.sysinit20
-rw-r--r--net-ftp/bsdftpd-ssl/files/x509.auth2
-rw-r--r--net-ftp/gftp/Manifest5
-rw-r--r--net-ftp/gftp/files/gftp-2.0.18-fix_gtk1.patch31
-rw-r--r--net-ftp/gftp/files/gftp-2.0.18-ssh2-read.patch13
-rw-r--r--net-ftp/gftp/files/gftp-ds-rcc.patch822
-rw-r--r--net-ftp/gftp/gftp-2.0.18-r5.ebuild54
-rw-r--r--net-im/telegram-desktop-bin/Manifest4
-rw-r--r--net-im/telegram-desktop-bin/telegram-desktop-bin-1.0.27.ebuild59
-rw-r--r--net-libs/webkit-gtk/Manifest16
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-1.11.90-gtk-docize-fix.patch10
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-1.6.1-darwin-quartz.patch67
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.2.5-hppa-platform.patch20
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.2.5-ia64-platform.patch12
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.4.1-ia64-malloc.patch20
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.4.11-video-web-audio.patch11
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.4.4-atomic-ppc.patch32
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.4.4-jpeg-9a.patch30
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.4.7-disable-webgl.patch11
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.4.9-gcc-6.patch29
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-alpha-build.patch22
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-ia64-build.patch21
-rw-r--r--net-libs/webkit-gtk/files/webkit-gtk-2.8.5-webkit2gtkinjectedbundle-j1.patch22
-rw-r--r--net-libs/webkit-gtk/webkit-gtk-2.4.11-r1.ebuild282
-rw-r--r--net-libs/webkit-gtk/webkit-gtk-2.4.11-r200.ebuild269
-rw-r--r--net-mail/biff/Manifest3
-rw-r--r--net-mail/biff/biff-0.17.ebuild36
-rw-r--r--net-mail/biff/files/biff+comsat-0.10-nobr.patch.bz2bin0 -> 270 bytes
-rw-r--r--net-mail/biff/files/biff+comsat-0.17.tar.bz2bin0 -> 13299 bytes
-rw-r--r--net-mail/ezmlm-idx/Manifest2
-rw-r--r--net-mail/ezmlm-idx/ezmlm-idx-7.1.1.ebuild65
-rw-r--r--net-mail/qmail-usergen/Manifest3
-rwxr-xr-xnet-mail/qmail-usergen/files/qmail.sh29
-rw-r--r--net-mail/qmail-usergen/files/users/exclude14
-rw-r--r--net-mail/qmail-usergen/qmail-usergen-0.1.ebuild18
-rw-r--r--net-misc/d4x/ChangeLog245
-rw-r--r--net-misc/d4x/Manifest7
-rw-r--r--net-misc/d4x/d4x-2.5.7.1-r3.ebuild60
-rw-r--r--net-misc/d4x/files/d4x-2.5.7.1-ds-compile.patch96
-rw-r--r--net-misc/d4x/files/d4x-2.5.7.1-gentoo.patch101
-rw-r--r--net-misc/d4x/files/d4x-ds-X.diff24
-rw-r--r--net-misc/d4x/metadata.xml5
-rw-r--r--net-misc/httptunnel/Manifest6
-rwxr-xr-xnet-misc/httptunnel/files/htc31
-rw-r--r--net-misc/httptunnel/files/htc.sysconfig13
-rwxr-xr-xnet-misc/httptunnel/files/hts20
-rw-r--r--net-misc/httptunnel/files/hts.sysconfig12
-rw-r--r--net-misc/httptunnel/httptunnel-3.3-r1.ebuild33
-rw-r--r--net-misc/nxclient/ChangeLog446
-rw-r--r--net-misc/nxclient/Manifest5
-rw-r--r--net-misc/nxclient/metadata.xml9
-rw-r--r--net-misc/nxclient/nxclient-3.5.0.7-r1.ebuild68
-rw-r--r--net-misc/rdesktop/Manifest15
-rw-r--r--net-misc/rdesktop/files/rdesktop-1.6.0-smartcard_configure.patch22
-rw-r--r--net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch15
-rw-r--r--net-misc/rdesktop/files/rdesktop-1.7.0-libao_crash.patch18
-rw-r--r--net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch17
-rw-r--r--net-misc/rdesktop/files/rdesktop-keymap-additional64
-rw-r--r--net-misc/rdesktop/files/rdesktop-keymap-cs122
-rw-r--r--net-misc/rdesktop/files/rdesktop-keymap-sk124
-rw-r--r--net-misc/rdesktop/files/rdesktop-xinerama.patch180
-rw-r--r--net-misc/rdesktop/files/rdesktop171-ds-xinerama.patch181
-rw-r--r--net-misc/rdesktop/rdesktop-1.6.0-r2.ebuild78
-rw-r--r--net-misc/rdesktop/rdesktop-1.7.1-r1.ebuild85
-rw-r--r--net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild81
-rw-r--r--net-misc/x11-ssh-askpass/Manifest1
-rw-r--r--net-misc/x11-ssh-askpass/x11-ssh-askpass-999.ebuild10
-rw-r--r--net-nntp/colobus/Manifest3
-rw-r--r--net-nntp/colobus/colobus-2.1-r1.ebuild34
-rw-r--r--net-nntp/colobus/files/colobus-ds.patch12
-rw-r--r--net-proxy/socks5/Manifest7
-rw-r--r--net-proxy/socks5/files/socks5-v1.0r11-ifaaddr.patch.bz2bin0 -> 407 bytes
-rw-r--r--net-proxy/socks5/files/socks5-v1.0r11.patch1.txt.bz2bin0 -> 529 bytes
-rw-r--r--net-proxy/socks5/files/socks5-v1.0r11.tar.bz2bin0 -> 329136 bytes
-rw-r--r--net-proxy/socks5/files/socks5-vararg.patch.bz2bin0 -> 1062 bytes
-rw-r--r--net-proxy/socks5/files/socks5.init20
-rw-r--r--net-proxy/socks5/files/unsocks28
-rw-r--r--net-proxy/socks5/socks5-1.0-r11.ebuild58
-rw-r--r--profiles/repo_name1
-rw-r--r--sci-biology/imagej/Manifest5
-rw-r--r--sci-biology/imagej/files/AutoThresholder.java.patch10
-rw-r--r--sci-biology/imagej/imagej-1.51k-r1.ebuild132
-rw-r--r--sci-electronics/adas/Manifest14
-rw-r--r--sci-electronics/adas/adas-3.2.6.ebuild59
-rw-r--r--sci-electronics/adas/adas-3.2.7.ebuild60
-rw-r--r--sci-electronics/adas/adas-3.2.8.ebuild60
-rw-r--r--sci-electronics/adas/adas-3.2.9.ebuild60
-rw-r--r--sci-electronics/adas/adas-3.3.0.ebuild64
-rw-r--r--sci-electronics/adas/adas-3.3.1.ebuild64
-rw-r--r--sci-electronics/adas/adas-3.3.2.ebuild64
-rw-r--r--sci-electronics/lpc2k_pgm/Manifest3
-rw-r--r--sci-electronics/lpc2k_pgm/files/lpc2k_pgm-ds-console.patch.gzbin0 -> 94769 bytes
-rw-r--r--sci-electronics/lpc2k_pgm/lpc2k_pgm-1.02.ebuild34
-rw-r--r--sci-geosciences/gipfel/Manifest2
-rw-r--r--sci-geosciences/gipfel/gipfel-0.2.5.ebuild28
-rw-r--r--sci-geosciences/gosmore/Manifest1
-rw-r--r--sci-geosciences/gosmore/gosmore-9999.ebuild22
-rw-r--r--sci-geosciences/happycamel/Manifest7
-rw-r--r--sci-geosciences/happycamel/files/HappyCamel-optional-correlate.diff38
-rw-r--r--sci-geosciences/happycamel/files/happycamel-ds-icons.patch167
-rw-r--r--sci-geosciences/happycamel/files/happycamel-v1-beta3-ds-features.patch322
-rw-r--r--sci-geosciences/happycamel/happycamel-1_beta3-r1.ebuild32
-rw-r--r--sci-geosciences/happycamel/happycamel-1_beta3-r2.ebuild32
-rw-r--r--sci-geosciences/happycamel/happycamel-1_beta3-r3.ebuild32
-rw-r--r--sci-geosciences/mkgmap/Manifest2
-rw-r--r--sci-geosciences/mkgmap/mkgmap-3620.ebuild40
-rw-r--r--sci-geosciences/osmcut/Manifest1
-rw-r--r--sci-geosciences/osmcut/osmcut-9999.ebuild20
-rw-r--r--sci-libs/dcmtk/.svn/all-wcprops29
-rw-r--r--sci-libs/dcmtk/.svn/entries164
-rw-r--r--sci-libs/dcmtk/.svn/format1
-rw-r--r--sci-libs/dcmtk/.svn/text-base/ChangeLog.svn-base13
-rw-r--r--sci-libs/dcmtk/.svn/text-base/Manifest.svn-base5
-rw-r--r--sci-libs/dcmtk/.svn/text-base/dcmtk-3.5.4-r3.ebuild.svn-base77
-rw-r--r--sci-libs/dcmtk/.svn/text-base/metadata.xml.svn-base19
-rw-r--r--sci-libs/dcmtk/Manifest2
-rw-r--r--sci-libs/dcmtk/dcmtk-3.6.1_pre20140617.ebuild79
-rw-r--r--sys-apps/darklin/Manifest6
-rw-r--r--sys-apps/darklin/darklin-4.0.1.ebuild85
-rw-r--r--sys-apps/darklin/darklin-4.0.2.ebuild85
-rw-r--r--sys-apps/darklin/files/bashrc11
-rw-r--r--sys-apps/darklin/files/issue17
-rw-r--r--sys-apps/darklin/files/profile10
-rw-r--r--sys-apps/darklin/files/skel.tar.bz2bin0 -> 12366 bytes
-rw-r--r--sys-apps/fbres/Manifest3
-rw-r--r--sys-apps/fbres/fbres-1.0.ebuild19
-rw-r--r--sys-apps/fbres/files/fbres.sysconfig1
-rw-r--r--sys-apps/fbres/files/fbres.sysinit14
-rw-r--r--sys-apps/kbd/Manifest36
-rw-r--r--sys-apps/kbd/files/alias-console-tools.sh23
-rw-r--r--sys-apps/kbd/files/alias-console-tools2.sh23
-rw-r--r--sys-apps/kbd/files/console-tools-ds-bin.tar.bz2bin0 -> 748 bytes
-rwxr-xr-xsys-apps/kbd/files/consolechars22
-rw-r--r--sys-apps/kbd/files/controlkeys26
-rwxr-xr-xsys-apps/kbd/files/dynamicvc21
-rw-r--r--sys-apps/kbd/files/kbd-1.08-terminal.patch31
-rw-r--r--sys-apps/kbd/files/kbd-1.12-Meta_utf8.patch11
-rw-r--r--sys-apps/kbd/files/kbd-1.12-alias.patch47
-rw-r--r--sys-apps/kbd/files/kbd-1.12-configure-LANG.patch27
-rw-r--r--sys-apps/kbd/files/kbd-1.12-cz-qwerty-map.patch101
-rw-r--r--sys-apps/kbd/files/kbd-1.12-debian.patch86
-rw-r--r--sys-apps/kbd/files/kbd-1.12-find-map-fix.patch37
-rw-r--r--sys-apps/kbd/files/kbd-1.12-it-euro-map.patch18
-rw-r--r--sys-apps/kbd/files/kbd-1.12-jp-escape.patch16
-rw-r--r--sys-apps/kbd/files/kbd-1.12-kbd_repeat-v2.patch27
-rw-r--r--sys-apps/kbd/files/kbd-1.12-kbio.patch25
-rw-r--r--sys-apps/kbd/files/kbd-1.12-setfont-man.patch14
-rw-r--r--sys-apps/kbd/files/kbd-1.12-unimap.patch16
-rw-r--r--sys-apps/kbd/files/kbd-1.12-xcompile.patch21
-rw-r--r--sys-apps/kbd/files/kbd-1.13-dont-use-error.patch17
-rw-r--r--sys-apps/kbd/files/kbd-1.14-ds-nohost.patch12
-rw-r--r--sys-apps/kbd/files/kbd-1.14-ds-unicode.patch59
-rw-r--r--sys-apps/kbd/files/kbd-1.14.1-missing-configure.patch15
-rw-r--r--sys-apps/kbd/files/kbd-1.15.1-ds-nohost.patch12
-rw-r--r--sys-apps/kbd/files/kbd-ds-nohost.patch12
-rw-r--r--sys-apps/kbd/files/keymaps.tar.bz2bin0 -> 15065 bytes
-rw-r--r--sys-apps/kbd/kbd-1.12-r10.ebuild132
-rw-r--r--sys-apps/kbd/kbd-1.12-r11.ebuild136
-rw-r--r--sys-apps/kbd/kbd-1.12-r9.ebuild132
-rw-r--r--sys-apps/kbd/kbd-1.14.1-r2.ebuild75
-rw-r--r--sys-apps/kbd/kbd-1.15.1-r1.ebuild65
-rw-r--r--sys-apps/mkinitrd/Manifest16
-rw-r--r--sys-apps/mkinitrd/files/mdadm-ds-static.patch22
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-4.2.17-mdk.patch.bz2bin0 -> 21102 bytes
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-6.0.93-ds.diff164
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-ds-grubby_compile.patch27
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-ds-raid.patch15
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-ds-vitalsunion.diff65
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-ds.patch42
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-lvm_statics.diff15
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-mdk-patches-6.0.93.tar.bz2bin0 -> 21199 bytes
-rw-r--r--sys-apps/mkinitrd/files/mkinitrd-swsusp2.patch13
-rw-r--r--sys-apps/mkinitrd/files/nash-ds-remount.patch85
-rw-r--r--sys-apps/mkinitrd/mkinitrd-4.2.17-r3.ebuild65
-rw-r--r--sys-apps/mkinitrd/mkinitrd-6.0.93-r1.ebuild46
-rw-r--r--sys-apps/util-linux/Manifest60
-rw-r--r--sys-apps/util-linux/files/agetty-ds-x509-v2.patch23
-rw-r--r--sys-apps/util-linux/files/agetty-ds-x509.patch13
-rw-r--r--sys-apps/util-linux/files/crypto-loop.confd9
-rwxr-xr-xsys-apps/util-linux/files/crypto-loop.initd70
-rw-r--r--sys-apps/util-linux/files/no-symlink-resolve.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.11z-01-nfsv4.dif475
-rw-r--r--sys-apps/util-linux/files/util-linux-2.11z-agetty-domainname-option.patch69
-rw-r--r--sys-apps/util-linux/files/util-linux-2.11z-parallel-make.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.11z-pic.patch76
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-fat-LABEL-support.patch319
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-gcloop.patch116
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-kernel-2.6.patch87
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-mips-lseek.patch24
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-only-root-can-remount.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-selinux.diff.bz2bin0 -> 2558 bytes
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12-swapon-unistd.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12i-fat-LABEL-support.patch69
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12i-ignore-managed.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12i-nfsv4.patch456
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12i-pic.patch59
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12i-swapon-check-symlinks.patch33
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12p-swapon-check-symlinks.patch34
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-debian-10cfdisk.patch49
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-dont-umask.patch17
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-i18n-update.patch10
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-more-fake-checks-v2.patch40
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-no-m68k-fdisk.patch15
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-umount-dont-write-mtab-with-remount.patch18
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-update-mtab-when-moving.patch33
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-update_mtab-fixes.patch68
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12q-use-update_mtab-for-fake.patch16
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h-loop-aes.patch18
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h.patch16
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-cal-dumb-terminal.patch37
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-cracklib-words.patch19
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-fdisk-frame-pointers.patch12
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-no-_syscall.patch53
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-umount-no-special.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.12r-umount-nosysfs.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.13-ioprio-syscalls.patch16
-rw-r--r--sys-apps/util-linux/files/util-linux-2.13-locale.patch121
-rw-r--r--sys-apps/util-linux/files/util-linux-2.13-no-nls.patch11
-rw-r--r--sys-apps/util-linux/files/util-linux-2.13-script-SIGWINCH.patch56
-rw-r--r--sys-apps/util-linux/files/util-linux-2.13-setuid-checks.patch52
-rw-r--r--sys-apps/util-linux/files/util-linux-2.13-uclibc.patch71
-rw-r--r--sys-apps/util-linux/files/util-linux-no-kill.patch23
-rw-r--r--sys-apps/util-linux/util-linux-2.12r-r9.ebuild212
-rw-r--r--sys-apps/util-linux/util-linux-2.13.1.1-r1.ebuild96
-rw-r--r--sys-apps/util-linux/util-linux-2.14.2-r1.ebuild96
-rw-r--r--sys-apps/util-linux/util-linux-2.16.2-r1.ebuild101
-rw-r--r--sys-auth/pam_x509/Manifest11
-rw-r--r--sys-auth/pam_x509/files/pam_x509-ds-compile.patch103
-rw-r--r--sys-auth/pam_x509/files/pam_x509-ds-compile2.patch103
-rw-r--r--sys-auth/pam_x509/files/pam_x509-ds-obexftp.patch74
-rw-r--r--sys-auth/pam_x509/files/pam_x509-ds_syslog.patch45
-rw-r--r--sys-auth/pam_x509/files/x509-auth3
-rw-r--r--sys-auth/pam_x509/files/x509.config1
-rw-r--r--sys-auth/pam_x509/pam_x509-1.0.2-r1.ebuild46
-rw-r--r--sys-auth/pam_x509/pam_x509-1.0.2-r2.ebuild46
-rw-r--r--sys-auth/pam_x509/pam_x509-1.0.2-r3.ebuild56
-rw-r--r--sys-auth/pam_x509/pam_x509-1.0.2-r4.ebuild54
-rw-r--r--sys-boot/usb-creator/Manifest2
-rw-r--r--sys-boot/usb-creator/usb-creator-0.2.26.ebuild45
-rw-r--r--sys-cluster/glusterfs/Manifest12
-rw-r--r--sys-cluster/glusterfs/files/50glusterfs-mode-gentoo.el5
-rw-r--r--sys-cluster/glusterfs/files/glusterd-r2.initd33
-rw-r--r--sys-cluster/glusterfs/files/glusterfs-3.4.0-silent_rules.patch23
-rw-r--r--sys-cluster/glusterfs/files/glusterfs-3.5.1-Add-libraries-using-LIBADD-instead-of-LDFLAGS.patch54
-rw-r--r--sys-cluster/glusterfs/files/glusterfs-3.5.1-build-shared-only.patch576
-rw-r--r--sys-cluster/glusterfs/files/glusterfs-3.6.5-build-shared-only.patch547
-rw-r--r--sys-cluster/glusterfs/files/glusterfs-r1.initd122
-rw-r--r--sys-cluster/glusterfs/files/glusterfs.confd6
-rw-r--r--sys-cluster/glusterfs/files/glusterfs.logrotate34
-rw-r--r--sys-cluster/glusterfs/files/glusterfs.vim8
-rw-r--r--sys-cluster/glusterfs/glusterfs-3.9.1.ebuild212
-rw-r--r--sys-libs/glibc/Manifest25
-rw-r--r--sys-libs/glibc/files/2.10/glibc-2.10-gentoo-chk_fail.c315
-rw-r--r--sys-libs/glibc/files/2.10/glibc-2.10-hardened-configure-picdefault.patch30
-rw-r--r--sys-libs/glibc/files/2.10/glibc-2.10-hardened-inittls-nosysenter.patch274
-rw-r--r--sys-libs/glibc/files/2.10/glibc-2.10-hardened-ssp-compat.patch168
-rw-r--r--sys-libs/glibc/files/2.16/glibc-2.16-hardened-pie.patch39
-rw-r--r--sys-libs/glibc/files/2.16/glibc-rh1183535.patch166
-rw-r--r--sys-libs/glibc/files/2.6/glibc-2.6-gentoo-stack_chk_fail.c321
-rw-r--r--sys-libs/glibc/files/eblits/common.eblit343
-rw-r--r--sys-libs/glibc/files/eblits/pkg_postinst.eblit27
-rw-r--r--sys-libs/glibc/files/eblits/pkg_preinst.eblit69
-rw-r--r--sys-libs/glibc/files/eblits/pkg_setup.eblit125
-rw-r--r--sys-libs/glibc/files/eblits/src_compile.eblit24
-rw-r--r--sys-libs/glibc/files/eblits/src_configure.eblit252
-rw-r--r--sys-libs/glibc/files/eblits/src_install.eblit244
-rw-r--r--sys-libs/glibc/files/eblits/src_prepare.eblit63
-rw-r--r--sys-libs/glibc/files/eblits/src_test.eblit30
-rw-r--r--sys-libs/glibc/files/eblits/src_unpack.eblit121
-rwxr-xr-xsys-libs/glibc/files/nscd64
-rw-r--r--sys-libs/glibc/files/nscd.service15
-rw-r--r--sys-libs/glibc/files/nscd.tmpfilesd4
-rw-r--r--sys-libs/glibc/files/nsswitch.conf24
-rw-r--r--sys-libs/glibc/glibc-2.16.0-r1.ebuild228
-rw-r--r--www-apps/loggerhead/Manifest4
-rw-r--r--www-apps/loggerhead/files/loggerhead.confd3
-rw-r--r--www-apps/loggerhead/files/loggerhead.init27
-rw-r--r--www-apps/loggerhead/loggerhead-1.18.1.ebuild36
-rw-r--r--www-apps/trac/Manifest6
-rw-r--r--www-apps/trac/files/postinst-en.txt41
-rw-r--r--www-apps/trac/files/postupgrade-en.txt19
-rw-r--r--www-apps/trac/files/tracd.confd13
-rw-r--r--www-apps/trac/files/tracd.initd26
-rw-r--r--www-apps/trac/trac-1.2.4.ebuild112
-rw-r--r--x11-drivers/nvidia-drivers/Manifest2
-rw-r--r--x11-drivers/nvidia-drivers/nvidia-drivers-399-r1.ebuild12
-rw-r--r--x11-drivers/nvidia-drivers/nvidia-drivers-430.40-r1.ebuild15
-rw-r--r--x11-libs/gtk+/Manifest42
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch19
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch85
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch696
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-automake.diff293
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch66
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch24
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch29
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch17
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch28
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch133
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-m4.patch9
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch19
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch46
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch62
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch371
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch88
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch29
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch30
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch140
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch188
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch148
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch41
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch52
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch20
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch11
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch33
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch14
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch14
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch74
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch1407
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.9-be.patch506
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.9-rc.patch105
-rw-r--r--x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch27
-rw-r--r--x11-libs/gtk+/files/gtk+-ds-gentooalt.patch597
-rw-r--r--x11-libs/gtk+/files/gtkrc39
-rw-r--r--x11-libs/gtk+/gtk+-1.2.10-r15.ebuild129
-rw-r--r--x11-libs/vte/Manifest4
-rw-r--r--x11-libs/vte/files/vte-0.30.1-alt-meta.patch74
-rw-r--r--x11-libs/vte/files/vte-0.30.1-ds-mc.diff43
-rw-r--r--x11-libs/vte/vte-0.30.1-r3.ebuild58
-rw-r--r--x11-plugins/gkrellm-xkb/Manifest3
-rw-r--r--x11-plugins/gkrellm-xkb/files/gkrellm-xkb-ds-subs.patch12
-rw-r--r--x11-plugins/gkrellm-xkb/gkrellm-xkb-1.05-r1.ebuild32
-rw-r--r--x11-plugins/wmauda/Manifest3
-rw-r--r--x11-plugins/wmauda/files/link-against-missing-libraries.patch22
-rw-r--r--x11-plugins/wmauda/wmauda-0.8.ebuild42
-rw-r--r--x11-plugins/wmvolman/Manifest4
-rw-r--r--x11-plugins/wmvolman/files/wmvolman-2.0.1-ds-include.diff10
-rw-r--r--x11-plugins/wmvolman/wmvolman-2.0.1-r1.ebuild38
-rw-r--r--x11-plugins/wmvolman/wmvolman-2.0.1.ebuild34
-rw-r--r--x11-terms/xterm/Manifest28
-rw-r--r--x11-terms/xterm/files/xterm-197-alt-keysym-index.patch.bz2bin0 -> 354 bytes
-rw-r--r--x11-terms/xterm/files/xterm-199-alt-meta-mod.patch.bz2bin0 -> 692 bytes
-rw-r--r--x11-terms/xterm/files/xterm-199-biarch-utmp.patch.bz2bin0 -> 326 bytes
-rw-r--r--x11-terms/xterm/files/xterm-LANG.patch41
-rw-r--r--x11-terms/xterm/files/xterm-ds-config-278.patch86
-rw-r--r--x11-terms/xterm/files/xterm-ds-config.patch73
-rw-r--r--x11-terms/xterm/files/xterm-ds-copy-225.patch36
-rw-r--r--x11-terms/xterm/files/xterm-ds-copy-243.patch36
-rw-r--r--x11-terms/xterm/files/xterm-ds-copy.patch33
-rw-r--r--x11-terms/xterm/files/xterm-ds-input-225.patch12
-rw-r--r--x11-terms/xterm/files/xterm-ds-input.patch11
-rw-r--r--x11-terms/xterm/files/xterm-ds-metaesc.patch9
-rw-r--r--x11-terms/xterm/files/xterm-ds-paste-225.patch12
-rw-r--r--x11-terms/xterm/files/xterm-ds-paste-278.patch12
-rw-r--r--x11-terms/xterm/files/xterm-ds-paste.patch12
-rw-r--r--x11-terms/xterm/files/xterm-ds-sm-243.patch144
-rw-r--r--x11-terms/xterm/files/xterm-ds-sm.patch129
-rw-r--r--x11-terms/xterm/files/xterm-ds-utf8mode.patch12
-rw-r--r--x11-terms/xterm/files/xterm215-ds-copy.patch36
-rw-r--r--x11-terms/xterm/xterm-215-r3.ebuild125
-rw-r--r--x11-terms/xterm/xterm-225-r1.ebuild113
-rw-r--r--x11-terms/xterm/xterm-243-r1.ebuild112
-rw-r--r--x11-terms/xterm/xterm-278-r1.ebuild110
-rw-r--r--x11-terms/xterm/xterm-278-r2.ebuild114
-rw-r--r--x11-themes/ds-engines/Manifest7
-rw-r--r--x11-themes/ds-engines/ds-engines-1.0-r1.ebuild61
-rw-r--r--x11-themes/ds-engines/ds-engines-1.0-r2.ebuild67
-rw-r--r--x11-themes/ds-engines/ds-engines-1.0.ebuild56
-rw-r--r--x11-themes/ds-engines/files/eazel-engine-0.3-disablecapplet.patch.bz2bin0 -> 660 bytes
-rw-r--r--x11-themes/ds-engines/files/eazel-engine-0.3-gcc3.4.patch.bz2bin0 -> 317 bytes
-rw-r--r--x11-themes/ds-themes/Manifest6
-rw-r--r--x11-themes/ds-themes/ds-themes-1.0.ebuild35
-rw-r--r--x11-themes/ds-themes/files/gtkrc474
1222 files changed, 90601 insertions, 0 deletions
diff --git a/app-admin/ansible/Manifest b/app-admin/ansible/Manifest
new file mode 100644
index 0000000..ced8d29
--- /dev/null
+++ b/app-admin/ansible/Manifest
@@ -0,0 +1,12 @@
+AUX README.gentoo 398 SHA256 d988c57c417023c225deebf7fde59222f3ff214b1f750320e8318349455e78db SHA512 7504d7c2e8731bfaf97e045dc75fc29c50fd8602377391f598b897d93c96913a252d436d0373518da50f4e98c370b59d172b98d3db6e32d18e0097cf5e4f3333 WHIRLPOOL 7fe8e0bb6ed46bd5ccae52c609af528de9546fbb8c69139e73b7f029b36380e11baf4988e212aedea7df9652b2154b8c9ba030a4b7ea461637eb826fce784dfe
+AUX ansible-ds-dns4.patch 719 SHA256 66f4b665759d644a25a3959cc7d3b0c9dd46710df97c53b297e0edb131124932 SHA512 62c87ad8515b851cd1a73bb03c722b00834ac48893c560e39f9d42beac88928fa58d5eaf1d756db0922d8e4cccc0a06721fc0b1ca87a652ece037e9491c27de3 WHIRLPOOL 261f40f0d5c96049136f80f6a7dab5aea7945c3ea8ee118213360380e2f7ecf25d68fb54c0d37a38178f1fca95e3ee21edefb5e73466d5b69a7f0998ac8fc103
+AUX ansible-ds-gi.patch 583 SHA256 28d81a638c82bcc1fde1f69817a08cbd670a429810b50828591d9ce601100f59 SHA512 0b795d0ae90c3e13ebcbec20dafa528b8aa0221259b156af5ec9cd6b78354e63fa4e2c37fda7f88bbfe17e3aed1fac2424e5f3b2db49ec6eba4eae9c45e24741 WHIRLPOOL 95dc847999f6f8cd2a6491df5f85be91d9e94f6f0916c01d75f09a19d2d8730b1d9a9db53c61dcd8981b4a035415df5e2f826de77f70e2a040a0ba57543abc59
+AUX ansible-include-role.patch 2303 SHA256 78f33d6fd78799ec72285af89199c79b86f4fb7d867f00543887db5951d28c84 SHA512 be1408cab289bca43aba19474d90c16ca1b00f9f834568a6791ddeaaad3866e896193d99e8c3046c132a031e684d5d16baaea395455372f97a366e54e1c43561 WHIRLPOOL 1f1a23d3b5b13ce98c648f0c402c5dac561638d3253e04da608b63d8d415d4b4c13403f33b3263874c9b015700246e443ade25c30ce9e6387e7badc4c57df703
+AUX ansible.env 99 SHA256 04a806ca12249b1b1387e17cabd85c8b09bac64914650d7a776576153e32591f SHA512 79d0d6581116ede67d6b184d1a16c2ba6586d4ca8cd71047bc5a81a82696b0e1a124f22248877aefc0a810f0ae3bd2724dadaf71dd5078bbe0910a9e8c3ab111 WHIRLPOOL f347143d490cf1dd6784059022fb7c6c85eaa5e957b6b5eb85f6b1b8a98d1b90c26aa0602fe2cd6679c4709fb9dad2fa67bc53326bfca80205cb7b7ded757c90
+DIST ansible-2.2.0.0.tar.gz 2441851 SHA256 d9f198d293394ce0f8ba802561b21368888e3301036a706b5584641b49408586 SHA512 8bb8360f41e920c46552ead826a342311d0acffa264334c8c8ae868f8bf45caad4ff2b9c9c0ec4e551653edaf80eb49d8dece5c2ba7e1088c2ce74d3ff0e3130 WHIRLPOOL 911ba4959fbca8527e9cf4b46c86cefc415433cab21486ff47302d02e60c4c2da1abc91c7ab564642a518acd5a5c1cbc8b3930ef7f596518c5aa358f001f4064
+DIST ansible-2.3.3.0.tar.gz 4190380 SHA256 da2a715f6ca14a76001cc0f4bd1e44024328b3c2dad2c946dc9c7ed2d7c30afa SHA512 9f06719ea08648edacfc0f38aef4d57672d49d71f7985e0dcd70f201e9141c4cc456903fdc8f6803c6d9e184b2af631c20783f9486ba1f9789e05679a00a5e76 WHIRLPOOL 46483a7eeac6b817b7026b2638f69e234cf1de4addd49df26ef0a8b2bea422e681dd80d96b00b1007cdef34acbad4d64e8f2f21ec45f4dbb2afdec0a5139a43b
+DIST ansible-2.4.3.0.tar.gz 6511115 SHA256 0e98b3a56928d03979d5f8e7ae5d8e326939111b298729b03f00b3ad8f998a3d SHA512 a7cda358c67c519c7e5ba248bf47070f21a27203fb29d70d9d75ecf027ba1275d71c0f96493e047281211d172a3be8273d7e08144446284695fb0bc8b94daa82 WHIRLPOOL ed35833744b0b1c03700fc0e56609aef0d70115b0016b91629bff3852220838b5034c8dff5f43c776f3be396cb2ccdc88b62fb79311690563a0bbb179d575080
+EBUILD ansible-2.2.0.0-r1.ebuild 1495 SHA256 e248f0151cbbb5c9c6714759d12d2a180960f5d0ba9783577fc694ca80117140 SHA512 43cabf88357b7567d76c094dd80e3a59d245cfd040f1486f96f24139887eda30e92211cec2d7f07d9341f7c2195f26a5fb22e6e7a08d5b4e1bfbef5739e682dd WHIRLPOOL a0b9fb3ae558cd02aa9156235af96a14fc6881e2eb00f93cc91ea3d5d970de17547c910fbb6acae5bb73de46cae05e54dd5589d5cf46357b8d4634e989571d71
+EBUILD ansible-2.3.3.0.ebuild 1403 SHA256 6b3701ef12c278b3113498c8e202bb67756ac7f28c620d157be9c4d51dc2ed97 SHA512 c7b70a521aa9127044d00741889aca9c2264606eacc76809c79c4eb529276ab382c3716122b5f8e13f543a086710f6a4747a9aa5cc29f3f4b93c815d6db981e4 WHIRLPOOL 69e823b48fcc43a1b7b6d60d8802814118a339d835154aa4195044527b2cb56078254d97c6679f90af6f548e61b83346df8c446555098099bdfe14453c9880a4
+EBUILD ansible-2.4.3.0-r1.ebuild 1494 SHA256 b6f4f9e599e8e1a99483ea75e2eaf20d43a4fc278b518759b268f1af73a0cfe0 SHA512 0a37c0ee7b66e8424e49de5a08f04879e7c4ebd06f3718d8b7c1fcc3133414d6c9387903764b999e6389cfca88aea9b956f85d52ba31ab2f21867cbd61bf02e0 WHIRLPOOL c75045196dbb27050fd7da7b057caf223770540ce47b263f8596270c74fc6783802863c6ea0712fc004193de054849ac05ee5ccef94ccc9a3e8b5f696c1f2c37
+EBUILD ansible-2.4.3.0-r2.ebuild 1535 SHA256 0bd59cb12ceb5966d94b6d932d5c9478caa30791e7af7df5c80f7156613bd35c SHA512 bfb3efa1e171a970099ba0cd7995aad443d686d83764912e1812353e427b4eff29b42dcc52ebaed5934bc19753e07fd27a7f21ee4e36e9fc6035d8b6b914509d WHIRLPOOL 7e749f9483fb59d2b2214fc956a809af333e2e482072d5967799c64bd50e00bcc919ab3c623d896d781ab3115504e6cff816c7be6a838b5a804f2d9325a9683c
diff --git a/app-admin/ansible/ansible-2.2.0.0-r1.ebuild b/app-admin/ansible/ansible-2.2.0.0-r1.ebuild
new file mode 100644
index 0000000..2443430
--- /dev/null
+++ b/app-admin/ansible/ansible-2.2.0.0-r1.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 eutils versionator
+
+DESCRIPTION="Model-driven deployment, config management, and command execution framework"
+HOMEPAGE="http://ansible.com/"
+SRC_URI="http://releases.ansible.com/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 x86 ~x64-macos"
+IUSE="keyczar test"
+
+RDEPEND="
+ keyczar? ( dev-python/keyczar[${PYTHON_USEDEP}] )
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ <dev-python/jinja-2.9[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6[${PYTHON_USEDEP}]
+ dev-python/httplib2[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ net-misc/sshpass
+ virtual/ssh
+"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/packaging-16.6[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ <dev-python/mock-1.1[${PYTHON_USEDEP}]
+ dev-python/passlib[${PYTHON_USEDEP}]
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )"
+
+# not included in release tarball
+RESTRICT="test"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+}
+
+python_test() {
+ nosetests -d -w test/units -v --with-coverage --cover-package=ansible --cover-branches || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ doman docs/man/man1/*.1
+}
diff --git a/app-admin/ansible/ansible-2.3.3.0.ebuild b/app-admin/ansible/ansible-2.3.3.0.ebuild
new file mode 100644
index 0000000..0d10b0b
--- /dev/null
+++ b/app-admin/ansible/ansible-2.3.3.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{5,6} )
+
+inherit distutils-r1 eutils versionator
+
+DESCRIPTION="Model-driven deployment, config management, and command execution framework"
+HOMEPAGE="http://ansible.com/"
+SRC_URI="http://releases.ansible.com/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 x86 x64-macos"
+IUSE="test"
+
+RDEPEND="
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/httplib2[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ dev-python/netaddr[${PYTHON_USEDEP}]
+ net-misc/sshpass
+ virtual/ssh
+"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/packaging-16.6[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ dev-python/passlib[${PYTHON_USEDEP}]
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )"
+
+# not included in release tarball
+RESTRICT="test"
+
+python_test() {
+ nosetests -d -w test/units -v --with-coverage --cover-package=ansible --cover-branches || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ doman docs/man/man1/*.1
+ dodoc -r examples
+}
diff --git a/app-admin/ansible/ansible-2.4.3.0-r1.ebuild b/app-admin/ansible/ansible-2.4.3.0-r1.ebuild
new file mode 100644
index 0000000..7861a53
--- /dev/null
+++ b/app-admin/ansible/ansible-2.4.3.0-r1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{5,6} )
+
+inherit distutils-r1 eutils versionator
+
+DESCRIPTION="Model-driven deployment, config management, and command execution framework"
+HOMEPAGE="http://ansible.com/"
+SRC_URI="http://releases.ansible.com/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 x86 x64-macos"
+IUSE="test"
+
+RDEPEND="
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/httplib2[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ dev-python/netaddr[${PYTHON_USEDEP}]
+ net-misc/sshpass
+ virtual/ssh
+"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/packaging-16.6[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ dev-python/passlib[${PYTHON_USEDEP}]
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )"
+
+#SDS
+PATCHES=(
+ "${FILESDIR}"/${PN}-ds-gi.patch
+ "${FILESDIR}"/${PN}-ds-dns4.patch
+)
+#EDS
+
+# not included in release tarball
+RESTRICT="test"
+
+python_test() {
+ nosetests -d -w test/units -v --with-coverage --cover-package=ansible --cover-branches || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ doman docs/man/man1/*.1
+ dodoc -r examples
+}
diff --git a/app-admin/ansible/ansible-2.4.3.0-r2.ebuild b/app-admin/ansible/ansible-2.4.3.0-r2.ebuild
new file mode 100644
index 0000000..646415a
--- /dev/null
+++ b/app-admin/ansible/ansible-2.4.3.0-r2.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{5,6} )
+
+inherit distutils-r1 eutils versionator
+
+DESCRIPTION="Model-driven deployment, config management, and command execution framework"
+HOMEPAGE="http://ansible.com/"
+SRC_URI="http://releases.ansible.com/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 x86 x64-macos"
+IUSE="test"
+
+RDEPEND="
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/httplib2[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ dev-python/netaddr[${PYTHON_USEDEP}]
+ net-misc/sshpass
+ virtual/ssh
+"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/packaging-16.6[${PYTHON_USEDEP}]
+ test? (
+ ${RDEPEND}
+ dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ dev-python/passlib[${PYTHON_USEDEP}]
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )"
+
+#SDS
+PATCHES=(
+ "${FILESDIR}"/${PN}-ds-gi.patch
+ "${FILESDIR}"/${PN}-ds-dns4.patch
+ "${FILESDIR}"/${PN}-include-role.patch
+)
+#EDS
+
+# not included in release tarball
+RESTRICT="test"
+
+python_test() {
+ nosetests -d -w test/units -v --with-coverage --cover-package=ansible --cover-branches || die
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ doman docs/man/man1/*.1
+ dodoc -r examples
+}
diff --git a/app-admin/ansible/files/README.gentoo b/app-admin/ansible/files/README.gentoo
new file mode 100644
index 0000000..828e13c
--- /dev/null
+++ b/app-admin/ansible/files/README.gentoo
@@ -0,0 +1,8 @@
+You can define parameters through shell variables OR use config files
+Examples of config files installed in /usr/share/ansible/examples
+You have to create ansible hosts file!
+More info on http://docs.ansible.com/intro_getting_started.html
+
+Some optional dependencies, you might want to install:
+dev-python/keyczar - needed to support accelerated mode
+dev-python/paramiko - alternative SSH backend"
diff --git a/app-admin/ansible/files/ansible-ds-dns4.patch b/app-admin/ansible/files/ansible-ds-dns4.patch
new file mode 100644
index 0000000..f18e7d8
--- /dev/null
+++ b/app-admin/ansible/files/ansible-ds-dns4.patch
@@ -0,0 +1,12 @@
+diff -dPNur ansible-2.4.3.0/lib/ansible/modules/net_tools/nmcli.py ansible-2.4.3.0-new/lib/ansible/modules/net_tools/nmcli.py
+--- ansible-2.4.3.0/lib/ansible/modules/net_tools/nmcli.py 2018-02-01 00:09:48.000000000 +0100
++++ ansible-2.4.3.0-new/lib/ansible/modules/net_tools/nmcli.py 2018-03-12 16:54:08.121892385 +0100
+@@ -556,7 +560,7 @@
+ self.type=module.params['type']
+ self.ip4=module.params['ip4']
+ self.gw4=module.params['gw4']
+- self.dns4=' '.join(module.params['dns4'])
++ self.dns4=' '.join(module.params['dns4']) if module.params.get('dns4') else None
+ self.ip6=module.params['ip6']
+ self.gw6=module.params['gw6']
+ self.dns6=module.params['dns6']
diff --git a/app-admin/ansible/files/ansible-ds-gi.patch b/app-admin/ansible/files/ansible-ds-gi.patch
new file mode 100644
index 0000000..2004e1a
--- /dev/null
+++ b/app-admin/ansible/files/ansible-ds-gi.patch
@@ -0,0 +1,14 @@
+diff -dPNur ansible-2.4.3.0/lib/ansible/modules/net_tools/nmcli.py ansible-2.4.3.0-new/lib/ansible/modules/net_tools/nmcli.py
+--- ansible-2.4.3.0/lib/ansible/modules/net_tools/nmcli.py 2018-02-01 00:09:48.000000000 +0100
++++ ansible-2.4.3.0-new/lib/ansible/modules/net_tools/nmcli.py 2018-03-12 16:41:51.287447030 +0100
+@@ -490,6 +490,10 @@
+
+ HAVE_NM_CLIENT=False
+ try:
++ import gi
++ gi.require_version('NMClient', '1.0')
++ gi.require_version('NetworkManager', '1.0')
++
+ from gi.repository import NetworkManager, NMClient
+ HAVE_NM_CLIENT=True
+ except ImportError:
diff --git a/app-admin/ansible/files/ansible-include-role.patch b/app-admin/ansible/files/ansible-include-role.patch
new file mode 100644
index 0000000..5ef7967
--- /dev/null
+++ b/app-admin/ansible/files/ansible-include-role.patch
@@ -0,0 +1,34 @@
+diff -dPNur ansible-2.4.3.0/lib/ansible/playbook/included_file.py ansible-2.4.3.0-new2/lib/ansible/playbook/included_file.py
+--- ansible-2.4.3.0/lib/ansible/playbook/included_file.py 2018-02-01 00:09:48.000000000 +0100
++++ ansible-2.4.3.0-new2/lib/ansible/playbook/included_file.py 2018-03-21 13:39:25.259172590 +0100
+@@ -134,6 +134,17 @@
+ include_file = templar.template(include_file)
+ inc_file = IncludedFile(include_file, include_variables, original_task)
+ else:
++ # template the included role's name here
++ role_name = include_variables.get('name', include_variables.get('role', None))
++ if role_name is not None:
++ role_name = templar.template(role_name)
++
++ original_task._role_name = role_name
++ for from_arg in original_task.FROM_ARGS:
++ if from_arg in include_variables:
++ from_key = from_arg.replace('_from', '')
++ original_task._from_files[from_key] = templar.template(include_variables[from_arg])
++
+ inc_file = IncludedFile("role", include_variables, original_task, is_role=True)
+
+ try:
+diff -dPNur ansible-2.4.3.0/lib/ansible/plugins/strategy/free.py ansible-2.4.3.0-new2/lib/ansible/plugins/strategy/free.py
+--- ansible-2.4.3.0/lib/ansible/plugins/strategy/free.py 2018-02-01 00:09:48.000000000 +0100
++++ ansible-2.4.3.0-new2/lib/ansible/plugins/strategy/free.py 2018-03-21 13:39:25.259172590 +0100
+@@ -197,7 +197,7 @@
+ new_ir = included_file._task.copy()
+ new_ir.vars.update(included_file._args)
+
+- new_blocks, handler_blocks = new_ir.get_block_list(
++ new_blocks, handler_blocks = included_file._task.get_block_list(
+ play=iterator._play,
+ variable_manager=self._variable_manager,
+ loader=self._loader,
+diff -dPNur ansible-2.4.3.0/lib/ansible/plugins/strategy/free.py.orig ansible-2.4.3.0-new2/lib/ansible/plugins/strategy/free.py.orig
diff --git a/app-admin/ansible/files/ansible.env b/app-admin/ansible/files/ansible.env
new file mode 100644
index 0000000..9df5a2a
--- /dev/null
+++ b/app-admin/ansible/files/ansible.env
@@ -0,0 +1,2 @@
+# Use ssh transport by default. Comment it out if you want to use paramiko
+ANSIBLE_TRANSPORT="ssh"
diff --git a/app-admin/openshift-client-tools/Manifest b/app-admin/openshift-client-tools/Manifest
new file mode 100644
index 0000000..8bbafc7
--- /dev/null
+++ b/app-admin/openshift-client-tools/Manifest
@@ -0,0 +1,6 @@
+DIST openshift-client-tools-1.3.2.tar.gz 44242362 SHA256 fbc8596dd578ba1a568ae8311b9b14ec5499e122bb196215d73b5e67027fda06 SHA512 5a29eb6c915ade677a7bc834ecb1dcc4bfb5b933c9a50d1172ca0316e9710b045ba6dd7e7ae5fe4f221a59db7cc62822bae4ef6976277fbcb422b4be8498b0b8 WHIRLPOOL 7ce887607be615dacdb90e52bdc607d75646740a5e9337f5af9e2ee0230d58a238bc3f2cb96a77f597a02abd7a353f49e7a016e6acf7a138d0c44efa10f0385f
+DIST openshift-client-tools-1.4.1.tar.gz 32505339 SHA256 919c54eb78283379dd617d2c31ee3ec14eebd642459ba430924012f9ff7b39ce SHA512 c499bd86eb9fef06252f142ad22d076ed4ec1f2a2b478dc0ab388c0da43fecb80b839041c150ffc5ea3dbdbda21e57a873dee78b49b4e976226d8487ead69e10 WHIRLPOOL 8f394c28918b80816fb8515a0c371da74be2ef5e2b78ad42b0d99ef02c593ff1284e9465510e9a187a29315f1823bc4f28b8387fe8722515bb8f3a671022eb09
+DIST openshift-client-tools-3.7.1.tar.gz 103203524 SHA256 c148d8c8fc441a42ec596bd14e8eeef06950aa5171e5237bb5216beadb79924a SHA512 74336a02aa334f8e9b608ea31ac52c51e6e362adcc647f92d247b1fefbe72faf45a92f0c8eda17c2ffe997891df873436707b9acc8abeba4a887153007537b9d WHIRLPOOL 4d73f57c7f11d20a613230c65687f0e9893a14b22b879cba5d09afe7e63d573923e5b734e05f6d77689a1feb5c65ec11fdc4e2459a80f4e968dd5228d31abc87
+EBUILD openshift-client-tools-1.3.2.ebuild 956 SHA256 cf4bfe905ede05f60b98308fe8eb377db048c795eab62952ee34e20bc2e19bcf SHA512 2c720370ec92d48839178a68c32c6e59dfdbcfa90a0483fb1d04974b6acd4cca97399c9da6a3b9606e98fe99c6a78b8f3f189385b1a782e3baf93737f8d0a389 WHIRLPOOL 7f250f962faa04c8cecfe665b731b5c2a925238666600da5c6a9e0ea56f08b54dd9aff83fa8cd87711241672a8ccebd13b05743ca3d22d5ed337a2483fb18360
+EBUILD openshift-client-tools-1.4.1.ebuild 954 SHA256 cf6400fa572d0fa8115ce088d901a6d67ca308026c71178b30db3ec32f69db7b SHA512 5333889e0fe0d247a38abcf33409e62f749759b378af5295e3f9e8080a3e430e56f2b09d051acacaa74da742bab771d254e120b52c6ed5a0c46ef15ae9a10cdb WHIRLPOOL d6e0a4cb018b678e45692530c77e4c0547216b882ae2895818d983c6609954ba113c5faeba99bda6f73b6a96c55eff1241448b4f743cdb9f01cf9ba899f36204
+EBUILD openshift-client-tools-3.7.1.ebuild 1119 SHA256 ba5c0bd775c1d813199cbe4bc2a6ff74dc303e823f522be784f5b5d37ba6d927 SHA512 21dd8666b1456efc0c9c05c60ff1db1c59ab6d3e321b0dcff8faa32dab9e493c25d378f7938cb077673c361c7a9419b110c0062ced0994c48b99a4097d7931fb WHIRLPOOL 04ddd371323cab52ccab4344d3a90cf25343a0681906071f0c4f22c68d1393eac022b5106313e5c3ebcf908603212d1e2b4a3b0d9b83b9e758bb0b73a514afd5
diff --git a/app-admin/openshift-client-tools/openshift-client-tools-1.3.2.ebuild b/app-admin/openshift-client-tools/openshift-client-tools-1.3.2.ebuild
new file mode 100644
index 0000000..f755dd4
--- /dev/null
+++ b/app-admin/openshift-client-tools/openshift-client-tools-1.3.2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit bash-completion-r1
+
+DESCRIPTION="Enterprise Kubernetes for Developers (Client Tools)"
+HOMEPAGE="https://www.openshift.org"
+SRC_URI="https://github.com/openshift/origin/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="bash-completion kerberos"
+
+DEPEND="dev-lang/go
+ kerberos? ( app-crypt/mit-krb5 )"
+RDEPEND="bash-completion? ( >=app-shells/bash-completion-2.3-r1 )"
+
+S="${WORKDIR}/origin-${PV}"
+
+src_compile() {
+ use kerberos && MY_TAGS="-tags=gssapi"
+ emake all OS_GIT_MINOR="" OS_GIT_MAJOR="" OS_GIT_VERSION="v${PV}" WHAT="cmd/oc ${MY_TAGS}"
+}
+
+src_install() {
+ case "${ARCH}" in
+ x86) MY_ARCH="386" ;;
+ *) MY_ARCH="${ARCH}" ;;
+ esac
+
+ dobin "_output/local/bin/linux/${MY_ARCH}/oc"
+ doman docs/man/man1/oc*
+ use bash-completion && dobashcomp contrib/completions/bash/oc
+} \ No newline at end of file
diff --git a/app-admin/openshift-client-tools/openshift-client-tools-1.4.1.ebuild b/app-admin/openshift-client-tools/openshift-client-tools-1.4.1.ebuild
new file mode 100644
index 0000000..8b80422
--- /dev/null
+++ b/app-admin/openshift-client-tools/openshift-client-tools-1.4.1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit bash-completion-r1
+
+DESCRIPTION="Enterprise Kubernetes for Developers (Client Tools)"
+HOMEPAGE="https://www.openshift.org"
+SRC_URI="https://github.com/openshift/origin/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="bash-completion kerberos"
+
+DEPEND="dev-lang/go
+ kerberos? ( app-crypt/mit-krb5 )"
+RDEPEND="bash-completion? ( >=app-shells/bash-completion-2.3-r1 )"
+
+S="${WORKDIR}/origin-${PV}"
+
+src_compile() {
+ use kerberos && MY_TAGS="-tags=gssapi"
+ emake all OS_GIT_MINOR="" OS_GIT_MAJOR="" OS_GIT_VERSION="v${PV}" WHAT="cmd/oc ${MY_TAGS}"
+}
+
+src_install() {
+ case "${ARCH}" in
+ x86) MY_ARCH="386" ;;
+ *) MY_ARCH="${ARCH}" ;;
+ esac
+
+ dobin "_output/local/bin/linux/${MY_ARCH}/oc"
+ doman docs/man/man1/oc*
+ use bash-completion && dobashcomp contrib/completions/bash/oc
+} \ No newline at end of file
diff --git a/app-admin/openshift-client-tools/openshift-client-tools-3.7.1.ebuild b/app-admin/openshift-client-tools/openshift-client-tools-3.7.1.ebuild
new file mode 100644
index 0000000..f53b694
--- /dev/null
+++ b/app-admin/openshift-client-tools/openshift-client-tools-3.7.1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit bash-completion-r1
+
+DESCRIPTION="Enterprise Kubernetes for Developers (Client Tools)"
+HOMEPAGE="https://www.openshift.org"
+SRC_URI="https://github.com/openshift/origin/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="bash-completion kerberos"
+
+DEPEND="dev-lang/go
+ kerberos? ( app-crypt/mit-krb5 )"
+RDEPEND="bash-completion? ( >=app-shells/bash-completion-2.3-r1 )"
+
+S="${WORKDIR}/origin-${PV}"
+
+src_compile() {
+ use kerberos && MY_TAGS="-tags=gssapi"
+
+ export OS_GIT_CATALOG_VERSION="v${PV}"
+ export OS_GIT_MINOR=""
+ export OS_GIT_MAJOR=""
+ export OS_GIT_VERSION="v${PV}"
+
+ emake all WHAT="cmd/oc ${MY_TAGS} -v"
+
+ emake all WHAT="tools/gendocs -v"
+ emake all WHAT="tools/genman -v"
+ hack/generate-docs.sh || exit 1
+}
+
+src_install() {
+ case "${ARCH}" in
+ x86) MY_ARCH="386" ;;
+ *) MY_ARCH="${ARCH}" ;;
+ esac
+
+ dobin "_output/local/bin/linux/${MY_ARCH}/oc"
+ doman docs/man/man1/oc*
+ use bash-completion && dobashcomp contrib/completions/bash/oc
+} \ No newline at end of file
diff --git a/app-admin/openshift-source-to-image/Manifest b/app-admin/openshift-source-to-image/Manifest
new file mode 100644
index 0000000..1fb8d35
--- /dev/null
+++ b/app-admin/openshift-source-to-image/Manifest
@@ -0,0 +1,2 @@
+DIST openshift-source-to-image-1.1.8.tar.gz 1724043 SHA256 8c49faf71bd55cf49f69614b12d47fdbd0a024cdc3fa72fcdcb1c7ed98c22fc2 SHA512 a38111fad26578a27efcefb1fe38a85635a29236eed65cb18c9f6c8a880ecca121e98b8f1613b4974363204ad0dcfb0590289bad349168743c287cdcf5601a95 WHIRLPOOL 1e4f0b2eb61400a5300da8f9aba1820699724cb3cc51916e667560a2863a0d2b4e0f06c5bf0d8996608a88f6f7e740c7970cc9a5e6dd23c59e1d2a799e2b497c
+EBUILD openshift-source-to-image-1.1.8.ebuild 971 SHA256 33e5423a71b8a8d4989e7c3c3e79b9d0c019424f6f98f5e3e2d5a4e630dfbdfb SHA512 bf64f14a3adad1970480d36fe73923045b7a1ba487250cd60d88f63ee2b664ad40979d54190e7b4898b0b27ea9f7de8a7dd917114d665d1e41c4c33351f1c100 WHIRLPOOL e30ed9e90aa33951f3b6cfc2e54907d1cbbda1d8362c701a9fb9f14f67927fcfecb5cd3fc65d284d92ff11591052f797841de8a6dad339e68f9d6c3dfb85027c
diff --git a/app-admin/openshift-source-to-image/openshift-source-to-image-1.1.8.ebuild b/app-admin/openshift-source-to-image/openshift-source-to-image-1.1.8.ebuild
new file mode 100644
index 0000000..8e21426
--- /dev/null
+++ b/app-admin/openshift-source-to-image/openshift-source-to-image-1.1.8.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit bash-completion-r1
+
+DESCRIPTION="Enterprise Kubernetes for Developers (Client Tools)"
+HOMEPAGE="https://www.openshift.org"
+SRC_URI="https://github.com/openshift/source-to-image/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="bash-completion"
+
+DEPEND="dev-lang/go"
+RDEPEND="bash-completion? ( >=app-shells/bash-completion-2.3-r1 )"
+
+S="${WORKDIR}/source-to-image-${PV}"
+
+src_compile() {
+ export S2I_GIT_CATALOG_VERSION="v${PV}"
+ export S2I_GIT_MINOR=""
+ export S2I_GIT_MAJOR=""
+ export S2I_GIT_VERSION="v${PV}"
+ hack/build-go.sh || die
+}
+
+src_install() {
+ case "${ARCH}" in
+ x86) MY_ARCH="386" ;;
+ *) MY_ARCH="${ARCH}" ;;
+ esac
+
+ dobin "_output/local/bin/linux/${MY_ARCH}/s2i"
+ dobin "_output/local/bin/linux/${MY_ARCH}/sti"
+ use bash-completion && dobashcomp contrib/completions/bash/s2i
+}
diff --git a/app-admin/vlogger/Manifest b/app-admin/vlogger/Manifest
new file mode 100644
index 0000000..4f6d4c1
--- /dev/null
+++ b/app-admin/vlogger/Manifest
@@ -0,0 +1,2 @@
+DIST vlogger-1.3.tar.gz 17715 RMD160 b759385703589397fabd10400dc0bf5ea6dc4caa SHA1 4d25c91163311e994b487c13745c2d5cf191ab12 SHA256 49e92f8ce19e2c9cde5b0982e11831ee3796638b0cfb89d2cbb67156f7307df9
+EBUILD vlogger-1.3.ebuild 792 RMD160 35a0252846d15af497653a59b873aff943e94377 SHA1 e6061e3a6e34c5b50ff18ef8218ff4031dc68e0a SHA256 eb669c980c0f3cb9397d5ba949c78bd2dd7ea2f162b1b0607f797d1d69b7f512
diff --git a/app-admin/vlogger/vlogger-1.3.ebuild b/app-admin/vlogger/vlogger-1.3.ebuild
new file mode 100644
index 0000000..63433ee
--- /dev/null
+++ b/app-admin/vlogger/vlogger-1.3.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+DESCRIPTION="Virtual web logfile rotater/parser, similar to cronolog and httplog"
+HOMEPAGE="http://n0rp.chemlab.org/vlogger/"
+SRC_URI="http://n0rp.chemlab.org/vlogger/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE="dbi"
+
+DEPEND=""
+RDEPEND="dev-perl/TimeDate
+ dbi? ( dev-perl/DBI )"
+
+src_install() {
+ doman vlogger.1
+ dodoc README
+ insinto /etc/vlogger
+ dobin vlogger
+ if use dbi ; then
+ doins vlogger-dbi.conf
+ dodoc mysql_create.sql
+ fi
+}
+
+pkg_postinst() {
+ if use dbi ; then
+ elog "If you wish to use vlogger with DBI please see /etc/vlogger/vlogger-dbi.conf"
+ elog "The SQL to create the tables for DBI can be found in /usr/share/doc/${P}"
+ fi
+}
diff --git a/app-arch/p7zip/Manifest b/app-arch/p7zip/Manifest
new file mode 100644
index 0000000..7acfea2
--- /dev/null
+++ b/app-arch/p7zip/Manifest
@@ -0,0 +1,40 @@
+AUX 4.65-hardlink.patch 413 SHA256 187fc9f9ec0160c7b5f6a1bf7394e7d92db1fbebf219a1ea55725d40255256c8 SHA512 4474aa46f46d5c42924c31925b52296a20879c4bd5bf8918b6531a20d5d31939ef0956161fcb9d8af2dcc97650bdb348ab920e346b41601be64e93163fe4b7fd WHIRLPOOL 91822c3bb0113613a3246f3aed52464c2dcafe0d9a5e98747e524d4cdfb590036ed9606cfc10590e6e85d6682c3738f5267bcab29f59228c4d7fa8e25b16ce24
+AUX 4.65-makefile.patch 450 SHA256 d36e71be74fdcc3c2afaf2217cb4712f00e3e75f3d23efd6c288f058092c4120 SHA512 dd21f0a4850a6d5643f950c34cac3b34aa4453f47bf3c9f5de9725f5fba2588f5c38d69a980e434b0bb8372ade7c9c0917a6a9f748776838ba6f51823b76de5b WHIRLPOOL 30717ab379a48ae124c20b99d041e71f150d6e46ca9a54cf06bc1e413e94770fafb417047758fe8b24ce4f09b9f0c5ba4edbc895fc3a67ab922842b31d151807
+AUX 7z 142 SHA256 4b5a22ff23f0dc7e3b5dc0c44733fe73b2d3cd1683092a3d691179687cf95e1d SHA512 720d979865f1e66b4102f5cebd3f081162c226f4ba5b40fe66f2b2147d86c90e60786b761b2f9c3de66ba53683c9daa8cd0b544c107208a2698919b5df0c35bc WHIRLPOOL cab2bd7fd00b2fc2bc48c8cc0706bdf1390b25947a002fc395533049fec032cf811798a277341d692b5c48e410adf50b98da93a29dc5b8ab13fb720a4711551e
+AUX 7za 144 SHA256 15a7f37e025d1188ee52a262027a268cdfcbd1347171da9aa560a3a1a824366b SHA512 4378841ae3e34b70a2ddc9e426d3f2bc0c41cc3c4a4afd9ad498d6cb8e1733532c6a3ba19b473624a23b0064fc7f3c5b31d4bd46d2c89b5e862da1b59c56b949 WHIRLPOOL b1d97a21cf6483efe1b2c03636336e646d696a894c893fa0f61e2683e03f7a86315f119ecf2b838f682196e1d0691e8732fde5e7da16b9bed3ef3324d2d15399
+AUX 9.04-kde4.patch 5185 SHA256 facc613f8c684ca2c0baff4c89e99f0abe29b12b96ef2281e17a0041e07631c3 SHA512 040a40f634888f89424efac075cf8f5651c91d055de4a2d6dd1f7fbbf8e6e1befcf4f4ffeddd11a641c73cfc2bcfcfb7a8ca3076b222d16aeb306114da4ab6c7 WHIRLPOOL 5b25f5474a5571e2b2ca731d98bd7a14c5e98c417bf2a6359801a387ea7de130aac0da12502a070d7914964b9501131d72d9ed261e765f3952db83b363972737
+AUX 9.04-makefile.patch 470 SHA256 c8ef2898ed994929600c04ed0ecfd2dc2b94982d274ee217cbc05234c37750f6 SHA512 2c131e0b42ae6c8cd236125be313ea032b47edf858d1248a8648fd0e794ca4094016a3bb06e15fe65582626dd9d611a08a87ad5789695fff0a2244bb7f3cec3d WHIRLPOOL b2a66b46651a8036808985524b2c6311fa0d7dbceba453f1ac4bb1cc0fef9fbe060b1d4c04e20353c4232915f340cf3bd65d0f7e0ccc3eac8651d3ac15d389db
+AUX p7zip 1210 SHA256 28d181cd1c43628da0adb485e20f270461b6cf8d743d2187a3380f7799fbc2d5 SHA512 e3f1497cc00669430de336aac1d45a0313831b7f5dc88b9b2ca49e743d8e9e7c73b403d94b4fd9de6cd59875fef47756f9dab9ddf12442ee3fff71e413715553 WHIRLPOOL e14aef0141b8260a5206bd94d22560c927a3ce0e643433ee68d8ade0601655b8a6b7c8ad78f81a0fb97323c7c37eb3fc5483d9e49c2ac259d146b60e678cc973
+AUX p7zip-4.16_x86_static.patch 276 SHA256 09fa439da270e1f96d580425a4addaeb4684b3f727d01d08e9b293124646797d SHA512 acbd79ce2b698445384aeca88956605f44944fa91e0677f03403013b45e956537edcbb28ee84d5adc786ae43ce70291ea436e0bf620a0895e985675b879a803f WHIRLPOOL ce883d92a40b0595691913bd0490fa5602caef8ba0d20c5cc724fef28eb75d5163a3c3e77dfe79c98292002045fc8ec6beebe610a6bffc74eeb4f1b18cda30bc
+AUX p7zip-9.13-QA.patch 650 SHA256 d44e500a5d15b8c25826fd8a60c61e9c524724c40f22683967212f9843d6db17 SHA512 c8b260d30a39ce66990aaa429d60c3b4a472f03f03c407badbe235106245f4ab0f9422ec1ddd98e5fbe97e9296d69908687625f141e3aa91ff5f32588b332543 WHIRLPOOL 6d01c5f28efe6e528a1a5f7e0fdef7701b4ba92e9a21646832094dbbc3ae7e0e3671ee925c2f8009afca85cb9bdca83fce225063a3c47af7d05625019c47fada
+AUX p7zip-9.20.1-QA.patch 650 SHA256 695b6836b13699e3db3e019dbd54275e48a01b59210fd353a2d9e46224c60785 SHA512 b07f8608b973be7c547b226bc23dd064d6cc18f6b1ea70ce72aff72fa098852914eb8d331fe7230b7fdfbb1f0fce59eb3404fd3a5b44d151ea847e87fd2d8f39 WHIRLPOOL 077a4bdf44dcbd66a525e795e082aef41321dc7770415a1cd78716d78aa5b5b2e780afcb4194ea7c2ae2947a596292be18ab8dd3f9bce302e47f8d9cdcc6a046
+AUX p7zip-9.20.1-execstack.patch 785 SHA256 0725ca42b5ac8d4024a18e2759a12c3ba04b8ea504376c14d8890f7bebba3fb1 SHA512 2b3404554295596dd1113700f72f7149baded7b381e70edea78a2cf66ad69ac6fb03653c490843ecab13e348638a0efaaeb3f5e71a0670255d09a91c70c7977f WHIRLPOOL 4aa1a9632d706c4f9f8b906a9a84929605a56e92c4289a296b767d107e11f85848d40bd58ad4df21c2d87f385318b8e740b71bc7c0467ea3af2bd6c58502d25a
+AUX p7zip-ds-442.patch 446 SHA256 f7379a06363e34af0307cc5365958f8e56f7788bd90743d85cfa10706996d590 SHA512 241088daf142b301b5fd1e98bfdba9e93a2ad79b945904973c6842adbcd52b4e054fb4d041b4a0ea7663474d221fc95e8198d518affdd620f66056067050c0c7 WHIRLPOOL 816baddd4234df4d5d2212746f5272d64b04eea7411d3593d34aa6a625360e621055bcd687d783decdf00d26041c387af58bb8f115b8fa2c2f3e76664cd52ab8
+AUX p7zip-ds-rcc.patch 9611 SHA256 385719352baebc32c41348b3bb10ea5d27e645d142203db74d286146112c2364 SHA512 acc047844e3dc26cdeca953043d63c8cbc5e215950247862463f0e4001b61cedcc827923e1d3ba0970edae1770ba22918d471caec2bd71bc563442cace6a9e02 WHIRLPOOL 6185cd76efc1eb2cbbf3dbaff0e9c521ed821b83d83ba34d0a46efc5a5534071b397834501b6370ba467f0666ef1fafb1f5e4f1a2382e4208782d45ad079dd77
+AUX p7zip_4.27-libun7zip.patch 19287 SHA256 e37f1846b5cf81212917b3d453c520b7ec5878a9aff385a7d4099fc4491bbd7a SHA512 ae62666143861d703d158f853da179e4a95a1008316f449d11c111d8670b3f9505e760f0c1ffc2bb7286ae5e3f114f708092409706a595ee63f87189a3337996 WHIRLPOOL 82dba6cbd28a346600b18c8601874abe58b8a988a84fcf644765202fbbdb0578ee7c52f0b17d6497445e1e8b2825c3276c4157a4e63b11278d8aa2d022ee85d9
+AUX p7zip_4.44-libun7zip.patch 19480 SHA256 d990724e3a570191ba32cccaf736a40d6c9d13219ffdb18bb738241036423ccd SHA512 b9cbab7b6584584ffa6aa30228460d0c7e8b127159d00939b6da2f139f8122a4923e67e6ee0f71c66f87cfca90d41964202a0e73877ad86948960e2ae72d45c6 WHIRLPOOL 88222cf99f33e4d1286609fa7921b11eaacc66d919255bf460574e30178d3039c37ed97d52ff99a9badbd908c9e2bf22eecfafbcdff73a506d628814b5ce821d
+AUX p7zip_4.57-ds-rusxmms.patch 10537 SHA256 543cc5c8e6b92f2c702d082b68877442eb90e5a17e840722a4c072a60ea9385e SHA512 3e6900712dc2b8cf79a541dad5560950230c2b6aaf32609579939c0afd6d06007427d967e2beade42a7f5c3d15323428b4f19056a23d4c4ea171c73a611f7de3 WHIRLPOOL 23ec6a8b10efeb3e307972e779705fe45fe9725ca70f262675de123ef1a2f14db13749f4f4bf76eee70c97fd8730f61a43ed5eb259f9951e99083873b3759152
+AUX p7zip_4.57-libun7zip.patch 23438 SHA256 fafaefbc227adb074fc8e77f78a7d7b52689d5a1b8478a935677321183e464a1 SHA512 f15fcf68b7a0f1628e0d73823764aad4f528446dfc301ce22f009eb3f5070445a5b7dd8ab06effd85c065cb4b79abfe6bc15d122180413489f84046ad1c344e4 WHIRLPOOL 05ccbbfccf8a66021d91c8c9f0c501d50c257461a2314688097b2a4f65c85edb3b833c1d27cb7167f502ec9f3392736b21e3be61aa7b00f5778f8d9f1d168f5e
+AUX p7zip_4.65-ds-rusxmms.patch 9323 SHA256 4494a08118650102179de1f280850c83582bd483522c37dffe8699e47cba480a SHA512 540807e009f2574bec30ba440233be62ef7d3eda87b12c498a11ac3a59d25f12abec0ae79b059cd9f5cffd910bdd792710f783deb0053c8f6fe8710a7b49f317 WHIRLPOOL 84e03d9f77b76ea3638006c8c31f0260bd5da3d98151e85c8e3420f862ec2985aed8b7bc502811c9c313124ce7738a1ff401f2bef63773e93ee5086fbcdf2b82
+AUX p7zip_4.65-libun7zip.patch 14251 SHA256 f53a5c849f65f9326b71ad7f44e031fbc5a618697cae8167a53dc0673be13188 SHA512 ad98ed3df11d8b7acceffbb7d2893d466375f71b87cd5148147b915dfc2cdca7a74d1086cf91033a9b30affa8540e5a4f235aa479d5e55a9ffd28bb9649f2c1c WHIRLPOOL 433a646b311a0cfadb415f8a40b5106b495bffdc5b1e3bd6a522fe01301b0a5190bda6f03faf6c5cd113cb7e6a09e6d059842ac4f04a4379c7414bbfc9887920
+AUX p7zip_9.04-ds-rusxmms.patch 9466 SHA256 61d4c284dd25d5f6b13d2393fe667703e221c362a18b021f493d8467b100ad16 SHA512 0bb202b578f96831f4e986794c98858cbba54d681bbd250d5926fadcbc31724634b702efeae037b73b6a955e6b6a71de6c1bdb2baff7b9345a062b3d8c1a6cae WHIRLPOOL 7c0b75999b972769bfbbc18f8598d25df7fa8e638135a14d20c5957df90bac10a6ffbaa696f0e76f4c9a4766d4067ba337c168d41190632f7b4fb7a6b6cfe326
+AUX p7zip_9.13-ds-dynbuf.patch 473 SHA256 e1ddb4a89e7d2376b11177064d554011c6c348080e47c6cd573e994dbba45d94 SHA512 9a7d4cc6141bd4f6f40515605df9072be562237304075e6d2b8e4527152156126d9837191f2a839a7e05ec00a1f86b30d26a6df038a067528e0a3b108264561f WHIRLPOOL 1e24600f25b45a1fb56505284a95ac136cd4dad29c4cb982fb4f1b67c14883201cbb6eaa0b62994dcd318e91953313ca8bc11ee6007218af3133066453ba7fab
+AUX p7zip_9.13-ds-rusxmms.patch 10443 SHA256 5c3840ec53e6390e2fc007e9ce8a8186c646b382253044013d307e1df38ab2c5 SHA512 9c7e316afed084ce6fb12bef91fbafc49372a3c4b13b33f5980ffa4800b848079cc0add6899d484a5ae69ef35d9b331aa748727cd9c36185213fb36979fa2985 WHIRLPOOL b80261d887fb017c0407ea77a64f545c5d33f7220abe1d57dd1734a0a29e206da92f1d7da5afd4233e5417c75ebf825f0d70643c2364a0cca8fbac2ddaec2659
+DIST p7zip_4.27_src.tar.bz2 416045 SHA256 1064abbf2e2a9bab515978b554324fe83b9e00eee5dd7d1f031a0b2af9dfae24 SHA512 9bd73f9ae96e98777c980e1bb5056299abeebc6d87d530e03a3f891269b128aee578888ee5a8a912c7e96f10a228847be4a29e8db257227a68bcbe5fea20c156 WHIRLPOOL a082a00bd177fea6149317e2b319fb5e029f17987c0208ea507da2b84465d4b8938e436bbe1c399e996e3a4c6714c61c6aa07bcdc6b900f421e66d72889c1d2f
+DIST p7zip_4.30_src_all.tar.bz2 427869 SHA256 2d5ba5c96b82cbcc9987ef81a843f77b886ee5c5d2ff9149f4d11f4f380fc8a9 SHA512 61a6adeca3a4002a2c634dc7df0264641d7074674cf423cfb464e40835958eb8dad21af593d955fca95e68631095fc37b99cdb25770a6e9002d8b4a64a4ec823 WHIRLPOOL 8124ea55c8ef3b120d9f3dca6c06cf0b62c8c7f297d1f9ad53bba00c711ad7d60b669066fa78242592b43c8c5b0f76016ce293f4cde0180193c7b65981eb10c1
+DIST p7zip_4.42_src_all.tar.bz2 1461812 SHA256 029ab89f0a553987abdbe0c14605efdf9c11f0f4074b854a6fc4181345d6ac44 SHA512 ff015f8c9e1a2e28777a253bb3a88aa45ad54bfafbd019ec62d81340b2a4eea4c9ed4532abe80ae722e1a1a03d72f4a5b6f4cb9e8ff8b2243e3eafd0176eb97b WHIRLPOOL e315a080ee30cb325ec3534a282d996bb2d5ce0d75e4b592328ccc2595b08345aacc20b7006af0c4b2fa28d046e9708339cbb4a43e1da85addd3518343aa5bf8
+DIST p7zip_4.44_src_all.tar.bz2 1518820 SHA256 cb87304f682e7176ab95ce73d3ce2b7b65384e051272fc34ef934e2427bbd3af SHA512 d470236ba325c72d3cb4c5866afa052d3f9816b5042115b7ac5a217d20d4aec05bff1f4f278d2283acb41515e14cb0cae5c268ce9145b5bc74118eac812eec6c WHIRLPOOL e0b7f171e7f0416d99b9838326c7bf16a76f1a09e0ed3e385dd55d1a38fc698598459b7fa27ab9b8431543a88fdaf058a29ca8c181edf0ae6ba8ad7880eac3c8
+DIST p7zip_4.57_src_all.tar.bz2 1473608 SHA256 00e923386dd53d532a86331d1694eaeee626783afa503f91edf7370357e05b53 SHA512 436279e64dc37b3db80bf4acede765d461f13853dde71df4d93d13fbacb1ad25ea67605f379cbf1be23d204002ff2ffa4734d36904e32dc0b3f7329037da1ded WHIRLPOOL cdd48f611dd9bd7ddc367593a64144a6c4054f050aff7bd55e72146b21286419898e99e9af71dda22cbc259d52d4275625ceb1a6a50cf2dacda0d08c6886fd49
+DIST p7zip_4.65_src_all.tar.bz2 2501418 SHA256 691cc9419a73a9348319f5b2c3ba2655471bee052c6c7fa57a226800c89ab07f SHA512 ae4a48a959b03b519ff00df510194d4d5780c198c8f4fb907fd2e209728fb77db7baa85d3a5438ca5d94af37a8e736f7486f8cac1ba606cd56b917aed11dac85 WHIRLPOOL 8dc6d6c4e840374ef8f85e7cd03a2dd71a5a18425cd92a1c5a3988240b4d2ee9175717fda312d005a97771ea126e16f13e5805f7eacc3aea4f357aa146b45ea6
+DIST p7zip_9.13_src_all.tar.bz2 3753579 SHA256 fc9c0fa2eabd367d6adbc3ea07bb305dbdc1f68717eea362c8c074b91c03d923 SHA512 84b6687fc33af55c7f282fc6c988789cbdd0b3d2df0adb1c14b6ad12ebc2ed4600ddf6b043d2d8f2baa717ee8afc3601f7e9e37c5d44d6357727bf3a36686e11 WHIRLPOOL 886ba23a09e8aab3b92cd870dda5aa876638c3b7149155b3c8eb1031b94e262f2254ebd575ca42c42e57789ccfff6ab4289937c952373947bd61ec8f92e7370a
+DIST p7zip_9.20.1_src_all.tar.bz2 3835235 SHA256 49557e7ffca08100f9fc687f4dfc5aea703ca207640c76d9dee7b66f03cb4782 SHA512 7bb8a276aaefc4a83364e45633c48527de44c6b1205344f3356db570582f30f81d82a94938c99a7ad193587b584cc1c03219c28249de40018bdaee6c3b2a022a WHIRLPOOL cb20f37d3f796931a9b330728aa7148afe98bbf8a49bb91bfd80e4667c16416206b23bf34298e9ec37825e8b43f92a5710f0cea1f974296d5c17aa2c7b0931f3
+EBUILD p7zip-4.27-r1.ebuild 1722 SHA256 a8b59dc0c2f095be3cd53f6a716cbc97cf6ac2c1e74f448fbf9ec9745070a58f SHA512 49408abe34f28590b7b1d0cc5980823e042387452035ab95f633aa1f4c1a872b4a30499bc9d05e0eb334036f6fbd66f5fde25f26acd4ff4a36946d0737b916f3 WHIRLPOOL b97f19c8724ac2588c6f0ee465cdc60d3a5849621c002bea45d63bd01a4f8fbf135c8502eed0440eaaae7f714d417ad8f3b4ca51f7bc2fbf3c1615535845367c
+EBUILD p7zip-4.30-r1.ebuild 1728 SHA256 3f65b1eaa89e08496c918ca459505b2a129705dbd7fb90f8bf9cc38caee3924f SHA512 12284d1a8d6099d0c05f88e2cc8046f479d27db6f42b6cdbc473a83324d49c69c91ec68aa66d8ed264979ac4d7bd752b4287da80ee320a996d99edd59381d7d1 WHIRLPOOL 8b39a69b44a0bb574b953a128f11f4bde70e0e5998398fbc0a6f4e425c494eaccf1cce70a1a15d4dd3d0d5b55cf791debd8960cbd77cbe605dfe4b3c779cca5c
+EBUILD p7zip-4.42-r1.ebuild 2386 SHA256 872dd581447ab8a523856e2d7118ac95946dd34301cb040fb5afcba49ce1ba9a SHA512 6b51790b5465c2fabdadbb89ea0b1039fbcd92c3e334beb45a9ecdcc59d32376b6d5ee079a14404ed46f09a19bf24bf8e005edc59be21f456e7e02feb934cc8c WHIRLPOOL e2e76f6af32a63261a5670041053697bc78ebfa71a78cba673b088c98e4d575d13b21424435fbcb4f34b421507d06cf82754ae1f6a3c15e846b830244b6f3e1b
+EBUILD p7zip-4.44-r1.ebuild 2652 SHA256 96a7b905816eeefb7b76be5004e2eb6f02bdccaab7dc005071c249bac620e1b4 SHA512 30f5dd83b8365386963a42fb714e0882d950ae53a89a508003cfa68a5c5c4206bd25844423eb8cdc545e3b186b9860787edb5aa8d44c2167df1a56b82a65a93e WHIRLPOOL 775b5616390ea5bf159af8c1a548b7d338b6b73661c7ecdc483baac175be546ea12f2047664e06570d4247c40fdf1f9cc62a21c86066ce7ea75efc34175a5e71
+EBUILD p7zip-4.44-r2.ebuild 2698 SHA256 655f1fcc045272bd08c665b659d42ffb694b59a227305ae0815ae1a791621e4f SHA512 176ca2940532316adc156949b5363ea843bd9254922fb7701f3b94363d91a6b609f5b8a2161d2c37626be45eee99da7b200a7bc2f831d01fd6615cb9a3c06d46 WHIRLPOOL f10c1077dd28dc587937ba221031f5ac7ea402995abc033d0683e7c9fbb38451c5c5a8db9290d9b9dce6318309d5526ab93a7aa723e4aaa1e915ad4765139ac5
+EBUILD p7zip-4.57-r1.ebuild 3210 SHA256 b006929fa5e3cb21c8ed80e3637a49795edafa6aea5805d7903fd51fd50bf87c SHA512 89f6148e5b586057b553bb5c1b3d6501a16d0b110f93aca992f952cf2d5c08879677386896b8bc8b4e8193e19e84ed234a173d717e1a1187fed16bf247a04bbf WHIRLPOOL 22a624274706ca06d6b966c37fb208c5caaf212e26fea856d7d3759e03cad30a8881d6d5465f3884339cf4f2090bc88d6bf77e0e9691d2d1427f72b00a063e7c
+EBUILD p7zip-4.65-r2.ebuild 4084 SHA256 10e5517f3497b88d5dc1a807c68548fe8d81ffe446680276028cc8b0a994e061 SHA512 f2f525f781a281f4d08cd4be330ae80d08015cb69ef4a3bb63efa841af6ccca8650157f3f048d9a9ee123ecfffe6bf17525a9d1388d096dc917b0c9d6a5f36ac WHIRLPOOL d49d26ed0c635a070668ebf6eb5a986bd9245775bc6051a1757ae69d0091d19e72ab4dd1663517789dec8f0e052b23d9159b0ed2d9e881c706b957488daa68e5
+EBUILD p7zip-9.13-r2.ebuild 4193 SHA256 1a2a9ff0afbcd664c0703037847cee6324b4ce44f578f2ff96742349b95075cb SHA512 0c543f43b34b36382d3d0b3a3a2730a6b41e510daab7087a239cfa8e5feea5a28f02999ecfdd921363aa7549f5b032aa521a031d9204f246beb2e0e41e891e79 WHIRLPOOL dc01393a3fab82504b567531d63a6ea2dc6435937cea6482ba571f0c5ba54d8e7db46b4140194a945a0c5f45d75465f1fe95a481030a2fc4183e1dfa5bfa3e31
+EBUILD p7zip-9.13-r3.ebuild 4258 SHA256 e000860cb1a69bd08e25d23363ed99dc7f364d8a0f8e86fdc021d144c8e2ecdb SHA512 1bef2e300671ab342c70d2e7a03e09feaa110e739e4f1810a5baa518b3f3ca7797a4491d3cd0dd2bfdce9263408cbf6ca88952cef3ba157e662ce26df4ecd872 WHIRLPOOL 2216af7584949411f0d4f98a519f77b958e7488568c525b78a05b2db7d782bbbd49302ecaee4116d0819334afae81cf370270b3924d659b3180b22de07f72300
+EBUILD p7zip-9.20.1-r5.ebuild 4710 SHA256 b3ceb233d5b33c62b36fa635a4dc4c196c4bfef98a6cf58c0c050d6e05affbcd SHA512 e24f04d51ed1e540772cf51b91302bb2ad07bf587549b3c196b0036420dac844e4b63be223a39b03b87de3b525afaec62a598940cd3b5034ee8a2308c23ea506 WHIRLPOOL b3e53395b87b7110bd5698916df7e5004081887df03bad7af8b09f35b6979bb29b88ccf28db95564d7c4e2b9ecc4a93bcfa7de5b07dfc2d86d7fe73184398a2e
diff --git a/app-arch/p7zip/files/4.65-hardlink.patch b/app-arch/p7zip/files/4.65-hardlink.patch
new file mode 100644
index 0000000..05d9e71
--- /dev/null
+++ b/app-arch/p7zip/files/4.65-hardlink.patch
@@ -0,0 +1,13 @@
+--- makefile 2009-02-25 16:03:33.000000000 +0100
++++ makefile.new 2009-02-25 16:03:17.000000000 +0100
+@@ -55,8 +55,8 @@
+ $(MAKE) -C CPP/7zip/UI/Console all
+
+ 7zG: common7z
+- cd bin ; rm -f Lang ; ln ../GUI/Lang .
+- cd bin ; rm -f help ; ln ../GUI/help .
++ cd bin ; rm -f Lang ; ln -sf ../GUI/Lang .
++ cd bin ; rm -f help ; ln -sf ../GUI/help .
+ $(MAKE) -C CPP/7zip/UI/GUI all
+
+ clean:
diff --git a/app-arch/p7zip/files/4.65-makefile.patch b/app-arch/p7zip/files/4.65-makefile.patch
new file mode 100644
index 0000000..b0297f8
--- /dev/null
+++ b/app-arch/p7zip/files/4.65-makefile.patch
@@ -0,0 +1,20 @@
+--- CPP/7zip/Bundles/Format7zFree/makefile 2009-02-09 21:47:24.000000000 +0100
++++ CPP/7zip/Bundles/Format7zFree/makefile.new 2009-02-25 14:18:31.000000000 +0100
+@@ -271,8 +271,6 @@
+ MyAes.o \
+ Pbkdf2HmacSha1.o \
+ RandGen.o \
+- Rar20Crypto.o \
+- RarAes.o \
+ Sha1.o \
+ WzAes.o \
+ ZipCrypto.o \
+@@ -313,7 +313,6 @@
+ $(LZH_OBJS) \
+ $(LZM_OBJS) \
+ $(NSIS_OBJS) \
+- $(RAR_OBJS) \
+ $(SPLIT_OBJS) \
+ $(TAR_OBJS) \
+ $(UDF_OBJS) \
+
diff --git a/app-arch/p7zip/files/7z b/app-arch/p7zip/files/7z
new file mode 100644
index 0000000..05c7086
--- /dev/null
+++ b/app-arch/p7zip/files/7z
@@ -0,0 +1,5 @@
+#!/bin/sh
+# 7z wrapper, p7zip, should be called with full path
+# so symlink and copy should not be used instead.
+
+exec /usr/lib/p7zip/7z "$@"
diff --git a/app-arch/p7zip/files/7za b/app-arch/p7zip/files/7za
new file mode 100644
index 0000000..f718bb4
--- /dev/null
+++ b/app-arch/p7zip/files/7za
@@ -0,0 +1,5 @@
+#!/bin/sh
+# 7za wrapper, p7zip, should be called with full path
+# so symlink and copy should not be used instead.
+
+exec /usr/lib/p7zip/7za "$@"
diff --git a/app-arch/p7zip/files/9.04-kde4.patch b/app-arch/p7zip/files/9.04-kde4.patch
new file mode 100644
index 0000000..c309d70
--- /dev/null
+++ b/app-arch/p7zip/files/9.04-kde4.patch
@@ -0,0 +1,87 @@
+diff --git a/GUI/kde/p7zip_compress.desktop b/GUI/kde/p7zip_compress.desktop
+index 9010fbd..b965fa6 100644
+--- a/GUI/kde/p7zip_compress.desktop
++++ b/GUI/kde/p7zip_compress.desktop
+@@ -1,6 +1,8 @@
+ [Desktop Entry]
+-ServiceTypes=inode/directory
+-Actions=CompressDialog;Compress7z;CompressZip;extractHere;ExtractSubdir;ExtractTo;test;Benchmark
++Type=Service
++ServiceTypes=KonqPopupMenu/Plugin
++MimeType=all/all;
++Actions=CompressDialog;Compress7z;CompressZip;Benchmark
+ X-KDE-Priority=TopLevel
+ X-KDE-Submenu=7-Zip
+ X-KDE-Icon=p7zip
+diff --git a/GUI/kde/p7zip_extract.desktop b/GUI/kde/p7zip_extract.desktop
+index 9038c76..a7dca4d 100644
+--- a/GUI/kde/p7zip_extract.desktop
++++ b/GUI/kde/p7zip_extract.desktop
+@@ -1,10 +1,30 @@
+ [Desktop Entry]
+ X-SuSE-translate=true
+-Encoding=UTF-8
+-ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,application/x-tgz,application/x-tbz,application/x-tbz2,application/x-zip,application/x-bzip,application/x-tzo,application/x-lzop,application/x-rar,application/x-rar-compressed,application/x-zoo,application/x-tarz,application/x-archive,application/x-bzip2,application/x-jar,application/x-deb,application/x-ace,application/x-7z,application/x-arc,application/x-arj,application/x-compress,application/x-cpio,application/x-pak
+-Actions=extractHere
++Type=Service
++ServiceTypes=KonqPopupMenu/Plugin
++MimeType=application/x-gzip;application/x-lha;application/x-tar;application/x-compressed-tar;application/x-bzip-compressed-tar;application/zip;application/x-bzip;application/x-tzo;application/x-lzop;application/x-rar;application/x-zoo;application/x-tarz;application/x-archive;application/x-bzip2;application/x-java-archive;application/x-deb;application/x-ace;application/x-7z-compressed;application/x-arc;application/x-arj;application/x-compress;application/x-zip-compressed;application/x-cpio;application/x-pak;
++#MimeType=application/x-gzip;application/x-lha;application/x-tar;application/x-tgz;application/x-tbz;application/x-tbz2;application/x-zip;application/x-bzip;application/x-tzo;application/x-lzop;application/x-rar;application/x-rar-compressed;application/x-zoo;application/x-tarz;application/x-archive;application/x-bzip2;application/x-jar;application/x-deb;application/x-ace;application/x-7z;application/x-arc;application/x-arj;application/x-compress;application/x-cpio;application/x-pak;
++Actions=extractHere;ExtractSubdir;ExtractTo;test;
++X-KDE-Priority=TopLevel
++X-KDE-Submenu=7-Zip
++X-KDE-Icon=p7zip
+
+ [Desktop Action extractHere]
+-Name=Extract Here with 7-zip
++Name=Extract Here
+ Exec=p7zipForFilemanager x %U
+ Icon=p7zip
++
++[Desktop Action ExtractSubdir]
++Name=Extract to subdirectory
++Icon=p7zip
++Exec=p7zipForFilemanager xs %U
++
++[Desktop Action ExtractTo]
++Name=Extract to ...
++Icon=p7zip
++Exec=p7zipForFilemanager xd %U
++
++[Desktop Action test]
++Name=Test Archive
++Exec=p7zipForFilemanager t %U
++Icon=p7zip
+diff --git a/GUI/kde/p7zip_extract_subdir.desktop b/GUI/kde/p7zip_extract_subdir.desktop
+index 1800fa0..a711f3c 100644
+--- a/GUI/kde/p7zip_extract_subdir.desktop
++++ b/GUI/kde/p7zip_extract_subdir.desktop
+@@ -1,6 +1,5 @@
+ [Desktop Entry]
+ X-SuSE-translate=true
+-Encoding=UTF-8
+ ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,application/x-tgz,application/x-tbz,application/x-tbz2,application/x-zip,application/x-bzip,application/x-tzo,application/x-lzop,application/x-rar,application/x-rar-compressed,application/x-zoo,application/x-tarz,application/x-archive,application/x-bzip2,application/x-jar,application/x-deb,application/x-ace,application/x-7z,application/x-arc,application/x-arj,application/x-compress,application/x-cpio,application/x-pak
+ Actions=ExtractSubdir
+
+diff --git a/GUI/kde/p7zip_extract_to.desktop b/GUI/kde/p7zip_extract_to.desktop
+index bf13ec0..18d2b74 100644
+--- a/GUI/kde/p7zip_extract_to.desktop
++++ b/GUI/kde/p7zip_extract_to.desktop
+@@ -1,6 +1,5 @@
+ [Desktop Entry]
+ X-SuSE-translate=true
+-Encoding=UTF-8
+ ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,application/x-tgz,application/x-tbz,application/x-tbz2,application/x-zip,application/x-bzip,application/x-tzo,application/x-lzop,application/x-rar,application/x-rar-compressed,application/x-zoo,application/x-tarz,application/x-archive,application/x-bzip2,application/x-jar,application/x-deb,application/x-ace,application/x-7z,application/x-arc,application/x-arj,application/x-compress,application/x-cpio,application/x-pak
+ Actions=ExtractTo
+
+diff --git a/GUI/kde/p7zip_test.desktop b/GUI/kde/p7zip_test.desktop
+index 2c17acb..5212bb2 100644
+--- a/GUI/kde/p7zip_test.desktop
++++ b/GUI/kde/p7zip_test.desktop
+@@ -1,6 +1,5 @@
+ [Desktop Entry]
+ X-SuSE-translate=true
+-Encoding=UTF-8
+ ServiceTypes=application/x-gzip,application/x-lha,application/x-tar,application/x-tgz,application/x-tbz,application/x-tbz2,application/x-zip,application/x-bzip,application/x-tzo,application/x-lzop,application/x-rar,application/x-rar-compressed,application/x-zoo,application/x-tarz,application/x-archive,application/x-bzip2,application/x-jar,application/x-deb,application/x-ace,application/x-7z,application/x-arc,application/x-arj,application/x-compress,application/x-cpio,application/x-pak
+ Actions=test
+
diff --git a/app-arch/p7zip/files/9.04-makefile.patch b/app-arch/p7zip/files/9.04-makefile.patch
new file mode 100644
index 0000000..93a99cc
--- /dev/null
+++ b/app-arch/p7zip/files/9.04-makefile.patch
@@ -0,0 +1,19 @@
+--- p7zip_9.04/CPP/7zip/Bundles/Format7zFree/makefile.orig 2010-01-04 13:58:54.527887746 +0100
++++ p7zip_9.04/CPP/7zip/Bundles/Format7zFree/makefile 2010-01-04 13:59:10.290868343 +0100
+@@ -247,8 +247,6 @@
+ MyAes.o \
+ Pbkdf2HmacSha1.o \
+ RandGen.o \
+- Rar20Crypto.o \
+- RarAes.o \
+ Sha1.o \
+ WzAes.o \
+ ZipCrypto.o \
+@@ -298,7 +296,6 @@
+ $(HFS_OBJS) \
+ $(ISO_OBJS) \
+ $(NSIS_OBJS) \
+- $(RAR_OBJS) \
+ $(TAR_OBJS) \
+ $(UDF_OBJS) \
+ $(WIM_OBJS) \
diff --git a/app-arch/p7zip/files/p7zip b/app-arch/p7zip/files/p7zip
new file mode 100644
index 0000000..9aaf078
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip
@@ -0,0 +1,73 @@
+#!/bin/bash
+# gzip-like CLI wrapper for p7zip
+set -e
+
+compress=true
+file=
+
+usage ()
+ {
+ echo "Usage: $0 [-d] [-h|--help] [file]"
+ exit 1
+ }
+
+while [ "$#" != "0" ] ; do
+ case "$1" in
+ -d) compress=false ;;
+ -c) echo "$0: ignoring $1 option (not yet implemented)" ;;
+ -h|--help) usage ;;
+ *)
+ if [ "${file}" = "" ] ; then
+ file="$1"
+ else
+ usage
+ fi
+ ;;
+ esac
+ shift
+done
+
+# make sure they're present, before we screw up
+for i in mktemp 7z rm cat tty ; do
+ if ! which $i > /dev/null ; then
+ echo "$0: $i: command not found"
+ exit 1
+ fi
+done
+
+if [ "${file}" != "" ] ; then
+ if ${compress} ; then
+ 7z a ${file}.7z ${file}
+ rm ${file}
+ else
+ case ${file} in
+ *.7z)
+ 7z x ${file}
+ rm ${file}
+ ;;
+ *)
+ echo "$0: ${file}: unknown suffix -- ignored"
+ ;;
+ esac
+ fi
+ exit 0
+fi
+
+tmp=`mktemp`
+trap "rm -f ${tmp}" 0
+
+if ${compress} ; then
+ if tty > /dev/null ; then
+ echo "$0: compressed data not written to a terminal."
+ echo "For help, type: $0 -h"
+ exit 1
+ fi
+ rm -f ${tmp}
+ 7z a ${tmp} -si >/dev/null
+ cat ${tmp}
+else
+ cat > ${tmp}
+ 7z x ${tmp} -so 2>/dev/null | cat
+fi
+
+rm -f ${tmp}
diff --git a/app-arch/p7zip/files/p7zip-4.16_x86_static.patch b/app-arch/p7zip/files/p7zip-4.16_x86_static.patch
new file mode 100644
index 0000000..c52ef86
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip-4.16_x86_static.patch
@@ -0,0 +1,10 @@
+--- makefile.machine.orig 2005-04-15 18:31:10.000000000 +0200
++++ makefile.machine 2005-04-15 18:12:26.000000000 +0200
+@@ -11,6 +11,6 @@
+ CC=gcc $(ALLFLAGS)
+ LINK_SHARED=-shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -static
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
diff --git a/app-arch/p7zip/files/p7zip-9.13-QA.patch b/app-arch/p7zip/files/p7zip-9.13-QA.patch
new file mode 100644
index 0000000..4a2b92e
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip-9.13-QA.patch
@@ -0,0 +1,17 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Thu Jun 7 14:29:51 UTC 2012
+Subject: fix QA warnings
+
+https://sourceforge.net/tracker/?func=detail&atid=660493&aid=3532590&group_id=111810
+
+--- CPP/7zip/Archive/NtfsHandler.cpp
++++ CPP/7zip/Archive/NtfsHandler.cpp
+@@ -1250,7 +1250,7 @@
+ if (recSizeLog < Header.SectorSizeLog)
+ return false;
+ numSectorsInRec = 1 << (recSizeLog - Header.SectorSizeLog);
+- if (!mftRec.Parse(ByteBuf, Header.SectorSizeLog, numSectorsInRec, NULL, 0))
++ if (!mftRec.Parse(ByteBuf, Header.SectorSizeLog, numSectorsInRec, 0, NULL))
+ return S_FALSE;
+ if (!mftRec.IsFILE())
+ return S_FALSE;
diff --git a/app-arch/p7zip/files/p7zip-9.20.1-QA.patch b/app-arch/p7zip/files/p7zip-9.20.1-QA.patch
new file mode 100644
index 0000000..8845aca
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip-9.20.1-QA.patch
@@ -0,0 +1,17 @@
+From: Julian Ospald <hasufell@gentoo.org>
+Date: Thu Jun 7 14:31:12 UTC 2012
+Subject: fix QA warnings
+
+https://sourceforge.net/tracker/?func=detail&atid=660493&aid=3532590&group_id=111810
+
+--- CPP/7zip/Archive/NtfsHandler.cpp
++++ CPP/7zip/Archive/NtfsHandler.cpp
+@@ -1280,7 +1280,7 @@
+ if (recSizeLog < Header.SectorSizeLog)
+ return false;
+ numSectorsInRec = 1 << (recSizeLog - Header.SectorSizeLog);
+- if (!mftRec.Parse(ByteBuf, Header.SectorSizeLog, numSectorsInRec, NULL, 0))
++ if (!mftRec.Parse(ByteBuf, Header.SectorSizeLog, numSectorsInRec, 0, NULL))
+ return S_FALSE;
+ if (!mftRec.IsFILE())
+ return S_FALSE;
diff --git a/app-arch/p7zip/files/p7zip-9.20.1-execstack.patch b/app-arch/p7zip/files/p7zip-9.20.1-execstack.patch
new file mode 100644
index 0000000..1fdff48
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip-9.20.1-execstack.patch
@@ -0,0 +1,24 @@
+diff -Naupr p7zip_9.20.1.orig/Asm/x64/7zCrcT8U.asm p7zip_9.20.1/Asm/x64/7zCrcT8U.asm
+--- p7zip_9.20.1.orig/Asm/x64/7zCrcT8U.asm 2008-08-14 11:18:07.000000000 +0200
++++ p7zip_9.20.1/Asm/x64/7zCrcT8U.asm 2011-07-26 17:43:57.727910278 +0200
+@@ -101,3 +101,8 @@ _CrcUpdateT8:
+ ret
+
+ end
++
++%ifidn __OUTPUT_FORMAT__,elf
++section .note.GNU-stack noalloc noexec nowrite progbits
++%endif
++
+diff -Naupr p7zip_9.20.1.orig/Asm/x86/7zCrcT8U.asm p7zip_9.20.1/Asm/x86/7zCrcT8U.asm
+--- p7zip_9.20.1.orig/Asm/x86/7zCrcT8U.asm 2009-07-14 12:44:15.000000000 +0200
++++ p7zip_9.20.1/Asm/x86/7zCrcT8U.asm 2011-07-26 17:44:23.938864508 +0200
+@@ -99,3 +99,8 @@ _CrcUpdateT8:
+
+
+ ; end
++
++%ifidn __OUTPUT_FORMAT__,elf
++section .note.GNU-stack noalloc noexec nowrite progbits
++%endif
++
diff --git a/app-arch/p7zip/files/p7zip-ds-442.patch b/app-arch/p7zip/files/p7zip-ds-442.patch
new file mode 100644
index 0000000..ba9b3d2
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip-ds-442.patch
@@ -0,0 +1,11 @@
+diff -dPNur p7zip_4.42/7zip/Bundles/Un7Zip/Un7Zip.cpp p7zip_4.42-new/7zip/Bundles/Un7Zip/Un7Zip.cpp
+--- p7zip_4.42/7zip/Bundles/Un7Zip/Un7Zip.cpp 2006-06-28 04:12:35.000000000 +0500
++++ p7zip_4.42-new/7zip/Bundles/Un7Zip/Un7Zip.cpp 2006-06-28 04:25:56.000000000 +0500
+@@ -117,6 +117,7 @@
+ v1, v2,
+ wildcardCensorHead,
+ true,
++ false,
+ passwordEnabled,
+ password);
+ if (result != S_OK)
diff --git a/app-arch/p7zip/files/p7zip-ds-rcc.patch b/app-arch/p7zip/files/p7zip-ds-rcc.patch
new file mode 100644
index 0000000..98e7855
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip-ds-rcc.patch
@@ -0,0 +1,314 @@
+diff -dPNur p7zip_4.44-old/C/rccrecode.c p7zip_4.44/C/rccrecode.c
+--- p7zip_4.44-old/C/rccrecode.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44/C/rccrecode.c 2007-04-14 19:47:03.000000000 +0200
+@@ -0,0 +1,69 @@
++#include <pthread.h>
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define ARC_CLASS 0
++#define OUT_CLASS 1
++#define ARCOUT_CLASS 0
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL }
++};
++
++static int initialized = 0;
++static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
++
++void *rcc_init() {
++ rcc_context ctx;
++
++ pthread_mutex_lock(&mutex);
++ if (!initialized) {
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccInitDb4(NULL, NULL, 0);
++ }
++ initialized++;
++ pthread_mutex_unlock(&mutex);
++
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) rccInitDb4(ctx, NULL, 0);
++
++ return ctx;
++}
++
++
++void rcc_free(void *ctx) {
++ if (ctx) rccFreeContext((rcc_context)ctx);
++
++ pthread_mutex_lock(&mutex);
++ if (initialized == 1) rccFree();
++ initialized--;
++ pthread_mutex_unlock(&mutex);
++}
++
++
++char *rcc_read(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, ARC_CLASS, OUT_CLASS, string, size, NULL);
++}
++
++char *rcc_write(rcc_context ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, OUT_CLASS, ARCOUT_CLASS, string, size, NULL);
++}
+diff -dPNur p7zip_4.44-old/C/rccrecode.h p7zip_4.44/C/rccrecode.h
+--- p7zip_4.44-old/C/rccrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44/C/rccrecode.h 2007-04-14 19:34:20.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef _RCC_RECODE_H
++#define _RCC_RECODE_H
++
++# ifdef __cplusplus
++extern "C" {
++# endif
++
++ void *rcc_init();
++ void rcc_free(void *ctx);
++ char *rcc_read(void *ctx, const char *string, size_t size);
++ char *rcc_write(void *ctx, const char *string, size_t size);
++
++# ifdef __cplusplus
++}
++# endif
++
++#endif /* _RCC_RECODE_H */
+diff -dPNur p7zip_4.44-old/CPP/7zip/Archive/Zip/makefile p7zip_4.44/CPP/7zip/Archive/Zip/makefile
+--- p7zip_4.44-old/CPP/7zip/Archive/Zip/makefile 2007-01-23 21:29:41.000000000 +0100
++++ p7zip_4.44/CPP/7zip/Archive/Zip/makefile 2007-04-14 18:36:44.000000000 +0200
+@@ -13,6 +13,7 @@
+ LIBS=$(LOCAL_LIBS_DLL)
+
+ OBJS = \
++../../../../C/rccrecode.o \
+ ../../../Common/MyWindows.o \
+ ../../../Common/Vector.o\
+ ../../../Common/Alloc.o\
+diff -dPNur p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipIn.cpp p7zip_4.44/CPP/7zip/Archive/Zip/ZipIn.cpp
+--- p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipIn.cpp 2007-01-20 18:06:58.000000000 +0100
++++ p7zip_4.44/CPP/7zip/Archive/Zip/ZipIn.cpp 2007-04-14 19:34:59.000000000 +0200
+@@ -9,11 +9,22 @@
+ #include "../../Common/LimitedStreams.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
++
++CInArchive::CInArchive() {
++ rccctx = rcc_init();
++}
++
++CInArchive::~CInArchive() {
++ rcc_free(rccctx);
++}
++
+
+ // static const char kEndOfString = '\0';
+-
++
+ bool CInArchive::Open(IInStream *inStream, const UInt64 *searchHeaderSizeLimit)
+ {
+ m_Stream = inStream;
+@@ -179,10 +190,18 @@
+
+ AString CInArchive::ReadFileName(UInt32 nameSize)
+ {
++ char *rccrec;
+ if (nameSize == 0)
+ return AString();
+ SafeReadBytes(m_NameBuffer.GetBuffer(nameSize), nameSize);
+ m_NameBuffer.ReleaseBuffer(nameSize);
++
++ rccrec = rcc_read(rccctx, (LPCSTR)m_NameBuffer, 0);
++ if (rccrec) {
++ m_NameBuffer = rccrec;
++ free(rccrec);
++ }
++
+ return m_NameBuffer;
+ }
+
+diff -dPNur p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipIn.h p7zip_4.44/CPP/7zip/Archive/Zip/ZipIn.h
+--- p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipIn.h 2007-01-20 18:06:28.000000000 +0100
++++ p7zip_4.44/CPP/7zip/Archive/Zip/ZipIn.h 2007-04-14 19:05:31.000000000 +0200
+@@ -104,6 +104,10 @@
+ bool SeekInArchive(UInt64 position);
+ ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
+ IInStream* CreateStream();
++
++ void *rccctx;
++ CInArchive();
++ ~CInArchive();
+ };
+
+ }}
+diff -dPNur p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipOut.cpp p7zip_4.44/CPP/7zip/Archive/Zip/ZipOut.cpp
+--- p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipOut.cpp 2007-01-20 18:06:57.000000000 +0100
++++ p7zip_4.44/CPP/7zip/Archive/Zip/ZipOut.cpp 2007-04-14 19:44:44.000000000 +0200
+@@ -8,9 +8,19 @@
+ #include "../../Common/OffsetStream.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
+
++COutArchive::COutArchive() {
++ rccctx = rcc_init();
++}
++
++COutArchive::~COutArchive() {
++ rcc_free(rccctx);
++}
++
+ void COutArchive::Create(IOutStream *outStream)
+ {
+ m_Stream = outStream;
+@@ -104,6 +114,8 @@
+
+ HRESULT COutArchive::WriteLocalHeader(const CLocalItem &item)
+ {
++ char *rccrec;
++
+ m_Stream->Seek(m_BasePosition, STREAM_SEEK_SET, NULL);
+
+ bool isZip64 = m_IsZip64 || item.PackSize >= 0xFFFFFFFF || item.UnPackSize >= 0xFFFFFFFF;
+@@ -124,6 +136,12 @@
+ return E_FAIL;
+ }
+ WriteUInt16((UInt16)m_ExtraSize); // test it;
++ rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) {
++ printf("%u, %s.\n", item.Name.Length(), rccrec);
++ WriteBytes(rccrec, strlen(rccrec));
++ free(rccrec);
++ } else
+ WriteBytes((const char *)item.Name, item.Name.Length());
+
+ UInt32 extraPos = 0;
+@@ -147,6 +165,8 @@
+
+ void COutArchive::WriteCentralHeader(const CItem &item)
+ {
++ char *rccrec;
++
+ m_Stream->Seek(m_BasePosition, STREAM_SEEK_SET, NULL);
+
+ bool isUnPack64 = item.UnPackSize >= 0xFFFFFFFF;
+@@ -175,6 +195,13 @@
+ WriteUInt16(item.InternalAttributes);
+ WriteUInt32(item.ExternalAttributes);
+ WriteUInt32(isPosition64 ? 0xFFFFFFFF: (UInt32)item.LocalHeaderPosition);
++
++ rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) {
++ printf("C: %u, %s.\n", item.Name.Length(), rccrec);
++ WriteBytes(rccrec, strlen(rccrec));
++ free(rccrec);
++ } else
+ WriteBytes((const char *)item.Name, item.Name.Length());
+ if (isZip64)
+ {
+diff -dPNur p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipOut.h p7zip_4.44/CPP/7zip/Archive/Zip/ZipOut.h
+--- p7zip_4.44-old/CPP/7zip/Archive/Zip/ZipOut.h 2007-01-20 18:06:29.000000000 +0100
++++ p7zip_4.44/CPP/7zip/Archive/Zip/ZipOut.h 2007-04-14 19:10:12.000000000 +0200
+@@ -44,6 +44,11 @@
+ void CreateStreamForCompressing(IOutStream **outStream);
+ void CreateStreamForCopying(ISequentialOutStream **outStream);
+ void SeekToPackedDataPosition();
++
++ void *rccctx;
++ COutArchive();
++ ~COutArchive();
++
+ };
+
+ }}
+diff -dPNur p7zip_4.44-old/CPP/7zip/Bundles/Alone/makefile p7zip_4.44/CPP/7zip/Bundles/Alone/makefile
+--- p7zip_4.44-old/CPP/7zip/Bundles/Alone/makefile 2007-01-23 21:29:43.000000000 +0100
++++ p7zip_4.44/CPP/7zip/Bundles/Alone/makefile 2007-04-14 18:52:31.000000000 +0200
+@@ -41,6 +41,7 @@
+ $(MY_HOME)/mySplitCommandLine.o
+
+ OBJS=\
++../../../../C/rccrecode.o \
+ ../../../Common/MyWindows.o \
+ 7zAES.o \
+ 7zCompressionMode.o \
+diff -dPNur p7zip_4.44-old/makefile.linux_amd64 p7zip_4.44/makefile.linux_amd64
+--- p7zip_4.44-old/makefile.linux_amd64 2007-04-14 15:37:39.000000000 +0200
++++ p7zip_4.44/makefile.linux_amd64 2007-04-14 18:50:13.000000000 +0200
+@@ -11,6 +11,6 @@
+ CC=x86_64-pc-linux-gnu-gcc $(ALLFLAGS)
+ LINK_SHARED=-shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+diff -dPNur p7zip_4.44-old/makefile.linux_gcc_2.95_no_need_for_libstdc p7zip_4.44/makefile.linux_gcc_2.95_no_need_for_libstdc
+--- p7zip_4.44-old/makefile.linux_gcc_2.95_no_need_for_libstdc 2007-04-14 15:37:39.000000000 +0200
++++ p7zip_4.44/makefile.linux_gcc_2.95_no_need_for_libstdc 2007-04-14 18:51:02.000000000 +0200
+@@ -10,6 +10,6 @@
+ CC=x86_64-pc-linux-gnu-gcc $(ALLFLAGS)
+ LINK_SHARED=-shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+diff -dPNur p7zip_4.44-old/makefile.linux_x86_ppc_alpha p7zip_4.44/makefile.linux_x86_ppc_alpha
+--- p7zip_4.44-old/makefile.linux_x86_ppc_alpha 2007-04-14 15:37:39.000000000 +0200
++++ p7zip_4.44/makefile.linux_x86_ppc_alpha 2007-04-14 18:51:15.000000000 +0200
+@@ -14,6 +14,6 @@
+ CC=x86_64-pc-linux-gnu-gcc $(ALLFLAGS)
+ LINK_SHARED=-shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+diff -dPNur p7zip_4.44-old/makefile.linux_x86_ppc_alpha__gcc_4.X p7zip_4.44/makefile.linux_x86_ppc_alpha__gcc_4.X
+--- p7zip_4.44-old/makefile.linux_x86_ppc_alpha__gcc_4.X 2007-04-14 15:37:39.000000000 +0200
++++ p7zip_4.44/makefile.linux_x86_ppc_alpha__gcc_4.X 2007-04-14 18:51:19.000000000 +0200
+@@ -14,6 +14,6 @@
+ CC=x86_64-pc-linux-gnu-gcc $(ALLFLAGS)
+ LINK_SHARED=-shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+diff -dPNur p7zip_4.44-old/makefile.machine p7zip_4.44/makefile.machine
+--- p7zip_4.44-old/makefile.machine 2007-04-14 15:37:39.000000000 +0200
++++ p7zip_4.44/makefile.machine 2007-04-14 18:49:24.000000000 +0200
+@@ -11,6 +11,6 @@
+ CC=x86_64-pc-linux-gnu-gcc $(ALLFLAGS)
+ LINK_SHARED=-shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
diff --git a/app-arch/p7zip/files/p7zip_4.27-libun7zip.patch b/app-arch/p7zip/files/p7zip_4.27-libun7zip.patch
new file mode 100644
index 0000000..0020729
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_4.27-libun7zip.patch
@@ -0,0 +1,597 @@
+diff -ruN p7zip_4.27.orig/7zip/Bundles/Un7Zip/makefile p7zip_4.27/7zip/Bundles/Un7Zip/makefile
+--- p7zip_4.27.orig/7zip/Bundles/Un7Zip/makefile 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/Bundles/Un7Zip/makefile 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,85 @@
++PROG=libun7zip.so
++
++LOCAL_FLAGS= -I../../../Common/ -I../../../myWindows/ -I../../../ -I../../../include_windows/ \
++-DCOMPRESS_BCJ2 -DEXTRACT_ONLY -DEXCLUDE_COM -DNO_REGISTRY -DFORMAT_7Z \
++-DCOMPRESS_LZMA -DCOMPRESS_BCJ_X86 -DCOMPRESS_COPY -DCOMPRESS_PPMD -D_SFX $(RPM_OPT_FLAGS)
++
++include ../../../makefile.machine
++
++LOCAL_SHARED=$(LINK_SHARED)
++LIBS=$(LOCAL_LIBS_DLL)
++
++MY_WINDOWS= \
++ $(MY_HOME)/myGetTickCount.o \
++ $(MY_HOME)/wine_date_and_time.o \
++ $(MY_HOME)/myModuleFileName.o \
++
++OBJS=\
++CoderMixer2.o\
++CoderMixer2MT.o\
++CoderMixer2ST.o\
++CrossThreadProgress.o\
++FilterCoder.o\
++ItemNameUtils.o\
++OutStreamWithCRC.o\
++ConsoleClose.o\
++ExtractCallbackConsole.o\
++ExtractCallbackNULL.o\
++List.o\
++OpenCallbackConsole.o\
++UserInputUtils.o\
++7zDecode.o\
++7zExtract.o\
++7zFolderOutStream.o\
++7zHandler.o\
++7zHeader.o\
++7zIn.o\
++7zMethodID.o\
++LZMADecoder.o\
++BranchCoder.o\
++x86.o\
++x86_2.o\
++PPMDDecoder.o\
++LZOutWindow.o\
++CopyCoder.o\
++Error.o\
++FileDir.o\
++FileFind.o\
++FileIO.o\
++FileName.o\
++PropVariant.o\
++PropVariantConversions.o\
++Synchronization.o\
++../../../Common/MyWindows.o\
++../../../Common/Alloc.o\
++../../../Common/StdInStream.o\
++../../../Common/StdOutStream.o\
++../../../Common/StringConvert.o\
++../../../Common/String.o\
++../../../Common/CRC.o\
++../../../Common/Vector.o\
++../../../Common/Wildcard.o\
++../../../Common/IntToString.o\
++FilePathAutoRename.o\
++FileStreams.o\
++InBuffer.o\
++LimitedStreams.o\
++LockedStream.o\
++OffsetStream.o\
++OutBuffer.o\
++ProgressUtils.o\
++StreamBinder.o\
++StreamObjects.o\
++StreamUtils.o\
++ArchiveExtractCallback.o\
++ArchiveOpenCallback.o\
++ArchiverInfo.o\
++DefaultName.o\
++Extract.o\
++ExtractingFilePath.o\
++OpenArchive.o\
++PropIDUtils.o\
++Un7Zip.o
++
++include ../../../makefile.glb
++
+diff -ruN p7zip_4.27.orig/7zip/Bundles/Un7Zip/makefile.depend p7zip_4.27/7zip/Bundles/Un7Zip/makefile.depend
+--- p7zip_4.27.orig/7zip/Bundles/Un7Zip/makefile.depend 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/Bundles/Un7Zip/makefile.depend 2005-09-23 09:48:46.000000000 +0400
+@@ -0,0 +1 @@
++
+\ ÷ ËÏÎÃÅ ÆÁÊÌÁ ÎÅÔ ÎÏ×ÏÊ ÓÔÒÏËÉ
+diff -ruN p7zip_4.27.orig/7zip/Bundles/Un7Zip/makefile.list p7zip_4.27/7zip/Bundles/Un7Zip/makefile.list
+--- p7zip_4.27.orig/7zip/Bundles/Un7Zip/makefile.list 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/Bundles/Un7Zip/makefile.list 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,128 @@
++CoderMixer2.o : ../../Archive/Common/CoderMixer2.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CoderMixer2.cpp
++CoderMixer2MT.o : ../../Archive/Common/CoderMixer2MT.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CoderMixer2MT.cpp
++CoderMixer2ST.o : ../../Archive/Common/CoderMixer2ST.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CoderMixer2ST.cpp
++CrossThreadProgress.o : ../../Archive/Common/CrossThreadProgress.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CrossThreadProgress.cpp
++FilterCoder.o : ../../Archive/Common/FilterCoder.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/FilterCoder.cpp
++ItemNameUtils.o : ../../Archive/Common/ItemNameUtils.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/ItemNameUtils.cpp
++OutStreamWithCRC.o : ../../Archive/Common/OutStreamWithCRC.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/OutStreamWithCRC.cpp
++ConsoleClose.o : ../../UI/Console/ConsoleClose.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ConsoleClose.cpp
++ExtractCallbackConsole.o : ../../UI/Console/ExtractCallbackConsole.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ExtractCallbackConsole.cpp
++ExtractCallbackNULL.o : ../../UI/Console/ExtractCallbackNULL.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ExtractCallbackNULL.cpp
++List.o : ../../UI/Console/List.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/List.cpp
++OpenCallbackConsole.o : ../../UI/Console/OpenCallbackConsole.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/OpenCallbackConsole.cpp
++UserInputUtils.o : ../../UI/Console/UserInputUtils.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/UserInputUtils.cpp
++7zDecode.o : ../../Archive/7z/7zDecode.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zDecode.cpp
++7zExtract.o : ../../Archive/7z/7zExtract.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zExtract.cpp
++7zFolderOutStream.o : ../../Archive/7z/7zFolderOutStream.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zFolderOutStream.cpp
++7zHandler.o : ../../Archive/7z/7zHandler.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zHandler.cpp
++7zHeader.o : ../../Archive/7z/7zHeader.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zHeader.cpp
++7zIn.o : ../../Archive/7z/7zIn.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zIn.cpp
++7zMethodID.o : ../../Archive/7z/7zMethodID.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zMethodID.cpp
++LZMADecoder.o : ../../Compress/LZMA/LZMADecoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/LZMA/LZMADecoder.cpp
++BranchCoder.o : ../../Compress/Branch/BranchCoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Branch/BranchCoder.cpp
++x86.o : ../../Compress/Branch/x86.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Branch/x86.cpp
++x86_2.o : ../../Compress/Branch/x86_2.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Branch/x86_2.cpp
++PPMDDecoder.o : ../../Compress/PPMD/PPMDDecoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/PPMD/PPMDDecoder.cpp
++LZOutWindow.o : ../../Compress/LZ/LZOutWindow.cpp
++ $(CXX) $(CFLAGS) ../../Compress/LZ/LZOutWindow.cpp
++CopyCoder.o : ../../Compress/Copy/CopyCoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Copy/CopyCoder.cpp
++Error.o : ../../../Windows/Error.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/Error.cpp
++FileDir.o : ../../../Windows/FileDir.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileDir.cpp
++FileFind.o : ../../../Windows/FileFind.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileFind.cpp
++FileIO.o : ../../../Windows/FileIO.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileIO.cpp
++FileName.o : ../../../Windows/FileName.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileName.cpp
++PropVariant.o : ../../../Windows/PropVariant.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/PropVariant.cpp
++PropVariantConversions.o : ../../../Windows/PropVariantConversions.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/PropVariantConversions.cpp
++Synchronization.o : ../../../Windows/Synchronization.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/Synchronization.cpp
++Alloc.o : ../../../Common/Alloc.cpp
++ $(CXX) $(CFLAGS) ../../../Common/Alloc.cpp
++CRC.o : ../../../Common/CRC.cpp
++ $(CXX) $(CFLAGS) ../../../Common/CRC.cpp
++IntToString.o : ../../../Common/IntToString.cpp
++ $(CXX) $(CFLAGS) ../../../Common/IntToString.cpp
++StdInStream.o : ../../../Common/StdInStream.cpp
++ $(CXX) $(CFLAGS) ../../../Common/StdInStream.cpp
++StdOutStream.o : ../../../Common/StdOutStream.cpp
++ $(CXX) $(CFLAGS) ../../../Common/StdOutStream.cpp
++String.o : ../../../Common/String.cpp
++ $(CXX) $(CFLAGS) ../../../Common/String.cpp
++StringConvert.o : ../../../Common/StringConvert.cpp
++ $(CXX) $(CFLAGS) ../../../Common/StringConvert.cpp
++Vector.o : ../../../Common/Vector.cpp
++ $(CXX) $(CFLAGS) ../../../Common/Vector.cpp
++Wildcard.o : ../../../Common/Wildcard.cpp
++ $(CXX) $(CFLAGS) ../../../Common/Wildcard.cpp
++FilePathAutoRename.o : ../../Common/FilePathAutoRename.cpp
++ $(CXX) $(CFLAGS) ../../Common/FilePathAutoRename.cpp
++FileStreams.o : ../../Common/FileStreams.cpp
++ $(CXX) $(CFLAGS) ../../Common/FileStreams.cpp
++InBuffer.o : ../../Common/InBuffer.cpp
++ $(CXX) $(CFLAGS) ../../Common/InBuffer.cpp
++LimitedStreams.o : ../../Common/LimitedStreams.cpp
++ $(CXX) $(CFLAGS) ../../Common/LimitedStreams.cpp
++LockedStream.o : ../../Common/LockedStream.cpp
++ $(CXX) $(CFLAGS) ../../Common/LockedStream.cpp
++OffsetStream.o : ../../Common/OffsetStream.cpp
++ $(CXX) $(CFLAGS) ../../Common/OffsetStream.cpp
++OutBuffer.o : ../../Common/OutBuffer.cpp
++ $(CXX) $(CFLAGS) ../../Common/OutBuffer.cpp
++ProgressUtils.o : ../../Common/ProgressUtils.cpp
++ $(CXX) $(CFLAGS) ../../Common/ProgressUtils.cpp
++StreamUtils.o : ../../Common/StreamUtils.cpp
++ $(CXX) $(CFLAGS) ../../Common/StreamUtils.cpp
++StreamBinder.o : ../../Common/StreamBinder.cpp
++ $(CXX) $(CFLAGS) ../../Common/StreamBinder.cpp
++StreamObjects.o : ../../Common/StreamObjects.cpp
++ $(CXX) $(CFLAGS) ../../Common/StreamObjects.cpp
++ArchiveExtractCallback.o : ../../UI/Common/ArchiveExtractCallback.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ArchiveExtractCallback.cpp
++ArchiveOpenCallback.o : ../../UI/Common/ArchiveOpenCallback.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ArchiveOpenCallback.cpp
++ArchiverInfo.o : ../../UI/Common/ArchiverInfo.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ArchiverInfo.cpp
++DefaultName.o : ../../UI/Common/DefaultName.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/DefaultName.cpp
++Extract.o : ../../UI/Common/Extract.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/Extract.cpp
++ExtractingFilePath.o : ../../UI/Common/ExtractingFilePath.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ExtractingFilePath.cpp
++OpenArchive.o : ../../UI/Common/OpenArchive.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/OpenArchive.cpp
++PropIDUtils.o : ../../UI/Common/PropIDUtils.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/PropIDUtils.cpp
++Un7Zip.o : ./Un7Zip.cpp
++ $(CXX) $(CFLAGS) ./Un7Zip.cpp
+diff -ruN p7zip_4.27.orig/7zip/Bundles/Un7Zip/testlib.c p7zip_4.27/7zip/Bundles/Un7Zip/testlib.c
+--- p7zip_4.27.orig/7zip/Bundles/Un7Zip/testlib.c 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/Bundles/Un7Zip/testlib.c 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,7 @@
++
++#include "u7zip.h"
++
++int main(int argc, char *argv[])
++{
++ return un7zip(argv[1], "/tmp", 0);
++}
+diff -ruN p7zip_4.27.orig/7zip/Bundles/Un7Zip/u7zip.h p7zip_4.27/7zip/Bundles/Un7Zip/u7zip.h
+--- p7zip_4.27.orig/7zip/Bundles/Un7Zip/u7zip.h 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/Bundles/Un7Zip/u7zip.h 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,19 @@
++#ifndef __UN7ZIP_H
++#define __UN7ZIP_H
++
++#define LIST_7Z 0
++#define TEST_7Z 1
++#define EXTRACT_7Z 2
++
++#define S_OK 0x00000000L
++#define S_FALSE 0x00000001L
++#define E_NOTIMPL 0x80004001L
++#define E_NOINTERFACE 0x80004002L
++#define E_ABORT 0x80004004L
++#define E_FAIL 0x80004005L
++#define E_OUTOFMEMORY 0x8007000EL
++#define E_INVALIDARG 0x80070057L
++
++int un7zip(char *name, char *dir, int command);
++
++#endif
+diff -ruN p7zip_4.27.orig/7zip/Bundles/Un7Zip/Un7Zip.cpp p7zip_4.27/7zip/Bundles/Un7Zip/Un7Zip.cpp
+--- p7zip_4.27.orig/7zip/Bundles/Un7Zip/Un7Zip.cpp 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/Bundles/Un7Zip/Un7Zip.cpp 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,127 @@
++// Un7Zip.cpp
++
++#include "StdAfx.h"
++
++#include "Common/MyInitGuid.h"
++
++#include "Common/StdOutStream.h"
++#include "Common/Wildcard.h"
++#include "Common/StringConvert.h"
++#include "Common/MyCom.h"
++#include "Common/Exception.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileName.h"
++#include "Windows/Defs.h"
++
++#include "../../IPassword.h"
++#include "../../ICoder.h"
++
++#include "../../UI/Common/OpenArchive.h"
++#include "../../UI/Common/DefaultName.h"
++#include "../../UI/Common/ExitCode.h"
++#include "../../UI/Common/Extract.h"
++
++#include "../../UI/Console/List.h"
++#include "../../UI/Console/OpenCallbackConsole.h"
++#include "../../UI/Console/ExtractCallbackNULL.h"
++
++
++static int Un7Zip(char *name, char *dir, int command);
++
++extern "C" {
++
++int un7zip(char *name, char *dir, int command)
++{
++ return Un7Zip(name, dir, command);
++}
++
++}
++
++using namespace NWindows;
++using namespace NFile;
++
++static const wchar_t *kUniversalWildcard = L"*";
++static bool AddNameToCensor(NWildcard::CCensor &wildcardCensor)
++{
++ wildcardCensor.AddItem(true, kUniversalWildcard, false);
++ return true;
++}
++
++static int Un7Zip(char *name, char *dir, int commands)
++{
++
++ CStdOutStream *g_StdStream = &g_StdOut;
++
++ NWildcard::CCensor wildcardCensor;
++ AddNameToCensor(wildcardCensor);
++ bool passwordEnabled = 1;
++ UString password = L"null";
++
++ UString outputDir= MultiByteToUnicodeString(dir);
++ UString archiveName = MultiByteToUnicodeString(name);
++
++ NFind::CFileInfoW archiveFileInfo;
++
++ if (!NFind::FindFile(archiveName, archiveFileInfo))
++ return S_FALSE;
++ if (archiveFileInfo.IsDirectory())
++ return S_FALSE;
++
++ {
++
++ UStringVector v1, v2;
++ v1.Add(archiveName);
++ v2.Add(archiveName);
++
++ const NWildcard::CCensorNode &wildcardCensorHead =
++ wildcardCensor.Pairs.Front().Head;
++
++ if(commands > 0)
++ {
++ CExtractCallbackNULL *ecs = new CExtractCallbackNULL;
++ CMyComPtr<IFolderArchiveExtractCallback> extractCallback = ecs;
++ ecs->OutStream = g_StdStream;
++ ecs->PasswordIsDefined = passwordEnabled;
++ ecs->Password = password;
++ ecs->Init();
++
++ COpenCallbackConsole openCallback;
++ openCallback.OutStream = g_StdStream;
++ openCallback.PasswordIsDefined = passwordEnabled;
++ openCallback.Password = password;
++
++ CExtractOptions eo;
++ eo.StdOutMode = false;
++ eo.PathMode = NExtract::NPathMode::kFullPathnames;
++ if(commands == 1)
++ eo.TestMode = 1;
++ else
++ eo.TestMode = 0;
++ eo.OverwriteMode = NExtract::NOverwriteMode::kWithoutPrompt;
++ eo.OutputDir = outputDir;
++ eo.YesToAll = 1;
++
++ HRESULT result = DecompressArchives(
++ v1, v2,
++ wildcardCensorHead,
++ eo, &openCallback, ecs);
++ if (ecs->NumArchiveErrors != 0 || ecs->NumFileErrors != 0)
++ return S_FALSE;
++ if (result != S_OK)
++ return S_FALSE;
++ }
++ else
++ {
++ HRESULT result = ListArchives(
++ v1, v2,
++ wildcardCensorHead,
++ true,
++ passwordEnabled,
++ password);
++ if (result != S_OK)
++ return S_FALSE;;
++ }
++ }
++ return S_OK;
++}
+diff -ruN p7zip_4.27.orig/7zip/UI/Console/ExtractCallbackNULL.cpp p7zip_4.27/7zip/UI/Console/ExtractCallbackNULL.cpp
+--- p7zip_4.27.orig/7zip/UI/Console/ExtractCallbackNULL.cpp 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/UI/Console/ExtractCallbackNULL.cpp 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,132 @@
++// ExtractCallbackNULL.cpp
++
++#include "StdAfx.h"
++
++#include "ExtractCallbackNULL.h"
++#include "UserInputUtils.h"
++#include "ConsoleClose.h"
++
++#include "Common/Wildcard.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileFind.h"
++#include "Windows/Time.h"
++#include "Windows/Defs.h"
++#include "Windows/PropVariant.h"
++#include "Windows/Error.h"
++#include "Windows/PropVariantConversions.h"
++
++#include "../../Common/FilePathAutoRename.h"
++
++#include "../Common/ExtractingFilePath.h"
++
++using namespace NWindows;
++using namespace NFile;
++using namespace NDirectory;
++
++STDMETHODIMP CExtractCallbackNULL::SetTotal(UInt64 size)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetCompleted(const UInt64 *completeValue)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::AskOverwrite(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer)
++{
++
++ NUserAnswerMode::EEnum overwriteAnswer = ScanUserYesNoAllQuit(OutStream);
++
++ switch(overwriteAnswer)
++ {
++ case NUserAnswerMode::kQuit:
++ return E_ABORT;
++ case NUserAnswerMode::kNo:
++ *answer = NOverwriteAnswer::kNo;
++ break;
++ case NUserAnswerMode::kNoAll:
++ *answer = NOverwriteAnswer::kNoToAll;
++ break;
++ case NUserAnswerMode::kYesAll:
++ *answer = NOverwriteAnswer::kYesToAll;
++ break;
++ case NUserAnswerMode::kYes:
++ *answer = NOverwriteAnswer::kYes;
++ break;
++ case NUserAnswerMode::kAutoRename:
++ *answer = NOverwriteAnswer::kAutoRename;
++ break;
++ default:
++ return E_FAIL;
++ }
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::PrepareOperation(const wchar_t *name, Int32 askExtractMode, const UInt64 *position)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::MessageError(const wchar_t *message)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetOperationResult(Int32 operationResult)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::CryptoGetTextPassword(BSTR *password)
++{
++ if (!PasswordIsDefined)
++ {
++ Password = GetPassword(OutStream);
++ PasswordIsDefined = true;
++ }
++ CMyComBSTR tempName(Password);
++ *password = tempName.Detach();
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::BeforeOpen(const wchar_t *name)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::OpenResult(const wchar_t *name, HRESULT result)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ThereAreNoFiles()
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ExtractResult(HRESULT result)
++{
++ if (result == S_OK)
++ return result;
++ if (result == E_ABORT)
++ return result;
++ if (result == E_OUTOFMEMORY)
++ return result;
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::SetPassword(const UString &password)
++{
++ PasswordIsDefined = true;
++ Password = password;
++ return S_OK;
++}
+diff -ruN p7zip_4.27.orig/7zip/UI/Console/ExtractCallbackNULL.h p7zip_4.27/7zip/UI/Console/ExtractCallbackNULL.h
+--- p7zip_4.27.orig/7zip/UI/Console/ExtractCallbackNULL.h 1970-01-01 03:00:00.000000000 +0300
++++ p7zip_4.27/7zip/UI/Console/ExtractCallbackNULL.h 2005-09-23 09:48:09.000000000 +0400
+@@ -0,0 +1,65 @@
++// ExtractCallbackNULL.h
++
++#ifndef __EXTRACTCALLBACKCONSOLE_H
++#define __EXTRACTCALLBACKCONSOLE_H
++
++#include "Common/String.h"
++#include "Common/StdOutStream.h"
++#include "../../Common/FileStreams.h"
++#include "../../IPassword.h"
++#include "../../Archive/IArchive.h"
++#include "../Common/ArchiveExtractCallback.h"
++
++class CExtractCallbackNULL:
++ public IExtractCallbackUI,
++ public ICryptoGetTextPassword,
++ public CMyUnknownImp
++{
++public:
++ MY_UNKNOWN_IMP2(IFolderArchiveExtractCallback, ICryptoGetTextPassword)
++
++ STDMETHOD(SetTotal)(UInt64 total);
++ STDMETHOD(SetCompleted)(const UInt64 *completeValue);
++
++ // IFolderArchiveExtractCallback
++ STDMETHOD(AskOverwrite)(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer);
++ STDMETHOD (PrepareOperation)(const wchar_t *name, Int32 askExtractMode, const UInt64 *position);
++
++ STDMETHOD(MessageError)(const wchar_t *message);
++ STDMETHOD(SetOperationResult)(Int32 operationResult);
++
++ // ICryptoGetTextPassword
++ STDMETHOD(CryptoGetTextPassword)(BSTR *password);
++
++ HRESULT BeforeOpen(const wchar_t *name);
++ HRESULT OpenResult(const wchar_t *name, HRESULT result);
++ HRESULT ThereAreNoFiles();
++ HRESULT ExtractResult(HRESULT result);
++
++ HRESULT SetPassword(const UString &password);
++
++public:
++ bool PasswordIsDefined;
++ UString Password;
++
++ UInt64 NumArchives;
++ UInt64 NumArchiveErrors;
++ UInt64 NumFileErrors;
++ UInt64 NumFileErrorsInCurrentArchive;
++
++ CStdOutStream *OutStream;
++
++ void CExtractCallbackNULL::Init()
++ {
++ NumArchives = 0;
++ NumArchiveErrors = 0;
++ NumFileErrors = 0;
++ NumFileErrorsInCurrentArchive = 0;
++ }
++
++};
++
++#endif
diff --git a/app-arch/p7zip/files/p7zip_4.44-libun7zip.patch b/app-arch/p7zip/files/p7zip_4.44-libun7zip.patch
new file mode 100644
index 0000000..e3216c4
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_4.44-libun7zip.patch
@@ -0,0 +1,599 @@
+diff -dPNur p7zip_4.44/CPP/7zip/Bundles/Un7Zip/makefile p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/makefile
+--- p7zip_4.44/CPP/7zip/Bundles/Un7Zip/makefile 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/makefile 2007-03-29 13:01:21.000000000 +0200
+@@ -0,0 +1,84 @@
++PROG=libun7zip.so
++
++LOCAL_FLAGS= -I../../../Common/ -I../../../myWindows/ -I../../../ -I../../../include_windows/ \
++-DCOMPRESS_BCJ2 -DEXTRACT_ONLY -DEXCLUDE_COM -DNO_REGISTRY -DFORMAT_7Z \
++-DCOMPRESS_LZMA -DCOMPRESS_BCJ_X86 -DCOMPRESS_COPY -DCOMPRESS_PPMD -D_SFX $(RPM_OPT_FLAGS)
++
++include ../../../../makefile.machine
++
++LOCAL_SHARED=$(LINK_SHARED)
++LIBS=$(LOCAL_LIBS_DLL)
++
++MY_WINDOWS= \
++ $(MY_HOME)/myGetTickCount.o \
++ $(MY_HOME)/wine_date_and_time.o \
++
++OBJS=\
++CoderMixer2.o\
++CoderMixer2MT.o\
++CoderMixer2ST.o\
++CrossThreadProgress.o\
++FilterCoder.o\
++ItemNameUtils.o\
++OutStreamWithCRC.o\
++ConsoleClose.o\
++ExtractCallbackConsole.o\
++ExtractCallbackNULL.o\
++List.o\
++OpenCallbackConsole.o\
++UserInputUtils.o\
++7zDecode.o\
++7zExtract.o\
++7zFolderOutStream.o\
++7zHandler.o\
++7zHeader.o\
++7zIn.o\
++7zMethodID.o\
++LZMADecoder.o\
++BranchCoder.o\
++x86.o\
++x86_2.o\
++PPMDDecoder.o\
++LZOutWindow.o\
++CopyCoder.o\
++Error.o\
++FileDir.o\
++FileFind.o\
++FileIO.o\
++FileName.o\
++PropVariant.o\
++PropVariantConversions.o\
++Synchronization.o\
++../../../Common/MyWindows.o\
++../../../Common/Alloc.o\
++../../../Common/StdInStream.o\
++../../../Common/StdOutStream.o\
++../../../Common/StringConvert.o\
++../../../Common/String.o\
++../../../Common/CRC.o\
++../../../Common/Vector.o\
++../../../Common/Wildcard.o\
++../../../Common/IntToString.o\
++FilePathAutoRename.o\
++FileStreams.o\
++InBuffer.o\
++LimitedStreams.o\
++LockedStream.o\
++OffsetStream.o\
++OutBuffer.o\
++ProgressUtils.o\
++StreamBinder.o\
++StreamObjects.o\
++StreamUtils.o\
++ArchiveExtractCallback.o\
++ArchiveOpenCallback.o\
++ArchiverInfo.o\
++DefaultName.o\
++Extract.o\
++ExtractingFilePath.o\
++OpenArchive.o\
++PropIDUtils.o\
++Un7Zip.o
++
++include ../../../../makefile.glb
++
+diff -dPNur p7zip_4.44/CPP/7zip/Bundles/Un7Zip/makefile.depend p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/makefile.depend
+--- p7zip_4.44/CPP/7zip/Bundles/Un7Zip/makefile.depend 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/makefile.depend 2007-03-29 13:01:21.000000000 +0200
+@@ -0,0 +1 @@
++
+\ No newline at end of file
+diff -dPNur p7zip_4.44/CPP/7zip/Bundles/Un7Zip/makefile.list p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/makefile.list
+--- p7zip_4.44/CPP/7zip/Bundles/Un7Zip/makefile.list 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/makefile.list 2007-03-29 13:01:21.000000000 +0200
+@@ -0,0 +1,128 @@
++CoderMixer2.o : ../../Archive/Common/CoderMixer2.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CoderMixer2.cpp
++CoderMixer2MT.o : ../../Archive/Common/CoderMixer2MT.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CoderMixer2MT.cpp
++CoderMixer2ST.o : ../../Archive/Common/CoderMixer2ST.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CoderMixer2ST.cpp
++CrossThreadProgress.o : ../../Archive/Common/CrossThreadProgress.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/CrossThreadProgress.cpp
++FilterCoder.o : ../../Archive/Common/FilterCoder.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/FilterCoder.cpp
++ItemNameUtils.o : ../../Archive/Common/ItemNameUtils.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/ItemNameUtils.cpp
++OutStreamWithCRC.o : ../../Archive/Common/OutStreamWithCRC.cpp
++ $(CXX) $(CFLAGS) ../../Archive/Common/OutStreamWithCRC.cpp
++ConsoleClose.o : ../../UI/Console/ConsoleClose.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ConsoleClose.cpp
++ExtractCallbackConsole.o : ../../UI/Console/ExtractCallbackConsole.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ExtractCallbackConsole.cpp
++ExtractCallbackNULL.o : ../../UI/Console/ExtractCallbackNULL.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ExtractCallbackNULL.cpp
++List.o : ../../UI/Console/List.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/List.cpp
++OpenCallbackConsole.o : ../../UI/Console/OpenCallbackConsole.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/OpenCallbackConsole.cpp
++UserInputUtils.o : ../../UI/Console/UserInputUtils.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/UserInputUtils.cpp
++7zDecode.o : ../../Archive/7z/7zDecode.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zDecode.cpp
++7zExtract.o : ../../Archive/7z/7zExtract.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zExtract.cpp
++7zFolderOutStream.o : ../../Archive/7z/7zFolderOutStream.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zFolderOutStream.cpp
++7zHandler.o : ../../Archive/7z/7zHandler.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zHandler.cpp
++7zHeader.o : ../../Archive/7z/7zHeader.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zHeader.cpp
++7zIn.o : ../../Archive/7z/7zIn.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zIn.cpp
++7zMethodID.o : ../../Archive/7z/7zMethodID.cpp
++ $(CXX) $(CFLAGS) ../../Archive/7z/7zMethodID.cpp
++LZMADecoder.o : ../../Compress/LZMA/LZMADecoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/LZMA/LZMADecoder.cpp
++BranchCoder.o : ../../Compress/Branch/BranchCoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Branch/BranchCoder.cpp
++x86.o : ../../Compress/Branch/x86.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Branch/x86.cpp
++x86_2.o : ../../Compress/Branch/x86_2.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Branch/x86_2.cpp
++PPMDDecoder.o : ../../Compress/PPMD/PPMDDecoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/PPMD/PPMDDecoder.cpp
++LZOutWindow.o : ../../Compress/LZ/LZOutWindow.cpp
++ $(CXX) $(CFLAGS) ../../Compress/LZ/LZOutWindow.cpp
++CopyCoder.o : ../../Compress/Copy/CopyCoder.cpp
++ $(CXX) $(CFLAGS) ../../Compress/Copy/CopyCoder.cpp
++Error.o : ../../../Windows/Error.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/Error.cpp
++FileDir.o : ../../../Windows/FileDir.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileDir.cpp
++FileFind.o : ../../../Windows/FileFind.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileFind.cpp
++FileIO.o : ../../../Windows/FileIO.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileIO.cpp
++FileName.o : ../../../Windows/FileName.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/FileName.cpp
++PropVariant.o : ../../../Windows/PropVariant.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/PropVariant.cpp
++PropVariantConversions.o : ../../../Windows/PropVariantConversions.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/PropVariantConversions.cpp
++Synchronization.o : ../../../Windows/Synchronization.cpp
++ $(CXX) $(CFLAGS) ../../../Windows/Synchronization.cpp
++Alloc.o : ../../../Common/Alloc.cpp
++ $(CXX) $(CFLAGS) ../../../Common/Alloc.cpp
++CRC.o : ../../../Common/CRC.cpp
++ $(CXX) $(CFLAGS) ../../../Common/CRC.cpp
++IntToString.o : ../../../Common/IntToString.cpp
++ $(CXX) $(CFLAGS) ../../../Common/IntToString.cpp
++StdInStream.o : ../../../Common/StdInStream.cpp
++ $(CXX) $(CFLAGS) ../../../Common/StdInStream.cpp
++StdOutStream.o : ../../../Common/StdOutStream.cpp
++ $(CXX) $(CFLAGS) ../../../Common/StdOutStream.cpp
++String.o : ../../../Common/String.cpp
++ $(CXX) $(CFLAGS) ../../../Common/String.cpp
++StringConvert.o : ../../../Common/StringConvert.cpp
++ $(CXX) $(CFLAGS) ../../../Common/StringConvert.cpp
++Vector.o : ../../../Common/Vector.cpp
++ $(CXX) $(CFLAGS) ../../../Common/Vector.cpp
++Wildcard.o : ../../../Common/Wildcard.cpp
++ $(CXX) $(CFLAGS) ../../../Common/Wildcard.cpp
++FilePathAutoRename.o : ../../Common/FilePathAutoRename.cpp
++ $(CXX) $(CFLAGS) ../../Common/FilePathAutoRename.cpp
++FileStreams.o : ../../Common/FileStreams.cpp
++ $(CXX) $(CFLAGS) ../../Common/FileStreams.cpp
++InBuffer.o : ../../Common/InBuffer.cpp
++ $(CXX) $(CFLAGS) ../../Common/InBuffer.cpp
++LimitedStreams.o : ../../Common/LimitedStreams.cpp
++ $(CXX) $(CFLAGS) ../../Common/LimitedStreams.cpp
++LockedStream.o : ../../Common/LockedStream.cpp
++ $(CXX) $(CFLAGS) ../../Common/LockedStream.cpp
++OffsetStream.o : ../../Common/OffsetStream.cpp
++ $(CXX) $(CFLAGS) ../../Common/OffsetStream.cpp
++OutBuffer.o : ../../Common/OutBuffer.cpp
++ $(CXX) $(CFLAGS) ../../Common/OutBuffer.cpp
++ProgressUtils.o : ../../Common/ProgressUtils.cpp
++ $(CXX) $(CFLAGS) ../../Common/ProgressUtils.cpp
++StreamUtils.o : ../../Common/StreamUtils.cpp
++ $(CXX) $(CFLAGS) ../../Common/StreamUtils.cpp
++StreamBinder.o : ../../Common/StreamBinder.cpp
++ $(CXX) $(CFLAGS) ../../Common/StreamBinder.cpp
++StreamObjects.o : ../../Common/StreamObjects.cpp
++ $(CXX) $(CFLAGS) ../../Common/StreamObjects.cpp
++ArchiveExtractCallback.o : ../../UI/Common/ArchiveExtractCallback.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ArchiveExtractCallback.cpp
++ArchiveOpenCallback.o : ../../UI/Common/ArchiveOpenCallback.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ArchiveOpenCallback.cpp
++ArchiverInfo.o : ../../UI/Common/ArchiverInfo.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ArchiverInfo.cpp
++DefaultName.o : ../../UI/Common/DefaultName.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/DefaultName.cpp
++Extract.o : ../../UI/Common/Extract.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/Extract.cpp
++ExtractingFilePath.o : ../../UI/Common/ExtractingFilePath.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/ExtractingFilePath.cpp
++OpenArchive.o : ../../UI/Common/OpenArchive.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/OpenArchive.cpp
++PropIDUtils.o : ../../UI/Common/PropIDUtils.cpp
++ $(CXX) $(CFLAGS) ../../UI/Common/PropIDUtils.cpp
++Un7Zip.o : ./Un7Zip.cpp
++ $(CXX) $(CFLAGS) ./Un7Zip.cpp
+diff -dPNur p7zip_4.44/CPP/7zip/Bundles/Un7Zip/testlib.c p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/testlib.c
+--- p7zip_4.44/CPP/7zip/Bundles/Un7Zip/testlib.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/testlib.c 2007-03-29 13:01:21.000000000 +0200
+@@ -0,0 +1,7 @@
++
++#include "u7zip.h"
++
++int main(int argc, char *argv[])
++{
++ return un7zip(argv[1], "/tmp", 0);
++}
+diff -dPNur p7zip_4.44/CPP/7zip/Bundles/Un7Zip/u7zip.h p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/u7zip.h
+--- p7zip_4.44/CPP/7zip/Bundles/Un7Zip/u7zip.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/u7zip.h 2007-03-29 13:01:21.000000000 +0200
+@@ -0,0 +1,19 @@
++#ifndef __UN7ZIP_H
++#define __UN7ZIP_H
++
++#define LIST_7Z 0
++#define TEST_7Z 1
++#define EXTRACT_7Z 2
++
++#define S_OK 0x00000000L
++#define S_FALSE 0x00000001L
++#define E_NOTIMPL 0x80004001L
++#define E_NOINTERFACE 0x80004002L
++#define E_ABORT 0x80004004L
++#define E_FAIL 0x80004005L
++#define E_OUTOFMEMORY 0x8007000EL
++#define E_INVALIDARG 0x80070057L
++
++int un7zip(char *name, char *dir, int command);
++
++#endif
+diff -dPNur p7zip_4.44/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp
+--- p7zip_4.44/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp 2007-03-29 12:50:00.000000000 +0200
+@@ -0,0 +1,130 @@
++// Un7Zip.cpp
++
++#include "StdAfx.h"
++
++#include "Common/MyInitGuid.h"
++
++#include "Common/StdOutStream.h"
++#include "Common/Wildcard.h"
++#include "Common/StringConvert.h"
++#include "Common/MyCom.h"
++#include "Common/Exception.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileName.h"
++#include "Windows/Defs.h"
++
++#include "../../IPassword.h"
++#include "../../ICoder.h"
++
++#include "../../UI/Common/OpenArchive.h"
++#include "../../UI/Common/DefaultName.h"
++#include "../../UI/Common/ExitCode.h"
++#include "../../UI/Common/Extract.h"
++
++#include "../../UI/Console/List.h"
++#include "../../UI/Console/OpenCallbackConsole.h"
++#include "../../UI/Console/ExtractCallbackNULL.h"
++
++
++static int Un7Zip(char *name, char *dir, int command);
++
++extern "C" {
++
++int un7zip(char *name, char *dir, int command)
++{
++ return Un7Zip(name, dir, command);
++}
++
++}
++
++using namespace NWindows;
++using namespace NFile;
++
++static const wchar_t *kUniversalWildcard = L"*";
++static bool AddNameToCensor(NWildcard::CCensor &wildcardCensor)
++{
++ wildcardCensor.AddItem(true, kUniversalWildcard, false);
++ return true;
++}
++
++static int Un7Zip(char *name, char *dir, int commands)
++{
++
++ CStdOutStream *g_StdStream = &g_StdOut;
++
++ NWildcard::CCensor wildcardCensor;
++ AddNameToCensor(wildcardCensor);
++ bool passwordEnabled = 1;
++ UString password = L"null";
++
++ UString outputDir= MultiByteToUnicodeString(dir);
++ UString archiveName = MultiByteToUnicodeString(name);
++
++ NFind::CFileInfoW archiveFileInfo;
++
++ if (!NFind::FindFile(archiveName, archiveFileInfo))
++ return S_FALSE;
++ if (archiveFileInfo.IsDirectory())
++ return S_FALSE;
++
++ {
++
++ UStringVector v1, v2;
++ v1.Add(archiveName);
++ v2.Add(archiveName);
++
++ const NWildcard::CCensorNode &wildcardCensorHead =
++ wildcardCensor.Pairs.Front().Head;
++
++ if(commands > 0)
++ {
++ CExtractCallbackNULL *ecs = new CExtractCallbackNULL;
++ CMyComPtr<IFolderArchiveExtractCallback> extractCallback = ecs;
++ ecs->OutStream = g_StdStream;
++ ecs->PasswordIsDefined = passwordEnabled;
++ ecs->Password = password;
++ ecs->Init();
++
++ COpenCallbackConsole openCallback;
++ openCallback.OutStream = g_StdStream;
++ openCallback.PasswordIsDefined = passwordEnabled;
++ openCallback.Password = password;
++
++ CExtractOptions eo;
++ eo.StdOutMode = false;
++ eo.PathMode = NExtract::NPathMode::kFullPathnames;
++ if(commands == 1)
++ eo.TestMode = 1;
++ else
++ eo.TestMode = 0;
++ eo.OverwriteMode = NExtract::NOverwriteMode::kWithoutPrompt;
++ eo.OutputDir = outputDir;
++ eo.YesToAll = 1;
++
++ UString errorMessage;
++ HRESULT result = DecompressArchives(
++ v1, v2,
++ wildcardCensorHead,
++ eo, &openCallback, ecs, errorMessage);
++
++ if (ecs->NumArchiveErrors != 0 || ecs->NumFileErrors != 0)
++ return S_FALSE;
++ if (result != S_OK)
++ return S_FALSE;
++ }
++ else
++ {
++ HRESULT result = ListArchives(
++ v1, v2,
++ wildcardCensorHead,
++ true,
++ false,
++ passwordEnabled,
++ password);
++ if (result != S_OK)
++ return S_FALSE;;
++ }
++ }
++ return S_OK;
++}
+diff -dPNur p7zip_4.44/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp p7zip_4.44-new/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp
+--- p7zip_4.44/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp 2007-03-29 12:55:02.000000000 +0200
+@@ -0,0 +1,132 @@
++// ExtractCallbackNULL.cpp
++
++#include "StdAfx.h"
++
++#include "ExtractCallbackNULL.h"
++#include "UserInputUtils.h"
++#include "ConsoleClose.h"
++
++#include "Common/Wildcard.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileFind.h"
++#include "Windows/Time.h"
++#include "Windows/Defs.h"
++#include "Windows/PropVariant.h"
++#include "Windows/Error.h"
++#include "Windows/PropVariantConversions.h"
++
++#include "../../Common/FilePathAutoRename.h"
++
++#include "../Common/ExtractingFilePath.h"
++
++using namespace NWindows;
++using namespace NFile;
++using namespace NDirectory;
++
++STDMETHODIMP CExtractCallbackNULL::SetTotal(UInt64 size)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetCompleted(const UInt64 *completeValue)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::AskOverwrite(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer)
++{
++
++ NUserAnswerMode::EEnum overwriteAnswer = ScanUserYesNoAllQuit(OutStream);
++
++ switch(overwriteAnswer)
++ {
++ case NUserAnswerMode::kQuit:
++ return E_ABORT;
++ case NUserAnswerMode::kNo:
++ *answer = NOverwriteAnswer::kNo;
++ break;
++ case NUserAnswerMode::kNoAll:
++ *answer = NOverwriteAnswer::kNoToAll;
++ break;
++ case NUserAnswerMode::kYesAll:
++ *answer = NOverwriteAnswer::kYesToAll;
++ break;
++ case NUserAnswerMode::kYes:
++ *answer = NOverwriteAnswer::kYes;
++ break;
++ case NUserAnswerMode::kAutoRename:
++ *answer = NOverwriteAnswer::kAutoRename;
++ break;
++ default:
++ return E_FAIL;
++ }
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::PrepareOperation(const wchar_t *name, Int32 askExtractMode, const UInt64 *position)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::MessageError(const wchar_t *message)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetOperationResult(Int32 operationResult, bool encrypted)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::CryptoGetTextPassword(BSTR *password)
++{
++ if (!PasswordIsDefined)
++ {
++ Password = GetPassword(OutStream);
++ PasswordIsDefined = true;
++ }
++ CMyComBSTR tempName(Password);
++ *password = tempName.Detach();
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::BeforeOpen(const wchar_t *name)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::OpenResult(const wchar_t *name, HRESULT result, bool encrypted)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ThereAreNoFiles()
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ExtractResult(HRESULT result)
++{
++ if (result == S_OK)
++ return result;
++ if (result == E_ABORT)
++ return result;
++ if (result == E_OUTOFMEMORY)
++ return result;
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::SetPassword(const UString &password)
++{
++ PasswordIsDefined = true;
++ Password = password;
++ return S_OK;
++}
+diff -dPNur p7zip_4.44/CPP/7zip/UI/Console/ExtractCallbackNULL.h p7zip_4.44-new/CPP/7zip/UI/Console/ExtractCallbackNULL.h
+--- p7zip_4.44/CPP/7zip/UI/Console/ExtractCallbackNULL.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.44-new/CPP/7zip/UI/Console/ExtractCallbackNULL.h 2007-03-29 12:55:12.000000000 +0200
+@@ -0,0 +1,65 @@
++// ExtractCallbackNULL.h
++
++#ifndef __EXTRACTCALLBACKCONSOLE_H
++#define __EXTRACTCALLBACKCONSOLE_H
++
++#include "Common/String.h"
++#include "Common/StdOutStream.h"
++#include "../../Common/FileStreams.h"
++#include "../../IPassword.h"
++#include "../../Archive/IArchive.h"
++#include "../Common/ArchiveExtractCallback.h"
++
++class CExtractCallbackNULL:
++ public IExtractCallbackUI,
++ public ICryptoGetTextPassword,
++ public CMyUnknownImp
++{
++public:
++ MY_UNKNOWN_IMP2(IFolderArchiveExtractCallback, ICryptoGetTextPassword)
++
++ STDMETHOD(SetTotal)(UInt64 total);
++ STDMETHOD(SetCompleted)(const UInt64 *completeValue);
++
++ // IFolderArchiveExtractCallback
++ STDMETHOD(AskOverwrite)(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer);
++ STDMETHOD (PrepareOperation)(const wchar_t *name, Int32 askExtractMode, const UInt64 *position);
++
++ STDMETHOD(MessageError)(const wchar_t *message);
++ STDMETHOD(SetOperationResult)(Int32 operationResult, bool encrypted);
++
++ // ICryptoGetTextPassword
++ STDMETHOD(CryptoGetTextPassword)(BSTR *password);
++
++ HRESULT BeforeOpen(const wchar_t *name);
++ HRESULT OpenResult(const wchar_t *name, HRESULT result, bool encrypted);
++ HRESULT ThereAreNoFiles();
++ HRESULT ExtractResult(HRESULT result);
++
++ HRESULT SetPassword(const UString &password);
++
++public:
++ bool PasswordIsDefined;
++ UString Password;
++
++ UInt64 NumArchives;
++ UInt64 NumArchiveErrors;
++ UInt64 NumFileErrors;
++ UInt64 NumFileErrorsInCurrentArchive;
++
++ CStdOutStream *OutStream;
++
++ void Init()
++ {
++ NumArchives = 0;
++ NumArchiveErrors = 0;
++ NumFileErrors = 0;
++ NumFileErrorsInCurrentArchive = 0;
++ }
++
++};
++
++#endif
diff --git a/app-arch/p7zip/files/p7zip_4.57-ds-rusxmms.patch b/app-arch/p7zip/files/p7zip_4.57-ds-rusxmms.patch
new file mode 100644
index 0000000..0913c13
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_4.57-ds-rusxmms.patch
@@ -0,0 +1,336 @@
+diff -dPNur p7zip_4.57/C/rccrecode.c p7zip_4.57-new/C/rccrecode.c
+--- p7zip_4.57/C/rccrecode.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/C/rccrecode.c 2008-04-11 20:23:42.000000000 +0200
+@@ -0,0 +1,71 @@
++#include <pthread.h>
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define ARC_CLASS 0
++#define OUT_CLASS 1
++#define ARCOUT_CLASS 0
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int initialized = 0;
++static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
++
++void *rcc_init() {
++ rcc_context ctx;
++
++ pthread_mutex_lock(&mutex);
++ if (!initialized) {
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "zip");
++ rccInitDb4(NULL, NULL, 0);
++ }
++ initialized++;
++ pthread_mutex_unlock(&mutex);
++
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) rccInitDb4(ctx, NULL, 0);
++ if (ctx) rccLoad(ctx, "zip");
++
++ return ctx;
++}
++
++
++void rcc_free(void *ctx) {
++ if (ctx) rccFreeContext((rcc_context)ctx);
++
++ pthread_mutex_lock(&mutex);
++ if (initialized == 1) rccFree();
++ initialized--;
++ pthread_mutex_unlock(&mutex);
++}
++
++
++char *rcc_read(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, ARC_CLASS, OUT_CLASS, string, size, NULL);
++}
++
++char *rcc_write(rcc_context ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, OUT_CLASS, ARCOUT_CLASS, string, size, NULL);
++}
+diff -dPNur p7zip_4.57/C/rccrecode.h p7zip_4.57-new/C/rccrecode.h
+--- p7zip_4.57/C/rccrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/C/rccrecode.h 2008-04-11 20:23:42.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef _RCC_RECODE_H
++#define _RCC_RECODE_H
++
++# ifdef __cplusplus
++extern "C" {
++# endif
++
++ void *rcc_init();
++ void rcc_free(void *ctx);
++ char *rcc_read(void *ctx, const char *string, size_t size);
++ char *rcc_write(void *ctx, const char *string, size_t size);
++
++# ifdef __cplusplus
++}
++# endif
++
++#endif /* _RCC_RECODE_H */
+diff -dPNur p7zip_4.57/CPP/7zip/Archive/Zip/ZipIn.cpp p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipIn.cpp
+--- p7zip_4.57/CPP/7zip/Archive/Zip/ZipIn.cpp 2007-12-08 11:19:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipIn.cpp 2008-04-11 20:23:42.000000000 +0200
+@@ -9,11 +9,22 @@
+ #include "../../Common/LimitedStreams.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
++
++CInArchive::CInArchive() {
++ rccctx = rcc_init();
++}
++
++CInArchive::~CInArchive() {
++ rcc_free(rccctx);
++}
++
+
+ // static const char kEndOfString = '\0';
+-
++
+ bool CInArchive::Open(IInStream *inStream, const UInt64 *searchHeaderSizeLimit)
+ {
+ m_Stream = inStream;
+@@ -196,10 +207,18 @@
+
+ AString CInArchive::ReadFileName(UInt32 nameSize)
+ {
++ char *rccrec;
+ if (nameSize == 0)
+ return AString();
+ SafeReadBytes(m_NameBuffer.GetBuffer(nameSize), nameSize);
+ m_NameBuffer.ReleaseBuffer(nameSize);
++
++ rccrec = rcc_read(rccctx, (LPCSTR)m_NameBuffer, 0);
++ if (rccrec) {
++ m_NameBuffer = rccrec;
++ free(rccrec);
++ }
++
+ return m_NameBuffer;
+ }
+
+diff -dPNur p7zip_4.57/CPP/7zip/Archive/Zip/ZipIn.h p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipIn.h
+--- p7zip_4.57/CPP/7zip/Archive/Zip/ZipIn.h 2007-12-08 11:19:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipIn.h 2008-04-11 20:23:42.000000000 +0200
+@@ -106,6 +106,10 @@
+ bool SeekInArchive(UInt64 position);
+ ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
+ IInStream* CreateStream();
++
++ void *rccctx;
++ CInArchive();
++ ~CInArchive();
+ };
+
+ }}
+diff -dPNur p7zip_4.57/CPP/7zip/Archive/Zip/ZipOut.cpp p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipOut.cpp
+--- p7zip_4.57/CPP/7zip/Archive/Zip/ZipOut.cpp 2007-06-26 20:06:23.000000000 +0200
++++ p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipOut.cpp 2008-04-11 20:23:42.000000000 +0200
+@@ -7,9 +7,19 @@
+ #include "../../Common/OffsetStream.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
+
++COutArchive::COutArchive() {
++ rccctx = rcc_init();
++}
++
++COutArchive::~COutArchive() {
++ rcc_free(rccctx);
++}
++
+ void COutArchive::Create(IOutStream *outStream)
+ {
+ if (!m_OutBuffer.Create(1 << 16))
+@@ -112,6 +122,7 @@
+ {
+ SeekTo(m_BasePosition);
+
++ char *rccrec;
+ bool isZip64 = m_IsZip64 || item.PackSize >= 0xFFFFFFFF || item.UnPackSize >= 0xFFFFFFFF;
+
+ WriteUInt32(NSignature::kLocalFileHeader);
+@@ -130,6 +141,12 @@
+ throw CSystemException(E_FAIL);
+ }
+ WriteUInt16((UInt16)m_ExtraSize); // test it;
++ rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) {
++ printf("%u, %s.\n", item.Name.Length(), rccrec);
++ WriteBytes(rccrec, strlen(rccrec));
++ free(rccrec);
++ } else
+ WriteBytes((const char *)item.Name, item.Name.Length());
+
+ UInt32 extraPos = 0;
+@@ -154,6 +171,7 @@
+
+ void COutArchive::WriteCentralHeader(const CItem &item)
+ {
++ char *rccrec;
+ bool isUnPack64 = item.UnPackSize >= 0xFFFFFFFF;
+ bool isPack64 = item.PackSize >= 0xFFFFFFFF;
+ bool isPosition64 = item.LocalHeaderPosition >= 0xFFFFFFFF;
+@@ -180,6 +198,13 @@
+ WriteUInt16(item.InternalAttributes);
+ WriteUInt32(item.ExternalAttributes);
+ WriteUInt32(isPosition64 ? 0xFFFFFFFF: (UInt32)item.LocalHeaderPosition);
++
++ rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) {
++ printf("C: %u, %s.\n", item.Name.Length(), rccrec);
++ WriteBytes(rccrec, strlen(rccrec));
++ free(rccrec);
++ } else
+ WriteBytes((const char *)item.Name, item.Name.Length());
+ if (isZip64)
+ {
+diff -dPNur p7zip_4.57/CPP/7zip/Archive/Zip/ZipOut.h p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipOut.h
+--- p7zip_4.57/CPP/7zip/Archive/Zip/ZipOut.h 2007-06-26 20:06:22.000000000 +0200
++++ p7zip_4.57-new/CPP/7zip/Archive/Zip/ZipOut.h 2008-04-11 20:23:42.000000000 +0200
+@@ -49,6 +49,11 @@
+ void CreateStreamForCompressing(IOutStream **outStream);
+ void CreateStreamForCopying(ISequentialOutStream **outStream);
+ void SeekToPackedDataPosition();
++
++ void *rccctx;
++ COutArchive();
++ ~COutArchive();
++
+ };
+
+ }}
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Alone/makefile p7zip_4.57-new/CPP/7zip/Bundles/Alone/makefile
+--- p7zip_4.57/CPP/7zip/Bundles/Alone/makefile 2007-07-24 20:55:33.000000000 +0200
++++ p7zip_4.57-new/CPP/7zip/Bundles/Alone/makefile 2008-04-11 20:23:42.000000000 +0200
+@@ -15,6 +15,7 @@
+ LIBS=$(LOCAL_LIBS)
+
+ OBJS=\
++rccrecode.o \
+ myGetTickCount.o \
+ wine_date_and_time.o \
+ myAddExeFlag.o \
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Alone/makefile.list p7zip_4.57-new/CPP/7zip/Bundles/Alone/makefile.list
+--- p7zip_4.57/CPP/7zip/Bundles/Alone/makefile.list 2007-07-24 20:56:10.000000000 +0200
++++ p7zip_4.57-new/CPP/7zip/Bundles/Alone/makefile.list 2008-04-11 20:23:42.000000000 +0200
+@@ -196,6 +196,7 @@
+ ../../../../C/Compress/Branch/BranchPPC.c \
+ ../../../../C/Compress/Branch/BranchSPARC.c \
+ ../../../../C/Compress/Branch/BranchX86.c \
++ ../../../../C/rccrecode.c \
+ ../../../../C/7zCrc.c \
+ ../../../../C/Sort.c \
+ ../../../../C/Threads.c \
+@@ -237,6 +238,8 @@
+ $(CXX) $(CFLAGS) ../../../Common/IntToString.cpp
+ ListFileUtils.o : ../../../Common/ListFileUtils.cpp
+ $(CXX) $(CFLAGS) ../../../Common/ListFileUtils.cpp
++rccrecode.o : ../../../../C/rccrecode.c
++ $(CC) $(CFLAGS) ../../../../C/rccrecode.c
+ MyWindows.o : ../../../Common/MyWindows.cpp
+ $(CXX) $(CFLAGS) ../../../Common/MyWindows.cpp
+ Random.o : ../../../Common/Random.cpp
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Format7zFree/makefile p7zip_4.57-new/CPP/7zip/Bundles/Format7zFree/makefile
+--- p7zip_4.57/CPP/7zip/Bundles/Format7zFree/makefile 2007-08-03 20:16:04.000000000 +0200
++++ p7zip_4.57-new/CPP/7zip/Bundles/Format7zFree/makefile 2008-04-11 20:30:53.000000000 +0200
+@@ -14,6 +14,7 @@
+ LIBS=$(LOCAL_LIBS_DLL)
+
+ OBJS = \
++rccrecode.o \
+ wine_date_and_time.o \
+ myGetTickCount.o \
+ CRC.o \
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Format7zFree/makefile.list p7zip_4.57-new/CPP/7zip/Bundles/Format7zFree/makefile.list
+--- p7zip_4.57/CPP/7zip/Bundles/Format7zFree/makefile.list 2007-08-03 20:17:57.000000000 +0200
++++ p7zip_4.57-new/CPP/7zip/Bundles/Format7zFree/makefile.list 2008-04-11 20:32:11.000000000 +0200
+@@ -218,6 +218,7 @@
+ ../../../../C/Compress/Branch/BranchPPC.c \
+ ../../../../C/Compress/Branch/BranchSPARC.c \
+ ../../../../C/Compress/Branch/BranchX86.c \
++ ../../../../C/rccrecode.c \
+ ../../../../C/7zCrc.c \
+ ../../../../C/Sort.c \
+ ../../../../C/Threads.c \
+@@ -237,6 +238,8 @@
+ $(CXX) $(CC_SHARED) $(CFLAGS) ../../../Common/ListFileUtils.cpp
+ MyWindows.o : ../../../Common/MyWindows.cpp
+ $(CXX) $(CC_SHARED) $(CFLAGS) ../../../Common/MyWindows.cpp
++rccrecode.o : ../../../../C/rccrecode.c
++ $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/rccrecode.c
+ Random.o : ../../../Common/Random.cpp
+ $(CXX) $(CC_SHARED) $(CFLAGS) ../../../Common/Random.cpp
+ StdInStream.o : ../../../Common/StdInStream.cpp
+diff -dPNur p7zip_4.57/makefile.machine p7zip_4.57-new/makefile.machine
+--- p7zip_4.57/makefile.machine 2007-12-15 18:19:48.000000000 +0100
++++ p7zip_4.57-new/makefile.machine 2008-04-11 20:23:42.000000000 +0200
+@@ -14,7 +14,7 @@
+ CC_SHARED=-fPIC
+ LINK_SHARED=-fPIC -shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+ OBJ_CRC32=$(OBJ_CRC32_C)
+diff -dPNur p7zip_4.57/makefile.machine.orig p7zip_4.57-new/makefile.machine.orig
+--- p7zip_4.57/makefile.machine.orig 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/makefile.machine.orig 2007-12-15 18:19:48.000000000 +0100
+@@ -0,0 +1,21 @@
++#
++# makefile for Linux (x86, PPC, alpha ...)
++#
++
++OPTFLAGS=-O
++
++ALLFLAGS=${OPTFLAGS} -s \
++ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
++ -DNDEBUG -D_REENTRANT -DENV_UNIX \
++ $(LOCAL_FLAGS)
++
++CXX=g++ $(ALLFLAGS)
++CC=gcc $(ALLFLAGS)
++CC_SHARED=-fPIC
++LINK_SHARED=-fPIC -shared
++
++LOCAL_LIBS=-lpthread
++LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
++
++OBJ_CRC32=$(OBJ_CRC32_C)
++
diff --git a/app-arch/p7zip/files/p7zip_4.57-libun7zip.patch b/app-arch/p7zip/files/p7zip_4.57-libun7zip.patch
new file mode 100644
index 0000000..07a3188
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_4.57-libun7zip.patch
@@ -0,0 +1,684 @@
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Un7Zip/makefile p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/makefile
+--- p7zip_4.57/CPP/7zip/Bundles/Un7Zip/makefile 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/makefile 2008-04-11 19:39:40.000000000 +0200
+@@ -0,0 +1,99 @@
++PROG=libun7zip.so
++
++LOCAL_FLAGS= \
++ -DEXTRACT_ONLY \
++ -DNO_READ_FROM_CODER \
++ -D_SFX
++
++include ../../../../makefile.crc32
++include ../../../../makefile.machine
++
++LOCAL_SHARED=$(LINK_SHARED)
++LIBS=$(LOCAL_LIBS_DLL)
++
++OBJS=\
++myGetTickCount.o\
++wine_date_and_time.o\
++mySplitCommandLine.o\
++CommandLineParser.o\
++CRC.o\
++IntToString.o\
++StdInStream.o\
++StdOutStream.o\
++MyString.o\
++MyWindows.o\
++StringConvert.o\
++MyVector.o\
++Wildcard.o\
++CoderMixer2.o\
++CoderMixer2MT.o\
++CrossThreadProgress.o\
++FilterCoder.o\
++ItemNameUtils.o\
++OutStreamWithCRC.o\
++ConsoleClose.o\
++ExtractCallbackConsole.o\
++ExtractCallbackNULL.o\
++List.o\
++OpenCallbackConsole.o\
++UserInputUtils.o\
++7zDecode.o\
++7zExtract.o\
++7zFolderOutStream.o\
++7zHandler.o\
++7zHeader.o\
++7zIn.o\
++7zRegister.o\
++LZMADecoder.o\
++LZMARegister.o\
++BranchCoder.o\
++x86.o\
++x86_2.o\
++PPMDDecoder.o\
++PPMDRegister.o\
++LZOutWindow.o\
++CopyCoder.o\
++CopyRegister.o\
++7zAES.o\
++7zAESRegister.o\
++MyAES.o\
++Error.o\
++FileDir.o\
++FileFind.o\
++FileIO.o\
++FileName.o\
++PropVariant.o\
++PropVariantConversions.o\
++Synchronization.o\
++System.o\
++FilePathAutoRename.o\
++FileStreams.o\
++InBuffer.o\
++LimitedStreams.o\
++LockedStream.o\
++StreamUtils.o\
++OutBuffer.o\
++ProgressUtils.o\
++StreamBinder.o\
++StreamObjects.o\
++VirtThread.o \
++ArchiveExtractCallback.o\
++ArchiveOpenCallback.o\
++DefaultName.o\
++LoadCodecs.o\
++Extract.o\
++ExtractingFilePath.o\
++OpenArchive.o\
++PropIDUtils.o\
++CreateCoder.o\
++Sha256.o \
++BranchX86.o \
++BCJ2Register.o\
++BCJRegister.o\
++Threads.o\
++$(OBJ_CRC32) \
++Aes.o \
++Un7Zip.o
++
++include ../../../../makefile.glb
++
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Un7Zip/makefile.depend p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/makefile.depend
+--- p7zip_4.57/CPP/7zip/Bundles/Un7Zip/makefile.depend 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/makefile.depend 2008-04-11 18:37:10.000000000 +0200
+@@ -0,0 +1 @@
++
+\ No newline at end of file
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Un7Zip/makefile.list p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/makefile.list
+--- p7zip_4.57/CPP/7zip/Bundles/Un7Zip/makefile.list 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/makefile.list 2008-04-11 19:19:43.000000000 +0200
+@@ -0,0 +1,180 @@
++wine_date_and_time.o : ../../../myWindows/wine_date_and_time.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../myWindows/wine_date_and_time.cpp
++myGetTickCount.o : ../../../myWindows/myGetTickCount.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../myWindows/myGetTickCount.cpp
++mySplitCommandLine.o : ../../../myWindows/mySplitCommandLine.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../myWindows/mySplitCommandLine.cpp
++CommandLineParser.o : ../../../Common/CommandLineParser.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/CommandLineParser.cpp
++CRC.o : ../../../Common/CRC.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/CRC.cpp
++IntToString.o : ../../../Common/IntToString.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/IntToString.cpp
++ListFileUtils.o : ../../../Common/ListFileUtils.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/ListFileUtils.cpp
++MyWindows.o : ../../../Common/MyWindows.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/MyWindows.cpp
++Random.o : ../../../Common/Random.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/Random.cpp
++StdInStream.o : ../../../Common/StdInStream.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/StdInStream.cpp
++StdOutStream.o : ../../../Common/StdOutStream.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/StdOutStream.cpp
++MyString.o : ../../../Common/MyString.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/MyString.cpp
++StringConvert.o : ../../../Common/StringConvert.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/StringConvert.cpp
++StringToInt.o : ../../../Common/StringToInt.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/StringToInt.cpp
++UTFConvert.o : ../../../Common/UTFConvert.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/UTFConvert.cpp
++MyVector.o : ../../../Common/MyVector.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/MyVector.cpp
++Wildcard.o : ../../../Common/Wildcard.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Common/Wildcard.cpp
++CoderMixer2.o : ../../Archive/Common/CoderMixer2.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/Common/CoderMixer2.cpp
++CoderMixer2MT.o : ../../Archive/Common/CoderMixer2MT.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/Common/CoderMixer2MT.cpp
++CrossThreadProgress.o : ../../Archive/Common/CrossThreadProgress.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/Common/CrossThreadProgress.cpp
++ItemNameUtils.o : ../../Archive/Common/ItemNameUtils.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/Common/ItemNameUtils.cpp
++OutStreamWithCRC.o : ../../Archive/Common/OutStreamWithCRC.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/Common/OutStreamWithCRC.cpp
++ConsoleClose.o : ../../UI/Console/ConsoleClose.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/ConsoleClose.cpp
++ExtractCallbackConsole.o : ../../UI/Console/ExtractCallbackConsole.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/ExtractCallbackConsole.cpp
++List.o : ../../UI/Console/List.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/List.cpp
++MainAr.o : ../../UI/Console/MainAr.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/MainAr.cpp
++OpenCallbackConsole.o : ../../UI/Console/OpenCallbackConsole.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/OpenCallbackConsole.cpp
++UserInputUtils.o : ../../UI/Console/UserInputUtils.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/UserInputUtils.cpp
++7zDecode.o : ../../Archive/7z/7zDecode.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zDecode.cpp
++7zExtract.o : ../../Archive/7z/7zExtract.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zExtract.cpp
++7zFolderOutStream.o : ../../Archive/7z/7zFolderOutStream.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zFolderOutStream.cpp
++7zHandler.o : ../../Archive/7z/7zHandler.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zHandler.cpp
++7zHeader.o : ../../Archive/7z/7zHeader.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zHeader.cpp
++7zIn.o : ../../Archive/7z/7zIn.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zIn.cpp
++LZMADecoder.o : ../../Compress/LZMA/LZMADecoder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/LZMA/LZMADecoder.cpp
++BranchCoder.o : ../../Compress/Branch/BranchCoder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Branch/BranchCoder.cpp
++x86.o : ../../Compress/Branch/x86.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Branch/x86.cpp
++x86_2.o : ../../Compress/Branch/x86_2.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Branch/x86_2.cpp
++PPMDDecoder.o : ../../Compress/PPMD/PPMDDecoder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/PPMD/PPMDDecoder.cpp
++LZOutWindow.o : ../../Compress/LZ/LZOutWindow.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/LZ/LZOutWindow.cpp
++CopyCoder.o : ../../Compress/Copy/CopyCoder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Copy/CopyCoder.cpp
++7zAES.o : ../../Crypto/7zAES/7zAES.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Crypto/7zAES/7zAES.cpp
++MyAES.o : ../../Crypto/AES/MyAES.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Crypto/AES/MyAES.cpp
++Sha256.o : ../../Crypto/Hash/Sha256.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Crypto/Hash/Sha256.cpp
++Error.o : ../../../Windows/Error.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/Error.cpp
++FileDir.o : ../../../Windows/FileDir.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/FileDir.cpp
++FileFind.o : ../../../Windows/FileFind.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/FileFind.cpp
++FileIO.o : ../../../Windows/FileIO.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/FileIO.cpp
++FileName.o : ../../../Windows/FileName.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/FileName.cpp
++PropVariant.o : ../../../Windows/PropVariant.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/PropVariant.cpp
++PropVariantConversions.o : ../../../Windows/PropVariantConversions.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/PropVariantConversions.cpp
++Synchronization.o : ../../../Windows/Synchronization.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/Synchronization.cpp
++System.o : ../../../Windows/System.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../../Windows/System.cpp
++CreateCoder.o : ../../Common/CreateCoder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/CreateCoder.cpp
++FilePathAutoRename.o : ../../Common/FilePathAutoRename.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/FilePathAutoRename.cpp
++FileStreams.o : ../../Common/FileStreams.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/FileStreams.cpp
++FilterCoder.o : ../../Common/FilterCoder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/FilterCoder.cpp
++InBuffer.o : ../../Common/InBuffer.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/InBuffer.cpp
++LimitedStreams.o : ../../Common/LimitedStreams.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/LimitedStreams.cpp
++LockedStream.o : ../../Common/LockedStream.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/LockedStream.cpp
++StreamUtils.o : ../../Common/StreamUtils.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/StreamUtils.cpp
++OutBuffer.o : ../../Common/OutBuffer.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/OutBuffer.cpp
++ProgressUtils.o : ../../Common/ProgressUtils.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/ProgressUtils.cpp
++StreamBinder.o : ../../Common/StreamBinder.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/StreamBinder.cpp
++StreamObjects.o : ../../Common/StreamObjects.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/StreamObjects.cpp
++VirtThread.o : ../../Common/VirtThread.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Common/VirtThread.cpp
++ArchiveExtractCallback.o : ../../UI/Common/ArchiveExtractCallback.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/ArchiveExtractCallback.cpp
++ArchiveOpenCallback.o : ../../UI/Common/ArchiveOpenCallback.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/ArchiveOpenCallback.cpp
++LoadCodecs.o : ../../UI/Common/LoadCodecs.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/LoadCodecs.cpp
++DefaultName.o : ../../UI/Common/DefaultName.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/DefaultName.cpp
++Extract.o : ../../UI/Common/Extract.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/Extract.cpp
++ExtractingFilePath.o : ../../UI/Common/ExtractingFilePath.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/ExtractingFilePath.cpp
++OpenArchive.o : ../../UI/Common/OpenArchive.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/OpenArchive.cpp
++PropIDUtils.o : ../../UI/Common/PropIDUtils.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Common/PropIDUtils.cpp
++Main.o : ./Main.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ./Main.cpp
++BranchX86.o : ../../../../C/Compress/Branch/BranchX86.c
++ $(CC) $(CFLAGS) $(CC_SHARED) ../../../../C/Compress/Branch/BranchX86.c
++7zRegister.o : ../../Archive/7z/7zRegister.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Archive/7z/7zRegister.cpp
++LZMARegister.o : ../../Compress/LZMA/LZMARegister.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/LZMA/LZMARegister.cpp
++BCJ2Register.o : ../../Compress/Branch/BCJ2Register.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Branch/BCJ2Register.cpp
++BCJRegister.o : ../../Compress/Branch/BCJRegister.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Branch/BCJRegister.cpp
++PPMDRegister.o : ../../Compress/PPMD/PPMDRegister.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/PPMD/PPMDRegister.cpp
++CopyRegister.o : ../../Compress/Copy/CopyRegister.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Compress/Copy/CopyRegister.cpp
++7zAESRegister.o : ../../Crypto/7zAES/7zAESRegister.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../Crypto/7zAES/7zAESRegister.cpp
++Threads.o : ../../../../C/Threads.c
++ $(CC) $(CFLAGS) $(CC_SHARED) ../../../../C/Threads.c
++Aes.o : ../../../../C/Crypto/Aes.c
++ $(CC) $(CFLAGS) $(CC_SHARED) ../../../../C/Crypto/Aes.c
++# CRC32, C version
++7zCrc.o : ../../../../C/7zCrc.c
++ $(CC) $(CFLAGS) $(CC_SHARED) ../../../../C/7zCrc.c
++# CRC32, ASM version
++7zCrcT8.o : ../../../../C/7zCrcT8.c
++ $(CC) $(CFLAGS) $(CC_SHARED) ../../../../C/7zCrcT8.c
++ExtractCallbackNULL.o : ../../UI/Console/ExtractCallbackNULL.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ../../UI/Console/ExtractCallbackNULL.cpp
++Un7Zip.o : ./Un7Zip.cpp
++ $(CXX) $(CFLAGS) $(CC_SHARED) ./Un7Zip.cpp
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Un7Zip/testlib.c p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/testlib.c
+--- p7zip_4.57/CPP/7zip/Bundles/Un7Zip/testlib.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/testlib.c 2008-04-11 18:37:10.000000000 +0200
+@@ -0,0 +1,7 @@
++
++#include "u7zip.h"
++
++int main(int argc, char *argv[])
++{
++ return un7zip(argv[1], "/tmp", 0);
++}
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Un7Zip/u7zip.h p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/u7zip.h
+--- p7zip_4.57/CPP/7zip/Bundles/Un7Zip/u7zip.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/u7zip.h 2008-04-11 18:37:10.000000000 +0200
+@@ -0,0 +1,19 @@
++#ifndef __UN7ZIP_H
++#define __UN7ZIP_H
++
++#define LIST_7Z 0
++#define TEST_7Z 1
++#define EXTRACT_7Z 2
++
++#define S_OK 0x00000000L
++#define S_FALSE 0x00000001L
++#define E_NOTIMPL 0x80004001L
++#define E_NOINTERFACE 0x80004002L
++#define E_ABORT 0x80004004L
++#define E_FAIL 0x80004005L
++#define E_OUTOFMEMORY 0x8007000EL
++#define E_INVALIDARG 0x80070057L
++
++int un7zip(char *name, char *dir, int command);
++
++#endif
+diff -dPNur p7zip_4.57/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp
+--- p7zip_4.57/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp 2008-04-11 19:33:45.000000000 +0200
+@@ -0,0 +1,148 @@
++// Un7Zip.cpp
++
++#include "StdAfx.h"
++
++#include "Common/MyInitGuid.h"
++
++#include "Common/StdOutStream.h"
++#include "Common/Wildcard.h"
++#include "Common/StringConvert.h"
++#include "Common/MyCom.h"
++#include "Common/MyException.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileName.h"
++#include "Windows/Defs.h"
++
++#include "../../IPassword.h"
++#include "../../ICoder.h"
++
++#include "../../UI/Common/OpenArchive.h"
++#include "../../UI/Common/DefaultName.h"
++#include "../../UI/Common/ExitCode.h"
++#include "../../UI/Common/Extract.h"
++
++#include "../../UI/Console/List.h"
++#include "../../UI/Console/OpenCallbackConsole.h"
++#include "../../UI/Console/ExtractCallbackNULL.h"
++
++
++static int Un7Zip(char *name, char *dir, int command);
++
++extern "C" {
++
++int un7zip(char *name, char *dir, int command)
++{
++ return Un7Zip(name, dir, command);
++}
++
++}
++
++using namespace NWindows;
++using namespace NFile;
++
++static const wchar_t *kUniversalWildcard = L"*";
++static bool AddNameToCensor(NWildcard::CCensor &wildcardCensor)
++{
++ wildcardCensor.AddItem(true, kUniversalWildcard, false);
++ return true;
++}
++
++static int Un7Zip(char *name, char *dir, int commands)
++{
++
++ CStdOutStream *g_StdStream = &g_StdOut;
++
++ NWildcard::CCensor wildcardCensor;
++ AddNameToCensor(wildcardCensor);
++ bool passwordEnabled = 1;
++ UString password = L"null";
++
++ UString outputDir= MultiByteToUnicodeString(dir);
++ UString archiveName = MultiByteToUnicodeString(name);
++
++ NFind::CFileInfoW archiveFileInfo;
++
++ if (!NFind::FindFile(archiveName, archiveFileInfo))
++ return S_FALSE;
++ if (archiveFileInfo.IsDirectory())
++ return S_FALSE;
++
++ {
++
++ UStringVector v1, v2;
++ v1.Add(archiveName);
++ v2.Add(archiveName);
++
++
++ CCodecs *codecs = new CCodecs;
++ CMyComPtr<
++ #ifdef EXTERNAL_CODECS
++ ICompressCodecsInfo
++ #else
++ IUnknown
++ #endif
++ > compressCodecsInfo = codecs;
++ HRESULT result = codecs->Load();
++ if (result != S_OK)
++ throw CSystemException(result);
++
++ const NWildcard::CCensorNode &wildcardCensorHead =
++ wildcardCensor.Pairs.Front().Head;
++
++ if(commands > 0)
++ {
++ CExtractCallbackNULL *ecs = new CExtractCallbackNULL;
++ CMyComPtr<IFolderArchiveExtractCallback> extractCallback = ecs;
++ ecs->OutStream = g_StdStream;
++ ecs->PasswordIsDefined = passwordEnabled;
++ ecs->Password = password;
++ ecs->Init();
++
++ COpenCallbackConsole openCallback;
++ openCallback.OutStream = g_StdStream;
++ openCallback.PasswordIsDefined = passwordEnabled;
++ openCallback.Password = password;
++
++ CExtractOptions eo;
++ eo.StdOutMode = false;
++ eo.PathMode = NExtract::NPathMode::kFullPathnames;
++ if(commands == 1)
++ eo.TestMode = 1;
++ else
++ eo.TestMode = 0;
++ eo.OverwriteMode = NExtract::NOverwriteMode::kWithoutPrompt;
++ eo.OutputDir = outputDir;
++ eo.YesToAll = 1;
++
++ UString errorMessage;
++ CDecompressStat stat;
++
++ HRESULT result = DecompressArchives(
++ codecs,
++ v1, v2,
++ wildcardCensorHead,
++ eo, &openCallback, ecs, errorMessage, stat);
++
++ if (ecs->NumArchiveErrors != 0 || ecs->NumFileErrors != 0)
++ return S_FALSE;
++ if (result != S_OK)
++ return S_FALSE;
++ }
++ else
++ {
++ UInt64 numErrors = 0;
++ HRESULT result = ListArchives(
++ codecs,
++ v1, v2,
++ wildcardCensorHead,
++ true, false,
++ passwordEnabled,
++ password, numErrors);
++
++ if (result != S_OK)
++ return S_FALSE;;
++ }
++ }
++ return S_OK;
++}
+diff -dPNur p7zip_4.57/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp p7zip_4.57-new/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp
+--- p7zip_4.57/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp 2008-04-11 19:28:29.000000000 +0200
+@@ -0,0 +1,132 @@
++// ExtractCallbackNULL.cpp
++
++#include "StdAfx.h"
++
++#include "ExtractCallbackNULL.h"
++#include "UserInputUtils.h"
++#include "ConsoleClose.h"
++
++#include "Common/Wildcard.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileFind.h"
++#include "Windows/Time.h"
++#include "Windows/Defs.h"
++#include "Windows/PropVariant.h"
++#include "Windows/Error.h"
++#include "Windows/PropVariantConversions.h"
++
++#include "../../Common/FilePathAutoRename.h"
++
++#include "../Common/ExtractingFilePath.h"
++
++using namespace NWindows;
++using namespace NFile;
++using namespace NDirectory;
++
++STDMETHODIMP CExtractCallbackNULL::SetTotal(UInt64 size)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetCompleted(const UInt64 *completeValue)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::AskOverwrite(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer)
++{
++
++ NUserAnswerMode::EEnum overwriteAnswer = ScanUserYesNoAllQuit(OutStream);
++
++ switch(overwriteAnswer)
++ {
++ case NUserAnswerMode::kQuit:
++ return E_ABORT;
++ case NUserAnswerMode::kNo:
++ *answer = NOverwriteAnswer::kNo;
++ break;
++ case NUserAnswerMode::kNoAll:
++ *answer = NOverwriteAnswer::kNoToAll;
++ break;
++ case NUserAnswerMode::kYesAll:
++ *answer = NOverwriteAnswer::kYesToAll;
++ break;
++ case NUserAnswerMode::kYes:
++ *answer = NOverwriteAnswer::kYes;
++ break;
++ case NUserAnswerMode::kAutoRename:
++ *answer = NOverwriteAnswer::kAutoRename;
++ break;
++ default:
++ return E_FAIL;
++ }
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::PrepareOperation(const wchar_t *name, bool /* isFolder */, Int32 askExtractMode, const UInt64 *position)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::MessageError(const wchar_t *message)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetOperationResult(Int32 operationResult, bool encrypted)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::CryptoGetTextPassword(BSTR *password)
++{
++ if (!PasswordIsDefined)
++ {
++ Password = GetPassword(OutStream);
++ PasswordIsDefined = true;
++ }
++ CMyComBSTR tempName(Password);
++ *password = tempName.Detach();
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::BeforeOpen(const wchar_t *name)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::OpenResult(const wchar_t *name, HRESULT result, bool encrypted)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ThereAreNoFiles()
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ExtractResult(HRESULT result)
++{
++ if (result == S_OK)
++ return result;
++ if (result == E_ABORT)
++ return result;
++ if (result == E_OUTOFMEMORY)
++ return result;
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::SetPassword(const UString &password)
++{
++ PasswordIsDefined = true;
++ Password = password;
++ return S_OK;
++}
+diff -dPNur p7zip_4.57/CPP/7zip/UI/Console/ExtractCallbackNULL.h p7zip_4.57-new/CPP/7zip/UI/Console/ExtractCallbackNULL.h
+--- p7zip_4.57/CPP/7zip/UI/Console/ExtractCallbackNULL.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.57-new/CPP/7zip/UI/Console/ExtractCallbackNULL.h 2008-04-11 19:28:46.000000000 +0200
+@@ -0,0 +1,65 @@
++// ExtractCallbackNULL.h
++
++#ifndef __EXTRACTCALLBACKCONSOLE_H
++#define __EXTRACTCALLBACKCONSOLE_H
++
++#include "Common/MyString.h"
++#include "Common/StdOutStream.h"
++#include "../../Common/FileStreams.h"
++#include "../../IPassword.h"
++#include "../../Archive/IArchive.h"
++#include "../Common/ArchiveExtractCallback.h"
++
++class CExtractCallbackNULL:
++ public IExtractCallbackUI,
++ public ICryptoGetTextPassword,
++ public CMyUnknownImp
++{
++public:
++ MY_UNKNOWN_IMP2(IFolderArchiveExtractCallback, ICryptoGetTextPassword)
++
++ STDMETHOD(SetTotal)(UInt64 total);
++ STDMETHOD(SetCompleted)(const UInt64 *completeValue);
++
++ // IFolderArchiveExtractCallback
++ STDMETHOD(AskOverwrite)(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer);
++ STDMETHOD (PrepareOperation)(const wchar_t *name, bool isFolder, Int32 askExtractMode, const UInt64 *position);
++
++ STDMETHOD(MessageError)(const wchar_t *message);
++ STDMETHOD(SetOperationResult)(Int32 operationResult, bool encrypted);
++
++ // ICryptoGetTextPassword
++ STDMETHOD(CryptoGetTextPassword)(BSTR *password);
++
++ HRESULT BeforeOpen(const wchar_t *name);
++ HRESULT OpenResult(const wchar_t *name, HRESULT result, bool encrypted);
++ HRESULT ThereAreNoFiles();
++ HRESULT ExtractResult(HRESULT result);
++
++ HRESULT SetPassword(const UString &password);
++
++public:
++ bool PasswordIsDefined;
++ UString Password;
++
++ UInt64 NumArchives;
++ UInt64 NumArchiveErrors;
++ UInt64 NumFileErrors;
++ UInt64 NumFileErrorsInCurrentArchive;
++
++ CStdOutStream *OutStream;
++
++ void Init()
++ {
++ NumArchives = 0;
++ NumArchiveErrors = 0;
++ NumFileErrors = 0;
++ NumFileErrorsInCurrentArchive = 0;
++ }
++
++};
++
++#endif
diff --git a/app-arch/p7zip/files/p7zip_4.65-ds-rusxmms.patch b/app-arch/p7zip/files/p7zip_4.65-ds-rusxmms.patch
new file mode 100644
index 0000000..7072522
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_4.65-ds-rusxmms.patch
@@ -0,0 +1,305 @@
+diff -dPNur p7zip_4.65/C/rccrecode.c p7zip_4.65-new/C/rccrecode.c
+--- p7zip_4.65/C/rccrecode.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/C/rccrecode.c 2009-06-14 02:44:19.000000000 +0200
+@@ -0,0 +1,71 @@
++#include <pthread.h>
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define ARC_CLASS 0
++#define OUT_CLASS 1
++#define ARCOUT_CLASS 0
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int initialized = 0;
++static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
++
++void *rcc_init() {
++ rcc_context ctx;
++
++ pthread_mutex_lock(&mutex);
++ if (!initialized) {
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "zip");
++ rccInitDb4(NULL, NULL, 0);
++ }
++ initialized++;
++ pthread_mutex_unlock(&mutex);
++
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) rccInitDb4(ctx, NULL, 0);
++ if (ctx) rccLoad(ctx, "zip");
++
++ return ctx;
++}
++
++
++void rcc_free(void *ctx) {
++ if (ctx) rccFreeContext((rcc_context)ctx);
++
++ pthread_mutex_lock(&mutex);
++ if (initialized == 1) rccFree();
++ initialized--;
++ pthread_mutex_unlock(&mutex);
++}
++
++
++char *rcc_read(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, ARC_CLASS, OUT_CLASS, string, size, NULL);
++}
++
++char *rcc_write(rcc_context ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, OUT_CLASS, ARCOUT_CLASS, string, size, NULL);
++}
+diff -dPNur p7zip_4.65/C/rccrecode.h p7zip_4.65-new/C/rccrecode.h
+--- p7zip_4.65/C/rccrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/C/rccrecode.h 2009-06-14 02:44:19.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef _RCC_RECODE_H
++#define _RCC_RECODE_H
++
++# ifdef __cplusplus
++extern "C" {
++# endif
++
++ void *rcc_init();
++ void rcc_free(void *ctx);
++ char *rcc_read(void *ctx, const char *string, size_t size);
++ char *rcc_write(void *ctx, const char *string, size_t size);
++
++# ifdef __cplusplus
++}
++# endif
++
++#endif /* _RCC_RECODE_H */
+diff -dPNur p7zip_4.65/CPP/7zip/Archive/Zip/ZipIn.cpp p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipIn.cpp
+--- p7zip_4.65/CPP/7zip/Archive/Zip/ZipIn.cpp 2008-11-28 23:03:44.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipIn.cpp 2009-06-14 02:47:28.000000000 +0200
+@@ -9,6 +9,8 @@
+ #include "../../Common/LimitedStreams.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ extern "C"
+ {
+ #include "../../../../C/CpuArch.h"
+@@ -23,6 +25,14 @@
+
+ // static const char kEndOfString = '\0';
+
++CInArchive::CInArchive() {
++ rccctx = rcc_init();
++}
++
++CInArchive::~CInArchive() {
++ rcc_free(rccctx);
++}
++
+ HRESULT CInArchive::Open(IInStream *stream, const UInt64 *searchHeaderSizeLimit)
+ {
+ Close();
+@@ -198,12 +208,21 @@
+
+ AString CInArchive::ReadFileName(UInt32 nameSize)
+ {
++ char *rccrec;
++
+ if (nameSize == 0)
+ return AString();
+ char *p = m_NameBuffer.GetBuffer(nameSize);
+ SafeReadBytes(p, nameSize);
+ p[nameSize] = 0;
+ m_NameBuffer.ReleaseBuffer();
++
++ rccrec = rcc_read(rccctx, (LPCSTR)m_NameBuffer, 0);
++ if (rccrec) {
++ m_NameBuffer = rccrec;
++ free(rccrec);
++ }
++
+ return m_NameBuffer;
+ }
+
+diff -dPNur p7zip_4.65/CPP/7zip/Archive/Zip/ZipIn.h p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipIn.h
+--- p7zip_4.65/CPP/7zip/Archive/Zip/ZipIn.h 2008-08-14 11:11:13.000000000 +0200
++++ p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipIn.h 2009-06-14 02:48:32.000000000 +0200
+@@ -108,6 +108,10 @@
+ ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
+ IInStream* CreateStream();
+
++ void *rccctx;
++ CInArchive();
++ ~CInArchive();
++
+ bool IsOpen() const { return m_Stream != NULL; }
+ };
+
+diff -dPNur p7zip_4.65/CPP/7zip/Archive/Zip/ZipOut.cpp p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipOut.cpp
+--- p7zip_4.65/CPP/7zip/Archive/Zip/ZipOut.cpp 2008-08-14 11:11:26.000000000 +0200
++++ p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipOut.cpp 2009-06-14 02:44:19.000000000 +0200
+@@ -7,9 +7,19 @@
+ #include "../../Common/OffsetStream.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
+
++COutArchive::COutArchive() {
++ rccctx = rcc_init();
++}
++
++COutArchive::~COutArchive() {
++ rcc_free(rccctx);
++}
++
+ void COutArchive::Create(IOutStream *outStream)
+ {
+ if (!m_OutBuffer.Create(1 << 16))
+@@ -112,6 +122,7 @@
+ {
+ SeekTo(m_BasePosition);
+
++ char *rccrec;
+ bool isZip64 = m_IsZip64 || item.PackSize >= 0xFFFFFFFF || item.UnPackSize >= 0xFFFFFFFF;
+
+ WriteUInt32(NSignature::kLocalFileHeader);
+@@ -130,6 +141,12 @@
+ throw CSystemException(E_FAIL);
+ }
+ WriteUInt16((UInt16)m_ExtraSize); // test it;
++ rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) {
++ printf("%u, %s.\n", item.Name.Length(), rccrec);
++ WriteBytes(rccrec, strlen(rccrec));
++ free(rccrec);
++ } else
+ WriteBytes((const char *)item.Name, item.Name.Length());
+
+ UInt32 extraPos = 0;
+@@ -154,6 +171,7 @@
+
+ void COutArchive::WriteCentralHeader(const CItem &item)
+ {
++ char *rccrec;
+ bool isUnPack64 = item.UnPackSize >= 0xFFFFFFFF;
+ bool isPack64 = item.PackSize >= 0xFFFFFFFF;
+ bool isPosition64 = item.LocalHeaderPosition >= 0xFFFFFFFF;
+@@ -181,6 +199,13 @@
+ WriteUInt16(item.InternalAttributes);
+ WriteUInt32(item.ExternalAttributes);
+ WriteUInt32(isPosition64 ? 0xFFFFFFFF: (UInt32)item.LocalHeaderPosition);
++
++ rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) {
++ printf("C: %u, %s.\n", item.Name.Length(), rccrec);
++ WriteBytes(rccrec, strlen(rccrec));
++ free(rccrec);
++ } else
+ WriteBytes((const char *)item.Name, item.Name.Length());
+ if (isZip64)
+ {
+diff -dPNur p7zip_4.65/CPP/7zip/Archive/Zip/ZipOut.h p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipOut.h
+--- p7zip_4.65/CPP/7zip/Archive/Zip/ZipOut.h 2008-08-14 11:11:13.000000000 +0200
++++ p7zip_4.65-new/CPP/7zip/Archive/Zip/ZipOut.h 2009-06-14 02:44:19.000000000 +0200
+@@ -49,6 +49,11 @@
+ void CreateStreamForCompressing(IOutStream **outStream);
+ void CreateStreamForCopying(ISequentialOutStream **outStream);
+ void SeekToPackedDataPosition();
++
++ void *rccctx;
++ COutArchive();
++ ~COutArchive();
++
+ };
+
+ }}
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Alone/makefile p7zip_4.65-new/CPP/7zip/Bundles/Alone/makefile
+--- p7zip_4.65/CPP/7zip/Bundles/Alone/makefile 2009-02-07 19:39:04.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Alone/makefile 2009-06-14 02:44:19.000000000 +0200
+@@ -250,6 +250,7 @@
+ Sha256.o
+
+ OBJS=\
++rccrecode.o \
+ myGetTickCount.o \
+ wine_date_and_time.o \
+ myAddExeFlag.o \
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Alone/makefile.list p7zip_4.65-new/CPP/7zip/Bundles/Alone/makefile.list
+--- p7zip_4.65/CPP/7zip/Bundles/Alone/makefile.list 2009-02-09 21:04:57.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Alone/makefile.list 2009-06-14 02:51:45.000000000 +0200
+@@ -204,6 +204,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/Bra.c \
+ ../../../../C/Bra86.c \
+ ../../../../C/BraIA64.c \
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Format7zFree/makefile p7zip_4.65-new/CPP/7zip/Bundles/Format7zFree/makefile
+--- p7zip_4.65/CPP/7zip/Bundles/Format7zFree/makefile 2009-02-09 21:47:24.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Format7zFree/makefile 2009-06-14 03:00:06.000000000 +0200
+@@ -296,6 +296,7 @@
+ Sha256.o \
+
+ OBJS = \
++ rccrecode.o \
+ wine_date_and_time.o \
+ myGetTickCount.o \
+ $(COMMON_OBJS) \
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Format7zFree/makefile.list p7zip_4.65-new/CPP/7zip/Bundles/Format7zFree/makefile.list
+--- p7zip_4.65/CPP/7zip/Bundles/Format7zFree/makefile.list 2009-02-09 21:04:32.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Format7zFree/makefile.list 2009-06-14 03:00:39.000000000 +0200
+@@ -235,6 +235,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/Bra.c \
+ ../../../../C/Bra86.c \
+ ../../../../C/BraIA64.c \
+diff -dPNur p7zip_4.65/makefile.machine p7zip_4.65-new/makefile.machine
+--- p7zip_4.65/makefile.machine 2009-02-14 18:19:09.000000000 +0100
++++ p7zip_4.65-new/makefile.machine 2009-06-14 02:44:19.000000000 +0200
+@@ -14,7 +14,7 @@
+ CC_SHARED=-fPIC
+ LINK_SHARED=-fPIC -shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+ OBJ_CRC32=$(OBJ_CRC32_C)
+diff -dPNur p7zip_4.65/makefile.rules p7zip_4.65-new/makefile.rules
+--- p7zip_4.65/makefile.rules 2009-02-09 21:03:16.000000000 +0100
++++ p7zip_4.65-new/makefile.rules 2009-06-14 02:52:48.000000000 +0200
+@@ -558,3 +558,5 @@
+ 7zCrcT8.o : ../../../../C/7zCrcT8.c
+ $(CC) $(CFLAGS) ../../../../C/7zCrcT8.c
+
++rccrecode.o : ../../../../C/rccrecode.c
++ $(CC) $(CFLAGS) ../../../../C/rccrecode.c
diff --git a/app-arch/p7zip/files/p7zip_4.65-libun7zip.patch b/app-arch/p7zip/files/p7zip_4.65-libun7zip.patch
new file mode 100644
index 0000000..7646c3f
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_4.65-libun7zip.patch
@@ -0,0 +1,550 @@
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Un7Zip/makefile p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/makefile
+--- p7zip_4.65/CPP/7zip/Bundles/Un7Zip/makefile 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/makefile 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1,137 @@
++PROG=libun7zip.so
++
++LOCAL_FLAGS= \
++ -DEXTRACT_ONLY \
++ -DNO_READ_FROM_CODER \
++ -D_SFX
++
++include ../../../../makefile.crc32
++include ../../../../makefile.machine
++
++LOCAL_SHARED=$(LINK_SHARED)
++LIBS=$(LOCAL_LIBS_DLL)
++
++SFX_CONSOLE_OBJS = \
++ Un7Zip.o
++
++CONSOLE_OBJS = \
++ ConsoleClose.o \
++ ExtractCallbackConsole.o \
++ ExtractCallbackNULL.o \
++ List.o \
++ OpenCallbackConsole.o \
++ UserInputUtils.o \
++
++# NewHandler.o
++COMMON_OBJS = \
++ CommandLineParser.o \
++ CRC.o \
++ IntToString.o \
++ StdInStream.o \
++ StdOutStream.o \
++ MyString.o \
++ MyWindows.o\
++ StringConvert.o \
++ MyVector.o \
++ Wildcard.o \
++
++# DLL.o
++WIN_OBJS = \
++ Error.o \
++ FileDir.o \
++ FileFind.o \
++ FileIO.o \
++ FileName.o \
++ PropVariant.o \
++ PropVariantConversions.o \
++ Synchronization.o \
++ System.o
++
++7ZIP_COMMON_OBJS = \
++ CreateCoder.o \
++ FilePathAutoRename.o \
++ FileStreams.o \
++ InBuffer.o \
++ FilterCoder.o \
++ LimitedStreams.o \
++ LockedStream.o \
++ OutBuffer.o \
++ ProgressUtils.o \
++ StreamBinder.o \
++ StreamObjects.o \
++ StreamUtils.o \
++ VirtThread.o \
++
++UI_COMMON_OBJS = \
++ ArchiveExtractCallback.o \
++ ArchiveOpenCallback.o \
++ DefaultName.o \
++ LoadCodecs.o \
++ Extract.o \
++ ExtractingFilePath.o \
++ OpenArchive.o \
++ PropIDUtils.o \
++
++AR_COMMON_OBJS = \
++ CoderMixer2.o \
++ CoderMixer2MT.o \
++ CrossThreadProgress.o \
++ ItemNameUtils.o \
++ OutStreamWithCRC.o \
++
++
++7Z_OBJS = \
++ 7zDecode.o \
++ 7zExtract.o \
++ 7zFolderOutStream.o \
++ 7zHandler.o \
++ 7zHeader.o \
++ 7zIn.o \
++ 7zRegister.o \
++
++COMPRESS_OBJS = \
++ BranchCoder.o \
++ Bcj2Coder.o \
++ Bcj2Register.o \
++ BcjCoder.o \
++ BcjRegister.o \
++ CopyCoder.o \
++ CopyRegister.o \
++ LzmaDecoder.o \
++ LzmaRegister.o \
++ PpmdDecoder.o \
++ PpmdRegister.o \
++
++CRYPTO_OBJS = \
++ 7zAes.o \
++ 7zAesRegister.o \
++ MyAes.o \
++
++# Alloc.o
++C_OBJS = \
++ Bra86.o \
++ LzmaDec.o \
++ Threads.o \
++ Aes.o \
++ Sha256.o \
++
++OBJS = \
++ myGetTickCount.o\
++ wine_date_and_time.o\
++ mySplitCommandLine.o\
++ $(SFX_CONSOLE_OBJS) \
++ $(CONSOLE_OBJS) \
++ $(COMMON_OBJS) \
++ $(WIN_OBJS) \
++ $(7ZIP_COMMON_OBJS) \
++ $(UI_COMMON_OBJS) \
++ $(AR_COMMON_OBJS) \
++ $(7Z_OBJS) \
++ $(COMPRESS_OBJS) \
++ $(CRYPTO_OBJS) \
++ $(C_OBJS) \
++ $(OBJ_CRC32)
++
++
++include ../../../../makefile.glb
++
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Un7Zip/makefile.depend p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/makefile.depend
+--- p7zip_4.65/CPP/7zip/Bundles/Un7Zip/makefile.depend 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/makefile.depend 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1 @@
++
+\ No newline at end of file
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Un7Zip/makefile.list p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/makefile.list
+--- p7zip_4.65/CPP/7zip/Bundles/Un7Zip/makefile.list 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/makefile.list 2009-06-14 23:16:37.000000000 +0200
+@@ -0,0 +1,10 @@
++CXXFLAGS += $(CC_SHARED)
++CFLAGS += $(CC_SHARED)
++
++include ../../../../makefile.rules
++
++ExtractCallbackNULL.o : ../../UI/Console/ExtractCallbackNULL.cpp
++ $(CXX) $(CFLAGS) ../../UI/Console/ExtractCallbackNULL.cpp
++
++Un7Zip.o : ./Un7Zip.cpp
++ $(CXX) $(CFLAGS) ./Un7Zip.cpp
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Un7Zip/testlib.c p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/testlib.c
+--- p7zip_4.65/CPP/7zip/Bundles/Un7Zip/testlib.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/testlib.c 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1,7 @@
++
++#include "u7zip.h"
++
++int main(int argc, char *argv[])
++{
++ return un7zip(argv[1], "/tmp", 0);
++}
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Un7Zip/u7zip.h p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/u7zip.h
+--- p7zip_4.65/CPP/7zip/Bundles/Un7Zip/u7zip.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/u7zip.h 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1,19 @@
++#ifndef __UN7ZIP_H
++#define __UN7ZIP_H
++
++#define LIST_7Z 0
++#define TEST_7Z 1
++#define EXTRACT_7Z 2
++
++#define S_OK 0x00000000L
++#define S_FALSE 0x00000001L
++#define E_NOTIMPL 0x80004001L
++#define E_NOINTERFACE 0x80004002L
++#define E_ABORT 0x80004004L
++#define E_FAIL 0x80004005L
++#define E_OUTOFMEMORY 0x8007000EL
++#define E_INVALIDARG 0x80070057L
++
++int un7zip(char *name, char *dir, int command);
++
++#endif
+diff -dPNur p7zip_4.65/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp
+--- p7zip_4.65/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/Bundles/Un7Zip/Un7Zip.cpp 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1,148 @@
++// Un7Zip.cpp
++
++#include "StdAfx.h"
++
++#include "Common/MyInitGuid.h"
++
++#include "Common/StdOutStream.h"
++#include "Common/Wildcard.h"
++#include "Common/StringConvert.h"
++#include "Common/MyCom.h"
++#include "Common/MyException.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileName.h"
++#include "Windows/Defs.h"
++
++#include "../../IPassword.h"
++#include "../../ICoder.h"
++
++#include "../../UI/Common/OpenArchive.h"
++#include "../../UI/Common/DefaultName.h"
++#include "../../UI/Common/ExitCode.h"
++#include "../../UI/Common/Extract.h"
++
++#include "../../UI/Console/List.h"
++#include "../../UI/Console/OpenCallbackConsole.h"
++#include "../../UI/Console/ExtractCallbackNULL.h"
++
++
++static int Un7Zip(char *name, char *dir, int command);
++
++extern "C" {
++
++int un7zip(char *name, char *dir, int command)
++{
++ return Un7Zip(name, dir, command);
++}
++
++}
++
++using namespace NWindows;
++using namespace NFile;
++
++static const wchar_t *kUniversalWildcard = L"*";
++static bool AddNameToCensor(NWildcard::CCensor &wildcardCensor)
++{
++ wildcardCensor.AddItem(true, kUniversalWildcard, false);
++ return true;
++}
++
++static int Un7Zip(char *name, char *dir, int commands)
++{
++
++ CStdOutStream *g_StdStream = &g_StdOut;
++
++ NWildcard::CCensor wildcardCensor;
++ AddNameToCensor(wildcardCensor);
++ bool passwordEnabled = 1;
++ UString password = L"null";
++
++ UString outputDir= MultiByteToUnicodeString(dir);
++ UString archiveName = MultiByteToUnicodeString(name);
++
++ NFind::CFileInfoW archiveFileInfo;
++
++ if (!NFind::FindFile(archiveName, archiveFileInfo))
++ return S_FALSE;
++ if (archiveFileInfo.IsDir())
++ return S_FALSE;
++
++ {
++
++ UStringVector v1, v2;
++ v1.Add(archiveName);
++ v2.Add(archiveName);
++
++
++ CCodecs *codecs = new CCodecs;
++ CMyComPtr<
++ #ifdef EXTERNAL_CODECS
++ ICompressCodecsInfo
++ #else
++ IUnknown
++ #endif
++ > compressCodecsInfo = codecs;
++ HRESULT result = codecs->Load();
++ if (result != S_OK)
++ throw CSystemException(result);
++
++ const NWildcard::CCensorNode &wildcardCensorHead =
++ wildcardCensor.Pairs.Front().Head;
++
++ if(commands > 0)
++ {
++ CExtractCallbackNULL *ecs = new CExtractCallbackNULL;
++ CMyComPtr<IFolderArchiveExtractCallback> extractCallback = ecs;
++ ecs->OutStream = g_StdStream;
++ ecs->PasswordIsDefined = passwordEnabled;
++ ecs->Password = password;
++ ecs->Init();
++
++ COpenCallbackConsole openCallback;
++ openCallback.OutStream = g_StdStream;
++ openCallback.PasswordIsDefined = passwordEnabled;
++ openCallback.Password = password;
++
++ CExtractOptions eo;
++ eo.StdOutMode = false;
++ eo.PathMode = NExtract::NPathMode::kFullPathnames;
++ if(commands == 1)
++ eo.TestMode = 1;
++ else
++ eo.TestMode = 0;
++ eo.OverwriteMode = NExtract::NOverwriteMode::kWithoutPrompt;
++ eo.OutputDir = outputDir;
++ eo.YesToAll = 1;
++
++ UString errorMessage;
++ CDecompressStat stat;
++
++ HRESULT result = DecompressArchives(
++ codecs, CIntVector(),
++ v1, v2,
++ wildcardCensorHead,
++ eo, &openCallback, ecs, errorMessage, stat);
++
++ if (ecs->NumArchiveErrors != 0 || ecs->NumFileErrors != 0)
++ return S_FALSE;
++ if (result != S_OK)
++ return S_FALSE;
++ }
++ else
++ {
++ UInt64 numErrors = 0;
++ HRESULT result = ListArchives(
++ codecs, CIntVector(),
++ v1, v2,
++ wildcardCensorHead,
++ true, false,
++ passwordEnabled,
++ password, numErrors);
++
++ if (result != S_OK)
++ return S_FALSE;;
++ }
++ }
++ return S_OK;
++}
+diff -dPNur p7zip_4.65/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp p7zip_4.65-new/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp
+--- p7zip_4.65/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/UI/Console/ExtractCallbackNULL.cpp 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1,130 @@
++// ExtractCallbackNULL.cpp
++
++#include "StdAfx.h"
++
++#include "ExtractCallbackNULL.h"
++#include "UserInputUtils.h"
++#include "ConsoleClose.h"
++
++#include "Common/Wildcard.h"
++
++#include "Windows/FileDir.h"
++#include "Windows/FileFind.h"
++#include "Windows/Time.h"
++#include "Windows/Defs.h"
++#include "Windows/PropVariant.h"
++#include "Windows/Error.h"
++#include "Windows/PropVariantConversions.h"
++
++#include "../../Common/FilePathAutoRename.h"
++
++#include "../Common/ExtractingFilePath.h"
++
++using namespace NWindows;
++using namespace NFile;
++using namespace NDirectory;
++
++STDMETHODIMP CExtractCallbackNULL::SetTotal(UInt64 size)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetCompleted(const UInt64 *completeValue)
++{
++ if (NConsoleClose::TestBreakSignal())
++ return E_ABORT;
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::AskOverwrite(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer)
++{
++
++ NUserAnswerMode::EEnum overwriteAnswer = ScanUserYesNoAllQuit(OutStream);
++
++ switch(overwriteAnswer)
++ {
++ case NUserAnswerMode::kQuit:
++ return E_ABORT;
++ case NUserAnswerMode::kNo:
++ *answer = NOverwriteAnswer::kNo;
++ break;
++ case NUserAnswerMode::kNoAll:
++ *answer = NOverwriteAnswer::kNoToAll;
++ break;
++ case NUserAnswerMode::kYesAll:
++ *answer = NOverwriteAnswer::kYesToAll;
++ break;
++ case NUserAnswerMode::kYes:
++ *answer = NOverwriteAnswer::kYes;
++ break;
++ case NUserAnswerMode::kAutoRenameAll:
++ *answer = NOverwriteAnswer::kAutoRename;
++ break;
++ default:
++ return E_FAIL;
++ }
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::PrepareOperation(const wchar_t *name, bool /* isFolder */, Int32 askExtractMode, const UInt64 *position)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::MessageError(const wchar_t *message)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::SetOperationResult(Int32 operationResult, bool encrypted)
++{
++ return S_OK;
++}
++
++STDMETHODIMP CExtractCallbackNULL::CryptoGetTextPassword(BSTR *password)
++{
++ if (!PasswordIsDefined)
++ {
++ Password = GetPassword(OutStream);
++ PasswordIsDefined = true;
++ }
++ return StringToBstr(Password, password);
++}
++
++HRESULT CExtractCallbackNULL::BeforeOpen(const wchar_t *name)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::OpenResult(const wchar_t *name, HRESULT result, bool encrypted)
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ThereAreNoFiles()
++{
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::ExtractResult(HRESULT result)
++{
++ if (result == S_OK)
++ return result;
++ if (result == E_ABORT)
++ return result;
++ if (result == E_OUTOFMEMORY)
++ return result;
++ return S_OK;
++}
++
++HRESULT CExtractCallbackNULL::SetPassword(const UString &password)
++{
++ PasswordIsDefined = true;
++ Password = password;
++ return S_OK;
++}
+diff -dPNur p7zip_4.65/CPP/7zip/UI/Console/ExtractCallbackNULL.h p7zip_4.65-new/CPP/7zip/UI/Console/ExtractCallbackNULL.h
+--- p7zip_4.65/CPP/7zip/UI/Console/ExtractCallbackNULL.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_4.65-new/CPP/7zip/UI/Console/ExtractCallbackNULL.h 2009-06-14 23:15:12.000000000 +0200
+@@ -0,0 +1,65 @@
++// ExtractCallbackNULL.h
++
++#ifndef __EXTRACTCALLBACKCONSOLE_H
++#define __EXTRACTCALLBACKCONSOLE_H
++
++#include "Common/MyString.h"
++#include "Common/StdOutStream.h"
++#include "../../Common/FileStreams.h"
++#include "../../IPassword.h"
++#include "../../Archive/IArchive.h"
++#include "../Common/ArchiveExtractCallback.h"
++
++class CExtractCallbackNULL:
++ public IExtractCallbackUI,
++ public ICryptoGetTextPassword,
++ public CMyUnknownImp
++{
++public:
++ MY_UNKNOWN_IMP2(IFolderArchiveExtractCallback, ICryptoGetTextPassword)
++
++ STDMETHOD(SetTotal)(UInt64 total);
++ STDMETHOD(SetCompleted)(const UInt64 *completeValue);
++
++ // IFolderArchiveExtractCallback
++ STDMETHOD(AskOverwrite)(
++ const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
++ const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
++ Int32 *answer);
++ STDMETHOD (PrepareOperation)(const wchar_t *name, bool isFolder, Int32 askExtractMode, const UInt64 *position);
++
++ STDMETHOD(MessageError)(const wchar_t *message);
++ STDMETHOD(SetOperationResult)(Int32 operationResult, bool encrypted);
++
++ // ICryptoGetTextPassword
++ STDMETHOD(CryptoGetTextPassword)(BSTR *password);
++
++ HRESULT BeforeOpen(const wchar_t *name);
++ HRESULT OpenResult(const wchar_t *name, HRESULT result, bool encrypted);
++ HRESULT ThereAreNoFiles();
++ HRESULT ExtractResult(HRESULT result);
++
++ HRESULT SetPassword(const UString &password);
++
++public:
++ bool PasswordIsDefined;
++ UString Password;
++
++ UInt64 NumArchives;
++ UInt64 NumArchiveErrors;
++ UInt64 NumFileErrors;
++ UInt64 NumFileErrorsInCurrentArchive;
++
++ CStdOutStream *OutStream;
++
++ void Init()
++ {
++ NumArchives = 0;
++ NumArchiveErrors = 0;
++ NumFileErrors = 0;
++ NumFileErrorsInCurrentArchive = 0;
++ }
++
++};
++
++#endif
diff --git a/app-arch/p7zip/files/p7zip_9.04-ds-rusxmms.patch b/app-arch/p7zip/files/p7zip_9.04-ds-rusxmms.patch
new file mode 100644
index 0000000..7678241
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_9.04-ds-rusxmms.patch
@@ -0,0 +1,294 @@
+diff -dPNur p7zip-9.04~dfsg.1/C/rccrecode.c p7zip-9.04~dfsg.1-ds/C/rccrecode.c
+--- p7zip-9.04~dfsg.1/C/rccrecode.c 1970-01-01 03:00:00.000000000 +0300
++++ p7zip-9.04~dfsg.1-ds/C/rccrecode.c 2009-10-28 03:29:23.000000000 +0300
+@@ -0,0 +1,71 @@
++#include <pthread.h>
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define ARC_CLASS 0
++#define OUT_CLASS 1
++#define ARCOUT_CLASS 0
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int initialized = 0;
++static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
++
++void *rcc_init() {
++ rcc_context ctx;
++
++ pthread_mutex_lock(&mutex);
++ if (!initialized) {
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "zip");
++ rccInitDb4(NULL, NULL, 0);
++ }
++ initialized++;
++ pthread_mutex_unlock(&mutex);
++
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) rccInitDb4(ctx, NULL, 0);
++ if (ctx) rccLoad(ctx, "zip");
++
++ return ctx;
++}
++
++
++void rcc_free(void *ctx) {
++ if (ctx) rccFreeContext((rcc_context)ctx);
++
++ pthread_mutex_lock(&mutex);
++ if (initialized == 1) rccFree();
++ initialized--;
++ pthread_mutex_unlock(&mutex);
++}
++
++
++char *rcc_read(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, ARC_CLASS, OUT_CLASS, string, size, NULL);
++}
++
++char *rcc_write(rcc_context ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, OUT_CLASS, ARCOUT_CLASS, string, size, NULL);
++}
+diff -dPNur p7zip-9.04~dfsg.1/C/rccrecode.h p7zip-9.04~dfsg.1-ds/C/rccrecode.h
+--- p7zip-9.04~dfsg.1/C/rccrecode.h 1970-01-01 03:00:00.000000000 +0300
++++ p7zip-9.04~dfsg.1-ds/C/rccrecode.h 2009-10-28 03:29:23.000000000 +0300
+@@ -0,0 +1,17 @@
++#ifndef _RCC_RECODE_H
++#define _RCC_RECODE_H
++
++# ifdef __cplusplus
++extern "C" {
++# endif
++
++ void *rcc_init();
++ void rcc_free(void *ctx);
++ char *rcc_read(void *ctx, const char *string, size_t size);
++ char *rcc_write(void *ctx, const char *string, size_t size);
++
++# ifdef __cplusplus
++}
++# endif
++
++#endif /* _RCC_RECODE_H */
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipIn.cpp p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipIn.cpp
+--- p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipIn.cpp 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipIn.cpp 2009-10-28 03:49:06.000000000 +0300
+@@ -9,6 +9,8 @@
+ #include "../../Common/LimitedStreams.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ #include "ZipIn.h"
+
+ #define Get16(p) GetUi16(p)
+@@ -17,7 +19,17 @@
+
+ namespace NArchive {
+ namespace NZip {
+-
++
++CInArchive::CInArchive()
++{
++ rccctx = rcc_init();
++}
++
++CInArchive::~CInArchive()
++{
++ rcc_free(rccctx);
++}
++
+ HRESULT CInArchive::Open(IInStream *stream, const UInt64 *searchHeaderSizeLimit)
+ {
+ _inBufMode = false;
+@@ -200,12 +212,20 @@
+
+ void CInArchive::ReadFileName(UInt32 nameSize, AString &dest)
+ {
++ char *rccrec;
++
+ if (nameSize == 0)
+ dest.Empty();
+ char *p = dest.GetBuffer((int)nameSize);
+ SafeReadBytes(p, nameSize);
+ p[nameSize] = 0;
+ dest.ReleaseBuffer();
++
++ rccrec = rcc_read(rccctx, (LPCSTR)dest, 0);
++ if (rccrec) {
++ dest = rccrec;
++ free(rccrec);
++ }
+ }
+
+ void CInArchive::GetArchiveInfo(CInArchiveInfo &archiveInfo) const
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipIn.h p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipIn.h
+--- p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipIn.h 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipIn.h 2009-10-28 03:29:23.000000000 +0300
+@@ -114,6 +114,10 @@
+ ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
+ IInStream* CreateStream();
+
++ void *rccctx;
++ CInArchive();
++ ~CInArchive();
++
+ bool IsOpen() const { return m_Stream != NULL; }
+ };
+
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipOut.h p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipOut.h
+--- p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipOut.h 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipOut.h 2009-10-28 05:49:05.000000000 +0300
+@@ -49,6 +49,11 @@
+ void CreateStreamForCompressing(IOutStream **outStream);
+ void CreateStreamForCopying(ISequentialOutStream **outStream);
+ void SeekToPackedDataPosition();
++
++ void *rccctx;
++ COutArchive();
++ ~COutArchive();
++ void Recode(CItem &item);
+ };
+
+ }}
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipUpdate.cpp p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipUpdate.cpp
+--- p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2009-10-28 05:48:04.000000000 +0300
+@@ -87,6 +87,7 @@
+ item.NtfsATime = ui.NtfsATime;
+ item.NtfsCTime = ui.NtfsCTime;
+ item.NtfsTimeIsDefined = ui.NtfsTimeIsDefined;
++ archive.Recode(item);
+ }
+ else
+ isDir = item.IsDir();
+@@ -359,9 +360,11 @@
+ item.NtfsCTime = ui.NtfsCTime;
+ item.NtfsTimeIsDefined = ui.NtfsTimeIsDefined;
+
++ archive.Recode(item);
++
+ item.CentralExtra.RemoveUnknownSubBlocks();
+ item.LocalExtra.RemoveUnknownSubBlocks();
+-
++
+ archive.PrepareWriteCompressedData2((UInt16)item.Name.Length(), item.UnPackSize, item.PackSize, item.LocalExtra.HasWzAesField());
+ item.LocalHeaderPosition = archive.GetCurrentPosition();
+ archive.SeekToPackedDataPosition();
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Alone/makefile p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Alone/makefile
+--- p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Alone/makefile 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Alone/makefile 2009-10-28 03:29:24.000000000 +0300
+@@ -244,6 +244,7 @@
+
+
+ OBJS=\
++rccrecode.o \
+ myGetTickCount.o \
+ wine_date_and_time.o \
+ myAddExeFlag.o \
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Alone/makefile.list p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Alone/makefile.list
+--- p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Alone/makefile.list 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Alone/makefile.list 2009-10-28 03:40:17.000000000 +0300
+@@ -192,6 +192,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/Aes.c \
+ ../../../../C/7zStream.c \
+ ../../../../C/Bra.c \
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Format7zFree/makefile p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Format7zFree/makefile
+--- p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Format7zFree/makefile 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Format7zFree/makefile 2009-10-28 03:29:24.000000000 +0300
+@@ -284,6 +284,7 @@
+
+
+ OBJS = \
++ rccrecode.o \
+ wine_date_and_time.o \
+ myGetTickCount.o \
+ $(COMMON_OBJS) \
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Format7zFree/makefile.list p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Format7zFree/makefile.list
+--- p7zip-9.04~dfsg.1/CPP/7zip/Bundles/Format7zFree/makefile.list 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Bundles/Format7zFree/makefile.list 2009-10-28 03:34:02.000000000 +0300
+@@ -218,6 +218,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/7zBuf2.c \
+ ../../../../C/7zStream.c \
+ ../../../../C/Aes.c \
+diff -dPNur p7zip-9.04~dfsg.1/makefile.machine p7zip-9.04~dfsg.1-ds/makefile.machine
+--- p7zip-9.04~dfsg.1/makefile.machine 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/makefile.machine 2009-10-28 03:29:24.000000000 +0300
+@@ -14,7 +14,7 @@
+ CC_SHARED=-fPIC
+ LINK_SHARED=-fPIC -shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+ OBJ_CRC32=$(OBJ_CRC32_C)
+diff -dPNur p7zip-9.04~dfsg.1/makefile.rules p7zip-9.04~dfsg.1-ds/makefile.rules
+--- p7zip-9.04~dfsg.1/makefile.rules 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/makefile.rules 2009-10-28 03:29:24.000000000 +0300
+@@ -586,3 +586,5 @@
+ 7zCrcT8.o : ../../../../C/7zCrcT8.c
+ $(CC) $(CFLAGS) ../../../../C/7zCrcT8.c
+
++rccrecode.o : ../../../../C/rccrecode.c
++ $(CC) $(CFLAGS) ../../../../C/rccrecode.c
+diff -dPNur p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipOut.cpp p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipOut.cpp
+--- p7zip-9.04~dfsg.1/CPP/7zip/Archive/Zip/ZipOut.cpp 2009-06-27 18:18:14.000000000 +0400
++++ p7zip-9.04~dfsg.1-ds/CPP/7zip/Archive/Zip/ZipOut.cpp 2009-10-28 05:49:01.000000000 +0300
+@@ -7,9 +7,24 @@
+ #include "../../Common/OffsetStream.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
+
++COutArchive::COutArchive() {
++ rccctx = rcc_init();
++}
++
++COutArchive::~COutArchive() {
++ rcc_free(rccctx);
++}
++
++void COutArchive::Recode(CItem &item) {
++ char *rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) item.Name = rccrec;
++}
++
+ void COutArchive::Create(IOutStream *outStream)
+ {
+ if (!m_OutBuffer.Create(1 << 16))
diff --git a/app-arch/p7zip/files/p7zip_9.13-ds-dynbuf.patch b/app-arch/p7zip/files/p7zip_9.13-ds-dynbuf.patch
new file mode 100644
index 0000000..7f16a3a
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_9.13-ds-dynbuf.patch
@@ -0,0 +1,12 @@
+diff -dPNur p7zip_9.13/CPP/Common/DynamicBuffer.h p7zip_9.13-ds/CPP/Common/DynamicBuffer.h
+--- p7zip_9.13/CPP/Common/DynamicBuffer.h 2008-08-25 21:40:32.000000000 +0200
++++ p7zip_9.13-ds/CPP/Common/DynamicBuffer.h 2013-07-14 01:31:24.000000000 +0200
+@@ -17,7 +17,7 @@
+ else
+ delta = 4;
+ delta = MyMax(delta, size);
+- SetCapacity(this->_capacity + delta);
++ this->SetCapacity(this->_capacity + delta);
+ }
+ public:
+ CDynamicBuffer(): CBuffer<T>() {};
diff --git a/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch b/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch
new file mode 100644
index 0000000..df27ac2
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch
@@ -0,0 +1,307 @@
+diff -dPNur p7zip_9.13/C/rccrecode.c p7zip_9.13-rusxmms/C/rccrecode.c
+--- p7zip_9.13/C/rccrecode.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_9.13-rusxmms/C/rccrecode.c 2010-07-31 20:32:27.000000000 +0200
+@@ -0,0 +1,73 @@
++#include <pthread.h>
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define ARC_CLASS 0
++#define OUT_CLASS 1
++#define ARCOUT_CLASS 0
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int initialized = 0;
++static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
++
++void *rcc_init() {
++ rcc_context ctx;
++
++ pthread_mutex_lock(&mutex);
++ if (!initialized) {
++ rccInit();
++// rccInitDefaultContext(NULL, 0, 0, classes, 0);
++// rccInitDb4(NULL, NULL, 0);
++// rccLoad(NULL, "zip");
++ }
++ initialized++;
++ pthread_mutex_unlock(&mutex);
++
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) {
++ rccInitDb4(ctx, NULL, 0);
++ rccLoad(ctx, "zip");
++ }
++
++ return ctx;
++}
++
++
++void rcc_free(void *ctx) {
++ if (ctx) rccFreeContext((rcc_context)ctx);
++
++ pthread_mutex_lock(&mutex);
++ if (initialized == 1) rccFree();
++ initialized--;
++ pthread_mutex_unlock(&mutex);
++}
++
++
++char *rcc_read(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, ARC_CLASS, OUT_CLASS, string, size, NULL);
++}
++
++char *rcc_write(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, OUT_CLASS, ARCOUT_CLASS, string, size, NULL);
++}
+diff -dPNur p7zip_9.13/C/rccrecode.h p7zip_9.13-rusxmms/C/rccrecode.h
+--- p7zip_9.13/C/rccrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_9.13-rusxmms/C/rccrecode.h 2010-07-31 14:07:34.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef _RCC_RECODE_H
++#define _RCC_RECODE_H
++
++# ifdef __cplusplus
++extern "C" {
++# endif
++
++ void *rcc_init();
++ void rcc_free(void *ctx);
++ char *rcc_read(void *ctx, const char *string, size_t size);
++ char *rcc_write(void *ctx, const char *string, size_t size);
++
++# ifdef __cplusplus
++}
++# endif
++
++#endif /* _RCC_RECODE_H */
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.cpp p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.cpp
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.cpp 2010-04-25 17:14:42.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.cpp 2010-07-31 20:33:42.000000000 +0200
+@@ -9,6 +9,8 @@
+ #include "../../Common/LimitedStreams.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ #include "ZipIn.h"
+
+ #define Get16(p) GetUi16(p)
+@@ -17,7 +19,17 @@
+
+ namespace NArchive {
+ namespace NZip {
+-
++
++CInArchive::CInArchive()
++{
++ rccctx = rcc_init();
++}
++
++CInArchive::~CInArchive()
++{
++ rcc_free(rccctx);
++}
++
+ HRESULT CInArchive::Open(IInStream *stream, const UInt64 *searchHeaderSizeLimit)
+ {
+ _inBufMode = false;
+@@ -200,12 +212,20 @@
+
+ void CInArchive::ReadFileName(UInt32 nameSize, AString &dest)
+ {
++ char *rccrec;
++
+ if (nameSize == 0)
+ dest.Empty();
+ char *p = dest.GetBuffer((int)nameSize);
+ SafeReadBytes(p, nameSize);
+ p[nameSize] = 0;
+ dest.ReleaseBuffer();
++
++ rccrec = rcc_read(rccctx, (LPCSTR)dest, 0);
++ if (rccrec) {
++ dest = rccrec;
++ free(rccrec);
++ }
+ }
+
+ void CInArchive::ReadExtra(UInt32 extraSize, CExtraBlock &extraBlock,
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.cpp.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.cpp.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.h p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.h
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.h 2010-04-25 17:14:27.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.h 2010-07-31 20:33:42.000000000 +0200
+@@ -117,6 +117,10 @@
+ ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
+ IInStream* CreateStream();
+
++ void *rccctx;
++ CInArchive();
++ ~CInArchive();
++
+ bool IsOpen() const { return m_Stream != NULL; }
+ };
+
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.h.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.h.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.cpp p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.cpp
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.cpp 2010-04-25 17:14:42.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.cpp 2010-07-31 20:33:42.000000000 +0200
+@@ -6,9 +6,24 @@
+
+ #include "ZipOut.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
+
++COutArchive::COutArchive() {
++ rccctx = rcc_init();
++}
++
++COutArchive::~COutArchive() {
++ rcc_free(rccctx);
++}
++
++void COutArchive::Recode(CItem &item) {
++ char *rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) item.Name = rccrec;
++}
++
+ void COutArchive::Create(IOutStream *outStream)
+ {
+ if (!m_OutBuffer.Create(1 << 16))
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.cpp.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.cpp.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.h p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.h
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.h 2010-04-25 17:14:27.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.h 2010-07-31 20:33:42.000000000 +0200
+@@ -49,6 +49,11 @@
+ void CreateStreamForCompressing(IOutStream **outStream);
+ void CreateStreamForCopying(ISequentialOutStream **outStream);
+ void SeekToPackedDataPosition();
++
++ void *rccctx;
++ COutArchive();
++ ~COutArchive();
++ void Recode(CItem &item);
+ };
+
+ }}
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipUpdate.cpp p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipUpdate.cpp
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2010-04-25 17:25:47.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2010-07-31 20:33:42.000000000 +0200
+@@ -86,6 +86,7 @@
+ item.NtfsATime = ui.NtfsATime;
+ item.NtfsCTime = ui.NtfsCTime;
+ item.NtfsTimeIsDefined = ui.NtfsTimeIsDefined;
++ archive.Recode(item);
+ }
+ else
+ isDir = item.IsDir();
+@@ -358,9 +359,11 @@
+ item.NtfsCTime = ui.NtfsCTime;
+ item.NtfsTimeIsDefined = ui.NtfsTimeIsDefined;
+
++ archive.Recode(item);
++
+ item.CentralExtra.RemoveUnknownSubBlocks();
+ item.LocalExtra.RemoveUnknownSubBlocks();
+-
++
+ archive.PrepareWriteCompressedData2((UInt16)item.Name.Length(), item.UnPackSize, item.PackSize, item.LocalExtra.HasWzAesField());
+ item.LocalHeaderPosition = archive.GetCurrentPosition();
+ archive.SeekToPackedDataPosition();
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipUpdate.cpp.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipUpdate.cpp.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile
+--- p7zip_9.13/CPP/7zip/Bundles/Alone/makefile 2010-03-16 20:15:59.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile 2010-07-31 20:33:42.000000000 +0200
+@@ -251,6 +251,7 @@
+
+
+ OBJS=\
++rccrecode.o \
+ myGetTickCount.o \
+ wine_date_and_time.o \
+ myAddExeFlag.o \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.list p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.list
+--- p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.list 2010-03-16 20:17:05.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.list 2010-07-31 20:33:42.000000000 +0200
+@@ -194,6 +194,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/Aes.c \
+ ../../../../C/7zStream.c \
+ ../../../../C/Alloc.c \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.list.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.list.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile
+--- p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile 2010-03-16 20:49:21.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile 2010-07-31 20:33:42.000000000 +0200
+@@ -298,6 +298,7 @@
+
+
+ OBJS = \
++ rccrecode.o \
+ wine_date_and_time.o \
+ myGetTickCount.o \
+ $(COMMON_OBJS) \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.list p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.list
+--- p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.list 2010-03-16 20:50:11.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.list 2010-07-31 20:33:42.000000000 +0200
+@@ -224,6 +224,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/7zBuf2.c \
+ ../../../../C/7zStream.c \
+ ../../../../C/Aes.c \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.list.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.list.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.orig
+diff -dPNur p7zip_9.13/makefile.machine p7zip_9.13-rusxmms/makefile.machine
+--- p7zip_9.13/makefile.machine 2010-05-30 10:33:48.000000000 +0200
++++ p7zip_9.13-rusxmms/makefile.machine 2010-07-31 20:33:42.000000000 +0200
+@@ -15,7 +15,7 @@
+ CC_SHARED=-fPIC
+ LINK_SHARED=-fPIC -shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+ OBJ_CRC32=$(OBJ_CRC32_C)
+diff -dPNur p7zip_9.13/makefile.machine.orig p7zip_9.13-rusxmms/makefile.machine.orig
+diff -dPNur p7zip_9.13/makefile.rules p7zip_9.13-rusxmms/makefile.rules
+--- p7zip_9.13/makefile.rules 2010-03-16 20:18:44.000000000 +0100
++++ p7zip_9.13-rusxmms/makefile.rules 2010-07-31 20:33:42.000000000 +0200
+@@ -655,3 +655,5 @@
+ LangUtils.o : ../../UI/FileManager/LangUtils.cpp
+ $(CXX) $(CXXFLAGS) ../../UI/FileManager/LangUtils.cpp
+
++rccrecode.o : ../../../../C/rccrecode.c
++ $(CC) $(CFLAGS) ../../../../C/rccrecode.c
+diff -dPNur p7zip_9.13/makefile.rules.orig p7zip_9.13-rusxmms/makefile.rules.orig
+diff -dPNur p7zip_9.13/p7zip_9.04-ds-rusxmms.patch p7zip_9.13-rusxmms/p7zip_9.04-ds-rusxmms.patch
diff --git a/app-arch/p7zip/p7zip-4.27-r1.ebuild b/app-arch/p7zip/p7zip-4.27-r1.ebuild
new file mode 100644
index 0000000..18f4baf
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.27-r1.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.27.ebuild,v 1.5 2005/10/04 10:47:05 blubb Exp $
+
+inherit eutils toolchain-funcs multilib
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="amd64 ~ppc x86"
+IUSE="static doc"
+
+S=${WORKDIR}/${PN}_${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ use static && epatch "${FILESDIR}"/p7zip-4.16_x86_static.patch
+#SDS
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/p7zip_4.27-libun7zip.patch
+#EDS
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:-O1 -s:${CXXFLAGS}:" \
+ makefile* || die "cleaning up makefiles"
+}
+
+src_compile() {
+ emake all2 || die "compilation error"
+#SDS
+ emake -C 7zip/Bundles/Un7Zip
+#EDS
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7za "/usr/lib/${PN}/7za"
+ make_wrapper 7z "/usr/lib/${PN}/7z"
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zCon.sfx || die "doexe bins"
+ exeinto /usr/$(get_libdir)/${PN}/Codecs
+ doexe bin/Codecs/* || die "doexe Codecs"
+ exeinto /usr/$(get_libdir)/${PN}/Formats
+ doexe bin/Formats/* || die "doexe Formats"
+
+ doman man1/7z.1 man1/7za.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so
+ install -D -m 644 7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h
+#EDS
+
+}
diff --git a/app-arch/p7zip/p7zip-4.30-r1.ebuild b/app-arch/p7zip/p7zip-4.30-r1.ebuild
new file mode 100644
index 0000000..5ad62be
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.30-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.30.ebuild,v 1.1 2005/12/11 19:31:20 radek Exp $
+
+inherit eutils toolchain-funcs multilib
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="amd64 ~hppa ~ppc x86"
+IUSE="static doc"
+
+S=${WORKDIR}/${PN}_${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ use static && epatch "${FILESDIR}"/p7zip-4.16_x86_static.patch
+#SDS
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/p7zip_4.27-libun7zip.patch
+#EDS
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:-O1 -s:${CXXFLAGS}:" \
+ makefile* || die "cleaning up makefiles"
+}
+
+src_compile() {
+ emake all2 || die "compilation error"
+#SDS
+ emake -C 7zip/Bundles/Un7Zip
+#EDS
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7za "/usr/lib/${PN}/7za"
+ make_wrapper 7z "/usr/lib/${PN}/7z"
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zCon.sfx || die "doexe bins"
+ exeinto /usr/$(get_libdir)/${PN}/Codecs
+ doexe bin/Codecs/* || die "doexe Codecs"
+ exeinto /usr/$(get_libdir)/${PN}/Formats
+ doexe bin/Formats/* || die "doexe Formats"
+
+ doman man1/7z.1 man1/7za.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so
+ install -D -m 644 7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h
+#EDS
+}
diff --git a/app-arch/p7zip/p7zip-4.42-r1.ebuild b/app-arch/p7zip/p7zip-4.42-r1.ebuild
new file mode 100644
index 0000000..160e40f
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.42-r1.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.42.ebuild,v 1.4 2006/06/22 20:10:21 blubb Exp $
+
+inherit eutils toolchain-funcs multilib
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="amd64 ~hppa ~ppc x86"
+IUSE="static doc"
+
+S=${WORKDIR}/${PN}_${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ use static && epatch "${FILESDIR}"/p7zip-4.16_x86_static.patch
+#SDS
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/p7zip_4.27-libun7zip.patch || die
+ epatch ${FILESDIR}/p7zip-ds-442.patch || die
+#EDS
+
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ ewarn "Using suboptimal -fPIC upstream makefile due to amd64 being detected. See #126722"
+ cp -f makefile.linux_amd64 makefile.machine
+ fi
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+#SDS
+ emake -C 7zip/Bundles/Un7Zip || die
+#EDS
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/lib/${PN}/7zr"
+ make_wrapper 7za "/usr/lib/${PN}/7za"
+ make_wrapper 7z "/usr/lib/${PN}/7z"
+
+ dobin ${FILESDIR}/p7zip
+
+ # gzip introduced in 4.42 but i havent' got enough time to check it carefully
+ # so for now just leaving it commented
+ # mv needed just as rename, because dobin installs using old name
+ #mv contrib/gzip-like_CLI_wrapper_for_7z/p7zip contrib/gzip-like_CLI_wrapper_for_7z/7zg
+ #dobin contrib/gzip-like_CLI_wrapper_for_7z/7zg
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ exeinto /usr/$(get_libdir)/${PN}/Codecs
+ doexe bin/Codecs/* || die "doexe Codecs"
+ exeinto /usr/$(get_libdir)/${PN}/Formats
+ doexe bin/Formats/* || die "doexe Formats"
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so || die
+ install -D -m 644 7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h || die
+#EDS
+}
diff --git a/app-arch/p7zip/p7zip-4.44-r1.ebuild b/app-arch/p7zip/p7zip-4.44-r1.ebuild
new file mode 100644
index 0000000..9853c2a
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.44-r1.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.44.ebuild,v 1.7 2007/03/25 18:14:50 armin76 Exp $
+
+inherit eutils toolchain-funcs multilib
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 hppa ~ia64 ~ppc ~ppc-macos ~ppc64 sparc x86 ~x86-fbsd"
+IUSE="static doc"
+
+S=${WORKDIR}/${PN}_${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ -e 's:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ ewarn "Using suboptimal -fPIC upstream makefile due to amd64 being detected. See #126722"
+ cp -f makefile.linux_amd64 makefile.machine
+ elif use ppc-macos; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ cp -f makefile.macosx makefile.machine
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+#SDS
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/p7zip_4.44-libun7zip.patch || die
+#EDS
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+#SDS
+ emake -C CPP/7zip/Bundles/Un7Zip || die
+#EDS
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/lib/${PN}/7zr"
+ make_wrapper 7za "/usr/lib/${PN}/7za"
+ make_wrapper 7z "/usr/lib/${PN}/7z"
+
+ dobin ${FILESDIR}/p7zip
+
+ # gzip introduced in 4.42, so beware :)
+ # mv needed just as rename, because dobin installs using old name
+ mv contrib/gzip-like_CLI_wrapper_for_7z/p7zip contrib/gzip-like_CLI_wrapper_for_7z/7zg
+ dobin contrib/gzip-like_CLI_wrapper_for_7z/7zg
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ exeinto /usr/$(get_libdir)/${PN}/Codecs
+ doexe bin/Codecs/* || die "doexe Codecs"
+ exeinto /usr/$(get_libdir)/${PN}/Formats
+ doexe bin/Formats/* || die "doexe Formats"
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 CPP/7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so || die
+ install -D -m 644 CPP/7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h || die
+#EDS
+}
diff --git a/app-arch/p7zip/p7zip-4.44-r2.ebuild b/app-arch/p7zip/p7zip-4.44-r2.ebuild
new file mode 100644
index 0000000..2604381
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.44-r2.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.44.ebuild,v 1.7 2007/03/25 18:14:50 armin76 Exp $
+
+inherit eutils toolchain-funcs multilib
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 hppa ~ia64 ~ppc ~ppc-macos ~ppc64 sparc x86 ~x86-fbsd"
+IUSE="static doc"
+
+S=${WORKDIR}/${PN}_${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ -e 's:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ ewarn "Using suboptimal -fPIC upstream makefile due to amd64 being detected. See #126722"
+ cp -f makefile.linux_amd64 makefile.machine
+ elif use ppc-macos; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ cp -f makefile.macosx makefile.machine
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+#SDS
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/p7zip_4.44-libun7zip.patch || die
+ epatch ${FILESDIR}/p7zip-ds-rcc.patch || die
+#EDS
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+#SDS
+ emake -C CPP/7zip/Bundles/Un7Zip || die
+#EDS
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/lib/${PN}/7zr"
+ make_wrapper 7za "/usr/lib/${PN}/7za"
+ make_wrapper 7z "/usr/lib/${PN}/7z"
+
+ dobin ${FILESDIR}/p7zip
+
+ # gzip introduced in 4.42, so beware :)
+ # mv needed just as rename, because dobin installs using old name
+ mv contrib/gzip-like_CLI_wrapper_for_7z/p7zip contrib/gzip-like_CLI_wrapper_for_7z/7zg
+ dobin contrib/gzip-like_CLI_wrapper_for_7z/7zg
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ exeinto /usr/$(get_libdir)/${PN}/Codecs
+ doexe bin/Codecs/* || die "doexe Codecs"
+ exeinto /usr/$(get_libdir)/${PN}/Formats
+ doexe bin/Formats/* || die "doexe Formats"
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 CPP/7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so || die
+ install -D -m 644 CPP/7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h || die
+#EDS
+}
diff --git a/app-arch/p7zip/p7zip-4.57-r1.ebuild b/app-arch/p7zip/p7zip-4.57-r1.ebuild
new file mode 100644
index 0000000..1d34f55
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.57-r1.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.57.ebuild,v 1.7 2008/03/16 17:40:56 nixnut Exp $
+
+inherit eutils toolchain-funcs multilib
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 hppa ~ia64 ppc ppc64 sparc x86 ~x86-fbsd"
+IUSE="static doc rcc"
+
+DEPEND="rcc? ( app-i18n/librcc )"
+
+S=${WORKDIR}/${PN}_${PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+#SDS
+# Communism forever!
+# Removing nasty removal of non-free code (Rar line). ;)
+#EDS
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ -e 's:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ ewarn "Using suboptimal -fPIC upstream makefile due to amd64 being detected. See #126722"
+ cp -f makefile.linux_amd64 makefile.machine
+ elif [[ ${CHOST} == *-darwin* ]] ; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ cp -f makefile.macosx makefile.machine
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+#SDS
+ # patching to not included nonfree RAR decompression code is higher a sed call
+ # But we're removing nonfree code just in case sed wasnt enough
+# rm -rf CPP/7zip/Compress/Rar
+
+ EPATCH_OPTS="-p1" epatch "${FILESDIR}"/p7zip_4.57-libun7zip.patch || die
+ use rcc && ( epatch "${FILESDIR}"/p7zip_4.57-ds-rusxmms.patch || die )
+
+ find . -maxdepth 1 -name "makefile.linux*" -print0 | xargs -0 sed -i -e "s/LOCAL_LIBS=-lpthread/LOCAL_LIBS=-lpthread -lrcc/"
+#EDS
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+#SDS
+ emake -C CPP/7zip/Bundles/Un7Zip || die
+#EDS
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/lib/${PN}/7zr"
+ make_wrapper 7za "/usr/lib/${PN}/7za"
+ make_wrapper 7z "/usr/lib/${PN}/7z"
+
+ dobin "${FILESDIR}/p7zip" || die
+
+ # gzip introduced in 4.42, so beware :)
+ # mv needed just as rename, because dobin installs using old name
+ mv contrib/gzip-like_CLI_wrapper_for_7z/p7zip contrib/gzip-like_CLI_wrapper_for_7z/7zg || die
+ dobin contrib/gzip-like_CLI_wrapper_for_7z/7zg || die
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/*.so || die "doexe *.so files"
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 CPP/7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so || die
+ install -D -m 644 CPP/7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h || die
+#EDS
+
+# einfo "Please be aware that rar support was removed (it's nonfree)"
+# einfo "You can use app-arch/rar for rar support"
+}
diff --git a/app-arch/p7zip/p7zip-4.65-r2.ebuild b/app-arch/p7zip/p7zip-4.65-r2.ebuild
new file mode 100644
index 0000000..5b3eeb5
--- /dev/null
+++ b/app-arch/p7zip/p7zip-4.65-r2.ebuild
@@ -0,0 +1,150 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-4.65.ebuild,v 1.6 2009/05/03 07:12:52 dirtyepic Exp $
+
+EAPI="2"
+WX_GTK_VER="2.8"
+
+inherit eutils toolchain-funcs multilib wxwidgets
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1 rar? ( unRAR )"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86 ~x86-fbsd"
+#SDS
+IUSE="doc kde rar static wxwidgets rcc"
+#EDS
+
+RDEPEND="kde? ( x11-libs/wxGTK:2.8[X,-odbc] || ( kde-base/konqueror kde-base/kdebase-meta kde-base/kdebase ) )
+ wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )"
+
+#SDS
+DEPEND="${RDEPEND}
+ rcc? ( app-i18n/librcc )"
+#EDS
+
+S=${WORKDIR}/${PN}_${PV}
+
+pkg_setup() {
+ use wxwidgets && wxwidgets_pkg_setup
+}
+
+src_prepare() {
+ if use kde && ! use wxwidgets ; then
+ einfo "USE-flag kde needs wxwidgets flag"
+ einfo "silently enabling wxwidgets flag"
+ fi
+
+ # remove non-free RAR codec
+ if use rar; then
+ ewarn "Enabling nonfree RAR decompressor"
+ else
+ sed -e '/Rar/d' -i makefile*
+ rm -rf CPP/7zip/Compress/Rar
+ epatch "${FILESDIR}"/${PV}-makefile.patch
+ fi
+
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ -e 's:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ cp -f makefile.linux_amd64 makefile.machine
+ elif [[ ${CHOST} == *-darwin* ]] ; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ cp -f makefile.macosx makefile.machine
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+ # We can be more parallel
+ cp -f makefile.parallel_jobs makefile
+
+ epatch "${FILESDIR}"/${PV}-hardlink.patch
+
+#SDS
+ EPATCH_OPTS="-p1" epatch "${FILESDIR}"/p7zip_4.65-libun7zip.patch || die
+ use rcc && ( epatch "${FILESDIR}"/p7zip_4.65-ds-rusxmms.patch || die )
+
+ find . -maxdepth 1 -name "makefile.linux*" -print0 | xargs -0 sed -i -e "s/LOCAL_LIBS=-lpthread/LOCAL_LIBS=-lpthread -lrcc/"
+#EDS
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+ if use kde || use wxwidgets; then
+ emake 7zG || die "error building GUI"
+ fi
+#SDS
+ emake -C CPP/7zip/Bundles/Un7Zip || die
+#EDS
+}
+
+src_test() {
+ emake test_7z test_7zr || die "test failed"
+ if use kde || use wxwidgets; then
+ emake test_7zG || die "GUI test failed"
+ fi
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/$(get_libdir)/${PN}/7zr"
+ make_wrapper 7za "/usr/$(get_libdir)/${PN}/7za"
+ make_wrapper 7z "/usr/$(get_libdir)/${PN}/7z"
+
+ if use kde || use wxwidgets; then
+ make_wrapper 7zG "/usr/$(get_libdir)/${PN}/7zG"
+
+ dobin GUI/p7zipForFilemanager
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7zG
+
+ insinto /usr/$(get_libdir)/${PN}
+ doins -r GUI/{Lang,help}
+
+ if use kde; then
+ insinto /usr/share/icons/hicolor/16x16/apps/
+ newins GUI/p7zip_16_ok.png p7zip.png
+
+ insinto /usr/share/apps/konqueror/servicemenus/
+ doins GUI/kde/*.desktop
+ fi
+ fi
+
+ dobin "${FILESDIR}/p7zip" || die
+
+ # gzip introduced in 4.42, so beware :)
+ newbin contrib/gzip-like_CLI_wrapper_for_7z/p7zip 7zg || die
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ doexe bin/*.so || die "doexe *.so files"
+ if use rar; then
+ exeinto /usr/$(get_libdir)/${PN}/Codecs/
+ doexe bin/Codecs/*.so || die "doexe Codecs/*.so files"
+ fi
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+
+#SDS
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/
+ install -s -D -m 755 CPP/7zip/Bundles/Un7Zip/libun7zip.so ${D}/usr/lib/libun7zip.so || die
+ install -D -m 644 CPP/7zip/Bundles/Un7Zip/u7zip.h ${D}/usr/include/u7zip.h || die
+#EDS
+}
diff --git a/app-arch/p7zip/p7zip-9.13-r2.ebuild b/app-arch/p7zip/p7zip-9.13-r2.ebuild
new file mode 100644
index 0000000..5328241
--- /dev/null
+++ b/app-arch/p7zip/p7zip-9.13-r2.ebuild
@@ -0,0 +1,151 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-9.13.ebuild,v 1.2 2010/07/04 21:58:55 hwoarang Exp $
+
+EAPI="2"
+WX_GTK_VER="2.8"
+
+inherit eutils toolchain-funcs multilib wxwidgets
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1 rar? ( unRAR )"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+
+#SDS
+IUSE="doc kde rar static wxwidgets rcc"
+#EDS
+
+RDEPEND="kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/konqueror )
+ wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )"
+
+#SDS
+DEPEND="${RDEPEND}
+ rcc? ( app-i18n/librcc )"
+#EDS
+
+
+S=${WORKDIR}/${PN}_${PV}
+
+pkg_setup() {
+ use wxwidgets && wxwidgets_pkg_setup
+}
+
+src_prepare() {
+ if use kde && ! use wxwidgets ; then
+ einfo "USE-flag kde needs wxwidgets flag"
+ einfo "silently enabling wxwidgets flag"
+ fi
+
+ # remove non-free RAR codec
+ if use rar; then
+ ewarn "Enabling nonfree RAR decompressor"
+ else
+ sed -e '/Rar/d' -i makefile*
+ rm -rf CPP/7zip/Compress/Rar
+ epatch "${FILESDIR}"/9.04-makefile.patch
+ fi
+
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ -e '/ALLFLAGS/s:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ cp -f makefile.linux_amd64 makefile.machine
+ elif [[ ${CHOST} == *-darwin* ]] ; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ [[ ${CHOST} == *64-* ]] \
+ && cp -f makefile.macosx_64bits makefile.machine \
+ || cp -f makefile.macosx_32bits makefile.machine
+ # bundles have extension .bundle but don't die because USE=-rar
+ # removes the Rar directory
+ sed -i -e '/^PROG=/s/\.so/.bundle/' \
+ CPP/7zip/Bundles/Format7zFree/makefile \
+ CPP/7zip/Compress/Rar/makefile
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+ # We can be more parallel
+ cp -f makefile.parallel_jobs makefile
+
+ epatch "${FILESDIR}"/9.04-kde4.patch
+
+#SDS
+# EPATCH_OPTS="-p1" epatch "${FILESDIR}"/p7zip_4.65-libun7zip.patch || die
+ use rcc && ( epatch "${FILESDIR}"/p7zip_9.13-ds-rusxmms.patch || die )
+
+ find . -maxdepth 1 -name "makefile.linux*" -print0 | xargs -0 sed -i -e "s/LOCAL_LIBS=-lpthread/LOCAL_LIBS=-lpthread -lrcc/"
+#EDS
+
+ if use kde || use wxwidgets; then
+ einfo "Preparing dependency list"
+ emake depend || die
+ fi
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+ if use kde || use wxwidgets; then
+ emake 7zG || die "error building GUI"
+ fi
+}
+
+src_test() {
+ emake test_7z test_7zr || die "test failed"
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/$(get_libdir)/${PN}/7zr"
+ make_wrapper 7za "/usr/$(get_libdir)/${PN}/7za"
+ make_wrapper 7z "/usr/$(get_libdir)/${PN}/7z"
+
+ if use kde || use wxwidgets; then
+ make_wrapper 7zG "/usr/$(get_libdir)/${PN}/7zG"
+
+ dobin GUI/p7zipForFilemanager
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7zG
+
+ insinto /usr/$(get_libdir)/${PN}
+ doins -r GUI/{Lang,help}
+
+ if use kde; then
+ insinto /usr/share/icons/hicolor/16x16/apps/
+ newins GUI/p7zip_16_ok.png p7zip.png
+
+ insinto /usr/share/kde4/services/ServiceMenus
+ doins GUI/kde/*.desktop
+ fi
+ fi
+
+ dobin "${FILESDIR}/p7zip" || die
+
+ # gzip introduced in 4.42, so beware :)
+ newbin contrib/gzip-like_CLI_wrapper_for_7z/p7zip 7zg || die
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ doexe bin/*$(get_modname) || die "doexe *$(get_modname) files"
+ if use rar; then
+ exeinto /usr/$(get_libdir)/${PN}/Codecs/
+ doexe bin/Codecs/*$(get_modname) || die "doexe Codecs/*$(get_modname) files"
+ fi
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+}
diff --git a/app-arch/p7zip/p7zip-9.13-r3.ebuild b/app-arch/p7zip/p7zip-9.13-r3.ebuild
new file mode 100644
index 0000000..961654c
--- /dev/null
+++ b/app-arch/p7zip/p7zip-9.13-r3.ebuild
@@ -0,0 +1,152 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-9.13.ebuild,v 1.2 2010/07/04 21:58:55 hwoarang Exp $
+
+EAPI="2"
+WX_GTK_VER="2.8"
+
+inherit eutils toolchain-funcs multilib wxwidgets
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1 rar? ( unRAR )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+
+#SDS
+IUSE="doc kde rar static wxwidgets rcc"
+#EDS
+
+RDEPEND="kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/konqueror )
+ wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )"
+
+#SDS
+DEPEND="${RDEPEND}
+ rcc? ( app-i18n/librcc )"
+#EDS
+
+
+S=${WORKDIR}/${PN}_${PV}
+
+pkg_setup() {
+ use wxwidgets && wxwidgets_pkg_setup
+}
+
+src_prepare() {
+ if use kde && ! use wxwidgets ; then
+ einfo "USE-flag kde needs wxwidgets flag"
+ einfo "silently enabling wxwidgets flag"
+ fi
+
+ # remove non-free RAR codec
+ if use rar; then
+ ewarn "Enabling nonfree RAR decompressor"
+ else
+ sed -e '/Rar/d' -i makefile*
+ rm -rf CPP/7zip/Compress/Rar
+ epatch "${FILESDIR}"/9.04-makefile.patch
+ fi
+
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e "s:OPTFLAGS=-O:OPTFLAGS=${CXXFLAGS}:" \
+ -e '/ALLFLAGS/s:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ cp -f makefile.linux_amd64 makefile.machine
+ elif [[ ${CHOST} == *-darwin* ]] ; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ [[ ${CHOST} == *64-* ]] \
+ && cp -f makefile.macosx_64bits makefile.machine \
+ || cp -f makefile.macosx_32bits makefile.machine
+ # bundles have extension .bundle but don't die because USE=-rar
+ # removes the Rar directory
+ sed -i -e '/^PROG=/s/\.so/.bundle/' \
+ CPP/7zip/Bundles/Format7zFree/makefile \
+ CPP/7zip/Compress/Rar/makefile
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+ # We can be more parallel
+ cp -f makefile.parallel_jobs makefile
+
+ epatch "${FILESDIR}"/9.04-kde4.patch
+
+#SDS
+# EPATCH_OPTS="-p1" epatch "${FILESDIR}"/p7zip_4.65-libun7zip.patch || die
+ epatch "${FILESDIR}"/p7zip_9.13-ds-dynbuf.patch || die
+ use rcc && ( epatch "${FILESDIR}"/p7zip_9.13-ds-rusxmms.patch || die )
+
+ find . -maxdepth 1 -name "makefile.linux*" -print0 | xargs -0 sed -i -e "s/LOCAL_LIBS=-lpthread/LOCAL_LIBS=-lpthread -lrcc/"
+#EDS
+
+ if use kde || use wxwidgets; then
+ einfo "Preparing dependency list"
+ emake depend || die
+ fi
+}
+
+src_compile() {
+ emake all3 || die "compilation error"
+ if use kde || use wxwidgets; then
+ emake 7zG || die "error building GUI"
+ fi
+}
+
+src_test() {
+ emake test_7z test_7zr || die "test failed"
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/$(get_libdir)/${PN}/7zr"
+ make_wrapper 7za "/usr/$(get_libdir)/${PN}/7za"
+ make_wrapper 7z "/usr/$(get_libdir)/${PN}/7z"
+
+ if use kde || use wxwidgets; then
+ make_wrapper 7zG "/usr/$(get_libdir)/${PN}/7zG"
+
+ dobin GUI/p7zipForFilemanager
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7zG
+
+ insinto /usr/$(get_libdir)/${PN}
+ doins -r GUI/{Lang,help}
+
+ if use kde; then
+ insinto /usr/share/icons/hicolor/16x16/apps/
+ newins GUI/p7zip_16_ok.png p7zip.png
+
+ insinto /usr/share/kde4/services/ServiceMenus
+ doins GUI/kde/*.desktop
+ fi
+ fi
+
+ dobin "${FILESDIR}/p7zip" || die
+
+ # gzip introduced in 4.42, so beware :)
+ newbin contrib/gzip-like_CLI_wrapper_for_7z/p7zip 7zg || die
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx || die "doexe bins"
+ doexe bin/*$(get_modname) || die "doexe *$(get_modname) files"
+ if use rar; then
+ exeinto /usr/$(get_libdir)/${PN}/Codecs/
+ doexe bin/Codecs/*$(get_modname) || die "doexe Codecs/*$(get_modname) files"
+ fi
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc ; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+}
diff --git a/app-arch/p7zip/p7zip-9.20.1-r5.ebuild b/app-arch/p7zip/p7zip-9.20.1-r5.ebuild
new file mode 100644
index 0000000..797a51f
--- /dev/null
+++ b/app-arch/p7zip/p7zip-9.20.1-r5.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/p7zip/p7zip-9.20.1-r4.ebuild,v 1.3 2013/08/04 12:09:02 ago Exp $
+
+EAPI=4
+
+WX_GTK_VER="2.8"
+
+inherit eutils multilib toolchain-funcs wxwidgets
+
+DESCRIPTION="Port of 7-Zip archiver for Unix"
+HOMEPAGE="http://p7zip.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}_${PV}_src_all.tar.bz2"
+
+LICENSE="LGPL-2.1 rar? ( unRAR )"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ppc ppc64 ~s390 sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris"
+
+#SDS
+IUSE="doc kde rar +pch static wxwidgets rcc"
+#EDS
+
+REQUIRED_USE="kde? ( wxwidgets )"
+
+RDEPEND="
+ kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/kdelibs )
+ wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )"
+
+#SDS
+DEPEND="${RDEPEND}
+ rcc? ( app-i18n/librcc )
+ amd64? ( dev-lang/yasm )
+ x86? ( dev-lang/nasm )"
+#EDS
+
+S=${WORKDIR}/${PN}_${PV}
+
+pkg_setup() {
+ use wxwidgets && wxwidgets_pkg_setup
+}
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}"/${P}-execstack.patch \
+ "${FILESDIR}"/${P}-QA.patch
+
+ if ! use pch; then
+ sed "s:PRE_COMPILED_HEADER=StdAfx.h.gch:PRE_COMPILED_HEADER=:g" -i makefile.* || die
+ fi
+
+ sed \
+ -e 's:-m32 ::g' \
+ -e 's:-m64 ::g' \
+ -e 's:-O::g' \
+ -e 's:-pipe::g' \
+ -e "/^CC/s:\$(ALLFLAGS):${CFLAGS} \$(ALLFLAGS):g" \
+ -e "/^CXX/s:\$(ALLFLAGS):${CXXFLAGS} \$(ALLFLAGS):g" \
+ -i makefile* || die
+
+ # remove non-free RAR codec
+ if use rar; then
+ ewarn "Enabling nonfree RAR decompressor"
+ else
+ sed -e '/Rar/d' -i makefile* || die
+ rm -rf CPP/7zip/Compress/Rar || die
+ epatch "${FILESDIR}"/9.04-makefile.patch
+ fi
+
+ sed -i \
+ -e "/^CXX=/s:g++:$(tc-getCXX):" \
+ -e "/^CC=/s:gcc:$(tc-getCC):" \
+ -e '/ALLFLAGS/s:-s ::' \
+ makefile* || die "changing makefiles"
+
+ if use amd64; then
+ cp -f makefile.linux_amd64_asm makefile.machine || die
+ elif use x86; then
+ cp -f makefile.linux_x86_asm_gcc_4.X makefile.machine || die
+ elif [[ ${CHOST} == *-darwin* ]] ; then
+ # Mac OS X needs this special makefile, because it has a non-GNU linker
+ [[ ${CHOST} == *64-* ]] \
+ && cp -f makefile.macosx_64bits makefile.machine \
+ || cp -f makefile.macosx_32bits makefile.machine
+ # bundles have extension .bundle but don't die because USE=-rar
+ # removes the Rar directory
+ sed -i -e '/strcpy(name/s/\.so/.bundle/' \
+ CPP/Windows/DLL.cpp || die
+ sed -i -e '/^PROG=/s/\.so/.bundle/' \
+ CPP/7zip/Bundles/Format7zFree/makefile \
+ $(use rar && echo CPP/7zip/Compress/Rar/makefile) || die
+ elif use x86-fbsd; then
+ # FreeBSD needs this special makefile, because it hasn't -ldl
+ sed -e 's/-lc_r/-pthread/' makefile.freebsd > makefile.machine
+ fi
+
+ use static && sed -i -e '/^LOCAL_LIBS=/s/LOCAL_LIBS=/&-static /' makefile.machine
+
+#SDS
+# epatch "${FILESDIR}"/p7zip_9.13-ds-dynbuf.patch || die
+ use rcc && ( epatch "${FILESDIR}"/p7zip_9.13-ds-rusxmms.patch || die )
+
+ find . -maxdepth 1 -name "makefile.linux*" -print0 | xargs -0 sed -i -e "s/LOCAL_LIBS=-lpthread/LOCAL_LIBS=-lpthread -lrcc/"
+#EDS
+
+ if use kde || use wxwidgets; then
+ einfo "Preparing dependency list"
+ emake depend
+ fi
+}
+
+src_compile() {
+ emake all3
+ if use kde || use wxwidgets; then
+ emake -- 7zG
+ emake -- 7zFM
+ fi
+}
+
+src_test() {
+ emake test test_7z test_7zr
+}
+
+src_install() {
+ # this wrappers can not be symlinks, p7zip should be called with full path
+ make_wrapper 7zr "/usr/$(get_libdir)/${PN}/7zr"
+ make_wrapper 7za "/usr/$(get_libdir)/${PN}/7za"
+ make_wrapper 7z "/usr/$(get_libdir)/${PN}/7z"
+
+ if use kde || use wxwidgets; then
+ make_wrapper 7zG "/usr/$(get_libdir)/${PN}/7zG"
+ make_wrapper 7zFM "/usr/$(get_libdir)/${PN}/7zFM"
+
+ make_desktop_entry 7zFM "${PN} FM" ${PN}.png "GTK;Utility;Archiving;Compression"
+ make_desktop_entry 7zG "${PN} GUI" ${PN}.png "GTK;Utility;Archiving;Compression"
+
+ dobin GUI/p7zipForFilemanager
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z{G,FM}
+
+ insinto /usr/$(get_libdir)/${PN}
+ doins -r GUI/{Lang,help}
+
+ insinto /usr/share/icons/hicolor/16x16/apps/
+ newins GUI/p7zip_16_ok.png p7zip.png
+
+ if use kde; then
+
+ rm GUI/kde4/p7zip_compress.desktop
+ insinto /usr/share/kde4/services/ServiceMenus
+ doins GUI/kde4/*.desktop
+ fi
+ fi
+
+ dobin contrib/gzip-like_CLI_wrapper_for_7z/p7zip
+ doman contrib/gzip-like_CLI_wrapper_for_7z/man1/p7zip.1
+
+ exeinto /usr/$(get_libdir)/${PN}
+ doexe bin/7z bin/7za bin/7zr bin/7zCon.sfx
+ doexe bin/*$(get_modname)
+ if use rar; then
+ exeinto /usr/$(get_libdir)/${PN}/Codecs/
+ doexe bin/Codecs/*$(get_modname)
+ fi
+
+ doman man1/7z.1 man1/7za.1 man1/7zr.1
+ dodoc ChangeLog README TODO
+
+ if use doc; then
+ dodoc DOCS/*.txt
+ dohtml -r DOCS/MANUAL/*
+ fi
+}
diff --git a/app-arch/ruszip/Manifest b/app-arch/ruszip/Manifest
new file mode 100644
index 0000000..367b9de
--- /dev/null
+++ b/app-arch/ruszip/Manifest
@@ -0,0 +1,6 @@
+AUX zip-2.3-unix_configure-pic.patch 444 RMD160 8fd81ff732abe0e6189cd593c98e0055a11dca36 SHA1 c08486c683a9a8d02dbb0d500f421b07c0bcc704 SHA256 3e348be7890f21280fceab6cb2a87f3020b08a31608ab93d1b5a53667760e556
+AUX zip-2.31-exec-stack.patch 407 RMD160 a27f0112dbbda418feef97b66240442190e8b5d7 SHA1 3043e8150222749b6f05fc10f8ab1c15da21c8d0 SHA256 108686d8854096422bd4895690a37202aee66757d0d2b43afa16d9fb914cbb29
+AUX zip-2.32-build.patch 2003 RMD160 3356051c53465fa70015818b6c8c364489bb5bf0 SHA1 34492ef0e226ff7912de01c9266580b148ff54f1 SHA256 3e4b94015c1448c8769d7154b308bd986e1d0e6e514da151d658d1b8ba3a774c
+AUX zip232-ds-recoderus.patch 4337 RMD160 506017b6a9be390a655e9e34a2c2d1cf91e85589 SHA1 52746bd086356085a1788547116c1132edd570a4 SHA256 a0e69f760c98fd900cffd31e8e02085189fc66c786be09784f64191401805530
+DIST zip232.tar.gz 807180 RMD160 6b9326c8a60bc6bf08825e416140fd0ca8a6a7f1 SHA1 5bc562bf95d9aee0cb6625e6038898e1f191a4aa SHA256 d0d3743f732a9baa162f80d0c4567b9c545b41a3385825042113810f2a56eb2f
+EBUILD ruszip-2.32-r1.ebuild 1041 RMD160 2dfe64ee0cd4e4dfe036746332f34aec14cf0c7b SHA1 6475d9f51b6afd11a9c1776c40bfcaecc40c04be SHA256 5232b35d2fddf8a207ba919b146847e8df9c8900f0627f9a70883d78211f6557
diff --git a/app-arch/ruszip/files/zip-2.3-unix_configure-pic.patch b/app-arch/ruszip/files/zip-2.3-unix_configure-pic.patch
new file mode 100644
index 0000000..45b137b
--- /dev/null
+++ b/app-arch/ruszip/files/zip-2.3-unix_configure-pic.patch
@@ -0,0 +1,12 @@
+--- unix/configure.orig 2004-09-28 06:45:33.000000000 +0000
++++ unix/configure 2004-09-28 06:54:53.000000000 +0000
+@@ -29,6 +29,9 @@
+
+ echo Check if we can use asm code
+ OBJA=""
++piclib="$(echo | $CPP -dM $CFLAGS - | grep -i __pic__)"
++echo "Checking if compiler wants to create pic code"
++[ "$piclib" == "" ] && \
+ if eval "$CPP match.S > _match.s 2>/dev/null"; then
+ if test ! -s _match.s || grep error < _match.s > /dev/null; then
+ :
diff --git a/app-arch/ruszip/files/zip-2.31-exec-stack.patch b/app-arch/ruszip/files/zip-2.31-exec-stack.patch
new file mode 100644
index 0000000..d3efbd9
--- /dev/null
+++ b/app-arch/ruszip/files/zip-2.31-exec-stack.patch
@@ -0,0 +1,20 @@
+--- zip-2.31/crc_i386.S
++++ zip-2.31/crc_i386.S
+@@ -238,3 +238,7 @@
+ #endif /* i386 || _i386 || _I386 || __i386 */
+
+ #endif /* !USE_ZLIB */
++
++#ifdef __ELF__
++.section .note.GNU-stack,"",@progbits
++#endif
+--- zip-2.31/match.S
++++ zip-2.31/match.S
+@@ -405,3 +405,7 @@
+ #endif /* i386 || _I386 || _i386 || __i386 */
+
+ #endif /* !USE_ZLIB */
++
++#ifdef __ELF__
++.section .note.GNU-stack,"",@progbits
++#endif
diff --git a/app-arch/ruszip/files/zip-2.32-build.patch b/app-arch/ruszip/files/zip-2.32-build.patch
new file mode 100644
index 0000000..61a2bae
--- /dev/null
+++ b/app-arch/ruszip/files/zip-2.32-build.patch
@@ -0,0 +1,89 @@
+respect build environment settings
+
+--- zip/unix/Makefile
++++ zip/unix/Makefile
+@@ -12,15 +12,15 @@
+
+ list: all
+
+-MAKE = make -f unix/Makefile
++MAKE := $(MAKE) -f unix/Makefile
+ SHELL = /bin/sh
+ LN = ln -s
+
+ # (to use the Gnu compiler, change cc to gcc in CC)
+-CC = cc
++CC ?= gcc
+ BIND = $(CC)
+ AS = $(CC) -c
+-CPP = /lib/cpp
++CPP ?= $(CC)
+ EXE =
+
+ # probably can change this to 'install' if you have it
+@@ -47,7 +47,7 @@
+ # LFLAGS1 flags after output file spec, before obj file list
+ # LFLAGS2 flags after obj file list (libraries, etc)
+ CFLAGS_NOOPT = -I. -DUNIX $(LOCAL_ZIP)
+-CFLAGS = -O2 $(CFLAGS_NOOPT)
++CFLAGS ?= -O2 $(CFLAGS_NOOPT)
+ LFLAGS1 =
+ LFLAGS2 = -s
+
+--- zip/unix/configure
++++ zip/unix/configure
+@@ -13,52 +13,13 @@
+
+ CC=${1-cc}
+-CFLAGS=${2-"-I. -DUNIX"}
+-LFLAGS1=""
++CFLAGS="${2--I. -DUNIX} ${CFLAGS} ${CPPFLAGS}"
++LFLAGS1="${LDFLAGS}"
+ LN="ln -s"
+-echo "Check C compiler type (optimization option)"
+-cat > conftest.c << _EOF_
+-int main()
+-{
+-#ifndef __SUNPRO_C
+- bad code
+-#endif
+- return 0;
+-}
+-_EOF_
+-$CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null
+-if test $? -eq 0; then
+- echo ' Sun C (-xO3)'
+- CFLAGS="${CFLAGS} -xO3"
+-else
+- cat > conftest.c << _EOF_
+-int main()
+-{
+-#ifndef __DECC
+- bad code
+-#endif
+- return 0;
+-}
+-_EOF_
+- $CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null
+- if test $? -eq 0; then
+- echo ' DEC C (-O3)'
+- CFLAGS="${CFLAGS} -O3"
+- else
+- echo ' Other (gcc?) (-O2)'
+- CFLAGS="${CFLAGS} -O2"
+- fi
+-fi
+
+ echo Check for the C preprocessor
+ # on SVR4, cc -E does not produce correct assembler files. Need /lib/cpp.
+ CPP="${CC} -E"
+ # solaris as(1) needs -P, maybe others as well ?
+-[ -f /usr/ccs/lib/cpp ] && CPP="/usr/ccs/lib/cpp -P"
+-[ -f /usr/lib/cpp ] && CPP=/usr/lib/cpp
+-[ -f /lib/cpp ] && CPP=/lib/cpp
+-[ -f /usr/bin/cpp ] && CPP=/usr/bin/cpp
+-[ -f /xenix ] && CPP="${CC} -E"
+-[ -f /lynx.os ] && CPP="${CC} -E"
+
+ echo "#include <stdio.h>" > conftest.c
+ $CPP conftest.c >/dev/null 2>/dev/null || CPP="${CC} -E"
diff --git a/app-arch/ruszip/files/zip232-ds-recoderus.patch b/app-arch/ruszip/files/zip232-ds-recoderus.patch
new file mode 100644
index 0000000..de3e337
--- /dev/null
+++ b/app-arch/ruszip/files/zip232-ds-recoderus.patch
@@ -0,0 +1,165 @@
+diff -dPNur zip-2.32/unix/dsrecode.h zip-2.32-2/unix/dsrecode.h
+--- zip-2.32/unix/dsrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ zip-2.32-2/unix/dsrecode.h 2008-10-07 11:22:48.000000000 +0200
+@@ -0,0 +1,130 @@
++/******* WARNING: Multi-byte output encodings isn't supported! Comments
++may been striped!!!!
++I don't close 2 opened iconv descriptors. I think this wouldn't cause any
++problem. *******/
++
++#include <iconv.h>
++#include <errno.h>
++#include <locale.h>
++
++#define CHARSET_MAX_STRING_SIZE 4096
++#define LOCALE_STRING_LENGTH 64
++#define CHARSET_MAX_ERRORS 0
++#define ENV_VARIABLE "LC_CTYPE"
++#define LOCALE_VARIABLE LC_CTYPE
++
++static iconv_t ds_oem = (iconv_t)-1;
++static iconv_t ds_iso = (iconv_t)-1;
++
++extern int errno;
++static char xmms_charset_tmp[CHARSET_MAX_STRING_SIZE];
++static char charset_default[LOCALE_STRING_LENGTH]="";
++
++// Multi-byte strings still unsupported
++static void iconv_copysymbol(char **in_buf, size_t *in_left, char **out_buf, size_t *out_left) {
++ if ((out_left>0)&&(in_left>0)) {
++ (**out_buf)=(**in_buf);
++ (*out_buf)++;
++ (*in_buf)++;
++ (*in_left)--;
++ (*out_left)--;
++ }
++}
++
++static char *ds_recode(iconv_t icnv, char *buf, size_t len, size_t *rlen) {
++ char *in_buf, *out_buf, *res, err;
++ size_t in_left, out_left, olen;
++ int errors=0;
++
++ if (!len) {
++ len=strlen(buf);
++ } else {
++ olen=strlen(buf);
++ if (olen<len) len=olen;
++ }
++
++ if (iconv(icnv, NULL, NULL, NULL, NULL) == -1) return NULL;
++
++ in_buf = buf;
++ in_left = len;
++ out_buf = xmms_charset_tmp;
++ out_left = CHARSET_MAX_STRING_SIZE;
++
++loop:
++ err=iconv(icnv, &in_buf, &in_left, &out_buf, &out_left);
++ if (err<0) {
++ if (errno==E2BIG) {
++ *(int*)(xmms_charset_tmp+(CHARSET_MAX_STRING_SIZE-sizeof(int)))=0;
++ } else if (errno==EILSEQ) {
++ if (errors<CHARSET_MAX_ERRORS) {
++ errors++;
++ iconv_copysymbol(&in_buf, &in_left, &out_buf, &out_left);
++ if (in_left>0) goto loop;
++ } else return NULL;
++ } else return NULL;
++ }
++
++ olen = CHARSET_MAX_STRING_SIZE - out_left;
++ res = malloc(olen+1);
++ if (!res) return NULL;
++
++ memcpy(res,xmms_charset_tmp,olen);
++ res[olen]=0;
++ if (rlen) *rlen=olen;
++ return res;
++}
++
++
++static void charset_setdefault() {
++ char *str1, *str2;
++ str1 = (char*)setlocale(LOCALE_VARIABLE, NULL);
++ if (str1) {
++ if (!strcasecmp(str1,"C")) {
++ setlocale(LC_ALL, "");
++ str1 = setlocale(LOCALE_VARIABLE, NULL);
++ }
++ } else str1 = getenv(ENV_VARIABLE);
++ if (str1) {
++ str2 = strrchr(str1,'.');
++ if (str2) {
++ strncpy(charset_default,str2+1,LOCALE_STRING_LENGTH);
++ charset_default[LOCALE_STRING_LENGTH-1]=0;
++ str2 = strchr(charset_default,'@');
++ if (str2) *str2 = 0;
++ } else {
++ strcpy(charset_default,"KOI8-R");
++ }
++ } else {
++ strcpy(charset_default,"KOI8-R");
++ }
++}
++
++void ds_ex2in(char *string) {
++ char *str;
++ if (ds_oem == (iconv_t)-1) {
++ if (!charset_default[0]) charset_setdefault();
++ ds_oem = iconv_open("CP866",charset_default);
++ if (!ds_oem) return;
++ }
++ str=ds_recode(ds_oem,string,0,NULL);
++ if (str) {
++ strncpy(string,str,strlen(string)+1);
++ free(str);
++ }
++}
++
++void ds_in2ex(char *dst, char *string) {
++ char *str;
++ if (ds_iso == (iconv_t)-1) {
++ if (!charset_default[0]) charset_setdefault();
++ ds_iso = iconv_open(charset_default, "CP866");
++ if (!ds_iso) return;
++ }
++ str=ds_recode(ds_iso,string,0,NULL);
++ if (str) {
++ strncpy(dst,str,strlen(string)+1);
++ free(str);
++ } else {
++ strncpy(dst,string,strlen(string)+1);
++ }
++}
+diff -dPNur zip-2.32/unix/unix.c zip-2.32-2/unix/unix.c
+--- zip-2.32/unix/unix.c 2006-05-30 00:35:00.000000000 +0200
++++ zip-2.32-2/unix/unix.c 2008-10-07 11:23:45.000000000 +0200
+@@ -219,6 +219,8 @@
+ return ZE_OK;
+ }
+
++#include "dsrecode.h"
++
+ char *ex2in(x, isdir, pdosflag)
+ char *x; /* external file name */
+ int isdir; /* input: x is a directory */
+@@ -266,6 +268,8 @@
+
+ #ifdef EBCDIC
+ strtoasc(n, n); /* here because msname() needs native coding */
++#else
++ ds_ex2in(n);
+ #endif
+
+ /* Returned malloc'ed name */
+@@ -288,7 +292,8 @@
+ #ifdef EBCDIC
+ strtoebc(x, n);
+ #else
+- strcpy(x, n);
++// strcpy(x, n);
++ ds_in2ex(x,n);
+ #endif
+ return x;
+ }
diff --git a/app-arch/ruszip/ruszip-2.32-r1.ebuild b/app-arch/ruszip/ruszip-2.32-r1.ebuild
new file mode 100644
index 0000000..a38b851
--- /dev/null
+++ b/app-arch/ruszip/ruszip-2.32-r1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/zip/zip-2.32-r1.ebuild,v 1.8 2008/03/17 16:06:43 jer Exp $
+
+inherit toolchain-funcs eutils flag-o-matic
+
+DESCRIPTION="Info ZIP (encryption support) with CP866 recoding"
+HOMEPAGE="http://www.info-zip.org/"
+SRC_URI="ftp://ftp.info-zip.org/pub/infozip/src/zip${PV//.}.tar.gz"
+
+LICENSE="Info-ZIP"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+IUSE="crypt"
+
+DEPEND=""
+
+#SDS
+S=${WORKDIR}/zip-${PV}
+#EDS
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/zip-2.3-unix_configure-pic.patch
+ epatch "${FILESDIR}"/zip-2.31-exec-stack.patch
+ epatch "${FILESDIR}"/zip-2.32-build.patch
+
+#SDS
+ epatch "${FILESDIR}"/zip232-ds-recoderus.patch
+#EDS
+}
+
+src_compile() {
+ tc-export CC CPP
+ use crypt || append-flags -DNO_CRYPT
+ append-lfs-flags
+ emake -f unix/Makefile generic || die
+}
+
+src_install() {
+#SDS
+ mv zip ruszip
+ dobin ruszip || die
+#EDS
+}
diff --git a/app-arch/unrar/Manifest b/app-arch/unrar/Manifest
new file mode 100644
index 0000000..0d97f37
--- /dev/null
+++ b/app-arch/unrar/Manifest
@@ -0,0 +1,11 @@
+AUX ftello_unrar_fix.patch 728 RMD160 cade46d01838baf26a44bf16f25133dec48974b7 SHA1 4aa3dd00ac19d76dc3d1c2e31015795e2408aa61 SHA256 79684ddb1efe9887225ad2f7f238b99ab7252a00616a68374425fafb7505690d
+AUX unrar-3.4.3_fix.patch 2167 RMD160 b332302c5dee6b3350d47014091fd6f39819d354 SHA1 fef7e65557c56861b4829cac8fadad2a37244c69 SHA256 970f41fbdf00397897ea201bc110ea6d028965061f4080b05e279f207b1856fd
+AUX unrar-3.5.3_fix.patch 1638 RMD160 3dadc43791e46d58ad77010d543b0a270abc003f SHA1 849bd263d693482b3c03b1bb1e039328d80b623d SHA256 da6c379c0b35ed47e76b29aaf881c53c8339e20432eb418ff6e53fa7bdc15a46
+DIST unrarsrc-3.4.3.tar.gz 120462 RMD160 ea0ce9915f8d29dc21e2cc22f811d2a14997de9d SHA1 ab9c9c6f55e4e13ada0b5aa74d58bdf5d0133dcc SHA256 f53533b44a9c17972aff6ac7047c6ac1e2e5e2930254eccdb1239678a6dd1793
+DIST unrarsrc-3.5.4.tar.gz 122801 RMD160 f8fd81e1e1b74bfd05eacf23d04b57a80fec3faa SHA1 e0bf07f8a36b738b1ed033b767155f27b51fc408 SHA256 caf75266a359456398b0bbfa4ea9c1c2d3fcc9088bfe6a1309bf51e3d5376989
+DIST unrarsrc-3.6.5.tar.gz 125045 RMD160 9aa3b60595a76208390655fa7a51127accb4b434 SHA1 2388fd40b2c8a0ce19f2eaa3dbd3b509e28a7b58 SHA256 34f3bfbe7d5e34f5dc5735d95e77670b4b1099f5a3059389a71750a58864236f
+DIST unrarsrc-3.7.3.tar.gz 129328 RMD160 155a244a149937bb5f91ea8041177bdb6fe6f788 SHA1 d4ba5c8f3acff759a847315697d418c089382d95 SHA256 fd91c11864746eaa7b70c8c47ed5e9e1c2f29a15a1e60550f185756599795999
+EBUILD unrar-3.4.3-r1.ebuild 1451 RMD160 aa4aae7bb14d7bfa54b8be766091616aaf345f4d SHA1 9a0a9e28711be0cd2ac01a8b667ef1fb7a87fcd6 SHA256 dbfa86937fb4667e14b2f2864addcc058e28a824a9ca461a09c2ca134da2e428
+EBUILD unrar-3.5.4-r2.ebuild 1250 RMD160 7924dc71ad4b1cce138d5b301a9051418d3a6025 SHA1 5b98e515b57db9ad388d9cea93471b0cd9a4b462 SHA256 288452c214aa6039e5c007ab2efb037c5df3c75f64252a7f519322e9199103f0
+EBUILD unrar-3.6.5-r1.ebuild 1346 RMD160 0486e6176c9e61aa7250ba13916175298221ed4d SHA1 07f5fe0f78d618698357ea4a8e79220cb59325ae SHA256 5cc172a75d74e327c126cf19d07e6ef337b5ba5ca5c79d6155012b782c336fa1
+EBUILD unrar-3.7.3-r1.ebuild 1339 RMD160 99d7dde283838f8b80b120337916a8d300e1dbf6 SHA1 627f48ac4ffa46d541593e4734d7fcd028cd7f22 SHA256 d7a3b2f5bb65aa7459c1cfcec5aa8cbf3a198382efde2abba54781656b4e2ac5
diff --git a/app-arch/unrar/files/ftello_unrar_fix.patch b/app-arch/unrar/files/ftello_unrar_fix.patch
new file mode 100644
index 0000000..a5f0d62
--- /dev/null
+++ b/app-arch/unrar/files/ftello_unrar_fix.patch
@@ -0,0 +1,16 @@
+diff -ruN unrar.orig/dll.cpp unrar/dll.cpp
+--- unrar.orig/dll.cpp 2005-08-03 20:34:30.000000000 +0400
++++ unrar/dll.cpp 2006-01-11 12:13:33.000000000 +0300
+@@ -271,8 +271,10 @@
+ strcpy(Data->Cmd.Command,Operation==RAR_EXTRACT ? "X":"T");
+ Data->Cmd.Test=Operation!=RAR_EXTRACT;
+ bool Repeat=false;
+- Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->HeaderSize,Repeat);
+-
++
++ if(Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->HeaderSize,Repeat) == false)
++ return (ERAR_UNKNOWN);
++
+ while (Data->Arc.ReadHeader()!=0 && Data->Arc.GetHeaderType()==NEWSUB_HEAD)
+ {
+ Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->HeaderSize,Repeat);
diff --git a/app-arch/unrar/files/unrar-3.4.3_fix.patch b/app-arch/unrar/files/unrar-3.4.3_fix.patch
new file mode 100644
index 0000000..aaa768e
--- /dev/null
+++ b/app-arch/unrar/files/unrar-3.4.3_fix.patch
@@ -0,0 +1,71 @@
+diff -ruN unrar.orig/consio.hpp unrar/consio.hpp
+--- unrar.orig/consio.hpp 2004-09-08 17:57:20.000000000 +0400
++++ unrar/consio.hpp 2004-10-22 10:43:08.000000000 +0400
+@@ -21,12 +21,16 @@
+ void OutComment(char *Comment,int Size);
+
+ #ifdef SILENT
++/*
+ inline void mprintf(const char *fmt,const char *a=NULL,const char *b=NULL) {}
+ inline void eprintf(const char *fmt,const char *a=NULL,const char *b=NULL) {}
+ inline void mprintf(const char *fmt,int b) {}
+ inline void eprintf(const char *fmt,int b) {}
+ inline void mprintf(const char *fmt,const char *a,int b) {}
+ inline void eprintf(const char *fmt,const char *a,int b) {}
++*/
++inline void mprintf(const char *fmt,...) {}
++inline void eprintf(const char *fmt,...) {}
+ inline void Alarm() {}
+ inline void GetPasswordText(char *Str,int MaxLength) {}
+ inline unsigned int GetKey() {return(0);}
+diff -ruN unrar.orig/dll.hpp unrar/dll.hpp
+--- unrar.orig/dll.hpp 2004-09-08 17:57:20.000000000 +0400
++++ unrar/dll.hpp 2004-10-22 10:43:08.000000000 +0400
+@@ -26,13 +26,13 @@
+
+ #define RAR_DLL_VERSION 4
+
+-#ifdef _UNIX
++//#ifdef _UNIX
+ #define CALLBACK
+ #define PASCAL
+ #define LONG long
+ #define HANDLE void *
+ #define UINT unsigned int
+-#endif
++//#endif
+
+ struct RARHeaderData
+ {
+diff -ruN unrar.orig/makefile.unix unrar/makefile.unix
+--- unrar.orig/makefile.unix 2004-07-26 11:57:26.000000000 +0400
++++ unrar/makefile.unix 2004-10-22 10:44:09.000000000 +0400
+@@ -7,9 +7,10 @@
+
+ # Linux using GCC
+ CXX=g++
+-CXXFLAGS=-O2
+-DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
++CXXFLAGS=-O2 -fPIC -DPIC
++DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DGUI -DSILENT
+ STRIP=strip
++RANLIB=ranlib
+
+ # Linux using LCC
+ #CXX=lcc
+@@ -114,6 +115,12 @@
+ $(STRIP) default.sfx
+
+ lib: WHAT=RARDLL
+-lib: $(OBJECTS) $(LIB_OBJ)
+- @rm -f libunrar.so
+- $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
++lib: $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++ @rm -f libunrar3.so
++ $(LINK) -shared -o libunrar3.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++
++liba: WHAT=RARDLL
++liba: $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++ @rm -f libunrar3.a
++ $(AR) rc libunrar3.a $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++ $(RANLIB) libunrar3.a
diff --git a/app-arch/unrar/files/unrar-3.5.3_fix.patch b/app-arch/unrar/files/unrar-3.5.3_fix.patch
new file mode 100644
index 0000000..aedb98c
--- /dev/null
+++ b/app-arch/unrar/files/unrar-3.5.3_fix.patch
@@ -0,0 +1,60 @@
+diff -ruN unrar.orig/makefile.unix unrar/makefile.unix
+--- unrar.orig/makefile.unix 2005-04-30 11:00:12.000000000 +0400
++++ unrar/makefile.unix 2005-05-19 16:13:53.000000000 +0400
+@@ -7,9 +7,10 @@
+
+ # Linux using GCC
+ CXX=g++
+-CXXFLAGS=-O2
+-DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
++CXXFLAGS=-O2 -fPIC -DPIC
++DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DGUI -DSILENT
+ STRIP=strip
++RANLIB=ranlib
+
+ # Linux using LCC
+ #CXX=lcc
+@@ -86,7 +87,7 @@
+ LINK=$(CXX)
+
+ UNRAR_OBJ=filestr.o recvol.o rs.o scantree.o
+-LIB_OBJ=filestr.o scantree.o dll.o
++LIB_OBJ=dll.o
+
+ OBJECTS=rar.o strlist.o strfn.o pathfn.o int64.o savepos.o global.o file.o filefn.o filcreat.o \
+ archive.o arcread.o unicode.o system.o isnt.o crypt.o crc.o rawread.o encname.o \
+@@ -114,6 +115,12 @@
+ $(STRIP) default.sfx
+
+ lib: WHAT=RARDLL
+-lib: $(OBJECTS) $(LIB_OBJ)
+- @rm -f libunrar.so
+- $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
++lib: $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++ @rm -f libunrar3.so
++ $(LINK) -shared -o libunrar3.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++
++liba: WHAT=RARDLL
++liba: $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++ @rm -f libunrar3.a
++ $(AR) rc libunrar3.a $(OBJECTS) $(LIB_OBJ) $(UNRAR_OBJ)
++ $(RANLIB) libunrar3.a
+diff -ruN unrar.orig/dll.hpp unrar/dll.hpp
+--- unrar.orig/dll.hpp 2004-09-08 17:57:20.000000000 +0400
++++ unrar/dll.hpp 2004-10-22 10:43:08.000000000 +0400
+@@ -26,13 +26,13 @@
+
+ #define RAR_DLL_VERSION 4
+
+-#ifdef _UNIX
++//#ifdef _UNIX
+ #define CALLBACK
+ #define PASCAL
+ #define LONG long
+ #define HANDLE void *
+ #define UINT unsigned int
+-#endif
++//#endif
+
+ struct RARHeaderData
+ {
diff --git a/app-arch/unrar/unrar-3.4.3-r1.ebuild b/app-arch/unrar/unrar-3.4.3-r1.ebuild
new file mode 100644
index 0000000..d4713f1
--- /dev/null
+++ b/app-arch/unrar/unrar-3.4.3-r1.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unrar/unrar-3.4.3.ebuild,v 1.11 2005/04/08 10:49:37 corsair Exp $
+
+#SDS
+inherit eutils
+#EDS
+
+MY_PN=${PN}src
+DESCRIPTION="Uncompress rar files"
+HOMEPAGE="http://www.rarlab.com/rar_add.htm"
+SRC_URI="http://www.rarlab.com/rar/${MY_PN}-${PV}.tar.gz"
+
+LICENSE="unRAR"
+SLOT="0"
+KEYWORDS="alpha amd64 hppa ppc ppc64 ppc-macos sparc x86"
+IUSE=""
+
+DEPEND="!app-arch/unrar-gpl"
+
+S="${WORKDIR}/unrar"
+
+#SDS
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+# EPATCH_OPTS="-p1" epatch ${FILESDIR}/unrar-3.4.3_fix.patch || die
+}
+#EDS
+
+src_compile() {
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" || die "emake failed"
+#SDS
+# emake -f makefile.unix CXXFLAGS="$CXXFLAGS" lib || die "emake failed"
+#EDS
+}
+
+src_install() {
+ dobin unrar || die "dobin failed"
+ dodoc readme.txt
+#SDS
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/unrar-3.4.3_fix.patch || die
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" clean || die "emake failed"
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" lib || die "emake failed"
+
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/libunrar3/
+ install -s -D -m 755 libunrar3.so ${D}/usr/lib/libunrar3.so
+ install -D -m 644 dll.hpp ${D}/usr/include/libunrar3/dll.hpp
+#EDS
+}
diff --git a/app-arch/unrar/unrar-3.5.4-r2.ebuild b/app-arch/unrar/unrar-3.5.4-r2.ebuild
new file mode 100644
index 0000000..10231c0
--- /dev/null
+++ b/app-arch/unrar/unrar-3.5.4-r2.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unrar/unrar-3.5.4.ebuild,v 1.1 2005/11/09 01:38:07 vapier Exp $
+
+inherit eutils
+
+MY_PN=${PN}src
+DESCRIPTION="Uncompress rar files"
+HOMEPAGE="http://www.rarlab.com/rar_add.htm"
+SRC_URI="http://www.rarlab.com/rar/${MY_PN}-${PV}.tar.gz"
+
+LICENSE="unRAR"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~ppc ~ppc-macos ~ppc64 ~sparc x86"
+IUSE=""
+
+DEPEND="!app-arch/unrar-gpl"
+
+S=${WORKDIR}/unrar
+
+src_compile() {
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" || die "emake failed"
+}
+
+src_install() {
+ dobin unrar || die "dobin failed"
+ dodoc readme.txt
+#SDS
+ epatch "${FILESDIR}"/unrar-3.5.3_fix.patch || die
+ epatch "${FILESDIR}"/ftello_unrar_fix.patch || die
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" clean || die "emake failed"
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" lib || die "emake failed"
+
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/libunrar3/
+ install -s -D -m 755 libunrar3.so ${D}/usr/lib/libunrar3.so
+ install -D -m 644 dll.hpp ${D}/usr/include/libunrar3/dll.hpp
+#EDS
+}
diff --git a/app-arch/unrar/unrar-3.6.5-r1.ebuild b/app-arch/unrar/unrar-3.6.5-r1.ebuild
new file mode 100644
index 0000000..9369a90
--- /dev/null
+++ b/app-arch/unrar/unrar-3.6.5-r1.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unrar/unrar-3.6.5.ebuild,v 1.1 2006/06/17 22:07:03 vapier Exp $
+
+#SDS
+inherit eutils
+#EDS
+
+inherit toolchain-funcs
+
+MY_PN=${PN}src
+DESCRIPTION="Uncompress rar files"
+HOMEPAGE="http://www.rarlab.com/rar_add.htm"
+SRC_URI="http://www.rarlab.com/rar/${MY_PN}-${PV}.tar.gz"
+
+LICENSE="unRAR"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~ppc ~ppc-macos ~ppc64 ~sparc x86 ~x86-fbsd"
+IUSE=""
+
+DEPEND="!app-arch/unrar-gpl"
+
+S=${WORKDIR}/unrar
+
+src_compile() {
+ emake \
+ -f makefile.unix \
+ CXXFLAGS="${CXXFLAGS}" \
+ CXX="$(tc-getCXX)" \
+ STRIP="true" || die "emake failed"
+}
+
+src_install() {
+ dobin unrar || die "dobin failed"
+ dodoc readme.txt
+
+#SDS
+ epatch "${FILESDIR}"/unrar-3.5.3_fix.patch || die
+ epatch "${FILESDIR}"/ftello_unrar_fix.patch || die
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" clean || die "emake failed"
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" lib || die "emake failed"
+
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/libunrar3/
+ install -s -D -m 755 libunrar3.so ${D}/usr/lib/libunrar3.so
+ install -D -m 644 dll.hpp ${D}/usr/include/libunrar3/dll.hpp
+#EDS
+}
diff --git a/app-arch/unrar/unrar-3.7.3-r1.ebuild b/app-arch/unrar/unrar-3.7.3-r1.ebuild
new file mode 100644
index 0000000..b3e6fd6
--- /dev/null
+++ b/app-arch/unrar/unrar-3.7.3-r1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unrar/unrar-3.7.3.ebuild,v 1.9 2007/02/17 15:12:18 vapier Exp $
+
+#SDS
+inherit toolchain-funcs eutils
+#EDS
+
+
+MY_PN=${PN}src
+DESCRIPTION="Uncompress rar files"
+HOMEPAGE="http://www.rarlab.com/rar_add.htm"
+SRC_URI="http://www.rarlab.com/rar/${MY_PN}-${PV}.tar.gz"
+
+LICENSE="unRAR"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+IUSE=""
+
+DEPEND="!app-arch/unrar-gpl"
+
+S=${WORKDIR}/unrar
+
+src_compile() {
+ emake \
+ -f makefile.unix \
+ CXXFLAGS="${CXXFLAGS}" \
+ CXX="$(tc-getCXX)" \
+ STRIP="true" || die "emake failed"
+}
+
+src_install() {
+ dobin unrar || die "dobin failed"
+ dodoc readme.txt
+
+#SDS
+ epatch "${FILESDIR}"/unrar-3.5.3_fix.patch || die
+ epatch "${FILESDIR}"/ftello_unrar_fix.patch || die
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" clean || die "emake failed"
+ emake -f makefile.unix CXXFLAGS="$CXXFLAGS" lib || die "emake failed"
+
+ mkdir -p ${D}/usr/lib/
+ mkdir -p ${D}/usr/include/libunrar3/
+ install -s -D -m 755 libunrar3.so ${D}/usr/lib/libunrar3.so
+ install -D -m 644 dll.hpp ${D}/usr/include/libunrar3/dll.hpp
+#EDS
+}
diff --git a/app-arch/unzip/Manifest b/app-arch/unzip/Manifest
new file mode 100644
index 0000000..b3e5e92
--- /dev/null
+++ b/app-arch/unzip/Manifest
@@ -0,0 +1,18 @@
+AUX librcc-0.2.7.h 62364 RMD160 d0c2ac61cfd9b9cd9fd038e14d6b9a4d79dc39b9 SHA1 9ea2c8a2d5d0ba2aef5ddcebf193f7391bcbb842 SHA256 64505886d4d68aac32b07bb69734bc932cea7eb3bf858b2cd5d4609595f06e7e
+AUX unzip-5.50-dotdot.patch 3195 RMD160 96b71d43c80ca9fb077c14184e416fa326bddf07 SHA1 2797603c3c749270b88786c9e4e10f119c2f83a1 SHA256 9b7e5cac2d23f840e3d9c9aff553649383c20acb0945d60dfca80b99c74a1666
+AUX unzip-5.52-CVE-2008-0888.patch 1075 RMD160 03d5ec7845ae9347a197c7d1484bb2d9ab96cb93 SHA1 a72e703048ddd2226d430b7375b531320997b98a SHA256 a93b927000ff5923c3e84fc4108a0f19d76a3a057a33556a2f761c18b270f87c
+AUX unzip-5.52-ds-rusxmms.patch 4353 RMD160 a318c923afe145da5b7b8a0870fd4097851c1ada SHA1 a2f3679246b0b5fee2912b922c0e1d4df1268208 SHA256 a2c2e1344953a010d1d866830a1196cb03e14193fea2876da55e2633cb6f06b3
+AUX unzip-5.52-ds-rusxmms2.patch 4257 RMD160 920ebae51a59341e1716695dfd24cc442b446d31 SHA1 879ea5a08971d780f00dd34ea168f545cb168e23 SHA256 09569c72cbf4ba63c280d6dfe56c86eb94879d8eaca8c64e9ba4e907bc698175
+AUX unzip-5.52-no-exec-stack.patch 334 RMD160 81d73b5bb66fb54f8f71252c1fe6e2036d488de9 SHA1 0f318fecebd548e9feb2e93a32c56258d5c552b1 SHA256 8e165db2c138f9729020f3e60e9d8be58d504f4cf8eb7aae18b9432d2d751d4f
+AUX unzip-6.0-no-exec-stack.patch 381 RMD160 c45c06fd6a4fc88ce051637b6d7f1f4b0e09fa48 SHA1 d26e9fb76d73d77c2651198a3b27ae8bfb06fb34 SHA256 ae62249dcf8bbc3c30468b07944df6c8777b565927d9ed6d1fdf7395899ea7c7
+AUX unzip-ds-lazyrcc.patch 4186 RMD160 627f00d0b27fff5d8489a4eada546c34a80f0170 SHA1 9b276df0666c6504f9811d083021568718e2c3b7 SHA256 e18d2dd4152ee50611e2d202d7387c3a8024eb7c88fad74a9cebe3fc6498f04a
+AUX unzip-ds-rcc.patch 2963 RMD160 c37a70a7939126bcab671cb5e7cac855f2d6455e SHA1 4571d02ea694b50e44d9e8502a6b1b49068b1cc8 SHA256 6c53432de2e23639b0b2e4c22c6b0ba1492d76f0634e5b257dc9a5c8312dc9e4
+AUX unzip-ds-unixenc.patch 421 RMD160 048d9763d22007de209cefafde63cdec3e94d251 SHA1 274a2748b33660ddb7e413290c6c7a9a1877d15a SHA256 98b39ee3b6c63164b5b59d6d8c4b1a5fb6f311e2c91b76c44292dda86d0b2c63
+AUX unzip60-ds-isprint.patch 489 RMD160 e46154bea0bddf000e66f4d335d7c6a1ac9ecabb SHA1 7f2e6243646ce22d764f4554cb89142656b12f4f SHA256 30123645d9f06a054d16ee58749c3d1f01db66e99de21e8d822847b353366e2c
+DIST unzip552.tar.gz 1140291 RMD160 b749b0923bc4cceaa6f937aef688e9713a84328c SHA1 1831bd59b9e607a69052f83b263384895e2d4a19 SHA256 145d95e2ef1ef9add2e3c97d1340907e33ab8749eb1235372e7f0b7af600a8e9
+DIST unzip60.tar.gz 1376845 RMD160 48af66606e9472e45fbb94bc4e285da23d1b89ba SHA1 abf7de8a4018a983590ed6f5cbd990d4740f8a22 SHA256 036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37
+EBUILD unzip-5.52-r3.ebuild 1407 RMD160 641f924d8a7dee2fe6e36ec3dfcce26db7d79784 SHA1 ac4c72209e524e9fd28be2a5919e60f8cfea1d40 SHA256 0b3617449ec68f7d53448c3562d06ca74852ae98e308912e8719edd1b3a42b73
+EBUILD unzip-5.52-r4.ebuild 2022 RMD160 aa19e8ed6cc1812ed082f5e9e52d802b3c85cce9 SHA1 0efa28ec77f9208852e9b2941754aa6ea4721de5 SHA256 20995dcfc98f80f9ebcdaabc47347dd1958b2ec061cdb71172b965dec8824117
+EBUILD unzip-5.52-r5.ebuild 2143 RMD160 2565645ed72eeac299cb5ec9223d51618886eee9 SHA1 a6fb8f869c67ea95fe9684304fee7d0275e4031f SHA256 dd52ad8a2d966fccdc136bd24025d5096072035c6a49b7be8e99868d8b37a15b
+EBUILD unzip-5.52-r6.ebuild 2144 RMD160 8bb960a3f85edf25286559c317f48fec7e07e06f SHA1 72b1fb98289aa8107961e3d36ac585892a792a56 SHA256 20076be2040d8387e00090efc6b3ec0dc3fdb30e0eb53ffe475f81550770db50
+EBUILD unzip-6.0-r3.ebuild 2483 RMD160 e1d57a618e2443ee951a2bc07dc84653df81c003 SHA1 12bc4e942384dfe0b360d68ff06039185c4554e6 SHA256 9356ab3f2c1fb594abd3f0d27f2bfd19645d460356b89cb58209cc9d984534e4
diff --git a/app-arch/unzip/files/librcc-0.2.7.h b/app-arch/unzip/files/librcc-0.2.7.h
new file mode 100644
index 0000000..88cc802
--- /dev/null
+++ b/app-arch/unzip/files/librcc-0.2.7.h
@@ -0,0 +1,1544 @@
+#ifndef _LIBRCC_H
+#define _LIBRCC_H
+
+#include <stdlib.h>
+
+/*******************************************************************************
+***************************** Global Defines ***********************************
+*******************************************************************************/
+
+#define RCC_MAX_CHARSETS 16
+#define RCC_MAX_ENGINES 5
+#define RCC_MAX_LANGUAGES 64
+#define RCC_MAX_ALIASES 64
+#define RCC_MAX_CLASSES 16
+
+/* ID's */
+/**
+ * Language ID.
+ * - 0 is default language
+ * - -1 is error
+ * - 1 usually represents "LibRCC off" language
+ * - >1 is some language
+ */
+typedef unsigned char rcc_language_id;
+/**
+ * Alias ID
+ */
+typedef unsigned char rcc_alias_id;
+/**
+ * Relation ID
+ */
+typedef unsigned char rcc_relation_id;
+/**
+ * Charset ID.
+ * - 0 is default charset
+ * - -1 is error
+ * - >0 is some charset
+ */
+typedef unsigned char rcc_charset_id;
+/**
+ * Autocharset ID.
+ * - -1 is error
+ * - >0 is some encoding
+ */
+typedef unsigned char rcc_autocharset_id;
+/**
+ * Engine ID.
+ * - -1 is non configured (first available will be used if any)
+ * - 0 autodetection is switched off
+ * - >0 is some auto-engine
+ */
+typedef unsigned char rcc_engine_id;
+/**
+ * Class ID.
+ */
+typedef int rcc_class_id;
+
+/* Opaque Pointer's */
+typedef struct rcc_context_t *rcc_context; /**< Current Working Context */
+/**
+ * Encoding Detection Engine Context. Containes considered information about
+ * engine, which can be extracted using API functions.
+ * @see rccEngineGetInternal
+ * @see rccEngineGetLanguage
+ * @see rccEngineGetRccContext
+ */
+typedef struct rcc_engine_context_t *rcc_engine_context;
+/**
+ * Current Language Configuration:
+ * Information about current 'class encodings', and selected 'Encoding Detection
+ * Engine'
+ */
+typedef struct rcc_language_config_t *rcc_language_config;
+typedef const struct rcc_class_t *rcc_class_ptr;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Library Initialization function. Should be called prior to all
+ * any library manipulation.
+ */
+int rccInit();
+
+/**
+ * Library Cleanup function.
+ */
+void rccFree();
+
+/*******************************************************************************
+**************************** Initialization ************************************
+*******************************************************************************/
+/**
+ * RCC context initialization flags
+ */
+typedef unsigned int rcc_init_flags;
+
+/**
+ * Do not load default language configuration
+ */
+#define RCC_FLAG_NO_DEFAULT_CONFIGURATION 1
+
+/**
+ * Initialize working context.
+ *
+ * @param locale_variable is variable to get locale from (Default: LC_CTYPE).
+ * @param max_languages is maximal number of languages supported by context. (Default: detect)
+ * @param max_classes is maximal number of classes (Default: detect)
+ * @param defclasses is list of encoding classes (Default: will add later)
+ * @param flags is option flag (Default: nothing)
+ * @see RCC_FLAG_NO_DEFAULT_CONFIGURATION
+ * @return working context or NULL in case of error
+ */
+rcc_context rccCreateContext(const char *locale_variable, unsigned int max_languages, unsigned int max_classes, rcc_class_ptr defclasses, rcc_init_flags flags);
+/**
+ * Initialize default working context (used then no context supplied). Previously
+ * opened default context will be freed.
+ *
+ * @param locale_variable is variable to get locale from (Default: LC_CTYPE).
+ * @param max_languages is maximal number of languages supported by context. (Default: detect)
+ * @param max_classes is maximal number of classes (Default: detect)
+ * @param defclasses is list of encoding classes (Default: will add later)
+ * @param flags is option flag (Default: nothing)
+ * @see RCC_FLAG_NO_DEFAULT_CONFIGURATION
+ * @return non-zero value in case of error
+ */
+int rccInitDefaultContext(const char *locale_variable, unsigned int max_languages, unsigned int max_classes, rcc_class_ptr defclasses, rcc_init_flags flags);
+
+/**
+ * Free all memory used by working context and destroy it.
+ *
+ * @param ctx is working context to be destroyed.
+ */
+void rccFreeContext(rcc_context ctx);
+
+
+/**
+ * Berkeley DB initialization flags
+ */
+typedef unsigned int rcc_db4_flags;
+
+/**
+ * Enables Berkeley DB recodings caching for specified working context.
+ *
+ * @param ctx is working context
+ * @param name is database name (can be shared between different applications)
+ * @param flags are reserved for future.
+ * @return non-zero value in case of error
+ */
+int rccInitDb4(rcc_context ctx, const char *name, rcc_db4_flags flags);
+
+int rccLockConfiguration(rcc_context ctx, unsigned int lock_code);
+int rccUnlockConfiguration(rcc_context ctx, unsigned int lock_code);
+
+/*******************************************************************************
+******************* Altering Language Configuaration ***************************
+*******************************************************************************/
+/**
+ * Encoding name.
+ */
+typedef const char *rcc_charset;
+/**
+ * List of Encoding names
+ */
+typedef rcc_charset rcc_charset_list[RCC_MAX_CHARSETS+1];
+
+/* Engines */
+/**
+ * Engine internal data
+ */
+typedef void *rcc_engine_internal;
+/**
+ * Engine constructor function
+ * @param ctx is engine context
+ * @see rccEngineGetInternal
+ * @see rccEngineGetLanguage
+ * @see rccEngineGetRccContext
+ * @return pointer on desired internal data to be stored in engine_context.
+ */
+typedef rcc_engine_internal (*rcc_engine_init_function)(rcc_engine_context ctx);
+/**
+ * Engine encoding detection function.
+ * @param ctx is engine context
+ * @param buf is string encoded in unknow encoding
+ * @param len is exact size of string or 0 (size will be detected with strlen)
+ * @return the #rcc_autocharset_id of the detected encoding or -1 in case of error
+ */
+typedef rcc_autocharset_id (*rcc_engine_function)(rcc_engine_context ctx, const char *buf, int len);
+/**
+ * Engine destructor function
+ */
+typedef void (*rcc_engine_free_function)(rcc_engine_context ctx);
+
+/**
+ * Encoding detection engine description. Init and Free functions can be omited.
+ * 'func' should analyze string and return position in the encodings list
+ * coresponding to string encoding.
+ */
+struct rcc_engine_t {
+ const char *title; /**< Short title*/
+ rcc_engine_init_function init_func; /**< Constructor function */
+ rcc_engine_free_function free_func; /**< Destructor function */
+ rcc_engine_function func; /**< Function performing encoding detection */
+ rcc_charset_list charsets; /**< List of supported encodings */
+};
+typedef struct rcc_engine_t rcc_engine;
+typedef rcc_engine *rcc_engine_ptr;
+typedef rcc_engine_ptr rcc_engine_list[RCC_MAX_ENGINES+1];
+
+/**
+ * Language description.
+ */
+struct rcc_language_t {
+ const char *sn; /**< Language ISO-639-1 (2 symbol) name */
+ rcc_charset_list charsets; /**< List of language encodings */
+ rcc_engine_list engines; /**< List of encoding detection engines supported by language */
+};
+typedef struct rcc_language_t rcc_language;
+typedef rcc_language *rcc_language_ptr;
+typedef rcc_language_ptr rcc_language_list[RCC_MAX_LANGUAGES+1];
+
+/**
+ * Language Aliases.
+ * For example: ru_UA = uk, cs_SK = sk
+ */
+struct rcc_language_alias_t {
+ const char *alias; /**< Long locale name */
+ const char *lang; /**< Coresponded language ISO-639-1 name */
+};
+typedef struct rcc_language_alias_t rcc_language_alias;
+typedef rcc_language_alias *rcc_language_alias_ptr;
+typedef rcc_language_alias_ptr rcc_language_alias_list[RCC_MAX_ALIASES+1];
+
+/**
+ * Language relations.
+ * Meaning: sentence in considered language may contain words from all his parents. This
+ * knowledge will help Autodetection Engine to guess right language.
+ *
+ * For example: Russian is parent language for Ukrainian. This means it is possible
+ * to encounter russian words in ukrainian sentence.
+ *
+ * All languages by default are related to english language.
+ */
+struct rcc_language_relation_t {
+ const char *lang; /**< Coresponded language ISO-639-1 name */
+ const char *parent; /**< Parent language */
+};
+typedef struct rcc_language_relation_t rcc_language_relation;
+
+/**
+ * Register new language in supplied working context
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language is pointer on language description (shouldn't be freed before library deinitialization).
+ * @return registered language id or -1 in case of a error.
+ */
+rcc_language_id rccRegisterLanguage(rcc_context ctx, rcc_language *language);
+/**
+ * Register new encoding belonging to language in supplied working context
+ * @param language is language charset should be added to ( or default one if NULL supplied )
+ * @param charset is pointer on charset name (shouldn't be freed before library deinitialization).
+ * @return registered charset id or -1 in case of a error.
+ */
+rcc_charset_id rccLanguageRegisterCharset(rcc_language *language, rcc_charset charset);
+/**
+ * Register new Engine in supplied working context
+ * @param language is language charset should be added to ( or default one if NULL supplied )
+ * @param engine is pointer on engine description (shouldn't be freed before library deinitialization).
+ * @return registered engine id or -1 in case of a error.
+ */
+rcc_engine_id rccLanguageRegisterEngine(rcc_language *language, rcc_engine *engine);
+/**
+ * Register new language alias in supplied working context
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param alias is pointer on alias description (shouldn't be freed before library deinitialization).
+ * @return registered alias id or -1 in case of a error.
+ */
+rcc_alias_id rccRegisterLanguageAlias(rcc_context ctx, rcc_language_alias *alias);
+/**
+ * Register new language relation in supplied working context
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param relation is pointer on relation description (shouldn't be freed before library deinitialization).
+ * @return registered relation id or -1 in case of a error.
+ */
+rcc_relation_id rccRegisterLanguageRelation(rcc_context ctx, rcc_language_relation *relation);
+
+/*******************************************************************************
+************************ Altering Configuaration *******************************
+*******************************************************************************/
+/**
+ * Enumeration represents type of class.
+ */
+typedef enum rcc_class_type_t {
+ RCC_CLASS_INVALID = 0, /**< Invalid value */
+ RCC_CLASS_STANDARD, /**< Standard class */
+ RCC_CLASS_KNOWN, /**< Class encoding is known and no autodetection should be performed */
+ RCC_CLASS_FS, /**< Class strings are representing file names */
+ RCC_CLASS_TRANSLATE_LOCALE, /**< It is permited to translate class strings to current Locale Language in rccTo */
+ RCC_CLASS_TRANSLATE_CURRENT,/**< It is permited to translate class strings to Current Language in rccTo */
+ RCC_CLASS_TRANSLATE_FROM, /**< It is permited to translate class strings to Current Language in rccFrom */
+} rcc_class_type;
+
+/**
+ * Provides information about default encoding for specific language
+ */
+struct rcc_class_default_charset_t {
+ const char *lang; /**< Language */
+ const char *charset; /**< Default encoding for #lang */
+};
+typedef const struct rcc_class_default_charset_t rcc_class_default_charset;
+
+/** Forbid change class value using Library API */
+#define RCC_CLASS_FLAG_CONST 0x01
+/** Forbid saving and loading of class value */
+#define RCC_CLASS_FLAG_SKIP_SAVELOAD 0x02
+
+/** Encoding class description. Encoding classes are main concept of LibRCC library.
+ * The strings are recoded between different classes (for example in RusXMMS2 project
+ * ID3 titles are recoded between ID3 and Output classes). The current encoding of
+ * each class can be set using configuration file or API call, otherwise it will
+ * be detected automatically using current locale or default encoding.
+ *
+ * If the #defvalue is not NULL, it provides information about detection of
+ * the default encoding. The are following possibilities for that value:
+ * - Detect default encoding using specified locale variable (LC_CTYPE for example).
+ * . - The current encoding of the another class will be used instead of default encodings. Short name of considered class should be specified.
+ * - Just use specified multibyte encoding for all languages.
+ * In case of detection failure using all these methods, the #defcharset will
+ * be examined if default encoding for current language is available. If not,
+ * the first encoding in the list will be used as current.
+ *
+ * Additionaly it is possible to set special flags to prevent user from
+ * modifying class value. It is possible to protect class from changing
+ * ether using API, or configuration files.
+ *
+ * @see rcc_class_default_charset_t
+ * @see RCC_CLASS_FLAG_CONST
+ * @see RCC_CLASS_FLAG_SKIP_SAVELOAD
+ *
+ * The class type provides information for recoding functions about
+ * automatic detection of the class chrset. The encodings of the
+ * #RCC_CLASS_STANDARD classes will be detected using autoengine (if available
+ * for current language. The #RCC_CLASS_FS classes are associated with files
+ * and encoding will be guessed using find_file.
+ *
+ * @see rcc_class_type_t
+ *
+ */
+struct rcc_class_t {
+ const char *name; /**< Short class name */
+ const rcc_class_type class_type; /**< specifies type of class (Standard, File System, Known) */
+ const char *defvalue; /**< locale variable name or parent name or multibyte encoding name */
+ rcc_class_default_charset *defcharset; /**< default class encodings. Should be specified on per-language basys */
+ const char *fullname; /**< Full name of the class */
+ const unsigned long flags; /**< Class flags. (CONST, SKIP_SAVELOAD) */
+};
+typedef const struct rcc_class_t rcc_class;
+typedef rcc_class_ptr rcc_class_list[RCC_MAX_CLASSES+1];
+
+/**
+ * Register additional class
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param cl is pointer on the class description (shouldn't be freed before library deinitialization).
+ * @return registered class id or -1 in case of a error.
+ */
+rcc_class_id rccRegisterClass(rcc_context ctx, rcc_class *cl);
+/**
+ * Register additional charsets for the current class.
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is class id.
+ * @param charsets is NULL terminated list of classes.
+ * @return non zero value in the case of a error.
+ */
+int rccRegisterAdditionalCharsets(rcc_context ctx, rcc_class_id class_id, rcc_charset *charsets);
+/**
+ * Register names of charsets disabled in the specified class.
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is class id.
+ * @param charsets is NULL terminated list of classes ("unicode" / "nonunicode" specifies corespondent group of charsets).
+ * @return non zero value in the case of a error.
+ */
+int rccRegisterDisabledCharsets(rcc_context ctx, rcc_class_id class_id, rcc_charset *charsets);
+/**
+ * Checks if charset is disabled for the specified class.
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is class id.
+ * @param charset is charset name.
+ * @return 1 if charset is disabled, 0 if charset is enabled, -1 in the case of error.
+ */
+int rccIsDisabledCharsetName(rcc_context ctx, rcc_class_id class_id, const char *charset);
+
+/**
+ * Determines 'class type' of supplied class.
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is class id
+ * @return class type or -1 in case of a error.
+ */
+rcc_class_type rccGetClassType(rcc_context ctx, rcc_class_id class_id);
+/**
+ * Returns name of supplied class.
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is class id
+ * @return class name or NULL in case of a error.
+ */
+const char *rccGetClassName(rcc_context ctx, rcc_class_id class_id);
+/**
+ * Returns full name of supplied class.
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is class id
+ * @return class full name or NULL in case of a error.
+ */
+const char *rccGetClassFullName(rcc_context ctx, rcc_class_id class_id);
+
+/*******************************************************************************
+************************ Altering Configuaration *******************************
+*******************************************************************************/
+typedef int rcc_option_value;
+
+/**
+ * Use BerkeleyDB recodings cache for encoding detection
+ */
+#define RCC_OPTION_LEARNING_FLAG_USE 1
+/**
+ * Cache recodings in BerkeleyDB recoding cache for future use
+ */
+#define RCC_OPTION_LEARNING_FLAG_LEARN 2
+
+typedef enum rcc_option_translate_t {
+ RCC_OPTION_TRANSLATE_OFF = 0, /**< Switch translation off. */
+ RCC_OPTION_TRANSLATE_TRANSLITERATE, /**< Transliterate data. */
+ RCC_OPTION_TRANSLATE_TO_ENGLISH, /**< Translate data to english language (Current language don't matter). */
+ RCC_OPTION_TRANSLATE_SKIP_RELATED, /**< Skip translation of the text's between related languages. */
+ RCC_OPTION_TRANSLATE_SKIP_PARENT, /**< Skip translation of the text's from parent languages (from english). */
+ RCC_OPTION_TRANSLATE_FULL /**< Translate whole data to the current language */
+} rcc_option_translate;
+
+/**
+ * List of options available
+ */
+typedef enum rcc_option_t {
+ RCC_OPTION_LEARNING_MODE = 0, /**< Recoding Caching mode (OFF/ON/RELEARN/LEARN) */
+ RCC_OPTION_AUTODETECT_FS_TITLES, /**< Detect titles of #RCC_CLASS_FS classes */
+ RCC_OPTION_AUTODETECT_FS_NAMES, /**< Try to find encoding of #RCC_CLASS_FS by accessing fs */
+ RCC_OPTION_CONFIGURED_LANGUAGES_ONLY, /**< Use only configured languages or languages with auto-engines */
+ RCC_OPTION_AUTOENGINE_SET_CURRENT, /**< If enabled autodetection engine will set current charset */
+ RCC_OPTION_AUTODETECT_LANGUAGE, /**< Enables language detection */
+ RCC_OPTION_TRANSLATE, /**< Translate #rcc_string if it's language differs from current one */
+ RCC_OPTION_TIMEOUT, /**< Recoding timeout. Currently it is only used to limit translation time */
+ RCC_OPTION_OFFLINE, /**< Allows external module to finish it's job in offline after the main program is terminated */
+ RCC_MAX_OPTIONS,
+ RCC_OPTION_ALL
+} rcc_option;
+
+/**
+ * List of option types
+ */
+typedef enum rcc_option_type_t {
+ RCC_OPTION_TYPE_INVISIBLE = 0, /**< Invisible option. Wouldn't be represented in UI menu */
+ RCC_OPTION_TYPE_STANDARD, /**< Standard option. */
+ RCC_OPTION_TYPE_MAX
+} rcc_option_type;
+
+/**
+ * Description of option values range type
+ */
+typedef enum rcc_option_range_type_t {
+ RCC_OPTION_RANGE_TYPE_BOOLEAN = 0, /**< Boolean option */
+ RCC_OPTION_RANGE_TYPE_RANGE, /**< Range of integer values */
+ RCC_OPTION_RANGE_TYPE_FLAGS, /**< Set of boolean flags */
+ RCC_OPTION_RANGE_TYPE_MENU, /**< Enumeration */
+ RCC_OPTION_RANGE_TYPE_MAX
+} rcc_option_range_type;
+
+/**
+ * Descriptionm of value range
+ */
+typedef struct rcc_option_range_t {
+ rcc_option_range_type type; /**< Value range type */
+ rcc_option_value min; /**< Minimal acceptable option value */
+ rcc_option_value max; /**< Maximal acceptable option value */
+ rcc_option_value step; /**< Preccision step */
+}rcc_option_range;
+
+/* lng.c */
+
+/**
+ * Return number of configured languages
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return number of configured languages or 0 in the case of error
+ */
+int rccGetLanguageNumber(rcc_context ctx);
+/**
+ * Return number of configured classes
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return number of configured classes or 0 in the case of error
+ */
+int rccGetClassNumber(rcc_context ctx);
+/**
+ * Determines name of the supplied language.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is 'language id' of desired language. For default language the 'default' value will be returned.
+ * @return language name or NULL in case of a error.
+ */
+const char *rccGetLanguageName(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Finds language id by the supplied name.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param name is language name
+ * @return language id [0-n] or -1 if not found.
+ */
+rcc_language_id rccGetLanguageByName(rcc_context ctx, const char *name);
+/**
+ * This function resolves default languages. If positive language id is supplied
+ * it will be returned back unchanged. The default language (0 is supplied as
+ * language id) will be resolved to some particular language.
+ * The following procedure will be used:
+ * - 1. Detect Language by locale
+ * - 2. Check if language intialized if RCC_OPTION_CONFIGURED_LANGUAGES_ONLY is set
+ * - 3. If one of the previous steps is failed, select first available language (id=1). Usually it should be 'LibRCC off'.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is language id
+ * @return resolved language id [1-n] or -1 in case of error.
+ */
+rcc_language_id rccGetRealLanguage(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Return considered language name, resolving default language if necessary.
+ * @see rccGetRealLanguage
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is language id
+ * @return resolved language name or NULL in case of error.
+ */
+const char *rccGetRealLanguageName(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Return selected language id.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return selected language id [0-n] or -1 in case of error
+ */
+rcc_language_id rccGetSelectedLanguage(rcc_context ctx);
+/**
+ * Return selected language name.
+ * @see rccGetSelectedLanguage
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return selected language name or NULL in case of error.
+ */
+const char *rccGetSelectedLanguageName(rcc_context ctx);
+/**
+ * Return current language id, resolving default language to particular one if necessary.
+ * See more details how default language is resolved: @see rccGetRealLanguage
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return current language id [1-n] or -1 in case of error
+ */
+rcc_language_id rccGetCurrentLanguage(rcc_context ctx);
+/**
+ * Return current language name.
+ # @see rccGetCurrentLanguage
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return current language id [1-n] or -1 in case of error
+ */
+const char *rccGetCurrentLanguageName(rcc_context ctx);
+
+
+/**
+ * Set current language.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is new language id [0-n]. Set to default state is Ok.
+ * @return non-zero value in case of error
+ */
+int rccSetLanguage(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Set current language by name.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param name is the short name of new language.
+ * @return non-zero value in case of error
+ */
+int rccSetLanguageByName(rcc_context ctx, const char *name);
+
+/* opt.c */
+/**
+ * Return option value.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param option is option
+ * @return current option value or -1 in case of error
+ */
+rcc_option_value rccGetOption(rcc_context ctx, rcc_option option);
+/**
+ * Tests if option have unchanged default value.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param option is option
+ * @return current option value or -1 in case of error
+ */
+int rccOptionIsDefault(rcc_context ctx, rcc_option option);
+/**
+ * Sets option to its default value.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param option is option
+ * @return non-zero value in case of error
+ */
+int rccOptionSetDefault(rcc_context ctx, rcc_option option);
+/**
+ * Set option value.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param option is option
+ * @param value is option value
+ * @return non-zero value in case of erros
+ */
+int rccSetOption(rcc_context ctx, rcc_option option, rcc_option_value value);
+/**
+ * Get current option type.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param option is option
+ * @return current option type or -1 in case of error
+ */
+rcc_option_type rccOptionGetType(rcc_context ctx, rcc_option option);
+/**
+ * Return range description for specified option
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param option is option
+ * @return option range or -1 in case of error
+ */
+rcc_option_range *rccOptionGetRange(rcc_context ctx, rcc_option option);
+
+/**
+ * Get short name of supplied option.
+ *
+ * @param option is option
+ * @return option range or NULL in case of error
+ */
+const char *rccGetOptionName(rcc_option option);
+
+/**
+ * Get short name of supplied option value.
+ *
+ * @param option is option
+ * @param value is value of #option
+ * @return option value name or NULL in case of error
+ */
+const char *rccGetOptionValueName(rcc_option option, rcc_option_value value);
+/**
+ * Get option by short name.
+ *
+ * @param name is option name
+ * @return option or -1 in case of error
+ */
+rcc_option rccGetOptionByName(const char *name);
+/**
+ * Get option value by short name.
+ *
+ * @param option is option
+ * @param name is value name
+ * @return option value or -1 in case of error
+ */
+rcc_option_value rccGetOptionValueByName(rcc_option option, const char *name);
+
+
+/* lngconfig.c */
+/**
+ * Check if configuration is initialized for supplied language.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is concerned language id
+ * @return configuration context if:
+ * - language_id is particular language, not default one
+ * - language already intialized
+ * - language is not dummy (Disable LibRCC) language
+ * otherwise NULL is returned
+ */
+rcc_language_config rccCheckConfig(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Initializes language configuration if not yet configured and returns pointer on
+ * that configuration. If default language is supplied (language_id = 0), the
+ * language id will be resolved to particular language and config of that language
+ * will be returned.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is concerned language id
+ * @return configuration context. The NULL is returned in the case of errors or
+ * dummy (Disable LibRCC) language is selected.
+ */
+rcc_language_config rccGetConfig(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Checks if supplied language is usable. The usability of language is determined
+ * regarding #RCC_OPTION_CONFIGURED_LANGUAGES_ONLY option. Depending on that
+ * option there are several possibilities for language usability:
+ * Any non-dummy language is usable
+ * Any configured or AutoEngine enabled language is usable
+ * Only configured languages are usable
+ *
+ * Language configuration is initialized if not yet configured. And pointer on
+ * that configuration is returned. If default language is supplied (language_id = 0), the
+ * language id will be resolved to particular language and config of that language
+ * will be returned.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param language_id is concerned language id
+ * @return configuration context. The NULL is returned in the case of errors or
+ * if unusable language is supplied.
+ */
+rcc_language_config rccGetUsableConfig(rcc_context ctx, rcc_language_id language_id);
+/**
+ * Initializes language configuration if not yet configured and returns pointer on
+ * that configuration.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param name is concerned language name
+ * @return configuration context or NULL in case of error
+ */
+rcc_language_config rccGetConfigByName(rcc_context ctx, const char *name);
+/**
+ * Returns pointer on the current language configuration (Initializes it as well
+ * if required)
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @return configuration context or NULL in case of error
+ */
+rcc_language_config rccGetCurrentConfig(rcc_context ctx);
+
+/**
+ * Return language associated with supplied configuration.
+ *
+ * @param config is language configuration
+ */
+rcc_language_id rccConfigGetLanguage(rcc_language_config config);
+/**
+ * Return name of the language associated with supplied configuration.
+ *
+ * @param config is language configuration
+ */
+const char *rccConfigGetLanguageName(rcc_language_config config);
+
+/**
+ * Return number of configured charsets
+ *
+ * @param config is language configuration
+ * @return number of charsets available in the configuration or 0 in the case of error
+ */
+int rccConfigGetCharsetNumber(rcc_language_config config);
+/**
+ * Return number of configured charsets
+ *
+ * @param config is language configuration
+ * @param class_id is class id.
+ * @return number of charsets available in the configuration or 0 in the case of error
+ */
+int rccConfigGetClassCharsetNumber(rcc_language_config config, rcc_class_id class_id);
+/**
+ * Return number of configured encoding auto-detection engines
+ *
+ * @param config is language configuration
+ * @return number of engines or 0 in the case of error
+ */
+int rccConfigGetEngineNumber(rcc_language_config config);
+
+/**
+ * Return supplied engine name
+ *
+ * @param config is language configuration
+ * @param engine_id is desired engine
+ * @return selected engine name or NULL in case of error.
+ */
+const char *rccConfigGetEngineName(rcc_language_config config, rcc_engine_id engine_id);
+/**
+ * Return supplied encoding name
+ *
+ * @param config is language configuration
+ * @param charset_id is desired charset
+ * @return selected encoding name or NULL in case of error.
+ */
+const char *rccConfigGetCharsetName(rcc_language_config config, rcc_charset_id charset_id);
+/**
+ * Return supplied encoding name
+ *
+ * @param config is language configuration
+ * @param class_id is charset encodings
+ * @param charset_id is desired charset
+ * @return selected encoding name or NULL in case of error.
+ */
+const char *rccConfigGetClassCharsetName(rcc_language_config config, rcc_class_id class_id, rcc_charset_id charset_id);
+
+/**
+ * Function finds engine id by the supplied name.
+ *
+ * @param config is language configuration
+ * @param name is engine name
+ * @return engine id [0-n] or -1 if not found
+ */
+rcc_engine_id rccConfigGetEngineByName(rcc_language_config config, const char *name);
+/**
+ * Function finds encoding id by the supplied name.
+ *
+ * @param config is language configuration
+ * @param name is encoding name
+ * @return encoding id [0-n] or -1 if not found.
+ */
+rcc_charset_id rccConfigGetCharsetByName(rcc_language_config config, const char *name);
+/**
+ * Function finds encoding id by the supplied name.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param name is encoding name
+ * @return encoding id [0-n] or -1 if not found.
+ */
+rcc_charset_id rccConfigGetClassCharsetByName(rcc_language_config config, rcc_class_id class_id, const char *name);
+/**
+ * Checks if charset is disabled for the specified class.
+ * @param config is language configuration
+ * @param class_id is class id.
+ * @param charset_id is charset id.
+ * @return 1 if charset is disabled, 0 if charset is enabled, -1 in the case of error.
+ */
+int rccConfigIsDisabledCharset(rcc_language_config config, rcc_class_id class_id, rcc_charset_id charset_id);
+/**
+ * Return selected engin id.
+ *
+ * @param config is language configuration
+ * @return selected engine id [-1-n]
+ * - -1 engine is not configured and first available will be used
+ * - 0 engines are disabled
+ * - >0 paticular engine id
+ */
+rcc_engine_id rccConfigGetSelectedEngine(rcc_language_config config);
+/**
+ * Return selected engine name.
+ * @see rccConfigGetSelectedEngine
+ *
+ * @param config is language configuration
+ * @return selected engine name ('default' will be returned if engine not configured) or NULL in case of error.
+ */
+const char *rccConfigGetSelectedEngineName(rcc_language_config config);
+/**
+ * Return current engine_id. The default value will be resolved to paticular engine id. Normally,
+ * the id of the first available engine will be returned. If no engines registered for supplied
+ * language the 0 will be returned, indicating id of dummy(disabled) engine.
+ *
+ * @param config is language configuration
+ * @return selected engine id [0-n] or -1 in case of error
+ * - 0 engines are disabled
+ * - >0 paticular engine id
+ */
+rcc_engine_id rccConfigGetCurrentEngine(rcc_language_config config);
+/**
+ * Return current engine name.
+ * @see rccConfigGetCurrentEngine
+ *
+ * @param config is language configuration
+ * @return current engine name or NULL in case of error.
+ */
+const char *rccConfigGetCurrentEngineName(rcc_language_config config);
+
+/**
+ * Return selected encoding id.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @return selected encoding id [0-n] or -1 in case of error
+ * - 0 default encoding
+ * - >0 paticular encoding id
+ */
+rcc_charset_id rccConfigGetSelectedCharset(rcc_language_config config, rcc_class_id class_id);
+/**
+ * Return selected encoding name.
+ * @see rccConfigGetSelectedCharset
+ *
+ * @param config is language configuration
+ * @param class_id is charset encodings
+ * @return selected encodings name ('default' will be returned if engine not configured) or NULL in case of error.
+ */
+const char *rccConfigGetSelectedCharsetName(rcc_language_config config, rcc_class_id class_id);
+/**
+ * Return current encoding_id. The default value will be resolved to paticular encoding id.
+ * The following procedure is used to detect default encoding:
+ * - If Unicode encoding selected for the same class english language. Return this encoding.
+ * - If the parent class is defined in #defcharset, - return current encoding of parent class.
+ * - If the locale variable is defined in #defcharset and either config language coincide with locale language or unciode encoding defined, use locale encoding.
+ * - If the default value for config language is defined in #defvalue return that default value.
+ * - If the default value for all languages is defined in #defvalue return that default value.
+ * - If either config language is coincide with locale language or unicode locale is used, return locale encoding.
+ * - Return first by the list non-dissabled encoding.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @return selected charset id [1-n] or -1 in case of error
+ */
+rcc_charset_id rccConfigGetCurrentCharset(rcc_language_config config, rcc_class_id class_id);
+/**
+ * Return current encoding name.
+ * @see rccConfigGetCurrentCharset
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @return current charset name or NULL in case of error.
+ */
+const char *rccConfigGetCurrentCharsetName(rcc_language_config config, rcc_class_id class_id);
+
+/**
+ * Set current engine.
+ *
+ * @param config is language configuration
+ * @param engine_id is new language id [-1-n]. If -1 supplied the engine will go in non-configured state.
+ * @return non-zero value in case of error
+ */
+int rccConfigSetEngine(rcc_language_config config, rcc_engine_id engine_id);
+/**
+ * Set current encoding.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param charset_id is new charset id [0-n]. The 0 will switch charset to encoding state.
+ * @return non-zero value in case of error
+ */
+int rccConfigSetCharset(rcc_language_config config, rcc_class_id class_id, rcc_charset_id charset_id);
+/**
+ * Set current engine by name.
+ *
+ * @param config is language configuration
+ * @param name is the short name of new engine ("default" is okey).
+ * @return non-zero value in case of error
+ */
+int rccConfigSetEngineByName(rcc_language_config config, const char *name);
+/**
+ * Set current encoding by name.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param name is the short name of new encoding ("default" is okey).
+ * @return non-zero value in case of error
+ */
+int rccConfigSetCharsetByName(rcc_language_config config, rcc_class_id class_id, const char *name);
+
+/**
+ * Function will return encoding id of charset specified by locale configuration.
+ *
+ * @param config is language configuration
+ * @param locale_variable is locale variable (Default(NULL) is LC_CTYPE)
+ * @return encoding id
+ */
+rcc_charset_id rccConfigGetLocaleCharset(rcc_language_config config, const char *locale_variable);
+/**
+ * Function will return encoding id of charset specified by locale configuration.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param locale_variable is locale variable (Default(NULL) is LC_CTYPE)
+ * @return encoding id
+ */
+rcc_charset_id rccConfigGetLocaleClassCharset(rcc_language_config config, rcc_class_id class_id, const char *locale_variable);
+
+/* curconfig.c */
+int rccGetCharsetNumber(rcc_context ctx);
+int rccGetClassCharsetNumber(rcc_context ctx, rcc_class_id class_id);
+int rccGetEngineNumber(rcc_context ctx);
+
+const char *rccGetEngineName(rcc_context ctx, rcc_engine_id engine_id);
+const char *rccGetCharsetName(rcc_context ctx, rcc_charset_id charset_id);
+const char *rccGetClassCharsetName(rcc_context ctx, rcc_class_id class_id, rcc_charset_id charset_id);
+
+rcc_engine_id rccGetEngineByName(rcc_context ctx, const char *name);
+rcc_charset_id rccGetCharsetByName(rcc_context ctx, const char *name);
+rcc_charset_id rccGetClassCharsetByName(rcc_context ctx, rcc_class_id class_id, const char *name);
+
+int rccIsDisabledCharset(rcc_context ctx, rcc_class_id class_id, rcc_charset_id charset_id);
+
+rcc_engine_id rccGetSelectedEngine(rcc_context ctx);
+const char *rccGetSelectedEngineName(rcc_context ctx);
+rcc_engine_id rccGetCurrentEngine(rcc_context ctx);
+const char *rccGetCurrentEngineName(rcc_context ctx);
+rcc_charset_id rccGetSelectedCharset(rcc_context ctx, rcc_class_id class_id);
+const char *rccGetSelectedCharsetName(rcc_context ctx, rcc_class_id class_id);
+rcc_charset_id rccGetCurrentCharset(rcc_context ctx, rcc_class_id class_id);
+const char *rccGetCurrentCharsetName(rcc_context ctx, rcc_class_id class_id);
+
+int rccSetEngine(rcc_context ctx, rcc_engine_id engine_id);
+int rccSetCharset(rcc_context ctx, rcc_class_id class_id, rcc_charset_id charset_id);
+int rccSetEngineByName(rcc_context ctx, const char *name);
+int rccSetCharsetByName(rcc_context ctx, rcc_class_id class_id, const char *name);
+
+rcc_charset_id rccGetLocaleCharset(rcc_context ctx, const char *locale_variable);
+rcc_charset_id rccGetLocaleClassCharset(rcc_context ctx, rcc_class_id class_id, const char *locale_variable);
+
+rcc_autocharset_id rccDetectCharset(rcc_context ctx, rcc_class_id class_id, const char *buf, size_t len);
+
+/*******************************************************************************
+************************ Language Configuaration *******************************
+*******************************************************************************/
+
+/*******************************************************************************
+************************ RCC_STRING Manipulations ******************************
+*******************************************************************************/
+/* string.c */
+/**
+ * Intermediate string format. RCC_string can be manipulated as standard NULL terminated string.
+ * However it contains small header with information about string language. All strings are
+ * encoded using UTF-8 encoding.
+ */
+typedef char *rcc_string;
+/**
+ * Intermediate string format. RCC_string can be manipulated as standard NULL terminated string.
+ * However it contains small header with information about string language. All strings are
+ * encoded using UTF-8 encoding.
+ */
+typedef const char *rcc_const_string;
+
+/**
+ * Check string header and verify if it is really correct #rcc_string.
+ *
+ * @param str is verifying string
+ */
+size_t rccStringCheck(const char *str);
+/**
+ * Check string header and verify if it is really correct #rcc_string.
+ *
+ * @param str is verifying string
+ * @param len is preciese size of str.
+ * @return size of string in bytes or -1 if check failed
+ */
+size_t rccStringSizedCheck(const char *str, size_t len);
+
+/**
+ * Extract language from #rcc_string.
+ *
+ * @param str is #rcc_string
+ * @return size of string in bytes or -1 if check failed
+ */
+rcc_language_id rccStringGetLanguage(rcc_const_string str);
+/**
+ * Returns pointer on UTF-8 string kept inside of #rcc_string.
+ *
+ * @param str is #rcc_string
+ * @return pointer on constant string or NULL in the case of error
+ */
+const char *rccStringGetString(rcc_const_string str);
+/**
+ * Extract UTF-8 string from #rcc_string.
+ *
+ * @param str is #rcc_string
+ * @return pointer on string or NULL in the case of error. The string should be freed by the caller.
+ */
+char *rccStringExtractString(rcc_const_string str);
+
+/**
+ * If str is #rcc_string function will return pointer on UTF-8 string kept inside, otherwise
+ * pointer on the passed string is returned.
+ *
+ * @param str is null-terminated string
+ * @return pointer on constant string
+ */
+const char *rccGetString(const char *str);
+/**
+ * If str is #rcc_string function will return pointer on UTF-8 string kept inside, otherwise
+ * pointer on the passed string is returned.
+ *
+ * @param str is string (perhaps not zero terminated)
+ * @param len is exact length of string or 0 (in this case length will be computed using 'strlen'
+ * @return pointer on constant string
+ */
+const char *rccSizedGetString(const char *str, size_t len);
+
+int rccStringCmp(const char *str1, const char *str2);
+int rccStringNCmp(const char *str1, const char *str2, size_t n);
+int rccStringCaseCmp(const char *str1, const char *str2);
+int rccStringNCaseCmp(const char *str1, const char *str2, size_t n);
+
+/*******************************************************************************
+******************************** Recoding **************************************
+*******************************************************************************/
+/* rcciconv.c */
+
+/**
+ * recoding context
+ */
+typedef struct rcc_iconv_t *rcc_iconv;
+
+/**
+ * Open recoding context.
+ *
+ * @param from is source encoding
+ * @param to is destination encoding
+ * @result
+ * - NULL if no recoding is required
+ * - Pointer on initialized context if successful
+ */
+rcc_iconv rccIConvOpen(const char *from, const char *to);
+/**
+ * Close recoding context.
+ *
+ * @param icnv is recoding context */
+void rccIConvClose(rcc_iconv icnv);
+/**
+ * Recodes chunk of data.
+ *
+ * @param icnv is recoding context
+ * @param buf is data for recoding
+ * @param len is size of the data
+ * @param rlen is size of recoded data
+ * @return recoded string or NULL in the case of error
+ */
+char *rccIConv(rcc_iconv icnv, const char *buf, size_t len, size_t *rlen);
+
+/* rcctranslate.c */
+
+/**
+ * translating context
+ */
+typedef struct rcc_translate_t *rcc_translate;
+
+/**
+ * Open translating context.
+ *
+ * @param from is source language
+ * @param to is destination language
+ * @return
+ * - NULL if translation is not required or possible
+ * - Pointer on initialized context if successful
+ */
+rcc_translate rccTranslateOpen(const char *from, const char *to);
+/**
+ * Close translating context.
+ *
+ * @param translate is translating context
+ */
+void rccTranslateClose(rcc_translate translate);
+
+/*
+ * Set translation timeout
+ *
+ * @param translate is translating context
+ * @param us is timeout in microseconds (0 - no timeout)
+ * @return non-zero value is returned in the case of errror
+ */
+int rccTranslateSetTimeout(rcc_translate translate, unsigned long us);
+
+/*
+ * Allows translation engine to perform pending task after the main program is
+ * being terminated
+ *
+ * @param translate is translating context
+ * @return non-zero value is returned in the case of errror
+ */
+int rccTranslateAllowOfflineMode(rcc_translate translate);
+
+/**
+ * Translate string.
+ *
+ * @param translate is translating context
+ * @param buf is UTF-8 encoded string for translating
+ * @return recoded string or NULL in the case of error
+ */
+char *rccTranslate(rcc_translate translate, const char *buf);
+
+
+/* rccspell.c */
+
+/**
+ * spelling context
+ */
+typedef struct rcc_speller_t *rcc_speller;
+
+/**
+ * result of spelling
+ */
+typedef enum rcc_speller_result_t {
+ RCC_SPELLER_INCORRECT = 0, /**< Word not found in dictionaries */
+ RCC_SPELLER_ALMOST_PARENT, /**< Similliar word is found in parents dictionary */
+ RCC_SPELLER_ALMOST_CORRECT, /**< Similliar word is found in dictionary */
+ RCC_SPELLER_PARENT, /**< Word is found in parent dictionary */
+ RCC_SPELLER_CORRECT /**< Word is found in dictionary */
+} rcc_speller_result;
+
+int rccSpellerResultIsOwn(rcc_speller_result res);
+int rccSpellerResultIsPrecise(rcc_speller_result res);
+int rccSpellerResultIsCorrect(rcc_speller_result res);
+
+/**
+ * Open spelling context.
+ *
+ * @param lang is language
+ * @return
+ * - NULL if language is not supported and in the case of error.
+ * - Pointer on initialized context if successful
+ */
+rcc_speller rccSpellerCreate(const char *lang);
+/**
+ * Close spelling context.
+ *
+ * @param speller is spelling context
+ */
+void rccSpellerFree(rcc_speller speller);
+/**
+ * Add parent to the spelling context.
+ *
+ * @param speller is spelling context
+ * @param parent is parent spelling context
+ * @return non-zero value in the case of error
+ */
+int rccSpellerAddParent(rcc_speller speller, rcc_speller parent);
+/**
+ * Spell a word.
+ *
+ * @param speller is spelling context
+ * @param word is UTF-8 encoded word for spelling
+ * @return FALSE if word is not found in dictionary
+ */
+rcc_speller_result rccSpeller(rcc_speller speller, const char *word);
+
+/* recode.c */
+
+/**
+ * Tries to detect language of string
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is encoding class
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @result is language_id or -1 if autodetection is failed
+ */
+rcc_language_id rccDetectLanguage(rcc_context ctx, rcc_class_id class_id, const char *buf, size_t len);
+
+/**
+ * Tries to detect charset of string
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @result is auto_charset_id or -1 if autodetection is failed
+ */
+rcc_autocharset_id rccConfigDetectCharset(rcc_language_config config, rcc_class_id class_id, const char *buf, size_t len);
+
+/**
+ * Recode string from specified encoding class to #rcc_string. Encoding detection engines and
+ * recoding cache are used (if possible) to detect original 'buf' encoding. Otherwise the
+ * preconfigured encoding of class is assumed.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is encoding class
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+rcc_string rccSizedFrom(rcc_context ctx, rcc_class_id class_id, const char *buf, size_t len);
+/**
+ * Recode string from #rcc_string to specified encoding class. If encoding class is of
+ * 'File System' type, the autoprobing for file names can be performed. In the other cases
+ * the rcc_string will be recoded in preconfigured class encoding.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is encoding class
+ * @param buf is original zero terminated string
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccSizedTo(rcc_context ctx, rcc_class_id class_id, rcc_const_string buf, size_t *rlen);
+/**
+ * Recode string between different encoding classes. The conversion is relays on rccSizedFrom
+ * and rccSizedTo functions.
+ * @see rccSizedFrom
+ * @see rccSizedTo
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param from is source encoding class
+ * @param to is destination encoding class
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccSizedRecode(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen);
+/**
+ * Recode file name between different encoding classes. Normally, should be used to convert
+ * string from the file list to real file system names. The autoprobing of names is enabled
+ * depending on the output encoding class configuration and current options.
+ * @see rcc_class_t
+ * @see rcc_class_type_t
+ * @see rcc_option_t
+
+ * The conversion is partly relays on rccSizedFrom.
+ * @see rccSizedFrom
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param from is source encoding class
+ * @param to is destination encoding class
+ * @param fspath is path to the filesystem where file are located.
+ * @param path is file path
+ * @param filename is file name
+ * @result is recoded file name or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccFS(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *fspath, const char *path, const char *filename);
+
+/**
+ * Recode string from specified encoding to #rcc_string.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param charset is source encoding
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+rcc_string rccSizedFromCharset(rcc_context ctx, const char *charset, const char *buf, size_t len);
+/**
+ * Recode string from #rcc_string to specified encoding.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param charset is destination encoding
+ * @param buf is original zero terminated string
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccSizedToCharset(rcc_context ctx, const char *charset, rcc_const_string buf, size_t *rlen);
+/**
+ * Recode string between specified encoding class and encoding.
+ *
+ * The conversion is partly relays on rccSizedFrom.
+ * @see rccSizedFrom
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is source encoding class
+ * @param charset is destination encoding
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccSizedRecodeToCharset(rcc_context ctx, rcc_class_id class_id, const char *charset, rcc_const_string buf, size_t len, size_t *rlen);
+/**
+ * Recode string between specified encoding and encoding class.
+ *
+ * The conversion is partly relays on rccSizedTo
+ * @see rccSizedTo
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param class_id is destination encoding class
+ * @param charset is source encoding
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+rcc_string rccSizedRecodeFromCharset(rcc_context ctx, rcc_class_id class_id, const char *charset, const char *buf, size_t len, size_t *rlen);
+/**
+ * Recode string between specified encodings.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param from is source encoding
+ * @param to is destination encoding
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccSizedRecodeCharsets(rcc_context ctx, const char *from, const char *to, const char *buf, size_t len, size_t *rlen);
+
+
+/**
+ * Recode string from specified encoding class to #rcc_string. Encoding detection engines and
+ * recoding cache are used (if possible) to detect original 'buf' encoding. Otherwise the
+ * preconfigured encoding of class is assumed.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+rcc_string rccConfigSizedFrom(rcc_language_config config, rcc_class_id class_id, const char *buf, size_t len);
+/**
+ * Recode string from #rcc_string to specified encoding class. If encoding class is of
+ * 'File System' type, the autoprobing for file names can be performed. In the other cases
+ * the rcc_string will be recoded in preconfigured class encoding.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param buf is original zero terminated string
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccConfigSizedTo(rcc_language_config config, rcc_class_id class_id, rcc_const_string buf, size_t *rlen);
+/**
+ * Recode string between different encoding classes. The conversion is relays on rccConfigSizedFrom
+ * and rccConfigSizedTo functions.
+ * @see rccConfigSizedFrom
+ * @see rccConfigSizedTo
+ *
+ * @param config is language configuration
+ * @param from is source encoding class
+ * @param to is destination encoding class
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccConfigSizedRecode(rcc_language_config config, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen);
+/**
+ * Recode string from specified encoding to #rcc_string.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param charset is source encoding
+ * @param buf is original string (perhaps not zero terminated)
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+rcc_string rccConfigSizedRecodeFromCharset(rcc_language_config config, rcc_class_id class_id, const char *charset, const char *buf, size_t len, size_t *rlen);
+/**
+ * Recode string from #rcc_string to specified encoding.
+ *
+ * @param config is language configuration
+ * @param class_id is encoding class
+ * @param charset is destination encoding
+ * @param buf is original zero terminated string
+ * @param len is exact size of string or 0. In the last case the size is determined using 'strlen' function.
+ * @param rlen in rlen the size of recoded string will be returned.
+ * @result is recoded string or NULL if recoding is not required or failed. It is up to the caller to free memory.
+ */
+char *rccConfigSizedRecodeToCharset(rcc_language_config config, rcc_class_id class_id, const char *charset, rcc_const_string buf, size_t len, size_t *rlen);
+
+
+#define rccFrom(ctx, class_id, buf) rccSizedFrom(ctx, class_id, buf, 0)
+#define rccTo(ctx, class_id, buf) rccSizedTo(ctx, class_id, buf, NULL)
+#define rccRecode(ctx, from, to, buf) rccSizedRecode(ctx, from, to, buf, 0, NULL)
+
+#define rccFromCharset(ctx, charset, buf) rccSizedFromCharset(ctx, charset, buf, 0)
+#define rccToCharset(ctx, charset, buf) rccSizedToCharset(ctx, charset, buf, NULL)
+#define rccRecodeToCharset(ctx, class_id, charset, buf) rccSizedRecodeToCharset(ctx, class_id, charset, buf, 0, NULL)
+#define rccRecodeFromCharset(ctx, class_id, charset, buf) rccSizedRecodeFromCharset(ctx, class_id, charset, buf, 0, NULL)
+#define rccRecodeCharsets(ctx, from, to, buf) rccSizedRecodeCharsets(ctx, from, to, buf, 0, NULL)
+
+#define rccConfigFrom(ctx, class_id, buf) rccConfigSizedFrom(ctx, class_id, buf, 0)
+#define rccConfigTo(ctx, class_id, buf) rccConfigSizedTo(ctx, class_id, buf, NULL)
+#define rccConfigRecode(ctx, from, to, buf) rccConfigSizedRecode(ctx, from, to, buf, 0, NULL)
+#define rccConfigRecodeToCharset(ctx, class_id, charset, buf) rccConfigSizedRecodeToCharset(ctx, class_id, charset, buf, 0, NULL)
+#define rccConfigRecodeFromCharset(ctx, class_id, charset, buf) rccConfigSizedRecodeFromCharset(ctx, class_id, charset, buf, 0, NULL)
+
+/*******************************************************************************
+******************************** Options ***************************************
+*******************************************************************************/
+
+/* xml.c */
+typedef void *rcc_config;
+rcc_config rccGetConfiguration();
+
+/**
+ * Save Configuration.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param name is configuration file name ( can be shared between multiple applications! )
+ * @return non-zero in the case of errors.
+ */
+int rccSave(rcc_context ctx, const char *name);
+/**
+ * Load Configuration.
+ *
+ * @param ctx is working context ( or default one if NULL supplied )
+ * @param name is configuration file name ( can be shared between multiple applications! )
+ * @return non-zero in the case of errors.
+ */
+int rccLoad(rcc_context ctx, const char *name);
+
+/*******************************************************************************
+**************************** Engine Plugins ************************************
+*******************************************************************************/
+
+typedef rcc_engine *(*rcc_plugin_engine_info_function)(const char *lang);
+
+rcc_engine_internal rccEngineGetInternal(rcc_engine_context ctx);
+rcc_language *rccEngineGetLanguage(rcc_engine_context ctx);
+rcc_context rccEngineGetRccContext(rcc_engine_context ctx);
+rcc_engine *rccEngineGetInfo(rcc_engine_context ctx);
+rcc_autocharset_id rccEngineGetAutoCharsetByName(rcc_engine_context ctx, const char *name);
+
+
+/*******************************************************************************
+**************************** Configuration *************************************
+*******************************************************************************/
+
+/**
+ * The Berkley DB support is compiled in
+ */
+#define RCC_CC_FLAG_HAVE_BERKLEY_DB 0x01
+/**
+ * The dynamic engine plugins support is compiled in
+ */
+#define RCC_CC_FLAG_HAVE_DYNAMIC_ENGINES 0x02
+/**
+ * Enca engine is compiled in
+ */
+#define RCC_CC_FLAG_HAVE_ENCA 0x04
+/**
+ * LibRCD engine is compiled in
+ */
+#define RCC_CC_FLAG_HAVE_RCD 0x08
+/**
+ * Libtranslate translation engine compiled in
+ */
+#define RCC_CC_FLAG_HAVE_LIBTRANSLATE 0x10
+
+/**
+ * The library build environment is represented by this structure
+ */
+struct rcc_compiled_configuration_t {
+ unsigned long flags; /**< compilation flags */
+};
+typedef struct rcc_compiled_configuration_t rcc_compiled_configuration_s;
+typedef const struct rcc_compiled_configuration_t *rcc_compiled_configuration;
+
+/**
+ * Get information about library compilation environment
+ */
+rcc_compiled_configuration rccGetCompiledConfiguration();
+
+int rccLocaleGetClassByName(const char *locale);
+int rccLocaleGetLanguage(char *result, const char *lv, unsigned int n);
+int rccLocaleGetCharset(char *result, const char *lv, unsigned int n);
+
+
+/**
+ * For compatibilty reasons
+ */
+#define RCC_OPTION_TRANSLATE_SKIP_PARRENT RCC_OPTION_TRANSLATE_SKIP_PARENT
+#define RCC_SPELLER_ALMOST_PARRENT RCC_SPELLER_ALMOST_PARENT
+#define RCC_SPELLER_PARRENT RCC_SPELLER_PARENT
+#define rccSpellerAddParrent rccSpellerAddParent
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LIBRCC_H */
diff --git a/app-arch/unzip/files/unzip-5.50-dotdot.patch b/app-arch/unzip/files/unzip-5.50-dotdot.patch
new file mode 100644
index 0000000..962a302
--- /dev/null
+++ b/app-arch/unzip/files/unzip-5.50-dotdot.patch
@@ -0,0 +1,84 @@
+Only in unzip-5.50-lhh/: cscope.files
+Only in unzip-5.50-lhh/: cscope.out
+diff -ur unzip-5.50/unix/unix.c unzip-5.50-lhh/unix/unix.c
+--- unzip-5.50/unix/unix.c 2002-01-21 17:54:42.000000000 -0500
++++ unzip-5.50-lhh/unix/unix.c 2003-06-11 18:35:38.000000000 -0400
+@@ -421,7 +421,8 @@
+ */
+ {
+ char pathcomp[FILNAMSIZ]; /* path-component buffer */
+- char *pp, *cp=(char *)NULL; /* character pointers */
++ char *pp, *cp=(char *)NULL, /* character pointers */
++ *dp=(char *)NULL;
+ char *lastsemi=(char *)NULL; /* pointer to last semi-colon in pathcomp */
+ #ifdef ACORN_FTYPE_NFS
+ char *lastcomma=(char *)NULL; /* pointer to last comma in pathcomp */
+@@ -429,6 +430,7 @@
+ #endif
+ int quote = FALSE; /* flags */
+ int killed_ddot = FALSE; /* is set when skipping "../" pathcomp */
++ int snarf_ddot = FALSE; /* Is set while scanning for "../" */
+ int error = MPN_OK;
+ register unsigned workch; /* hold the character being tested */
+
+@@ -467,6 +469,9 @@
+ while ((workch = (uch)*cp++) != 0) {
+
+ if (quote) { /* if character quoted, */
++ if ((pp == pathcomp) && (workch == '.'))
++ /* Oh no you don't... */
++ goto ddot_hack;
+ *pp++ = (char)workch; /* include it literally */
+ quote = FALSE;
+ } else
+@@ -481,15 +486,44 @@
+ break;
+
+ case '.':
+- if (pp == pathcomp) { /* nothing appended yet... */
++ if (pp == pathcomp) {
++ddot_hack:
++ /* nothing appended yet... */
+ if (*cp == '/') { /* don't bother appending "./" to */
+ ++cp; /* the path: skip behind the '/' */
+ break;
+- } else if (!uO.ddotflag && *cp == '.' && cp[1] == '/') {
+- /* "../" dir traversal detected */
+- cp += 2; /* skip over behind the '/' */
+- killed_ddot = TRUE; /* set "show message" flag */
+- break;
++ } else if (!uO.ddotflag) {
++
++ /*
++ * SECURITY: Skip past control characters if the user
++ * didn't OK use of absolute pathnames. lhh - this is
++ * a very quick, ugly, inefficient fix.
++ */
++ dp = cp;
++ do {
++ workch = (uch)(*dp);
++ if (workch == '/' && snarf_ddot) {
++ /* "../" dir traversal detected */
++ cp = dp + 1; /* skip past the '/' */
++ killed_ddot = TRUE; /* set "show msg" flag */
++ break;
++ } else if (workch == '.' && !snarf_ddot) {
++ snarf_ddot = TRUE;
++ } else if (isprint(workch) ||
++ ((workch > 127) && (workch <= 254))) {
++ /*
++ * Since we found a printable, non-ctrl char,
++ * we can stop looking for '../', the amount
++ * in ../!
++ */
++ break;
++ }
++
++ dp++;
++ } while (*dp != 0);
++
++ if (killed_ddot)
++ break;
+ }
+ }
+ *pp++ = '.';
diff --git a/app-arch/unzip/files/unzip-5.52-CVE-2008-0888.patch b/app-arch/unzip/files/unzip-5.52-CVE-2008-0888.patch
new file mode 100644
index 0000000..368b3ee
--- /dev/null
+++ b/app-arch/unzip/files/unzip-5.52-CVE-2008-0888.patch
@@ -0,0 +1,35 @@
+http://bugs.gentoo.org/213761
+
+fix for CVE-2008-0888
+
+--- inflate.c
++++ inflate.c
+@@ -983,6 +983,7 @@
+ unsigned l; /* last length */
+ unsigned m; /* mask for bit lengths table */
+ unsigned n; /* number of lengths to get */
++ struct huft *tlp;
+ struct huft *tl; /* literal/length code table */
+ struct huft *td; /* distance code table */
+ unsigned bl; /* lookup bits for tl */
+@@ -996,6 +997,8 @@
+ int retval = 0; /* error code returned: initialized to "no error" */
+
+
++ td = tlp = tl = (struct huft *)NULL;
++
+ /* make local bit buffer */
+ Trace((stderr, "\ndynamic block"));
+ b = G.bb;
+@@ -1047,9 +1050,9 @@
+ while (i < n)
+ {
+ NEEDBITS(bl)
+- j = (td = tl + ((unsigned)b & m))->b;
++ j = (tlp = tl + ((unsigned)b & m))->b;
+ DUMPBITS(j)
+- j = td->v.n;
++ j = tlp->v.n;
+ if (j < 16) /* length of code in bits (0..15) */
+ ll[i++] = l = j; /* save last length in l */
+ else if (j == 16) /* repeat last length 3 to 6 times */
diff --git a/app-arch/unzip/files/unzip-5.52-ds-rusxmms.patch b/app-arch/unzip/files/unzip-5.52-ds-rusxmms.patch
new file mode 100644
index 0000000..8d55b94
--- /dev/null
+++ b/app-arch/unzip/files/unzip-5.52-ds-rusxmms.patch
@@ -0,0 +1,150 @@
+diff -dPNur unzip-5.52/fileio.c unzip-5.52-ds/fileio.c
+--- unzip-5.52/fileio.c 2005-02-27 03:10:12.000000000 +0100
++++ unzip-5.52-ds/fileio.c 2008-04-11 22:25:31.000000000 +0200
+@@ -78,7 +78,7 @@
+ # endif
+ #endif
+ #include "ebcdic.h" /* definition/initialization of ebcdic[] */
+-
++#include "dsrecode.h"
+
+ /*
+ Note: Under Windows, the maximum size of the buffer that can be used
+diff -dPNur unzip-5.52/unzpriv.h unzip-5.52-ds/unzpriv.h
+--- unzip-5.52/unzpriv.h 2005-02-04 00:26:42.000000000 +0100
++++ unzip-5.52-ds/unzpriv.h 2008-04-11 22:25:31.000000000 +0200
+@@ -2564,9 +2564,9 @@
+ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
+ (hostnum) == FS_HPFS_ || \
+ ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \
+- _OEM_INTERN((string)); \
++ _DS_OEM_INTERN((string)); \
+ } else { \
+- _ISO_INTERN((string)); \
++ _DS_ISO_INTERN((string)); \
+ }
+ #endif
+
+diff -dPNur unzip-5.52/dsrecode.h unzip-5.52-ds/dsrecode.h
+--- unzip-5.52/dsrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ unzip-5.52-ds/dsrecode.h 2008-04-11 22:24:24.000000000 +0200
+@@ -0,0 +1,119 @@
++#include "librcc.h"
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define OEM_CLASS 0
++#define ISO_CLASS 1
++#define OUT_CLASS 2
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM_INTERN", 0 },
++ { "iso", RCC_CLASS_STANDARD, NULL, default_iso, "ISO_INTERN", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL }
++};
++
++int initialized = 0;
++
++#ifdef RCC_LAZY
++#include <dlfcn.h>
++# define RCC_LIBRARY "librcc.so.0"
++int (*rccInit2)();
++int (*rccFree2)();
++int (*rccInitDefaultContext2)(const char *locale_variable, unsigned int max_languages, unsigned int max_classes, rcc_class_ptr defclasses, rcc_init_flags flags);
++int (*rccInitDb42)(rcc_context ctx, const char *name, rcc_db4_flags flags);
++char* (*rccSizedRecode2)(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen);
++int (*rccLoad2)(rcc_context ctx, const char *name);
++
++
++static char *rccRecode2(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf) {
++ return rccSizedRecode2(ctx, from, to, buf, 0, NULL);
++}
++
++void *rcc_handle;
++#else /* RCC_LAZY */
++#define rccInit2 rccInit
++#define rccFree2 rccFree
++#define rccInitDefaultContext2 rccInitDefaultContext
++#define rccInitDb42 rccInitDb4
++#define rccRecode2 rccRecode
++#define rccLoad2 rccLoad
++#endif /* RCC_LAZY */
++
++static void rccUnzipFree() {
++ if (initialized > 0) {
++ rccFree2();
++#ifdef RCC_LAZY
++ dlclose(rcc_handle);
++#endif /* RCC_LAZY */
++ initialized = 0;
++ }
++}
++
++
++static int rccUnzipInit() {
++ if (initialized) return 0;
++
++#ifdef RCC_LAZY
++ rcc_handle = dlopen("/usr/lib/" RCC_LIBRARY, RTLD_NOW);
++ if (!rcc_handle) rcc_handle = dlopen("/usr/local/lib/" RCC_LIBRARY, RTLD_NOW);
++ if (!rcc_handle) {
++ initialized = -1;
++ return 1;
++ }
++
++ rccInit2 = dlsym(rcc_handle, "rccInit");
++ rccFree2 = dlsym(rcc_handle, "rccFree");
++ rccInitDefaultContext2 = dlsym(rcc_handle, "rccInitDefaultContext");
++ rccInitDb42 = dlsym(rcc_handle, "rccInitDb4");
++ rccSizedRecode2 = dlsym(rcc_handle, "rccSizedRecode");
++ rccLoad2 = dlsym(rcc_handle, "rccLoad");
++
++ if ((!rccInit2)||(!rccFree2)||(!rccInitDefaultContext2)||(!rccInitDb42)||(!rccSizedRecode2)||(!rccLoad2)) {
++ dlclose(rcc_handle);
++ initialized = -1;
++ return 1;
++ }
++#endif /* RCC_LAZY */
++
++ rccInit2();
++ rccInitDefaultContext2(NULL, 0, 0, classes, 0);
++ rccLoad2(NULL, "zip");
++ rccInitDb42(NULL, NULL, 0);
++ atexit(rccUnzipFree);
++ initialized = 1;
++ return 0;
++}
++
++
++
++void _DS_OEM_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ if (initialized>0) {
++ str = rccRecode2(NULL, OEM_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++ }
++}
++
++void _DS_ISO_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ if (initialized>0) {
++ str = rccRecode2(NULL, ISO_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++ }
++}
diff --git a/app-arch/unzip/files/unzip-5.52-ds-rusxmms2.patch b/app-arch/unzip/files/unzip-5.52-ds-rusxmms2.patch
new file mode 100644
index 0000000..6670a10
--- /dev/null
+++ b/app-arch/unzip/files/unzip-5.52-ds-rusxmms2.patch
@@ -0,0 +1,149 @@
+diff -dPNur unzip-5.52/fileio.c unzip-5.52-ds/fileio.c
+--- unzip-5.52/fileio.c 2005-02-27 03:10:12.000000000 +0100
++++ unzip-5.52-ds/fileio.c 2008-04-11 22:25:31.000000000 +0200
+@@ -78,7 +78,7 @@
+ # endif
+ #endif
+ #include "ebcdic.h" /* definition/initialization of ebcdic[] */
+-
++#include "dsrecode.h"
+
+ /*
+ Note: Under Windows, the maximum size of the buffer that can be used
+diff -dPNur unzip-5.52/unzpriv.h unzip-5.52-ds/unzpriv.h
+--- unzip-5.52/unzpriv.h 2005-02-04 00:26:42.000000000 +0100
++++ unzip-5.52-ds/unzpriv.h 2008-04-11 22:25:31.000000000 +0200
+@@ -2564,9 +2564,9 @@
+ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
+ (hostnum) == FS_HPFS_ || \
+ ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \
+- _OEM_INTERN((string)); \
++ _DS_OEM_INTERN((string)); \
+ } else { \
+- _ISO_INTERN((string)); \
++ _DS_ISO_INTERN((string)); \
+ }
+ #endif
+
+diff -dPNur unzip-5.52/dsrecode.h unzip-5.52-ds/dsrecode.h
+--- unzip-5.52/dsrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ unzip-5.52-ds/dsrecode.h 2008-04-11 22:24:24.000000000 +0200
+@@ -0,0 +1,118 @@
++#include "librcc.h"
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define OEM_CLASS 0
++#define ISO_CLASS 1
++#define OUT_CLASS 2
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM_INTERN", 0 },
++ { "iso", RCC_CLASS_STANDARD, NULL, default_iso, "ISO_INTERN", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL }
++};
++
++int initialized = 0;
++
++#ifdef RCC_LAZY
++#include <dlfcn.h>
++# define RCC_LIBRARY "librcc.so.0"
++int (*rccInit2)();
++int (*rccFree2)();
++int (*rccInitDefaultContext2)(const char *locale_variable, unsigned int max_languages, unsigned int max_classes, rcc_class_ptr defclasses, rcc_init_flags flags);
++int (*rccInitDb42)(rcc_context ctx, const char *name, rcc_db4_flags flags);
++char* (*rccSizedRecode2)(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen);
++int (*rccLoad2)(rcc_context ctx, const char *name);
++
++
++static char *rccRecode2(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf) {
++ return rccSizedRecode2(ctx, from, to, buf, 0, NULL);
++}
++
++void *rcc_handle;
++#else /* RCC_LAZY */
++#define rccInit2 rccInit
++#define rccFree2 rccFree
++#define rccInitDefaultContext2 rccInitDefaultContext
++#define rccInitDb42 rccInitDb4
++#define rccRecode2 rccRecode
++#define rccLoad2 rccLoad
++#endif /* RCC_LAZY */
++
++static void rccUnzipFree() {
++ if (initialized > 0) {
++ rccFree2();
++#ifdef RCC_LAZY
++ dlclose(rcc_handle);
++#endif /* RCC_LAZY */
++ initialized = 0;
++ }
++}
++
++
++static int rccUnzipInit() {
++ if (initialized) return 0;
++
++#ifdef RCC_LAZY
++ rcc_handle = dlopen(RCC_LIBRARY, RTLD_NOW);
++ if (!rcc_handle) {
++ initialized = -1;
++ return 1;
++ }
++
++ rccInit2 = dlsym(rcc_handle, "rccInit");
++ rccFree2 = dlsym(rcc_handle, "rccFree");
++ rccInitDefaultContext2 = dlsym(rcc_handle, "rccInitDefaultContext");
++ rccInitDb42 = dlsym(rcc_handle, "rccInitDb4");
++ rccSizedRecode2 = dlsym(rcc_handle, "rccSizedRecode");
++ rccLoad2 = dlsym(rcc_handle, "rccLoad");
++
++ if ((!rccInit2)||(!rccFree2)||(!rccInitDefaultContext2)||(!rccInitDb42)||(!rccSizedRecode2)||(!rccLoad2)) {
++ dlclose(rcc_handle);
++ initialized = -1;
++ return 1;
++ }
++#endif /* RCC_LAZY */
++
++ rccInit2();
++ rccInitDefaultContext2(NULL, 0, 0, classes, 0);
++ rccLoad2(NULL, "zip");
++ rccInitDb42(NULL, NULL, 0);
++ atexit(rccUnzipFree);
++ initialized = 1;
++ return 0;
++}
++
++
++
++void _DS_OEM_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ if (initialized>0) {
++ str = rccRecode2(NULL, OEM_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++ }
++}
++
++void _DS_ISO_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ if (initialized>0) {
++ str = rccRecode2(NULL, ISO_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++ }
++}
diff --git a/app-arch/unzip/files/unzip-5.52-no-exec-stack.patch b/app-arch/unzip/files/unzip-5.52-no-exec-stack.patch
new file mode 100644
index 0000000..e2869bf
--- /dev/null
+++ b/app-arch/unzip/files/unzip-5.52-no-exec-stack.patch
@@ -0,0 +1,13 @@
+Make sure that the asm files don't incorrectly trigger an executable
+stack marking in the final shared library. That's bad, mmmkay.
+
+--- unzip/crc_i386.S
++++ unzip/crc_i386.S
+@@ -238,3 +238,7 @@
+ #endif /* i386 || _i386 || _I386 || __i386 */
+
+ #endif /* !USE_ZLIB */
++
++#ifdef __ELF__
++.section .note.GNU-stack,"",%progbits
++#endif
diff --git a/app-arch/unzip/files/unzip-6.0-no-exec-stack.patch b/app-arch/unzip/files/unzip-6.0-no-exec-stack.patch
new file mode 100644
index 0000000..7973378
--- /dev/null
+++ b/app-arch/unzip/files/unzip-6.0-no-exec-stack.patch
@@ -0,0 +1,13 @@
+Make sure that the asm files don't incorrectly trigger an executable
+stack marking in the final shared library. That's bad, mmmkay.
+
+--- unzip/crc_i386.S
++++ unzip/crc_i386.S
+@@ -302,3 +302,7 @@
+ #endif /* i386 || _i386 || _I386 || __i386 */
+
+ #endif /* !USE_ZLIB && !CRC_TABLE_ONLY */
++
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
diff --git a/app-arch/unzip/files/unzip-ds-lazyrcc.patch b/app-arch/unzip/files/unzip-ds-lazyrcc.patch
new file mode 100644
index 0000000..e2fbfa7
--- /dev/null
+++ b/app-arch/unzip/files/unzip-ds-lazyrcc.patch
@@ -0,0 +1,146 @@
+diff -dPNur unzip-5.52/dsrecode.h unzip-5.52-new/dsrecode.h
+--- unzip-5.52/dsrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ unzip-5.52-new/dsrecode.h 2007-04-04 21:20:31.000000000 +0200
+@@ -0,0 +1,115 @@
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define OEM_CLASS 0
++#define ISO_CLASS 1
++#define OUT_CLASS 2
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM_INTERN", 0 },
++ { "iso", RCC_CLASS_STANDARD, NULL, default_iso, "ISO_INTERN", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL }
++};
++
++int initialized = 0;
++
++#ifdef RCC_LAZY
++#include <dlfcn.h>
++# define RCC_LIBRARY "librcc.so.0"
++int (*rccInit2)();
++int (*rccFree2)();
++int (*rccInitDefaultContext2)(const char *locale_variable, unsigned int max_languages, unsigned int max_classes, rcc_class_ptr defclasses, rcc_init_flags flags);
++int (*rccInitDb42)(rcc_context ctx, const char *name, rcc_db4_flags flags);
++char* (*rccSizedRecode2)(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf, size_t len, size_t *rlen);
++
++static char *rccRecode2(rcc_context ctx, rcc_class_id from, rcc_class_id to, const char *buf) {
++ rccSizedRecode2(ctx, from, to, buf, 0, NULL);
++}
++
++void *rcc_handle;
++#else /* RCC_LAZY */
++#define rccInit2 rccInit
++#define rccFree2 rccFree
++#define rccInitDefaultContext2 rccInitDefaultContext
++#define rccInitDb42 rccInitDb4
++#define rccRecode2 rccRecode
++
++#endif /* RCC_LAZY */
++
++static void rccUnzipFree() {
++ if (initialized > 0) {
++ rccFree2();
++#ifdef RCC_LAZY
++ dlclose(rcc_handle);
++#endif /* RCC_LAZY */
++ initialized = 0;
++ }
++}
++
++
++static int rccUnzipInit() {
++ if (initialized) return 0;
++
++#ifdef RCC_LAZY
++ rcc_handle = dlopen("/usr/lib/" RCC_LIBRARY, RTLD_NOW);
++ if (!rcc_handle) rcc_handle = dlopen("/usr/local/lib/" RCC_LIBRARY, RTLD_NOW);
++ if (!rcc_handle) {
++ initialized = -1;
++ return 1;
++ }
++
++ rccInit2 = dlsym(rcc_handle, "rccInit");
++ rccFree2 = dlsym(rcc_handle, "rccFree");
++ rccInitDefaultContext2 = dlsym(rcc_handle, "rccInitDefaultContext");
++ rccInitDb42 = dlsym(rcc_handle, "rccInitDb4");
++ rccSizedRecode2 = dlsym(rcc_handle, "rccSizedRecode");
++
++ if ((!rccInit2)||(!rccFree2)||(!rccInitDefaultContext2)||(!rccInitDb42)||(!rccSizedRecode2)) {
++ dlclose(rcc_handle);
++ initialized = -1;
++ return 1;
++ }
++#endif /* RCC_LAZY */
++
++ rccInit2();
++ rccInitDefaultContext2(NULL, 0, 0, classes, 0);
++ rccInitDb42(NULL, NULL, 0);
++ atexit(rccUnzipFree);
++ initialized = 1;
++ return 0;
++}
++
++
++
++void _DS_OEM_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ if (initialized>0) {
++ str = rccRecode2(NULL, OEM_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++ }
++}
++
++void _DS_ISO_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ if (initialized>0) {
++ str = rccRecode2(NULL, ISO_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++ }
++}
+diff -dPNur unzip-5.52/fileio.c unzip-5.52-new/fileio.c
+--- unzip-5.52/fileio.c 2005-02-27 03:10:12.000000000 +0100
++++ unzip-5.52-new/fileio.c 2007-04-04 21:16:58.000000000 +0200
+@@ -78,7 +78,7 @@
+ # endif
+ #endif
+ #include "ebcdic.h" /* definition/initialization of ebcdic[] */
+-
++#include "dsrecode.h"
+
+ /*
+ Note: Under Windows, the maximum size of the buffer that can be used
+diff -dPNur unzip-5.52/unzpriv.h unzip-5.52-new/unzpriv.h
+--- unzip-5.52/unzpriv.h 2005-02-04 00:26:42.000000000 +0100
++++ unzip-5.52-new/unzpriv.h 2007-04-04 21:16:58.000000000 +0200
+@@ -2564,9 +2564,9 @@
+ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
+ (hostnum) == FS_HPFS_ || \
+ ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \
+- _OEM_INTERN((string)); \
++ _DS_OEM_INTERN((string)); \
+ } else { \
+- _ISO_INTERN((string)); \
++ _DS_ISO_INTERN((string)); \
+ }
+ #endif
+
diff --git a/app-arch/unzip/files/unzip-ds-rcc.patch b/app-arch/unzip/files/unzip-ds-rcc.patch
new file mode 100644
index 0000000..6b70685
--- /dev/null
+++ b/app-arch/unzip/files/unzip-ds-rcc.patch
@@ -0,0 +1,105 @@
+diff -dPNur unzip-5.51/dsrecode.h unzip-5.51-new/dsrecode.h
+--- unzip-5.51/dsrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ unzip-5.51-new/dsrecode.h 2005-07-19 05:03:50.000000000 +0200
+@@ -0,0 +1,62 @@
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define OEM_CLASS 0
++#define ISO_CLASS 1
++#define OUT_CLASS 2
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM_INTERN", 0 },
++ { "iso", RCC_CLASS_STANDARD, NULL, default_iso, "ISO_INTERN", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL }
++};
++
++int initialized = 0;
++
++static void rccUnzipFree() {
++ if (initialized) {
++ rccFree();
++ initialized = 0;
++ }
++}
++
++static int rccUnzipInit() {
++ if (initialized) return 0;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccInitDb4(NULL, NULL, 0);
++ atexit(rccUnzipFree);
++ initialized = 1;
++ return 0;
++}
++
++
++
++void _DS_OEM_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ str = rccRecode(NULL, OEM_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++}
++
++void _DS_ISO_INTERN(char *string) {
++ char *str;
++ rccUnzipInit();
++ str = rccRecode(NULL, ISO_CLASS, OUT_CLASS, string);
++ if (str) {
++ strncpy(string,str,FILNAMSIZ);
++ free(str);
++ }
++}
+diff -dPNur unzip-5.51/fileio.c unzip-5.51-new/fileio.c
+--- unzip-5.51/fileio.c 2004-05-23 03:01:20.000000000 +0200
++++ unzip-5.51-new/fileio.c 2005-04-19 17:19:25.000000000 +0200
+@@ -78,7 +78,7 @@
+ # endif
+ #endif
+ #include "ebcdic.h" /* definition/initialization of ebcdic[] */
+-
++#include "dsrecode.h"
+
+ /*
+ Note: Under Windows, the maximum size of the buffer that can be used
+diff -dPNur unzip-5.51/unix/Makefile unzip-5.51-new/unix/Makefile
+--- unzip-5.51/unix/Makefile 2004-03-01 18:37:24.000000000 +0100
++++ unzip-5.51-new/unix/Makefile 2005-07-19 04:03:11.000000000 +0200
+@@ -43,7 +43,7 @@
+
+ # UnZip flags
+ CC = cc# try using "gcc" target rather than changing this (CC and LD
+-LD = $(CC)# must match, else "unresolved symbol: ___main" is possible)
++LD = $(CC) -lrcc# must match, else "unresolved symbol: ___main" is possible)
+ AS = as
+ LOC = $(LOCAL_UNZIP)
+ AF = $(LOC)
+diff -dPNur unzip-5.51/unzpriv.h unzip-5.51-new/unzpriv.h
+--- unzip-5.51/unzpriv.h 2004-03-01 19:09:04.000000000 +0100
++++ unzip-5.51-new/unzpriv.h 2005-04-19 17:19:25.000000000 +0200
+@@ -2521,9 +2521,9 @@
+ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
+ (hostnum) == FS_HPFS_ || \
+ ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \
+- _OEM_INTERN((string)); \
++ _DS_OEM_INTERN((string)); \
+ } else { \
+- _ISO_INTERN((string)); \
++ _DS_ISO_INTERN((string)); \
+ }
+ #endif
+
diff --git a/app-arch/unzip/files/unzip-ds-unixenc.patch b/app-arch/unzip/files/unzip-ds-unixenc.patch
new file mode 100644
index 0000000..e33e6ba
--- /dev/null
+++ b/app-arch/unzip/files/unzip-ds-unixenc.patch
@@ -0,0 +1,9 @@
+diff -dPNur unzip-5.50/unzpriv.h unzip-5.50-new/unzpriv.h
+--- unzip-5.50/unzpriv.h Sun Feb 17 21:01:48 2002
++++ unzip-5.50-new/unzpriv.h Tue Jun 10 07:16:23 2003
+@@ -2424,4 +2424,5 @@
+ !(((islochdr) || (isuxatt)) && \
+ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
+ (hostnum) == FS_HPFS_ || \
++ (hostnum) == UNIX_ || \
+ ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \
diff --git a/app-arch/unzip/files/unzip60-ds-isprint.patch b/app-arch/unzip/files/unzip60-ds-isprint.patch
new file mode 100644
index 0000000..64ea1ee
--- /dev/null
+++ b/app-arch/unzip/files/unzip60-ds-isprint.patch
@@ -0,0 +1,12 @@
+diff -dPNur unzip60/extract.c unzip60-ds/extract.c
+--- unzip60/extract.c 2009-03-14 02:32:52.000000000 +0100
++++ unzip60-ds/extract.c 2010-07-06 16:34:09.000000000 +0200
+@@ -2596,7 +2596,7 @@
+ */
+ # define UZ_FNFILTER_REPLACECHAR '?'
+ # endif
+- if (!isprint(*r)) {
++ if (*r < 32) { //(!isprint(*r)) {
+ if (*r < 32) {
+ /* ASCII control codes are escaped as "^{letter}". */
+ if (se != NULL && (s > (space + (size-4)))) {
diff --git a/app-arch/unzip/unzip-5.52-r3.ebuild b/app-arch/unzip/unzip-5.52-r3.ebuild
new file mode 100644
index 0000000..e5b581e
--- /dev/null
+++ b/app-arch/unzip/unzip-5.52-r3.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unzip/unzip-5.52.ebuild,v 1.2 2005/05/31 15:18:54 swegener Exp $
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="Unzipper for pkzip-compressed files"
+HOMEPAGE="ftp://ftp.info-zip.org/pub/infozip/UnZip.html"
+SRC_URI="ftp://ftp.info-zip.org/pub/infozip/src/${PN}${PV/.}.tar.gz"
+
+LICENSE="Info-ZIP"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86"
+IUSE="rcc"
+
+DEPEND="rcc? ( app-i18n/librcc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-lazyrcc.patch || die )
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-unixenc.patch || die )
+
+ ld_opts=""
+# use rcc && ld_opts="-lrcc"
+ use rcc && ld_opts="-ldl"
+ use rcc && cc_opts="-DRCC_LAZY=1"
+
+ sed -i \
+ -e "s:-O3:${CFLAGS}:" \
+ -e "s:CC=gcc :CC=\"$(tc-getCC) ${cc_opts}\" :" \
+ -e "s:LD=gcc :LD=\"$(tc-getCC) ${ld_opts}\" :" \
+ -e "s:-O :${CFLAGS} :" \
+ -e "s:LF2 = -s:LF2 = :" \
+ unix/Makefile \
+ || die "sed unix/Makefile failed"
+}
+
+src_compile() {
+ use x86 \
+ && TARGET=linux \
+ || TARGET=linux_noasm
+ emake -f unix/Makefile ${TARGET} || die "emake failed"
+}
+
+src_install() {
+ dobin unzip funzip unzipsfx unix/zipgrep || die "dobin failed"
+ dosym unzip /usr/bin/zipinfo
+ doman man/*.1
+ dodoc BUGS History* README ToDo WHERE
+}
diff --git a/app-arch/unzip/unzip-5.52-r4.ebuild b/app-arch/unzip/unzip-5.52-r4.ebuild
new file mode 100644
index 0000000..fe8d65e
--- /dev/null
+++ b/app-arch/unzip/unzip-5.52-r4.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unzip/unzip-5.52-r2.ebuild,v 1.6 2008/03/29 16:57:06 jer Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="unzipper for pkzip-compressed files"
+HOMEPAGE="http://www.info-zip.org/"
+SRC_URI="mirror://gentoo/${PN}${PV/.}.tar.gz"
+
+LICENSE="Info-ZIP"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc ~sparc-fbsd x86 ~x86-fbsd"
+IUSE="rcc"
+
+DEPEND="rcc? ( app-i18n/librcc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-no-exec-stack.patch
+ epatch "${FILESDIR}"/${P}-CVE-2008-0888.patch #213761
+#SDS
+ use rcc && ( epatch ${FILESDIR}/${P}-ds-rusxmms.patch || die )
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-unixenc.patch || die )
+
+ ld_opts=""
+# use rcc && ld_opts="-lrcc"
+ use rcc && ld_opts="-ldl"
+ use rcc && cc_opts="-DRCC_LAZY=1"
+#EDS
+
+ sed -i \
+ -e 's:-O3:$(CFLAGS) $(CPPFLAGS):' \
+ -e 's:-O :$(CFLAGS) $(CPPFLAGS) :' \
+ -e "s:CC=gcc :CC=\"$(tc-getCC) ${cc_opts}\" :" \
+ -e "s:LD=gcc :LD=\"$(tc-getCC) ${ld_opts}\" :" \
+ -e 's:LF2 = -s:LF2 = :' \
+ -e 's:LF = :LF = $(LDFLAGS) :' \
+ -e 's:SL = :SL = $(LDFLAGS) :' \
+ -e 's:FL = :FL = $(LDFLAGS) :' \
+ unix/Makefile \
+ || die "sed unix/Makefile failed"
+}
+
+src_compile() {
+ local TARGET
+ case ${CHOST} in
+ i?86*-linux*) TARGET=linux_asm ;;
+ *-linux*) TARGET=linux_noasm ;;
+ i?86*-freebsd* | i?86*-dragonfly* | i?86*-openbsd* | i?86*-netbsd*)
+ TARGET=freebsd ;; # mislabelled bsd with x86 asm
+ *-freebsd* | *-dragonfly* | *-openbsd* | *-netbsd*)
+ TARGET=bsd ;;
+ *-darwin*) TARGET=macosx ;;
+ *) die "Unknown target, you suck" ;;
+ esac
+ append-lfs-flags #104315
+ emake -f unix/Makefile ${TARGET} || die "emake failed"
+}
+
+src_install() {
+ dobin unzip funzip unzipsfx unix/zipgrep || die "dobin failed"
+ dosym unzip /usr/bin/zipinfo || die
+ doman man/*.1
+ dodoc BUGS History* README ToDo WHERE
+}
diff --git a/app-arch/unzip/unzip-5.52-r5.ebuild b/app-arch/unzip/unzip-5.52-r5.ebuild
new file mode 100644
index 0000000..81f9392
--- /dev/null
+++ b/app-arch/unzip/unzip-5.52-r5.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unzip/unzip-5.52-r2.ebuild,v 1.6 2008/03/29 16:57:06 jer Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="unzipper for pkzip-compressed files"
+HOMEPAGE="http://www.info-zip.org/"
+SRC_URI="mirror://gentoo/${PN}${PV/.}.tar.gz"
+
+LICENSE="Info-ZIP"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc ~sparc-fbsd x86 ~x86-fbsd"
+IUSE="rcc"
+
+#To overcome circular dependencies
+PDEPEND="rcc? ( app-i18n/librcc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-no-exec-stack.patch
+ epatch "${FILESDIR}"/${P}-CVE-2008-0888.patch #213761
+
+#SDS
+ use rcc && (
+ epatch ${FILESDIR}/${P}-ds-rusxmms.patch || die
+ epatch ${FILESDIR}/${PN}-ds-unixenc.patch || die
+ if [ ! -a /usr/include/librcc.h ]; then
+ cp "${FILESDIR}"/librcc-0.2.7.h librcc.h || die
+ fi
+ )
+
+ ld_opts=""
+ cc_opts=""
+ use rcc && ld_opts="-ldl"
+ use rcc && cc_opts="-DRCC_LAZY=1"
+#EDS
+
+ sed -i \
+ -e 's:-O3:$(CFLAGS) $(CPPFLAGS):' \
+ -e 's:-O :$(CFLAGS) $(CPPFLAGS) :' \
+ -e "s:CC=gcc :CC=\"$(tc-getCC) ${cc_opts}\" :" \
+ -e "s:LD=gcc :LD=\"$(tc-getCC) ${ld_opts}\" :" \
+ -e 's:LF2 = -s:LF2 = :' \
+ -e 's:LF = :LF = $(LDFLAGS) :' \
+ -e 's:SL = :SL = $(LDFLAGS) :' \
+ -e 's:FL = :FL = $(LDFLAGS) :' \
+ unix/Makefile \
+ || die "sed unix/Makefile failed"
+}
+
+src_compile() {
+ local TARGET
+ case ${CHOST} in
+ i?86*-linux*) TARGET=linux_asm ;;
+ *-linux*) TARGET=linux_noasm ;;
+ i?86*-freebsd* | i?86*-dragonfly* | i?86*-openbsd* | i?86*-netbsd*)
+ TARGET=freebsd ;; # mislabelled bsd with x86 asm
+ *-freebsd* | *-dragonfly* | *-openbsd* | *-netbsd*)
+ TARGET=bsd ;;
+ *-darwin*) TARGET=macosx ;;
+ *) die "Unknown target, you suck" ;;
+ esac
+ append-lfs-flags #104315
+ emake -f unix/Makefile ${TARGET} || die "emake failed"
+}
+
+src_install() {
+ dobin unzip funzip unzipsfx unix/zipgrep || die "dobin failed"
+ dosym unzip /usr/bin/zipinfo || die
+ doman man/*.1
+ dodoc BUGS History* README ToDo WHERE
+}
diff --git a/app-arch/unzip/unzip-5.52-r6.ebuild b/app-arch/unzip/unzip-5.52-r6.ebuild
new file mode 100644
index 0000000..b8dedcc
--- /dev/null
+++ b/app-arch/unzip/unzip-5.52-r6.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unzip/unzip-5.52-r2.ebuild,v 1.6 2008/03/29 16:57:06 jer Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="unzipper for pkzip-compressed files"
+HOMEPAGE="http://www.info-zip.org/"
+SRC_URI="mirror://gentoo/${PN}${PV/.}.tar.gz"
+
+LICENSE="Info-ZIP"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc ~sparc-fbsd x86 ~x86-fbsd"
+IUSE="rcc"
+
+#To overcome circular dependencies
+PDEPEND="rcc? ( app-i18n/librcc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-no-exec-stack.patch
+ epatch "${FILESDIR}"/${P}-CVE-2008-0888.patch #213761
+
+#SDS
+ use rcc && (
+ epatch ${FILESDIR}/${P}-ds-rusxmms2.patch || die
+ epatch ${FILESDIR}/${PN}-ds-unixenc.patch || die
+ if [ ! -a /usr/include/librcc.h ]; then
+ cp "${FILESDIR}"/librcc-0.2.7.h librcc.h || die
+ fi
+ )
+
+ ld_opts=""
+ cc_opts=""
+ use rcc && ld_opts="-ldl"
+ use rcc && cc_opts="-DRCC_LAZY=1"
+#EDS
+
+ sed -i \
+ -e 's:-O3:$(CFLAGS) $(CPPFLAGS):' \
+ -e 's:-O :$(CFLAGS) $(CPPFLAGS) :' \
+ -e "s:CC=gcc :CC=\"$(tc-getCC) ${cc_opts}\" :" \
+ -e "s:LD=gcc :LD=\"$(tc-getCC) ${ld_opts}\" :" \
+ -e 's:LF2 = -s:LF2 = :' \
+ -e 's:LF = :LF = $(LDFLAGS) :' \
+ -e 's:SL = :SL = $(LDFLAGS) :' \
+ -e 's:FL = :FL = $(LDFLAGS) :' \
+ unix/Makefile \
+ || die "sed unix/Makefile failed"
+}
+
+src_compile() {
+ local TARGET
+ case ${CHOST} in
+ i?86*-linux*) TARGET=linux_asm ;;
+ *-linux*) TARGET=linux_noasm ;;
+ i?86*-freebsd* | i?86*-dragonfly* | i?86*-openbsd* | i?86*-netbsd*)
+ TARGET=freebsd ;; # mislabelled bsd with x86 asm
+ *-freebsd* | *-dragonfly* | *-openbsd* | *-netbsd*)
+ TARGET=bsd ;;
+ *-darwin*) TARGET=macosx ;;
+ *) die "Unknown target, you suck" ;;
+ esac
+ append-lfs-flags #104315
+ emake -f unix/Makefile ${TARGET} || die "emake failed"
+}
+
+src_install() {
+ dobin unzip funzip unzipsfx unix/zipgrep || die "dobin failed"
+ dosym unzip /usr/bin/zipinfo || die
+ doman man/*.1
+ dodoc BUGS History* README ToDo WHERE
+}
diff --git a/app-arch/unzip/unzip-6.0-r3.ebuild b/app-arch/unzip/unzip-6.0-r3.ebuild
new file mode 100644
index 0000000..d2176aa
--- /dev/null
+++ b/app-arch/unzip/unzip-6.0-r3.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-arch/unzip/unzip-6.0-r1.ebuild,v 1.10 2010/01/10 00:28:54 jer Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+MY_P="${PN}${PV/.}"
+
+DESCRIPTION="unzipper for pkzip-compressed files"
+HOMEPAGE="http://www.info-zip.org/"
+SRC_URI="mirror://sourceforge/infozip/${MY_P}.tar.gz"
+
+LICENSE="Info-ZIP"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm hppa ~ia64 m68k ~ppc ppc64 s390 sh ~sparc x86"
+#SDS
+IUSE="bzip2 unicode rcc"
+#To overcome circular dependencies
+PDEPEND="rcc? ( app-i18n/librcc )"
+#EDS
+
+DEPEND="bzip2? ( app-arch/bzip2 )"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${MY_P}"
+
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-no-exec-stack.patch
+
+
+#SDS
+ use rcc && (
+ epatch ${FILESDIR}/${PN}60-ds-isprint.patch || die
+ epatch ${FILESDIR}/${PN}-5.52-ds-rusxmms2.patch || die
+ epatch ${FILESDIR}/${PN}-ds-unixenc.patch || die
+ if [ ! -a /usr/include/librcc.h ]; then
+ cp "${FILESDIR}"/librcc-0.2.7.h librcc.h || die
+ fi
+ )
+
+ ld_opts=""
+ use rcc && ld_opts="-ldl"
+#EDS
+
+ sed -i \
+ -e '/^CFLAGS/d' \
+ -e '/CFLAGS/s:-O[0-9]\?:$(CFLAGS) $(CPPFLAGS):' \
+ -e '/^STRIP/s:=.*:=true:' \
+ -e "s:CC=gcc :CC=$(tc-getCC) :" \
+ -e "s:LD=gcc :LD=$(tc-getCC) :" \
+ -e "s:AS=gcc :AS=$(tc-getCC) :" \
+ -e "s:LF2 = -s:LF2 = ${ld_opts} :" \
+ -e 's:LF = :LF = $(LDFLAGS) :' \
+ -e 's:SL = :SL = $(LDFLAGS) :' \
+ -e 's:FL = :FL = $(LDFLAGS) :' \
+ -e "/^#L_BZ2/s:^$(use bzip2 && echo .)::" \
+ unix/Makefile \
+ || die "sed unix/Makefile failed"
+}
+
+src_compile() {
+ local TARGET
+ case ${CHOST} in
+ i?86*-*linux*) TARGET=linux_asm ;;
+ *linux*) TARGET=linux_noasm ;;
+ i?86*-*bsd* | \
+ i?86*-dragonfly*) TARGET=freebsd ;; # mislabelled bsd with x86 asm
+ *bsd* | *dragonfly*) TARGET=bsd ;;
+ *-darwin*) TARGET=macosx ;;
+ *) die "Unknown target, you suck" ;;
+ esac
+
+ [[ ${CHOST} == *linux* ]] && append-cppflags -DNO_LCHMOD
+ use bzip2 && append-cppflags -DUSE_BZIP2
+ use unicode && append-cppflags -DUNICODE_SUPPORT -DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE
+ append-cppflags -DLARGE_FILE_SUPPORT #281473
+#SDS
+ use rcc && append-cppflags -DRCC_LAZY=1
+#EDS
+
+ emake \
+ -f unix/Makefile \
+ ${TARGET} || die "emake failed"
+}
+
+src_install() {
+ dobin unzip funzip unzipsfx unix/zipgrep || die "dobin failed"
+ dosym unzip /usr/bin/zipinfo || die
+ doman man/*.1
+ dodoc BUGS History* README ToDo WHERE
+}
diff --git a/app-backup/duplicity/Manifest b/app-backup/duplicity/Manifest
new file mode 100644
index 0000000..92b9ec7
--- /dev/null
+++ b/app-backup/duplicity/Manifest
@@ -0,0 +1,3 @@
+AUX duplicity-0.6.24-skip-test.patch 477 SHA256 2ed2169f915817630d11a2d089c03e79058461a30b693520a45f622def2c8aa5 SHA512 37f7f3cc774ad15301449c580f23347fbc1cd4fe6903e641abe2497242c0a9d31152a59d886c87a84fbcf0e9b390eb0a5652d63d0367f73529465c927ee30933 WHIRLPOOL 56dc20bc46018eae7af5aa222f7eb4ede9c3db1c08c910a904f547d18af930bfdf49c8d56e8480924960ca87d124786def4127b2a2b3ef20be1b26bb95c1129e
+DIST duplicity-0.7.09.tar.gz 1542198 SHA256 431e7060ba1b028605f82aee2202543506998c386c7008cd9dfe975e9128a8b3 SHA512 da53b95d5a24b8c696c22dcf7e8a8e576bb8b00b62e56ee7f1e39bf4ca2be301ed87414f196f195f32bce0d15a6d289137b493a2c305ce969cf22e9205634e51 WHIRLPOOL 45d216088cf43c6ed0f65a86b723603f5cc977d1311ea4281189dc2d950665212968dc2b5acda4427492ee3d5d9fd195a2efb9e1ece660cc96a03fbf6e8aa97d
+EBUILD duplicity-0.7.09.ebuild 1256 SHA256 58132e1dd9d6724dc30168226c1e69370f88b16c59f4822006353b7c44db6e7e SHA512 f5093a08d87a535c3583ed7aca0a404c207a5794cbddf3cff510bbe86b992429e5a0d8fb4756977fdbee1c067c830e53763e58b6f29107a9846183dc59bb97f8 WHIRLPOOL 522f38670d717f01c3f06fe2404a4aad77201af1abbd6c2795e87d36a90414f0a34ac72a67c78ea108db81fd37fbc70eff107b7b189158eb8638189232b03fd4
diff --git a/app-backup/duplicity/duplicity-0.7.09.ebuild b/app-backup/duplicity/duplicity-0.7.09.ebuild
new file mode 100644
index 0000000..3b9b288
--- /dev/null
+++ b/app-backup/duplicity/duplicity-0.7.09.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 versionator
+
+DESCRIPTION="Secure backup system using gnupg to encrypt data"
+HOMEPAGE="http://www.nongnu.org/duplicity/"
+SRC_URI="https://code.launchpad.net/${PN}/$(get_version_component_range 1-2)-series/${PV}/+download/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
+IUSE="s3 test"
+
+CDEPEND="
+ net-libs/librsync
+ app-crypt/gnupg
+ dev-python/lockfile
+"
+DEPEND="${CDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? ( dev-python/mock[${PYTHON_USEDEP}] )
+"
+RDEPEND="${CDEPEND}
+ dev-python/paramiko[${PYTHON_USEDEP}]
+ s3? ( dev-python/boto[${PYTHON_USEDEP}] )
+"
+
+python_prepare_all() {
+ # workaround until failing test is fixed
+ local PATCHES=( "${FILESDIR}"/${PN}-0.6.24-skip-test.patch )
+
+ distutils-r1_python_prepare_all
+
+ sed -i "s/'COPYING',//" setup.py || die "Couldn't remove unnecessary COPYING file."
+}
+
+python_test() {
+ esetup.py test
+}
+
+pkg_postinst() {
+ einfo "Duplicity has many optional dependencies to support various backends."
+ einfo "Currently it's up to you to install them as necessary."
+}
diff --git a/app-backup/duplicity/files/duplicity-0.6.24-skip-test.patch b/app-backup/duplicity/files/duplicity-0.6.24-skip-test.patch
new file mode 100644
index 0000000..ef6d959
--- /dev/null
+++ b/app-backup/duplicity/files/duplicity-0.6.24-skip-test.patch
@@ -0,0 +1,10 @@
+--- duplicity-0.6.24/testing/functional/test_final.py
++++ duplicity-0.6.24/testing/functional/test_final.py
+@@ -156,6 +156,7 @@
+ self.run_duplicity(options=["remove-older-than", "50000", "--force", self.backend_url])
+ self.assertEqual(self.get_backend_files(), second_chain)
+
++ @unittest.skip('skip failing test')
+ def test_piped_password(self):
+ """Make sure that prompting for a password works"""
+ self.set_environ("PASSPHRASE", None)
diff --git a/app-cdr/nero/Manifest b/app-cdr/nero/Manifest
new file mode 100644
index 0000000..f656a06
--- /dev/null
+++ b/app-cdr/nero/Manifest
@@ -0,0 +1,6 @@
+AUX nero.desktop 224 SHA256 85a40b44a5650b6fa89e30880cdb60d9fe30c23f8c073af4f19474e7b501a082 SHA512 111742f505921791c2f64d6332b9995e0722c96545f48e451aa96624e6366cecba0df3d9f9696e8a4d4ecbc542409e8310a179b5952d17076ab466d2ead9569c WHIRLPOOL b68288b133f74c28941faa91e43742350365ca40290b1879e7de6ac09e59cdd54a60e1e94e5d36ee115b1bde3756cf806aa127da2c8a686acc19cdc583946a51
+DIST nerolinux-2.1.0.1-x86.rpm 10560132 SHA256 08412c51cc060fd21561db0176b2c25c2f747a2fb9ba2f749080049bd7018c54
+DIST nerolinux-2.1.0.4b-x86.rpm 10620804 SHA256 8a4685048d521e9ac3e448f4558778ef88a98ba6a95be2d72f62b3c0b629439f SHA512 9aebc1771ba517cffc8c3131c01df2bcbee109127241e777057f8207a9eeccad0cb8741dc6233f72a5b0319b9d985aed6a9c7074c23217586ce1be7db7ccc21c WHIRLPOOL 55b5afafba9b5fc0f04973d4449c165904dd203557747fe6e67a847b27d9699025cc6ab601a840c0d15d2333c9fb45a27fc3bd3ffa03a2d08a85072a8c3894b3
+EBUILD nero-2.1.0.1.ebuild 3493 SHA256 8a2420586f7fd2d33f59a67524f839552732d80d8af518b72eabb8ff8779f965 SHA512 2ee8b5f4c44dc2550e16353bd1204b472eb2f337014807ce26910e740d7cf2ba398b856f113dfb50c864d886b0f848c3710bb50913df362156576a90baac3763 WHIRLPOOL b780d28c279ce16967b1cecdd23ee041a248ee452ddde450e12fa9ee0aed672c1c2a76309f8c569faba1ad2bf36899fd822cd7319c4104c82cec9449144e8b98
+EBUILD nero-2.1.0.4b-r1.ebuild 2844 SHA256 251902ca060a3f4d718f545b1e9caf183f1adf56d3884e6a4df4469e60904c83 SHA512 91b64b8969de616ffdda39b310c1ceed3fce9a3070a14effa2f57f055dcc8f7d3ebcb2b1140fafd3e89895d5f5b9b0720bf32058a68f5f8eae0eb9d4335f24e9 WHIRLPOOL f56f6ef39938c75697e5fa1fc9948e5eadb12e3b756a375dc60d5acfa1cca22ef978bed39b8f1aee6f7f9077ad8348e6e3667e916984c0c731c5dd088f1c9726
+EBUILD nero-2.1.0.4b.ebuild 2863 SHA256 e8cc6fb577d11c1a46c543ee2855fcdebbb9d3aa3e6355a6e05e3880a4fa52f4 SHA512 2bb69a0c6569e73e760f220abac9a5f57c4806bda85ba2f204b0f3f8dbbea5c1565cd4879ddac5ec2412d4afc027e7ef59e5e4e29247221ddc460e690cf18f36 WHIRLPOOL f9a9b7acde92e6d65578662a236437fbb0591d470252d64efddaffc07ae91a2d4ffd6c96821c8e3f9b4144294ebc0dfc1eed6ae96a4a49fe1da5e90bd3d698d9
diff --git a/app-cdr/nero/files/digest-nero-2.1.0.1 b/app-cdr/nero/files/digest-nero-2.1.0.1
new file mode 100644
index 0000000..2818f57
--- /dev/null
+++ b/app-cdr/nero/files/digest-nero-2.1.0.1
@@ -0,0 +1,3 @@
+MD5 2de45710b343c3e0a44556d840ea086a nerolinux-2.1.0.1-x86.rpm 10560132
+RMD160 d4072b63c37a6ff4c91ede9db323290c81806211 nerolinux-2.1.0.1-x86.rpm 10560132
+SHA256 08412c51cc060fd21561db0176b2c25c2f747a2fb9ba2f749080049bd7018c54 nerolinux-2.1.0.1-x86.rpm 10560132
diff --git a/app-cdr/nero/files/digest-nero-2.1.0.4b b/app-cdr/nero/files/digest-nero-2.1.0.4b
new file mode 100644
index 0000000..af1c56b
--- /dev/null
+++ b/app-cdr/nero/files/digest-nero-2.1.0.4b
@@ -0,0 +1,3 @@
+MD5 44d6cbe6f305e858aadbddbf7a49e906 nerolinux-2.1.0.4b-x86.rpm 10620804
+RMD160 c7a19d671e920e18d00f8f7b20c35af5cff37db1 nerolinux-2.1.0.4b-x86.rpm 10620804
+SHA256 8a4685048d521e9ac3e448f4558778ef88a98ba6a95be2d72f62b3c0b629439f nerolinux-2.1.0.4b-x86.rpm 10620804
diff --git a/app-cdr/nero/files/nero.desktop b/app-cdr/nero/files/nero.desktop
new file mode 100644
index 0000000..1af5bee
--- /dev/null
+++ b/app-cdr/nero/files/nero.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=NeroLINUX
+Comment=Linux OS Solution for CD/DVD Burning
+Exec=nero
+Icon=/usr/share/nero/pixmaps/nero.png
+Type=Application
+Terminal=false
+Encoding=UTF-8
+Categories=Application;AudioVideo;DiscBurning;System
diff --git a/app-cdr/nero/nero-2.1.0.1.ebuild b/app-cdr/nero/nero-2.1.0.1.ebuild
new file mode 100644
index 0000000..c97e931
--- /dev/null
+++ b/app-cdr/nero/nero-2.1.0.1.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-cdr/nero/nero-2.1.0.0.ebuild,v 1.1 2006/06/19 23:34:34 wschlich Exp $
+
+inherit eutils rpm multilib
+
+DESCRIPTION="Nero Burning ROM for Linux"
+HOMEPAGE="http://nerolinux.nero.com/"
+NERO_RPM="nerolinux-${PV}-x86.rpm"
+SRC_URI="http://httpdl1.de.nero.com/${NERO_RPM}
+ http://httpdl2.de.nero.com/${NERO_RPM}
+ http://httpdl3.de.nero.com/${NERO_RPM}
+ http://httpdl4.de.nero.com/${NERO_RPM}
+ http://httpdl5.de.nero.com/${NERO_RPM}
+ http://httpdl6.de.nero.com/${NERO_RPM}
+ ftp://ftp1.de.nero.com/${NERO_RPM}
+ ftp://ftp2.de.nero.com/${NERO_RPM}
+ ftp://ftp2.de.nero.com/${NERO_RPM}
+ ftp://ftp3.de.nero.com/${NERO_RPM}
+ ftp://ftp4.de.nero.com/${NERO_RPM}
+ ftp://ftp5.de.nero.com/${NERO_RPM}
+ ftp://ftp6.de.nero.com/${NERO_RPM}
+ http://httpdl1.us.nero.com/${NERO_RPM}
+ http://httpdl2.us.nero.com/${NERO_RPM}
+ http://httpdl3.us.nero.com/${NERO_RPM}
+ http://httpdl4.us.nero.com/${NERO_RPM}
+ http://httpdl5.us.nero.com/${NERO_RPM}
+ http://httpdl6.us.nero.com/${NERO_RPM}
+ ftp://ftp1.us.nero.com/${NERO_RPM}
+ ftp://ftp2.us.nero.com/${NERO_RPM}
+ ftp://ftp3.us.nero.com/${NERO_RPM}
+ ftp://ftp4.us.nero.com/${NERO_RPM}
+ ftp://ftp5.us.nero.com/${NERO_RPM}
+ ftp://ftp6.us.nero.com/${NERO_RPM}"
+LICENSE="Nero"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="mp3 ogg shorten sox vorbis"
+DEPEND=""
+RDEPEND="virtual/libc
+ || ( x11-libs/libX11 virtual/x11 )
+ =x11-libs/gtk+-1.2*
+ amd64? ( >=app-emulation/emul-linux-x86-gtklibs-2.0 )
+ mp3? ( media-sound/mpg123 media-sound/lame media-sound/mp3info )
+ ogg? ( media-sound/oggtst )
+ shorten? ( media-sound/shorten media-sound/shntool )
+ sox? ( media-sound/sox )
+ vorbis? ( media-sound/vorbis-tools )"
+
+RESTRICT="nostrip nomirror"
+
+src_unpack() {
+ rpm_src_unpack
+}
+
+src_compile() { :; }
+
+src_install() {
+ cd ${WORKDIR}
+
+ dodir /usr/share/nero
+ insinto /usr/share/nero
+ doins ./usr/share/nero/{*.so,DosBootImage.ima,Nero.txt,CDROM.CFG}
+
+ dodir /usr/share/nero/desktop
+ insinto /usr/share/nero/desktop
+ doins ./usr/share/nero/desktop/NeroLINUX.template
+
+ dodir /usr/share/nero/docs
+ insinto /usr/share/nero/docs
+ doins ./usr/share/nero/docs/{Manual.pdf,EULA,NEWS}
+
+ dodir /usr/share/nero/pixmaps
+ insinto /usr/share/nero/pixmaps
+ doins ./usr/share/nero/pixmaps/nero.png
+
+ dodir /usr/share/nero/sounds
+ insinto /usr/share/nero/sounds
+ doins ./usr/share/nero/sounds/*.wav
+
+ libdir=$(get_libdir)
+ dodir /usr/${libdir}
+ insinto /usr/${libdir}
+ doins ./usr/lib/*.so
+
+ dobin ./usr/bin/nero
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/nero.desktop
+}
+
+pkg_setup() {
+ # This is a binary x86 package => ABI=x86
+ has_multilib_profile && ABI="x86"
+}
+
+# TODO
+# pkg_preinst() {
+# check_license
+# }
+
+pkg_postinst() {
+ einfo
+ einfo "Please make sure that no hdX=ide-scsi option is passed"
+ einfo "to your kernel command line."
+ einfo
+ einfo "For setting up your burning device correctly you also"
+ einfo "have to give your regular user(s) read/write access to"
+ einfo "the disc writer devices, for example by adding the user(s)"
+ einfo "to the system group 'cdrom', e.g. like this:"
+ einfo
+ einfo "\tgpasswd -a <username> cdrom"
+ einfo
+ einfo "NOTE: This is demo software, it will run for a trial"
+ einfo "period only until unlocked with a serial number."
+ einfo "See ${HOMEPAGE} for details."
+ einfo
+ einfo "Technical support for NeroLINUX is provided by CDFreaks"
+ einfo "Linux forum at http://club.cdfreaks.com/forumdisplay.php?f=104"
+ einfo
+}
diff --git a/app-cdr/nero/nero-2.1.0.4b-r1.ebuild b/app-cdr/nero/nero-2.1.0.4b-r1.ebuild
new file mode 100644
index 0000000..adb87f6
--- /dev/null
+++ b/app-cdr/nero/nero-2.1.0.4b-r1.ebuild
@@ -0,0 +1,107 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-cdr/nero/nero-2.1.0.3.ebuild,v 1.3 2007/02/12 00:58:34 wschlich Exp $
+EAPI=5
+
+inherit eutils rpm multilib
+
+S=${WORKDIR}
+
+DESCRIPTION="Nero Burning ROM for Linux"
+HOMEPAGE="http://nerolinux.nero.com/"
+NERO_RPM="nerolinux-${PV}-x86.rpm"
+SRC_URI="ftp://ftp.nero.com/${NERO_RPM}
+ http://httpdl3.de.nero.com/${NERO_RPM}
+ http://httpdl4.de.nero.com/${NERO_RPM}
+ http://httpdl5.de.nero.com/${NERO_RPM}
+ http://httpdl6.de.nero.com/${NERO_RPM}
+ ftp://ftp3.de.nero.com/${NERO_RPM}
+ ftp://ftp4.de.nero.com/${NERO_RPM}
+ ftp://ftp5.de.nero.com/${NERO_RPM}
+ ftp://ftp6.de.nero.com/${NERO_RPM}"
+LICENSE="Nero"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="mp3 ogg shorten sox vorbis"
+DEPEND=""
+RDEPEND="sys-libs/glibc
+ || ( x11-libs/libX11 virtual/x11 )
+ =x11-libs/gtk+-1.2*[abi_x86_32(-)]
+ mp3? ( media-sound/mpg123 media-sound/lame media-sound/mp3info )
+ ogg? ( media-sound/oggtst )
+ shorten? ( media-sound/shorten media-sound/shntool )
+ sox? ( media-sound/sox )
+ vorbis? ( media-sound/vorbis-tools )"
+
+RESTRICT="nostrip nomirror"
+
+src_unpack() {
+ rpm_src_unpack
+}
+
+src_compile() { :; }
+
+src_install() {
+ cd ${WORKDIR}
+
+ dodir /usr/share/nero
+ insinto /usr/share/nero
+ doins ./usr/share/nero/{*.so,DosBootImage.ima,Nero.txt,CDROM.CFG}
+
+ dodir /usr/share/nero/desktop
+ insinto /usr/share/nero/desktop
+ doins ./usr/share/nero/desktop/NeroLINUX.template
+
+ dodir /usr/share/nero/docs
+ insinto /usr/share/nero/docs
+ doins ./usr/share/nero/docs/{Manual.pdf,EULA,NEWS}
+
+ dodir /usr/share/nero/pixmaps
+ insinto /usr/share/nero/pixmaps
+ doins ./usr/share/nero/pixmaps/nero.png
+
+ dodir /usr/share/nero/sounds
+ insinto /usr/share/nero/sounds
+ doins ./usr/share/nero/sounds/*.wav
+
+ libdir=$(get_libdir)
+ dodir /usr/${libdir}
+ insinto /usr/${libdir}
+ doins ./usr/lib/*.so
+
+ dobin ./usr/bin/nero
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/nero.desktop
+}
+
+pkg_setup() {
+ # This is a binary x86 package => ABI=x86
+ has_multilib_profile && ABI="x86"
+}
+
+# TODO
+# pkg_preinst() {
+# check_license
+# }
+
+pkg_postinst() {
+ elog
+ elog "Please make sure that no hdX=ide-scsi option is passed"
+ elog "to your kernel command line."
+ elog
+ elog "For setting up your burning device correctly you also"
+ elog "have to give your regular user(s) read/write access to"
+ elog "the disc writer devices, for example by adding the user(s)"
+ elog "to the system group 'cdrom', e.g. like this:"
+ elog
+ elog "\tgpasswd -a <username> cdrom"
+ elog
+ elog "NOTE: This is demo software, it will run for a trial"
+ elog "period only until unlocked with a serial number."
+ elog "See ${HOMEPAGE} for details."
+ elog
+ elog "Technical support for NeroLINUX is provided by CDFreaks"
+ elog "Linux forum at http://club.cdfreaks.com/forumdisplay.php?f=104"
+ elog
+}
diff --git a/app-cdr/nero/nero-2.1.0.4b.ebuild b/app-cdr/nero/nero-2.1.0.4b.ebuild
new file mode 100644
index 0000000..a7d1f9b
--- /dev/null
+++ b/app-cdr/nero/nero-2.1.0.4b.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-cdr/nero/nero-2.1.0.3.ebuild,v 1.3 2007/02/12 00:58:34 wschlich Exp $
+
+inherit eutils rpm multilib
+
+DESCRIPTION="Nero Burning ROM for Linux"
+HOMEPAGE="http://nerolinux.nero.com/"
+NERO_RPM="nerolinux-${PV}-x86.rpm"
+SRC_URI="ftp://ftp.nero.com/${NERO_RPM}
+ http://httpdl3.de.nero.com/${NERO_RPM}
+ http://httpdl4.de.nero.com/${NERO_RPM}
+ http://httpdl5.de.nero.com/${NERO_RPM}
+ http://httpdl6.de.nero.com/${NERO_RPM}
+ ftp://ftp3.de.nero.com/${NERO_RPM}
+ ftp://ftp4.de.nero.com/${NERO_RPM}
+ ftp://ftp5.de.nero.com/${NERO_RPM}
+ ftp://ftp6.de.nero.com/${NERO_RPM}"
+LICENSE="Nero"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="mp3 ogg shorten sox vorbis"
+DEPEND=""
+RDEPEND="sys-libs/glibc
+ || ( x11-libs/libX11 virtual/x11 )
+ =x11-libs/gtk+-1.2*
+ amd64? ( >=app-emulation/emul-linux-x86-gtklibs-2.0 )
+ mp3? ( media-sound/mpg123 media-sound/lame media-sound/mp3info )
+ ogg? ( media-sound/oggtst )
+ shorten? ( media-sound/shorten media-sound/shntool )
+ sox? ( media-sound/sox )
+ vorbis? ( media-sound/vorbis-tools )"
+
+RESTRICT="nostrip nomirror"
+
+src_unpack() {
+ rpm_src_unpack
+}
+
+src_compile() { :; }
+
+src_install() {
+ cd ${WORKDIR}
+
+ dodir /usr/share/nero
+ insinto /usr/share/nero
+ doins ./usr/share/nero/{*.so,DosBootImage.ima,Nero.txt,CDROM.CFG}
+
+ dodir /usr/share/nero/desktop
+ insinto /usr/share/nero/desktop
+ doins ./usr/share/nero/desktop/NeroLINUX.template
+
+ dodir /usr/share/nero/docs
+ insinto /usr/share/nero/docs
+ doins ./usr/share/nero/docs/{Manual.pdf,EULA,NEWS}
+
+ dodir /usr/share/nero/pixmaps
+ insinto /usr/share/nero/pixmaps
+ doins ./usr/share/nero/pixmaps/nero.png
+
+ dodir /usr/share/nero/sounds
+ insinto /usr/share/nero/sounds
+ doins ./usr/share/nero/sounds/*.wav
+
+ libdir=$(get_libdir)
+ dodir /usr/${libdir}
+ insinto /usr/${libdir}
+ doins ./usr/lib/*.so
+
+ dobin ./usr/bin/nero
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/nero.desktop
+}
+
+pkg_setup() {
+ # This is a binary x86 package => ABI=x86
+ has_multilib_profile && ABI="x86"
+}
+
+# TODO
+# pkg_preinst() {
+# check_license
+# }
+
+pkg_postinst() {
+ elog
+ elog "Please make sure that no hdX=ide-scsi option is passed"
+ elog "to your kernel command line."
+ elog
+ elog "For setting up your burning device correctly you also"
+ elog "have to give your regular user(s) read/write access to"
+ elog "the disc writer devices, for example by adding the user(s)"
+ elog "to the system group 'cdrom', e.g. like this:"
+ elog
+ elog "\tgpasswd -a <username> cdrom"
+ elog
+ elog "NOTE: This is demo software, it will run for a trial"
+ elog "period only until unlocked with a serial number."
+ elog "See ${HOMEPAGE} for details."
+ elog
+ elog "Technical support for NeroLINUX is provided by CDFreaks"
+ elog "Linux forum at http://club.cdfreaks.com/forumdisplay.php?f=104"
+ elog
+}
diff --git a/app-dicts/libtranslate/Manifest b/app-dicts/libtranslate/Manifest
new file mode 100644
index 0000000..4aea792
--- /dev/null
+++ b/app-dicts/libtranslate/Manifest
@@ -0,0 +1,13 @@
+AUX libtranslate-0.99-charsetparse.diff 1361 SHA256 5b34c339b6c96a4b644d5ebf74ad648413b93f736ed99443b0ec3268e2b4ec27 SHA512 6bf018cb971a4bc990439fd81fb42d737e41239836cac20b1ff55b745a223e173973d630fe76021284cdecd354d11cf1e1c40c09d4af61495ecdca0f32d9df5e WHIRLPOOL 558d53a1a6b5edf3a731efd7511a8333950a329c86c32cc070125ed2048b20216d0adcf88215d984c9463e40ced25b95cee2b32cf9b5186b158c2dfa814027c7
+AUX libtranslate-0.99-condfix.diff 900 SHA256 9470ae97322c5f44b0062c8be3a7a3bb709d98a8a0e01d6d6955851a94506137 SHA512 89b846623ee72ab3d4d8ee91d777fb52a2f6a0baf9d263e5c8cc9bf931a8db3148b853b9a0ee668f72add2a3a5e77a5433ffb21934b1b256d5b855af6a76bf27 WHIRLPOOL 97529a4e9f63b6476bd5ac5d7fcff23fc4d18246c592dfa108a2707ffab6df7ef908f7d6f7854df646f0eb94b271fa5a5dfb714067a5761ac44d6fb23c23d1a5
+AUX libtranslate-ds-empty.patch 630 SHA256 37f2809ec0ac0212ef0bae48f3fad2a59a1a5c9ae2f9f63131abe49d583b21c7 SHA512 b8f4572050e0174a46adc9811ba3f8b0f613ac847e1dd9b35d8167697e2b83c4edd631c5c91ba8639237a028fd2dee49036fc6f6d2ad24ff7b623badbbb2c539 WHIRLPOOL 71a4a2330cd9d985e3f868b3fc7d6c7c2d4777dd43f5aa1cd586fabead88f2424ea7998a961649b9d7cf3ea6b245a30ed94a2a9ea7934dfa62d2295078ace0de
+AUX libtranslate-ds-fixcharset.patch 3617 SHA256 4869c65e9760c7485f85955744563f19f9ae2cd4d79e9fd069563b9416694820 SHA512 cb39242e79669c3e4292ad5f333730779c20997deafa9f6fb209d281be12806a2e7848a87b8e5f8438e33dd210227c0d4ab28d8b4116987c1ab0c57d708eb02f WHIRLPOOL 559d31322741b11e8140b8f6bf2159c951913e74ff4599465d52cc2cdf55f9ee5d5bac81eb50ef9e7ee4aed6f194d4934ae4fd2a8279ac35049be29c47bb689c
+AUX libtranslate-ds-memory.patch 555 SHA256 5ccd7841a3fbbe51703611d453ce9791075b452459b601f6fff7b3e123461895 SHA512 b3f9acf38ba8a2ebbc3c9179981049db748b697cb5b8d3c2eb745b746642eedfe0d8fc32f90a35f93b143da310efc406c289613387365c63c5e92185e2fdd8d0 WHIRLPOOL ae2f5eaf3e1663a16484f3e8341f9b3cea304365dba349ae95768215c3a4b89a5b0d71b5e930e4470d9d79e941c9ec2f20c0fc20e90804f945d37babbe9c6cb4
+AUX libtranslate-ds-promt.patch 994 SHA256 ebbefe92cecdae7164429121979dcf18aec33cbb3d749f2e5b6bbc1236533ea7 SHA512 fbba665748580c5e26488c7e28fd48f488c2e1e07243186ff801202ab89701235dcdec9a24a24ad53d19b82293e4b925ff0fa07e0ef138ef5bf5b4f8ff73d2cc WHIRLPOOL c44555e82d77056769ca091d4cb7347622232cbdbf8d75f9450d90c5dc0e5a6c734d5c54b2a143bc1cfe14c7a3c00bd485726e9d89bb99ad3b48eed1346b95cd
+AUX libtranslate-ds-timed.patch.bz2 2863 SHA256 3ff5e50c86d70f7bf47e47793b7231828792e63e4a79a70fae89de84129be9bf SHA512 040cf50f8c31161d8a4395b4a9cf8c4723a84f16b63ede6b50df92a265d1e3845dea42522461373343c6f18e4cf0f38ce4cc9bc90873e6c65ed4846dd7b8bf41 WHIRLPOOL 722f46cb153cc8072e57c319274f4d4e3e0f57e9155244160b774ad7aaebcb53cd071a234556c53d42609d425bbc512d5edbfef479be5c71587d52eddaf252a6
+AUX libtranslate-ds-timed24.patch 12354 SHA256 25a724496f2a76b5cce1696539aed1ff7ba026c816004b27fcc42c69585bd864 SHA512 b75a001bd7ef7da6f55fc79865741411ca5423d170ff7412bc40de1967e7692c6bdb9e7b69b6c3a82066b5250260ba379b604c349a0635ba88a2b107c42b0e6a WHIRLPOOL 0ec93e96b8b9cd9a99bf6347fd280734b8e9488215f3236af4712ad75b7b80bb4c30020e0b6c49aa0e4462ed26c7a6445a1f1d6a74524bab103f3dcaf5f69342
+AUX libtranslate-soup24inc.patch 18404 SHA256 7a9f4680bf3163bb924c018a8eb98327714f37f9615f76cfaa885d2a28d829a0 SHA512 2f92b7a4263773976763c505fd52669e84669a4785eaf1d43d33a205a56c202bea7425629b6d4c9b9401332268548f721ecefd530d1c316dc97eaca7eb992d8f WHIRLPOOL 2ef354ac5453fdcbfc505e59debc1af546ea87ce78deadf1308b44ab9f6ea15211339706148ec9e9a1de66ea7ee0181a27c4329ef09f3885c66f850f1f8deeae
+AUX services.xml 10535 SHA256 1663e83f736fa7e710e82f218e7c3203fd102791c7318e49088724b42bcb9f8f SHA512 f77dab2fffc03a4a024859ab960d88d474648a1c20df7bada58f01c7b594ec987b669fd8b3575a8b2118c0a6ddc55fc69027a2ab743eb1ba99d0a52f4b3b9205 WHIRLPOOL c0d833075f3a8c455ad8c6231474fa482bd01222874256a8fde7fe9cee6738a9fa4856f1c2645a61b4b9cce99ec4aa753fe1e0d3b215b54d139c5d1ef36b82f1
+DIST libtranslate-0.99.tar.gz 532516 SHA256 4b2becb139e51663022d9531c430ebcc81d8b26edc73f6ddc05707ff9950eb34 SHA512 e8951224a09aedd83bf82d38b6808d7395f8e377982544f26e26ded9fe30fa11b1ac4df3442694f15d5f1a61dcb3a4da8ba7fd6871e17920a01c9758b3ecfc9d WHIRLPOOL b48fe9bf4aee18334b8e2518a63bb5f9bc9412223872692987828c3d46639d7a35ddb36655ec787a40ae918453fbe66521cfa72c7d77e88ed2749c16a5c8c0fb
+EBUILD libtranslate-0.99-r4.ebuild 1134 SHA256 002fab38d01ea2722f398f473cb09ba481eb19e26a462ebd1bff9ba5bc49d3ee SHA512 430f4de80bf1b37d4eeef3e637b271e53a99033003f8fa408da7d4d262af5485b9ccc01df0a8be545e111986f0b121a812c68c04336c5cf1c28f50a96d4d624b WHIRLPOOL c5af0a095552a1112dc1ff471f15dc8cadc178985934adfda35d4d6ee9426e68fe6ee2cbbce9e0662dedd6cdb71592a89504f9de6dea5cbc8c99a00331bdee7a
+EBUILD libtranslate-0.99-r6.ebuild 1462 SHA256 2a5eb04a46e1c57c661ef26229dc77113581ddd0482249609db3af9abfef46c1 SHA512 e47a9ad562103c8e9f9570473b0928a5197d70c75cb7fe8ae11cbde686b58aa6da1e711f1c8621814e48f46e41dc0be45defb2253c3510420a2d2922cdd27e61 WHIRLPOOL 0a9d9054fdc191f507190f96c2ced75a975a0eee46bf79875fdb88b8fd770e2bb5b4ab3784f330f2cdeb8b84b39a39c6b22e30339ef7feb6fc7857ae75d34a1a
diff --git a/app-dicts/libtranslate/files/libtranslate-0.99-charsetparse.diff b/app-dicts/libtranslate/files/libtranslate-0.99-charsetparse.diff
new file mode 100644
index 0000000..1626f25
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-0.99-charsetparse.diff
@@ -0,0 +1,47 @@
+--- src/modules/translate-generic-service.c.orig Mon Apr 11 23:08:47 2005
++++ src/modules/translate-generic-service.c Mon Apr 11 23:15:54 2005
+@@ -484,7 +484,7 @@
+
+ if (SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
+ {
+- const char *charset = NULL;
++ char *charset = NULL;
+
+ if (flags & TRANSFER_CONVERT)
+ {
+@@ -493,14 +493,31 @@
+ content_type = translate_generic_service_get_header(message, &info, "Content-Type");
+ if (content_type)
+ {
+- charset = translate_ascii_strcasestr(content_type, "charset=");
+- if (charset)
+- charset += 8;
++ const char *tmp;
++
++ tmp = translate_ascii_strcasestr(content_type, "charset=");
++ if (tmp)
++ {
++ int len;
++
++ tmp += 8;
++ if (*tmp == '\'' || *tmp == '"')
++ tmp++;
++
++ len = strlen(tmp);
++ if (len > 0 && (tmp[len - 1] == '\'' || tmp[len - 1] == '"'))
++ len--;
++
++ charset = g_strndup(tmp, len);
++ }
+ }
+ }
+
+ if (charset)
+- response = g_convert(message->response.body, message->response.length, "UTF-8", charset, NULL, NULL, err);
++ {
++ response = g_convert(message->response.body, message->response.length, "UTF-8", charset, NULL, NULL, err);
++ g_free(charset);
++ }
+ else
+ {
+ if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(message->response.body, message->response.length, NULL))
diff --git a/app-dicts/libtranslate/files/libtranslate-0.99-condfix.diff b/app-dicts/libtranslate/files/libtranslate-0.99-condfix.diff
new file mode 100644
index 0000000..4011dcd
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-0.99-condfix.diff
@@ -0,0 +1,38 @@
+--- src/translate-session.c.orig Mon Apr 11 22:44:53 2005
++++ src/translate-session.c Mon Apr 11 22:51:48 2005
+@@ -703,7 +703,14 @@
+ GError *tmp_err = NULL;
+
+ g_mutex_lock(info->mutex);
+- ret = info->err != NULL;
++ if (info->err)
++ {
++ ret = TRUE;
++ if (info->progress_cond)
++ g_cond_signal(info->progress_cond);
++ }
++ else
++ ret = FALSE;
+ g_mutex_unlock(info->mutex);
+
+ if (ret)
+@@ -728,6 +735,9 @@
+ else
+ g_propagate_error(&info->err, tmp_err);
+
++ if (info->progress_cond)
++ g_cond_signal(info->progress_cond);
++
+ g_mutex_unlock(info->mutex);
+
+ return;
+@@ -759,6 +769,9 @@
+ info->err = g_error_new(TRANSLATE_SESSION_ERROR,
+ TRANSLATE_SESSION_ERROR_NO_SERVICE,
+ _("no service could translate chunk"));
++
++ if (info->progress_cond)
++ g_cond_signal(info->progress_cond);
+ }
+
+ g_mutex_unlock(info->mutex);
diff --git a/app-dicts/libtranslate/files/libtranslate-ds-empty.patch b/app-dicts/libtranslate/files/libtranslate-ds-empty.patch
new file mode 100644
index 0000000..eb2e0ce
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-ds-empty.patch
@@ -0,0 +1,17 @@
+diff -dPNur libtranslate-0.99/src/modules/translate-generic-service.c libtranslate-0.99-new/src/modules/translate-generic-service.c
+--- libtranslate-0.99/src/modules/translate-generic-service.c 2007-06-27 17:26:10.000000000 +0200
++++ libtranslate-0.99-new/src/modules/translate-generic-service.c 2007-06-27 17:23:55.000000000 +0200
+@@ -1042,6 +1042,13 @@
+
+ g_free(response);
+ }
++
++ if ((!answer)&&(!*err)) {
++ g_set_error(err,
++ TRANSLATE_GENERIC_SERVICE_ERROR,
++ TRANSLATE_GENERIC_SERVICE_ERROR_PARSE,
++ _("empty server response"));
++ }
+
+ return answer ? g_string_free(answer, FALSE) : NULL;
+ }
diff --git a/app-dicts/libtranslate/files/libtranslate-ds-fixcharset.patch b/app-dicts/libtranslate/files/libtranslate-ds-fixcharset.patch
new file mode 100644
index 0000000..0665d2f
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-ds-fixcharset.patch
@@ -0,0 +1,93 @@
+diff -dPNur libtranslate-0.99-new/src/modules/translate-generic-parser.c libtranslate-0.99-new-uk/src/modules/translate-generic-parser.c
+--- libtranslate-0.99-new/src/modules/translate-generic-parser.c 2005-01-17 17:46:24.000000000 +0100
++++ libtranslate-0.99-new-uk/src/modules/translate-generic-parser.c 2007-06-27 22:40:04.000000000 +0200
+@@ -726,6 +726,7 @@
+ {
+ const char *url;
+ const char *post;
++ const char *charset;
+ const char *content_type;
+
+ g_return_if_fail(info != NULL);
+@@ -740,6 +741,7 @@
+ "url", REQUIRED, &url,
+ "post", OPTIONAL, &post,
+ "content-type", OPTIONAL, &content_type,
++ "response-charset", OPTIONAL, &charset,
+ NULL);
+
+ if (! *err)
+@@ -748,6 +750,7 @@
+ (*location)->url = g_strdup(url);
+ (*location)->post = g_strdup(post);
+ (*location)->content_type = g_strdup(content_type ? content_type : "application/x-www-form-urlencoded");
++ (*location)->response_charset = g_strdup(charset);
+ }
+ }
+
+@@ -759,6 +762,7 @@
+ g_free(location->url);
+ g_free(location->post);
+ g_free(location->content_type);
++ g_free(location->response_charset);
+ g_slist_foreach(location->http_headers, (GFunc) translate_generic_http_header_free, NULL);
+ g_slist_free(location->http_headers);
+ g_free(location);
+diff -dPNur libtranslate-0.99-new/src/modules/translate-generic-parser.h libtranslate-0.99-new-uk/src/modules/translate-generic-parser.h
+--- libtranslate-0.99-new/src/modules/translate-generic-parser.h 2005-01-17 17:46:30.000000000 +0100
++++ libtranslate-0.99-new-uk/src/modules/translate-generic-parser.h 2007-06-27 22:34:13.000000000 +0200
+@@ -51,6 +51,7 @@
+ char *url;
+ char *post;
+ char *content_type;
++ char *response_charset;
+ GSList *http_headers;
+ } TranslateGenericLocation;
+
+diff -dPNur libtranslate-0.99-new/src/modules/translate-generic-service.c libtranslate-0.99-new-uk/src/modules/translate-generic-service.c
+--- libtranslate-0.99-new/src/modules/translate-generic-service.c 2007-06-27 17:23:55.000000000 +0200
++++ libtranslate-0.99-new-uk/src/modules/translate-generic-service.c 2007-06-27 22:40:29.000000000 +0200
+@@ -129,6 +129,7 @@
+ static char *translate_generic_service_get (const char *uri,
+ const char *post,
+ const char *post_content_type,
++ const char *response_charset,
+ const GSList *headers,
+ TransferFlags flags,
+ GTimeVal *deadline,
+@@ -407,6 +408,7 @@
+ translate_generic_service_get (const char *uri,
+ const char *post,
+ const char *post_content_type,
++ const char *response_charset,
+ const GSList *headers,
+ TransferFlags flags,
+ GTimeVal *deadline,
+@@ -550,9 +552,9 @@
+ }
+ }
+
+- if (charset)
++ if ((charset)||(response_charset))
+ {
+- response = g_convert(message->response.body, message->response.length, "UTF-8", charset, NULL, NULL, err);
++ response = g_convert(message->response.body, message->response.length, "UTF-8", response_charset?response_charset:charset, NULL, NULL, err);
+ g_free(charset);
+ }
+ else
+@@ -941,6 +943,7 @@
+ response = translate_generic_service_get(url,
+ post,
+ group->text_location->content_type,
++ group->text_location->response_charset,
+ headers,
+ TRANSFER_FOLLOW_REFRESH | TRANSFER_CONVERT,
+ deadline,
+@@ -1339,6 +1342,7 @@
+ response = translate_generic_service_get(translation_url,
+ post,
+ group->web_page_location->content_type,
++ group->web_page_location->response_charset,
+ headers,
+ 0,
+ NULL,
diff --git a/app-dicts/libtranslate/files/libtranslate-ds-memory.patch b/app-dicts/libtranslate/files/libtranslate-ds-memory.patch
new file mode 100644
index 0000000..e05c7b4
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-ds-memory.patch
@@ -0,0 +1,12 @@
+diff -dPNur libtranslate-0.99/src/translate-util.c libtranslate-0.99-new/src/translate-util.c
+--- libtranslate-0.99/src/translate-util.c 2005-01-17 16:45:45.000000000 +0000
++++ libtranslate-0.99-new/src/translate-util.c 2005-12-29 18:35:04.000000000 +0000
+@@ -136,7 +136,7 @@
+ g_return_val_if_fail(big != NULL, NULL);
+ g_return_val_if_fail(little != NULL, NULL);
+
+- lower_big = g_ascii_strdown(big, big_len);
++ lower_big = g_ascii_strdown(big, (int)big_len);
+ lower_little = g_ascii_strdown(little, -1);
+
+ s = strstr(lower_big, lower_little);
diff --git a/app-dicts/libtranslate/files/libtranslate-ds-promt.patch b/app-dicts/libtranslate/files/libtranslate-ds-promt.patch
new file mode 100644
index 0000000..6b30145
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-ds-promt.patch
@@ -0,0 +1,27 @@
+diff -dPNur libtranslate-0.99/src/modules/translate-generic-service.c libtranslate-0.99-new/src/modules/translate-generic-service.c
+--- libtranslate-0.99/src/modules/translate-generic-service.c 2007-06-27 17:26:10.000000000 +0200
++++ libtranslate-0.99-new/src/modules/translate-generic-service.c 2007-06-27 17:23:55.000000000 +0200
+@@ -1238,7 +1245,22 @@
+ {
+ if (modifier_value)
+ g_warning(_("%s: value specified for \"escape\" modifier"), warning_prefix);
+- modified = soup_uri_encode(value, NULL);
++ modified = soup_uri_encode(value, "&");
++ }
++ else if (! strcmp(modifier_name, "entities"))
++ {
++ int i;
++ char *ptr;
++
++ modified = g_malloc(strlen(value)*6 + 1);
++ for (i=0,ptr=modified;value[i];i++) {
++ if ((unsigned char)(value[i])<160) *(ptr++)=value[i];
++ else {
++ sprintf(ptr, "&#%u;", (unsigned char)(value[i]));
++ ptr+=6;
++ }
++ }
++ *ptr = 0;
+ }
+ else if (! strcmp(modifier_name, "charset"))
+ {
diff --git a/app-dicts/libtranslate/files/libtranslate-ds-timed.patch.bz2 b/app-dicts/libtranslate/files/libtranslate-ds-timed.patch.bz2
new file mode 100644
index 0000000..c5b3a86
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-ds-timed.patch.bz2
Binary files differ
diff --git a/app-dicts/libtranslate/files/libtranslate-ds-timed24.patch b/app-dicts/libtranslate/files/libtranslate-ds-timed24.patch
new file mode 100644
index 0000000..daf3811
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-ds-timed24.patch
@@ -0,0 +1,360 @@
+diff -dPNur libtranslate-0.99/src/modules/translate-generic-service.c libtranslate-0.99-new/src/modules/translate-generic-service.c
+--- libtranslate-0.99/src/modules/translate-generic-service.c 2005-01-17 17:46:38.000000000 +0100
++++ libtranslate-0.99-new/src/modules/translate-generic-service.c 2005-07-27 22:13:33.000000000 +0200
+@@ -131,6 +131,7 @@
+ const char *post_content_type,
+ const GSList *headers,
+ TransferFlags flags,
++ GTimeVal *deadline,
+ TranslateProgressFunc progress_func,
+ gpointer user_data,
+ GError **err);
+@@ -181,6 +182,15 @@
+ gpointer user_data,
+ GError **err);
+
++static char *translate_generic_service_timed_translate_text (TranslateService *service,
++ const char *text,
++ const char *from,
++ const char *to,
++ GTimeVal *deadline,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err);
++
+ char *translate_generic_service_expand (const char *warning_prefix,
+ const char *str,
+ ...);
+@@ -248,6 +258,7 @@
+
+ service_class->get_pairs = translate_generic_service_get_pairs;
+ service_class->translate_text = translate_generic_service_translate_text;
++ service_class->timed_translate_text = translate_generic_service_timed_translate_text;
+ service_class->translate_web_page = translate_generic_service_translate_web_page;
+
+ g_object_class_install_property(object_class,
+@@ -387,12 +398,22 @@
+ return TRUE; /* continue */
+ }
+
++#ifdef HAVE_LIBSOUP22
++static void send_message_cb(SoupMessage *req, gpointer user_data) {
++#else
++static void send_message_cb(SoupSession *session, SoupMessage *req, gpointer user_data) {
++#endif
++ g_object_ref(req);
++ *(gboolean*)user_data = TRUE;
++}
++
+ static char *
+ translate_generic_service_get (const char *uri,
+ const char *post,
+ const char *post_content_type,
+ const GSList *headers,
+ TransferFlags flags,
++ GTimeVal *deadline,
+ TranslateProgressFunc progress_func,
+ gpointer user_data,
+ GError **err)
+@@ -400,6 +417,8 @@
+ TransferInfo info;
+ SoupMessage *message;
+ const GSList *l;
++ GTimeVal tv;
++ gboolean completed = 0, canceled = 0;
+ char *response = NULL;
+
+ g_return_val_if_fail(uri != NULL, FALSE);
+@@ -479,9 +498,31 @@
+ if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS)
+ translate_generic_service_log_connect(message);
+
++ if (deadline) {
++ soup_session_queue_message(info.session, message, send_message_cb, &completed);
++
++ do {
++ g_main_iteration (FALSE);
++ if (completed) break;
++
++ g_get_current_time(&tv);
++ } while ((tv.tv_sec < deadline->tv_sec)||((tv.tv_sec == deadline->tv_sec)&&(tv.tv_usec < deadline->tv_usec)));
++
++ if (!completed) {
++#ifdef HAVE_LIBSOUP22
++ soup_session_cancel_message(info.session, message);
++#else
++ soup_session_cancel_message(info.session, message, SOUP_STATUS_CANCELLED);
++#endif
++ canceled = 1;
++ }
++ } else
+ soup_session_send_message(info.session, message);
+ g_object_unref(info.session);
+
++ if (canceled)
++ g_set_error(err, TRANSLATE_ERROR, TRANSLATE_ERROR_CANCELLED, _("Timeout"));
++ else
+ if (SOUP_STATUS_IS_SUCCESSFUL(message->status_code))
+ {
+ const char *charset = NULL;
+@@ -833,10 +870,11 @@
+ }
+
+ static char *
+-translate_generic_service_translate_text (TranslateService *service,
++translate_generic_service_timed_translate_text (TranslateService *service,
+ const char *text,
+ const char *from,
+ const char *to,
++ GTimeVal *deadline,
+ TranslateProgressFunc progress_func,
+ gpointer user_data,
+ GError **err)
+@@ -882,16 +920,16 @@
+
+ headers = g_slist_copy(group->http_headers);
+ headers = g_slist_concat(headers, g_slist_copy(group->text_location->http_headers));
+-
++
+ response = translate_generic_service_get(url,
+ post,
+ group->text_location->content_type,
+ headers,
+ TRANSFER_FOLLOW_REFRESH | TRANSFER_CONVERT,
++ deadline,
+ progress_func,
+ user_data,
+ err);
+-
+ g_free(url);
+ g_free(post);
+ g_slist_free(headers);
+@@ -991,6 +1029,18 @@
+ return answer ? g_string_free(answer, FALSE) : NULL;
+ }
+
++static char *
++translate_generic_service_translate_text (TranslateService *service,
++ const char *text,
++ const char *from,
++ const char *to,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err)
++{
++ return translate_generic_service_timed_translate_text(service, text, from, to, NULL, progress_func, user_data, err);
++}
++
+ char *
+ translate_generic_service_expand (const char *warning_prefix,
+ const char *str,
+@@ -1252,6 +1302,7 @@
+ group->web_page_location->content_type,
+ headers,
+ 0,
++ NULL,
+ progress_func,
+ user_data,
+ err);
+@@ -1311,7 +1362,7 @@
+ g_free(proxy_text_uri);
+ }
+
+- session = soup_session_sync_new_with_options(SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
++ session = soup_session_async_new_with_options(SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
+
+ if (proxy_uri)
+ soup_uri_free(proxy_uri);
+diff -dPNur libtranslate-0.99/src/translate-service.c libtranslate-0.99-new/src/translate-service.c
+--- libtranslate-0.99/src/translate-service.c 2005-01-17 17:45:23.000000000 +0100
++++ libtranslate-0.99-new/src/translate-service.c 2005-07-27 17:18:07.000000000 +0200
+@@ -372,6 +372,28 @@
+ }
+
+ char *
++translate_service_timed_translate_text (TranslateService *service,
++ const char *text,
++ const char *from,
++ const char *to,
++ GTimeVal *deadline,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err)
++{
++ g_return_val_if_fail(TRANSLATE_IS_SERVICE(service), NULL);
++ g_return_val_if_fail(TRANSLATE_SERVICE_GET_CLASS(service)->translate_text != NULL, NULL);
++ g_return_val_if_fail(text != NULL, NULL);
++ g_return_val_if_fail(from != NULL, NULL);
++ g_return_val_if_fail(to != NULL, NULL);
++
++ if (TRANSLATE_SERVICE_GET_CLASS(service)->timed_translate_text)
++ return TRANSLATE_SERVICE_GET_CLASS(service)->timed_translate_text(service, text, from, to, deadline, progress_func, user_data, err);
++
++ return TRANSLATE_SERVICE_GET_CLASS(service)->translate_text(service, text, from, to, progress_func, user_data, err);
++}
++
++char *
+ translate_service_translate_web_page (TranslateService *service,
+ const char *url,
+ const char *from,
+diff -dPNur libtranslate-0.99/src/translate-service.h libtranslate-0.99-new/src/translate-service.h
+--- libtranslate-0.99/src/translate-service.h 2005-01-17 17:45:29.000000000 +0100
++++ libtranslate-0.99-new/src/translate-service.h 2005-07-27 16:54:46.000000000 +0200
+@@ -73,6 +73,14 @@
+ TranslateProgressFunc progress_func,
+ gpointer user_data,
+ GError **err);
++ char *(*timed_translate_text)(TranslateService *service,
++ const char *text,
++ const char *from,
++ const char *to,
++ GTimeVal *deadline,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err);
+ char *(*translate_web_page) (TranslateService *service,
+ const char *url,
+ const char *from,
+diff -dPNur libtranslate-0.99/src/translate-service-private.h libtranslate-0.99-new/src/translate-service-private.h
+--- libtranslate-0.99/src/translate-service-private.h 2005-01-17 17:45:17.000000000 +0100
++++ libtranslate-0.99-new/src/translate-service-private.h 2005-07-27 17:30:00.000000000 +0200
+@@ -41,6 +41,14 @@
+ TranslateProgressFunc progress_func,
+ gpointer user_data,
+ GError **err);
++char *translate_service_timed_translate_text (TranslateService *service,
++ const char *text,
++ const char *from,
++ const char *to,
++ GTimeVal *deadline,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err);
+ char *translate_service_translate_web_page (TranslateService *service,
+ const char *url,
+ const char *from,
+diff -dPNur libtranslate-0.99/src/translate-session.c libtranslate-0.99-new/src/translate-session.c
+--- libtranslate-0.99/src/translate-session.c 2005-01-17 17:45:35.000000000 +0100
++++ libtranslate-0.99-new/src/translate-session.c 2005-07-27 16:52:46.000000000 +0200
+@@ -62,6 +62,8 @@
+ {
+ GMutex *mutex;
+ GCond *progress_cond;
++
++ GTimeVal *deadline;
+
+ TranslateSession *session;
+ GSList *services;
+@@ -487,6 +489,7 @@
+ * @text: a nul-terminated string.
+ * @from: a RFC 3066 language tag.
+ * @to: a RFC 3066 language tag.
++ * @timeout: timeout in microseconds.
+ * @progress_func: a function to call when progressing, or %NULL.
+ * @user_data: data to pass to @progress_func, or %NULL.
+ * @err: a location to report errors, or %NULL. Any of the errors in
+@@ -505,10 +508,11 @@
+ * when no longer needed.
+ **/
+ char *
+-translate_session_translate_text (TranslateSession *session,
++translate_session_timed_translate_text (TranslateSession *session,
+ const char *text,
+ const char *from,
+ const char *to,
++ gulong timeout,
+ TranslateProgressFunc progress_func,
+ gpointer user_data,
+ GError **err)
+@@ -519,6 +523,7 @@
+ unsigned int max_threads;
+ GThreadPool *pool;
+ GSList *l;
++ GTimeVal deadline;
+ unsigned int max_chunk_len = 0;
+ char *translated = NULL;
+
+@@ -527,6 +532,11 @@
+ g_return_val_if_fail(from != NULL, NULL);
+ g_return_val_if_fail(to != NULL, NULL);
+
++ if (timeout) {
++ g_get_current_time(&deadline);
++ g_time_val_add(&deadline, timeout);
++ }
++
+ LOCK(session);
+ info.services = translate_session_get_services_for_translation(session,
+ TRANSLATE_PAIR_TEXT,
+@@ -560,7 +570,8 @@
+ chunks = translate_session_split(text, max_chunk_len);
+
+ info.mutex = g_mutex_new();
+- info.progress_cond = progress_func ? g_cond_new() : NULL;
++ info.progress_cond = (progress_func||timeout) ? g_cond_new() : NULL;
++ info.deadline = timeout ? &deadline : NULL;
+ info.session = session;
+ info.chunks = NULL;
+ info.from = from;
+@@ -614,6 +625,11 @@
+ GSList *l;
+ int n_chunks;
+
++ if (timeout) {
++ if (!g_cond_timed_wait(info.progress_cond, info.mutex, info.deadline))
++ info.err = g_error_new(TRANSLATE_ERROR,TRANSLATE_ERROR_CANCELLED,_("timeout"));
++ break;
++ } else
+ g_cond_wait(info.progress_cond, info.mutex);
+
+ if (info.err)
+@@ -680,6 +696,18 @@
+ return translated;
+ }
+
++char *
++translate_session_translate_text (TranslateSession *session,
++ const char *text,
++ const char *from,
++ const char *to,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err)
++{
++ return translate_session_timed_translate_text(session, text, from, to, 0, progress_func, user_data, err);
++}
++
+ static void
+ translate_session_translate_thread (gpointer data, gpointer user_data)
+ {
+@@ -709,10 +737,11 @@
+ if (ret)
+ return;
+
+- chunk_info->translated = translate_service_translate_text(service,
++ chunk_info->translated = translate_service_timed_translate_text(service,
+ chunk_info->chunk,
+ info->from,
+ info->to,
++ info->deadline,
+ info->progress_cond ? translate_session_translate_progress_cb : NULL,
+ info->progress_cond ? chunk_info : NULL,
+ &tmp_err);
+diff -dPNur libtranslate-0.99/src/translate-session.h libtranslate-0.99-new/src/translate-session.h
+--- libtranslate-0.99/src/translate-session.h 2005-01-17 17:45:40.000000000 +0100
++++ libtranslate-0.99-new/src/translate-session.h 2005-07-27 14:41:05.000000000 +0200
+@@ -93,6 +93,14 @@
+ unsigned int translate_session_get_max_threads (TranslateSession *session);
+ int translate_session_get_max_retries (TranslateSession *session);
+
++char *translate_session_timed_translate_text (TranslateSession *session,
++ const char *text,
++ const char *from,
++ const char *to,
++ gulong timeout,
++ TranslateProgressFunc progress_func,
++ gpointer user_data,
++ GError **err);
+ char *translate_session_translate_text (TranslateSession *session,
+ const char *text,
+ const char *from,
diff --git a/app-dicts/libtranslate/files/libtranslate-soup24inc.patch b/app-dicts/libtranslate/files/libtranslate-soup24inc.patch
new file mode 100644
index 0000000..8de7c07
--- /dev/null
+++ b/app-dicts/libtranslate/files/libtranslate-soup24inc.patch
@@ -0,0 +1,533 @@
+diff -dPNur libtranslate-0.99/config.h.in libtranslate-0.99-1/config.h.in
+--- libtranslate-0.99/config.h.in 2005-01-17 18:06:58.000000000 +0100
++++ libtranslate-0.99-1/config.h.in 2010-02-14 03:55:56.000000000 +0100
+@@ -24,6 +24,12 @@
+ /* Define if your <locale.h> file defines LC_MESSAGES. */
+ #undef HAVE_LC_MESSAGES
+
++/* Building with libsoup 2.2 */
++#undef HAVE_LIBSOUP22
++
++/* Building with libsoup 2.4 */
++#undef HAVE_LIBSOUP24
++
+ /* Define to 1 if you have the <locale.h> header file. */
+ #undef HAVE_LOCALE_H
+
+diff -dPNur libtranslate-0.99/configure.ac libtranslate-0.99-1/configure.ac
+--- libtranslate-0.99/configure.ac 2005-01-15 17:24:12.000000000 +0100
++++ libtranslate-0.99-1/configure.ac 2010-02-14 03:55:56.000000000 +0100
+@@ -50,7 +50,11 @@
+ ### optional libraries
+
+ if TRANSLATE_FEATURE_ENABLED(generic); then
+- PKG_CHECK_MODULES(SOUP, [libsoup-2.2],, [TRANSLATE_FEATURE_DISABLE(generic, [libsoup not found])])
++ PKG_CHECK_MODULES(SOUP, [libsoup-2.4],
++ [AC_DEFINE(HAVE_LIBSOUP24, 1, [Building with libsoup 2.4])],
++ [PKG_CHECK_MODULES(SOUP, [libsoup-2.2],
++ [AC_DEFINE(HAVE_LIBSOUP22, 1, [Building with libsoup 2.2])],
++ [TRANSLATE_FEATURE_DISABLE(generic, [libsoup not found])])])
+ fi
+ if TRANSLATE_FEATURE_ENABLED(generic); then
+ PKG_CHECK_MODULES(LIBXML, [libxml-2.0],, [TRANSLATE_FEATURE_DISABLE(generic, [libxml not found])])
+diff -dPNur libtranslate-0.99/src/modules/translate-generic-service.c libtranslate-0.99-1/src/modules/translate-generic-service.c
+--- libtranslate-0.99/src/modules/translate-generic-service.c 2010-02-14 03:55:34.000000000 +0100
++++ libtranslate-0.99-1/src/modules/translate-generic-service.c 2010-02-14 04:04:56.000000000 +0100
+@@ -35,7 +35,9 @@
+ #include <stdlib.h>
+ #include <glib/gi18n-lib.h>
+ #include <libsoup/soup.h>
++#ifdef HAVE_LIBSOUP22
+ #include <libsoup/soup-message-filter.h>
++#endif
+ #include <libxml/HTMLparser.h>
+ #include "translate.h"
+ #include "translate-generic-service.h"
+@@ -43,6 +45,17 @@
+ #include "translate-generic-parser.h"
+ #include "translate-generic-soup-cookie-jar.h"
+
++#ifdef HAVE_LIBSOUP22
++#define soup_message_headers_get soup_message_get_header
++#define soup_message_headers_append soup_message_add_header
++#define SoupURI SoupUri
++#define SOUP_MESSAGE_RESPONSE_BODY(msg) ((msg)->response.body)
++#define SOUP_MESSAGE_RESPONSE_LENGTH(msg) ((msg)->response.length)
++#else
++#define SOUP_MESSAGE_RESPONSE_BODY(msg) ((msg)->response_body->data)
++#define SOUP_MESSAGE_RESPONSE_LENGTH(msg) ((msg)->response_body->length)
++#endif
++
+ #define MAKE_WARNING_PREFIX(service, group_pos, attribute, element) \
+ g_strdup_printf(_("in %s, group %i, \"%s\" attribute of \"%s\" element"), \
+ translate_service_get_name((service)), \
+@@ -142,6 +155,7 @@
+ const char *name);
+
+ static void translate_generic_service_log_connect (SoupMessage *message);
++#ifdef HAVE_LIBSOUP22
+ static void translate_generic_service_log_wrote_headers_h (SoupMessage *message,
+ gpointer user_data);
+ static void translate_generic_service_log_wrote_body_h (SoupMessage *message,
+@@ -153,10 +167,20 @@
+ static void translate_generic_service_log_headers_cb (const char *key,
+ const char *value,
+ gpointer user_data);
++#else
++static void translate_generic_service_log_printer (SoupLogger *logger,
++ SoupLoggerLogLevel level,
++ char direction,
++ const char *data,
++ gpointer user_data);
++#endif
+
+ static void translate_generic_service_progress_got_headers_h (SoupMessage *message,
+ gpointer user_data);
+ static void translate_generic_service_progress_got_chunk_h (SoupMessage *message,
++#ifdef HAVE_LIBSOUP24
++ SoupBuffer *chunk,
++#endif
+ gpointer user_data);
+
+ static void translate_generic_service_html_got_headers_h (SoupMessage *message,
+@@ -172,8 +196,10 @@
+ static void translate_generic_service_refresh_got_body_h (SoupMessage *message,
+ gpointer user_data);
+
++#ifdef HAVE_LIBSOUP22
+ static void translate_generic_service_redirect_handler (SoupMessage *message,
+ gpointer user_data);
++#endif
+
+ static char *translate_generic_service_translate_text (TranslateService *service,
+ const char *text,
+@@ -440,7 +466,11 @@
+ g_return_val_if_fail(post_content_type != NULL, NULL);
+ soup_message_set_request(message,
+ post_content_type,
++#ifdef HAVE_LIBSOUP22
+ SOUP_BUFFER_USER_OWNED,
++#else
++ SOUP_MEMORY_TEMPORARY,
++#endif
+ (char *) post,
+ strlen(post));
+ }
+@@ -448,7 +478,7 @@
+ for (l = headers; l != NULL; l = l->next)
+ {
+ TranslateGenericHttpHeader *header = l->data;
+- soup_message_add_header(message->request_headers, header->name, header->value);
++ soup_message_headers_append(message->request_headers, header->name, header->value);
+ }
+
+ info.session = translate_generic_service_soup_session_sync_new();
+@@ -456,12 +486,21 @@
+ info.html_http_equiv = NULL;
+
+ if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS)
+- g_object_connect(message,
+- "signal::wrote-headers", translate_generic_service_log_wrote_headers_h, &info,
+- "signal::wrote-body", translate_generic_service_log_wrote_body_h, &info,
+- "signal::got-headers", translate_generic_service_log_got_headers_h, &info,
+- "signal::got-body", translate_generic_service_log_got_body_h, &info,
+- NULL);
++ {
++#ifdef HAVE_LIBSOUP22
++ g_object_connect(message,
++ "signal::wrote-headers", translate_generic_service_log_wrote_headers_h, &info,
++ "signal::wrote-body", translate_generic_service_log_wrote_body_h, &info,
++ "signal::got-headers", translate_generic_service_log_got_headers_h, &info,
++ "signal::got-body", translate_generic_service_log_got_body_h, &info,
++ NULL);
++#else
++ SoupLogger *logger = soup_logger_new (SOUP_LOGGER_LOG_BODY, -1);
++ soup_logger_set_printer (logger, translate_generic_service_log_printer, NULL, NULL);
++ soup_logger_attach (logger, info.session);
++ g_object_unref (logger);
++#endif
++ }
+
+ if (progress_func)
+ {
+@@ -489,6 +528,7 @@
+ if (flags & TRANSFER_FOLLOW_REFRESH)
+ g_signal_connect(message, "got-body", G_CALLBACK(translate_generic_service_refresh_got_body_h), &info);
+
++#ifdef HAVE_LIBSOUP22
+ /* http://bugzilla.ximian.com/show_bug.cgi?id=70688 */
+ soup_message_set_flags(message, SOUP_MESSAGE_NO_REDIRECT);
+ soup_message_add_status_class_handler(message,
+@@ -496,6 +536,7 @@
+ SOUP_HANDLER_POST_BODY,
+ translate_generic_service_redirect_handler,
+ info.session);
++#endif
+
+ if (translate_generic_debug_flags & TRANSLATE_GENERIC_DEBUG_LOG_TRANSFERS)
+ translate_generic_service_log_connect(message);
+@@ -554,18 +595,18 @@
+
+ if ((charset)||(response_charset))
+ {
+- response = g_convert(message->response.body, message->response.length, "UTF-8", response_charset?response_charset:charset, NULL, NULL, err);
++ response = g_convert(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message), "UTF-8", charset, NULL, NULL, err);
+ g_free(charset);
+ }
+ else
+ {
+- if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(message->response.body, message->response.length, NULL))
++ if ((flags & TRANSFER_CONVERT) && ! g_utf8_validate(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message), NULL))
+ g_set_error(err,
+ TRANSLATE_GENERIC_SERVICE_ERROR,
+ TRANSLATE_GENERIC_SERVICE_ERROR_TRANSFER,
+ _("invalid UTF-8"));
+ else
+- response = g_strndup(message->response.body, message->response.length);
++ response = g_strndup(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message));
+ }
+ }
+ else
+@@ -606,7 +647,7 @@
+ : NULL;
+
+ if (! value)
+- value = soup_message_get_header(message->response_headers, name);
++ value = soup_message_headers_get(message->response_headers, name);
+
+ return value;
+ }
+@@ -614,12 +655,14 @@
+ static void
+ translate_generic_service_log_connect (SoupMessage *message)
+ {
+- const SoupUri *uri;
++ const SoupURI *uri;
+
+ uri = soup_message_get_uri(message);
+ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, _("connecting to %s:%i"), uri->host, uri->port);
+ }
+
++#ifdef HAVE_LIBSOUP22
++
+ static void
+ translate_generic_service_log_wrote_headers_h (SoupMessage *message,
+ gpointer user_data)
+@@ -674,6 +717,20 @@
+ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%s %s: %s", prefix, key, value);
+ }
+
++#else /* !HAVE_LIBSOUP22 */
++
++static void
++translate_generic_service_log_printer (SoupLogger *logger,
++ SoupLoggerLogLevel level,
++ char direction,
++ const char *data,
++ gpointer user_data)
++{
++ g_log(G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "%c %s", direction, data);
++}
++
++#endif /* HAVE_LIBSOUP22 */
++
+ static void
+ translate_generic_service_progress_got_headers_h (SoupMessage *message,
+ gpointer user_data)
+@@ -681,7 +738,7 @@
+ TransferInfo *info = user_data;
+ const char *content_length;
+
+- content_length = soup_message_get_header(message->response_headers, "Content-Length");
++ content_length = soup_message_headers_get(message->response_headers, "Content-Length");
+ info->length = (content_length
+ && *content_length
+ && strspn(content_length, "0123456789") == strlen(content_length))
+@@ -691,6 +748,9 @@
+
+ static void
+ translate_generic_service_progress_got_chunk_h (SoupMessage *message,
++#ifdef HAVE_LIBSOUP24
++ SoupBuffer *chunk,
++#endif
+ gpointer user_data)
+ {
+ TransferInfo *info = user_data;
+@@ -700,7 +760,11 @@
+ progress = -1;
+ else
+ {
++#ifdef HAVE_LIBSOUP22
+ info->received += message->response.length;
++#else
++ info->received += chunk->length;
++#endif
+ progress = (double) info->received / info->length;
+ progress = CLAMP(progress, 0.0, 1.0);
+ }
+@@ -716,7 +780,7 @@
+ TransferInfo *info = user_data;
+ const char *content_type;
+
+- content_type = soup_message_get_header(message->response_headers, "Content-Type");
++ content_type = soup_message_headers_get(message->response_headers, "Content-Type");
+ info->parse_html = content_type
+ && (g_str_has_prefix(content_type, "text/html")
+ || g_str_has_prefix(content_type, "application/xhtml+xml")
+@@ -736,7 +800,7 @@
+ info->html_http_equiv = NULL;
+ }
+
+- if (info->parse_html && message->response.length > 0)
++ if (info->parse_html && SOUP_MESSAGE_RESPONSE_LENGTH (message) > 0)
+ {
+ char *body;
+ xmlSAXHandler sax_handler = { NULL };
+@@ -750,7 +814,7 @@
+ sax_handler.startElement = translate_generic_service_html_start_element_cb;
+ sax_handler.endElement = translate_generic_service_html_end_element_cb;
+
+- body = g_strndup(message->response.body, message->response.length);
++ body = g_strndup(SOUP_MESSAGE_RESPONSE_BODY (message), SOUP_MESSAGE_RESPONSE_LENGTH (message));
+ htmlSAXParseDoc(body, NULL, &sax_handler, user_data);
+ g_free(body);
+ }
+@@ -817,7 +881,7 @@
+ {
+ TransferInfo *info = user_data;
+ const char *refresh_uri;
+- SoupUri *new_uri = NULL;
++ SoupURI *new_uri = NULL;
+
+ refresh_uri = translate_generic_service_get_header(message, info, "Refresh");
+ if (refresh_uri)
+@@ -832,9 +896,9 @@
+ new_uri = soup_uri_new(refresh_uri);
+ if (! new_uri)
+ {
+- const SoupUri *base_uri;
++ SoupURI *base_uri;
+
+- base_uri = soup_message_get_uri(message);
++ base_uri = (SoupURI *)soup_message_get_uri(message);
+ new_uri = soup_uri_new_with_base(base_uri, refresh_uri);
+ }
+ }
+@@ -851,6 +915,7 @@
+ }
+ }
+
++#ifdef HAVE_LIBSOUP22
+ static void
+ translate_generic_service_redirect_handler (SoupMessage *message,
+ gpointer user_data)
+@@ -887,6 +952,7 @@
+ soup_session_requeue_message(session, message);
+ }
+ }
++#endif
+
+ static char *
+ translate_generic_service_timed_translate_text (TranslateService *service,
+@@ -1391,7 +1457,7 @@
+ translate_generic_service_soup_session_sync_new (void)
+ {
+ char *proxy_text_uri;
+- SoupUri *proxy_uri = NULL;
++ SoupURI *proxy_uri = NULL;
+ SoupSession *session;
+ TranslateGenericSoupCookieJar *cookie_jar;
+
+@@ -1411,7 +1477,7 @@
+ soup_uri_free(proxy_uri);
+
+ cookie_jar = translate_generic_soup_cookie_jar_new();
+- soup_session_add_filter(session, SOUP_MESSAGE_FILTER(cookie_jar));
++ translate_generic_soup_cookie_jar_attach(cookie_jar, session);
+ g_object_unref(cookie_jar);
+
+ return session;
+diff -dPNur libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.c libtranslate-0.99-1/src/modules/translate-generic-soup-cookie-jar.c
+--- libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.c 2005-01-17 17:46:53.000000000 +0100
++++ libtranslate-0.99-1/src/modules/translate-generic-soup-cookie-jar.c 2010-02-14 03:55:56.000000000 +0100
+@@ -29,9 +29,12 @@
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
++#include "config.h"
+ #include <string.h>
+ #include <libsoup/soup.h>
++#ifdef HAVE_LIBSOUP22
+ #include <libsoup/soup-message-filter.h>
++#endif
+ #include "translate-generic-soup-cookie-jar.h"
+
+ struct _TranslateGenericSoupCookieJarPrivate
+@@ -44,9 +47,12 @@
+ static void translate_generic_soup_cookie_jar_register_type (GType *type);
+ static void translate_generic_soup_cookie_jar_class_init (TranslateGenericSoupCookieJarClass *class);
+ static void translate_generic_soup_cookie_jar_init (TranslateGenericSoupCookieJar *jar);
++#ifdef HAVE_LIBSOUP22
+ static void translate_generic_soup_cookie_jar_filter_init (SoupMessageFilterClass *iface);
++#else
++#define SoupMessageFilter TranslateGenericSoupCookieJar
++#endif
+ static void translate_generic_soup_cookie_jar_finalize (GObject *object);
+-
+ static void translate_generic_soup_cookie_jar_setup_message (SoupMessageFilter *filter,
+ SoupMessage *message);
+
+@@ -75,17 +81,21 @@
+ 0,
+ (GInstanceInitFunc) translate_generic_soup_cookie_jar_init
+ };
++#ifdef HAVE_LIBSOUP22
+ static const GInterfaceInfo filter_info = {
+ (GInterfaceInitFunc) translate_generic_soup_cookie_jar_filter_init,
+ NULL,
+ NULL
+ };
++#endif
+
+ *type = g_type_register_static(G_TYPE_OBJECT,
+ "TranslateGenericSoupCookieJar",
+ &info,
+ 0);
++#ifdef HAVE_LIBSOUP22
+ g_type_add_interface_static(*type, SOUP_TYPE_MESSAGE_FILTER, &filter_info);
++#endif
+ }
+
+ static void
+@@ -107,11 +117,13 @@
+ TranslateGenericSoupCookieJarPrivate);
+ }
+
++#ifdef HAVE_LIBSOUP22
+ static void
+ translate_generic_soup_cookie_jar_filter_init (SoupMessageFilterClass *iface)
+ {
+ iface->setup_message = translate_generic_soup_cookie_jar_setup_message;
+ }
++#endif
+
+ static void
+ translate_generic_soup_cookie_jar_finalize (GObject *object)
+@@ -125,26 +137,46 @@
+ }
+
+ static void
++add_cookie_to_jar (TranslateGenericSoupCookieJar *jar, const char *cookie)
++{
++ char *s;
++
++ s = strchr(cookie, ';');
++ if (s)
++ jar->priv->cookies = g_slist_append(jar->priv->cookies, g_strndup(cookie, s - cookie));
++}
++
++#ifdef HAVE_LIBSOUP24
++static void
++maybe_add_cookie_to_jar (const char *header, const char *value, gpointer jar)
++{
++ if (!g_ascii_strcasecmp (header, "Set-Cookie"))
++ add_cookie_to_jar (jar, value);
++}
++#endif
++
++static void
+ translate_generic_soup_cookie_jar_setup_message (SoupMessageFilter *filter,
+- SoupMessage *message)
++ SoupMessage *message)
+ {
+ TranslateGenericSoupCookieJar *jar = TRANSLATE_GENERIC_SOUP_COOKIE_JAR(filter);
+- const GSList *cookies;
+ const GSList *l;
+
+ /* FIXME: add full RFC 2965 support */
+
++#ifdef HAVE_LIBSOUP22
++ const GSList *cookies;
++
+ cookies = soup_message_get_header_list(message->response_headers, "Set-Cookie");
+ for (l = cookies; l != NULL; l = l->next)
+ {
+ const char *cookie = l->data;
+- char *s;
+-
+- s = strchr(cookie, ';');
+- if (s)
+- jar->priv->cookies = g_slist_append(jar->priv->cookies, g_strndup(cookie, s - cookie));
++ add_cookie_to_jar(jar, cookie);
+ }
+-
++#else
++ soup_message_headers_foreach(message->response_headers, maybe_add_cookie_to_jar, jar);
++#endif
++
+ if (jar->priv->cookies)
+ {
+ GString *string;
+@@ -159,13 +191,44 @@
+ g_string_append(string, "; ");
+ }
+
++#ifdef HAVE_LIBSOUP22
+ soup_message_add_header(message->request_headers, "Cookie", string->str);
++#else
++ soup_message_headers_append(message->request_headers, "Cookie", string->str);
++#endif
+ g_string_free(string, TRUE);
+ }
+ }
+
++#ifdef HAVE_LIBSOUP24
++static void
++translate_generic_soup_cookie_jar_request_started (SoupSession *session,
++ SoupMessage *message,
++ SoupSocket *socket,
++ gpointer cookie_jar)
++{
++ translate_generic_soup_cookie_jar_setup_message (cookie_jar, message);
++}
++#endif
++
+ TranslateGenericSoupCookieJar *
+ translate_generic_soup_cookie_jar_new (void)
+ {
+ return g_object_new(TRANSLATE_GENERIC_TYPE_SOUP_COOKIE_JAR, NULL);
+ }
++
++void
++translate_generic_soup_cookie_jar_attach (TranslateGenericSoupCookieJar *cookie_jar,
++ SoupSession *session)
++{
++#ifdef HAVE_LIBSOUP22
++ soup_session_add_filter (session, SOUP_MESSAGE_FILTER(cookie_jar));
++#else
++ g_signal_connect (session, "request_started",
++ G_CALLBACK (translate_generic_soup_cookie_jar_request_started),
++ cookie_jar);
++ g_object_set_data_full (G_OBJECT (session), "TranslateGenericSoupCookieJar",
++ g_object_ref (cookie_jar), g_object_unref);
++#endif
++}
++
+diff -dPNur libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.h libtranslate-0.99-1/src/modules/translate-generic-soup-cookie-jar.h
+--- libtranslate-0.99/src/modules/translate-generic-soup-cookie-jar.h 2005-01-17 17:47:00.000000000 +0100
++++ libtranslate-0.99-1/src/modules/translate-generic-soup-cookie-jar.h 2010-02-14 03:55:56.000000000 +0100
+@@ -33,6 +33,7 @@
+ #define _TRANSLATE_GENERIC_SOUP_COOKIE_JAR_H
+
+ #include <glib-object.h>
++#include <libsoup/soup-session.h>
+
+ #define TRANSLATE_GENERIC_TYPE_SOUP_COOKIE_JAR (translate_generic_soup_cookie_jar_get_type())
+ #define TRANSLATE_GENERIC_SOUP_COOKIE_JAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TRANSLATE_GENERIC_TYPE_SOUP_COOKIE_JAR, TranslateGenericSoupCookieJar))
+@@ -59,5 +60,6 @@
+
+ GType translate_generic_soup_cookie_jar_get_type (void);
+ TranslateGenericSoupCookieJar *translate_generic_soup_cookie_jar_new (void);
++void translate_generic_soup_cookie_jar_attach (TranslateGenericSoupCookieJar *cookie_jar, SoupSession *session);
+
+ #endif /* _TRANSLATE_GENERIC_SOUP_COOKIE_JAR_H */
diff --git a/app-dicts/libtranslate/files/services.xml b/app-dicts/libtranslate/files/services.xml
new file mode 100644
index 0000000..14d0548
--- /dev/null
+++ b/app-dicts/libtranslate/files/services.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE services SYSTEM "services.dtd">
+<services>
+ <custom-language tag="zh-TW" name="Chinese (Taiwan)"/>
+
+ <service nick="Google" name="google">
+ <group>
+ <language to="*" tag="en"/>
+ <language to="en,de" tag="fr"/>
+ <language to="en,fr" tag="de"/>
+ <language to="en" tag="it"/>
+ <language to="en" tag="pt"/>
+ <language to="en" tag="es"/>
+ <language to="en" tag="pt"/>
+ <language to="en" tag="ru"/>
+ <language to="en" tag="zh"/>
+ <language to="en" tag="zh-TW"/>
+ <language to="en" tag="ja"/>
+ <language to="en" tag="ko"/>
+ <language to="en" tag="ar"/>
+ <text-translation url="http://www.google.com/translate_t?text=${text:escape}&amp;langpair=${from}|${to}&amp;ie=utf8&amp;oe=utf8">
+ <pre-marker text="id=result_box"/>
+ <pre-marker text="mouseover"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;br&gt;"/>
+ </text-translation>
+ <web-page-translation url="http://www.google.com/translate_c?u=${url:escape}&amp;langpair=${from}|${to}"/>
+ </group>
+ </service>
+
+ <service nick="FreeTranslation" name="freetranslation" max-chunk-len="600">
+ <group>
+ <language to="en" tag="nl" service-tag="dutch"/>
+ <language to="*" tag="en" service-tag="english"/>
+ <language to="en" tag="fr" service-tag="french"/>
+ <language to="en" tag="de" service-tag="german"/>
+ <language to="en" tag="it" service-tag="italian"/>
+ <language tag="no" service-tag="norwegian"/>
+ <language to="en" tag="pt" service-tag="portuguese"/>
+ <language to="en" tag="es" service-tag="spanish"/>
+ <text-translation url="http://ets.freetranslation.com/?sequence=core&amp;srctext=${text:escape}&amp;language=${from}/${to}&amp;charset=utf-8"/>
+ <web-page-translation url="http://fets5.freetranslation.com/?sequence=core&amp;url=${url:escape}&amp;language=${from}/${to}"/>
+ </group>
+ <group>
+ <language tag="zh" service-tag="simplifiedchinese"/>
+ <language tag="zh-TW" service-tag="traditionalchinese"/>
+ <language to="*" tag="en" service-tag="english"/>
+ <language to="en" tag="ru" service-tag="russian"/>
+ <text-translation url="http://ets6.freetranslation.com/?sequence=core&amp;srctext=${text:escape}&amp;language=${from}/${to}&amp;charset=utf-8"/>
+ </group>
+ <group>
+ <language to="*" tag="en" service-tag="english"/>
+ <language to="en" tag="ja" service-tag="japanese"/>
+ <text-translation url="http://tets9.freetranslation.com/?sequence=core&amp;srctext=${text:escape}&amp;language=${from}/${to}&amp;charset=utf-8"/>
+ </group>
+ </service>
+
+ <service nick="Pereklad" name="pereklad">
+ <group>
+ <language to="*" tag="ru" service-tag="Rus"/>
+ <language to="*" tag="uk" service-tag="Ukr"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="*" tag="en" service-tag="Eng"/>
+ <language to="*" tag="de" service-tag="Ger"/>
+ <language to="*" tag="fr" service-tag="Fra"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}"
+ response-charset="ISO-8859-1">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="en,de,fr" tag="ru" service-tag="Rus"/>
+ <language to="en,de,fr" tag="uk" service-tag="Ukr"/>
+ <language to="" tag="en" service-tag="Eng"/>
+ <language to="" tag="de" service-tag="Ger"/>
+ <language to="" tag="fr" service-tag="Fra"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}"
+ response-charset="ISO-8859-1">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="" tag="ru" service-tag="Rus"/>
+ <language to="" tag="uk" service-tag="Ukr"/>
+ <language to="ru,uk" tag="en" service-tag="Eng"/>
+ <language to="ru,uk" tag="de" service-tag="Ger"/>
+ <language to="ru,uk" tag="fr" service-tag="Fra"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="" tag="ru" service-tag="Rus"/>
+ <language to="" tag="uk" service-tag="Ukr"/>
+ <language to="ru,uk" tag="lv" service-tag="Lat"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="*" tag="lv" service-tag="Lat"/>
+ <language to="" tag="en" service-tag="Eng"/>
+ <language to="" tag="de" service-tag="Ger"/>
+ <language to="" tag="fr" service-tag="Fra"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}"
+ response-charset="ISO-8859-1">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="" tag="lv" service-tag="Lat"/>
+ <language to="lv" tag="ru" service-tag="Rus"/>
+ <language to="lv" tag="uk" service-tag="Ukr"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}"
+ response-charset="ISO-8859-4">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ <group>
+ <language to="" tag="lv" service-tag="Lat"/>
+ <language to="lv" tag="en" service-tag="Eng"/>
+ <language to="lv" tag="de" service-tag="Ger"/>
+ <language to="lv" tag="fr" service-tag="Fra"/>
+ <text-translation
+ url="http://pereklad.online.ua/"
+ post="TranFrom=${from}&amp;TranTo=${to}&amp;SrcTxt=${text:escape}"
+ response-charset="ISO-8859-4">
+ <pre-marker text="id=&quot;DstTxt&quot;"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea&gt;"/>
+ </text-translation>
+ </group>
+ </service>
+
+ <service nick="Promt" name="promt">
+ <group>
+ <language to="*" tag="ru" service-tag="r"/>
+ <language to="ru,de,fr,es" tag="en" service-tag="e"/>
+ <language to="ru,en,fr,es" tag="de" service-tag="g"/>
+ <language to="ru,en,de,es" tag="fr" service-tag="f"/>
+ <language to="ru,en" tag="it" service-tag="i"/>
+ <language to="ru,en,de,fr" tag="es" service-tag="s"/>
+ <language to="en" tag="pt" service-tag="p"/>
+ <text-translation
+ url="http://www.translate.ru/Default.aspx/Text"
+ post="__EVENTTARGET=&amp;__EVENTTARGUMENT=&amp;ctl00$SiteContent$MA_trasnlform$bTranslate=Translate&amp;ctl00$SiteContent$MA_trasnlform$DropDownList2=&amp;ctl00$SiteContent$trasnlform$sLang=${from}&amp;ctl00$SiteContent$MA_trasnlform$rLang=${to}&amp;ctl00$SiteContent$MA_trasnlform$sourceText=${text:escape}&amp;ctl00$SiteContent$MA_trasnlform$rblTemplates=General">
+ <pre-marker text="ctl00$SiteContent$MA_trasnlform$tbPismo"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/textarea"/>
+
+ </text-translation>
+ </group>
+ </service>
+
+ <service nick="SYSTRAN" name="systran">
+ <group>
+ <language to="en" tag="ar"/>
+ <language to="en" tag="zh"/>
+ <language to="en" tag="zh-TW" service-tag="zt"/>
+ <language to="en,fr" tag="nl"/>
+ <language to="*" tag="en"/>
+ <language to="nl,en,de,it,pt,es" tag="fr"/>
+ <language to="en,fr" tag="de"/>
+ <language to="en,fr" tag="it"/>
+ <language to="en" tag="ja"/>
+ <language to="en" tag="ko"/>
+ <language to="en,fr" tag="pt"/>
+ <language to="en" tag="ru"/>
+ <language to="en,fr" tag="es"/>
+ <language to="en" tag="sv"/>
+ <http-header value="http://www.systransoft.com/" name="Referer"/>
+ <text-translation
+ url="http://www.systranet.com/tt?lp=${from}_${to}&amp;service=translate"
+ post=". ${text}.">
+ <pre-marker text=". "/>
+ <post-marker text="."/>
+ </text-translation>
+ </group>
+ </service>
+
+ <service nick="Babel Fish" name="babelfish">
+ <group>
+ <language to="en" tag="zh"/>
+ <language to="en" tag="zh-TW" service-tag="zt"/>
+ <language to="*" tag="en"/>
+ <language to="en,fr" tag="nl"/>
+ <language to="en,de,el,it,pt,nl,es" tag="fr"/>
+ <language to="en,fr" tag="de"/>
+ <language to="en,fr" tag="el"/>
+ <language to="en,fr" tag="it"/>
+ <language to="en" tag="ja"/>
+ <language to="en" tag="ko"/>
+ <language to="en,fr" tag="pt"/>
+ <language to="en" tag="ru"/>
+ <language to="en,fr" tag="es"/>
+ <text-translation
+ url="http://babelfish.yahoo.com/translate_txt"
+ post="trtext=${text:escape}&amp;lp=${from}_${to}&amp;ei=UTF-8">
+ <pre-marker text="id=&quot;result&quot;"/>
+ <pre-marker text="&lt;div"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&lt;/div"/>
+ </text-translation>
+<!--
+ <web-page-translation url="http://babelfish.altavista.com/babelfish/trurl_load?url=${url:escape}&amp;lp=${from}_${to}&amp;enc=utf8"/>
+!-->
+ </group>
+ </service>
+
+<!--
+ <service nick="Kataku" name="kataku">
+ <group>
+ <language to="*" tag="en"/>
+ <language to="*" tag="id" service-tag="in"/>
+ <text-translation url="http://www.toggletext.com/kataku_trial.php" post="input_text=${text:charset=ISO8859-1,escape}&amp;langset_text=${from}_${to}">
+ <pre-marker text="Translation:"/>
+ <pre-marker text="&lt;pre"/>
+ <pre-marker text="&gt;"/>
+ <post-marker text="&#10;&lt;/pre&gt;"/>
+ </text-translation>
+ <web-page-translation url="http://www.toggletext.com/kataku_webpage_translate.php?input=${url:escape}&amp;langset=${from}_${to}"/>
+ </group>
+ </service>
+-->
+
+</services> \ No newline at end of file
diff --git a/app-dicts/libtranslate/libtranslate-0.99-r4.ebuild b/app-dicts/libtranslate/libtranslate-0.99-r4.ebuild
new file mode 100644
index 0000000..59e4e78
--- /dev/null
+++ b/app-dicts/libtranslate/libtranslate-0.99-r4.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Library for translating text and web pages between natural languages."
+HOMEPAGE="http://www.nongnu.org/libtranslate"
+SRC_URI="http://savannah.nongnu.org/download/libtranslate/${P}.tar.gz"
+
+SLOT="0"
+KEYWORDS="x86 amd64"
+LICENSE="BSD"
+IUSE=""
+
+
+DEPEND=">=dev-libs/glib-2.4.0
+ >=net-libs/libsoup-2.2.0
+ >=dev-libs/libxml2-2.0
+ app-text/talkfilters
+ dev-perl/XML-Parser"
+
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epatch "${FILESDIR}"/libtranslate-ds-timed.patch.bz2
+ epatch "${FILESDIR}"/libtranslate-ds-memory.patch
+
+ epatch "${FILESDIR}"/libtranslate-0.99-charsetparse.diff
+ epatch "${FILESDIR}"/libtranslate-0.99-condfix.diff
+ epatch "${FILESDIR}"/libtranslate-ds-empty.patch
+ epatch "${FILESDIR}"/libtranslate-ds-promt.patch
+ epatch "${FILESDIR}"/libtranslate-ds-fixcharset.patch
+}
+
+src_install() {
+# Installing new services.xml without broken items
+ cp -f ${FILESDIR}/services.xml data/
+
+ make install DESTDIR="${D}"
+
+ cd ${S}
+ dodoc AUTHORS COPYING INSTALL NEWS README TODO
+}
diff --git a/app-dicts/libtranslate/libtranslate-0.99-r6.ebuild b/app-dicts/libtranslate/libtranslate-0.99-r6.ebuild
new file mode 100644
index 0000000..e150735
--- /dev/null
+++ b/app-dicts/libtranslate/libtranslate-0.99-r6.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Library for translating text and web pages between natural languages."
+HOMEPAGE="http://www.nongnu.org/libtranslate"
+SRC_URI="http://savannah.nongnu.org/download/libtranslate/${P}.tar.gz"
+
+SLOT="0"
+KEYWORDS="x86 amd64"
+LICENSE="BSD"
+IUSE=""
+
+
+DEPEND=">=dev-libs/glib-2.4.0
+ dev-util/intltool
+ >=net-libs/libsoup-2.4.0
+ >=dev-libs/libxml2-2.0
+ app-text/talkfilters
+ dev-perl/XML-Parser"
+
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epatch "${FILESDIR}"/libtranslate-ds-timed24.patch || die
+ epatch "${FILESDIR}"/libtranslate-ds-memory.patch || die
+
+ epatch "${FILESDIR}"/libtranslate-0.99-charsetparse.diff || die
+ epatch "${FILESDIR}"/libtranslate-0.99-condfix.diff || die
+ epatch "${FILESDIR}"/libtranslate-ds-empty.patch || die
+ epatch "${FILESDIR}"/libtranslate-ds-promt.patch || die
+ epatch "${FILESDIR}"/libtranslate-ds-fixcharset.patch || die
+ epatch "${FILESDIR}"/libtranslate-soup24inc.patch || die
+}
+
+src_compile() {
+ rm -f Makefile.in aclocal.m4
+ aclocal -I m4 || die
+ intltoolize --force || die
+ libtoolize || die
+ automake --add-missing || die
+ autoconf || die
+ econf
+ emake
+}
+
+src_install() {
+# Installing new services.xml without broken items
+ cp -f ${FILESDIR}/services.xml data/
+
+ make install DESTDIR="${D}"
+
+ cd ${S}
+ dodoc AUTHORS COPYING INSTALL NEWS README TODO
+}
diff --git a/app-dicts/makedict/Manifest b/app-dicts/makedict/Manifest
new file mode 100644
index 0000000..e6c689c
--- /dev/null
+++ b/app-dicts/makedict/Manifest
@@ -0,0 +1 @@
+EBUILD makedict-9999.ebuild 618 SHA256 13ca3d009417fd37193feb74818116ffa176ea6905d83b77e66bcd525304e5fc SHA512 7823d35cd1ceefd78d89705e266da8ea8fb0a0613465e6b311642a472365845fcff51495eab0e5c0bbba5ac5d5e674e5e66c81995d27a614678aa85b05daf66a WHIRLPOOL dcf051e0a9b51458e48f95c6395830ce1341ef219bb8256580cb3a042a76570b9ff54de9705e7c8742a1b2390ec9bec8692a6718d89e4786722f67918c06b310
diff --git a/app-dicts/makedict/makedict-9999.ebuild b/app-dicts/makedict/makedict-9999.ebuild
new file mode 100644
index 0000000..807aab3
--- /dev/null
+++ b/app-dicts/makedict/makedict-9999.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+EAPI=5
+
+inherit subversion cmake-utils
+
+DESCRIPTION="A converter between many dictionary formats (dictd, dsl, sdict, stardict, xdxf)"
+HOMEPAGE="http://xdxf.sf.net"
+ESVN_REPO_URI="https://xdxf.svn.sourceforge.net/svnroot/xdxf/trunk"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE="doc"
+
+DEPEND="
+ sys-libs/zlib
+ >=dev-libs/glib-2.6.0
+ dev-libs/expat
+"
+RDEPEND="
+ ${DEPEND}
+ virtual/python
+"
+
+src_install() {
+ cmake-utils_src_install
+ dodoc AUTHORS ChangeLog README TODO
+}
+
diff --git a/app-dicts/slowo/Manifest b/app-dicts/slowo/Manifest
new file mode 100644
index 0000000..7fe5853
--- /dev/null
+++ b/app-dicts/slowo/Manifest
@@ -0,0 +1,2 @@
+DIST slowo.tar.bz2 6963984 RMD160 5c45073e6891df34e74a7d84f5e3d051c3ae2b7e SHA1 bb53ebce3fe4bf5baa72bbd8e7540178c9fc9182 SHA256 2401836206023b10e8b2c6c5471dbea48aeeeb84ef06618baa6927f64fce2bde
+EBUILD slowo-1.0.ebuild 1224 RMD160 d2020590df4d5c0cfde8630174aa87e7b66b9926 SHA1 9984575376ed45abfb9bcea751a990139ad8b5e8 SHA256 9d09e341dd9901684eddc08fa84e84d059e6aebed3b674f799a49e0d1121cb58
diff --git a/app-dicts/slowo/slowo-1.0.ebuild b/app-dicts/slowo/slowo-1.0.ebuild
new file mode 100644
index 0000000..a73e1a4
--- /dev/null
+++ b/app-dicts/slowo/slowo-1.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Slowo Dictionary"
+SRC_URI="http://dside.dyndns.org/files/darklin/slowo.tar.bz2"
+SLOT="0"
+
+KEYWORDS="x86 amd64"
+LICENSE="GPL-2"
+IUSE="X"
+
+FONT_ROOT=/usr/share/fonts/DarkLin
+
+DEPEND="sys-libs/ncurses
+ X? ( x11-base/xorg-x11 )"
+
+src_compile() {
+ cd ${WORKDIR}
+
+ cd slowo || die
+ make
+# cd ../sortbase || die
+# make
+
+ if use X ; then
+ cd ../xslowo
+ make
+# cd ../qtslowo
+# make
+ fi
+}
+
+src_install() {
+ cd ${WORKDIR}
+
+ mkdir -p ${D}/usr/bin
+ mkdir -p ${D}/${FONT_ROOT}
+
+ install -c -m 755 slowo/slowo ${D}/usr/bin/slowo
+# install -c -m 755 sortbase/slowosort ${D}/usr/bin/slowosort
+ cp -rf dwa ${D}/usr/share
+
+ if use X ; then
+ install -c -m 755 xslowo/slowo ${D}/usr/bin/xslowo
+# install -c -m 755 qtslowo/slowo ${D}/usr/bin/qtslowo
+ fi
+
+ cp -rf IPAFonts ${D}/${FONT_ROOT}
+}
+
+pkg_postinst() {
+ einfo "In order to make X see the fonts, you need to add the"
+ einfo "following lines to the files section of your "
+ einfo "/etc/X11/XF86Config (or the XOrg equivalent):"
+ einfo " FontPath \"${FONT_ROOT}/DarkLin/IPAFonts:unscaled\""
+}
diff --git a/app-i18n/gtk1-utf8/Manifest b/app-i18n/gtk1-utf8/Manifest
new file mode 100644
index 0000000..58eb82f
--- /dev/null
+++ b/app-i18n/gtk1-utf8/Manifest
@@ -0,0 +1,7 @@
+AUX Compose 521244 SHA256 f0e55fec21eb8cf3bb391099cfefef407a91e51673eeb9c241487667f0aa1406 SHA512 ca3a141dd2658e8a6815ded1cccd18089fe29324fc935a400d98c400fc883e03955f144a439f4c0394a11c368bb11316a6c4846f5a303dcc7e6eea7bea9757bf WHIRLPOOL 5e5ee63d760209a57eb1ae256737e5981cd8be0efcff2c6688feab1a8047439939cceada3f6a53f261297646136fd252b7eec80ad510797df2104e32a60f9480
+AUX XI18N_OBJS 345 SHA256 c1eac96607a5ab14568bd19b0dc491c7906e670f711cd2fb4a82a3238cd566db SHA512 a3228a749dc254533d999ef5a639d7f7605a31eb47079b03807ca5b46a323316f320e81e724fca4f1b7ae897fbda491a83774bbc7e6a38890c247d21fda4cf73 WHIRLPOOL 2958946d211cdee0672343d6e55e948674f0290c02cf1e3649933d9525d245580c9a15ba6d4cc28b8d787d288d5409e73fd789db560047b7c3ea195809e342c1
+AUX XLC_LOCALE 2192 SHA256 8a0cd290e998c1271b14077efe5e2cf658fefcdf275075c37f76c2aa13273f81 SHA512 165ba31197634ee936c9a9abe45746359d750cdcf616d2840180a7f9657bfa6b761600af097952414180274f18563e1513d911314f9ee4b58a1fbec8185086ad WHIRLPOOL f1901887450f0da604a638df551bd8a562c14ae07eb82bb45b2c58afa8a94bf6e7fc72094a71cd92c415c3074ef26d4d9b60d89d2921969ea73b2bf0eb3f3f32
+AUX gtkrc.ru_RU.utf-8 802 SHA256 beba20356855dc38422d9b889f5e19b952b764fe19b7c8a2c18fdf8eee2935b3 SHA512 341b754827698481caa408db32f2338061415ea72c243c383c41016e286cb5290901566fe4c1c7f128849c39058681a12638878563a5e4d14dccbf3c6e22aad1 WHIRLPOOL 32c5f71d5f2e473d481e36042f73e0db53b163a708b5932e9673e8ddd060906943c6ddba03a402550d3fcaac743bf229bdaca1ff14f3f87a9f834baff80b41c9
+EBUILD gtk1-utf8-1.0.ebuild 1255 SHA256 a6876e8e1b19df7d383a43eba8249502342c00ee706dd30f6aa077b8cefa1556 SHA512 7d3ddd2d0e686e353241082899a5a4c60c2cf70bda6eeca603542cd2560ebfc842fd4e6c77c3e4630c04e22426c65fba787c685ec0e0d85efa073f28eac07e8c WHIRLPOOL 49d5a7c59b1faf9f4dde38f6f2b197c53d4e1976a5a30e27ce8de2ee4a951f727bdad7fd43f30dacd9342913bb51c35c4593648f86e885d46adfb465d1e5ee3d
+EBUILD gtk1-utf8-1.1.ebuild 1267 SHA256 acefad5c192257c177354bfa53fd1cb11e1a151e87ddbac00cfa2a65cc9be813 SHA512 6423c8c491306b8b5f1bec44d1abc26192cb932a3b6a5267f4735d20d17bb0bb00304ee58b07d4ea88280ccda1d3e889534ba919a22b56689a36270e51e02cfd WHIRLPOOL 0962c285746cbddcbe2b5a79a0678c3ef2fc8545d5dde0d869d84aeae1fe173c173c9f3bf8e4bc35e4ec7dea0efa12a45bc239aed2e15f30409108a14f294b3f
+EBUILD gtk1-utf8-1.2.ebuild 1751 SHA256 ed989a6efe5018adaf3be2e8887d83bed87961a4b8daa9643dd083bf8957e9af SHA512 8a9f87cfaf046959269e304f64d400fa999edd3c867c8be994b89cb4cd8e552c1c035d787c66f3b96813074e9d4747f4554cf8e27dabfae768ceee04207ef251 WHIRLPOOL cc5c23bedcf5f392775f85028647012628b80caebde65e081f8ad4175a08ac5061c230b1132aa2c6757178d079a05a11c27399e66019b59885bab68fcfd2e566
diff --git a/app-i18n/gtk1-utf8/files/Compose b/app-i18n/gtk1-utf8/files/Compose
new file mode 100644
index 0000000..8344c0f
--- /dev/null
+++ b/app-i18n/gtk1-utf8/files/Compose
@@ -0,0 +1,5600 @@
+# UTF-8 (Unicode) compose sequence
+# David.Monniaux@ens.fr
+#
+# $XFree86: xc/nls/Compose/en_US.UTF-8,v 1.11 2004/01/06 13:14:04 pascal Exp $
+
+# Part 1 - Manual definitions
+
+# Spacing versions of dead accents
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <dead_acute> : "´" acute
+<dead_grave> <space> : "`" grave
+<dead_grave> <dead_grave> : "`" grave
+<dead_circumflex> <space> : "^" asciicircum
+<dead_circumflex> <dead_circumflex> : "^" asciicircum
+<dead_abovering> <space> : "°" degree
+<dead_abovering> <dead_abovering> : "°" degree
+<dead_macron> <space> : "¯" macron
+<dead_macron> <dead_macron> : "¯" macron
+<dead_breve> <space> : "˘" breve
+<dead_breve> <dead_breve> : "˘" breve
+<dead_abovedot> <space> : "Ë™" abovedot
+<dead_abovedot> <dead_abovedot> : "Ë™" abovedot
+<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
+<dead_diaeresis> <space> : "\"" quotedbl
+<dead_doubleacute> <space> : "Ë" U2dd
+<dead_doubleacute> <dead_doubleacute> : "Ë" U2dd
+<dead_caron> <space> : "ˇ" caron
+<dead_caron> <dead_caron> : "ˇ" caron
+<dead_cedilla> <space> : "¸" cedilla
+<dead_cedilla> <dead_cedilla> : "¸" cedilla
+<dead_ogonek> <dead_space> : "Ë›" ogonek
+<dead_ogonek> <dead_ogonek> : "Ë›" ogonek
+<dead_iota> <dead_space> : "ͺ" U37a
+<dead_iota> <dead_iota> : "ͺ" U37a
+
+# ASCII characters that may be difficult to access
+# on some keyboards.
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+
+<Multi_key> <comma> <space> : "¸" cedilla
+<Multi_key> <space> <comma> : "¸" cedilla
+
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+# Spaces
+<Multi_key> <space> <space> : " " nobreakspace # NO-BREAK SPACE
+<Multi_key> <space> <period>: " " U2008 # PUNCTUATION SPACE
+
+<Multi_key> <o> <c> : "©" copyright
+<Multi_key> <o> <C> : "©" copyright
+<Multi_key> <O> <c> : "©" copyright
+<Multi_key> <O> <C> : "©" copyright
+
+<Multi_key> <o> <r> : "®" registered
+<Multi_key> <o> <R> : "®" registered
+<Multi_key> <O> <r> : "®" registered
+<Multi_key> <O> <R> : "®" registered
+
+<Multi_key> <period> <greater> : "›" U203a
+<Multi_key> <period> <less> : "‹" U2039
+<Multi_key> <period> <period> : "·" U00B7
+<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
+<Multi_key> <exclam> <exclam> : "¡" exclamdown
+<Multi_key> <p> <exclam> : "¶" paragraph
+<Multi_key> <P> <exclam> : "¶" paragraph
+<Multi_key> <plus> <minus> : "±" plusminus
+<Multi_key> <question> <question> : "¿" questiondown
+<Multi_key> <minus> <d> : "Ä‘" dstroke
+<Multi_key> <minus> <D> : "Ä" Dstroke
+<Multi_key> <s> <s> : "ß" ssharp
+
+<Multi_key> <o> <e> : "Å“" oe
+<Multi_key> <O> <E> : "Å’" OE
+<Multi_key> <a> <e> : "æ" ae
+<Multi_key> <A> <E> : "Æ" AE
+
+<Multi_key> <o> <o> : "°" degree # ^0 already taken
+
+# Quotation marks
+<Multi_key> <quotedbl> <backslash> : "ã€" U301d # REVERSED DOUBLE PRIME QUOTATION MARK
+<Multi_key> <quotedbl> <slash> : "〞" U301e # DOUBLE PRIME QUOTATION MARK
+<Multi_key> <less> <less> : "«" guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<Multi_key> <greater> <greater> : "»" guillemotright # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<Multi_key> <less> <apostrophe> : "‘" U2018 # LEFT SINGLE QUOTATION MARK
+<Multi_key> <apostrophe> <less> : "‘" U2018 # LEFT SINGLE QUOTATION MARK
+<Multi_key> <greater> <apostrophe> : "’" U2019 # RIGHT SINGLE QUOTATION MARK
+<Multi_key> <apostrophe> <greater> : "’" U2019 # RIGHT SINGLE QUOTATION MARK
+<Multi_key> <comma> <apostrophe> : "‚" U201a # SINGLE LOW-9 QUOTATION MARK
+<Multi_key> <apostrophe> <comma> : "‚" U201a # SINGLE LOW-9 QUOTATION MARK
+<Multi_key> <less> <quotedbl> : "“" U201c # LEFT DOUBLE QUOTATION MARK
+<Multi_key> <quotedbl> <less> : "“" U201c # LEFT DOUBLE QUOTATION MARK
+<Multi_key> <greater> <quotedbl> : "â€" U201d # RIGHT DOUBLE QUOTATION MARK
+<Multi_key> <quotedbl> <greater> : "â€" U201d # RIGHT DOUBLE QUOTATION MARK
+<Multi_key> <comma> <quotedbl> : "„" U201e # DOUBLE LOW-9 QUOTATION MARK
+<Multi_key> <quotedbl> <comma> : "„" U201e # DOUBLE LOW-9 QUOTATION MARK
+
+# Per xxx
+<Multi_key> <percent> <o> : "‰" U2030 # PER MILLE SIGN
+
+# Currencies
+<Multi_key> <C> <E> : "â‚ " U20a0 # EURO-CURRENCY SIGN
+<Multi_key> <C> <slash> : "â‚¡" U20a1 # COLON SIGN
+<Multi_key> <slash> <C> : "â‚¡" U20a1 # COLON SIGN
+<Multi_key> <C> <r> : "â‚¢" U20a2 # CRUZEIRO SIGN
+<Multi_key> <F> <r> : "â‚£" U20a3 # FRENCH FRANC SIGN
+<Multi_key> <L> <equal> : "₤" U20a4 # LIRA SIGN
+<Multi_key> <equal> <L> : "₤" U20a4 # LIRA SIGN
+<Multi_key> <m> <slash> : "â‚¥" U20a5 # MILL SIGN
+<Multi_key> <slash> <m> : "â‚¥" U20a5 # MILL SIGN
+<Multi_key> <N> <equal> : "₦" U20a6 # NAIRA SIGN
+<Multi_key> <equal> <N> : "₦" U20a6 # NAIRA SIGN
+<Multi_key> <P> <t> : "₧" U20a7 # PESETA SIGN
+<Multi_key> <R> <s> : "₨" U20a8 # RUPEE SIGN
+<Multi_key> <W> <equal> : "â‚©" U20a9 # WON SIGN
+<Multi_key> <equal> <W> : "â‚©" U20a9 # WON SIGN
+# "₪" U20aa NEW SHEQEL SIGN
+<Multi_key> <d> <minus> : "â‚«" U20ab # DONG SIGN
+<Multi_key> <C> <equal> : "€" EuroSign # EURO SIGN
+<Multi_key> <equal> <C> : "€" EuroSign # EURO SIGN
+<Multi_key> <c> <equal> : "€" EuroSign # EURO SIGN
+<Multi_key> <equal> <c> : "€" EuroSign # EURO SIGN
+<Multi_key> <E> <equal> : "€" EuroSign # EURO SIGN
+<Multi_key> <equal> <E> : "€" EuroSign # EURO SIGN
+
+<Multi_key> <bar> <c> : "¢" U00A2 # CENT SIGN
+<Multi_key> <bar> <C> : "¢" U00A2 # CENT SIGN
+<Multi_key> <c> <bar> : "¢" U00A2 # CENT SIGN
+<Multi_key> <C> <bar> : "¢" U00A2 # CENT SIGN
+<Multi_key> <c> <slash> : "¢" U00A2 # CENT SIGN
+<Multi_key> <C> <slash> : "¢" U00A2 # CENT SIGN
+<Multi_key> <slash> <c> : "¢" U00A2 # CENT SIGN
+<Multi_key> <slash> <C> : "¢" U00A2 # CENT SIGN
+<Multi_key> <L> <minus> : "£" U00a3 # POUND SIGN
+<Multi_key> <minus> <L> : "£" U00a3 # POUND SIGN
+<Multi_key> <Y> <equal> : "Â¥" yen
+<Multi_key> <equal><Y> : "Â¥" yen
+
+# Long S
+<Multi_key> <f> <s> : "Å¿" U017f # LONG S
+<Multi_key> <f> <S> : "Å¿" U017f # LONG S
+
+# Dashes
+<Multi_key> <minus> <minus> <period> : "–" U2013 # EN DASH
+<Multi_key> <minus> <minus> <minus> : "—" U2014 # EM DASH
+
+# Musical alterations
+<Multi_key> <numbersign> <b> : "â™­" U266d # MUSIC FLAT SIGN
+<Multi_key> <numbersign> <f> : "â™®" U266e # MUSIC NATURAL SIGN
+<Multi_key> <numbersign> <numbersign> : "♯" U266f # MUSIC SHARP SIGN
+
+# Other symbols
+<Multi_key> <s> <o> : "§" section # SECTION SIGN
+<Multi_key> <o> <s> : "§" section # SECTION SIGN
+
+<Multi_key> <o> <x> : "¤" currency
+<Multi_key> <x> <o> : "¤" currency
+
+<Multi_key> <P> <P> : "¶" paragraph # PILCROW SIGN (PARAGRAPH SIGN)
+
+# Part 2
+
+# Compose map for Korean Hangul(Choseongul) Conjoining Jamos automatically
+# generated from UnicodeData-2.0.14.txt at
+# ftp://ftp.unicode.org/Public/2.0-Update/UnicodeData-2.0.14.txt
+# by Jungshik Shin <jshin@jshin.net> 2002-10-17
+# There are some conflicts among sequences, but I left them alone.
+#
+# group 1: cluster jamos made of three basic jamos
+
+ <Multi_key> <U1107> <U1109> <U1100> : "ᄢ" U1122 # ᄇᅠ ᄉᅠ ᄀᅠ = ᄢᅠ
+ <Multi_key> <U1107> <U1109> <U1103> : "ᄣ" U1123 # ᄇᅠ ᄉᅠ ᄃᅠ = ᄣᅠ
+ <Multi_key> <U1107> <U1109> <U1107> : "ᄤ" U1124 # ᄇᅠ ᄉᅠ ᄇᅠ = ᄤᅠ
+ <Multi_key> <U1107> <U1109> <U1109> : "ᄥ" U1125 # ᄇᅠ ᄉᅠ ᄉᅠ = ᄥᅠ
+ <Multi_key> <U1107> <U1109> <U110c> : "ᄦ" U1126 # ᄇᅠ ᄉᅠ ᄌᅠ = ᄦᅠ
+ <Multi_key> <U1107> <U1107> <U110b> : "ᄬ" U112c # ᄇᅠ ᄇᅠ ᄋᅠ = ᄬᅠ
+ <Multi_key> <U1109> <U1107> <U1100> : "ᄳ" U1133 # ᄉᅠ ᄇᅠ ᄀᅠ = ᄳᅠ
+ <Multi_key> <U1109> <U1109> <U1109> : "ᄴ" U1134 # ᄉᅠ ᄉᅠ ᄉᅠ = ᄴᅠ
+ <Multi_key> <U1169> <U1161> <U1175> : "á…«" U116b # á…Ÿá…© á…Ÿá…¡ á…Ÿá…µ = á…Ÿá…«
+ <Multi_key> <U116e> <U1165> <U1175> : "á…°" U1170 # á…Ÿá…® á…Ÿá…¥ á…Ÿá…µ = á…Ÿá…°
+ <Multi_key> <U116e> <U1165> <U1173> : "ᆋ" U118b # ᅟᅮ ᅟᅥ ᅟᅳ = ᅟᆋ
+ <Multi_key> <U11a8> <U11ba> <U11a8> : "ᇄ" U11c4 # ᅟᅠᆨ ᅟᅠᆺ ᅟᅠᆨ = ᅟᅠᇄ
+ <Multi_key> <U11af> <U11a8> <U11ba> : "ᇌ" U11cc # ᅟᅠᆯ ᅟᅠᆨ ᅟᅠᆺ = ᅟᅠᇌ
+ <Multi_key> <U11af> <U11ae> <U11c2> : "á‡" U11cf # ᅟᅠᆯ ᅟᅠᆮ ᅟᅠᇂ = á…Ÿá… á‡
+ <Multi_key> <U11af> <U11b7> <U11a8> : "ᇑ" U11d1 # ᅟᅠᆯ ᅟᅠᆷ ᅟᅠᆨ = ᅟᅠᇑ
+ <Multi_key> <U11af> <U11b7> <U11ba> : "ᇒ" U11d2 # ᅟᅠᆯ ᅟᅠᆷ ᅟᅠᆺ = ᅟᅠᇒ
+ <Multi_key> <U11af> <U11b8> <U11ba> : "ᇓ" U11d3 # ᅟᅠᆯ ᅟᅠᆸ ᅟᅠᆺ = ᅟᅠᇓ
+ <Multi_key> <U11af> <U11b8> <U11c2> : "ᇔ" U11d4 # ᅟᅠᆯ ᅟᅠᆸ ᅟᅠᇂ = ᅟᅠᇔ
+ <Multi_key> <U11af> <U11b8> <U11bc> : "ᇕ" U11d5 # ᅟᅠᆯ ᅟᅠᆸ ᅟᅠᆼ = ᅟᅠᇕ
+ <Multi_key> <U11af> <U11ba> <U11ba> : "ᇖ" U11d6 # ᅟᅠᆯ ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᇖ
+ <Multi_key> <U11b7> <U11ba> <U11ba> : "ᇞ" U11de # ᅟᅠᆷ ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᇞ
+ <Multi_key> <U11bc> <U11a8> <U11a8> : "ᇭ" U11ed # ᅟᅠᆼ ᅟᅠᆨ ᅟᅠᆨ = ᅟᅠᇭ
+ <Multi_key> <U1100> <U1100> : "á„" U1101 # ᄀᅠ ᄀᅠ = á„á… 
+ <Multi_key> <U1103> <U1103> : "ᄄ" U1104 # ᄃᅠ ᄃᅠ = ᄄᅠ
+ <Multi_key> <U1107> <U1107> : "ᄈ" U1108 # ᄇᅠ ᄇᅠ = ᄈᅠ
+ <Multi_key> <U1109> <U1109> : "ᄊ" U110a # ᄉᅠ ᄉᅠ = ᄊᅠ
+ <Multi_key> <U110c> <U110c> : "á„" U110d # ᄌᅠ ᄌᅠ = á„á… 
+ <Multi_key> <U1102> <U1100> : "ᄓ" U1113 # ᄂᅠ ᄀᅠ = ᄓᅠ
+ <Multi_key> <U1102> <U1102> : "ᄔ" U1114 # ᄂᅠ ᄂᅠ = ᄔᅠ
+ <Multi_key> <U1102> <U1103> : "ᄕ" U1115 # ᄂᅠ ᄃᅠ = ᄕᅠ
+ <Multi_key> <U1102> <U1107> : "ᄖ" U1116 # ᄂᅠ ᄇᅠ = ᄖᅠ
+ <Multi_key> <U1103> <U1100> : "ᄗ" U1117 # ᄃᅠ ᄀᅠ = ᄗᅠ
+ <Multi_key> <U1105> <U1102> : "ᄘ" U1118 # ᄅᅠ ᄂᅠ = ᄘᅠ
+ <Multi_key> <U1105> <U1105> : "ᄙ" U1119 # ᄅᅠ ᄅᅠ = ᄙᅠ
+ <Multi_key> <U1105> <U1112> : "á„š" U111a # á„…á…  á„’á…  = á„šá… 
+ <Multi_key> <U1105> <U110b> : "ᄛ" U111b # ᄅᅠ ᄋᅠ = ᄛᅠ
+ <Multi_key> <U1106> <U1107> : "ᄜ" U111c # ᄆᅠ ᄇᅠ = ᄜᅠ
+ <Multi_key> <U1106> <U110b> : "á„" U111d # ᄆᅠ á„‹á…  = á„á… 
+ <Multi_key> <U1107> <U1100> : "ᄞ" U111e # ᄇᅠ ᄀᅠ = ᄞᅠ
+ <Multi_key> <U1107> <U1102> : "ᄟ" U111f # ᄇᅠ ᄂᅠ = ᄟᅠ
+ <Multi_key> <U1107> <U1103> : "ᄠ" U1120 # ᄇᅠ ᄃᅠ = ᄠᅠ
+ <Multi_key> <U1107> <U1109> : "ᄡ" U1121 # ᄇᅠ ᄉᅠ = ᄡᅠ
+ <Multi_key> <U1107> <U110c> : "ᄧ" U1127 # ᄇᅠ ᄌᅠ = ᄧᅠ
+ <Multi_key> <U1107> <U110e> : "ᄨ" U1128 # ᄇᅠ ᄎᅠ = ᄨᅠ
+ <Multi_key> <U1107> <U1110> : "á„©" U1129 # ᄇᅠ á„á…  = á„©á… 
+ <Multi_key> <U1107> <U1111> : "ᄪ" U112a # ᄇᅠ ᄑᅠ = ᄪᅠ
+ <Multi_key> <U1107> <U110b> : "ᄫ" U112b # ᄇᅠ ᄋᅠ = ᄫᅠ
+ <Multi_key> <U1109> <U1100> : "ᄭ" U112d # ᄉᅠ ᄀᅠ = ᄭᅠ
+ <Multi_key> <U1109> <U1102> : "ᄮ" U112e # ᄉᅠ ᄂᅠ = ᄮᅠ
+ <Multi_key> <U1109> <U1103> : "ᄯ" U112f # ᄉᅠ ᄃᅠ = ᄯᅠ
+ <Multi_key> <U1109> <U1105> : "ᄰ" U1130 # ᄉᅠ ᄅᅠ = ᄰᅠ
+ <Multi_key> <U1109> <U1106> : "ᄱ" U1131 # ᄉᅠ ᄆᅠ = ᄱᅠ
+ <Multi_key> <U1109> <U1107> : "ᄲ" U1132 # ᄉᅠ ᄇᅠ = ᄲᅠ
+ <Multi_key> <U1109> <U110b> : "ᄵ" U1135 # ᄉᅠ ᄋᅠ = ᄵᅠ
+ <Multi_key> <U1109> <U110c> : "ᄶ" U1136 # ᄉᅠ ᄌᅠ = ᄶᅠ
+ <Multi_key> <U1109> <U110e> : "ᄷ" U1137 # ᄉᅠ ᄎᅠ = ᄷᅠ
+ <Multi_key> <U1109> <U110f> : "ᄸ" U1138 # ᄉᅠ á„á…  = ᄸᅠ
+ <Multi_key> <U1109> <U1110> : "ᄹ" U1139 # ᄉᅠ á„á…  = ᄹᅠ
+ <Multi_key> <U1109> <U1111> : "ᄺ" U113a # ᄉᅠ ᄑᅠ = ᄺᅠ
+ <Multi_key> <U1109> <U1112> : "ᄻ" U113b # ᄉᅠ ᄒᅠ = ᄻᅠ
+ <Multi_key> <U113c> <U113c> : "ᄽ" U113d # ᄼᅠ ᄼᅠ = ᄽᅠ
+ <Multi_key> <U113e> <U113e> : "ᄿ" U113f # ᄾᅠ ᄾᅠ = ᄿᅠ
+ <Multi_key> <U110b> <U1100> : "á…" U1141 # á„‹á…  ᄀᅠ = á…á… 
+ <Multi_key> <U110b> <U1103> : "ᅂ" U1142 # ᄋᅠ ᄃᅠ = ᅂᅠ
+ <Multi_key> <U110b> <U1106> : "ᅃ" U1143 # ᄋᅠ ᄆᅠ = ᅃᅠ
+ <Multi_key> <U110b> <U1107> : "ᅄ" U1144 # ᄋᅠ ᄇᅠ = ᅄᅠ
+ <Multi_key> <U110b> <U1109> : "ᅅ" U1145 # ᄋᅠ ᄉᅠ = ᅅᅠ
+ <Multi_key> <U110b> <U1140> : "ᅆ" U1146 # ᄋᅠ ᅀᅠ = ᅆᅠ
+ <Multi_key> <U110b> <U110b> : "ᅇ" U1147 # ᄋᅠ ᄋᅠ = ᅇᅠ
+ <Multi_key> <U110b> <U110c> : "ᅈ" U1148 # ᄋᅠ ᄌᅠ = ᅈᅠ
+ <Multi_key> <U110b> <U110e> : "ᅉ" U1149 # ᄋᅠ ᄎᅠ = ᅉᅠ
+ <Multi_key> <U110b> <U1110> : "á…Š" U114a # á„‹á…  á„á…  = á…Šá… 
+ <Multi_key> <U110b> <U1111> : "á…‹" U114b # á„‹á…  á„‘á…  = á…‹á… 
+ <Multi_key> <U110c> <U110b> : "á…" U114d # ᄌᅠ á„‹á…  = á…á… 
+ <Multi_key> <U114e> <U114e> : "á…" U114f # á…Žá…  á…Žá…  = á…á… 
+ <Multi_key> <U1150> <U1150> : "á…‘" U1151 # á…á…  á…á…  = á…‘á… 
+ <Multi_key> <U110e> <U110f> : "á…’" U1152 # á„Žá…  á„á…  = á…’á… 
+ <Multi_key> <U110e> <U1112> : "á…“" U1153 # á„Žá…  á„’á…  = á…“á… 
+ <Multi_key> <U1111> <U1107> : "ᅖ" U1156 # ᄑᅠ ᄇᅠ = ᅖᅠ
+ <Multi_key> <U1111> <U110b> : "á…—" U1157 # á„‘á…  á„‹á…  = á…—á… 
+ <Multi_key> <U1112> <U1112> : "ᅘ" U1158 # ᄒᅠ ᄒᅠ = ᅘᅠ
+ <Multi_key> <U1161> <U1175> : "á…¢" U1162 # á…Ÿá…¡ á…Ÿá…µ = á…Ÿá…¢
+ <Multi_key> <U1163> <U1175> : "á…¤" U1164 # á…Ÿá…£ á…Ÿá…µ = á…Ÿá…¤
+ <Multi_key> <U1165> <U1175> : "á…¦" U1166 # á…Ÿá…¥ á…Ÿá…µ = á…Ÿá…¦
+ <Multi_key> <U1167> <U1175> : "á…¨" U1168 # á…Ÿá…§ á…Ÿá…µ = á…Ÿá…¨
+ <Multi_key> <U1169> <U1161> : "á…ª" U116a # á…Ÿá…© á…Ÿá…¡ = á…Ÿá…ª
+ <Multi_key> <U1169> <U1175> : "á…¬" U116c # á…Ÿá…© á…Ÿá…µ = á…Ÿá…¬
+ <Multi_key> <U116e> <U1165> : "á…¯" U116f # á…Ÿá…® á…Ÿá…¥ = á…Ÿá…¯
+ <Multi_key> <U116e> <U1175> : "á…±" U1171 # á…Ÿá…® á…Ÿá…µ = á…Ÿá…±
+ <Multi_key> <U1173> <U1175> : "á…´" U1174 # á…Ÿá…³ á…Ÿá…µ = á…Ÿá…´
+ <Multi_key> <U1161> <U1169> : "á…¶" U1176 # á…Ÿá…¡ á…Ÿá…© = á…Ÿá…¶
+ <Multi_key> <U1161> <U116e> : "á…·" U1177 # á…Ÿá…¡ á…Ÿá…® = á…Ÿá…·
+ <Multi_key> <U1163> <U1169> : "á…¸" U1178 # á…Ÿá…£ á…Ÿá…© = á…Ÿá…¸
+ <Multi_key> <U1163> <U116d> : "á…¹" U1179 # á…Ÿá…£ á…Ÿá…­ = á…Ÿá…¹
+ <Multi_key> <U1165> <U1169> : "á…º" U117a # á…Ÿá…¥ á…Ÿá…© = á…Ÿá…º
+ <Multi_key> <U1165> <U116e> : "á…»" U117b # á…Ÿá…¥ á…Ÿá…® = á…Ÿá…»
+ <Multi_key> <U1165> <U1173> : "á…¼" U117c # á…Ÿá…¥ á…Ÿá…³ = á…Ÿá…¼
+ <Multi_key> <U1167> <U1169> : "á…½" U117d # á…Ÿá…§ á…Ÿá…© = á…Ÿá…½
+ <Multi_key> <U1167> <U116e> : "á…¾" U117e # á…Ÿá…§ á…Ÿá…® = á…Ÿá…¾
+ <Multi_key> <U1169> <U1165> : "á…¿" U117f # á…Ÿá…© á…Ÿá…¥ = á…Ÿá…¿
+ <Multi_key> <U1169> <U1166> : "ᆀ" U1180 # ᅟᅩ ᅟᅦ = ᅟᆀ
+ <Multi_key> <U1169> <U1168> : "á†" U1181 # á…Ÿá…© á…Ÿá…¨ = á…Ÿá†
+ <Multi_key> <U1169> <U1169> : "ᆂ" U1182 # ᅟᅩ ᅟᅩ = ᅟᆂ
+ <Multi_key> <U1169> <U116e> : "ᆃ" U1183 # ᅟᅩ ᅟᅮ = ᅟᆃ
+ <Multi_key> <U116d> <U1163> : "ᆄ" U1184 # ᅟᅭ ᅟᅣ = ᅟᆄ
+ <Multi_key> <U116d> <U1164> : "ᆅ" U1185 # ᅟᅭ ᅟᅤ = ᅟᆅ
+ <Multi_key> <U116d> <U1167> : "ᆆ" U1186 # ᅟᅭ ᅟᅧ = ᅟᆆ
+ <Multi_key> <U116d> <U1169> : "ᆇ" U1187 # ᅟᅭ ᅟᅩ = ᅟᆇ
+ <Multi_key> <U116d> <U1175> : "ᆈ" U1188 # ᅟᅭ ᅟᅵ = ᅟᆈ
+ <Multi_key> <U116e> <U1161> : "ᆉ" U1189 # ᅟᅮ ᅟᅡ = ᅟᆉ
+ <Multi_key> <U116e> <U1162> : "ᆊ" U118a # ᅟᅮ ᅟᅢ = ᅟᆊ
+ <Multi_key> <U116e> <U1168> : "ᆌ" U118c # ᅟᅮ ᅟᅨ = ᅟᆌ
+ <Multi_key> <U116e> <U116e> : "á†" U118d # á…Ÿá…® á…Ÿá…® = á…Ÿá†
+ <Multi_key> <U1172> <U1161> : "ᆎ" U118e # ᅟᅲ ᅟᅡ = ᅟᆎ
+ <Multi_key> <U1172> <U1165> : "á†" U118f # á…Ÿá…² á…Ÿá…¥ = á…Ÿá†
+ <Multi_key> <U1172> <U1166> : "á†" U1190 # á…Ÿá…² á…Ÿá…¦ = á…Ÿá†
+ <Multi_key> <U1172> <U1167> : "ᆑ" U1191 # ᅟᅲ ᅟᅧ = ᅟᆑ
+ <Multi_key> <U1172> <U1168> : "ᆒ" U1192 # ᅟᅲ ᅟᅨ = ᅟᆒ
+ <Multi_key> <U1172> <U116e> : "ᆓ" U1193 # ᅟᅲ ᅟᅮ = ᅟᆓ
+ <Multi_key> <U1172> <U1175> : "ᆔ" U1194 # ᅟᅲ ᅟᅵ = ᅟᆔ
+ <Multi_key> <U1173> <U116e> : "ᆕ" U1195 # ᅟᅳ ᅟᅮ = ᅟᆕ
+ <Multi_key> <U1173> <U1173> : "ᆖ" U1196 # ᅟᅳ ᅟᅳ = ᅟᆖ
+ <Multi_key> <U1174> <U116e> : "ᆗ" U1197 # ᅟᅴ ᅟᅮ = ᅟᆗ
+ <Multi_key> <U1175> <U1161> : "ᆘ" U1198 # ᅟᅵ ᅟᅡ = ᅟᆘ
+ <Multi_key> <U1175> <U1163> : "ᆙ" U1199 # ᅟᅵ ᅟᅣ = ᅟᆙ
+ <Multi_key> <U1175> <U1169> : "ᆚ" U119a # ᅟᅵ ᅟᅩ = ᅟᆚ
+ <Multi_key> <U1175> <U116e> : "ᆛ" U119b # ᅟᅵ ᅟᅮ = ᅟᆛ
+ <Multi_key> <U1175> <U1173> : "ᆜ" U119c # ᅟᅵ ᅟᅳ = ᅟᆜ
+ <Multi_key> <U1175> <U119e> : "á†" U119d # á…Ÿá…µ ᅟᆞ = á…Ÿá†
+ <Multi_key> <U119e> <U1165> : "ᆟ" U119f # ᅟᆞ ᅟᅥ = ᅟᆟ
+ <Multi_key> <U119e> <U116e> : "ᆠ" U11a0 # ᅟᆞ ᅟᅮ = ᅟᆠ
+ <Multi_key> <U119e> <U1175> : "ᆡ" U11a1 # ᅟᆞ ᅟᅵ = ᅟᆡ
+ <Multi_key> <U119e> <U119e> : "ᆢ" U11a2 # ᅟᆞ ᅟᆞ = ᅟᆢ
+ <Multi_key> <U11a8> <U11a8> : "ᆩ" U11a9 # ᅟᅠᆨ ᅟᅠᆨ = ᅟᅠᆩ
+ <Multi_key> <U11a8> <U11ba> : "ᆪ" U11aa # ᅟᅠᆨ ᅟᅠᆺ = ᅟᅠᆪ
+ <Multi_key> <U11ab> <U11bd> : "ᆬ" U11ac # ᅟᅠᆫ ᅟᅠᆽ = ᅟᅠᆬ
+ <Multi_key> <U11ab> <U11c2> : "ᆭ" U11ad # ᅟᅠᆫ ᅟᅠᇂ = ᅟᅠᆭ
+ <Multi_key> <U11af> <U11a8> : "ᆰ" U11b0 # ᅟᅠᆯ ᅟᅠᆨ = ᅟᅠᆰ
+ <Multi_key> <U11af> <U11b7> : "ᆱ" U11b1 # ᅟᅠᆯ ᅟᅠᆷ = ᅟᅠᆱ
+ <Multi_key> <U11af> <U11b8> : "ᆲ" U11b2 # ᅟᅠᆯ ᅟᅠᆸ = ᅟᅠᆲ
+ <Multi_key> <U11af> <U11ba> : "ᆳ" U11b3 # ᅟᅠᆯ ᅟᅠᆺ = ᅟᅠᆳ
+ <Multi_key> <U11af> <U11c0> : "ᆴ" U11b4 # ᅟᅠᆯ ᅟᅠᇀ = ᅟᅠᆴ
+ <Multi_key> <U11af> <U11c1> : "ᆵ" U11b5 # ᅟᅠᆯ ᅟᅠᇠ= ᅟᅠᆵ
+ <Multi_key> <U11af> <U11c2> : "ᆶ" U11b6 # ᅟᅠᆯ ᅟᅠᇂ = ᅟᅠᆶ
+ <Multi_key> <U11b8> <U11ba> : "ᆹ" U11b9 # ᅟᅠᆸ ᅟᅠᆺ = ᅟᅠᆹ
+ <Multi_key> <U11ba> <U11ba> : "ᆻ" U11bb # ᅟᅠᆺ ᅟᅠᆺ = ᅟᅠᆻ
+ <Multi_key> <U11a8> <U11af> : "ᇃ" U11c3 # ᅟᅠᆨ ᅟᅠᆯ = ᅟᅠᇃ
+ <Multi_key> <U11ab> <U11a8> : "ᇅ" U11c5 # ᅟᅠᆫ ᅟᅠᆨ = ᅟᅠᇅ
+ <Multi_key> <U11ab> <U11ae> : "ᇆ" U11c6 # ᅟᅠᆫ ᅟᅠᆮ = ᅟᅠᇆ
+ <Multi_key> <U11ab> <U11ba> : "ᇇ" U11c7 # ᅟᅠᆫ ᅟᅠᆺ = ᅟᅠᇇ
+ <Multi_key> <U11ab> <U11eb> : "ᇈ" U11c8 # ᅟᅠᆫ ᅟᅠᇫ = ᅟᅠᇈ
+ <Multi_key> <U11ab> <U11c0> : "ᇉ" U11c9 # ᅟᅠᆫ ᅟᅠᇀ = ᅟᅠᇉ
+ <Multi_key> <U11ae> <U11a8> : "ᇊ" U11ca # ᅟᅠᆮ ᅟᅠᆨ = ᅟᅠᇊ
+ <Multi_key> <U11ae> <U11af> : "ᇋ" U11cb # ᅟᅠᆮ ᅟᅠᆯ = ᅟᅠᇋ
+ <Multi_key> <U11af> <U11ab> : "á‡" U11cd # ᅟᅠᆯ ᅟᅠᆫ = á…Ÿá… á‡
+ <Multi_key> <U11af> <U11ae> : "ᇎ" U11ce # ᅟᅠᆯ ᅟᅠᆮ = ᅟᅠᇎ
+ <Multi_key> <U11af> <U11af> : "á‡" U11d0 # ᅟᅠᆯ ᅟᅠᆯ = á…Ÿá… á‡
+ <Multi_key> <U11af> <U11eb> : "ᇗ" U11d7 # ᅟᅠᆯ ᅟᅠᇫ = ᅟᅠᇗ
+ <Multi_key> <U11af> <U11bf> : "ᇘ" U11d8 # ᅟᅠᆯ ᅟᅠᆿ = ᅟᅠᇘ
+ <Multi_key> <U11af> <U11f9> : "ᇙ" U11d9 # ᅟᅠᆯ ᅟᅠᇹ = ᅟᅠᇙ
+ <Multi_key> <U11b7> <U11a8> : "ᇚ" U11da # ᅟᅠᆷ ᅟᅠᆨ = ᅟᅠᇚ
+ <Multi_key> <U11b7> <U11af> : "ᇛ" U11db # ᅟᅠᆷ ᅟᅠᆯ = ᅟᅠᇛ
+ <Multi_key> <U11b7> <U11b8> : "ᇜ" U11dc # ᅟᅠᆷ ᅟᅠᆸ = ᅟᅠᇜ
+ <Multi_key> <U11b7> <U11ba> : "á‡" U11dd # ᅟᅠᆷ ᅟᅠᆺ = á…Ÿá… á‡
+ <Multi_key> <U11b7> <U11eb> : "ᇟ" U11df # ᅟᅠᆷ ᅟᅠᇫ = ᅟᅠᇟ
+ <Multi_key> <U11b7> <U11be> : "ᇠ" U11e0 # ᅟᅠᆷ ᅟᅠᆾ = ᅟᅠᇠ
+ <Multi_key> <U11b7> <U11c2> : "ᇡ" U11e1 # ᅟᅠᆷ ᅟᅠᇂ = ᅟᅠᇡ
+ <Multi_key> <U11b7> <U11bc> : "ᇢ" U11e2 # ᅟᅠᆷ ᅟᅠᆼ = ᅟᅠᇢ
+ <Multi_key> <U11b8> <U11af> : "ᇣ" U11e3 # ᅟᅠᆸ ᅟᅠᆯ = ᅟᅠᇣ
+ <Multi_key> <U11b8> <U11c1> : "ᇤ" U11e4 # ᅟᅠᆸ ᅟᅠᇠ= ᅟᅠᇤ
+ <Multi_key> <U11b8> <U11c2> : "ᇥ" U11e5 # ᅟᅠᆸ ᅟᅠᇂ = ᅟᅠᇥ
+ <Multi_key> <U11b8> <U11bc> : "ᇦ" U11e6 # ᅟᅠᆸ ᅟᅠᆼ = ᅟᅠᇦ
+ <Multi_key> <U11ba> <U11a8> : "ᇧ" U11e7 # ᅟᅠᆺ ᅟᅠᆨ = ᅟᅠᇧ
+ <Multi_key> <U11ba> <U11ae> : "ᇨ" U11e8 # ᅟᅠᆺ ᅟᅠᆮ = ᅟᅠᇨ
+ <Multi_key> <U11ba> <U11af> : "ᇩ" U11e9 # ᅟᅠᆺ ᅟᅠᆯ = ᅟᅠᇩ
+ <Multi_key> <U11ba> <U11b8> : "ᇪ" U11ea # ᅟᅠᆺ ᅟᅠᆸ = ᅟᅠᇪ
+ <Multi_key> <U11bc> <U11a8> : "ᇬ" U11ec # ᅟᅠᆼ ᅟᅠᆨ = ᅟᅠᇬ
+ <Multi_key> <U11bc> <U11bc> : "ᇮ" U11ee # ᅟᅠᆼ ᅟᅠᆼ = ᅟᅠᇮ
+ <Multi_key> <U11bc> <U11bf> : "ᇯ" U11ef # ᅟᅠᆼ ᅟᅠᆿ = ᅟᅠᇯ
+ <Multi_key> <U11f0> <U11ba> : "ᇱ" U11f1 # ᅟᅠᇰ ᅟᅠᆺ = ᅟᅠᇱ
+ <Multi_key> <U11f0> <U11eb> : "ᇲ" U11f2 # ᅟᅠᇰ ᅟᅠᇫ = ᅟᅠᇲ
+ <Multi_key> <U11c1> <U11b8> : "ᇳ" U11f3 # ᅟᅠᇠᅟᅠᆸ = ᅟᅠᇳ
+ <Multi_key> <U11c1> <U11bc> : "ᇴ" U11f4 # ᅟᅠᇠᅟᅠᆼ = ᅟᅠᇴ
+ <Multi_key> <U11c2> <U11ab> : "ᇵ" U11f5 # ᅟᅠᇂ ᅟᅠᆫ = ᅟᅠᇵ
+ <Multi_key> <U11c2> <U11af> : "ᇶ" U11f6 # ᅟᅠᇂ ᅟᅠᆯ = ᅟᅠᇶ
+ <Multi_key> <U11c2> <U11b7> : "ᇷ" U11f7 # ᅟᅠᇂ ᅟᅠᆷ = ᅟᅠᇷ
+ <Multi_key> <U11c2> <U11b8> : "ᇸ" U11f8 # ᅟᅠᇂ ᅟᅠᆸ = ᅟᅠᇸ
+ <Multi_key> <U1121> <U1100> : "ᄢ" U1122 # ᄡᅠ ᄀᅠ = ᄢᅠ
+ <Multi_key> <U1121> <U1103> : "ᄣ" U1123 # ᄡᅠ ᄃᅠ = ᄣᅠ
+ <Multi_key> <U1121> <U1107> : "ᄤ" U1124 # ᄡᅠ ᄇᅠ = ᄤᅠ
+ <Multi_key> <U1121> <U1109> : "ᄥ" U1125 # ᄡᅠ ᄉᅠ = ᄥᅠ
+ <Multi_key> <U1121> <U110c> : "ᄦ" U1126 # ᄡᅠ ᄌᅠ = ᄦᅠ
+ <Multi_key> <U1108> <U110b> : "ᄬ" U112c # ᄈᅠ ᄋᅠ = ᄬᅠ
+ <Multi_key> <U1132> <U1100> : "ᄳ" U1133 # ᄲᅠ ᄀᅠ = ᄳᅠ
+ <Multi_key> <U110a> <U1109> : "ᄴ" U1134 # ᄊᅠ ᄉᅠ = ᄴᅠ
+ <Multi_key> <U116a> <U1175> : "á…«" U116b # á…Ÿá…ª á…Ÿá…µ = á…Ÿá…«
+ <Multi_key> <U116f> <U1175> : "á…°" U1170 # á…Ÿá…¯ á…Ÿá…µ = á…Ÿá…°
+ <Multi_key> <U116f> <U1173> : "ᆋ" U118b # ᅟᅯ ᅟᅳ = ᅟᆋ
+ <Multi_key> <U11aa> <U11a8> : "ᇄ" U11c4 # ᅟᅠᆪ ᅟᅠᆨ = ᅟᅠᇄ
+ <Multi_key> <U11b0> <U11ba> : "ᇌ" U11cc # ᅟᅠᆰ ᅟᅠᆺ = ᅟᅠᇌ
+ <Multi_key> <U11ce> <U11c2> : "á‡" U11cf # ᅟᅠᇎ ᅟᅠᇂ = á…Ÿá… á‡
+ <Multi_key> <U11b1> <U11a8> : "ᇑ" U11d1 # ᅟᅠᆱ ᅟᅠᆨ = ᅟᅠᇑ
+ <Multi_key> <U11b1> <U11ba> : "ᇒ" U11d2 # ᅟᅠᆱ ᅟᅠᆺ = ᅟᅠᇒ
+ <Multi_key> <U11b2> <U11ba> : "ᇓ" U11d3 # ᅟᅠᆲ ᅟᅠᆺ = ᅟᅠᇓ
+ <Multi_key> <U11b2> <U11c2> : "ᇔ" U11d4 # ᅟᅠᆲ ᅟᅠᇂ = ᅟᅠᇔ
+ <Multi_key> <U11b2> <U11bc> : "ᇕ" U11d5 # ᅟᅠᆲ ᅟᅠᆼ = ᅟᅠᇕ
+ <Multi_key> <U11b3> <U11ba> : "ᇖ" U11d6 # ᅟᅠᆳ ᅟᅠᆺ = ᅟᅠᇖ
+ <Multi_key> <U11dd> <U11ba> : "ᇞ" U11de # ᅟᅠᇠᅟᅠᆺ = ᅟᅠᇞ
+ <Multi_key> <U11ec> <U11a8> : "ᇭ" U11ed # ᅟᅠᇬ ᅟᅠᆨ = ᅟᅠᇭ
+ <Multi_key> <U1107> <U112d> : "ᄢ" U1122 # ᄇᅠ ᄭᅠ = ᄢᅠ
+ <Multi_key> <U1107> <U112f> : "ᄣ" U1123 # ᄇᅠ ᄯᅠ = ᄣᅠ
+ <Multi_key> <U1107> <U1132> : "ᄤ" U1124 # ᄇᅠ ᄲᅠ = ᄤᅠ
+ <Multi_key> <U1107> <U110a> : "ᄥ" U1125 # ᄇᅠ ᄊᅠ = ᄥᅠ
+ <Multi_key> <U1107> <U1136> : "ᄦ" U1126 # ᄇᅠ ᄶᅠ = ᄦᅠ
+ <Multi_key> <U1107> <U112b> : "ᄬ" U112c # ᄇᅠ ᄫᅠ = ᄬᅠ
+ <Multi_key> <U1109> <U111e> : "ᄳ" U1133 # ᄉᅠ ᄞᅠ = ᄳᅠ
+ <Multi_key> <U1109> <U110a> : "ᄴ" U1134 # ᄉᅠ ᄊᅠ = ᄴᅠ
+ <Multi_key> <U1169> <U1162> : "á…«" U116b # á…Ÿá…© á…Ÿá…¢ = á…Ÿá…«
+ <Multi_key> <U116e> <U1166> : "á…°" U1170 # á…Ÿá…® á…Ÿá…¦ = á…Ÿá…°
+ <Multi_key> <U116e> <U117c> : "ᆋ" U118b # ᅟᅮ ᅟᅼ = ᅟᆋ
+ <Multi_key> <U11a8> <U11e7> : "ᇄ" U11c4 # ᅟᅠᆨ ᅟᅠᇧ = ᅟᅠᇄ
+ <Multi_key> <U11af> <U11aa> : "ᇌ" U11cc # ᅟᅠᆯ ᅟᅠᆪ = ᅟᅠᇌ
+ <Multi_key> <U11af> <U11da> : "ᇑ" U11d1 # ᅟᅠᆯ ᅟᅠᇚ = ᅟᅠᇑ
+ <Multi_key> <U11af> <U11dd> : "ᇒ" U11d2 # ᅟᅠᆯ ᅟᅠᇠ= ᅟᅠᇒ
+ <Multi_key> <U11af> <U11b9> : "ᇓ" U11d3 # ᅟᅠᆯ ᅟᅠᆹ = ᅟᅠᇓ
+ <Multi_key> <U11af> <U11e5> : "ᇔ" U11d4 # ᅟᅠᆯ ᅟᅠᇥ = ᅟᅠᇔ
+ <Multi_key> <U11af> <U11e6> : "ᇕ" U11d5 # ᅟᅠᆯ ᅟᅠᇦ = ᅟᅠᇕ
+ <Multi_key> <U11af> <U11bb> : "ᇖ" U11d6 # ᅟᅠᆯ ᅟᅠᆻ = ᅟᅠᇖ
+ <Multi_key> <U11b7> <U11bb> : "ᇞ" U11de # ᅟᅠᆷ ᅟᅠᆻ = ᅟᅠᇞ
+ <Multi_key> <U11bc> <U11a9> : "ᇭ" U11ed # ᅟᅠᆼ ᅟᅠᆩ = ᅟᅠᇭ
+
+<Multi_key> <comma> <minus> : "¬" U00AC # NOT SIGN
+<Multi_key> <minus> <comma> : "¬" U00AC # NOT SIGN
+<dead_circumflex> <Multi_key> <underscore> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underscore> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<dead_circumflex> <Multi_key> <underbar> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underbar> <a> : "ª" U00AA # FEMININE ORDINAL INDICATOR
+<dead_circumflex> <2> : "²" U00B2 # SUPERSCRIPT TWO
+<Multi_key> <asciicircum> <2> : "²" U00B2 # SUPERSCRIPT TWO
+<dead_circumflex> <KP_Space> : "²" U00B2 # SUPERSCRIPT TWO
+<Multi_key> <asciicircum> <KP_Space> : "²" U00B2 # SUPERSCRIPT TWO
+<dead_circumflex> <KP_2> : "²" U00B2 # SUPERSCRIPT TWO
+<Multi_key> <asciicircum> <KP_2> : "²" U00B2 # SUPERSCRIPT TWO
+<dead_circumflex> <3> : "³" U00B3 # SUPERSCRIPT THREE
+<Multi_key> <asciicircum> <3> : "³" U00B3 # SUPERSCRIPT THREE
+<dead_circumflex> <KP_3> : "³" U00B3 # SUPERSCRIPT THREE
+<Multi_key> <asciicircum> <KP_3> : "³" U00B3 # SUPERSCRIPT THREE
+<Multi_key> <m> <u> : "µ" U00B5 # MICRO SIGN
+<dead_circumflex> <1> : "¹" U00B9 # SUPERSCRIPT ONE
+<Multi_key> <asciicircum> <1> : "¹" U00B9 # SUPERSCRIPT ONE
+<dead_circumflex> <KP_1> : "¹" U00B9 # SUPERSCRIPT ONE
+<Multi_key> <asciicircum> <KP_1> : "¹" U00B9 # SUPERSCRIPT ONE
+<dead_circumflex> <Multi_key> <underscore> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underscore> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<dead_circumflex> <Multi_key> <underbar> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<Multi_key> <asciicircum> <underbar> <o> : "º" U00BA # MASCULINE ORDINAL INDICATOR
+<Multi_key> <1> <4> : "¼" U00BC # VULGAR FRACTION ONE QUARTER
+<Multi_key> <1> <2> : "½" U00BD # VULGAR FRACTION ONE HALF
+<Multi_key> <3> <4> : "¾" U00BE # VULGAR FRACTION THREE QUARTERS
+<dead_grave> <A> : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+<Multi_key> <grave> <A> : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+<combining_grave> <A> : "À" U00C0 # LATIN CAPITAL LETTER A WITH GRAVE
+<dead_acute> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<Multi_key> <acute> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<Multi_key> <apostrophe> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<combining_acute> <A> : "Ã" U00C1 # LATIN CAPITAL LETTER A WITH ACUTE
+<dead_circumflex> <A> : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <A> : "Â" U00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<dead_tilde> <A> : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE
+<Multi_key> <asciitilde> <A> : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE
+<combining_tilde> <A> : "Ã" U00C3 # LATIN CAPITAL LETTER A WITH TILDE
+<dead_diaeresis> <A> : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <A> : "Ä" U00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
+<dead_abovering> <A> : "Ã…" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+<Multi_key> <o> <A> : "Ã…" U00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
+<dead_cedilla> <C> : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+<Multi_key> <comma> <C> : "Ç" U00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
+<dead_grave> <E> : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+<Multi_key> <grave> <E> : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+<combining_grave> <E> : "È" U00C8 # LATIN CAPITAL LETTER E WITH GRAVE
+<dead_acute> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<Multi_key> <acute> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<Multi_key> <apostrophe> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<combining_acute> <E> : "É" U00C9 # LATIN CAPITAL LETTER E WITH ACUTE
+<dead_circumflex> <E> : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <E> : "Ê" U00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<dead_diaeresis> <E> : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <E> : "Ë" U00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
+<dead_grave> <I> : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE
+<Multi_key> <grave> <I> : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE
+<combining_grave> <I> : "Ì" U00CC # LATIN CAPITAL LETTER I WITH GRAVE
+<dead_acute> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<Multi_key> <acute> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<Multi_key> <apostrophe> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<combining_acute> <I> : "Ã" U00CD # LATIN CAPITAL LETTER I WITH ACUTE
+<dead_circumflex> <I> : "ÃŽ" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <I> : "ÃŽ" U00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<dead_diaeresis> <I> : "Ã" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <I> : "Ã" U00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
+<Multi_key> <D> <H> : "Ã" U00D0 # LATIN CAPITAL LETTER ETH
+<dead_tilde> <N> : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE
+<Multi_key> <asciitilde> <N> : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE
+<combining_tilde> <N> : "Ñ" U00D1 # LATIN CAPITAL LETTER N WITH TILDE
+<dead_grave> <O> : "Ã’" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+<Multi_key> <grave> <O> : "Ã’" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+<combining_grave> <O> : "Ã’" U00D2 # LATIN CAPITAL LETTER O WITH GRAVE
+<dead_acute> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<Multi_key> <acute> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<Multi_key> <apostrophe> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<combining_acute> <O> : "Ó" U00D3 # LATIN CAPITAL LETTER O WITH ACUTE
+<dead_circumflex> <O> : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <O> : "Ô" U00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<dead_tilde> <O> : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE
+<Multi_key> <asciitilde> <O> : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE
+<combining_tilde> <O> : "Õ" U00D5 # LATIN CAPITAL LETTER O WITH TILDE
+<dead_diaeresis> <O> : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <O> : "Ö" U00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
+<Multi_key> <x> <x> : "×" U00D7 # MULTIPLICATION SIGN
+<Multi_key> <slash> <O> : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE
+<Multi_key> <KP_Divide> <O> : "Ø" U00D8 # LATIN CAPITAL LETTER O WITH STROKE
+<dead_grave> <U> : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+<Multi_key> <grave> <U> : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+<combining_grave> <U> : "Ù" U00D9 # LATIN CAPITAL LETTER U WITH GRAVE
+<dead_acute> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<Multi_key> <acute> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<Multi_key> <apostrophe> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<combining_acute> <U> : "Ú" U00DA # LATIN CAPITAL LETTER U WITH ACUTE
+<dead_circumflex> <U> : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <U> : "Û" U00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<dead_diaeresis> <U> : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <U> : "Ü" U00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
+<dead_acute> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<Multi_key> <acute> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<Multi_key> <apostrophe> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<combining_acute> <Y> : "Ã" U00DD # LATIN CAPITAL LETTER Y WITH ACUTE
+<Multi_key> <T> <H> : "Þ" U00DE # LATIN CAPITAL LETTER THORN
+<dead_grave> <a> : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE
+<Multi_key> <grave> <a> : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE
+<combining_grave> <a> : "à" U00E0 # LATIN SMALL LETTER A WITH GRAVE
+<dead_acute> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<Multi_key> <acute> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<Multi_key> <apostrophe> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<combining_acute> <a> : "á" U00E1 # LATIN SMALL LETTER A WITH ACUTE
+<dead_circumflex> <a> : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <a> : "â" U00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
+<dead_tilde> <a> : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE
+<Multi_key> <asciitilde> <a> : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE
+<combining_tilde> <a> : "ã" U00E3 # LATIN SMALL LETTER A WITH TILDE
+<dead_diaeresis> <a> : "ä" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <a> : "ä" U00E4 # LATIN SMALL LETTER A WITH DIAERESIS
+<dead_abovering> <a> : "Ã¥" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+<Multi_key> <o> <a> : "Ã¥" U00E5 # LATIN SMALL LETTER A WITH RING ABOVE
+<dead_cedilla> <c> : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA
+<Multi_key> <comma> <c> : "ç" U00E7 # LATIN SMALL LETTER C WITH CEDILLA
+<dead_grave> <e> : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE
+<Multi_key> <grave> <e> : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE
+<combining_grave> <e> : "è" U00E8 # LATIN SMALL LETTER E WITH GRAVE
+<dead_acute> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<Multi_key> <acute> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<Multi_key> <apostrophe> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<combining_acute> <e> : "é" U00E9 # LATIN SMALL LETTER E WITH ACUTE
+<dead_circumflex> <e> : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <e> : "ê" U00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
+<dead_diaeresis> <e> : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <e> : "ë" U00EB # LATIN SMALL LETTER E WITH DIAERESIS
+<dead_grave> <i> : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE
+<Multi_key> <grave> <i> : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE
+<combining_grave> <i> : "ì" U00EC # LATIN SMALL LETTER I WITH GRAVE
+<dead_acute> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<Multi_key> <acute> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<Multi_key> <apostrophe> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<combining_acute> <i> : "í" U00ED # LATIN SMALL LETTER I WITH ACUTE
+<dead_circumflex> <i> : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <i> : "î" U00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
+<dead_diaeresis> <i> : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <i> : "ï" U00EF # LATIN SMALL LETTER I WITH DIAERESIS
+<Multi_key> <d> <h> : "ð" U00F0 # LATIN SMALL LETTER ETH
+<dead_tilde> <n> : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE
+<Multi_key> <asciitilde> <n> : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE
+<combining_tilde> <n> : "ñ" U00F1 # LATIN SMALL LETTER N WITH TILDE
+<dead_grave> <o> : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE
+<Multi_key> <grave> <o> : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE
+<combining_grave> <o> : "ò" U00F2 # LATIN SMALL LETTER O WITH GRAVE
+<dead_acute> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<Multi_key> <acute> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<Multi_key> <apostrophe> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<combining_acute> <o> : "ó" U00F3 # LATIN SMALL LETTER O WITH ACUTE
+<dead_circumflex> <o> : "ô" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <o> : "ô" U00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
+<dead_tilde> <o> : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE
+<Multi_key> <asciitilde> <o> : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE
+<combining_tilde> <o> : "õ" U00F5 # LATIN SMALL LETTER O WITH TILDE
+<dead_diaeresis> <o> : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <o> : "ö" U00F6 # LATIN SMALL LETTER O WITH DIAERESIS
+<Multi_key> <colon> <minus> : "÷" U00F7 # DIVISION SIGN
+<Multi_key> <minus> <colon> : "÷" U00F7 # DIVISION SIGN
+<Multi_key> <slash> <o> : "ø" U00F8 # LATIN SMALL LETTER O WITH STROKE
+<Multi_key> <KP_Divide> <o> : "ø" U00F8 # LATIN SMALL LETTER O WITH STROKE
+<dead_grave> <u> : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE
+<Multi_key> <grave> <u> : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE
+<combining_grave> <u> : "ù" U00F9 # LATIN SMALL LETTER U WITH GRAVE
+<dead_acute> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<Multi_key> <acute> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<Multi_key> <apostrophe> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<combining_acute> <u> : "ú" U00FA # LATIN SMALL LETTER U WITH ACUTE
+<dead_circumflex> <u> : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <u> : "û" U00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
+<dead_diaeresis> <u> : "ü" U00FC # LATIN SMALL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <u> : "ü" U00FC # LATIN SMALL LETTER U WITH DIAERESIS
+<dead_acute> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<Multi_key> <acute> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<Multi_key> <apostrophe> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<combining_acute> <y> : "ý" U00FD # LATIN SMALL LETTER Y WITH ACUTE
+<Multi_key> <t> <h> : "þ" U00FE # LATIN SMALL LETTER THORN
+<dead_diaeresis> <y> : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+<Multi_key> <quotedbl> <y> : "ÿ" U00FF # LATIN SMALL LETTER Y WITH DIAERESIS
+<dead_macron> <A> : "Ä€" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<Multi_key> <macron> <A> : "Ä€" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<Multi_key> <underscore> <A> : "Ä€" U0100 # LATIN CAPITAL LETTER A WITH MACRON
+<dead_macron> <a> : "Ä" U0101 # LATIN SMALL LETTER A WITH MACRON
+<Multi_key> <macron> <a> : "Ä" U0101 # LATIN SMALL LETTER A WITH MACRON
+<Multi_key> <underscore> <a> : "Ä" U0101 # LATIN SMALL LETTER A WITH MACRON
+<dead_breve> <A> : "Ä‚" U0102 # LATIN CAPITAL LETTER A WITH BREVE
+<Multi_key> <U> <A> : "Ä‚" U0102 # LATIN CAPITAL LETTER A WITH BREVE
+<Multi_key> <b> <A> : "Ä‚" U0102 # LATIN CAPITAL LETTER A WITH BREVE
+<dead_breve> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE
+<Multi_key> <U> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE
+<Multi_key> <b> <a> : "ă" U0103 # LATIN SMALL LETTER A WITH BREVE
+<dead_ogonek> <A> : "Ä„" U0104 # LATIN CAPITAL LETTER A WITH OGONEK
+<Multi_key> <semicolon> <A> : "Ä„" U0104 # LATIN CAPITAL LETTER A WITH OGONEK
+<dead_ogonek> <a> : "Ä…" U0105 # LATIN SMALL LETTER A WITH OGONEK
+<Multi_key> <semicolon> <a> : "Ä…" U0105 # LATIN SMALL LETTER A WITH OGONEK
+<dead_acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<Multi_key> <acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<Multi_key> <apostrophe> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<combining_acute> <C> : "Ć" U0106 # LATIN CAPITAL LETTER C WITH ACUTE
+<dead_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<Multi_key> <acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<Multi_key> <apostrophe> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<combining_acute> <c> : "ć" U0107 # LATIN SMALL LETTER C WITH ACUTE
+<dead_circumflex> <C> : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <C> : "Ĉ" U0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+<dead_circumflex> <c> : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <c> : "ĉ" U0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
+<dead_abovedot> <C> : "ÄŠ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
+<Multi_key> <period> <C> : "ÄŠ" U010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
+<dead_abovedot> <c> : "Ä‹" U010B # LATIN SMALL LETTER C WITH DOT ABOVE
+<Multi_key> <period> <c> : "Ä‹" U010B # LATIN SMALL LETTER C WITH DOT ABOVE
+<dead_caron> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON
+<Multi_key> <c> <C> : "Č" U010C # LATIN CAPITAL LETTER C WITH CARON
+<dead_caron> <c> : "Ä" U010D # LATIN SMALL LETTER C WITH CARON
+<Multi_key> <c> <c> : "Ä" U010D # LATIN SMALL LETTER C WITH CARON
+<dead_caron> <D> : "ÄŽ" U010E # LATIN CAPITAL LETTER D WITH CARON
+<Multi_key> <c> <D> : "ÄŽ" U010E # LATIN CAPITAL LETTER D WITH CARON
+<dead_caron> <d> : "Ä" U010F # LATIN SMALL LETTER D WITH CARON
+<Multi_key> <c> <d> : "Ä" U010F # LATIN SMALL LETTER D WITH CARON
+<Multi_key> <slash> <D> : "Ä" U0110 # LATIN CAPITAL LETTER D WITH STROKE
+<Multi_key> <KP_Divide> <D> : "Ä" U0110 # LATIN CAPITAL LETTER D WITH STROKE
+<Multi_key> <slash> <d> : "Ä‘" U0111 # LATIN SMALL LETTER D WITH STROKE
+<Multi_key> <KP_Divide> <d> : "Ä‘" U0111 # LATIN SMALL LETTER D WITH STROKE
+<dead_macron> <E> : "Ä’" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<Multi_key> <macron> <E> : "Ä’" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<Multi_key> <underscore> <E> : "Ä’" U0112 # LATIN CAPITAL LETTER E WITH MACRON
+<dead_macron> <e> : "Ä“" U0113 # LATIN SMALL LETTER E WITH MACRON
+<Multi_key> <macron> <e> : "Ä“" U0113 # LATIN SMALL LETTER E WITH MACRON
+<Multi_key> <underscore> <e> : "Ä“" U0113 # LATIN SMALL LETTER E WITH MACRON
+<dead_breve> <E> : "Ä”" U0114 # LATIN CAPITAL LETTER E WITH BREVE
+<Multi_key> <U> <E> : "Ä”" U0114 # LATIN CAPITAL LETTER E WITH BREVE
+<Multi_key> <b> <E> : "Ä”" U0114 # LATIN CAPITAL LETTER E WITH BREVE
+<dead_breve> <e> : "Ä•" U0115 # LATIN SMALL LETTER E WITH BREVE
+<Multi_key> <U> <e> : "Ä•" U0115 # LATIN SMALL LETTER E WITH BREVE
+<Multi_key> <b> <e> : "Ä•" U0115 # LATIN SMALL LETTER E WITH BREVE
+<dead_abovedot> <E> : "Ä–" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
+<Multi_key> <period> <E> : "Ä–" U0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
+<dead_abovedot> <e> : "Ä—" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE
+<Multi_key> <period> <e> : "Ä—" U0117 # LATIN SMALL LETTER E WITH DOT ABOVE
+<dead_ogonek> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK
+<Multi_key> <semicolon> <E> : "Ę" U0118 # LATIN CAPITAL LETTER E WITH OGONEK
+<dead_ogonek> <e> : "Ä™" U0119 # LATIN SMALL LETTER E WITH OGONEK
+<Multi_key> <semicolon> <e> : "Ä™" U0119 # LATIN SMALL LETTER E WITH OGONEK
+<dead_caron> <E> : "Äš" U011A # LATIN CAPITAL LETTER E WITH CARON
+<Multi_key> <c> <E> : "Äš" U011A # LATIN CAPITAL LETTER E WITH CARON
+<dead_caron> <e> : "Ä›" U011B # LATIN SMALL LETTER E WITH CARON
+<Multi_key> <c> <e> : "Ä›" U011B # LATIN SMALL LETTER E WITH CARON
+<dead_circumflex> <G> : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <G> : "Ĝ" U011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+<dead_circumflex> <g> : "Ä" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <g> : "Ä" U011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
+<dead_breve> <G> : "Äž" U011E # LATIN CAPITAL LETTER G WITH BREVE
+<Multi_key> <U> <G> : "Äž" U011E # LATIN CAPITAL LETTER G WITH BREVE
+<Multi_key> <b> <G> : "Äž" U011E # LATIN CAPITAL LETTER G WITH BREVE
+<dead_breve> <g> : "ÄŸ" U011F # LATIN SMALL LETTER G WITH BREVE
+<Multi_key> <U> <g> : "ÄŸ" U011F # LATIN SMALL LETTER G WITH BREVE
+<Multi_key> <b> <g> : "ÄŸ" U011F # LATIN SMALL LETTER G WITH BREVE
+<dead_abovedot> <G> : "Ä " U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
+<Multi_key> <period> <G> : "Ä " U0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
+<dead_abovedot> <g> : "Ä¡" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE
+<Multi_key> <period> <g> : "Ä¡" U0121 # LATIN SMALL LETTER G WITH DOT ABOVE
+<dead_cedilla> <G> : "Ä¢" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA
+<Multi_key> <comma> <G> : "Ä¢" U0122 # LATIN CAPITAL LETTER G WITH CEDILLA
+<dead_cedilla> <g> : "Ä£" U0123 # LATIN SMALL LETTER G WITH CEDILLA
+<Multi_key> <comma> <g> : "Ä£" U0123 # LATIN SMALL LETTER G WITH CEDILLA
+<dead_circumflex> <H> : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <H> : "Ĥ" U0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+<dead_circumflex> <h> : "Ä¥" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <h> : "Ä¥" U0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
+<Multi_key> <slash> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE
+<Multi_key> <KP_Divide> <H> : "Ħ" U0126 # LATIN CAPITAL LETTER H WITH STROKE
+<Multi_key> <slash> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE
+<Multi_key> <KP_Divide> <h> : "ħ" U0127 # LATIN SMALL LETTER H WITH STROKE
+<dead_tilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE
+<Multi_key> <asciitilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE
+<combining_tilde> <I> : "Ĩ" U0128 # LATIN CAPITAL LETTER I WITH TILDE
+<dead_tilde> <i> : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE
+<Multi_key> <asciitilde> <i> : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE
+<combining_tilde> <i> : "Ä©" U0129 # LATIN SMALL LETTER I WITH TILDE
+<dead_macron> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<Multi_key> <macron> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<Multi_key> <underscore> <I> : "Ī" U012A # LATIN CAPITAL LETTER I WITH MACRON
+<dead_macron> <i> : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON
+<Multi_key> <macron> <i> : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON
+<Multi_key> <underscore> <i> : "Ä«" U012B # LATIN SMALL LETTER I WITH MACRON
+<dead_breve> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE
+<Multi_key> <U> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE
+<Multi_key> <b> <I> : "Ĭ" U012C # LATIN CAPITAL LETTER I WITH BREVE
+<dead_breve> <i> : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE
+<Multi_key> <U> <i> : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE
+<Multi_key> <b> <i> : "Ä­" U012D # LATIN SMALL LETTER I WITH BREVE
+<dead_ogonek> <I> : "Ä®" U012E # LATIN CAPITAL LETTER I WITH OGONEK
+<Multi_key> <semicolon> <I> : "Ä®" U012E # LATIN CAPITAL LETTER I WITH OGONEK
+<dead_ogonek> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK
+<Multi_key> <semicolon> <i> : "į" U012F # LATIN SMALL LETTER I WITH OGONEK
+<dead_abovedot> <I> : "Ä°" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
+<Multi_key> <period> <I> : "Ä°" U0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
+<dead_abovedot> <i> : "ı" U0131 # LATIN SMALL LETTER DOTLESS I
+<Multi_key> <i> <period> : "ı" U0131 # LATIN SMALL LETTER DOTLESS I
+<dead_circumflex> <J> : "Ä´" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <J> : "Ä´" U0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+<dead_circumflex> <j> : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <j> : "ĵ" U0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
+<dead_cedilla> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA
+<Multi_key> <comma> <K> : "Ķ" U0136 # LATIN CAPITAL LETTER K WITH CEDILLA
+<dead_cedilla> <k> : "Ä·" U0137 # LATIN SMALL LETTER K WITH CEDILLA
+<Multi_key> <comma> <k> : "Ä·" U0137 # LATIN SMALL LETTER K WITH CEDILLA
+<Multi_key> <k> <k> : "ĸ" U0138 # LATIN SMALL LETTER KRA
+<dead_acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<Multi_key> <acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<Multi_key> <apostrophe> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<combining_acute> <L> : "Ĺ" U0139 # LATIN CAPITAL LETTER L WITH ACUTE
+<dead_acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<Multi_key> <acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<Multi_key> <apostrophe> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<combining_acute> <l> : "ĺ" U013A # LATIN SMALL LETTER L WITH ACUTE
+<dead_cedilla> <L> : "Ä»" U013B # LATIN CAPITAL LETTER L WITH CEDILLA
+<Multi_key> <comma> <L> : "Ä»" U013B # LATIN CAPITAL LETTER L WITH CEDILLA
+<dead_cedilla> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA
+<Multi_key> <comma> <l> : "ļ" U013C # LATIN SMALL LETTER L WITH CEDILLA
+<dead_caron> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON
+<Multi_key> <c> <L> : "Ľ" U013D # LATIN CAPITAL LETTER L WITH CARON
+<dead_caron> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON
+<Multi_key> <c> <l> : "ľ" U013E # LATIN SMALL LETTER L WITH CARON
+<Multi_key> <slash> <L> : "Å" U0141 # LATIN CAPITAL LETTER L WITH STROKE
+<Multi_key> <KP_Divide> <L> : "Å" U0141 # LATIN CAPITAL LETTER L WITH STROKE
+<Multi_key> <slash> <l> : "Å‚" U0142 # LATIN SMALL LETTER L WITH STROKE
+<Multi_key> <KP_Divide> <l> : "Å‚" U0142 # LATIN SMALL LETTER L WITH STROKE
+<dead_acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<Multi_key> <acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<Multi_key> <apostrophe> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<combining_acute> <N> : "Ń" U0143 # LATIN CAPITAL LETTER N WITH ACUTE
+<dead_acute> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<Multi_key> <acute> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<Multi_key> <apostrophe> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<combining_acute> <n> : "Å„" U0144 # LATIN SMALL LETTER N WITH ACUTE
+<dead_cedilla> <N> : "Å…" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA
+<Multi_key> <comma> <N> : "Å…" U0145 # LATIN CAPITAL LETTER N WITH CEDILLA
+<dead_cedilla> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA
+<Multi_key> <comma> <n> : "ņ" U0146 # LATIN SMALL LETTER N WITH CEDILLA
+<dead_caron> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON
+<Multi_key> <c> <N> : "Ň" U0147 # LATIN CAPITAL LETTER N WITH CARON
+<dead_caron> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON
+<Multi_key> <c> <n> : "ň" U0148 # LATIN SMALL LETTER N WITH CARON
+<Multi_key> <N> <G> : "ÅŠ" U014A # LATIN CAPITAL LETTER ENG
+<Multi_key> <n> <g> : "Å‹" U014B # LATIN SMALL LETTER ENG
+<dead_macron> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<Multi_key> <macron> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<Multi_key> <underscore> <O> : "Ō" U014C # LATIN CAPITAL LETTER O WITH MACRON
+<dead_macron> <o> : "Å" U014D # LATIN SMALL LETTER O WITH MACRON
+<Multi_key> <macron> <o> : "Å" U014D # LATIN SMALL LETTER O WITH MACRON
+<Multi_key> <underscore> <o> : "Å" U014D # LATIN SMALL LETTER O WITH MACRON
+<dead_breve> <O> : "ÅŽ" U014E # LATIN CAPITAL LETTER O WITH BREVE
+<Multi_key> <U> <O> : "ÅŽ" U014E # LATIN CAPITAL LETTER O WITH BREVE
+<Multi_key> <b> <O> : "ÅŽ" U014E # LATIN CAPITAL LETTER O WITH BREVE
+<dead_breve> <o> : "Å" U014F # LATIN SMALL LETTER O WITH BREVE
+<Multi_key> <U> <o> : "Å" U014F # LATIN SMALL LETTER O WITH BREVE
+<Multi_key> <b> <o> : "Å" U014F # LATIN SMALL LETTER O WITH BREVE
+<dead_doubleacute> <O> : "Å" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<Multi_key> <equal> <O> : "Å" U0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<dead_doubleacute> <o> : "Å‘" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<Multi_key> <equal> <o> : "Å‘" U0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<dead_acute> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<Multi_key> <acute> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<Multi_key> <apostrophe> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<combining_acute> <R> : "Å”" U0154 # LATIN CAPITAL LETTER R WITH ACUTE
+<dead_acute> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<Multi_key> <acute> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<Multi_key> <apostrophe> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<combining_acute> <r> : "Å•" U0155 # LATIN SMALL LETTER R WITH ACUTE
+<dead_cedilla> <R> : "Å–" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA
+<Multi_key> <comma> <R> : "Å–" U0156 # LATIN CAPITAL LETTER R WITH CEDILLA
+<dead_cedilla> <r> : "Å—" U0157 # LATIN SMALL LETTER R WITH CEDILLA
+<Multi_key> <comma> <r> : "Å—" U0157 # LATIN SMALL LETTER R WITH CEDILLA
+<dead_caron> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON
+<Multi_key> <c> <R> : "Ř" U0158 # LATIN CAPITAL LETTER R WITH CARON
+<dead_caron> <r> : "Å™" U0159 # LATIN SMALL LETTER R WITH CARON
+<Multi_key> <c> <r> : "Å™" U0159 # LATIN SMALL LETTER R WITH CARON
+<dead_acute> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<Multi_key> <acute> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<Multi_key> <apostrophe> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<combining_acute> <S> : "Åš" U015A # LATIN CAPITAL LETTER S WITH ACUTE
+<dead_acute> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<Multi_key> <acute> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<Multi_key> <apostrophe> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<combining_acute> <s> : "Å›" U015B # LATIN SMALL LETTER S WITH ACUTE
+<dead_circumflex> <S> : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <S> : "Ŝ" U015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+<dead_circumflex> <s> : "Å" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <s> : "Å" U015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
+<dead_cedilla> <S> : "Åž" U015E # LATIN CAPITAL LETTER S WITH CEDILLA
+<Multi_key> <comma> <S> : "Åž" U015E # LATIN CAPITAL LETTER S WITH CEDILLA
+<dead_cedilla> <s> : "ÅŸ" U015F # LATIN SMALL LETTER S WITH CEDILLA
+<Multi_key> <comma> <s> : "ÅŸ" U015F # LATIN SMALL LETTER S WITH CEDILLA
+<dead_caron> <S> : "Å " U0160 # LATIN CAPITAL LETTER S WITH CARON
+<Multi_key> <c> <S> : "Å " U0160 # LATIN CAPITAL LETTER S WITH CARON
+<dead_caron> <s> : "Å¡" U0161 # LATIN SMALL LETTER S WITH CARON
+<Multi_key> <c> <s> : "Å¡" U0161 # LATIN SMALL LETTER S WITH CARON
+<dead_cedilla> <T> : "Å¢" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA
+<Multi_key> <comma> <T> : "Å¢" U0162 # LATIN CAPITAL LETTER T WITH CEDILLA
+<dead_cedilla> <t> : "Å£" U0163 # LATIN SMALL LETTER T WITH CEDILLA
+<Multi_key> <comma> <t> : "Å£" U0163 # LATIN SMALL LETTER T WITH CEDILLA
+<dead_caron> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON
+<Multi_key> <c> <T> : "Ť" U0164 # LATIN CAPITAL LETTER T WITH CARON
+<dead_caron> <t> : "Å¥" U0165 # LATIN SMALL LETTER T WITH CARON
+<Multi_key> <c> <t> : "Å¥" U0165 # LATIN SMALL LETTER T WITH CARON
+<Multi_key> <slash> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE
+<Multi_key> <KP_Divide> <T> : "Ŧ" U0166 # LATIN CAPITAL LETTER T WITH STROKE
+<Multi_key> <slash> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE
+<Multi_key> <KP_Divide> <t> : "ŧ" U0167 # LATIN SMALL LETTER T WITH STROKE
+<dead_tilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE
+<Multi_key> <asciitilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE
+<combining_tilde> <U> : "Ũ" U0168 # LATIN CAPITAL LETTER U WITH TILDE
+<dead_tilde> <u> : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE
+<Multi_key> <asciitilde> <u> : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE
+<combining_tilde> <u> : "Å©" U0169 # LATIN SMALL LETTER U WITH TILDE
+<dead_macron> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<Multi_key> <macron> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<Multi_key> <underscore> <U> : "Ū" U016A # LATIN CAPITAL LETTER U WITH MACRON
+<dead_macron> <u> : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON
+<Multi_key> <macron> <u> : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON
+<Multi_key> <underscore> <u> : "Å«" U016B # LATIN SMALL LETTER U WITH MACRON
+<dead_breve> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE
+<Multi_key> <U> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE
+<Multi_key> <b> <U> : "Ŭ" U016C # LATIN CAPITAL LETTER U WITH BREVE
+<dead_breve> <u> : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE
+<Multi_key> <U> <u> : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE
+<Multi_key> <b> <u> : "Å­" U016D # LATIN SMALL LETTER U WITH BREVE
+<dead_abovering> <U> : "Å®" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE
+<Multi_key> <o> <U> : "Å®" U016E # LATIN CAPITAL LETTER U WITH RING ABOVE
+<dead_abovering> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE
+<Multi_key> <o> <u> : "ů" U016F # LATIN SMALL LETTER U WITH RING ABOVE
+<dead_doubleacute> <U> : "Å°" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <U> : "Å°" U0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<dead_doubleacute> <u> : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <u> : "ű" U0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<dead_ogonek> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK
+<Multi_key> <semicolon> <U> : "Ų" U0172 # LATIN CAPITAL LETTER U WITH OGONEK
+<dead_ogonek> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK
+<Multi_key> <semicolon> <u> : "ų" U0173 # LATIN SMALL LETTER U WITH OGONEK
+<dead_circumflex> <W> : "Å´" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <W> : "Å´" U0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+<dead_circumflex> <w> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <w> : "ŵ" U0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
+<dead_circumflex> <Y> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <Y> : "Ŷ" U0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+<dead_circumflex> <y> : "Å·" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <y> : "Å·" U0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+<dead_diaeresis> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+<Multi_key> <quotedbl> <Y> : "Ÿ" U0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
+<dead_acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<Multi_key> <acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<Multi_key> <apostrophe> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<combining_acute> <Z> : "Ź" U0179 # LATIN CAPITAL LETTER Z WITH ACUTE
+<dead_acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<Multi_key> <acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<Multi_key> <apostrophe> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<combining_acute> <z> : "ź" U017A # LATIN SMALL LETTER Z WITH ACUTE
+<dead_abovedot> <Z> : "Å»" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<Multi_key> <period> <Z> : "Å»" U017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<dead_abovedot> <z> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE
+<Multi_key> <period> <z> : "ż" U017C # LATIN SMALL LETTER Z WITH DOT ABOVE
+<dead_caron> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON
+<Multi_key> <c> <Z> : "Ž" U017D # LATIN CAPITAL LETTER Z WITH CARON
+<dead_caron> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON
+<Multi_key> <c> <z> : "ž" U017E # LATIN SMALL LETTER Z WITH CARON
+<Multi_key> <slash> <b> : "Æ€" U0180 # LATIN SMALL LETTER B WITH STROKE
+<Multi_key> <KP_Divide> <b> : "Æ€" U0180 # LATIN SMALL LETTER B WITH STROKE
+<Multi_key> <slash> <I> : "Æ—" U0197 # LATIN CAPITAL LETTER I WITH STROKE
+<Multi_key> <KP_Divide> <I> : "Æ—" U0197 # LATIN CAPITAL LETTER I WITH STROKE
+<dead_horn> <O> : "Æ " U01A0 # LATIN CAPITAL LETTER O WITH HORN
+<Multi_key> <plus> <O> : "Æ " U01A0 # LATIN CAPITAL LETTER O WITH HORN
+<dead_horn> <o> : "Æ¡" U01A1 # LATIN SMALL LETTER O WITH HORN
+<Multi_key> <plus> <o> : "Æ¡" U01A1 # LATIN SMALL LETTER O WITH HORN
+<dead_horn> <U> : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN
+<Multi_key> <plus> <U> : "Ư" U01AF # LATIN CAPITAL LETTER U WITH HORN
+<dead_horn> <u> : "Æ°" U01B0 # LATIN SMALL LETTER U WITH HORN
+<Multi_key> <plus> <u> : "Æ°" U01B0 # LATIN SMALL LETTER U WITH HORN
+<Multi_key> <slash> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE
+<Multi_key> <KP_Divide> <Z> : "Ƶ" U01B5 # LATIN CAPITAL LETTER Z WITH STROKE
+<Multi_key> <slash> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE
+<Multi_key> <KP_Divide> <z> : "ƶ" U01B6 # LATIN SMALL LETTER Z WITH STROKE
+<dead_caron> <A> : "Ç" U01CD # LATIN CAPITAL LETTER A WITH CARON
+<Multi_key> <c> <A> : "Ç" U01CD # LATIN CAPITAL LETTER A WITH CARON
+<dead_caron> <a> : "ÇŽ" U01CE # LATIN SMALL LETTER A WITH CARON
+<Multi_key> <c> <a> : "ÇŽ" U01CE # LATIN SMALL LETTER A WITH CARON
+<dead_caron> <I> : "Ç" U01CF # LATIN CAPITAL LETTER I WITH CARON
+<Multi_key> <c> <I> : "Ç" U01CF # LATIN CAPITAL LETTER I WITH CARON
+<dead_caron> <i> : "Ç" U01D0 # LATIN SMALL LETTER I WITH CARON
+<Multi_key> <c> <i> : "Ç" U01D0 # LATIN SMALL LETTER I WITH CARON
+<dead_caron> <O> : "Ç‘" U01D1 # LATIN CAPITAL LETTER O WITH CARON
+<Multi_key> <c> <O> : "Ç‘" U01D1 # LATIN CAPITAL LETTER O WITH CARON
+<dead_caron> <o> : "Ç’" U01D2 # LATIN SMALL LETTER O WITH CARON
+<Multi_key> <c> <o> : "Ç’" U01D2 # LATIN SMALL LETTER O WITH CARON
+<dead_caron> <U> : "Ç“" U01D3 # LATIN CAPITAL LETTER U WITH CARON
+<Multi_key> <c> <U> : "Ç“" U01D3 # LATIN CAPITAL LETTER U WITH CARON
+<dead_caron> <u> : "Ç”" U01D4 # LATIN SMALL LETTER U WITH CARON
+<Multi_key> <c> <u> : "Ç”" U01D4 # LATIN SMALL LETTER U WITH CARON
+<dead_macron> <Udiaeresis> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <Udiaeresis> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <Udiaeresis> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <U> : "Ç•" U01D5 # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <udiaeresis> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <udiaeresis> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <udiaeresis> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <u> : "Ç–" U01D6 # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+<dead_acute> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <Udiaeresis> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <U> : "Ç—" U01D7 # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <udiaeresis> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <u> : "ǘ" U01D8 # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+<dead_caron> <Udiaeresis> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <Udiaeresis> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <dead_diaeresis> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <Multi_key> <quotedbl> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <dead_diaeresis> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <quotedbl> <U> : "Ç™" U01D9 # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <udiaeresis> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <udiaeresis> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <dead_diaeresis> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<dead_caron> <Multi_key> <quotedbl> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <dead_diaeresis> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<Multi_key> <c> <quotedbl> <u> : "Çš" U01DA # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+<dead_grave> <Udiaeresis> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <Udiaeresis> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <dead_diaeresis> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <Multi_key> <quotedbl> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <dead_diaeresis> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <quotedbl> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <Udiaeresis> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <dead_diaeresis> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <Multi_key> <quotedbl> <U> : "Ç›" U01DB # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<dead_grave> <Multi_key> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<Multi_key> <grave> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <udiaeresis> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <dead_diaeresis> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<combining_grave> <Multi_key> <quotedbl> <u> : "ǜ" U01DC # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+<dead_macron> <Adiaeresis> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <Adiaeresis> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <Adiaeresis> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <A> : "Çž" U01DE # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <adiaeresis> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <adiaeresis> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <adiaeresis> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <a> : "ÇŸ" U01DF # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+<dead_macron> <U0226> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U0226> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U0226> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <A> : "Ç " U01E0 # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <U0227> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U0227> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U0227> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <a> : "Ç¡" U01E1 # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+<dead_macron> <AE> : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON
+<Multi_key> <macron> <AE> : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON
+<Multi_key> <underscore> <AE> : "Ç¢" U01E2 # LATIN CAPITAL LETTER AE WITH MACRON
+<dead_macron> <ae> : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON
+<Multi_key> <macron> <ae> : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON
+<Multi_key> <underscore> <ae> : "Ç£" U01E3 # LATIN SMALL LETTER AE WITH MACRON
+<Multi_key> <slash> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE
+<Multi_key> <KP_Divide> <G> : "Ǥ" U01E4 # LATIN CAPITAL LETTER G WITH STROKE
+<Multi_key> <slash> <g> : "Ç¥" U01E5 # LATIN SMALL LETTER G WITH STROKE
+<Multi_key> <KP_Divide> <g> : "Ç¥" U01E5 # LATIN SMALL LETTER G WITH STROKE
+<dead_caron> <G> : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON
+<Multi_key> <c> <G> : "Ǧ" U01E6 # LATIN CAPITAL LETTER G WITH CARON
+<dead_caron> <g> : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON
+<Multi_key> <c> <g> : "ǧ" U01E7 # LATIN SMALL LETTER G WITH CARON
+<dead_caron> <K> : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON
+<Multi_key> <c> <K> : "Ǩ" U01E8 # LATIN CAPITAL LETTER K WITH CARON
+<dead_caron> <k> : "Ç©" U01E9 # LATIN SMALL LETTER K WITH CARON
+<Multi_key> <c> <k> : "Ç©" U01E9 # LATIN SMALL LETTER K WITH CARON
+<dead_ogonek> <O> : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK
+<Multi_key> <semicolon> <O> : "Ǫ" U01EA # LATIN CAPITAL LETTER O WITH OGONEK
+<dead_ogonek> <o> : "Ç«" U01EB # LATIN SMALL LETTER O WITH OGONEK
+<Multi_key> <semicolon> <o> : "Ç«" U01EB # LATIN SMALL LETTER O WITH OGONEK
+<dead_macron> <U01ea> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <U01ea> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <U01ea> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <Multi_key> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <dead_ogonek> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <semicolon> <O> : "Ǭ" U01EC # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <U01eb> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <U01eb> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <U01eb> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <dead_ogonek> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<dead_macron> <Multi_key> <semicolon> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <dead_ogonek> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <macron> <semicolon> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <dead_ogonek> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<Multi_key> <underscore> <semicolon> <o> : "Ç­" U01ED # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+<dead_caron> <U01b7> : "Ç®" U01EE # LATIN CAPITAL LETTER EZH WITH CARON
+<Multi_key> <c> <U01b7> : "Ç®" U01EE # LATIN CAPITAL LETTER EZH WITH CARON
+<dead_caron> <U0292> : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON
+<Multi_key> <c> <U0292> : "ǯ" U01EF # LATIN SMALL LETTER EZH WITH CARON
+<dead_caron> <j> : "Ç°" U01F0 # LATIN SMALL LETTER J WITH CARON
+<Multi_key> <c> <j> : "Ç°" U01F0 # LATIN SMALL LETTER J WITH CARON
+<dead_acute> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<Multi_key> <acute> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<Multi_key> <apostrophe> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<combining_acute> <G> : "Ç´" U01F4 # LATIN CAPITAL LETTER G WITH ACUTE
+<dead_acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<Multi_key> <acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<Multi_key> <apostrophe> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<combining_acute> <g> : "ǵ" U01F5 # LATIN SMALL LETTER G WITH ACUTE
+<dead_grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE
+<Multi_key> <grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE
+<combining_grave> <N> : "Ǹ" U01F8 # LATIN CAPITAL LETTER N WITH GRAVE
+<dead_grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE
+<Multi_key> <grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE
+<combining_grave> <n> : "ǹ" U01F9 # LATIN SMALL LETTER N WITH GRAVE
+<dead_acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <Multi_key> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <o> <apostrophe> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <Aring> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <dead_abovering> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <Multi_key> <o> <A> : "Ǻ" U01FA # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <Multi_key> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <acute> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <apostrophe> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<Multi_key> <o> <apostrophe> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <aring> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <dead_abovering> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<combining_acute> <Multi_key> <o> <a> : "Ç»" U01FB # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+<dead_acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<Multi_key> <acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<Multi_key> <apostrophe> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<combining_acute> <AE> : "Ǽ" U01FC # LATIN CAPITAL LETTER AE WITH ACUTE
+<dead_acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<Multi_key> <acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<Multi_key> <apostrophe> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<combining_acute> <ae> : "ǽ" U01FD # LATIN SMALL LETTER AE WITH ACUTE
+<dead_acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Ooblique> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <slash> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <KP_Divide> <O> : "Ǿ" U01FE # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<dead_acute> <Multi_key> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <acute> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<Multi_key> <apostrophe> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <oslash> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <slash> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<combining_acute> <Multi_key> <KP_Divide> <o> : "Ç¿" U01FF # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+<U030f> <A> : "È€" U0200 # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+<U030f> <a> : "È" U0201 # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+<U0311> <A> : "È‚" U0202 # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+<U0311> <a> : "ȃ" U0203 # LATIN SMALL LETTER A WITH INVERTED BREVE
+<U030f> <E> : "È„" U0204 # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+<U030f> <e> : "È…" U0205 # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+<U0311> <E> : "Ȇ" U0206 # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+<U0311> <e> : "ȇ" U0207 # LATIN SMALL LETTER E WITH INVERTED BREVE
+<U030f> <I> : "Ȉ" U0208 # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+<U030f> <i> : "ȉ" U0209 # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+<U0311> <I> : "ÈŠ" U020A # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+<U0311> <i> : "È‹" U020B # LATIN SMALL LETTER I WITH INVERTED BREVE
+<U030f> <O> : "Ȍ" U020C # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+<U030f> <o> : "È" U020D # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+<U0311> <O> : "ÈŽ" U020E # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+<U0311> <o> : "È" U020F # LATIN SMALL LETTER O WITH INVERTED BREVE
+<U030f> <R> : "È" U0210 # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+<U030f> <r> : "È‘" U0211 # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+<U0311> <R> : "È’" U0212 # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+<U0311> <r> : "È“" U0213 # LATIN SMALL LETTER R WITH INVERTED BREVE
+<U030f> <U> : "È”" U0214 # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+<U030f> <u> : "È•" U0215 # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+<U0311> <U> : "È–" U0216 # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+<U0311> <u> : "È—" U0217 # LATIN SMALL LETTER U WITH INVERTED BREVE
+<U0326> <S> : "Ș" U0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
+<U0326> <s> : "È™" U0219 # LATIN SMALL LETTER S WITH COMMA BELOW
+<U0326> <T> : "Èš" U021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
+<U0326> <t> : "È›" U021B # LATIN SMALL LETTER T WITH COMMA BELOW
+<dead_caron> <H> : "Èž" U021E # LATIN CAPITAL LETTER H WITH CARON
+<Multi_key> <c> <H> : "Èž" U021E # LATIN CAPITAL LETTER H WITH CARON
+<dead_caron> <h> : "ÈŸ" U021F # LATIN SMALL LETTER H WITH CARON
+<Multi_key> <c> <h> : "ÈŸ" U021F # LATIN SMALL LETTER H WITH CARON
+<dead_abovedot> <A> : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE
+<Multi_key> <period> <A> : "Ȧ" U0226 # LATIN CAPITAL LETTER A WITH DOT ABOVE
+<dead_abovedot> <a> : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE
+<Multi_key> <period> <a> : "ȧ" U0227 # LATIN SMALL LETTER A WITH DOT ABOVE
+<dead_cedilla> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA
+<Multi_key> <comma> <E> : "Ȩ" U0228 # LATIN CAPITAL LETTER E WITH CEDILLA
+<dead_cedilla> <e> : "È©" U0229 # LATIN SMALL LETTER E WITH CEDILLA
+<Multi_key> <comma> <e> : "È©" U0229 # LATIN SMALL LETTER E WITH CEDILLA
+<dead_macron> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <Odiaeresis> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <O> : "Ȫ" U022A # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <odiaeresis> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <odiaeresis> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <odiaeresis> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <dead_diaeresis> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <Multi_key> <quotedbl> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <dead_diaeresis> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <macron> <quotedbl> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <dead_diaeresis> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<Multi_key> <underscore> <quotedbl> <o> : "È«" U022B # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+<dead_macron> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <Otilde> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <Multi_key> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <dead_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <asciitilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <combining_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <combining_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <combining_tilde> <O> : "Ȭ" U022C # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+<dead_macron> <otilde> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <otilde> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <otilde> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_macron> <dead_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_macron> <Multi_key> <asciitilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <dead_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <asciitilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <dead_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <asciitilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_macron> <combining_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <macron> <combining_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<Multi_key> <underscore> <combining_tilde> <o> : "È­" U022D # LATIN SMALL LETTER O WITH TILDE AND MACRON
+<dead_abovedot> <O> : "È®" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE
+<Multi_key> <period> <O> : "È®" U022E # LATIN CAPITAL LETTER O WITH DOT ABOVE
+<dead_abovedot> <o> : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE
+<Multi_key> <period> <o> : "ȯ" U022F # LATIN SMALL LETTER O WITH DOT ABOVE
+<dead_macron> <U022e> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U022e> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U022e> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <O> : "È°" U0230 # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <U022f> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <U022f> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <U022f> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <Multi_key> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <macron> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <dead_abovedot> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<Multi_key> <underscore> <period> <o> : "ȱ" U0231 # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+<dead_macron> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON
+<Multi_key> <macron> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON
+<Multi_key> <underscore> <Y> : "Ȳ" U0232 # LATIN CAPITAL LETTER Y WITH MACRON
+<dead_macron> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON
+<Multi_key> <macron> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON
+<Multi_key> <underscore> <y> : "ȳ" U0233 # LATIN SMALL LETTER Y WITH MACRON
+<Multi_key> <e> <e> : "É™" U0259 # LATIN SMALL LETTER SCHWA
+<Multi_key> <slash> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE
+<Multi_key> <KP_Divide> <i> : "ɨ" U0268 # LATIN SMALL LETTER I WITH STROKE
+<Multi_key> <slash> <U0294> : "Ê¡" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE
+<Multi_key> <KP_Divide> <U0294> : "Ê¡" U02A1 # LATIN LETTER GLOTTAL STOP WITH STROKE
+<dead_circumflex> <Multi_key> <underscore> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<Multi_key> <asciicircum> <underscore> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<dead_circumflex> <Multi_key> <underbar> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<Multi_key> <asciicircum> <underbar> <h> : "Ê°" U02B0 # MODIFIER LETTER SMALL H
+<dead_circumflex> <Multi_key> <underscore> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<Multi_key> <asciicircum> <underscore> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<dead_circumflex> <Multi_key> <underbar> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<Multi_key> <asciicircum> <underbar> <U0266> : "ʱ" U02B1 # MODIFIER LETTER SMALL H WITH HOOK
+<dead_circumflex> <Multi_key> <underscore> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<Multi_key> <asciicircum> <underscore> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<dead_circumflex> <Multi_key> <underbar> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<Multi_key> <asciicircum> <underbar> <j> : "ʲ" U02B2 # MODIFIER LETTER SMALL J
+<dead_circumflex> <Multi_key> <underscore> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<Multi_key> <asciicircum> <underscore> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<dead_circumflex> <Multi_key> <underbar> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<Multi_key> <asciicircum> <underbar> <r> : "ʳ" U02B3 # MODIFIER LETTER SMALL R
+<dead_circumflex> <Multi_key> <underscore> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<Multi_key> <asciicircum> <underscore> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<dead_circumflex> <Multi_key> <underbar> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<Multi_key> <asciicircum> <underbar> <U0279> : "Ê´" U02B4 # MODIFIER LETTER SMALL TURNED R
+<dead_circumflex> <Multi_key> <underscore> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<Multi_key> <asciicircum> <underscore> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<dead_circumflex> <Multi_key> <underbar> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<Multi_key> <asciicircum> <underbar> <U027b> : "ʵ" U02B5 # MODIFIER LETTER SMALL TURNED R WITH HOOK
+<dead_circumflex> <Multi_key> <underscore> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<Multi_key> <asciicircum> <underscore> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<dead_circumflex> <Multi_key> <underbar> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<Multi_key> <asciicircum> <underbar> <U0281> : "ʶ" U02B6 # MODIFIER LETTER SMALL CAPITAL INVERTED R
+<dead_circumflex> <Multi_key> <underscore> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<Multi_key> <asciicircum> <underscore> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<dead_circumflex> <Multi_key> <underbar> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<Multi_key> <asciicircum> <underbar> <w> : "Ê·" U02B7 # MODIFIER LETTER SMALL W
+<dead_circumflex> <Multi_key> <underscore> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<Multi_key> <asciicircum> <underscore> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<dead_circumflex> <Multi_key> <underbar> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<Multi_key> <asciicircum> <underbar> <y> : "ʸ" U02B8 # MODIFIER LETTER SMALL Y
+<dead_circumflex> <Multi_key> <underscore> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<Multi_key> <asciicircum> <underscore> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<dead_circumflex> <Multi_key> <underbar> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<Multi_key> <asciicircum> <underbar> <U0263> : "Ë " U02E0 # MODIFIER LETTER SMALL GAMMA
+<dead_circumflex> <Multi_key> <underscore> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<Multi_key> <asciicircum> <underscore> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<dead_circumflex> <Multi_key> <underbar> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<Multi_key> <asciicircum> <underbar> <l> : "Ë¡" U02E1 # MODIFIER LETTER SMALL L
+<dead_circumflex> <Multi_key> <underscore> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<Multi_key> <asciicircum> <underscore> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<dead_circumflex> <Multi_key> <underbar> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<Multi_key> <asciicircum> <underbar> <s> : "Ë¢" U02E2 # MODIFIER LETTER SMALL S
+<dead_circumflex> <Multi_key> <underscore> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<Multi_key> <asciicircum> <underscore> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<dead_circumflex> <Multi_key> <underbar> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<Multi_key> <asciicircum> <underbar> <x> : "Ë£" U02E3 # MODIFIER LETTER SMALL X
+<dead_circumflex> <Multi_key> <underscore> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<Multi_key> <asciicircum> <underscore> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<dead_circumflex> <Multi_key> <underbar> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<Multi_key> <asciicircum> <underbar> <U0295> : "ˤ" U02E4 # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+<dead_diaeresis> <acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<dead_diaeresis> <apostrophe> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <dead_acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <apostrophe> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <quotedbl> <combining_acute> : "Í„" U0344 # COMBINING GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <dead_acute> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <acute> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <apostrophe> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<Multi_key> <diaeresis> <combining_acute> : "Î…" U0385 # GREEK DIALYTIKA TONOS
+<dead_acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<Multi_key> <acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<combining_acute> <Greek_ALPHA> : "Ά" U0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
+<dead_acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<Multi_key> <acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<combining_acute> <Greek_EPSILON> : "Έ" U0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
+<dead_acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<Multi_key> <acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<Multi_key> <apostrophe> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<combining_acute> <Greek_ETA> : "Ή" U0389 # GREEK CAPITAL LETTER ETA WITH TONOS
+<dead_acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<Multi_key> <acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<combining_acute> <Greek_IOTA> : "Ί" U038A # GREEK CAPITAL LETTER IOTA WITH TONOS
+<dead_acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<Multi_key> <acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<Multi_key> <apostrophe> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<combining_acute> <Greek_OMICRON> : "Ό" U038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
+<dead_acute> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<Multi_key> <acute> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<combining_acute> <Greek_UPSILON> : "ÎŽ" U038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
+<dead_acute> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<Multi_key> <acute> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<combining_acute> <Greek_OMEGA> : "Î" U038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
+<dead_acute> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<dead_acute> <Multi_key> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<combining_acute> <Greek_iotadieresis> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<combining_acute> <dead_diaeresis> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<combining_acute> <Multi_key> <quotedbl> <Greek_iota> : "Î" U0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" U03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<dead_diaeresis> <Greek_UPSILON> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" U03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<dead_acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<Multi_key> <acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<Multi_key> <apostrophe> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<combining_acute> <Greek_alpha> : "ά" U03AC # GREEK SMALL LETTER ALPHA WITH TONOS
+<dead_acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<Multi_key> <acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<combining_acute> <Greek_epsilon> : "έ" U03AD # GREEK SMALL LETTER EPSILON WITH TONOS
+<dead_acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<Multi_key> <acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<Multi_key> <apostrophe> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<combining_acute> <Greek_eta> : "ή" U03AE # GREEK SMALL LETTER ETA WITH TONOS
+<dead_acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<Multi_key> <acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<Multi_key> <apostrophe> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<combining_acute> <Greek_iota> : "ί" U03AF # GREEK SMALL LETTER IOTA WITH TONOS
+<dead_acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<dead_acute> <Multi_key> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <acute> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<combining_acute> <Greek_upsilondieresis> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<combining_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<combining_acute> <Multi_key> <quotedbl> <Greek_upsilon> : "ΰ" U03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<dead_diaeresis> <Greek_iota> : "ÏŠ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" U03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<dead_diaeresis> <Greek_upsilon> : "Ï‹" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" U03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<dead_acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<Multi_key> <acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<Multi_key> <apostrophe> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<combining_acute> <Greek_omicron> : "ό" U03CC # GREEK SMALL LETTER OMICRON WITH TONOS
+<dead_acute> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<Multi_key> <acute> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<Multi_key> <apostrophe> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<combining_acute> <Greek_upsilon> : "Ï" U03CD # GREEK SMALL LETTER UPSILON WITH TONOS
+<dead_acute> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<Multi_key> <acute> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<combining_acute> <Greek_omega> : "ÏŽ" U03CE # GREEK SMALL LETTER OMEGA WITH TONOS
+<Multi_key> <acute> <U03d2> : "Ï“" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+<Multi_key> <apostrophe> <U03d2> : "Ï“" U03D3 # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+<Multi_key> <quotedbl> <U03d2> : "Ï”" U03D4 # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+<dead_grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+<Multi_key> <grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+<combining_grave> <Cyrillic_IE> : "Ѐ" U0400 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+<dead_diaeresis> <Cyrillic_IE> : "Ð" U0401 # CYRILLIC CAPITAL LETTER IO
+<Multi_key> <quotedbl> <Cyrillic_IE> : "Ð" U0401 # CYRILLIC CAPITAL LETTER IO
+<dead_acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<Multi_key> <acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<Multi_key> <apostrophe> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<combining_acute> <Cyrillic_GHE> : "Ѓ" U0403 # CYRILLIC CAPITAL LETTER GJE
+<dead_diaeresis> <Ukrainian_I> : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI
+<Multi_key> <quotedbl> <Ukrainian_I> : "Ї" U0407 # CYRILLIC CAPITAL LETTER YI
+<dead_acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<Multi_key> <acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<Multi_key> <apostrophe> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<combining_acute> <Cyrillic_KA> : "Ќ" U040C # CYRILLIC CAPITAL LETTER KJE
+<dead_grave> <Cyrillic_I> : "Ð" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE
+<Multi_key> <grave> <Cyrillic_I> : "Ð" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE
+<combining_grave> <Cyrillic_I> : "Ð" U040D # CYRILLIC CAPITAL LETTER I WITH GRAVE
+<dead_breve> <Cyrillic_U> : "ÐŽ" U040E # CYRILLIC CAPITAL LETTER SHORT U
+<Multi_key> <U> <Cyrillic_U> : "ÐŽ" U040E # CYRILLIC CAPITAL LETTER SHORT U
+<Multi_key> <b> <Cyrillic_U> : "ÐŽ" U040E # CYRILLIC CAPITAL LETTER SHORT U
+<dead_breve> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I
+<Multi_key> <U> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I
+<Multi_key> <b> <Cyrillic_I> : "Й" U0419 # CYRILLIC CAPITAL LETTER SHORT I
+<dead_breve> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I
+<Multi_key> <U> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I
+<Multi_key> <b> <Cyrillic_i> : "й" U0439 # CYRILLIC SMALL LETTER SHORT I
+<dead_grave> <Cyrillic_ie> : "Ñ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE
+<Multi_key> <grave> <Cyrillic_ie> : "Ñ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE
+<combining_grave> <Cyrillic_ie> : "Ñ" U0450 # CYRILLIC SMALL LETTER IE WITH GRAVE
+<dead_diaeresis> <Cyrillic_ie> : "Ñ‘" U0451 # CYRILLIC SMALL LETTER IO
+<Multi_key> <quotedbl> <Cyrillic_ie> : "Ñ‘" U0451 # CYRILLIC SMALL LETTER IO
+<dead_acute> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<Multi_key> <acute> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<Multi_key> <apostrophe> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<combining_acute> <Cyrillic_ghe> : "Ñ“" U0453 # CYRILLIC SMALL LETTER GJE
+<dead_diaeresis> <Ukrainian_i> : "Ñ—" U0457 # CYRILLIC SMALL LETTER YI
+<Multi_key> <quotedbl> <Ukrainian_i> : "Ñ—" U0457 # CYRILLIC SMALL LETTER YI
+<dead_acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<Multi_key> <acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<Multi_key> <apostrophe> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<combining_acute> <Cyrillic_ka> : "ќ" U045C # CYRILLIC SMALL LETTER KJE
+<dead_grave> <Cyrillic_i> : "Ñ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE
+<Multi_key> <grave> <Cyrillic_i> : "Ñ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE
+<combining_grave> <Cyrillic_i> : "Ñ" U045D # CYRILLIC SMALL LETTER I WITH GRAVE
+<dead_breve> <Cyrillic_u> : "Ñž" U045E # CYRILLIC SMALL LETTER SHORT U
+<Multi_key> <U> <Cyrillic_u> : "Ñž" U045E # CYRILLIC SMALL LETTER SHORT U
+<Multi_key> <b> <Cyrillic_u> : "Ñž" U045E # CYRILLIC SMALL LETTER SHORT U
+<U030f> <U0474> : "Ѷ" U0476 # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+<U030f> <U0475> : "Ñ·" U0477 # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+<Multi_key> <slash> <Cyrillic_GHE> : "Ò’" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_GHE> : "Ò’" U0492 # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+<Multi_key> <slash> <Cyrillic_ghe> : "Ò“" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_ghe> : "Ò“" U0493 # CYRILLIC SMALL LETTER GHE WITH STROKE
+<Multi_key> <slash> <Cyrillic_KA> : "Òž" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_KA> : "Òž" U049E # CYRILLIC CAPITAL LETTER KA WITH STROKE
+<Multi_key> <slash> <Cyrillic_ka> : "ÒŸ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE
+<Multi_key> <KP_Divide> <Cyrillic_ka> : "ÒŸ" U049F # CYRILLIC SMALL LETTER KA WITH STROKE
+<Multi_key> <slash> <U04ae> : "Ò°" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+<Multi_key> <KP_Divide> <U04ae> : "Ò°" U04B0 # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+<Multi_key> <slash> <U04af> : "Ò±" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+<Multi_key> <KP_Divide> <U04af> : "Ò±" U04B1 # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+<dead_breve> <Cyrillic_ZHE> : "Ó" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+<Multi_key> <U> <Cyrillic_ZHE> : "Ó" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+<Multi_key> <b> <Cyrillic_ZHE> : "Ó" U04C1 # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+<dead_breve> <Cyrillic_zhe> : "Ó‚" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE
+<Multi_key> <U> <Cyrillic_zhe> : "Ó‚" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE
+<Multi_key> <b> <Cyrillic_zhe> : "Ó‚" U04C2 # CYRILLIC SMALL LETTER ZHE WITH BREVE
+<dead_breve> <Cyrillic_A> : "Ó" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE
+<Multi_key> <U> <Cyrillic_A> : "Ó" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE
+<Multi_key> <b> <Cyrillic_A> : "Ó" U04D0 # CYRILLIC CAPITAL LETTER A WITH BREVE
+<dead_breve> <Cyrillic_a> : "Ó‘" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE
+<Multi_key> <U> <Cyrillic_a> : "Ó‘" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE
+<Multi_key> <b> <Cyrillic_a> : "Ó‘" U04D1 # CYRILLIC SMALL LETTER A WITH BREVE
+<dead_diaeresis> <Cyrillic_A> : "Ó’" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_A> : "Ó’" U04D2 # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_a> : "Ó“" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_a> : "Ó“" U04D3 # CYRILLIC SMALL LETTER A WITH DIAERESIS
+<dead_breve> <Cyrillic_IE> : "Ó–" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE
+<Multi_key> <U> <Cyrillic_IE> : "Ó–" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE
+<Multi_key> <b> <Cyrillic_IE> : "Ó–" U04D6 # CYRILLIC CAPITAL LETTER IE WITH BREVE
+<dead_breve> <Cyrillic_ie> : "Ó—" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE
+<Multi_key> <U> <Cyrillic_ie> : "Ó—" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE
+<Multi_key> <b> <Cyrillic_ie> : "Ó—" U04D7 # CYRILLIC SMALL LETTER IE WITH BREVE
+<dead_diaeresis> <U04d8> : "Óš" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+<Multi_key> <quotedbl> <U04d8> : "Óš" U04DA # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+<dead_diaeresis> <U04d9> : "Ó›" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+<Multi_key> <quotedbl> <U04d9> : "Ó›" U04DB # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_ZHE> : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_ZHE> : "Ӝ" U04DC # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_zhe> : "Ó" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_zhe> : "Ó" U04DD # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_ZE> : "Óž" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_ZE> : "Óž" U04DE # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_ze> : "ÓŸ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_ze> : "ÓŸ" U04DF # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+<dead_macron> <Cyrillic_I> : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON
+<Multi_key> <macron> <Cyrillic_I> : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON
+<Multi_key> <underscore> <Cyrillic_I> : "Ó¢" U04E2 # CYRILLIC CAPITAL LETTER I WITH MACRON
+<dead_macron> <Cyrillic_i> : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON
+<Multi_key> <macron> <Cyrillic_i> : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON
+<Multi_key> <underscore> <Cyrillic_i> : "Ó£" U04E3 # CYRILLIC SMALL LETTER I WITH MACRON
+<dead_diaeresis> <Cyrillic_I> : "Ó¤" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_I> : "Ó¤" U04E4 # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_i> : "Ó¥" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_i> : "Ó¥" U04E5 # CYRILLIC SMALL LETTER I WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_O> : "Ó¦" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_O> : "Ó¦" U04E6 # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_o> : "Ó§" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_o> : "Ó§" U04E7 # CYRILLIC SMALL LETTER O WITH DIAERESIS
+<dead_diaeresis> <U04e8> : "Óª" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+<Multi_key> <quotedbl> <U04e8> : "Óª" U04EA # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+<dead_diaeresis> <U04e9> : "Ó«" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+<Multi_key> <quotedbl> <U04e9> : "Ó«" U04EB # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_E> : "Ó¬" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_E> : "Ó¬" U04EC # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_e> : "Ó­" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_e> : "Ó­" U04ED # CYRILLIC SMALL LETTER E WITH DIAERESIS
+<dead_macron> <Cyrillic_U> : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON
+<Multi_key> <macron> <Cyrillic_U> : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON
+<Multi_key> <underscore> <Cyrillic_U> : "Ó®" U04EE # CYRILLIC CAPITAL LETTER U WITH MACRON
+<dead_macron> <Cyrillic_u> : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON
+<Multi_key> <macron> <Cyrillic_u> : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON
+<Multi_key> <underscore> <Cyrillic_u> : "Ó¯" U04EF # CYRILLIC SMALL LETTER U WITH MACRON
+<dead_diaeresis> <Cyrillic_U> : "Ó°" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_U> : "Ó°" U04F0 # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_u> : "Ó±" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_u> : "Ó±" U04F1 # CYRILLIC SMALL LETTER U WITH DIAERESIS
+<dead_doubleacute> <Cyrillic_U> : "Ó²" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <Cyrillic_U> : "Ó²" U04F2 # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+<dead_doubleacute> <Cyrillic_u> : "Ó³" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+<Multi_key> <equal> <Cyrillic_u> : "Ó³" U04F3 # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+<dead_diaeresis> <Cyrillic_CHE> : "Ó´" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_CHE> : "Ó´" U04F4 # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_che> : "Óµ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_che> : "Óµ" U04F5 # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_YERU> : "Ó¸" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_YERU> : "Ó¸" U04F8 # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+<dead_diaeresis> <Cyrillic_yeru> : "Ó¹" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+<Multi_key> <quotedbl> <Cyrillic_yeru> : "Ó¹" U04F9 # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+<Multi_key> <U0653> <Arabic_alef> : "Ø¢" U0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
+<Multi_key> <U0654> <Arabic_alef> : "Ø£" U0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
+<Multi_key> <U0654> <Arabic_waw> : "ؤ" U0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
+<Multi_key> <U0655> <Arabic_alef> : "Ø¥" U0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
+<Multi_key> <U0654> <Arabic_yeh> : "ئ" U0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
+<Multi_key> <U0654> <U06d5> : "Û€" U06C0 # ARABIC LETTER HEH WITH YEH ABOVE
+<Multi_key> <U0654> <U06c1> : "Û‚" U06C2 # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+<Multi_key> <U0654> <U06d2> : "Û“" U06D3 # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+<Multi_key> <U093c> <U0928> : "ऩ" U0929 # DEVANAGARI LETTER NNNA
+<Multi_key> <U093c> <U0930> : "ऱ" U0931 # DEVANAGARI LETTER RRA
+<Multi_key> <U093c> <U0933> : "ऴ" U0934 # DEVANAGARI LETTER LLLA
+<Multi_key> <U093c> <U0915> : "क़" U0958 # DEVANAGARI LETTER QA
+<Multi_key> <U093c> <U0916> : "ख़" U0959 # DEVANAGARI LETTER KHHA
+<Multi_key> <U093c> <U0917> : "ग़" U095A # DEVANAGARI LETTER GHHA
+<Multi_key> <U093c> <U091c> : "ज़" U095B # DEVANAGARI LETTER ZA
+<Multi_key> <U093c> <U0921> : "ड़" U095C # DEVANAGARI LETTER DDDHA
+<Multi_key> <U093c> <U0922> : "à¥" U095D # DEVANAGARI LETTER RHA
+<Multi_key> <U093c> <U092b> : "फ़" U095E # DEVANAGARI LETTER FA
+<Multi_key> <U093c> <U092f> : "य़" U095F # DEVANAGARI LETTER YYA
+<Multi_key> <U09c7> <U09be> : "ো" U09CB # BENGALI VOWEL SIGN O
+<Multi_key> <U09c7> <U09d7> : "ৌ" U09CC # BENGALI VOWEL SIGN AU
+<Multi_key> <U09bc> <U09a1> : "ড়" U09DC # BENGALI LETTER RRA
+<Multi_key> <U09bc> <U09a2> : "à§" U09DD # BENGALI LETTER RHA
+<Multi_key> <U09bc> <U09af> : "য়" U09DF # BENGALI LETTER YYA
+<Multi_key> <U0a3c> <U0a32> : "ਲ਼" U0A33 # GURMUKHI LETTER LLA
+<Multi_key> <U0a3c> <U0a38> : "ਸ਼" U0A36 # GURMUKHI LETTER SHA
+<Multi_key> <U0a3c> <U0a16> : "à©™" U0A59 # GURMUKHI LETTER KHHA
+<Multi_key> <U0a3c> <U0a17> : "à©š" U0A5A # GURMUKHI LETTER GHHA
+<Multi_key> <U0a3c> <U0a1c> : "à©›" U0A5B # GURMUKHI LETTER ZA
+<Multi_key> <U0a3c> <U0a2b> : "à©ž" U0A5E # GURMUKHI LETTER FA
+<Multi_key> <U0b47> <U0b56> : "à­ˆ" U0B48 # ORIYA VOWEL SIGN AI
+<Multi_key> <U0b47> <U0b3e> : "à­‹" U0B4B # ORIYA VOWEL SIGN O
+<Multi_key> <U0b47> <U0b57> : "ୌ" U0B4C # ORIYA VOWEL SIGN AU
+<Multi_key> <U0b3c> <U0b21> : "ଡ଼" U0B5C # ORIYA LETTER RRA
+<Multi_key> <U0b3c> <U0b22> : "à­" U0B5D # ORIYA LETTER RHA
+<Multi_key> <U0bd7> <U0b92> : "à®”" U0B94 # TAMIL LETTER AU
+<Multi_key> <U0bc6> <U0bbe> : "ொ" U0BCA # TAMIL VOWEL SIGN O
+<Multi_key> <U0bc7> <U0bbe> : "ோ" U0BCB # TAMIL VOWEL SIGN OO
+<Multi_key> <U0bc6> <U0bd7> : "ௌ" U0BCC # TAMIL VOWEL SIGN AU
+<Multi_key> <U0c46> <U0c56> : "ై" U0C48 # TELUGU VOWEL SIGN AI
+<Multi_key> <U0cbf> <U0cd5> : "à³€" U0CC0 # KANNADA VOWEL SIGN II
+<Multi_key> <U0cc6> <U0cd5> : "ೇ" U0CC7 # KANNADA VOWEL SIGN EE
+<Multi_key> <U0cc6> <U0cd6> : "ೈ" U0CC8 # KANNADA VOWEL SIGN AI
+<Multi_key> <U0cc6> <U0cc2> : "ೊ" U0CCA # KANNADA VOWEL SIGN O
+<Multi_key> <U0cca> <U0cd5> : "ೋ" U0CCB # KANNADA VOWEL SIGN OO
+<Multi_key> <U0cc6> <U0cc2> <U0cd5> : "ೋ" U0CCB # KANNADA VOWEL SIGN OO
+<Multi_key> <U0d46> <U0d3e> : "ൊ" U0D4A # MALAYALAM VOWEL SIGN O
+<Multi_key> <U0d47> <U0d3e> : "ോ" U0D4B # MALAYALAM VOWEL SIGN OO
+<Multi_key> <U0d46> <U0d57> : "ൌ" U0D4C # MALAYALAM VOWEL SIGN AU
+<Multi_key> <U0dd9> <U0dca> : "à·š" U0DDA # SINHALA VOWEL SIGN DIGA KOMBUVA
+<Multi_key> <U0dd9> <U0dcf> : "ො" U0DDC # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+<Multi_key> <U0ddc> <U0dca> : "à·" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+<Multi_key> <U0dd9> <U0dcf> <U0dca> : "à·" U0DDD # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+<Multi_key> <U0dd9> <U0ddf> : "à·ž" U0DDE # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+<Multi_key> <U0fb7> <U0f42> : "གྷ" U0F43 # TIBETAN LETTER GHA
+<Multi_key> <U0fb7> <U0f4c> : "à½" U0F4D # TIBETAN LETTER DDHA
+<Multi_key> <U0fb7> <U0f51> : "དྷ" U0F52 # TIBETAN LETTER DHA
+<Multi_key> <U0fb7> <U0f56> : "བྷ" U0F57 # TIBETAN LETTER BHA
+<Multi_key> <U0fb7> <U0f5b> : "ཛྷ" U0F5C # TIBETAN LETTER DZHA
+<Multi_key> <U0fb5> <U0f40> : "ཀྵ" U0F69 # TIBETAN LETTER KSSA
+<Multi_key> <U0f71> <U0f72> : "ཱི" U0F73 # TIBETAN VOWEL SIGN II
+<Multi_key> <U0f71> <U0f74> : "ཱུ" U0F75 # TIBETAN VOWEL SIGN UU
+<Multi_key> <U0fb2> <U0f80> : "ྲྀ" U0F76 # TIBETAN VOWEL SIGN VOCALIC R
+<Multi_key> <U0fb3> <U0f80> : "ླྀ" U0F78 # TIBETAN VOWEL SIGN VOCALIC L
+<Multi_key> <U0f71> <U0f80> : "à¾" U0F81 # TIBETAN VOWEL SIGN REVERSED II
+<Multi_key> <U0f92> <U0fb7> : "ྒྷ" U0F93 # TIBETAN SUBJOINED LETTER GHA
+<Multi_key> <U0f9c> <U0fb7> : "à¾" U0F9D # TIBETAN SUBJOINED LETTER DDHA
+<Multi_key> <U0fa1> <U0fb7> : "ྡྷ" U0FA2 # TIBETAN SUBJOINED LETTER DHA
+<Multi_key> <U0fa6> <U0fb7> : "ྦྷ" U0FA7 # TIBETAN SUBJOINED LETTER BHA
+<Multi_key> <U0fab> <U0fb7> : "ྫྷ" U0FAC # TIBETAN SUBJOINED LETTER DZHA
+<Multi_key> <U0f90> <U0fb5> : "ྐྵ" U0FB9 # TIBETAN SUBJOINED LETTER KSSA
+<Multi_key> <U102e> <U1025> : "ဦ" U1026 # MYANMAR LETTER UU
+<U0325> <A> : "Ḁ" U1E00 # LATIN CAPITAL LETTER A WITH RING BELOW
+<U0325> <a> : "á¸" U1E01 # LATIN SMALL LETTER A WITH RING BELOW
+<dead_abovedot> <B> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
+<Multi_key> <period> <B> : "Ḃ" U1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
+<dead_abovedot> <b> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
+<Multi_key> <period> <b> : "ḃ" U1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
+<dead_belowdot> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW
+<Multi_key> <exclam> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW
+<combining_belowdot> <B> : "Ḅ" U1E04 # LATIN CAPITAL LETTER B WITH DOT BELOW
+<dead_belowdot> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW
+<Multi_key> <exclam> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW
+<combining_belowdot> <b> : "ḅ" U1E05 # LATIN SMALL LETTER B WITH DOT BELOW
+<U0331> <B> : "Ḇ" U1E06 # LATIN CAPITAL LETTER B WITH LINE BELOW
+<U0331> <b> : "ḇ" U1E07 # LATIN SMALL LETTER B WITH LINE BELOW
+<dead_acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <Multi_key> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <Ccedilla> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <dead_cedilla> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <Multi_key> <comma> <C> : "Ḉ" U1E08 # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<dead_acute> <Multi_key> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <acute> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<Multi_key> <apostrophe> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <ccedilla> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <dead_cedilla> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<combining_acute> <Multi_key> <comma> <c> : "ḉ" U1E09 # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+<dead_abovedot> <D> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
+<Multi_key> <period> <D> : "Ḋ" U1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
+<dead_abovedot> <d> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
+<Multi_key> <period> <d> : "ḋ" U1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
+<dead_belowdot> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW
+<Multi_key> <exclam> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW
+<combining_belowdot> <D> : "Ḍ" U1E0C # LATIN CAPITAL LETTER D WITH DOT BELOW
+<dead_belowdot> <d> : "á¸" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW
+<Multi_key> <exclam> <d> : "á¸" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW
+<combining_belowdot> <d> : "á¸" U1E0D # LATIN SMALL LETTER D WITH DOT BELOW
+<U0331> <D> : "Ḏ" U1E0E # LATIN CAPITAL LETTER D WITH LINE BELOW
+<U0331> <d> : "á¸" U1E0F # LATIN SMALL LETTER D WITH LINE BELOW
+<dead_cedilla> <D> : "á¸" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA
+<Multi_key> <comma> <D> : "á¸" U1E10 # LATIN CAPITAL LETTER D WITH CEDILLA
+<dead_cedilla> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA
+<Multi_key> <comma> <d> : "ḑ" U1E11 # LATIN SMALL LETTER D WITH CEDILLA
+<U032d> <D> : "Ḓ" U1E12 # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+<U032d> <d> : "ḓ" U1E13 # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+<dead_grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Emacron> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <E> : "Ḕ" U1E14 # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <emacron> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <e> : "ḕ" U1E15 # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+<dead_acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Emacron> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <E> : "Ḗ" U1E16 # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <emacron> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <e> : "ḗ" U1E17 # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+<U032d> <E> : "Ḙ" U1E18 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+<U032d> <e> : "ḙ" U1E19 # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+<U0330> <E> : "Ḛ" U1E1A # LATIN CAPITAL LETTER E WITH TILDE BELOW
+<U0330> <e> : "ḛ" U1E1B # LATIN SMALL LETTER E WITH TILDE BELOW
+<dead_breve> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <U0228> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <Multi_key> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <dead_cedilla> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <comma> <E> : "Ḝ" U1E1C # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <U0229> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <U0229> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <U0229> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <dead_cedilla> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<dead_breve> <Multi_key> <comma> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <dead_cedilla> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <U> <comma> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <dead_cedilla> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<Multi_key> <b> <comma> <e> : "á¸" U1E1D # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+<dead_abovedot> <F> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
+<Multi_key> <period> <F> : "Ḟ" U1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
+<dead_abovedot> <f> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
+<Multi_key> <period> <f> : "ḟ" U1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
+<dead_macron> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON
+<Multi_key> <macron> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON
+<Multi_key> <underscore> <G> : "Ḡ" U1E20 # LATIN CAPITAL LETTER G WITH MACRON
+<dead_macron> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON
+<Multi_key> <macron> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON
+<Multi_key> <underscore> <g> : "ḡ" U1E21 # LATIN SMALL LETTER G WITH MACRON
+<dead_abovedot> <H> : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE
+<Multi_key> <period> <H> : "Ḣ" U1E22 # LATIN CAPITAL LETTER H WITH DOT ABOVE
+<dead_abovedot> <h> : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE
+<Multi_key> <period> <h> : "ḣ" U1E23 # LATIN SMALL LETTER H WITH DOT ABOVE
+<dead_belowdot> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW
+<Multi_key> <exclam> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW
+<combining_belowdot> <H> : "Ḥ" U1E24 # LATIN CAPITAL LETTER H WITH DOT BELOW
+<dead_belowdot> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW
+<Multi_key> <exclam> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW
+<combining_belowdot> <h> : "ḥ" U1E25 # LATIN SMALL LETTER H WITH DOT BELOW
+<dead_diaeresis> <H> : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS
+<Multi_key> <quotedbl> <H> : "Ḧ" U1E26 # LATIN CAPITAL LETTER H WITH DIAERESIS
+<dead_diaeresis> <h> : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS
+<Multi_key> <quotedbl> <h> : "ḧ" U1E27 # LATIN SMALL LETTER H WITH DIAERESIS
+<dead_cedilla> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA
+<Multi_key> <comma> <H> : "Ḩ" U1E28 # LATIN CAPITAL LETTER H WITH CEDILLA
+<dead_cedilla> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA
+<Multi_key> <comma> <h> : "ḩ" U1E29 # LATIN SMALL LETTER H WITH CEDILLA
+<U032e> <H> : "Ḫ" U1E2A # LATIN CAPITAL LETTER H WITH BREVE BELOW
+<U032e> <h> : "ḫ" U1E2B # LATIN SMALL LETTER H WITH BREVE BELOW
+<U0330> <I> : "Ḭ" U1E2C # LATIN CAPITAL LETTER I WITH TILDE BELOW
+<U0330> <i> : "ḭ" U1E2D # LATIN SMALL LETTER I WITH TILDE BELOW
+<dead_acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <Idiaeresis> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <I> : "Ḯ" U1E2E # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <Multi_key> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <acute> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<Multi_key> <apostrophe> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <idiaeresis> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <dead_diaeresis> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<combining_acute> <Multi_key> <quotedbl> <i> : "ḯ" U1E2F # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+<dead_acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<Multi_key> <acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<Multi_key> <apostrophe> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<combining_acute> <K> : "Ḱ" U1E30 # LATIN CAPITAL LETTER K WITH ACUTE
+<dead_acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<Multi_key> <acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<Multi_key> <apostrophe> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<combining_acute> <k> : "ḱ" U1E31 # LATIN SMALL LETTER K WITH ACUTE
+<dead_belowdot> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW
+<Multi_key> <exclam> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW
+<combining_belowdot> <K> : "Ḳ" U1E32 # LATIN CAPITAL LETTER K WITH DOT BELOW
+<dead_belowdot> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW
+<Multi_key> <exclam> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW
+<combining_belowdot> <k> : "ḳ" U1E33 # LATIN SMALL LETTER K WITH DOT BELOW
+<U0331> <K> : "Ḵ" U1E34 # LATIN CAPITAL LETTER K WITH LINE BELOW
+<U0331> <k> : "ḵ" U1E35 # LATIN SMALL LETTER K WITH LINE BELOW
+<dead_belowdot> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW
+<Multi_key> <exclam> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW
+<combining_belowdot> <L> : "Ḷ" U1E36 # LATIN CAPITAL LETTER L WITH DOT BELOW
+<dead_belowdot> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW
+<Multi_key> <exclam> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW
+<combining_belowdot> <l> : "ḷ" U1E37 # LATIN SMALL LETTER L WITH DOT BELOW
+<dead_macron> <U1e36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e36> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <L> : "Ḹ" U1E38 # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <U1e37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e37> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <l> : "ḹ" U1E39 # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+<U0331> <L> : "Ḻ" U1E3A # LATIN CAPITAL LETTER L WITH LINE BELOW
+<U0331> <l> : "ḻ" U1E3B # LATIN SMALL LETTER L WITH LINE BELOW
+<U032d> <L> : "Ḽ" U1E3C # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+<U032d> <l> : "ḽ" U1E3D # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+<dead_acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<Multi_key> <acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<Multi_key> <apostrophe> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<combining_acute> <M> : "Ḿ" U1E3E # LATIN CAPITAL LETTER M WITH ACUTE
+<dead_acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<Multi_key> <acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<Multi_key> <apostrophe> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<combining_acute> <m> : "ḿ" U1E3F # LATIN SMALL LETTER M WITH ACUTE
+<dead_abovedot> <M> : "á¹€" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
+<Multi_key> <period> <M> : "á¹€" U1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
+<dead_abovedot> <m> : "á¹" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
+<Multi_key> <period> <m> : "á¹" U1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
+<dead_belowdot> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW
+<Multi_key> <exclam> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW
+<combining_belowdot> <M> : "Ṃ" U1E42 # LATIN CAPITAL LETTER M WITH DOT BELOW
+<dead_belowdot> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW
+<Multi_key> <exclam> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW
+<combining_belowdot> <m> : "ṃ" U1E43 # LATIN SMALL LETTER M WITH DOT BELOW
+<dead_abovedot> <N> : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE
+<Multi_key> <period> <N> : "Ṅ" U1E44 # LATIN CAPITAL LETTER N WITH DOT ABOVE
+<dead_abovedot> <n> : "á¹…" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE
+<Multi_key> <period> <n> : "á¹…" U1E45 # LATIN SMALL LETTER N WITH DOT ABOVE
+<dead_belowdot> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW
+<Multi_key> <exclam> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW
+<combining_belowdot> <N> : "Ṇ" U1E46 # LATIN CAPITAL LETTER N WITH DOT BELOW
+<dead_belowdot> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW
+<Multi_key> <exclam> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW
+<combining_belowdot> <n> : "ṇ" U1E47 # LATIN SMALL LETTER N WITH DOT BELOW
+<U0331> <N> : "Ṉ" U1E48 # LATIN CAPITAL LETTER N WITH LINE BELOW
+<U0331> <n> : "ṉ" U1E49 # LATIN SMALL LETTER N WITH LINE BELOW
+<U032d> <N> : "Ṋ" U1E4A # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+<U032d> <n> : "ṋ" U1E4B # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+<dead_acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <Otilde> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <O> : "Ṍ" U1E4C # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <otilde> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <o> : "á¹" U1E4D # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+<dead_diaeresis> <Otilde> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <Otilde> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <dead_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <Multi_key> <asciitilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <dead_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <asciitilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <combining_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <combining_tilde> <O> : "Ṏ" U1E4E # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <otilde> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <otilde> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <dead_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <Multi_key> <asciitilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <dead_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <asciitilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_diaeresis> <combining_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<Multi_key> <quotedbl> <combining_tilde> <o> : "á¹" U1E4F # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+<dead_grave> <Omacron> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <Omacron> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Omacron> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <O> : "á¹" U1E50 # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_grave> <Multi_key> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<Multi_key> <grave> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <omacron> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <dead_macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <macron> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<combining_grave> <Multi_key> <underscore> <o> : "ṑ" U1E51 # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+<dead_acute> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Omacron> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <O> : "á¹’" U1E52 # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <Multi_key> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <acute> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<Multi_key> <apostrophe> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <omacron> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <dead_macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <macron> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<combining_acute> <Multi_key> <underscore> <o> : "ṓ" U1E53 # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+<dead_acute> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<Multi_key> <acute> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<Multi_key> <apostrophe> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<combining_acute> <P> : "á¹”" U1E54 # LATIN CAPITAL LETTER P WITH ACUTE
+<dead_acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<Multi_key> <acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<Multi_key> <apostrophe> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<combining_acute> <p> : "ṕ" U1E55 # LATIN SMALL LETTER P WITH ACUTE
+<dead_abovedot> <P> : "á¹–" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
+<Multi_key> <period> <P> : "á¹–" U1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
+<dead_abovedot> <p> : "á¹—" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
+<Multi_key> <period> <p> : "á¹—" U1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
+<dead_abovedot> <R> : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE
+<Multi_key> <period> <R> : "Ṙ" U1E58 # LATIN CAPITAL LETTER R WITH DOT ABOVE
+<dead_abovedot> <r> : "á¹™" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE
+<Multi_key> <period> <r> : "á¹™" U1E59 # LATIN SMALL LETTER R WITH DOT ABOVE
+<dead_belowdot> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW
+<Multi_key> <exclam> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW
+<combining_belowdot> <R> : "Ṛ" U1E5A # LATIN CAPITAL LETTER R WITH DOT BELOW
+<dead_belowdot> <r> : "á¹›" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW
+<Multi_key> <exclam> <r> : "á¹›" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW
+<combining_belowdot> <r> : "á¹›" U1E5B # LATIN SMALL LETTER R WITH DOT BELOW
+<dead_macron> <U1e5a> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e5a> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e5a> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <R> : "Ṝ" U1E5C # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <U1e5b> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <U1e5b> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <U1e5b> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <dead_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <Multi_key> <exclam> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <dead_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <exclam> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <dead_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <exclam> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<dead_macron> <combining_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <macron> <combining_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<Multi_key> <underscore> <combining_belowdot> <r> : "á¹" U1E5D # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+<U0331> <R> : "Ṟ" U1E5E # LATIN CAPITAL LETTER R WITH LINE BELOW
+<U0331> <r> : "ṟ" U1E5F # LATIN SMALL LETTER R WITH LINE BELOW
+<dead_abovedot> <S> : "á¹ " U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
+<Multi_key> <period> <S> : "á¹ " U1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
+<dead_abovedot> <s> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
+<Multi_key> <period> <s> : "ṡ" U1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
+<dead_belowdot> <S> : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW
+<Multi_key> <exclam> <S> : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW
+<combining_belowdot> <S> : "á¹¢" U1E62 # LATIN CAPITAL LETTER S WITH DOT BELOW
+<dead_belowdot> <s> : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW
+<Multi_key> <exclam> <s> : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW
+<combining_belowdot> <s> : "á¹£" U1E63 # LATIN SMALL LETTER S WITH DOT BELOW
+<dead_abovedot> <Sacute> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <Sacute> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <dead_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <apostrophe> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <dead_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <apostrophe> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <combining_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <combining_acute> <S> : "Ṥ" U1E64 # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <sacute> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <sacute> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <dead_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Multi_key> <apostrophe> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <dead_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <apostrophe> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <combining_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<Multi_key> <period> <combining_acute> <s> : "á¹¥" U1E65 # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+<dead_abovedot> <Scaron> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <Scaron> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <dead_caron> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <Multi_key> <c> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <dead_caron> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <c> <S> : "Ṧ" U1E66 # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <scaron> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <scaron> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <dead_caron> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <Multi_key> <c> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <dead_caron> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<Multi_key> <period> <c> <s> : "ṧ" U1E67 # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+<dead_abovedot> <U1e62> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <U1e62> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <dead_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <Multi_key> <exclam> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <dead_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <exclam> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <combining_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <combining_belowdot> <S> : "Ṩ" U1E68 # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <U1e63> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <U1e63> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <dead_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <Multi_key> <exclam> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <dead_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <exclam> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <combining_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<Multi_key> <period> <combining_belowdot> <s> : "ṩ" U1E69 # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+<dead_abovedot> <T> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
+<Multi_key> <period> <T> : "Ṫ" U1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
+<dead_abovedot> <t> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
+<Multi_key> <period> <t> : "ṫ" U1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
+<dead_belowdot> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW
+<Multi_key> <exclam> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW
+<combining_belowdot> <T> : "Ṭ" U1E6C # LATIN CAPITAL LETTER T WITH DOT BELOW
+<dead_belowdot> <t> : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW
+<Multi_key> <exclam> <t> : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW
+<combining_belowdot> <t> : "á¹­" U1E6D # LATIN SMALL LETTER T WITH DOT BELOW
+<U0331> <T> : "á¹®" U1E6E # LATIN CAPITAL LETTER T WITH LINE BELOW
+<U0331> <t> : "ṯ" U1E6F # LATIN SMALL LETTER T WITH LINE BELOW
+<U032d> <T> : "á¹°" U1E70 # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+<U032d> <t> : "á¹±" U1E71 # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+<U0324> <U> : "á¹²" U1E72 # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+<U0324> <u> : "á¹³" U1E73 # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+<U0330> <U> : "á¹´" U1E74 # LATIN CAPITAL LETTER U WITH TILDE BELOW
+<U0330> <u> : "á¹µ" U1E75 # LATIN SMALL LETTER U WITH TILDE BELOW
+<U032d> <U> : "Ṷ" U1E76 # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+<U032d> <u> : "á¹·" U1E77 # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+<dead_acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <Utilde> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <U> : "Ṹ" U1E78 # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <Multi_key> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_acute> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <acute> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<Multi_key> <apostrophe> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <utilde> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <dead_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <Multi_key> <asciitilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<combining_acute> <combining_tilde> <u> : "á¹¹" U1E79 # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+<dead_diaeresis> <Umacron> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <Umacron> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <dead_macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <underscore> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <dead_macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <macron> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <underscore> <U> : "Ṻ" U1E7A # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <umacron> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <umacron> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <dead_macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_diaeresis> <Multi_key> <underscore> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <dead_macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <macron> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<Multi_key> <quotedbl> <underscore> <u> : "á¹»" U1E7B # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+<dead_tilde> <V> : "á¹¼" U1E7C # LATIN CAPITAL LETTER V WITH TILDE
+<Multi_key> <asciitilde> <V> : "á¹¼" U1E7C # LATIN CAPITAL LETTER V WITH TILDE
+<combining_tilde> <V> : "á¹¼" U1E7C # LATIN CAPITAL LETTER V WITH TILDE
+<dead_tilde> <v> : "á¹½" U1E7D # LATIN SMALL LETTER V WITH TILDE
+<Multi_key> <asciitilde> <v> : "á¹½" U1E7D # LATIN SMALL LETTER V WITH TILDE
+<combining_tilde> <v> : "á¹½" U1E7D # LATIN SMALL LETTER V WITH TILDE
+<dead_belowdot> <V> : "á¹¾" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW
+<Multi_key> <exclam> <V> : "á¹¾" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW
+<combining_belowdot> <V> : "á¹¾" U1E7E # LATIN CAPITAL LETTER V WITH DOT BELOW
+<dead_belowdot> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW
+<Multi_key> <exclam> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW
+<combining_belowdot> <v> : "ṿ" U1E7F # LATIN SMALL LETTER V WITH DOT BELOW
+<dead_grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE
+<Multi_key> <grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE
+<combining_grave> <W> : "Ẁ" U1E80 # LATIN CAPITAL LETTER W WITH GRAVE
+<dead_grave> <w> : "áº" U1E81 # LATIN SMALL LETTER W WITH GRAVE
+<Multi_key> <grave> <w> : "áº" U1E81 # LATIN SMALL LETTER W WITH GRAVE
+<combining_grave> <w> : "áº" U1E81 # LATIN SMALL LETTER W WITH GRAVE
+<dead_acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<Multi_key> <acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<Multi_key> <apostrophe> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<combining_acute> <W> : "Ẃ" U1E82 # LATIN CAPITAL LETTER W WITH ACUTE
+<dead_acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<Multi_key> <acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<Multi_key> <apostrophe> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<combining_acute> <w> : "ẃ" U1E83 # LATIN SMALL LETTER W WITH ACUTE
+<dead_diaeresis> <W> : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
+<Multi_key> <quotedbl> <W> : "Ẅ" U1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
+<dead_diaeresis> <w> : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS
+<Multi_key> <quotedbl> <w> : "ẅ" U1E85 # LATIN SMALL LETTER W WITH DIAERESIS
+<dead_abovedot> <W> : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE
+<Multi_key> <period> <W> : "Ẇ" U1E86 # LATIN CAPITAL LETTER W WITH DOT ABOVE
+<dead_abovedot> <w> : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE
+<Multi_key> <period> <w> : "ẇ" U1E87 # LATIN SMALL LETTER W WITH DOT ABOVE
+<dead_belowdot> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW
+<Multi_key> <exclam> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW
+<combining_belowdot> <W> : "Ẉ" U1E88 # LATIN CAPITAL LETTER W WITH DOT BELOW
+<dead_belowdot> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW
+<Multi_key> <exclam> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW
+<combining_belowdot> <w> : "ẉ" U1E89 # LATIN SMALL LETTER W WITH DOT BELOW
+<dead_abovedot> <X> : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE
+<Multi_key> <period> <X> : "Ẋ" U1E8A # LATIN CAPITAL LETTER X WITH DOT ABOVE
+<dead_abovedot> <x> : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE
+<Multi_key> <period> <x> : "ẋ" U1E8B # LATIN SMALL LETTER X WITH DOT ABOVE
+<dead_diaeresis> <X> : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS
+<Multi_key> <quotedbl> <X> : "Ẍ" U1E8C # LATIN CAPITAL LETTER X WITH DIAERESIS
+<dead_diaeresis> <x> : "áº" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS
+<Multi_key> <quotedbl> <x> : "áº" U1E8D # LATIN SMALL LETTER X WITH DIAERESIS
+<dead_abovedot> <Y> : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+<Multi_key> <period> <Y> : "Ẏ" U1E8E # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+<dead_abovedot> <y> : "áº" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE
+<Multi_key> <period> <y> : "áº" U1E8F # LATIN SMALL LETTER Y WITH DOT ABOVE
+<dead_circumflex> <Z> : "áº" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <Z> : "áº" U1E90 # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+<dead_circumflex> <z> : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+<Multi_key> <asciicircum> <z> : "ẑ" U1E91 # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+<dead_belowdot> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW
+<Multi_key> <exclam> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW
+<combining_belowdot> <Z> : "Ẓ" U1E92 # LATIN CAPITAL LETTER Z WITH DOT BELOW
+<dead_belowdot> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW
+<Multi_key> <exclam> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW
+<combining_belowdot> <z> : "ẓ" U1E93 # LATIN SMALL LETTER Z WITH DOT BELOW
+<U0331> <Z> : "Ẕ" U1E94 # LATIN CAPITAL LETTER Z WITH LINE BELOW
+<U0331> <z> : "ẕ" U1E95 # LATIN SMALL LETTER Z WITH LINE BELOW
+<U0331> <h> : "ẖ" U1E96 # LATIN SMALL LETTER H WITH LINE BELOW
+<dead_diaeresis> <t> : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS
+<Multi_key> <quotedbl> <t> : "ẗ" U1E97 # LATIN SMALL LETTER T WITH DIAERESIS
+<dead_abovering> <w> : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE
+<Multi_key> <o> <w> : "ẘ" U1E98 # LATIN SMALL LETTER W WITH RING ABOVE
+<dead_abovering> <y> : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE
+<Multi_key> <o> <y> : "ẙ" U1E99 # LATIN SMALL LETTER Y WITH RING ABOVE
+<dead_abovedot> <U017f> : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+<Multi_key> <period> <U017f> : "ẛ" U1E9B # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+<dead_belowdot> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
+<Multi_key> <exclam> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
+<combining_belowdot> <A> : "Ạ" U1EA0 # LATIN CAPITAL LETTER A WITH DOT BELOW
+<dead_belowdot> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
+<Multi_key> <exclam> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
+<combining_belowdot> <a> : "ạ" U1EA1 # LATIN SMALL LETTER A WITH DOT BELOW
+<dead_hook> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+<Multi_key> <question> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+<combining_hook> <A> : "Ả" U1EA2 # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+<dead_hook> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
+<Multi_key> <question> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
+<combining_hook> <a> : "ả" U1EA3 # LATIN SMALL LETTER A WITH HOOK ABOVE
+<dead_acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Acircumflex> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <A> : "Ấ" U1EA4 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <acircumflex> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <a> : "ấ" U1EA5 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+<dead_grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Acircumflex> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <A> : "Ầ" U1EA6 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <acircumflex> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <a> : "ầ" U1EA7 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+<dead_hook> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Acircumflex> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <A> : "Ẩ" U1EA8 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <acircumflex> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <a> : "ẩ" U1EA9 # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_tilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Acircumflex> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <A> : "Ẫ" U1EAA # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <acircumflex> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <a> : "ẫ" U1EAB # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+<dead_circumflex> <U1ea0> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ea0> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <A> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_belowdot> <Acircumflex> : "Ậ" U1EAC # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <U1ea1> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ea1> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <a> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_belowdot> <acircumflex> : "ậ" U1EAD # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+<dead_acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Abreve> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <dead_breve> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <U> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <b> <A> : "Ắ" U1EAE # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_acute> <Multi_key> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <acute> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<Multi_key> <apostrophe> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <abreve> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <dead_breve> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <U> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<combining_acute> <Multi_key> <b> <a> : "ắ" U1EAF # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+<dead_grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Abreve> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <dead_breve> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <U> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <b> <A> : "Ằ" U1EB0 # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_grave> <Multi_key> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<Multi_key> <grave> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <abreve> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <dead_breve> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <U> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<combining_grave> <Multi_key> <b> <a> : "ằ" U1EB1 # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+<dead_hook> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Abreve> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <dead_breve> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <U> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <b> <A> : "Ẳ" U1EB2 # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_hook> <Multi_key> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<Multi_key> <question> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <abreve> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <dead_breve> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <U> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<combining_hook> <Multi_key> <b> <a> : "ẳ" U1EB3 # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+<dead_tilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Abreve> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <dead_breve> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <U> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <b> <A> : "Ẵ" U1EB4 # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_tilde> <Multi_key> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<Multi_key> <asciitilde> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <abreve> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <dead_breve> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <U> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<combining_tilde> <Multi_key> <b> <a> : "ẵ" U1EB5 # LATIN SMALL LETTER A WITH BREVE AND TILDE
+<dead_breve> <U1ea0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <U1ea0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <U1ea0> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <Multi_key> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <dead_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <exclam> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <combining_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <combining_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <combining_belowdot> <A> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_belowdot> <Abreve> : "Ặ" U1EB6 # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <U1ea1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <U1ea1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <U1ea1> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <Multi_key> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <dead_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <exclam> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_breve> <combining_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <U> <combining_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<Multi_key> <b> <combining_belowdot> <a> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_belowdot> <abreve> : "ặ" U1EB7 # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+<dead_belowdot> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
+<Multi_key> <exclam> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
+<combining_belowdot> <E> : "Ẹ" U1EB8 # LATIN CAPITAL LETTER E WITH DOT BELOW
+<dead_belowdot> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
+<Multi_key> <exclam> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
+<combining_belowdot> <e> : "ẹ" U1EB9 # LATIN SMALL LETTER E WITH DOT BELOW
+<dead_hook> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+<Multi_key> <question> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+<combining_hook> <E> : "Ẻ" U1EBA # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+<dead_hook> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
+<Multi_key> <question> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
+<combining_hook> <e> : "ẻ" U1EBB # LATIN SMALL LETTER E WITH HOOK ABOVE
+<dead_tilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE
+<Multi_key> <asciitilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE
+<combining_tilde> <E> : "Ẽ" U1EBC # LATIN CAPITAL LETTER E WITH TILDE
+<dead_tilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE
+<Multi_key> <asciitilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE
+<combining_tilde> <e> : "ẽ" U1EBD # LATIN SMALL LETTER E WITH TILDE
+<dead_acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Ecircumflex> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <E> : "Ế" U1EBE # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <ecircumflex> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <e> : "ế" U1EBF # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+<dead_grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Ecircumflex> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <E> : "Ề" U1EC0 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <ecircumflex> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <ecircumflex> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <ecircumflex> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <e> : "á»" U1EC1 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+<dead_hook> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Ecircumflex> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <E> : "Ể" U1EC2 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <ecircumflex> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <e> : "ể" U1EC3 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_tilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Ecircumflex> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <E> : "Ễ" U1EC4 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <ecircumflex> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <ecircumflex> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <ecircumflex> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <e> : "á»…" U1EC5 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+<dead_circumflex> <U1eb8> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1eb8> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <E> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_belowdot> <Ecircumflex> : "Ệ" U1EC6 # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <U1eb9> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1eb9> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <e> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_belowdot> <ecircumflex> : "ệ" U1EC7 # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+<dead_hook> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+<Multi_key> <question> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+<combining_hook> <I> : "Ỉ" U1EC8 # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+<dead_hook> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
+<Multi_key> <question> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
+<combining_hook> <i> : "ỉ" U1EC9 # LATIN SMALL LETTER I WITH HOOK ABOVE
+<dead_belowdot> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
+<Multi_key> <exclam> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
+<combining_belowdot> <I> : "Ị" U1ECA # LATIN CAPITAL LETTER I WITH DOT BELOW
+<dead_belowdot> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW
+<Multi_key> <exclam> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW
+<combining_belowdot> <i> : "ị" U1ECB # LATIN SMALL LETTER I WITH DOT BELOW
+<dead_belowdot> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
+<Multi_key> <exclam> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
+<combining_belowdot> <O> : "Ọ" U1ECC # LATIN CAPITAL LETTER O WITH DOT BELOW
+<dead_belowdot> <o> : "á»" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW
+<Multi_key> <exclam> <o> : "á»" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW
+<combining_belowdot> <o> : "á»" U1ECD # LATIN SMALL LETTER O WITH DOT BELOW
+<dead_hook> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+<Multi_key> <question> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+<combining_hook> <O> : "Ỏ" U1ECE # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+<dead_hook> <o> : "á»" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
+<Multi_key> <question> <o> : "á»" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
+<combining_hook> <o> : "á»" U1ECF # LATIN SMALL LETTER O WITH HOOK ABOVE
+<dead_acute> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Ocircumflex> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <O> : "á»" U1ED0 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_acute> <Multi_key> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <acute> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<Multi_key> <apostrophe> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <ocircumflex> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <dead_circumflex> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<combining_acute> <Multi_key> <asciicircum> <o> : "ố" U1ED1 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+<dead_grave> <Ocircumflex> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <Ocircumflex> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Ocircumflex> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <O> : "á»’" U1ED2 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_grave> <Multi_key> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<Multi_key> <grave> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <ocircumflex> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <dead_circumflex> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<combining_grave> <Multi_key> <asciicircum> <o> : "ồ" U1ED3 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+<dead_hook> <Ocircumflex> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <Ocircumflex> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Ocircumflex> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <O> : "á»”" U1ED4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_hook> <Multi_key> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<Multi_key> <question> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <ocircumflex> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <dead_circumflex> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<combining_hook> <Multi_key> <asciicircum> <o> : "ổ" U1ED5 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+<dead_tilde> <Ocircumflex> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <Ocircumflex> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Ocircumflex> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <O> : "á»–" U1ED6 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <ocircumflex> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <ocircumflex> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <dead_circumflex> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_tilde> <Multi_key> <asciicircum> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <dead_circumflex> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<Multi_key> <asciitilde> <asciicircum> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <ocircumflex> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <dead_circumflex> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<combining_tilde> <Multi_key> <asciicircum> <o> : "á»—" U1ED7 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+<dead_circumflex> <U1ecc> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ecc> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <O> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_belowdot> <Ocircumflex> : "Ộ" U1ED8 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <U1ecd> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <U1ecd> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <dead_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <Multi_key> <exclam> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <dead_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <exclam> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_circumflex> <combining_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<Multi_key> <asciicircum> <combining_belowdot> <o> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_belowdot> <ocircumflex> : "á»™" U1ED9 # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+<dead_acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <U01A0> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<combining_acute> <Ohorn> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <O> : "Ớ" U1EDA # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+<dead_acute> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_acute> <U01A1> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<combining_acute> <ohorn> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <o> : "á»›" U1EDB # LATIN SMALL LETTER O WITH HORN AND ACUTE
+<dead_grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <U01A0> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<combining_grave> <Ohorn> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <O> : "Ờ" U1EDC # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+<dead_grave> <ohorn> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_grave> <U01A1> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <ohorn> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<combining_grave> <ohorn> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <o> : "á»" U1EDD # LATIN SMALL LETTER O WITH HORN AND GRAVE
+<dead_hook> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <U01A0> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <Ohorn> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <O> : "Ở" U1EDE # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <U01A1> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <ohorn> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <o> : "ở" U1EDF # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+<dead_tilde> <Ohorn> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <U01A0> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <Ohorn> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<combining_tilde> <Ohorn> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <O> : "á» " U1EE0 # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+<dead_tilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_tilde> <U01A1> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<combining_tilde> <ohorn> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <o> : "ỡ" U1EE1 # LATIN SMALL LETTER O WITH HORN AND TILDE
+<dead_belowdot> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <U01A0> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <Ohorn> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <O> : "Ợ" U1EE2 # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <U01A1> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <ohorn> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <o> : "ợ" U1EE3 # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+<dead_belowdot> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
+<Multi_key> <exclam> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
+<combining_belowdot> <U> : "Ụ" U1EE4 # LATIN CAPITAL LETTER U WITH DOT BELOW
+<dead_belowdot> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
+<Multi_key> <exclam> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
+<combining_belowdot> <u> : "ụ" U1EE5 # LATIN SMALL LETTER U WITH DOT BELOW
+<dead_hook> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+<Multi_key> <question> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+<combining_hook> <U> : "Ủ" U1EE6 # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+<dead_hook> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
+<Multi_key> <question> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
+<combining_hook> <u> : "ủ" U1EE7 # LATIN SMALL LETTER U WITH HOOK ABOVE
+<dead_acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <U01AF> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<combining_acute> <Uhorn> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <U> : "Ứ" U1EE8 # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+<dead_acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_acute> <U01B0> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_acute> <Multi_key> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <acute> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<Multi_key> <apostrophe> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<combining_acute> <uhorn> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<combining_acute> <dead_horn> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<combining_acute> <Multi_key> <plus> <u> : "ứ" U1EE9 # LATIN SMALL LETTER U WITH HORN AND ACUTE
+<dead_grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <U01AF> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<combining_grave> <Uhorn> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <U> : "Ừ" U1EEA # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+<dead_grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_grave> <U01B0> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_grave> <Multi_key> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<Multi_key> <grave> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<combining_grave> <uhorn> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<combining_grave> <dead_horn> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<combining_grave> <Multi_key> <plus> <u> : "ừ" U1EEB # LATIN SMALL LETTER U WITH HORN AND GRAVE
+<dead_hook> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <U01AF> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <Uhorn> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <U> : "Ử" U1EEC # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <uhorn> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <U01B0> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <uhorn> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <dead_horn> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_hook> <Multi_key> <plus> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <dead_horn> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<Multi_key> <question> <plus> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <uhorn> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <dead_horn> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<combining_hook> <Multi_key> <plus> <u> : "á»­" U1EED # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+<dead_tilde> <Uhorn> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <U01AF> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <Uhorn> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<combining_tilde> <Uhorn> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <U> : "á»®" U1EEE # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+<dead_tilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_tilde> <U01B0> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_tilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_tilde> <Multi_key> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<Multi_key> <asciitilde> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<combining_tilde> <uhorn> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<combining_tilde> <dead_horn> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<combining_tilde> <Multi_key> <plus> <u> : "ữ" U1EEF # LATIN SMALL LETTER U WITH HORN AND TILDE
+<dead_belowdot> <Uhorn> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <U01AF> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <Uhorn> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <Uhorn> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <U> : "á»°" U1EF0 # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <uhorn> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <U01B0> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <uhorn> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <dead_horn> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_belowdot> <Multi_key> <plus> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <dead_horn> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<Multi_key> <exclam> <plus> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <uhorn> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <dead_horn> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<combining_belowdot> <Multi_key> <plus> <u> : "á»±" U1EF1 # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+<dead_grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
+<Multi_key> <grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
+<combining_grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
+<dead_grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
+<Multi_key> <grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
+<combining_grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
+<dead_belowdot> <Y> : "á»´" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
+<Multi_key> <exclam> <Y> : "á»´" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
+<combining_belowdot> <Y> : "á»´" U1EF4 # LATIN CAPITAL LETTER Y WITH DOT BELOW
+<dead_belowdot> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
+<Multi_key> <exclam> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
+<combining_belowdot> <y> : "ỵ" U1EF5 # LATIN SMALL LETTER Y WITH DOT BELOW
+<dead_hook> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+<Multi_key> <question> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+<combining_hook> <Y> : "Ỷ" U1EF6 # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+<dead_hook> <y> : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
+<Multi_key> <question> <y> : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
+<combining_hook> <y> : "á»·" U1EF7 # LATIN SMALL LETTER Y WITH HOOK ABOVE
+<dead_tilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
+<Multi_key> <asciitilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
+<combining_tilde> <Y> : "Ỹ" U1EF8 # LATIN CAPITAL LETTER Y WITH TILDE
+<dead_tilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE
+<Multi_key> <asciitilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE
+<combining_tilde> <y> : "ỹ" U1EF9 # LATIN SMALL LETTER Y WITH TILDE
+<U0313> <Greek_alpha> : "á¼€" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI
+<Multi_key> <parenright> <Greek_alpha> : "á¼€" U1F00 # GREEK SMALL LETTER ALPHA WITH PSILI
+<U0314> <Greek_alpha> : "á¼" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA
+<Multi_key> <parenleft> <Greek_alpha> : "á¼" U1F01 # GREEK SMALL LETTER ALPHA WITH DASIA
+<dead_grave> <U1f00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U1f00> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_alpha> : "ἂ" U1F02 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U1f01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U1f01> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_alpha> : "ἃ" U1F03 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+<dead_acute> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U1f00> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_alpha> : "ἄ" U1F04 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U1f01> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¼…" U1F05 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+<U0342> <U1f00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f00> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_alpha> : "ἆ" U1F06 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U1f01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f01> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_alpha> : "ἇ" U1F07 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_ALPHA> : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI
+<Multi_key> <parenright> <Greek_ALPHA> : "Ἀ" U1F08 # GREEK CAPITAL LETTER ALPHA WITH PSILI
+<U0314> <Greek_ALPHA> : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA
+<Multi_key> <parenleft> <Greek_ALPHA> : "Ἁ" U1F09 # GREEK CAPITAL LETTER ALPHA WITH DASIA
+<dead_grave> <U1f08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U1f08> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_ALPHA> : "Ἂ" U1F0A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+<dead_grave> <U1f09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U1f09> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "Ἃ" U1F0B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+<dead_acute> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U1f08> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_ALPHA> : "Ἄ" U1F0C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+<dead_acute> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U1f09> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+<U0342> <U1f08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f08> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_ALPHA> : "Ἆ" U1F0E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+<U0342> <U1f09> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f09> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f09> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_ALPHA> : "á¼" U1F0F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_epsilon> : "á¼" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI
+<Multi_key> <parenright> <Greek_epsilon> : "á¼" U1F10 # GREEK SMALL LETTER EPSILON WITH PSILI
+<U0314> <Greek_epsilon> : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_epsilon> : "ἑ" U1F11 # GREEK SMALL LETTER EPSILON WITH DASIA
+<dead_grave> <U1f10> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f10> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U1f10> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_epsilon> : "á¼’" U1F12 # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U1f11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f11> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_epsilon> : "ἓ" U1F13 # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U1f10> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_epsilon> : "á¼”" U1F14 # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f11> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_epsilon> : "ἕ" U1F15 # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+<U0313> <Greek_EPSILON> : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI
+<Multi_key> <parenright> <Greek_EPSILON> : "Ἐ" U1F18 # GREEK CAPITAL LETTER EPSILON WITH PSILI
+<U0314> <Greek_EPSILON> : "á¼™" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_EPSILON> : "á¼™" U1F19 # GREEK CAPITAL LETTER EPSILON WITH DASIA
+<dead_grave> <U1f18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U1f18> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_EPSILON> : "Ἒ" U1F1A # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+<dead_grave> <U1f19> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f19> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f19> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼›" U1F1B # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U1f18> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_EPSILON> : "Ἔ" U1F1C # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+<dead_acute> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f19> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_EPSILON> : "á¼" U1F1D # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+<U0313> <Greek_eta> : "á¼ " U1F20 # GREEK SMALL LETTER ETA WITH PSILI
+<Multi_key> <parenright> <Greek_eta> : "á¼ " U1F20 # GREEK SMALL LETTER ETA WITH PSILI
+<U0314> <Greek_eta> : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA
+<Multi_key> <parenleft> <Greek_eta> : "ἡ" U1F21 # GREEK SMALL LETTER ETA WITH DASIA
+<dead_grave> <U1f20> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f20> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U1f20> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_eta> : "á¼¢" U1F22 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U1f21> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f21> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U1f21> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_eta> : "á¼£" U1F23 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+<dead_acute> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U1f20> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_eta> : "ἤ" U1F24 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U1f21> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_eta> : "á¼¥" U1F25 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+<U0342> <U1f20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f20> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_eta> : "ἦ" U1F26 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U1f21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f21> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_eta> : "ἧ" U1F27 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_ETA> : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI
+<Multi_key> <parenright> <Greek_ETA> : "Ἠ" U1F28 # GREEK CAPITAL LETTER ETA WITH PSILI
+<U0314> <Greek_ETA> : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA
+<Multi_key> <parenleft> <Greek_ETA> : "Ἡ" U1F29 # GREEK CAPITAL LETTER ETA WITH DASIA
+<dead_grave> <U1f28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U1f28> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_ETA> : "Ἢ" U1F2A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+<dead_grave> <U1f29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U1f29> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_ETA> : "Ἣ" U1F2B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+<dead_acute> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U1f28> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_ETA> : "Ἤ" U1F2C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+<dead_acute> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U1f29> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¼­" U1F2D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+<U0342> <U1f28> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f28> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f28> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_ETA> : "á¼®" U1F2E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+<U0342> <U1f29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f29> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_ETA> : "Ἧ" U1F2F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_iota> : "á¼°" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI
+<Multi_key> <parenright> <Greek_iota> : "á¼°" U1F30 # GREEK SMALL LETTER IOTA WITH PSILI
+<U0314> <Greek_iota> : "á¼±" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA
+<Multi_key> <parenleft> <Greek_iota> : "á¼±" U1F31 # GREEK SMALL LETTER IOTA WITH DASIA
+<dead_grave> <U1f30> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f30> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U1f30> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_iota> : "á¼²" U1F32 # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U1f31> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f31> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U1f31> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_iota> : "á¼³" U1F33 # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+<dead_acute> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U1f30> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_iota> : "á¼´" U1F34 # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U1f31> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_iota> : "á¼µ" U1F35 # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+<U0342> <U1f30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f30> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_iota> : "ἶ" U1F36 # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U1f31> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f31> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f31> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_iota> : "á¼·" U1F37 # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_IOTA> : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI
+<Multi_key> <parenright> <Greek_IOTA> : "Ἰ" U1F38 # GREEK CAPITAL LETTER IOTA WITH PSILI
+<U0314> <Greek_IOTA> : "á¼¹" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA
+<Multi_key> <parenleft> <Greek_IOTA> : "á¼¹" U1F39 # GREEK CAPITAL LETTER IOTA WITH DASIA
+<dead_grave> <U1f38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U1f38> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_IOTA> : "Ἲ" U1F3A # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+<dead_grave> <U1f39> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f39> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U1f39> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_IOTA> : "á¼»" U1F3B # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+<dead_acute> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U1f38> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_IOTA> : "á¼¼" U1F3C # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+<dead_acute> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U1f39> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_IOTA> : "á¼½" U1F3D # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+<U0342> <U1f38> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f38> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f38> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_IOTA> : "á¼¾" U1F3E # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+<U0342> <U1f39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f39> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_IOTA> : "Ἷ" U1F3F # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_omicron> : "á½€" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI
+<Multi_key> <parenright> <Greek_omicron> : "á½€" U1F40 # GREEK SMALL LETTER OMICRON WITH PSILI
+<U0314> <Greek_omicron> : "á½" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA
+<Multi_key> <parenleft> <Greek_omicron> : "á½" U1F41 # GREEK SMALL LETTER OMICRON WITH DASIA
+<dead_grave> <U1f40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U1f40> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_omicron> : "ὂ" U1F42 # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U1f41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U1f41> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_omicron> : "ὃ" U1F43 # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+<dead_acute> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U1f40> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_omicron> : "ὄ" U1F44 # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U1f41> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_omicron> : "á½…" U1F45 # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+<U0313> <Greek_OMICRON> : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI
+<Multi_key> <parenright> <Greek_OMICRON> : "Ὀ" U1F48 # GREEK CAPITAL LETTER OMICRON WITH PSILI
+<U0314> <Greek_OMICRON> : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA
+<Multi_key> <parenleft> <Greek_OMICRON> : "Ὁ" U1F49 # GREEK CAPITAL LETTER OMICRON WITH DASIA
+<dead_grave> <U1f48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U1f48> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_OMICRON> : "Ὂ" U1F4A # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+<dead_grave> <U1f49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U1f49> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_OMICRON> : "Ὃ" U1F4B # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+<dead_acute> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U1f48> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_OMICRON> : "Ὄ" U1F4C # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+<dead_acute> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U1f49> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_OMICRON> : "á½" U1F4D # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+<U0313> <Greek_upsilon> : "á½" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI
+<Multi_key> <parenright> <Greek_upsilon> : "á½" U1F50 # GREEK SMALL LETTER UPSILON WITH PSILI
+<U0314> <Greek_upsilon> : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_upsilon> : "ὑ" U1F51 # GREEK SMALL LETTER UPSILON WITH DASIA
+<dead_grave> <U1f50> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f50> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<combining_grave> <U1f50> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_upsilon> : "á½’" U1F52 # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+<dead_grave> <U1f51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f51> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_upsilon> : "ὓ" U1F53 # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<combining_acute> <U1f50> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_upsilon> : "á½”" U1F54 # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+<dead_acute> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f51> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_upsilon> : "ὕ" U1F55 # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+<U0342> <U1f50> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f50> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f50> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_upsilon> : "á½–" U1F56 # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+<U0342> <U1f51> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f51> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f51> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_upsilon> : "á½—" U1F57 # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0314> <Greek_UPSILON> : "á½™" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA
+<Multi_key> <parenleft> <Greek_UPSILON> : "á½™" U1F59 # GREEK CAPITAL LETTER UPSILON WITH DASIA
+<dead_grave> <U1f59> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f59> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U1f59> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_UPSILON> : "á½›" U1F5B # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+<dead_acute> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U1f59> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_UPSILON> : "á½" U1F5D # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+<U0342> <U1f59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f59> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_UPSILON> : "Ὗ" U1F5F # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+<U0313> <Greek_omega> : "á½ " U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI
+<Multi_key> <parenright> <Greek_omega> : "á½ " U1F60 # GREEK SMALL LETTER OMEGA WITH PSILI
+<U0314> <Greek_omega> : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA
+<Multi_key> <parenleft> <Greek_omega> : "ὡ" U1F61 # GREEK SMALL LETTER OMEGA WITH DASIA
+<dead_grave> <U1f60> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f60> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U1f60> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_omega> : "á½¢" U1F62 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U1f61> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f61> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U1f61> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_omega> : "á½£" U1F63 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+<dead_acute> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U1f60> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_omega> : "ὤ" U1F64 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U1f61> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_omega> : "á½¥" U1F65 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+<U0342> <U1f60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f60> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_omega> : "ὦ" U1F66 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U1f61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f61> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_omega> : "ὧ" U1F67 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0313> <Greek_OMEGA> : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI
+<Multi_key> <parenright> <Greek_OMEGA> : "Ὠ" U1F68 # GREEK CAPITAL LETTER OMEGA WITH PSILI
+<U0314> <Greek_OMEGA> : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA
+<Multi_key> <parenleft> <Greek_OMEGA> : "Ὡ" U1F69 # GREEK CAPITAL LETTER OMEGA WITH DASIA
+<dead_grave> <U1f68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U1f68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U0313> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <Multi_key> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <U0313> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<Multi_key> <grave> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U1f68> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <U0313> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<combining_grave> <Multi_key> <parenright> <Greek_OMEGA> : "Ὢ" U1F6A # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+<dead_grave> <U1f69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U1f69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <U0314> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<dead_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <U0314> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<Multi_key> <grave> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U1f69> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <U0314> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<combining_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὣ" U1F6B # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+<dead_acute> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <Multi_key> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <acute> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<Multi_key> <apostrophe> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U1f68> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <U0313> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<combining_acute> <Multi_key> <parenright> <Greek_OMEGA> : "Ὤ" U1F6C # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+<dead_acute> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<dead_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <acute> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<Multi_key> <apostrophe> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U1f69> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <U0314> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<combining_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á½­" U1F6D # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+<U0342> <U1f68> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U1f68> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f68> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U0313> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <Multi_key> <parenright> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <U0313> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenright> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <U0313> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<Multi_key> <asciitilde> <parenright> <Greek_OMEGA> : "á½®" U1F6E # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+<U0342> <U1f69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U1f69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U1f69> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <U0314> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<U0342> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <U0314> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_tilde> <Multi_key> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <U0314> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<Multi_key> <asciitilde> <parenleft> <Greek_OMEGA> : "Ὧ" U1F6F # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+<dead_grave> <Greek_alpha> : "á½°" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA
+<Multi_key> <grave> <Greek_alpha> : "á½°" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA
+<combining_grave> <Greek_alpha> : "á½°" U1F70 # GREEK SMALL LETTER ALPHA WITH VARIA
+<dead_grave> <Greek_epsilon> : "á½²" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA
+<Multi_key> <grave> <Greek_epsilon> : "á½²" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA
+<combining_grave> <Greek_epsilon> : "á½²" U1F72 # GREEK SMALL LETTER EPSILON WITH VARIA
+<dead_grave> <Greek_eta> : "á½´" U1F74 # GREEK SMALL LETTER ETA WITH VARIA
+<Multi_key> <grave> <Greek_eta> : "á½´" U1F74 # GREEK SMALL LETTER ETA WITH VARIA
+<combining_grave> <Greek_eta> : "á½´" U1F74 # GREEK SMALL LETTER ETA WITH VARIA
+<dead_grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA
+<Multi_key> <grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA
+<combining_grave> <Greek_iota> : "ὶ" U1F76 # GREEK SMALL LETTER IOTA WITH VARIA
+<dead_grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA
+<Multi_key> <grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA
+<combining_grave> <Greek_omicron> : "ὸ" U1F78 # GREEK SMALL LETTER OMICRON WITH VARIA
+<dead_grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA
+<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA
+<combining_grave> <Greek_upsilon> : "ὺ" U1F7A # GREEK SMALL LETTER UPSILON WITH VARIA
+<dead_grave> <Greek_omega> : "á½¼" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA
+<Multi_key> <grave> <Greek_omega> : "á½¼" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA
+<combining_grave> <Greek_omega> : "á½¼" U1F7C # GREEK SMALL LETTER OMEGA WITH VARIA
+<dead_iota> <U1f00> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f00> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U0313> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_alpha> : "á¾€" U1F80 # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U1f01> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f01> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U0314> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_alpha> : "á¾" U1F81 # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U1f02> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f02> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f00> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_alpha> : "ᾂ" U1F82 # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f03> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f03> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f01> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_alpha> : "ᾃ" U1F83 # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f04> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f04> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f00> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_alpha> : "ᾄ" U1F84 # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f05> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f05> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f01> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_alpha> : "á¾…" U1F85 # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f06> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f06> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f00> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_alpha> : "ᾆ" U1F86 # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f07> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f07> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f01> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_alpha> : "ᾇ" U1F87 # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f08> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f08> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U0313> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_ALPHA> : "ᾈ" U1F88 # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U1f09> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f09> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U0314> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_ALPHA> : "ᾉ" U1F89 # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0a> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0a> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f08> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_ALPHA> : "ᾊ" U1F8A # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0b> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0b> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f09> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_ALPHA> : "ᾋ" U1F8B # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0c> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0c> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f08> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_ALPHA> : "ᾌ" U1F8C # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0d> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0d> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f09> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_ALPHA> : "á¾" U1F8D # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f0e> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0e> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f08> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_ALPHA> : "ᾎ" U1F8E # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f0f> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f0f> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f09> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_ALPHA> : "á¾" U1F8F # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f20> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f20> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U0313> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_eta> : "á¾" U1F90 # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U1f21> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f21> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U0314> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_eta> : "ᾑ" U1F91 # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U1f22> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f22> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f20> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_eta> : "á¾’" U1F92 # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f23> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f23> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f21> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_eta> : "ᾓ" U1F93 # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f24> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f24> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f20> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_eta> : "á¾”" U1F94 # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f25> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f25> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f21> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_eta> : "ᾕ" U1F95 # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f26> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f26> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f20> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_eta> : "á¾–" U1F96 # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f27> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f27> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f21> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_eta> : "á¾—" U1F97 # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f28> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f28> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U0313> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_ETA> : "ᾘ" U1F98 # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U1f29> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f29> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U0314> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_ETA> : "á¾™" U1F99 # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2a> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2a> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f28> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_ETA> : "ᾚ" U1F9A # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2b> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2b> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f29> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_ETA> : "á¾›" U1F9B # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2c> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2c> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f28> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_ETA> : "ᾜ" U1F9C # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2d> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2d> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f29> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_ETA> : "á¾" U1F9D # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f2e> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2e> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f28> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_ETA> : "ᾞ" U1F9E # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f2f> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f2f> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f29> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_ETA> : "ᾟ" U1F9F # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f60> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f60> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U0313> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_omega> : "á¾ " U1FA0 # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+<dead_iota> <U1f61> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f61> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U0314> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_omega> : "ᾡ" U1FA1 # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+<dead_iota> <U1f62> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f62> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f60> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_omega> : "á¾¢" U1FA2 # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f63> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f63> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f61> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_omega> : "á¾£" U1FA3 # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+<dead_iota> <U1f64> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f64> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f60> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_omega> : "ᾤ" U1FA4 # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f65> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f65> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f61> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_omega> : "á¾¥" U1FA5 # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+<dead_iota> <U1f66> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f66> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f60> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_omega> : "ᾦ" U1FA6 # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f67> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f67> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f61> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_omega> : "ᾧ" U1FA7 # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U1f68> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f68> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U0313> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenright> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0313> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenright> <Greek_OMEGA> : "ᾨ" U1FA8 # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+<dead_iota> <U1f69> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f69> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U0314> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0314> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <parenleft> <Greek_OMEGA> : "ᾩ" U1FA9 # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6a> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6a> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f68> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0313> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenright> <Greek_OMEGA> : "ᾪ" U1FAA # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6b> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6b> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <dead_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U1f69> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <combining_grave> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <U0314> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <parenleft> <Greek_OMEGA> : "ᾫ" U1FAB # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6c> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6c> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f68> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0313> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenright> <Greek_OMEGA> : "ᾬ" U1FAC # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6d> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6d> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <dead_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U1f69> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <combining_acute> <Multi_key> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <U0314> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <parenleft> <Greek_OMEGA> : "á¾­" U1FAD # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+<dead_iota> <U1f6e> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6e> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f68> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0313> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenright> <Greek_OMEGA> : "á¾®" U1FAE # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U1f6f> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f6f> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U1f69> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <U0342> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <dead_tilde> <Multi_key> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <U0314> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <parenleft> <Greek_OMEGA> : "ᾯ" U1FAF # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+<dead_breve> <Greek_alpha> : "á¾°" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY
+<Multi_key> <U> <Greek_alpha> : "á¾°" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY
+<Multi_key> <b> <Greek_alpha> : "á¾°" U1FB0 # GREEK SMALL LETTER ALPHA WITH VRACHY
+<dead_macron> <Greek_alpha> : "á¾±" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON
+<Multi_key> <macron> <Greek_alpha> : "á¾±" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON
+<Multi_key> <underscore> <Greek_alpha> : "á¾±" U1FB1 # GREEK SMALL LETTER ALPHA WITH MACRON
+<dead_iota> <U1f70> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f70> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <Greek_alpha> : "á¾²" U1FB2 # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Greek_alpha> : "á¾³" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_alpha> : "á¾³" U1FB3 # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+<dead_iota> <Greek_alphaaccent> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_alphaaccent> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <Greek_alpha> : "á¾´" U1FB4 # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+<U0342> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+<dead_tilde> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1FB6 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+<dead_iota> <U1fb6> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1fb6> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <Greek_alpha> : "á¾·" U1FB7 # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_breve> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+<Multi_key> <U> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+<Multi_key> <b> <Greek_ALPHA> : "Ᾰ" U1FB8 # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+<dead_macron> <Greek_ALPHA> : "á¾¹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON
+<Multi_key> <macron> <Greek_ALPHA> : "á¾¹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON
+<Multi_key> <underscore> <Greek_ALPHA> : "á¾¹" U1FB9 # GREEK CAPITAL LETTER ALPHA WITH MACRON
+<dead_grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA
+<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA
+<combining_grave> <Greek_ALPHA> : "Ὰ" U1FBA # GREEK CAPITAL LETTER ALPHA WITH VARIA
+<dead_iota> <Greek_ALPHA> : "á¾¼" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_ALPHA> : "á¾¼" U1FBC # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+<Multi_key> <diaeresis> <U0342> : "á¿" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI
+<Multi_key> <diaeresis> <dead_tilde> : "á¿" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI
+<Multi_key> <diaeresis> <asciitilde> : "á¿" U1FC1 # GREEK DIALYTIKA AND PERISPOMENI
+<dead_iota> <U1f74> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f74> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <Greek_eta> : "á¿‚" U1FC2 # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Greek_eta> : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_eta> : "ῃ" U1FC3 # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+<dead_iota> <Greek_etaaccent> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_etaaccent> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <Greek_eta> : "á¿„" U1FC4 # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+<U0342> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI
+<dead_tilde> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1FC6 # GREEK SMALL LETTER ETA WITH PERISPOMENI
+<dead_iota> <U1fc6> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1fc6> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <Greek_eta> : "ῇ" U1FC7 # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA
+<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA
+<combining_grave> <Greek_EPSILON> : "Ὲ" U1FC8 # GREEK CAPITAL LETTER EPSILON WITH VARIA
+<dead_grave> <Greek_ETA> : "á¿Š" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA
+<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA
+<combining_grave> <Greek_ETA> : "á¿Š" U1FCA # GREEK CAPITAL LETTER ETA WITH VARIA
+<dead_iota> <Greek_ETA> : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_ETA> : "ῌ" U1FCC # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+<Multi_key> <U1fbf> <dead_grave> : "á¿" U1FCD # GREEK PSILI AND VARIA
+<Multi_key> <U1fbf> <grave> : "á¿" U1FCD # GREEK PSILI AND VARIA
+<Multi_key> <U1fbf> <combining_grave> : "á¿" U1FCD # GREEK PSILI AND VARIA
+<Multi_key> <U1fbf> <dead_acute> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <acute> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <apostrophe> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <combining_acute> : "á¿Ž" U1FCE # GREEK PSILI AND OXIA
+<Multi_key> <U1fbf> <U0342> : "á¿" U1FCF # GREEK PSILI AND PERISPOMENI
+<Multi_key> <U1fbf> <dead_tilde> : "á¿" U1FCF # GREEK PSILI AND PERISPOMENI
+<Multi_key> <U1fbf> <asciitilde> : "á¿" U1FCF # GREEK PSILI AND PERISPOMENI
+<dead_breve> <Greek_iota> : "á¿" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY
+<Multi_key> <U> <Greek_iota> : "á¿" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY
+<Multi_key> <b> <Greek_iota> : "á¿" U1FD0 # GREEK SMALL LETTER IOTA WITH VRACHY
+<dead_macron> <Greek_iota> : "á¿‘" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON
+<Multi_key> <macron> <Greek_iota> : "á¿‘" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON
+<Multi_key> <underscore> <Greek_iota> : "á¿‘" U1FD1 # GREEK SMALL LETTER IOTA WITH MACRON
+<dead_grave> <Greek_iotadieresis> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <Greek_iotadieresis> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<dead_grave> <Multi_key> <quotedbl> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<combining_grave> <Greek_iotadieresis> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<combining_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<combining_grave> <Multi_key> <quotedbl> <Greek_iota> : "á¿’" U1FD2 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+<U0342> <Greek_iota> : "á¿–" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+<dead_tilde> <Greek_iota> : "á¿–" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1FD6 # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+<U0342> <Greek_iotadieresis> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Greek_iotadieresis> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <Greek_iotadieresis> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<U0342> <dead_diaeresis> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<U0342> <Multi_key> <quotedbl> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Multi_key> <quotedbl> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1FD7 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+<dead_breve> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY
+<Multi_key> <U> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY
+<Multi_key> <b> <Greek_IOTA> : "Ῐ" U1FD8 # GREEK CAPITAL LETTER IOTA WITH VRACHY
+<dead_macron> <Greek_IOTA> : "á¿™" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON
+<Multi_key> <macron> <Greek_IOTA> : "á¿™" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON
+<Multi_key> <underscore> <Greek_IOTA> : "á¿™" U1FD9 # GREEK CAPITAL LETTER IOTA WITH MACRON
+<dead_grave> <Greek_IOTA> : "á¿š" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA
+<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA
+<combining_grave> <Greek_IOTA> : "á¿š" U1FDA # GREEK CAPITAL LETTER IOTA WITH VARIA
+<Multi_key> <U1ffe> <dead_grave> : "á¿" U1FDD # GREEK DASIA AND VARIA
+<Multi_key> <U1ffe> <grave> : "á¿" U1FDD # GREEK DASIA AND VARIA
+<Multi_key> <U1ffe> <combining_grave> : "á¿" U1FDD # GREEK DASIA AND VARIA
+<Multi_key> <U1ffe> <dead_acute> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <acute> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <apostrophe> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <combining_acute> : "á¿ž" U1FDE # GREEK DASIA AND OXIA
+<Multi_key> <U1ffe> <U0342> : "á¿Ÿ" U1FDF # GREEK DASIA AND PERISPOMENI
+<Multi_key> <U1ffe> <dead_tilde> : "á¿Ÿ" U1FDF # GREEK DASIA AND PERISPOMENI
+<Multi_key> <U1ffe> <asciitilde> : "á¿Ÿ" U1FDF # GREEK DASIA AND PERISPOMENI
+<dead_breve> <Greek_upsilon> : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY
+<Multi_key> <U> <Greek_upsilon> : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY
+<Multi_key> <b> <Greek_upsilon> : "á¿ " U1FE0 # GREEK SMALL LETTER UPSILON WITH VRACHY
+<dead_macron> <Greek_upsilon> : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON
+<Multi_key> <macron> <Greek_upsilon> : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON
+<Multi_key> <underscore> <Greek_upsilon> : "á¿¡" U1FE1 # GREEK SMALL LETTER UPSILON WITH MACRON
+<dead_grave> <Greek_upsilondieresis> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <Greek_upsilondieresis> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<dead_grave> <Multi_key> <quotedbl> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<combining_grave> <Greek_upsilondieresis> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<combining_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<combining_grave> <Multi_key> <quotedbl> <Greek_upsilon> : "á¿¢" U1FE2 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+<U0313> <Greek_rho> : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI
+<Multi_key> <parenright> <Greek_rho> : "ῤ" U1FE4 # GREEK SMALL LETTER RHO WITH PSILI
+<U0314> <Greek_rho> : "á¿¥" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA
+<Multi_key> <parenleft> <Greek_rho> : "á¿¥" U1FE5 # GREEK SMALL LETTER RHO WITH DASIA
+<U0342> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+<dead_tilde> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1FE6 # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+<U0342> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <Greek_upsilondieresis> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<U0342> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<U0342> <Multi_key> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_tilde> <Multi_key> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1FE7 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+<dead_breve> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+<Multi_key> <U> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+<Multi_key> <b> <Greek_UPSILON> : "Ῠ" U1FE8 # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+<dead_macron> <Greek_UPSILON> : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON
+<Multi_key> <macron> <Greek_UPSILON> : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON
+<Multi_key> <underscore> <Greek_UPSILON> : "á¿©" U1FE9 # GREEK CAPITAL LETTER UPSILON WITH MACRON
+<dead_grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA
+<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA
+<combining_grave> <Greek_UPSILON> : "Ὺ" U1FEA # GREEK CAPITAL LETTER UPSILON WITH VARIA
+<U0314> <Greek_RHO> : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA
+<Multi_key> <parenleft> <Greek_RHO> : "Ῥ" U1FEC # GREEK CAPITAL LETTER RHO WITH DASIA
+<Multi_key> <diaeresis> <dead_grave> : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA
+<Multi_key> <diaeresis> <grave> : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA
+<Multi_key> <diaeresis> <combining_grave> : "á¿­" U1FED # GREEK DIALYTIKA AND VARIA
+<dead_iota> <U1f7c> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1f7c> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <combining_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_grave> <Greek_omega> : "ῲ" U1FF2 # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+<dead_iota> <Greek_omega> : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_omega> : "ῳ" U1FF3 # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+<dead_iota> <Greek_omegaaccent> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_omegaaccent> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <apostrophe> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <apostrophe> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<dead_iota> <combining_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <combining_acute> <Greek_omega> : "á¿´" U1FF4 # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+<U0342> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+<dead_tilde> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1FF6 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+<dead_iota> <U1ff6> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U1ff6> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <U0342> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_iota> <Multi_key> <asciitilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <U0342> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <dead_tilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<Multi_key> <Greek_iota> <asciitilde> <Greek_omega> : "á¿·" U1FF7 # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+<dead_grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA
+<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA
+<combining_grave> <Greek_OMICRON> : "Ὸ" U1FF8 # GREEK CAPITAL LETTER OMICRON WITH VARIA
+<dead_grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA
+<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA
+<combining_grave> <Greek_OMEGA> : "Ὼ" U1FFA # GREEK CAPITAL LETTER OMEGA WITH VARIA
+<dead_iota> <Greek_OMEGA> : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+<Multi_key> <Greek_iota> <Greek_OMEGA> : "ῼ" U1FFC # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+<dead_circumflex> <0> : "â°" U2070 # SUPERSCRIPT ZERO
+<Multi_key> <asciicircum> <0> : "â°" U2070 # SUPERSCRIPT ZERO
+<dead_circumflex> <KP_0> : "â°" U2070 # SUPERSCRIPT ZERO
+<Multi_key> <asciicircum> <KP_0> : "â°" U2070 # SUPERSCRIPT ZERO
+<dead_circumflex> <Multi_key> <underscore> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<Multi_key> <asciicircum> <underscore> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<dead_circumflex> <Multi_key> <underbar> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<Multi_key> <asciicircum> <underbar> <i> : "â±" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
+<dead_circumflex> <4> : "â´" U2074 # SUPERSCRIPT FOUR
+<Multi_key> <asciicircum> <4> : "â´" U2074 # SUPERSCRIPT FOUR
+<dead_circumflex> <KP_4> : "â´" U2074 # SUPERSCRIPT FOUR
+<Multi_key> <asciicircum> <KP_4> : "â´" U2074 # SUPERSCRIPT FOUR
+<dead_circumflex> <5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<Multi_key> <asciicircum> <5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<dead_circumflex> <KP_5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<Multi_key> <asciicircum> <KP_5> : "âµ" U2075 # SUPERSCRIPT FIVE
+<dead_circumflex> <6> : "â¶" U2076 # SUPERSCRIPT SIX
+<Multi_key> <asciicircum> <6> : "â¶" U2076 # SUPERSCRIPT SIX
+<dead_circumflex> <KP_6> : "â¶" U2076 # SUPERSCRIPT SIX
+<Multi_key> <asciicircum> <KP_6> : "â¶" U2076 # SUPERSCRIPT SIX
+<dead_circumflex> <7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<Multi_key> <asciicircum> <7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<dead_circumflex> <KP_7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<Multi_key> <asciicircum> <KP_7> : "â·" U2077 # SUPERSCRIPT SEVEN
+<dead_circumflex> <8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<Multi_key> <asciicircum> <8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<dead_circumflex> <KP_8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<Multi_key> <asciicircum> <KP_8> : "â¸" U2078 # SUPERSCRIPT EIGHT
+<dead_circumflex> <9> : "â¹" U2079 # SUPERSCRIPT NINE
+<Multi_key> <asciicircum> <9> : "â¹" U2079 # SUPERSCRIPT NINE
+<dead_circumflex> <KP_9> : "â¹" U2079 # SUPERSCRIPT NINE
+<Multi_key> <asciicircum> <KP_9> : "â¹" U2079 # SUPERSCRIPT NINE
+<dead_circumflex> <plus> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<Multi_key> <asciicircum> <plus> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<dead_circumflex> <KP_Add> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<Multi_key> <asciicircum> <KP_Add> : "âº" U207A # SUPERSCRIPT PLUS SIGN
+<dead_circumflex> <U2212> : "â»" U207B # SUPERSCRIPT MINUS
+<Multi_key> <asciicircum> <U2212> : "â»" U207B # SUPERSCRIPT MINUS
+<dead_circumflex> <equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<Multi_key> <asciicircum> <equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<dead_circumflex> <KP_Equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<Multi_key> <asciicircum> <KP_Equal> : "â¼" U207C # SUPERSCRIPT EQUALS SIGN
+<dead_circumflex> <parenleft> : "â½" U207D # SUPERSCRIPT LEFT PARENTHESIS
+<Multi_key> <asciicircum> <parenleft> : "â½" U207D # SUPERSCRIPT LEFT PARENTHESIS
+<dead_circumflex> <parenright> : "â¾" U207E # SUPERSCRIPT RIGHT PARENTHESIS
+<Multi_key> <asciicircum> <parenright> : "â¾" U207E # SUPERSCRIPT RIGHT PARENTHESIS
+<dead_circumflex> <Multi_key> <underscore> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<Multi_key> <asciicircum> <underscore> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<dead_circumflex> <Multi_key> <underbar> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<Multi_key> <asciicircum> <underbar> <n> : "â¿" U207F # SUPERSCRIPT LATIN SMALL LETTER N
+<Multi_key> <underscore> <0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underscore> <KP_0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underbar> <0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underbar> <KP_0> : "â‚€" U2080 # SUBSCRIPT ZERO
+<Multi_key> <underscore> <1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underscore> <KP_1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underbar> <1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underbar> <KP_1> : "â‚" U2081 # SUBSCRIPT ONE
+<Multi_key> <underscore> <2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underscore> <KP_Space> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underscore> <KP_2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underbar> <2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underbar> <KP_Space> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underbar> <KP_2> : "â‚‚" U2082 # SUBSCRIPT TWO
+<Multi_key> <underscore> <3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underscore> <KP_3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underbar> <3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underbar> <KP_3> : "₃" U2083 # SUBSCRIPT THREE
+<Multi_key> <underscore> <4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underscore> <KP_4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underbar> <4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underbar> <KP_4> : "â‚„" U2084 # SUBSCRIPT FOUR
+<Multi_key> <underscore> <5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underscore> <KP_5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underbar> <5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underbar> <KP_5> : "â‚…" U2085 # SUBSCRIPT FIVE
+<Multi_key> <underscore> <6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underscore> <KP_6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underbar> <6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underbar> <KP_6> : "₆" U2086 # SUBSCRIPT SIX
+<Multi_key> <underscore> <7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underscore> <KP_7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underbar> <7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underbar> <KP_7> : "₇" U2087 # SUBSCRIPT SEVEN
+<Multi_key> <underscore> <8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underscore> <KP_8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underbar> <8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underbar> <KP_8> : "₈" U2088 # SUBSCRIPT EIGHT
+<Multi_key> <underscore> <9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underscore> <KP_9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underbar> <9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underbar> <KP_9> : "₉" U2089 # SUBSCRIPT NINE
+<Multi_key> <underscore> <plus> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underscore> <KP_Add> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underbar> <plus> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underbar> <KP_Add> : "â‚Š" U208A # SUBSCRIPT PLUS SIGN
+<Multi_key> <underscore> <U2212> : "â‚‹" U208B # SUBSCRIPT MINUS
+<Multi_key> <underbar> <U2212> : "â‚‹" U208B # SUBSCRIPT MINUS
+<Multi_key> <underscore> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underscore> <KP_Equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underbar> <equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underbar> <KP_Equal> : "₌" U208C # SUBSCRIPT EQUALS SIGN
+<Multi_key> <underscore> <parenleft> : "â‚" U208D # SUBSCRIPT LEFT PARENTHESIS
+<Multi_key> <underbar> <parenleft> : "â‚" U208D # SUBSCRIPT LEFT PARENTHESIS
+<Multi_key> <underscore> <parenright> : "â‚Ž" U208E # SUBSCRIPT RIGHT PARENTHESIS
+<Multi_key> <underbar> <parenright> : "â‚Ž" U208E # SUBSCRIPT RIGHT PARENTHESIS
+<dead_circumflex> <Multi_key> <S> <M> : "â„ " U2120 # SERVICE MARK
+<Multi_key> <asciicircum> <S> <M> : "â„ " U2120 # SERVICE MARK
+<dead_circumflex> <Multi_key> <T> <M> : "â„¢" U2122 # TRADE MARK SIGN
+<Multi_key> <asciicircum> <T> <M> : "â„¢" U2122 # TRADE MARK SIGN
+<Multi_key> <slash> <leftarrow> : "↚" U219A # LEFTWARDS ARROW WITH STROKE
+<Multi_key> <KP_Divide> <leftarrow> : "↚" U219A # LEFTWARDS ARROW WITH STROKE
+<Multi_key> <slash> <rightarrow> : "↛" U219B # RIGHTWARDS ARROW WITH STROKE
+<Multi_key> <KP_Divide> <rightarrow> : "↛" U219B # RIGHTWARDS ARROW WITH STROKE
+<Multi_key> <slash> <U2194> : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE
+<Multi_key> <KP_Divide> <U2194> : "↮" U21AE # LEFT RIGHT ARROW WITH STROKE
+<Multi_key> <U2203> <U0338> : "∄" U2204 # THERE DOES NOT EXIST
+<Multi_key> <U2208> <U0338> : "∉" U2209 # NOT AN ELEMENT OF
+<Multi_key> <U220b> <U0338> : "∌" U220C # DOES NOT CONTAIN AS MEMBER
+<Multi_key> <U2223> <U0338> : "∤" U2224 # DOES NOT DIVIDE
+<Multi_key> <U2225> <U0338> : "∦" U2226 # NOT PARALLEL TO
+<Multi_key> <U223c> <U0338> : "â‰" U2241 # NOT TILDE
+<Multi_key> <U2243> <U0338> : "≄" U2244 # NOT ASYMPTOTICALLY EQUAL TO
+<Multi_key> <approximate> <U0338> : "≇" U2247 # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+<Multi_key> <U2248> <U0338> : "≉" U2249 # NOT ALMOST EQUAL TO
+<Multi_key> <equal> <U0338> : "≠" U2260 # NOT EQUAL TO
+<Multi_key> <KP_Equal> <U0338> : "≠" U2260 # NOT EQUAL TO
+<Multi_key> <identical> <U0338> : "≢" U2262 # NOT IDENTICAL TO
+<Multi_key> <U224d> <U0338> : "≭" U226D # NOT EQUIVALENT TO
+<Multi_key> <less> <U0338> : "≮" U226E # NOT LESS-THAN
+<Multi_key> <leftcaret> <U0338> : "≮" U226E # NOT LESS-THAN
+<Multi_key> <greater> <U0338> : "≯" U226F # NOT GREATER-THAN
+<Multi_key> <rightcaret> <U0338> : "≯" U226F # NOT GREATER-THAN
+<Multi_key> <lessthanequal> <U0338> : "≰" U2270 # NEITHER LESS-THAN NOR EQUAL TO
+<Multi_key> <greaterthanequal> <U0338> : "≱" U2271 # NEITHER GREATER-THAN NOR EQUAL TO
+<Multi_key> <U2272> <U0338> : "≴" U2274 # NEITHER LESS-THAN NOR EQUIVALENT TO
+<Multi_key> <U2273> <U0338> : "≵" U2275 # NEITHER GREATER-THAN NOR EQUIVALENT TO
+<Multi_key> <U2276> <U0338> : "≸" U2278 # NEITHER LESS-THAN NOR GREATER-THAN
+<Multi_key> <U2277> <U0338> : "≹" U2279 # NEITHER GREATER-THAN NOR LESS-THAN
+<Multi_key> <U227a> <U0338> : "⊀" U2280 # DOES NOT PRECEDE
+<Multi_key> <U227b> <U0338> : "âŠ" U2281 # DOES NOT SUCCEED
+<Multi_key> <includedin> <U0338> : "⊄" U2284 # NOT A SUBSET OF
+<Multi_key> <leftshoe> <U0338> : "⊄" U2284 # NOT A SUBSET OF
+<Multi_key> <includes> <U0338> : "⊅" U2285 # NOT A SUPERSET OF
+<Multi_key> <rightshoe> <U0338> : "⊅" U2285 # NOT A SUPERSET OF
+<Multi_key> <U2286> <U0338> : "⊈" U2288 # NEITHER A SUBSET OF NOR EQUAL TO
+<Multi_key> <U2287> <U0338> : "⊉" U2289 # NEITHER A SUPERSET OF NOR EQUAL TO
+<Multi_key> <righttack> <U0338> : "⊬" U22AC # DOES NOT PROVE
+<Multi_key> <U22a8> <U0338> : "⊭" U22AD # NOT TRUE
+<Multi_key> <U22a9> <U0338> : "⊮" U22AE # DOES NOT FORCE
+<Multi_key> <U22ab> <U0338> : "⊯" U22AF # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+<Multi_key> <U227c> <U0338> : "â‹ " U22E0 # DOES NOT PRECEDE OR EQUAL
+<Multi_key> <U227d> <U0338> : "â‹¡" U22E1 # DOES NOT SUCCEED OR EQUAL
+<Multi_key> <U2291> <U0338> : "â‹¢" U22E2 # NOT SQUARE IMAGE OF OR EQUAL TO
+<Multi_key> <U2292> <U0338> : "â‹£" U22E3 # NOT SQUARE ORIGINAL OF OR EQUAL TO
+<Multi_key> <U22b2> <U0338> : "⋪" U22EA # NOT NORMAL SUBGROUP OF
+<Multi_key> <U22b3> <U0338> : "â‹«" U22EB # DOES NOT CONTAIN AS NORMAL SUBGROUP
+<Multi_key> <U22b4> <U0338> : "⋬" U22EC # NOT NORMAL SUBGROUP OF OR EQUAL TO
+<Multi_key> <U22b5> <U0338> : "â‹­" U22ED # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+<Multi_key> <parenleft> <1> <parenright> : "â‘ " U2460 # CIRCLED DIGIT ONE
+<Multi_key> <parenleft> <KP_1> <parenright> : "â‘ " U2460 # CIRCLED DIGIT ONE
+<Multi_key> <parenleft> <2> <parenright> : "â‘¡" U2461 # CIRCLED DIGIT TWO
+<Multi_key> <parenleft> <KP_Space> <parenright> : "â‘¡" U2461 # CIRCLED DIGIT TWO
+<Multi_key> <parenleft> <KP_2> <parenright> : "â‘¡" U2461 # CIRCLED DIGIT TWO
+<Multi_key> <parenleft> <3> <parenright> : "â‘¢" U2462 # CIRCLED DIGIT THREE
+<Multi_key> <parenleft> <KP_3> <parenright> : "â‘¢" U2462 # CIRCLED DIGIT THREE
+<Multi_key> <parenleft> <4> <parenright> : "â‘£" U2463 # CIRCLED DIGIT FOUR
+<Multi_key> <parenleft> <KP_4> <parenright> : "â‘£" U2463 # CIRCLED DIGIT FOUR
+<Multi_key> <parenleft> <5> <parenright> : "⑤" U2464 # CIRCLED DIGIT FIVE
+<Multi_key> <parenleft> <KP_5> <parenright> : "⑤" U2464 # CIRCLED DIGIT FIVE
+<Multi_key> <parenleft> <6> <parenright> : "â‘¥" U2465 # CIRCLED DIGIT SIX
+<Multi_key> <parenleft> <KP_6> <parenright> : "â‘¥" U2465 # CIRCLED DIGIT SIX
+<Multi_key> <parenleft> <7> <parenright> : "⑦" U2466 # CIRCLED DIGIT SEVEN
+<Multi_key> <parenleft> <KP_7> <parenright> : "⑦" U2466 # CIRCLED DIGIT SEVEN
+<Multi_key> <parenleft> <8> <parenright> : "⑧" U2467 # CIRCLED DIGIT EIGHT
+<Multi_key> <parenleft> <KP_8> <parenright> : "⑧" U2467 # CIRCLED DIGIT EIGHT
+<Multi_key> <parenleft> <9> <parenright> : "⑨" U2468 # CIRCLED DIGIT NINE
+<Multi_key> <parenleft> <KP_9> <parenright> : "⑨" U2468 # CIRCLED DIGIT NINE
+<Multi_key> <parenleft> <1> <0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <1> <KP_0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <KP_1> <0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <KP_1> <KP_0> <parenright> : "â‘©" U2469 # CIRCLED NUMBER TEN
+<Multi_key> <parenleft> <1> <1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <1> <KP_1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <KP_1> <1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <KP_1> <KP_1> <parenright> : "⑪" U246A # CIRCLED NUMBER ELEVEN
+<Multi_key> <parenleft> <1> <2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <1> <KP_Space> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <1> <KP_2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <KP_1> <2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <KP_1> <KP_Space> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <KP_1> <KP_2> <parenright> : "â‘«" U246B # CIRCLED NUMBER TWELVE
+<Multi_key> <parenleft> <1> <3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <1> <KP_3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <KP_1> <3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <KP_1> <KP_3> <parenright> : "⑬" U246C # CIRCLED NUMBER THIRTEEN
+<Multi_key> <parenleft> <1> <4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <1> <KP_4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <KP_1> <4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <KP_1> <KP_4> <parenright> : "â‘­" U246D # CIRCLED NUMBER FOURTEEN
+<Multi_key> <parenleft> <1> <5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <1> <KP_5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <KP_1> <5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <KP_1> <KP_5> <parenright> : "â‘®" U246E # CIRCLED NUMBER FIFTEEN
+<Multi_key> <parenleft> <1> <6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <1> <KP_6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <KP_1> <6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <KP_1> <KP_6> <parenright> : "⑯" U246F # CIRCLED NUMBER SIXTEEN
+<Multi_key> <parenleft> <1> <7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <1> <KP_7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <KP_1> <7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <KP_1> <KP_7> <parenright> : "â‘°" U2470 # CIRCLED NUMBER SEVENTEEN
+<Multi_key> <parenleft> <1> <8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <1> <KP_8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <KP_1> <8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <KP_1> <KP_8> <parenright> : "⑱" U2471 # CIRCLED NUMBER EIGHTEEN
+<Multi_key> <parenleft> <1> <9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <1> <KP_9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <KP_1> <9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <KP_1> <KP_9> <parenright> : "⑲" U2472 # CIRCLED NUMBER NINETEEN
+<Multi_key> <parenleft> <2> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <2> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_Space> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_Space> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_2> <0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <KP_2> <KP_0> <parenright> : "⑳" U2473 # CIRCLED NUMBER TWENTY
+<Multi_key> <parenleft> <A> <parenright> : "â’¶" U24B6 # CIRCLED LATIN CAPITAL LETTER A
+<Multi_key> <parenleft> <B> <parenright> : "â’·" U24B7 # CIRCLED LATIN CAPITAL LETTER B
+<Multi_key> <parenleft> <C> <parenright> : "â’¸" U24B8 # CIRCLED LATIN CAPITAL LETTER C
+<Multi_key> <parenleft> <D> <parenright> : "â’¹" U24B9 # CIRCLED LATIN CAPITAL LETTER D
+<Multi_key> <parenleft> <E> <parenright> : "â’º" U24BA # CIRCLED LATIN CAPITAL LETTER E
+<Multi_key> <parenleft> <F> <parenright> : "â’»" U24BB # CIRCLED LATIN CAPITAL LETTER F
+<Multi_key> <parenleft> <G> <parenright> : "â’¼" U24BC # CIRCLED LATIN CAPITAL LETTER G
+<Multi_key> <parenleft> <H> <parenright> : "â’½" U24BD # CIRCLED LATIN CAPITAL LETTER H
+<Multi_key> <parenleft> <I> <parenright> : "â’¾" U24BE # CIRCLED LATIN CAPITAL LETTER I
+<Multi_key> <parenleft> <J> <parenright> : "â’¿" U24BF # CIRCLED LATIN CAPITAL LETTER J
+<Multi_key> <parenleft> <K> <parenright> : "â“€" U24C0 # CIRCLED LATIN CAPITAL LETTER K
+<Multi_key> <parenleft> <L> <parenright> : "â“" U24C1 # CIRCLED LATIN CAPITAL LETTER L
+<Multi_key> <parenleft> <M> <parenright> : "â“‚" U24C2 # CIRCLED LATIN CAPITAL LETTER M
+<Multi_key> <parenleft> <N> <parenright> : "Ⓝ" U24C3 # CIRCLED LATIN CAPITAL LETTER N
+<Multi_key> <parenleft> <O> <parenright> : "â“„" U24C4 # CIRCLED LATIN CAPITAL LETTER O
+<Multi_key> <parenleft> <P> <parenright> : "â“…" U24C5 # CIRCLED LATIN CAPITAL LETTER P
+<Multi_key> <parenleft> <Q> <parenright> : "Ⓠ" U24C6 # CIRCLED LATIN CAPITAL LETTER Q
+<Multi_key> <parenleft> <R> <parenright> : "Ⓡ" U24C7 # CIRCLED LATIN CAPITAL LETTER R
+<Multi_key> <parenleft> <S> <parenright> : "Ⓢ" U24C8 # CIRCLED LATIN CAPITAL LETTER S
+<Multi_key> <parenleft> <T> <parenright> : "Ⓣ" U24C9 # CIRCLED LATIN CAPITAL LETTER T
+<Multi_key> <parenleft> <U> <parenright> : "â“Š" U24CA # CIRCLED LATIN CAPITAL LETTER U
+<Multi_key> <parenleft> <V> <parenright> : "â“‹" U24CB # CIRCLED LATIN CAPITAL LETTER V
+<Multi_key> <parenleft> <W> <parenright> : "Ⓦ" U24CC # CIRCLED LATIN CAPITAL LETTER W
+<Multi_key> <parenleft> <X> <parenright> : "â“" U24CD # CIRCLED LATIN CAPITAL LETTER X
+<Multi_key> <parenleft> <Y> <parenright> : "â“Ž" U24CE # CIRCLED LATIN CAPITAL LETTER Y
+<Multi_key> <parenleft> <Z> <parenright> : "â“" U24CF # CIRCLED LATIN CAPITAL LETTER Z
+<Multi_key> <parenleft> <a> <parenright> : "â“" U24D0 # CIRCLED LATIN SMALL LETTER A
+<Multi_key> <parenleft> <b> <parenright> : "â“‘" U24D1 # CIRCLED LATIN SMALL LETTER B
+<Multi_key> <parenleft> <c> <parenright> : "â“’" U24D2 # CIRCLED LATIN SMALL LETTER C
+<Multi_key> <parenleft> <d> <parenright> : "â““" U24D3 # CIRCLED LATIN SMALL LETTER D
+<Multi_key> <parenleft> <e> <parenright> : "â“”" U24D4 # CIRCLED LATIN SMALL LETTER E
+<Multi_key> <parenleft> <f> <parenright> : "â“•" U24D5 # CIRCLED LATIN SMALL LETTER F
+<Multi_key> <parenleft> <g> <parenright> : "â“–" U24D6 # CIRCLED LATIN SMALL LETTER G
+<Multi_key> <parenleft> <h> <parenright> : "â“—" U24D7 # CIRCLED LATIN SMALL LETTER H
+<Multi_key> <parenleft> <i> <parenright> : "ⓘ" U24D8 # CIRCLED LATIN SMALL LETTER I
+<Multi_key> <parenleft> <j> <parenright> : "â“™" U24D9 # CIRCLED LATIN SMALL LETTER J
+<Multi_key> <parenleft> <k> <parenright> : "â“š" U24DA # CIRCLED LATIN SMALL LETTER K
+<Multi_key> <parenleft> <l> <parenright> : "â“›" U24DB # CIRCLED LATIN SMALL LETTER L
+<Multi_key> <parenleft> <m> <parenright> : "ⓜ" U24DC # CIRCLED LATIN SMALL LETTER M
+<Multi_key> <parenleft> <n> <parenright> : "â“" U24DD # CIRCLED LATIN SMALL LETTER N
+<Multi_key> <parenleft> <o> <parenright> : "â“ž" U24DE # CIRCLED LATIN SMALL LETTER O
+<Multi_key> <parenleft> <p> <parenright> : "â“Ÿ" U24DF # CIRCLED LATIN SMALL LETTER P
+<Multi_key> <parenleft> <q> <parenright> : "â“ " U24E0 # CIRCLED LATIN SMALL LETTER Q
+<Multi_key> <parenleft> <r> <parenright> : "â“¡" U24E1 # CIRCLED LATIN SMALL LETTER R
+<Multi_key> <parenleft> <s> <parenright> : "â“¢" U24E2 # CIRCLED LATIN SMALL LETTER S
+<Multi_key> <parenleft> <t> <parenright> : "â“£" U24E3 # CIRCLED LATIN SMALL LETTER T
+<Multi_key> <parenleft> <u> <parenright> : "ⓤ" U24E4 # CIRCLED LATIN SMALL LETTER U
+<Multi_key> <parenleft> <v> <parenright> : "â“¥" U24E5 # CIRCLED LATIN SMALL LETTER V
+<Multi_key> <parenleft> <w> <parenright> : "ⓦ" U24E6 # CIRCLED LATIN SMALL LETTER W
+<Multi_key> <parenleft> <x> <parenright> : "ⓧ" U24E7 # CIRCLED LATIN SMALL LETTER X
+<Multi_key> <parenleft> <y> <parenright> : "ⓨ" U24E8 # CIRCLED LATIN SMALL LETTER Y
+<Multi_key> <parenleft> <z> <parenright> : "â“©" U24E9 # CIRCLED LATIN SMALL LETTER Z
+<Multi_key> <parenleft> <0> <parenright> : "⓪" U24EA # CIRCLED DIGIT ZERO
+<Multi_key> <parenleft> <KP_0> <parenright> : "⓪" U24EA # CIRCLED DIGIT ZERO
+<Multi_key> <U2add> <U0338> : "⫝̸" U2ADC # FORKING
+<dead_voiced_sound> <U304b> : "ãŒ" U304C # HIRAGANA LETTER GA
+<dead_voiced_sound> <U304d> : "ãŽ" U304E # HIRAGANA LETTER GI
+<dead_voiced_sound> <U304f> : "ã" U3050 # HIRAGANA LETTER GU
+<dead_voiced_sound> <U3051> : "ã’" U3052 # HIRAGANA LETTER GE
+<dead_voiced_sound> <U3053> : "ã”" U3054 # HIRAGANA LETTER GO
+<dead_voiced_sound> <U3055> : "ã–" U3056 # HIRAGANA LETTER ZA
+<dead_voiced_sound> <U3057> : "ã˜" U3058 # HIRAGANA LETTER ZI
+<dead_voiced_sound> <U3059> : "ãš" U305A # HIRAGANA LETTER ZU
+<dead_voiced_sound> <U305b> : "ãœ" U305C # HIRAGANA LETTER ZE
+<dead_voiced_sound> <U305d> : "ãž" U305E # HIRAGANA LETTER ZO
+<dead_voiced_sound> <U305f> : "ã " U3060 # HIRAGANA LETTER DA
+<dead_voiced_sound> <U3061> : "ã¢" U3062 # HIRAGANA LETTER DI
+<dead_voiced_sound> <U3064> : "ã¥" U3065 # HIRAGANA LETTER DU
+<dead_voiced_sound> <U3066> : "ã§" U3067 # HIRAGANA LETTER DE
+<dead_voiced_sound> <U3068> : "ã©" U3069 # HIRAGANA LETTER DO
+<dead_voiced_sound> <U306f> : "ã°" U3070 # HIRAGANA LETTER BA
+<dead_semivoiced_sound> <U306f> : "ã±" U3071 # HIRAGANA LETTER PA
+<dead_voiced_sound> <U3072> : "ã³" U3073 # HIRAGANA LETTER BI
+<dead_semivoiced_sound> <U3072> : "ã´" U3074 # HIRAGANA LETTER PI
+<dead_voiced_sound> <U3075> : "ã¶" U3076 # HIRAGANA LETTER BU
+<dead_semivoiced_sound> <U3075> : "ã·" U3077 # HIRAGANA LETTER PU
+<dead_voiced_sound> <U3078> : "ã¹" U3079 # HIRAGANA LETTER BE
+<dead_semivoiced_sound> <U3078> : "ãº" U307A # HIRAGANA LETTER PE
+<dead_voiced_sound> <U307b> : "ã¼" U307C # HIRAGANA LETTER BO
+<dead_semivoiced_sound> <U307b> : "ã½" U307D # HIRAGANA LETTER PO
+<dead_voiced_sound> <U3046> : "ã‚”" U3094 # HIRAGANA LETTER VU
+<dead_voiced_sound> <U309d> : "ã‚ž" U309E # HIRAGANA VOICED ITERATION MARK
+<dead_voiced_sound> <kana_KA> : "ガ" U30AC # KATAKANA LETTER GA
+<dead_voiced_sound> <kana_KI> : "ã‚®" U30AE # KATAKANA LETTER GI
+<dead_voiced_sound> <kana_KU> : "ã‚°" U30B0 # KATAKANA LETTER GU
+<dead_voiced_sound> <kana_KE> : "ゲ" U30B2 # KATAKANA LETTER GE
+<dead_voiced_sound> <kana_KO> : "ã‚´" U30B4 # KATAKANA LETTER GO
+<dead_voiced_sound> <kana_SA> : "ザ" U30B6 # KATAKANA LETTER ZA
+<dead_voiced_sound> <kana_SHI> : "ジ" U30B8 # KATAKANA LETTER ZI
+<dead_voiced_sound> <kana_SU> : "ズ" U30BA # KATAKANA LETTER ZU
+<dead_voiced_sound> <kana_SE> : "ゼ" U30BC # KATAKANA LETTER ZE
+<dead_voiced_sound> <kana_SO> : "ゾ" U30BE # KATAKANA LETTER ZO
+<dead_voiced_sound> <kana_TA> : "ダ" U30C0 # KATAKANA LETTER DA
+<dead_voiced_sound> <kana_CHI> : "ヂ" U30C2 # KATAKANA LETTER DI
+<dead_voiced_sound> <kana_TSU> : "ヅ" U30C5 # KATAKANA LETTER DU
+<dead_voiced_sound> <kana_TE> : "デ" U30C7 # KATAKANA LETTER DE
+<dead_voiced_sound> <kana_TO> : "ド" U30C9 # KATAKANA LETTER DO
+<dead_voiced_sound> <kana_HA> : "ãƒ" U30D0 # KATAKANA LETTER BA
+<dead_semivoiced_sound> <kana_HA> : "パ" U30D1 # KATAKANA LETTER PA
+<dead_voiced_sound> <kana_HI> : "ビ" U30D3 # KATAKANA LETTER BI
+<dead_semivoiced_sound> <kana_HI> : "ピ" U30D4 # KATAKANA LETTER PI
+<dead_voiced_sound> <kana_FU> : "ブ" U30D6 # KATAKANA LETTER BU
+<dead_semivoiced_sound> <kana_FU> : "プ" U30D7 # KATAKANA LETTER PU
+<dead_voiced_sound> <kana_HE> : "ベ" U30D9 # KATAKANA LETTER BE
+<dead_semivoiced_sound> <kana_HE> : "ペ" U30DA # KATAKANA LETTER PE
+<dead_voiced_sound> <kana_HO> : "ボ" U30DC # KATAKANA LETTER BO
+<dead_semivoiced_sound> <kana_HO> : "ãƒ" U30DD # KATAKANA LETTER PO
+<dead_voiced_sound> <kana_U> : "ヴ" U30F4 # KATAKANA LETTER VU
+<dead_voiced_sound> <kana_WA> : "ヷ" U30F7 # KATAKANA LETTER VA
+<dead_voiced_sound> <U30f0> : "ヸ" U30F8 # KATAKANA LETTER VI
+<dead_voiced_sound> <U30f1> : "ヹ" U30F9 # KATAKANA LETTER VE
+<dead_voiced_sound> <kana_WO> : "ヺ" U30FA # KATAKANA LETTER VO
+<dead_voiced_sound> <U30fd> : "ヾ" U30FE # KATAKANA VOICED ITERATION MARK
+<dead_circumflex> <U4e00> : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK
+<Multi_key> <asciicircum> <U4e00> : "㆒" U3192 # IDEOGRAPHIC ANNOTATION ONE MARK
+<dead_circumflex> <U4e8c> : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK
+<Multi_key> <asciicircum> <U4e8c> : "㆓" U3193 # IDEOGRAPHIC ANNOTATION TWO MARK
+<dead_circumflex> <U4e09> : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK
+<Multi_key> <asciicircum> <U4e09> : "㆔" U3194 # IDEOGRAPHIC ANNOTATION THREE MARK
+<dead_circumflex> <U56db> : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK
+<Multi_key> <asciicircum> <U56db> : "㆕" U3195 # IDEOGRAPHIC ANNOTATION FOUR MARK
+<dead_circumflex> <U4e0a> : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK
+<Multi_key> <asciicircum> <U4e0a> : "㆖" U3196 # IDEOGRAPHIC ANNOTATION TOP MARK
+<dead_circumflex> <U4e2d> : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+<Multi_key> <asciicircum> <U4e2d> : "㆗" U3197 # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+<dead_circumflex> <U4e0b> : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+<Multi_key> <asciicircum> <U4e0b> : "㆘" U3198 # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+<dead_circumflex> <U7532> : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK
+<Multi_key> <asciicircum> <U7532> : "㆙" U3199 # IDEOGRAPHIC ANNOTATION FIRST MARK
+<dead_circumflex> <U4e59> : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK
+<Multi_key> <asciicircum> <U4e59> : "㆚" U319A # IDEOGRAPHIC ANNOTATION SECOND MARK
+<dead_circumflex> <U4e19> : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK
+<Multi_key> <asciicircum> <U4e19> : "㆛" U319B # IDEOGRAPHIC ANNOTATION THIRD MARK
+<dead_circumflex> <U4e01> : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK
+<Multi_key> <asciicircum> <U4e01> : "㆜" U319C # IDEOGRAPHIC ANNOTATION FOURTH MARK
+<dead_circumflex> <U5929> : "ã†" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+<Multi_key> <asciicircum> <U5929> : "ã†" U319D # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+<dead_circumflex> <U5730> : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK
+<Multi_key> <asciicircum> <U5730> : "㆞" U319E # IDEOGRAPHIC ANNOTATION EARTH MARK
+<dead_circumflex> <U4eba> : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK
+<Multi_key> <asciicircum> <U4eba> : "㆟" U319F # IDEOGRAPHIC ANNOTATION MAN MARK
+<Multi_key> <parenleft> <2> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <2> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_Space> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_Space> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_2> <1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <KP_2> <KP_1> <parenright> : "㉑" U3251 # CIRCLED NUMBER TWENTY ONE
+<Multi_key> <parenleft> <2> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <2> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <2> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_Space> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_Space> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_Space> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_2> <2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_2> <KP_Space> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <KP_2> <KP_2> <parenright> : "㉒" U3252 # CIRCLED NUMBER TWENTY TWO
+<Multi_key> <parenleft> <2> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <2> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_Space> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_Space> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_2> <3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <KP_2> <KP_3> <parenright> : "㉓" U3253 # CIRCLED NUMBER TWENTY THREE
+<Multi_key> <parenleft> <2> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <2> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_Space> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_Space> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_2> <4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <KP_2> <KP_4> <parenright> : "㉔" U3254 # CIRCLED NUMBER TWENTY FOUR
+<Multi_key> <parenleft> <2> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <2> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_Space> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_Space> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_2> <5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <KP_2> <KP_5> <parenright> : "㉕" U3255 # CIRCLED NUMBER TWENTY FIVE
+<Multi_key> <parenleft> <2> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <2> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_Space> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_Space> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_2> <6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <KP_2> <KP_6> <parenright> : "㉖" U3256 # CIRCLED NUMBER TWENTY SIX
+<Multi_key> <parenleft> <2> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <2> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_Space> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_Space> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_2> <7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <KP_2> <KP_7> <parenright> : "㉗" U3257 # CIRCLED NUMBER TWENTY SEVEN
+<Multi_key> <parenleft> <2> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <2> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_Space> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_Space> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_2> <8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <KP_2> <KP_8> <parenright> : "㉘" U3258 # CIRCLED NUMBER TWENTY EIGHT
+<Multi_key> <parenleft> <2> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <2> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_Space> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_Space> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_2> <9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <KP_2> <KP_9> <parenright> : "㉙" U3259 # CIRCLED NUMBER TWENTY NINE
+<Multi_key> <parenleft> <3> <0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <3> <KP_0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <KP_3> <0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <KP_3> <KP_0> <parenright> : "㉚" U325A # CIRCLED NUMBER THIRTY
+<Multi_key> <parenleft> <3> <1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <3> <KP_1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <KP_3> <1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <KP_3> <KP_1> <parenright> : "㉛" U325B # CIRCLED NUMBER THIRTY ONE
+<Multi_key> <parenleft> <3> <2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <3> <KP_Space> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <3> <KP_2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <KP_3> <2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <KP_3> <KP_Space> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <KP_3> <KP_2> <parenright> : "㉜" U325C # CIRCLED NUMBER THIRTY TWO
+<Multi_key> <parenleft> <3> <3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <3> <KP_3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <KP_3> <3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <KP_3> <KP_3> <parenright> : "ã‰" U325D # CIRCLED NUMBER THIRTY THREE
+<Multi_key> <parenleft> <3> <4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <3> <KP_4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <KP_3> <4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <KP_3> <KP_4> <parenright> : "㉞" U325E # CIRCLED NUMBER THIRTY FOUR
+<Multi_key> <parenleft> <3> <5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <3> <KP_5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <KP_3> <5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <KP_3> <KP_5> <parenright> : "㉟" U325F # CIRCLED NUMBER THIRTY FIVE
+<Multi_key> <parenleft> <U1100> <parenright> : "㉠" U3260 # CIRCLED HANGUL KIYEOK
+<Multi_key> <parenleft> <U1102> <parenright> : "㉡" U3261 # CIRCLED HANGUL NIEUN
+<Multi_key> <parenleft> <U1103> <parenright> : "㉢" U3262 # CIRCLED HANGUL TIKEUT
+<Multi_key> <parenleft> <U1105> <parenright> : "㉣" U3263 # CIRCLED HANGUL RIEUL
+<Multi_key> <parenleft> <U1106> <parenright> : "㉤" U3264 # CIRCLED HANGUL MIEUM
+<Multi_key> <parenleft> <U1107> <parenright> : "㉥" U3265 # CIRCLED HANGUL PIEUP
+<Multi_key> <parenleft> <U1109> <parenright> : "㉦" U3266 # CIRCLED HANGUL SIOS
+<Multi_key> <parenleft> <U110b> <parenright> : "㉧" U3267 # CIRCLED HANGUL IEUNG
+<Multi_key> <parenleft> <U110c> <parenright> : "㉨" U3268 # CIRCLED HANGUL CIEUC
+<Multi_key> <parenleft> <U110e> <parenright> : "㉩" U3269 # CIRCLED HANGUL CHIEUCH
+<Multi_key> <parenleft> <U110f> <parenright> : "㉪" U326A # CIRCLED HANGUL KHIEUKH
+<Multi_key> <parenleft> <U1110> <parenright> : "㉫" U326B # CIRCLED HANGUL THIEUTH
+<Multi_key> <parenleft> <U1111> <parenright> : "㉬" U326C # CIRCLED HANGUL PHIEUPH
+<Multi_key> <parenleft> <U1112> <parenright> : "㉭" U326D # CIRCLED HANGUL HIEUH
+<Multi_key> <parenleft> <U1100> <U1161> <parenright> : "㉮" U326E # CIRCLED HANGUL KIYEOK A
+<Multi_key> <parenleft> <U1102> <U1161> <parenright> : "㉯" U326F # CIRCLED HANGUL NIEUN A
+<Multi_key> <parenleft> <U1103> <U1161> <parenright> : "㉰" U3270 # CIRCLED HANGUL TIKEUT A
+<Multi_key> <parenleft> <U1105> <U1161> <parenright> : "㉱" U3271 # CIRCLED HANGUL RIEUL A
+<Multi_key> <parenleft> <U1106> <U1161> <parenright> : "㉲" U3272 # CIRCLED HANGUL MIEUM A
+<Multi_key> <parenleft> <U1107> <U1161> <parenright> : "㉳" U3273 # CIRCLED HANGUL PIEUP A
+<Multi_key> <parenleft> <U1109> <U1161> <parenright> : "㉴" U3274 # CIRCLED HANGUL SIOS A
+<Multi_key> <parenleft> <U110b> <U1161> <parenright> : "㉵" U3275 # CIRCLED HANGUL IEUNG A
+<Multi_key> <parenleft> <U110c> <U1161> <parenright> : "㉶" U3276 # CIRCLED HANGUL CIEUC A
+<Multi_key> <parenleft> <U110e> <U1161> <parenright> : "㉷" U3277 # CIRCLED HANGUL CHIEUCH A
+<Multi_key> <parenleft> <U110f> <U1161> <parenright> : "㉸" U3278 # CIRCLED HANGUL KHIEUKH A
+<Multi_key> <parenleft> <U1110> <U1161> <parenright> : "㉹" U3279 # CIRCLED HANGUL THIEUTH A
+<Multi_key> <parenleft> <U1111> <U1161> <parenright> : "㉺" U327A # CIRCLED HANGUL PHIEUPH A
+<Multi_key> <parenleft> <U1112> <U1161> <parenright> : "㉻" U327B # CIRCLED HANGUL HIEUH A
+<Multi_key> <parenleft> <U4e00> <parenright> : "㊀" U3280 # CIRCLED IDEOGRAPH ONE
+<Multi_key> <parenleft> <U4e8c> <parenright> : "ãŠ" U3281 # CIRCLED IDEOGRAPH TWO
+<Multi_key> <parenleft> <U4e09> <parenright> : "㊂" U3282 # CIRCLED IDEOGRAPH THREE
+<Multi_key> <parenleft> <U56db> <parenright> : "㊃" U3283 # CIRCLED IDEOGRAPH FOUR
+<Multi_key> <parenleft> <U4e94> <parenright> : "㊄" U3284 # CIRCLED IDEOGRAPH FIVE
+<Multi_key> <parenleft> <U516d> <parenright> : "㊅" U3285 # CIRCLED IDEOGRAPH SIX
+<Multi_key> <parenleft> <U4e03> <parenright> : "㊆" U3286 # CIRCLED IDEOGRAPH SEVEN
+<Multi_key> <parenleft> <U516b> <parenright> : "㊇" U3287 # CIRCLED IDEOGRAPH EIGHT
+<Multi_key> <parenleft> <U4e5d> <parenright> : "㊈" U3288 # CIRCLED IDEOGRAPH NINE
+<Multi_key> <parenleft> <U5341> <parenright> : "㊉" U3289 # CIRCLED IDEOGRAPH TEN
+<Multi_key> <parenleft> <U6708> <parenright> : "㊊" U328A # CIRCLED IDEOGRAPH MOON
+<Multi_key> <parenleft> <U706b> <parenright> : "㊋" U328B # CIRCLED IDEOGRAPH FIRE
+<Multi_key> <parenleft> <U6c34> <parenright> : "㊌" U328C # CIRCLED IDEOGRAPH WATER
+<Multi_key> <parenleft> <U6728> <parenright> : "ãŠ" U328D # CIRCLED IDEOGRAPH WOOD
+<Multi_key> <parenleft> <U91d1> <parenright> : "㊎" U328E # CIRCLED IDEOGRAPH METAL
+<Multi_key> <parenleft> <U571f> <parenright> : "ãŠ" U328F # CIRCLED IDEOGRAPH EARTH
+<Multi_key> <parenleft> <U65e5> <parenright> : "ãŠ" U3290 # CIRCLED IDEOGRAPH SUN
+<Multi_key> <parenleft> <U682a> <parenright> : "㊑" U3291 # CIRCLED IDEOGRAPH STOCK
+<Multi_key> <parenleft> <U6709> <parenright> : "㊒" U3292 # CIRCLED IDEOGRAPH HAVE
+<Multi_key> <parenleft> <U793e> <parenright> : "㊓" U3293 # CIRCLED IDEOGRAPH SOCIETY
+<Multi_key> <parenleft> <U540d> <parenright> : "㊔" U3294 # CIRCLED IDEOGRAPH NAME
+<Multi_key> <parenleft> <U7279> <parenright> : "㊕" U3295 # CIRCLED IDEOGRAPH SPECIAL
+<Multi_key> <parenleft> <U8ca1> <parenright> : "㊖" U3296 # CIRCLED IDEOGRAPH FINANCIAL
+<Multi_key> <parenleft> <U795d> <parenright> : "㊗" U3297 # CIRCLED IDEOGRAPH CONGRATULATION
+<Multi_key> <parenleft> <U52b4> <parenright> : "㊘" U3298 # CIRCLED IDEOGRAPH LABOR
+<Multi_key> <parenleft> <U79d8> <parenright> : "㊙" U3299 # CIRCLED IDEOGRAPH SECRET
+<Multi_key> <parenleft> <U7537> <parenright> : "㊚" U329A # CIRCLED IDEOGRAPH MALE
+<Multi_key> <parenleft> <U5973> <parenright> : "㊛" U329B # CIRCLED IDEOGRAPH FEMALE
+<Multi_key> <parenleft> <U9069> <parenright> : "㊜" U329C # CIRCLED IDEOGRAPH SUITABLE
+<Multi_key> <parenleft> <U512a> <parenright> : "ãŠ" U329D # CIRCLED IDEOGRAPH EXCELLENT
+<Multi_key> <parenleft> <U5370> <parenright> : "㊞" U329E # CIRCLED IDEOGRAPH PRINT
+<Multi_key> <parenleft> <U6ce8> <parenright> : "㊟" U329F # CIRCLED IDEOGRAPH ATTENTION
+<Multi_key> <parenleft> <U9805> <parenright> : "㊠" U32A0 # CIRCLED IDEOGRAPH ITEM
+<Multi_key> <parenleft> <U4f11> <parenright> : "㊡" U32A1 # CIRCLED IDEOGRAPH REST
+<Multi_key> <parenleft> <U5199> <parenright> : "㊢" U32A2 # CIRCLED IDEOGRAPH COPY
+<Multi_key> <parenleft> <U6b63> <parenright> : "㊣" U32A3 # CIRCLED IDEOGRAPH CORRECT
+<Multi_key> <parenleft> <U4e0a> <parenright> : "㊤" U32A4 # CIRCLED IDEOGRAPH HIGH
+<Multi_key> <parenleft> <U4e2d> <parenright> : "㊥" U32A5 # CIRCLED IDEOGRAPH CENTRE
+<Multi_key> <parenleft> <U4e0b> <parenright> : "㊦" U32A6 # CIRCLED IDEOGRAPH LOW
+<Multi_key> <parenleft> <U5de6> <parenright> : "㊧" U32A7 # CIRCLED IDEOGRAPH LEFT
+<Multi_key> <parenleft> <U53f3> <parenright> : "㊨" U32A8 # CIRCLED IDEOGRAPH RIGHT
+<Multi_key> <parenleft> <U533b> <parenright> : "㊩" U32A9 # CIRCLED IDEOGRAPH MEDICINE
+<Multi_key> <parenleft> <U5b97> <parenright> : "㊪" U32AA # CIRCLED IDEOGRAPH RELIGION
+<Multi_key> <parenleft> <U5b66> <parenright> : "㊫" U32AB # CIRCLED IDEOGRAPH STUDY
+<Multi_key> <parenleft> <U76e3> <parenright> : "㊬" U32AC # CIRCLED IDEOGRAPH SUPERVISE
+<Multi_key> <parenleft> <U4f01> <parenright> : "㊭" U32AD # CIRCLED IDEOGRAPH ENTERPRISE
+<Multi_key> <parenleft> <U8cc7> <parenright> : "㊮" U32AE # CIRCLED IDEOGRAPH RESOURCE
+<Multi_key> <parenleft> <U5354> <parenright> : "㊯" U32AF # CIRCLED IDEOGRAPH ALLIANCE
+<Multi_key> <parenleft> <U591c> <parenright> : "㊰" U32B0 # CIRCLED IDEOGRAPH NIGHT
+<Multi_key> <parenleft> <3> <6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <3> <KP_6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <KP_3> <6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <KP_3> <KP_6> <parenright> : "㊱" U32B1 # CIRCLED NUMBER THIRTY SIX
+<Multi_key> <parenleft> <3> <7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <3> <KP_7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <KP_3> <7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <KP_3> <KP_7> <parenright> : "㊲" U32B2 # CIRCLED NUMBER THIRTY SEVEN
+<Multi_key> <parenleft> <3> <8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <3> <KP_8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <KP_3> <8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <KP_3> <KP_8> <parenright> : "㊳" U32B3 # CIRCLED NUMBER THIRTY EIGHT
+<Multi_key> <parenleft> <3> <9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <3> <KP_9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <KP_3> <9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <KP_3> <KP_9> <parenright> : "㊴" U32B4 # CIRCLED NUMBER THIRTY NINE
+<Multi_key> <parenleft> <4> <0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <4> <KP_0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <KP_4> <0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <KP_4> <KP_0> <parenright> : "㊵" U32B5 # CIRCLED NUMBER FORTY
+<Multi_key> <parenleft> <4> <1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <4> <KP_1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <KP_4> <1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <KP_4> <KP_1> <parenright> : "㊶" U32B6 # CIRCLED NUMBER FORTY ONE
+<Multi_key> <parenleft> <4> <2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <4> <KP_Space> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <4> <KP_2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <KP_4> <2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <KP_4> <KP_Space> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <KP_4> <KP_2> <parenright> : "㊷" U32B7 # CIRCLED NUMBER FORTY TWO
+<Multi_key> <parenleft> <4> <3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <4> <KP_3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <KP_4> <3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <KP_4> <KP_3> <parenright> : "㊸" U32B8 # CIRCLED NUMBER FORTY THREE
+<Multi_key> <parenleft> <4> <4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <4> <KP_4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <KP_4> <4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <KP_4> <KP_4> <parenright> : "㊹" U32B9 # CIRCLED NUMBER FORTY FOUR
+<Multi_key> <parenleft> <4> <5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <4> <KP_5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <KP_4> <5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <KP_4> <KP_5> <parenright> : "㊺" U32BA # CIRCLED NUMBER FORTY FIVE
+<Multi_key> <parenleft> <4> <6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <4> <KP_6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <KP_4> <6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <KP_4> <KP_6> <parenright> : "㊻" U32BB # CIRCLED NUMBER FORTY SIX
+<Multi_key> <parenleft> <4> <7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <4> <KP_7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <KP_4> <7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <KP_4> <KP_7> <parenright> : "㊼" U32BC # CIRCLED NUMBER FORTY SEVEN
+<Multi_key> <parenleft> <4> <8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <4> <KP_8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <KP_4> <8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <KP_4> <KP_8> <parenright> : "㊽" U32BD # CIRCLED NUMBER FORTY EIGHT
+<Multi_key> <parenleft> <4> <9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <4> <KP_9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <KP_4> <9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <KP_4> <KP_9> <parenright> : "㊾" U32BE # CIRCLED NUMBER FORTY NINE
+<Multi_key> <parenleft> <5> <0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <5> <KP_0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <KP_5> <0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <KP_5> <KP_0> <parenright> : "㊿" U32BF # CIRCLED NUMBER FIFTY
+<Multi_key> <parenleft> <kana_A> <parenright> : "ã‹" U32D0 # CIRCLED KATAKANA A
+<Multi_key> <parenleft> <kana_I> <parenright> : "ã‹‘" U32D1 # CIRCLED KATAKANA I
+<Multi_key> <parenleft> <kana_U> <parenright> : "ã‹’" U32D2 # CIRCLED KATAKANA U
+<Multi_key> <parenleft> <kana_E> <parenright> : "ã‹“" U32D3 # CIRCLED KATAKANA E
+<Multi_key> <parenleft> <kana_O> <parenright> : "ã‹”" U32D4 # CIRCLED KATAKANA O
+<Multi_key> <parenleft> <kana_KA> <parenright> : "ã‹•" U32D5 # CIRCLED KATAKANA KA
+<Multi_key> <parenleft> <kana_KI> <parenright> : "ã‹–" U32D6 # CIRCLED KATAKANA KI
+<Multi_key> <parenleft> <kana_KU> <parenright> : "ã‹—" U32D7 # CIRCLED KATAKANA KU
+<Multi_key> <parenleft> <kana_KE> <parenright> : "㋘" U32D8 # CIRCLED KATAKANA KE
+<Multi_key> <parenleft> <kana_KO> <parenright> : "ã‹™" U32D9 # CIRCLED KATAKANA KO
+<Multi_key> <parenleft> <kana_SA> <parenright> : "ã‹š" U32DA # CIRCLED KATAKANA SA
+<Multi_key> <parenleft> <kana_SHI> <parenright> : "ã‹›" U32DB # CIRCLED KATAKANA SI
+<Multi_key> <parenleft> <kana_SU> <parenright> : "㋜" U32DC # CIRCLED KATAKANA SU
+<Multi_key> <parenleft> <kana_SE> <parenright> : "ã‹" U32DD # CIRCLED KATAKANA SE
+<Multi_key> <parenleft> <kana_SO> <parenright> : "ã‹ž" U32DE # CIRCLED KATAKANA SO
+<Multi_key> <parenleft> <kana_TA> <parenright> : "ã‹Ÿ" U32DF # CIRCLED KATAKANA TA
+<Multi_key> <parenleft> <kana_CHI> <parenright> : "ã‹ " U32E0 # CIRCLED KATAKANA TI
+<Multi_key> <parenleft> <kana_TSU> <parenright> : "ã‹¡" U32E1 # CIRCLED KATAKANA TU
+<Multi_key> <parenleft> <kana_TE> <parenright> : "ã‹¢" U32E2 # CIRCLED KATAKANA TE
+<Multi_key> <parenleft> <kana_TO> <parenright> : "ã‹£" U32E3 # CIRCLED KATAKANA TO
+<Multi_key> <parenleft> <kana_NA> <parenright> : "㋤" U32E4 # CIRCLED KATAKANA NA
+<Multi_key> <parenleft> <kana_NI> <parenright> : "ã‹¥" U32E5 # CIRCLED KATAKANA NI
+<Multi_key> <parenleft> <kana_NU> <parenright> : "㋦" U32E6 # CIRCLED KATAKANA NU
+<Multi_key> <parenleft> <kana_NE> <parenright> : "㋧" U32E7 # CIRCLED KATAKANA NE
+<Multi_key> <parenleft> <kana_NO> <parenright> : "㋨" U32E8 # CIRCLED KATAKANA NO
+<Multi_key> <parenleft> <kana_HA> <parenright> : "ã‹©" U32E9 # CIRCLED KATAKANA HA
+<Multi_key> <parenleft> <kana_HI> <parenright> : "㋪" U32EA # CIRCLED KATAKANA HI
+<Multi_key> <parenleft> <kana_FU> <parenright> : "ã‹«" U32EB # CIRCLED KATAKANA HU
+<Multi_key> <parenleft> <kana_HE> <parenright> : "㋬" U32EC # CIRCLED KATAKANA HE
+<Multi_key> <parenleft> <kana_HO> <parenright> : "ã‹­" U32ED # CIRCLED KATAKANA HO
+<Multi_key> <parenleft> <kana_MA> <parenright> : "ã‹®" U32EE # CIRCLED KATAKANA MA
+<Multi_key> <parenleft> <kana_MI> <parenright> : "㋯" U32EF # CIRCLED KATAKANA MI
+<Multi_key> <parenleft> <kana_MU> <parenright> : "ã‹°" U32F0 # CIRCLED KATAKANA MU
+<Multi_key> <parenleft> <kana_ME> <parenright> : "㋱" U32F1 # CIRCLED KATAKANA ME
+<Multi_key> <parenleft> <kana_MO> <parenright> : "㋲" U32F2 # CIRCLED KATAKANA MO
+<Multi_key> <parenleft> <kana_YA> <parenright> : "㋳" U32F3 # CIRCLED KATAKANA YA
+<Multi_key> <parenleft> <kana_YU> <parenright> : "ã‹´" U32F4 # CIRCLED KATAKANA YU
+<Multi_key> <parenleft> <kana_YO> <parenright> : "㋵" U32F5 # CIRCLED KATAKANA YO
+<Multi_key> <parenleft> <kana_RA> <parenright> : "㋶" U32F6 # CIRCLED KATAKANA RA
+<Multi_key> <parenleft> <kana_RI> <parenright> : "ã‹·" U32F7 # CIRCLED KATAKANA RI
+<Multi_key> <parenleft> <kana_RU> <parenright> : "㋸" U32F8 # CIRCLED KATAKANA RU
+<Multi_key> <parenleft> <kana_RE> <parenright> : "㋹" U32F9 # CIRCLED KATAKANA RE
+<Multi_key> <parenleft> <kana_RO> <parenright> : "㋺" U32FA # CIRCLED KATAKANA RO
+<Multi_key> <parenleft> <kana_WA> <parenright> : "ã‹»" U32FB # CIRCLED KATAKANA WA
+<Multi_key> <parenleft> <U30f0> <parenright> : "㋼" U32FC # CIRCLED KATAKANA WI
+<Multi_key> <parenleft> <U30f1> <parenright> : "㋽" U32FD # CIRCLED KATAKANA WE
+<Multi_key> <parenleft> <kana_WO> <parenright> : "㋾" U32FE # CIRCLED KATAKANA WO
+<Multi_key> <U05b4> <hebrew_yod> : "ï¬" UFB1D # HEBREW LETTER YOD WITH HIRIQ
+<Multi_key> <U05b7> <U05f2> : "ײַ" UFB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+<Multi_key> <U05c1> <hebrew_shin> : "שׁ" UFB2A # HEBREW LETTER SHIN WITH SHIN DOT
+<Multi_key> <U05c2> <hebrew_shin> : "שׂ" UFB2B # HEBREW LETTER SHIN WITH SIN DOT
+<Multi_key> <U05c1> <Ufb49> : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+<Multi_key> <U05c1> <U05bc> <hebrew_shin> : "שּׁ" UFB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+<Multi_key> <U05c2> <Ufb49> : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+<Multi_key> <U05c2> <U05bc> <hebrew_shin> : "שּׂ" UFB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+<Multi_key> <U05b7> <hebrew_aleph> : "אַ" UFB2E # HEBREW LETTER ALEF WITH PATAH
+<Multi_key> <U05b8> <hebrew_aleph> : "אָ" UFB2F # HEBREW LETTER ALEF WITH QAMATS
+<Multi_key> <U05bc> <hebrew_aleph> : "אּ" UFB30 # HEBREW LETTER ALEF WITH MAPIQ
+<Multi_key> <U05bc> <hebrew_bet> : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_beth> : "בּ" UFB31 # HEBREW LETTER BET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_gimel> : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH
+<Multi_key> <U05bc> <hebrew_gimmel> : "גּ" UFB32 # HEBREW LETTER GIMEL WITH DAGESH
+<Multi_key> <U05bc> <hebrew_dalet> : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_daleth> : "דּ" UFB33 # HEBREW LETTER DALET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_he> : "הּ" UFB34 # HEBREW LETTER HE WITH MAPIQ
+<Multi_key> <U05bc> <hebrew_waw> : "וּ" UFB35 # HEBREW LETTER VAV WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zain> : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zayin> : "זּ" UFB36 # HEBREW LETTER ZAYIN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_tet> : "טּ" UFB38 # HEBREW LETTER TET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_teth> : "טּ" UFB38 # HEBREW LETTER TET WITH DAGESH
+<Multi_key> <U05bc> <hebrew_yod> : "יּ" UFB39 # HEBREW LETTER YOD WITH DAGESH
+<Multi_key> <U05bc> <hebrew_finalkaph> : "ךּ" UFB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_kaph> : "כּ" UFB3B # HEBREW LETTER KAF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_lamed> : "לּ" UFB3C # HEBREW LETTER LAMED WITH DAGESH
+<Multi_key> <U05bc> <hebrew_mem> : "מּ" UFB3E # HEBREW LETTER MEM WITH DAGESH
+<Multi_key> <U05bc> <hebrew_nun> : "ï­€" UFB40 # HEBREW LETTER NUN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_samech> : "ï­" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH
+<Multi_key> <U05bc> <hebrew_samekh> : "ï­" UFB41 # HEBREW LETTER SAMEKH WITH DAGESH
+<Multi_key> <U05bc> <hebrew_finalpe> : "ï­ƒ" UFB43 # HEBREW LETTER FINAL PE WITH DAGESH
+<Multi_key> <U05bc> <hebrew_pe> : "ï­„" UFB44 # HEBREW LETTER PE WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zade> : "ï­†" UFB46 # HEBREW LETTER TSADI WITH DAGESH
+<Multi_key> <U05bc> <hebrew_zadi> : "ï­†" UFB46 # HEBREW LETTER TSADI WITH DAGESH
+<Multi_key> <U05bc> <hebrew_kuf> : "ï­‡" UFB47 # HEBREW LETTER QOF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_qoph> : "ï­‡" UFB47 # HEBREW LETTER QOF WITH DAGESH
+<Multi_key> <U05bc> <hebrew_resh> : "ï­ˆ" UFB48 # HEBREW LETTER RESH WITH DAGESH
+<Multi_key> <U05bc> <hebrew_shin> : "ï­‰" UFB49 # HEBREW LETTER SHIN WITH DAGESH
+<Multi_key> <U05bc> <hebrew_taf> : "ï­Š" UFB4A # HEBREW LETTER TAV WITH DAGESH
+<Multi_key> <U05bc> <hebrew_taw> : "ï­Š" UFB4A # HEBREW LETTER TAV WITH DAGESH
+<Multi_key> <U05b9> <hebrew_waw> : "ï­‹" UFB4B # HEBREW LETTER VAV WITH HOLAM
+<Multi_key> <U05bf> <hebrew_bet> : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE
+<Multi_key> <U05bf> <hebrew_beth> : "בֿ" UFB4C # HEBREW LETTER BET WITH RAFE
+<Multi_key> <U05bf> <hebrew_kaph> : "ï­" UFB4D # HEBREW LETTER KAF WITH RAFE
+<Multi_key> <U05bf> <hebrew_pe> : "ï­Ž" UFB4E # HEBREW LETTER PE WITH RAFE
+<Multi_key> <U1d157> <U1d165> : "í…ž" U1D15E # MUSICAL SYMBOL HALF NOTE
+<Multi_key> <U1d158> <U1d165> : "í…Ÿ" U1D15F # MUSICAL SYMBOL QUARTER NOTE
+<Multi_key> <U1d15f> <U1d16e> : "í… " U1D160 # MUSICAL SYMBOL EIGHTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d16e> : "í… " U1D160 # MUSICAL SYMBOL EIGHTH NOTE
+<Multi_key> <U1d15f> <U1d16f> : "í…¡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d16f> : "í…¡" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+<Multi_key> <U1d15f> <U1d170> : "í…¢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+<Multi_key> <U1d158> <U1d165> <U1d170> : "í…¢" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+<Multi_key> <U1d15f> <U1d171> : "í…£" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d171> : "í…£" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+<Multi_key> <U1d15f> <U1d172> : "í…¤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+<Multi_key> <U1d158> <U1d165> <U1d172> : "í…¤" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+<Multi_key> <U1d1b9> <U1d165> : "톻" U1D1BB # MUSICAL SYMBOL MINIMA
+<Multi_key> <U1d1ba> <U1d165> : "톼" U1D1BC # MUSICAL SYMBOL MINIMA BLACK
+<Multi_key> <U1d1bb> <U1d16e> : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+<Multi_key> <U1d1b9> <U1d165> <U1d16e> : "톽" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+<Multi_key> <U1d1bc> <U1d16e> : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+<Multi_key> <U1d1ba> <U1d165> <U1d16e> : "톾" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+<Multi_key> <U1d1bb> <U1d16f> : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE
+<Multi_key> <U1d1b9> <U1d165> <U1d16f> : "톿" U1D1BF # MUSICAL SYMBOL FUSA WHITE
+<Multi_key> <U1d1bc> <U1d16f> : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK
+<Multi_key> <U1d1ba> <U1d165> <U1d16f> : "퇀" U1D1C0 # MUSICAL SYMBOL FUSA BLACK
diff --git a/app-i18n/gtk1-utf8/files/XI18N_OBJS b/app-i18n/gtk1-utf8/files/XI18N_OBJS
new file mode 100644
index 0000000..8455c6c
--- /dev/null
+++ b/app-i18n/gtk1-utf8/files/XI18N_OBJS
@@ -0,0 +1,7 @@
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for en_US.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/app-i18n/gtk1-utf8/files/XLC_LOCALE b/app-i18n/gtk1-utf8/files/XLC_LOCALE
new file mode 100644
index 0000000..12e45e3
--- /dev/null
+++ b/app-i18n/gtk1-utf8/files/XLC_LOCALE
@@ -0,0 +1,149 @@
+# $XFree86: xc/nls/XLC_LOCALE/en_US.UTF-8,v 1.2 2000/02/29 03:09:07 dawes Exp $
+# XLocale Database Sample for en_US.UTF-8
+#
+
+#
+# XLC_FONTSET category
+#
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+# fs0 class
+fs0 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+# We leave the legacy encodings in for the moment, because we don't
+# have that many ISO10646 fonts yet.
+# fs1 class (7 bit ASCII)
+fs1 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+# fs2 class (ISO8859 families)
+fs2 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+## fs3 class (Kanji)
+#fs3 {
+# charset {
+# name JISX0208.1983-0:GL
+# }
+# font {
+# primary JISX0208.1983-0:GL
+# }
+#}
+
+## fs4 class (Korean Character)
+#fs4 {
+# charset {
+# name KSC5601.1987-0:GL
+# }
+# font {
+# primary KSC5601.1987-0:GL
+# }
+#}
+
+
+## fs5 class (Chinese Han Character)
+#fs5 {
+# charset {
+# name GB2312.1980-0:GL
+# }
+# font {
+# primary GB2312.1980-0:GL
+# }
+#}
+
+
+## fs6 class (Half Kana)
+#fs6 {
+# charset {
+# name JISX0201.1976-0:GR
+# }
+# font {
+# primary JISX0201.1976-0:GR
+# vertical_rotate all
+# }
+#}
+
+END XLC_FONTSET
+
+#
+# XLC_XLOCALE category
+#
+XLC_XLOCALE
+
+encoding_name UTF-8
+#mb_cur_max 6
+mb_cur_max 2
+state_depend_encoding False
+
+# cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+# cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+# cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+# cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+# cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+# cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+# cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/app-i18n/gtk1-utf8/files/gtkrc.ru_RU.utf-8 b/app-i18n/gtk1-utf8/files/gtkrc.ru_RU.utf-8
new file mode 100644
index 0000000..1b84a52
--- /dev/null
+++ b/app-i18n/gtk1-utf8/files/gtkrc.ru_RU.utf-8
@@ -0,0 +1,30 @@
+# fonts for Unicode locales.
+
+#style "gtk-default-ru" {
+#fontset = "\
+#-*-fixed-medium-*-*-*-18-*-*-*-*-*-iso10646-*\,
+#-*-fixed-medium-*-*-*-18-*-*-*-*-*-iso10646-*\,
+#-*-fixed-medium-*-*-*-18-*-*-*-*-*-iso10646-*\,
+#-*-fixed-medium-*-*-*-18-*-*-*-*-*-iso10646-*\,
+#"
+#}
+
+style "gtk-default-ru" {
+ fontset = "-xos4-terminus-medium-r-normal-*-*-120-*-*-c-*-iso10646-1,*-r-*"
+}
+
+
+#style "gtk-default-ru" {
+# fontset = "-misc-fixed-medium-r-semicondensed-*-*-120-*-*-c-*-koi8-r,*-r-*"
+#}
+
+#fontset = "\
+#-rfx-*-medium-r-normal-sans-12-120-75-75-*-*-iso10646-1\,
+#-rfx-*-medium-r-normal-sans-12-120-75-75-*-*-iso10646-1\,
+#-rfx-*-medium-r-normal-sans-12-120-75-75-*-*-iso10646-1\,
+#-rfx-*-medium-r-normal-sans-12-120-75-75-*-*-iso10646-1\,
+#"
+#}
+
+class "GtkWidget" style "gtk-default-ru"
+
diff --git a/app-i18n/gtk1-utf8/gtk1-utf8-1.0.ebuild b/app-i18n/gtk1-utf8/gtk1-utf8-1.0.ebuild
new file mode 100644
index 0000000..a7101b0
--- /dev/null
+++ b/app-i18n/gtk1-utf8/gtk1-utf8-1.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Fix for GTK1+ && ru_RU.UTF8"
+HOMEPAGE="http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+RDEPEND=">=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font"
+DEPEND="${RDEPEND}"
+
+src_install() {
+ dodir /usr/lib/X11/locale/ru_RU.UTF-8
+ insinto /usr/lib/X11/locale/ru_RU.UTF-8/
+ doins ${FILESDIR}/XLC_LOCALE
+ doins ${FILESDIR}/XI18N_OBJS
+ doins ${FILESDIR}/Compose
+
+ insinto /etc/gtk
+ doins ${FILESDIR}/gtkrc.ru_RU.utf-8
+
+ einfo "Please, read documentation here"
+ einfo "http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8"
+}
+
+pkg_postinst() {
+ perl -pi -e 's|en_US.UTF-8/Compose\s+ru_RU.UTF-8|ru_RU.UTF-8/Compose ru_RU.UTF-8|' /usr/lib/X11/locale/compose.dir
+ perl -pi -e 's|en_US.UTF-8/Compose:\s+ru_RU.UTF-8|ru_RU.UTF-8/Compose: ru_RU.UTF-8|' /usr/lib/X11/locale/compose.dir
+ perl -pi -e 's|en_US.UTF-8/XLC_LOCALE\s+ru_RU.UTF-8|ru_RU.UTF-8/XLC_LOCALE ru_RU.UTF-8|' /usr/lib/X11/locale/locale.dir
+ perl -pi -e 's|en_US.UTF-8/XLC_LOCALE:\s+ru_RU.UTF-8|ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8|' /usr/lib/X11/locale/locale.dir
+}
diff --git a/app-i18n/gtk1-utf8/gtk1-utf8-1.1.ebuild b/app-i18n/gtk1-utf8/gtk1-utf8-1.1.ebuild
new file mode 100644
index 0000000..1b1ef04
--- /dev/null
+++ b/app-i18n/gtk1-utf8/gtk1-utf8-1.1.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Fix for GTK1+ && ru_RU.UTF8"
+HOMEPAGE="http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+RDEPEND=">=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font"
+DEPEND="${RDEPEND}"
+
+src_install() {
+ dodir /usr/share/X11/locale/ru_RU.UTF-8
+ insinto /usr/share/X11/locale/ru_RU.UTF-8/
+ doins ${FILESDIR}/XLC_LOCALE
+ doins ${FILESDIR}/XI18N_OBJS
+ doins ${FILESDIR}/Compose
+
+ insinto /etc/gtk
+ doins ${FILESDIR}/gtkrc.ru_RU.utf-8
+
+ einfo "Please, read documentation here"
+ einfo "http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8"
+}
+
+pkg_postinst() {
+ perl -pi -e 's|en_US.UTF-8/Compose\s+ru_RU.UTF-8|ru_RU.UTF-8/Compose ru_RU.UTF-8|' /usr/share/X11/locale/compose.dir
+ perl -pi -e 's|en_US.UTF-8/Compose:\s+ru_RU.UTF-8|ru_RU.UTF-8/Compose: ru_RU.UTF-8|' /usr/share/X11/locale/compose.dir
+ perl -pi -e 's|en_US.UTF-8/XLC_LOCALE\s+ru_RU.UTF-8|ru_RU.UTF-8/XLC_LOCALE ru_RU.UTF-8|' /usr/share/X11/locale/locale.dir
+ perl -pi -e 's|en_US.UTF-8/XLC_LOCALE:\s+ru_RU.UTF-8|ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8|' /usr/share/X11/locale/locale.dir
+}
diff --git a/app-i18n/gtk1-utf8/gtk1-utf8-1.2.ebuild b/app-i18n/gtk1-utf8/gtk1-utf8-1.2.ebuild
new file mode 100644
index 0000000..69c4c97
--- /dev/null
+++ b/app-i18n/gtk1-utf8/gtk1-utf8-1.2.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Fix for GTK1+ && ru_RU.UTF8"
+HOMEPAGE="http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+RDEPEND=">=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font"
+DEPEND="${RDEPEND}"
+
+src_install() {
+ dodir /usr/share/X11/locale/gtk1.UTF-8
+ insinto /usr/share/X11/locale/gtk1.UTF-8/
+ doins ${FILESDIR}/XLC_LOCALE
+ doins ${FILESDIR}/XI18N_OBJS
+ doins ${FILESDIR}/Compose
+
+ insinto /etc/gtk
+ doins ${FILESDIR}/gtkrc.ru_RU.utf-8
+
+ einfo "Please, read documentation here"
+ einfo "http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8"
+}
+
+pkg_postinst() {
+ perl -pi -e 's|en_US.UTF-8/Compose\s+ru_RU.UTF-8|gtk1.UTF-8/Compose ru_RU.UTF-8|' /usr/share/X11/locale/compose.dir
+ perl -pi -e 's|en_US.UTF-8/Compose:\s+ru_RU.UTF-8|gtk1.UTF-8/Compose: ru_RU.UTF-8|' /usr/share/X11/locale/compose.dir
+ perl -pi -e 's|en_US.UTF-8/XLC_LOCALE\s+ru_RU.UTF-8|gtk1.UTF-8/XLC_LOCALE ru_RU.UTF-8|' /usr/share/X11/locale/locale.dir
+ perl -pi -e 's|en_US.UTF-8/XLC_LOCALE:\s+ru_RU.UTF-8|gtk1.UTF-8/XLC_LOCALE: ru_RU.UTF-8|' /usr/share/X11/locale/locale.dir
+ perl -pi -e 's|ru_RU.UTF-8/Compose\s+ru_RU.UTF-8|gtk1.UTF-8/Compose ru_RU.UTF-8|' /usr/share/X11/locale/compose.dir
+ perl -pi -e 's|ru_RU.UTF-8/Compose:\s+ru_RU.UTF-8|gtk1.UTF-8/Compose: ru_RU.UTF-8|' /usr/share/X11/locale/compose.dir
+ perl -pi -e 's|ru_RU.UTF-8/XLC_LOCALE\s+ru_RU.UTF-8|gtk1.UTF-8/XLC_LOCALE ru_RU.UTF-8|' /usr/share/X11/locale/locale.dir
+ perl -pi -e 's|ru_RU.UTF-8/XLC_LOCALE:\s+ru_RU.UTF-8|gtk1.UTF-8/XLC_LOCALE: ru_RU.UTF-8|' /usr/share/X11/locale/locale.dir
+}
diff --git a/app-i18n/libguess/Manifest b/app-i18n/libguess/Manifest
new file mode 100644
index 0000000..e4fd2c6
--- /dev/null
+++ b/app-i18n/libguess/Manifest
@@ -0,0 +1,3 @@
+AUX libguess-ds-cn.patch 2288 BLAKE2B df545ba1f6cf691296518deda2f499b308ed63bb1a45167fe17891f0a49710ddfd805fb78e63741014ffcb467d07ca1ab7611e1eeb8d153a2aaf1138b7141700 SHA512 a40420cecdcde08f53e87f845d40c4c544d5057748ef6408e85197b898709c0af74090a196aa0678fc370817357a2e26bcb06235f8b6ef5a34ca870179033c9f
+DIST libguess-0.2.0-d7.tar.gz 8166 BLAKE2B ee4085b64838d8d1480030ad37fb654312a01e71e7cbe88dac3daacc4cd879e8e6dcee42df45db7f60116a645cf3ddb91d839ca1f3439c807a636cbf378e6b1b SHA512 b9d0aeb97cb58452a8ede76753c08549405154225b15fad0190d920d068272b2106f8d5a93fe6fac08921a9951681f3e4b959827273b8ff0750460381a2644ba
+EBUILD libguess-0.2.0-r1.ebuild 1025 BLAKE2B 4e90632c2ccac30c32b4de3e076fb42982f5eeaf70526295eabc2969c5886be188cd947fff3e183f81cf5668b1bc6ca228ffbf5617dcd9043c1bb6eb5b8d277f SHA512 b223e9a1b61ba55401cb5173ce71085c1417bda8f0b3d1d5255a8496f7071a3765ad7507c9ec016c30b17352d5c3fe86cf9aafc695d85cc69491c214d2949ae8
diff --git a/app-i18n/libguess/files/libguess-ds-cn.patch b/app-i18n/libguess/files/libguess-ds-cn.patch
new file mode 100644
index 0000000..7c2384b
--- /dev/null
+++ b/app-i18n/libguess/files/libguess-ds-cn.patch
@@ -0,0 +1,62 @@
+diff -dPNur libguess-0.2.0-d7/guess.c libguess-0.2.0-d7-new/guess.c
+--- libguess-0.2.0-d7/guess.c 2006-12-05 17:59:32.000000000 +0100
++++ libguess-0.2.0-d7-new/guess.c 2007-06-26 19:56:59.000000000 +0200
+@@ -44,7 +44,7 @@
+ /* ORDER_** &highest, &second, ... &lowest */
+ #define ORDER_JP &utf8, &sjis, &eucj
+ #define ORDER_TW &utf8, &big5
+-#define ORDER_CN &utf8, &gb2312, &gb18030
++#define ORDER_CN &utf8, &gb2312, &gb18030, &big5
+ #define ORDER_KR &utf8, &euck, &johab
+
+ /* workaround for that glib's g_convert can't convert
+@@ -252,6 +252,8 @@
+ guess_dfa gb2312 = DFA_INIT(guess_gb2312_st, guess_gb2312_ar);
+ guess_dfa utf8 = DFA_INIT(guess_utf8_st, guess_utf8_ar);
+ guess_dfa gb18030 = DFA_INIT(guess_gb18030_st, guess_gb18030_ar);
++ guess_dfa big5 = DFA_INIT(guess_big5_st, guess_big5_ar);
++
+ guess_dfa *top = NULL;
+
+ guess_dfa *order[] = { ORDER_CN, NULL };
+@@ -287,22 +289,27 @@
+ }
+
+ if (DFA_ALIVE(gb2312)) {
+- if (!DFA_ALIVE(utf8) && !DFA_ALIVE(gb18030))
++ if (!DFA_ALIVE(utf8) && !DFA_ALIVE(gb18030) && !DFA_ALIVE(big5))
+ return "GB2312";
+ DFA_NEXT(gb2312, c);
+ }
+ if (DFA_ALIVE(utf8)) {
+- if (!DFA_ALIVE(gb2312) && !DFA_ALIVE(gb18030))
++ if (!DFA_ALIVE(gb2312) && !DFA_ALIVE(gb18030) && !DFA_ALIVE(big5))
+ return "UTF-8";
+ DFA_NEXT(utf8, c);
+ }
+ if (DFA_ALIVE(gb18030)) {
+- if (!DFA_ALIVE(utf8) && !DFA_ALIVE(gb2312))
++ if (!DFA_ALIVE(utf8) && !DFA_ALIVE(gb2312) && !DFA_ALIVE(big5))
+ return "GB18030";
+ DFA_NEXT(gb18030, c);
+ }
++ if (DFA_ALIVE(big5)) {
++ if (!DFA_ALIVE(utf8) && !DFA_ALIVE(gb2312) && !DFA_ALIVE(gb18030))
++ return "big5";
++ DFA_NEXT(big5, c);
++ }
+
+- if (!DFA_ALIVE(gb2312) && !DFA_ALIVE(utf8) && !DFA_ALIVE(gb18030)) {
++ if (!DFA_ALIVE(gb2312) && !DFA_ALIVE(utf8) && !DFA_ALIVE(gb18030) && !DFA_ALIVE(big5)) {
+ /* we ran out the possibilities */
+ return NULL;
+ }
+@@ -323,6 +330,8 @@
+ return "UTF-8";
+ if (top == &gb18030)
+ return "GB18030";
++ if (top == &big5)
++ return "BIG5";
+ return NULL;
+ }
+
diff --git a/app-i18n/libguess/libguess-0.2.0-r1.ebuild b/app-i18n/libguess/libguess-0.2.0-r1.ebuild
new file mode 100644
index 0000000..fd7d349
--- /dev/null
+++ b/app-i18n/libguess/libguess-0.2.0-r1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+EXT_VER="d7"
+
+DESCRIPTION="LibGuess is Encoding Detection Library for Japanese, Chinese, Korean and Thai Languages"
+SRC_URI="http://www.honeyplanet.jp/${P}-${EXT_VER}.tar.gz"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+S=${WORKDIR}/${P}-${EXT_VER}
+
+src_unpack() {
+ unpack ${P}-${EXT_VER}.tar.gz || die
+ epatch "${FILESDIR}"/libguess-ds-cn.patch || die
+}
+
+src_compile() {
+ sed -i'' -e "s/\-o libguess.so/\-o libguess.so \$(LDFLAGS)/" Makefile || die
+ make || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib || die
+ mkdir -p ${D}/usr/include || die
+ make install PREFIX=${D}/usr || die
+
+ # Fix links
+ rm ${D}/usr/lib/libguess.{so,so.0,a}
+ ln -s libguess.so.${PV} ${D}/usr/lib/libguess.so.0
+ ln -s libguess.so.0 ${D}/usr/lib/libguess.so
+
+ # Fix multilib
+ [ $(get_libdir) == "lib" ] || mv "${D}/usr/lib" "${D}/usr/$(get_libdir)"
+}
diff --git a/app-i18n/librcc/Manifest b/app-i18n/librcc/Manifest
new file mode 100644
index 0000000..e2f27e6
--- /dev/null
+++ b/app-i18n/librcc/Manifest
@@ -0,0 +1,18 @@
+AUX librcc-strnlen.patch 277 SHA256 832326b81d8ab77d036801d1a4ab6496f3c37d45f9377a65e088584d6df8b7d2 SHA512 b1835d15450b1f33ddb77573f3a40ab3d7300d5e651d88c79eb9eb9cae83de57b08c36e81435090449b5e7c052ea276ae21ffbddaf9229e3f3d01031ab8ab3a6 WHIRLPOOL 638204e4a352060a1537f2b74ecd2cd5acbc2266ba3c124ff143e13a70234643fa1a02ac78f1308542637452ceb3e524cbd3831c55273c5c2adcf2f037878a7b
+AUX rcc-debug.patch 515 SHA256 0d6e8bdb7e39b82645351893fa5dbf6d4af955b7b8e766996d6987c5f1c044f4 SHA512 90ccdaf55fa7e7b6a17bb76132491929e29366744963cf5c5dddc0e8b5c8887bc164b2057494df02efd61e96ca08863817319f0c1c6ec1f1faab48cb947d956c WHIRLPOOL 848f0c6f77a7ad46b85621930a360e2c1eac92954e4dde07e4b8b14d60a1406709bc752abddefafe89a04a5d41beec46ece7160020515aa8904e6f8f75d956f2
+DIST librcc-0.2.10.tar.bz2 469008 SHA256 b0080d7a15b453d4a76719496d7b88425ffef4a55278694996467989d2d22361 SHA512 c75a07ba3ebbf5228a3d06d01a274378d67d3978d74aea219a80dc06adb07810c5eb6ce37d6fd788f90569009795229172f9070c7fec2bb2f9269fde17a5c0fa WHIRLPOOL c694ab35da533c7fa96b1c340b93fbc1b76f0c7aa8004f885d1ff1d354dd88858a3a9852f537ee6af561af36cb59beb95992ee747727d5862983bdf178960d1b
+DIST librcc-0.2.12.tar.bz2 466527 SHA256 207973fbb73e1e376dad7542af17fe428efece91ea7f92a4efbcee676d2cb74b SHA512 6855ffbb8205f4c4d19fc6303c9decc00b598c0cf8c39f7352a3afc159ff7881b6911ae06e73db21e99f3b0a587f3c913825d9a4748ef9cbcbabfc7c27a59d71 WHIRLPOOL 1d06efe6c37397b1c7610ff9ae923aa1f66163a75e726c2d5f79886dd3a22eee3c4fcd3e265a56c034c55d39aaccbdd705286689463f3c1a6ec249af5d29bd44
+DIST librcc-0.2.3.tar.bz2 362702 SHA256 39ef2d61bc97bc72ec61144a50b865e2e067ddbd120ffa4c1dadba5ee6b974e3 SHA512 ec59a9b1fa1211f5c1c9b8a9a04423c7bd9b8fd34544bad5dccf0131f01b0ed1b29ad4178f352b205abf9782a275f4b5af830206c8ba2c38ff9d861cedf2d288 WHIRLPOOL c5f2963c5289f2bd61208fec89f80084e6f746521b7ba5f92517825ce1ee6e0c6c1a7d125bcfd2b6ec7e14729315e748cfe1004d5ce222201ee0127f899843d6
+DIST librcc-0.2.5.tar.bz2 494855 SHA256 d46b1bfc8b95ea73b12d9230f4103d18a6c3e2560f5c1d80073f62308b70307e SHA512 d5b4fb06ef523edfadf67c4c9999213aa36e7ea5aa125ed4c66ef15e4c2816d6d5c76526570b57f21f38ae62fb2b43b61869988a671b328416ccf39f97bb4a69 WHIRLPOOL 4edae96b591d494e625a4b6f1c607375f369617a49c6dda82ae6b241c85efcb2666318e60c5c18378075e34d0d4b5ec0292f22a24a2af096087be5f868fb5169
+DIST librcc-0.2.6.tar.bz2 505076 SHA256 0e736b170d396a775e7dc18587fc38228907e630eae50098c98269aa3e405abc SHA512 019a16052b226ae736ed7c36b35ebdf031c36bba8abf54c41878076049bd3fb3306ad4d13ad0ecbaf316794fe3f1eaea3b35fd2d01dd7ddd69617efcc77c380f WHIRLPOOL 0d1b956076bdc06d303bda2a39e6ebdd54ebb21c257204db3f4e48fcf77642320f1a8caf876984053fb680ca467b5041ce0737faf09f7f6893ecbc2bba7f213b
+DIST librcc-0.2.8.tar.bz2 444035 SHA256 59a85800ba238c8ae3dda13fefc6b5b362ce668a186bee696fede460ac8fe8cc SHA512 7df27ee4833e7800bbb58acf745e6ae9f849732c4163cc5a7feaaccbe06f4514c3afd499e7144f3aa1af4ddd533ba4f37e6c42725d30a15d68df3ff2260a4efb WHIRLPOOL e95205bad1de2eb1befbb727f9ee1b3a18d6f83f28546798c733e52e89270a138d4000208be0b0d261005c7c24bc33179fbace225d2d9c0651651efc33601121
+DIST librcc-0.2.9.tar.bz2 411294 SHA256 8d3bd4083edfd54dcd866d5b9f3f3f2a4f63013c895eeabb00e3be79e44e3a43 SHA512 b4d7418caa3a91ffd93d27bf5be3b701027df55235c8a4eea62df43e96fe8e7217b28154fdd53b7917da01b9985b063f932f37f2fac9b9c3e22a96ad4994ec9b WHIRLPOOL 69693303181f2f0893e56137d689dfec0173ec001bef0daf631eb4d71f7371fbd946506f1c0caa2aacdb76010cbace0e3a5311c3c0a111c1d281caadcdd67724
+EBUILD librcc-0.2.10.ebuild 1375 SHA256 1fa410eab7af02315ec580ce8b6a74ebba5f7c7a399ea73844525d0f78621922 SHA512 ad3bcf0ff35bc9801ef7a0bcbf2794eafa5fb3f16cc64db487dd002471a17705b89eba8e597d12a5183e366b762ef7b38badd685f6668e0381e7e338af6c418b WHIRLPOOL 98c9b6df0bfb372965b59f6028a47f8beeb363e0392e5d956542295926f74da44cfe6000ee147feadb8bca7e389815dcc1ab255e887197f61083678d5749618d
+EBUILD librcc-0.2.12-r1.ebuild 1411 SHA256 ca470792025c694d3f1e75e7fe6b1c279adc8d1a0db10d9251d72e21bec97f96 SHA512 d09681b5f7198411357713a58e30a6ba230620f4f05ee325f31facb1f04298bf922bfe3d9e92ecadd105d76f2ef93ed1d950a5f9ccc39bf4f857089f6c4c7101 WHIRLPOOL 3759952523770a5f6061bd3423be9ea039b86249d9a986631089f63a022dcee46fe85598b9ba4c5ec41f59d9851175778048958cb7dc3d393304650c60156c5a
+EBUILD librcc-0.2.12.ebuild 1375 SHA256 1fa410eab7af02315ec580ce8b6a74ebba5f7c7a399ea73844525d0f78621922 SHA512 ad3bcf0ff35bc9801ef7a0bcbf2794eafa5fb3f16cc64db487dd002471a17705b89eba8e597d12a5183e366b762ef7b38badd685f6668e0381e7e338af6c418b WHIRLPOOL 98c9b6df0bfb372965b59f6028a47f8beeb363e0392e5d956542295926f74da44cfe6000ee147feadb8bca7e389815dcc1ab255e887197f61083678d5749618d
+EBUILD librcc-0.2.3-r4.ebuild 1074 SHA256 0a0b84b63c1913aa4b8b433dba8ea20ed423dfcd643315515473b8e575b0688f SHA512 84914dfa2bb369af730954131af4beed331c980a3fab9ba81b22fc04ee07c74da140e8deaa3322c986040594f7fc32af1760e1ce495f1d55c4a084b47c2806fc WHIRLPOOL 938907db3144342ae13a4b6d2a2d12763f84fa58d75565b18119cfc8a91bfb8d0b77163e6e00226b8a417d95d2ce86db15db507b7db1b6793c58a416e74cd3ac
+EBUILD librcc-0.2.5-r1.ebuild 1093 SHA256 20fcff8b27d0a9f1415c6911ed01bb368ed73318c4a0c1503a72201623c2b2d7 SHA512 a76d7bfa1711af2bff552506f3ef6a7ffcbfdfecfe6383800f9cd9c60f3ac2acfd6f90cd2d5eec142431c1d2d7388228ad7f59a4916cc1e53b484a835e9a4345 WHIRLPOOL 350b14e7b13eb10fa3a302514dcd69b72adef74f41ecb8bb3fd23951469bc9a254426ee59fc404bcd66dcffe1b67d6eaa17c93780dce6f50733213c260d680f8
+EBUILD librcc-0.2.6.ebuild 1093 SHA256 20fcff8b27d0a9f1415c6911ed01bb368ed73318c4a0c1503a72201623c2b2d7 SHA512 a76d7bfa1711af2bff552506f3ef6a7ffcbfdfecfe6383800f9cd9c60f3ac2acfd6f90cd2d5eec142431c1d2d7388228ad7f59a4916cc1e53b484a835e9a4345 WHIRLPOOL 350b14e7b13eb10fa3a302514dcd69b72adef74f41ecb8bb3fd23951469bc9a254426ee59fc404bcd66dcffe1b67d6eaa17c93780dce6f50733213c260d680f8
+EBUILD librcc-0.2.8-r1.ebuild 1428 SHA256 e3eb256b7ad40b5b5eb715f3ba1cf707ef0fbe7c7faa1e1c651e2a9b256728db SHA512 5358d3d4b9b83a0ee8c52804c8f92b0eda99775950406f4ef9faab1fcd873b99721f1b49c1f8b049505de51269c3293a3cad787608b27423e0d3e56e5e39f997 WHIRLPOOL bb0cd5a72ade7209dd88c434f5c8fe18c24d5303d27312a5196f815bc0e9409881f82eb4c02b2f69bdf497f29ba213d8a6acee9f5fad7656764f50221592aecf
+EBUILD librcc-0.2.8.ebuild 1375 SHA256 bc70114c6c49d8bc6cbc93d2d0c4db2b908f6496a57a9f6dc8e7fb654d041590 SHA512 2d944234bb736ac279cb3d40021f1a164d51c99bc747b725bb5588ee3a14033550d7d9df731e8429bb67e699c89732ce848726653ecade03574aba59f76776d6 WHIRLPOOL face3d0c4f17edbf100ec4b6ae99a7c7fac3393b9a8cc78c8b99c9a4679aa2fa55ce7e40e0744d8f96678ae2d8f6c10d92934a75e78455aebb21c8fa64967abc
+EBUILD librcc-0.2.9.ebuild 1375 SHA256 1fa410eab7af02315ec580ce8b6a74ebba5f7c7a399ea73844525d0f78621922 SHA512 ad3bcf0ff35bc9801ef7a0bcbf2794eafa5fb3f16cc64db487dd002471a17705b89eba8e597d12a5183e366b762ef7b38badd685f6668e0381e7e338af6c418b WHIRLPOOL 98c9b6df0bfb372965b59f6028a47f8beeb363e0392e5d956542295926f74da44cfe6000ee147feadb8bca7e389815dcc1ab255e887197f61083678d5749618d
diff --git a/app-i18n/librcc/files/librcc-strnlen.patch b/app-i18n/librcc/files/librcc-strnlen.patch
new file mode 100644
index 0000000..5c2cec7
--- /dev/null
+++ b/app-i18n/librcc/files/librcc-strnlen.patch
@@ -0,0 +1,11 @@
+--- orig/src/rccstring.h
++++ mod/src/rccstring.h
+@@ -40,7 +40,7 @@
+
+ #ifdef HAVE_STRNLEN
+ # ifndef strnlen
+-int strnlen(const char *str, size_t size);
++size_t strnlen(const char *str, size_t size);
+ # endif /* !strnlen */
+ #else
+ int rccStrnlen(const char *str, size_t size);
diff --git a/app-i18n/librcc/files/rcc-debug.patch b/app-i18n/librcc/files/rcc-debug.patch
new file mode 100644
index 0000000..7f92d2c
--- /dev/null
+++ b/app-i18n/librcc/files/rcc-debug.patch
@@ -0,0 +1,14 @@
+diff -dPNur librcc--main--0.1--patch-34/src/rccconfig.h librcc--main--0.1--patch-34-debug/src/rccconfig.h
+--- librcc--main--0.1--patch-34/src/rccconfig.h 2006-01-08 19:43:06.000000000 +0400
++++ librcc--main--0.1--patch-34-debug/src/rccconfig.h 2006-07-18 20:15:12.000000000 +0500
+@@ -3,8 +3,8 @@
+ #include "librcc.h"
+ #include "opt.h"
+
+-#undef RCC_DEBUG
+-#undef RCC_DEBUG_LANGDETECT
++#define RCC_DEBUG
++#define RCC_DEBUG_LANGDETECT 2
+ #define RCC_LOCALE_VARIABLE "LC_CTYPE"
+
+ extern const char rcc_default_all[];
diff --git a/app-i18n/librcc/librcc-0.2.10.ebuild b/app-i18n/librcc/librcc-0.2.10.ebuild
new file mode 100644
index 0000000..1023751
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.10.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+
+# We are doing this because of ugly automake-wrapper which forces usage of
+# automake version refered in Makefile.in's. And librcc-0.2.8 is prepared with
+# 1.9 while 1.10 is standard now.
+# cd ${P}
+ rm -f `find . -name Makefile.in`
+ rm -f configure
+ rm -f aclocal.m4
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.12-r1.ebuild b/app-i18n/librcc/librcc-0.2.12-r1.ebuild
new file mode 100644
index 0000000..3d2c22e
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.12-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+EAPI=5
+inherit eutils multilib-minimal
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+
+src_prepare() {
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+
+# We are doing this because of ugly automake-wrapper which forces usage of
+# automake version refered in Makefile.in's. And librcc-0.2.8 is prepared with
+# 1.9 while 1.10 is standard now.
+# cd ${P}
+ rm -f `find . -name Makefile.in`
+ rm -f configure
+ rm -f aclocal.m4
+
+ multilib_copy_sources
+}
+
+multilib_src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+multilib_src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.12.ebuild b/app-i18n/librcc/librcc-0.2.12.ebuild
new file mode 100644
index 0000000..1023751
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.12.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+
+# We are doing this because of ugly automake-wrapper which forces usage of
+# automake version refered in Makefile.in's. And librcc-0.2.8 is prepared with
+# 1.9 while 1.10 is standard now.
+# cd ${P}
+ rm -f `find . -name Makefile.in`
+ rm -f configure
+ rm -f aclocal.m4
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.3-r4.ebuild b/app-i18n/librcc/librcc-0.2.3-r4.ebuild
new file mode 100644
index 0000000..f463ded
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.3-r4.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+# cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.5-r1.ebuild b/app-i18n/librcc/librcc-0.2.5-r1.ebuild
new file mode 100644
index 0000000..bc6f0e0
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.5-r1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+# cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.6.ebuild b/app-i18n/librcc/librcc-0.2.6.ebuild
new file mode 100644
index 0000000..bc6f0e0
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.6.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+# cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.8-r1.ebuild b/app-i18n/librcc/librcc-0.2.8-r1.ebuild
new file mode 100644
index 0000000..3190f51
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.8-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+ epatch "${FILESDIR}"/librcc-strnlen.patch || die
+
+# We are doing this because of ugly automake-wrapper which forces usage of
+# automake version refered in Makefile.in's. And librcc-0.2.8 is prepared with
+# 1.9 while 1.10 is standard now.
+# cd ${P}
+ rm -f `find . -name Makefile.in`
+ rm -f configure
+ rm -f aclocal.m4
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.8.ebuild b/app-i18n/librcc/librcc-0.2.8.ebuild
new file mode 100644
index 0000000..a3015cd
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.8.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+# cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+
+# We are doing this because of ugly automake-wrapper which forces usage of
+# automake version refered in Makefile.in's. And librcc-0.2.8 is prepared with
+# 1.9 while 1.10 is standard now.
+ cd ${P}
+ rm -f `find . -name Makefile.in`
+ rm -f configure
+ rm -f aclocal.m4
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcc/librcc-0.2.9.ebuild b/app-i18n/librcc/librcc-0.2.9.ebuild
new file mode 100644
index 0000000..1023751
--- /dev/null
+++ b/app-i18n/librcc/librcc-0.2.9.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCC is Russian Encoding Conversion Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="app-i18n/librcd
+ app-i18n/libguess
+ dev-libs/libxml2
+ sys-libs/db
+ app-i18n/enca
+ app-text/aspell
+ app-dicts/libtranslate"
+
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ cd "${S}"
+# epatch "${FILESDIR}"/rcc-debug.patch || die
+
+# We are doing this because of ugly automake-wrapper which forces usage of
+# automake version refered in Makefile.in's. And librcc-0.2.8 is prepared with
+# 1.9 while 1.10 is standard now.
+# cd ${P}
+ rm -f `find . -name Makefile.in`
+ rm -f configure
+ rm -f aclocal.m4
+}
+
+src_compile() {
+ ./autogen.sh || die
+ econf || die
+ make || die
+ make -C examples || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ mkdir -p ${D}/usr/lib/rcc/engines
+ mkdir -p ${D}/etc
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/lib/rcc/engines/*.a
+ rm -f ${D}/usr/lib/rcc/engines/*.la
+ install -m 644 examples/rcc.xml ${D}/etc
+
+ make -C examples install DESTDIR=${D} INSTALLTOP=${D}/usr || die
+ rm -f ${D}/usr/bin/example*
+}
diff --git a/app-i18n/librcd/Manifest b/app-i18n/librcd/Manifest
new file mode 100644
index 0000000..7a8e857
--- /dev/null
+++ b/app-i18n/librcd/Manifest
@@ -0,0 +1,9 @@
+DIST librcd-0.1.10.tar.bz2 304361 SHA256 9a8ff492d12851698063ecdb7755279cb565068a384977842196ad80c26c9522 SHA512 c1a3d55d6a3ee0743b5f94d23300c5fec0be14624175c3c19b271dc2f9b7027e93226325bf7701756a577aa073113327934d93a5b691983f2b152926919611f9 WHIRLPOOL 5122d2d1125215670422516d244bf246dae95b6072828045b426485b4c73d9afe91e44491eb8d70fe120b89219f58905dd2e5c945776bcf3e27ac68b2ecf8828
+DIST librcd-0.1.11.tar.bz2 305627 SHA256 5258c7eb5db23b47e4fac2d80965a29963a6b0c5b2e80219cc883acadb5d8c50 SHA512 9fa57b14afb5646f70f1541a9e496f31ac0d5d0970d8cc5d9dcfc53f0868a5f1979f169facbab53dcb16e7e69de419857d22b3fa5d79fd73e25ba25229151a6f WHIRLPOOL 4e76a93f710edfe2ee1c2aea22980f104aec047c3b32373583a3edcc5eb5676287fae91c849a39e9da291f5b5835abe70f6fe8d219703d6b710d9a92b949bd10
+DIST librcd-0.1.14.tar.bz2 308041 SHA256 261db28bc864fd4b2d3ba88403b2e421944281e323c1e39c0e61f5160c16b664 SHA512 98aa2ee0a2e5b4b82eb9a48622346bdf5c60303c13565dc537143049ff5cd0b6a1cf940db04c5fcd0acf6af58835531dd0715ad1fca19a54cd0e9b6e5c9dd076 WHIRLPOOL 36ea2c60d5e9dd7da147402e3a283f25242a75449e491824c97eac20e24fdbd5e4997ecb83c07e43507c3ff7db8c93fbd85901ad656f53e8e3c5a67f85e3d2be
+DIST librcd-0.1.8.tar.bz2 250831 SHA256 820bec594ded1029a3f5f288540acf9548fe876d4b4133a0695db30404bfad40 SHA512 e05beb71f7b0429b4e05fc4c9b12f530e708c013572552ddec66694fd2b164a871de063d3300e2aff2c070d2098d1110fdb8cd007c42a8e16c0fbc83ffd7582d WHIRLPOOL dc36e43f23951527388c1f1af6fa4cf7a9b188ea3c7c0bbd4ae58bab82c26ce8dd9af8bc93f9335c172445a9b5c80593f5bc6761c57989f58948545dcc0d1ca3
+EBUILD librcd-0.1.10.ebuild 546 SHA256 20f07f83b11e3b2b59ba09e9fe19c9e515b11ee04beb356cf6e87942edc92213 SHA512 83d69bb8d63c21088fc30921074fdab6c19403eb96957dd3c50edd5c63c59c6deb2d322f165e92c0ff53a99ace293042da1560eb3f1251168f72b22312a589f1 WHIRLPOOL 45f081556011e75ef29ea14fa0cd9d5b0b0995f7d4af42c357acd56455a84630272e909de88384f0c43b54349ce4d50db079bcbccd21b194865c7284e5bde85a
+EBUILD librcd-0.1.11-r1.ebuild 584 SHA256 71c8c69678cc714cc9f7c62833dd3d3fe06b3514cd998debb062ceb0138aada5 SHA512 444e0806582cadf0778d1d2096002c51fe5014352e516adfda10b36d669fccf317c6458f76c79648f632b1f160dbfe5e35c9d7cc2748470b809a50ee2586f6a9 WHIRLPOOL 2400cb9ddb3b013c2c4d08a65956b0e7c98bb02f2d607c1455b98d8d74315f95792c55cfc00af58bf9bb85fe993a8a55dd0bf543141e518bac20c8a7773f3c7b
+EBUILD librcd-0.1.14-r1.ebuild 629 SHA256 1c05216950202e4aae94929e27d45ad0ba243e9fb4df57ddb5492d4b71c6268a SHA512 0a29e1f5d597aeb4e40733e6f92766a24aad5a227081de8515a2a59c44a7863fd461a13abb380a323fe5e9159df0fa8bd87ef19a8b407cd53784fa5518a81d9d WHIRLPOOL c9378a8b508c1a78c36382e6c89cac61030660b307ddb3dbd3b661fbbce2e3f2fb41403dce4f49773f2baee3c2866c52e63029328061cd8b632fefa67206bf79
+EBUILD librcd-0.1.14.ebuild 584 SHA256 71c8c69678cc714cc9f7c62833dd3d3fe06b3514cd998debb062ceb0138aada5 SHA512 444e0806582cadf0778d1d2096002c51fe5014352e516adfda10b36d669fccf317c6458f76c79648f632b1f160dbfe5e35c9d7cc2748470b809a50ee2586f6a9 WHIRLPOOL 2400cb9ddb3b013c2c4d08a65956b0e7c98bb02f2d607c1455b98d8d74315f95792c55cfc00af58bf9bb85fe993a8a55dd0bf543141e518bac20c8a7773f3c7b
+EBUILD librcd-0.1.8-r2.ebuild 546 SHA256 20f07f83b11e3b2b59ba09e9fe19c9e515b11ee04beb356cf6e87942edc92213 SHA512 83d69bb8d63c21088fc30921074fdab6c19403eb96957dd3c50edd5c63c59c6deb2d322f165e92c0ff53a99ace293042da1560eb3f1251168f72b22312a589f1 WHIRLPOOL 45f081556011e75ef29ea14fa0cd9d5b0b0995f7d4af42c357acd56455a84630272e909de88384f0c43b54349ce4d50db079bcbccd21b194865c7284e5bde85a
diff --git a/app-i18n/librcd/librcd-0.1.10.ebuild b/app-i18n/librcd/librcd-0.1.10.ebuild
new file mode 100644
index 0000000..dc343fb
--- /dev/null
+++ b/app-i18n/librcd/librcd-0.1.10.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCD is Russian Encoding Detection Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcd-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+}
+
+src_compile() {
+ ./autogen.sh
+ econf
+ make
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+}
diff --git a/app-i18n/librcd/librcd-0.1.11-r1.ebuild b/app-i18n/librcd/librcd-0.1.11-r1.ebuild
new file mode 100644
index 0000000..ededc9f
--- /dev/null
+++ b/app-i18n/librcd/librcd-0.1.11-r1.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCD is Russian Encoding Detection Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcd-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+}
+
+src_compile() {
+ rm -f Makefile.in aclocal.m4
+
+ ./autogen.sh
+ econf
+ make
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+}
diff --git a/app-i18n/librcd/librcd-0.1.14-r1.ebuild b/app-i18n/librcd/librcd-0.1.14-r1.ebuild
new file mode 100644
index 0000000..003fb71
--- /dev/null
+++ b/app-i18n/librcd/librcd-0.1.14-r1.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+EAPI=5
+inherit eutils multilib-minimal
+
+DESCRIPTION="LibRCD is Russian Encoding Detection Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcd-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_prepare() {
+ multilib_copy_sources
+}
+
+multilib_src_compile() {
+ rm -f Makefile.in aclocal.m4
+
+ ./autogen.sh
+ econf
+ make
+}
+
+multilib_src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+}
diff --git a/app-i18n/librcd/librcd-0.1.14.ebuild b/app-i18n/librcd/librcd-0.1.14.ebuild
new file mode 100644
index 0000000..ededc9f
--- /dev/null
+++ b/app-i18n/librcd/librcd-0.1.14.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCD is Russian Encoding Detection Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcd-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+}
+
+src_compile() {
+ rm -f Makefile.in aclocal.m4
+
+ ./autogen.sh
+ econf
+ make
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+}
diff --git a/app-i18n/librcd/librcd-0.1.8-r2.ebuild b/app-i18n/librcd/librcd-0.1.8-r2.ebuild
new file mode 100644
index 0000000..dc343fb
--- /dev/null
+++ b/app-i18n/librcd/librcd-0.1.8-r2.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibRCD is Russian Encoding Detection Library"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/librcd-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+}
+
+src_compile() {
+ ./autogen.sh
+ econf
+ make
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib
+ mkdir -p ${D}/usr/include
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+}
diff --git a/app-i18n/rcctools/Manifest b/app-i18n/rcctools/Manifest
new file mode 100644
index 0000000..2037cc5
--- /dev/null
+++ b/app-i18n/rcctools/Manifest
@@ -0,0 +1,2 @@
+DIST rcctools-0.1.1.tar.bz2 244443 RMD160 e79247582f644f1167545fa97c7b56c3321dd2db SHA1 178171a922cbbdff6ce936382d22499d6016c027 SHA256 4d9d9c15a5144dde524ed03157cd39160290a09cb3db51c66fc5fcd442177dc6
+EBUILD rcctools-0.1.1.ebuild 489 RMD160 ac40ac670905e37cd82ea90d4b04082a2bc830bd SHA1 b48fbd42e00446b7036869df994d47cd1ecffecb SHA256 9424e44754b6ca071c67bf5f3d9908421d1d4ed604d03755baccce6d9bd1c91e
diff --git a/app-i18n/rcctools/rcctools-0.1.1.ebuild b/app-i18n/rcctools/rcctools-0.1.1.ebuild
new file mode 100644
index 0000000..fcc8ab9
--- /dev/null
+++ b/app-i18n/rcctools/rcctools-0.1.1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Command line interface to LibRCC"
+SRC_URI="http://dside.dyndns.org/files/rusxmms/rcctools-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+}
+
+src_compile() {
+ econf
+ make
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/bin
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+}
diff --git a/app-misc/ds-scripts/Manifest b/app-misc/ds-scripts/Manifest
new file mode 100644
index 0000000..ee32d5e
--- /dev/null
+++ b/app-misc/ds-scripts/Manifest
@@ -0,0 +1,6 @@
+AUX alias.sh.darklin.sh 2456 RMD160 4d60de035540827b69d94d41e3fc1d90c8df1201 SHA1 1cad907993ca8ea67dfa2f8574bd4a16d03ea21e SHA256 da58c951fb46eeffd752ecf6bd0b55e366596f688fe7c9f106ff181059303641
+AUX ds-scripts.tar.bz2 1751 RMD160 383f17c1d5a7938008ef64688c5f8cb714c863da SHA1 a34cd62e1a2dba36e004381f7c6f559829b1b804 SHA256 e6b88f364f3deec1fe3e32c85004ff0748cc8598be5d56373d32da2ae6d520ae
+AUX ds-video.tar.bz2 3863 RMD160 6753ac458788c6908a04c859b075d926a1db7230 SHA1 bcd51ace6ea0b6a9d1e1dd31f4743c9e494be9cc SHA256 201631654834756786a3751641979677b72a0d4beb7befa7cc8d0239e2f83aef
+AUX m3u 882 RMD160 42ede63941634250a16fb61936e864cba922f2ed SHA1 62f085b997fa07e5a9562c1f5707acb26e3b0168 SHA256 a53744b79b83a7ce996ba08de9acef188481970688ee439706b3196e94a13284
+EBUILD ds-scripts-1.0-r1.ebuild 1334 RMD160 090430f435e6d8e419743b45f1aa01062b72c4f5 SHA1 5f71fc8f8db009d32185ea9529300a3df7422a50 SHA256 876039de00b098f0803371f1df06c7d71583142ad4b8d147a776383d4d1f0723
+EBUILD ds-scripts-1.0.ebuild 2228 RMD160 9dfe585b2d42dbe32d6c53e62be32ee48cfbfdb4 SHA1 bc5ad60bd9384d8dda9b979263e8bb9d6252c299 SHA256 a64fed71775ecc779bfaf01ffa8ac96e8e08f40332069e490cc6b8e37b9c9639
diff --git a/app-misc/ds-scripts/ds-scripts-1.0-r1.ebuild b/app-misc/ds-scripts/ds-scripts-1.0-r1.ebuild
new file mode 100644
index 0000000..bd71da7
--- /dev/null
+++ b/app-misc/ds-scripts/ds-scripts-1.0-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+DESCRIPTION="DarkSoft Scripts"
+KEYWORDS="alpha amd64 ppc sparc x86"
+DEPEND="dev-lang/perl"
+SLOT="0"
+
+src_unpack() {
+ cd ${WORKDIR}
+
+ tar xjf ${FILESDIR}/ds-scripts.tar.bz2
+ tar xjf ${FILESDIR}/ds-video.tar.bz2
+}
+
+src_install() {
+ cd ${WORKDIR}
+
+ dodir /usr/bin
+ install -c -m 755 ds-scripts/* ${D}/usr/bin || die
+ install -c -m 755 ds-video/* ${D}/usr/bin || die
+
+ ln -s dvd2divx ${D}/usr/bin/dvd2divx-encode || die
+ ln -s dvd2divx ${D}/usr/bin/dvd2divx-audio || die
+ ln -s dvd2divx ${D}/usr/bin/dvd2divx-subtitle || die
+ install -c -m 755 ${FILESDIR}/m3u ${D}/usr/bin || die
+
+ dodir /etc/profile.d
+ install -c -m 755 ${FILESDIR}/alias.sh.darklin.sh ${D}/etc/profile.d || die
+
+ i=1
+ dodir /mnt/
+ while [ $i -le 5 ]; do
+ dodir /mnt/img$i || die
+ keepdir /mnt/img$i
+
+ dodir /mnt/tmp$i || die
+ keepdir /mnt/tmp$i
+ i=`expr $i + 1`
+ done
+
+ dodir /mnt/auth; chmod 000 ${D}/mnt/auth; keepdir /mnt/auth
+ dodir /mnt/Upload; chmod 777 ${D}/mnt/Upload; keepdir /mnt/Upload
+ dodir /mnt/Download; keepdir /mnt/Download
+
+ ln -s img1 ${D}/mnt/img
+ ln -s tmp1 ${D}/mnt/tmp
+
+ cat > ${D}/etc/m3u.conf << END
+FSEncoding = KOI8-R
+PLEncoding = CP1251
+END
+}
diff --git a/app-misc/ds-scripts/ds-scripts-1.0.ebuild b/app-misc/ds-scripts/ds-scripts-1.0.ebuild
new file mode 100644
index 0000000..7521326
--- /dev/null
+++ b/app-misc/ds-scripts/ds-scripts-1.0.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+DESCRIPTION="DarkSoft Scripts"
+KEYWORDS="alpha amd64 ppc sparc x86"
+DEPEND="dev-lang/perl"
+SLOT="0"
+
+src_unpack() {
+ cd ${WORKDIR}
+
+ tar xjf ${FILESDIR}/ds-scripts.tar.bz2
+ tar xjf ${FILESDIR}/ds-video.tar.bz2
+}
+
+src_install() {
+ cd ${WORKDIR}
+
+ dodir /usr/bin
+ install -c -m 755 ds-scripts/* ${D}/usr/bin || die
+ install -c -m 755 ds-video/* ${D}/usr/bin || die
+
+ ln -s dvd2divx ${D}/usr/bin/dvd2divx-encode || die
+ ln -s dvd2divx ${D}/usr/bin/dvd2divx-audio || die
+ ln -s dvd2divx ${D}/usr/bin/dvd2divx-subtitle || die
+ install -c -m 755 ${FILESDIR}/m3u ${D}/usr/bin || die
+
+ dodir /etc/profile.d
+ install -c -m 755 ${FILESDIR}/alias.sh.darklin.sh ${D}/etc/profile.d || die
+
+ i=1
+ dodir /mnt/
+ while [ $i -le 5 ]; do
+ dodir /mnt/img$i || die
+ keepdir /mnt/img$i
+
+ dodir /mnt/tmp$i || die
+ keepdir /mnt/tmp$i
+ i=`expr $i + 1`
+ done
+
+ dodir /mnt/auth; chmod 000 ${D}/mnt/auth; keepdir /mnt/auth
+ dodir /mnt/Upload; chmod 777 ${D}/mnt/Upload; keepdir /mnt/Upload
+ dodir /mnt/Download; keepdir /mnt/Download
+
+ ln -s img1 ${D}/mnt/img
+ ln -s tmp1 ${D}/mnt/tmp
+
+ cat > ${D}/etc/m3u.conf << END
+FSEncoding = KOI8-R
+PLEncoding = CP1251
+END
+
+ dodir /usr/src/redhat/
+ ln -s redhat ${D}/usr/src/RPM
+ dodir /usr/src/redhat/BUILD
+ keepdir /usr/src/redhat/BUILD
+ dodir /usr/src/redhat/RPMS
+ dodir /usr/src/redhat/RPMS/x86_64
+ keepdir /usr/src/redhat/RPMS/x86_64
+ dodir /usr/src/redhat/RPMS/athlon
+ keepdir /usr/src/redhat/RPMS/athlon
+ dodir /usr/src/redhat/RPMS/i386
+ keepdir /usr/src/redhat/RPMS/i386
+ dodir /usr/src/redhat/RPMS/i486
+ keepdir /usr/src/redhat/RPMS/i486
+ dodir /usr/src/redhat/RPMS/i586
+ keepdir /usr/src/redhat/RPMS/i586
+ dodir /usr/src/redhat/RPMS/i686
+ keepdir /usr/src/redhat/RPMS/i686
+ dodir /usr/src/redhat/RPMS/k6
+ keepdirdir /usr/src/redhat/RPMS/k6
+ dodir /usr/src/redhat/RPMS/noarch
+ keepdir /usr/src/redhat/RPMS/noarch
+ dodir /usr/src/redhat/SPECS
+ keepdir /usr/src/redhat/SPECS
+ dodir /usr/src/redhat/SRPMS
+ keepdir /usr/src/redhat/SRPMS
+}
diff --git a/app-misc/ds-scripts/files/alias.sh.darklin.sh b/app-misc/ds-scripts/files/alias.sh.darklin.sh
new file mode 100644
index 0000000..09007de
--- /dev/null
+++ b/app-misc/ds-scripts/files/alias.sh.darklin.sh
@@ -0,0 +1,71 @@
+########### For localised file names, without locale set
+alias ls="ls --color --show-control-chars --quoting-style=escape"
+alias la="ls -la --color --show-control-chars --quoting-style=escape"
+alias l="ls -l --color --show-control-chars --quoting-style=escape"
+########### Fast chdir
+## RPM
+alias rpm:="cd /usr/src/RPM"
+alias specs:="cd /usr/src/RPM/SPECS"
+alias srpms:="cd /usr/src/RPM/SRPMS"
+alias rpms:="cd /usr/src/RPM/RPMS/i686"
+## MNT
+alias mnt:="cd /mnt"
+alias a:="cd /mnt/a"
+alias c:="cd /mnt/c"
+alias d:="cd /mnt/d"
+alias e:="cd /mnt/e"
+alias f:="cd /mnt/f"
+alias g:="cd /mnt/g"
+alias mp3:="cd /mnt/mp3"
+alias cdrom:="cd /mnt/cdrom"
+alias cdn:="cd /mnt/cdrom"
+alias cdr:="cd /mnt/cdr"
+alias cd:="cd /mnt/cdrom"
+alias cd2:="cd /mnt/cdrom2"
+alias cd3:="cd /mnt/cdrom3"
+alias temp:="cd /mnt/temp"
+alias tmp:="cd /mnt/tmp"
+alias tmp1:="cd /mnt/tmp1"
+alias tmp2:="cd /mnt/tmp2"
+alias tmp3:="cd /mnt/tmp3"
+alias tmp4:="cd /mnt/tmp4"
+alias tmp5:="cd /mnt/tmp5"
+alias img:="cd /mnt/img"
+alias img1:="cd /mnt/img1"
+alias img2:="cd /mnt/img2"
+alias img3:="cd /mnt/img3"
+alias img4:="cd /mnt/img4"
+alias img5:="cd /mnt/img5"
+alias upload:="cd /mnt/upload"
+alias download:="cd /mnt/download"
+########### Mounts
+alias mnt="mount"
+## Floppy
+alias ifdd="mount /dev/fd0"
+alias efdd="umount /dev/fd0"
+alias izip="modprobe parport_pc ; modprobe ppa ; mount /dev/sdb4"
+alias ezip="umount /dev/sdb4"
+## CD
+alias icd="mount /dev/cdrom"
+alias ecd="umount /dev/cdrom ; eject /dev/cdrom"
+alias icd2="mount /dev/cdrom2"
+alias ecd2="umount /dev/cdrom2 ; eject /dev/cdrom2"
+alias icd3="mount /dev/cdrom3"
+alias ecd3="umount /dev/cdrom3 ; eject /dev/cdrom3"
+alias icdr="mount /dev/scd0"
+alias ecdr="umount /dev/scd0 ; eject /dev/scd0"
+## VFat
+alias vmount="mount -t vfat -o noexec,quiet,iocharset=koi8-r,codepage=866"
+alias ntmount="mount -t ntfs -o noexec,iocharset=koi8-r,umask=0222"
+########### Libraries
+alias iproxy="export LDP=$LD_PRELOAD ; export LD_PRELOAD=$LD_PRELOAD:/usr/lib/libtsocks.so"
+alias eproxy="export LD_PRELOAD=$LDP"
+# alias l5="export LDLP=$LD_LIBRARY_PATH ; export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib:$LD_LIBRARY_PATH"
+# alias l6="export LD_LIBRARY_PATH=$LDLP"
+########### Kernel
+#alias kernel-load-lpcd="insmod paride ; insmod on26 ; insmod pcd"
+alias module-compile="gcc -DMODULE -D__KERNEL__ -Wall -Wstrict-prototypes -O6 -c"
+########### Programms
+alias vslick="/opt/vslick/bin/vs"
+alias ica="/usr/lib/ICAClient/wfcmgr"
+alias ooffice=ooffice2
diff --git a/app-misc/ds-scripts/files/ds-scripts.tar.bz2 b/app-misc/ds-scripts/files/ds-scripts.tar.bz2
new file mode 100644
index 0000000..6a5d8e5
--- /dev/null
+++ b/app-misc/ds-scripts/files/ds-scripts.tar.bz2
Binary files differ
diff --git a/app-misc/ds-scripts/files/ds-video.tar.bz2 b/app-misc/ds-scripts/files/ds-video.tar.bz2
new file mode 100644
index 0000000..f44b675
--- /dev/null
+++ b/app-misc/ds-scripts/files/ds-video.tar.bz2
Binary files differ
diff --git a/app-misc/ds-scripts/files/m3u b/app-misc/ds-scripts/files/m3u
new file mode 100755
index 0000000..e5496a5
--- /dev/null
+++ b/app-misc/ds-scripts/files/m3u
@@ -0,0 +1,48 @@
+#! /bin/bash
+
+if [ -z "$1" ]
+then
+ echo "Usage: m3u [ -f encoding -p encoding ] <playlist.m3u> [random]"
+ exit
+fi
+
+if [ "$2" = "random" ]
+then
+ prm="-Z -z"
+else
+ prm=""
+fi
+
+FSE=`cat /etc/m3u.conf | grep FSEncoding | sed s/'^[ \t]*FSEncoding[ \t]*=[ \t]*'//g | sed s/'[ \t]*'$//g`
+PLE=`cat /etc/m3u.conf | grep PLEncoding | sed s/'^[ \t]*PLEncoding[ \t]*=[ \t]*'//g | sed s/'[ \t]*'$//g`
+
+pl=1
+while getopts 'f:p:' OPT; do
+ pl=`expr $pl + 2`
+ case $OPT in
+ f)
+ FSE=$OPTARG
+ ;;
+ p)
+ PLE=$OPTARG
+ ;;
+ esac
+done
+
+
+pl=`eval echo "\\$${pl}"`
+
+if [ -z "$FSE" -o -z "$PLE" ]; then
+ cmd="cat \"$pl\""
+else
+ cmd="cat \"$pl\" | iconv -f $PLE -t $FSE"
+fi
+
+s=$(eval $cmd | grep -E "\.[mMoOwW][pPgGaA][23gGvV]" | sed s/ //g | sed s/'\\'/'\/'/g | sed s/^/\"/ | sed s/$/\"/ | perl -pi -e 's|\n| |gs' )
+
+if [ -n "$prm" ]
+then
+ eval mpg123 $prm "$s"
+else
+ eval zinf "$s"
+fi
diff --git a/app-misc/everpad/Manifest b/app-misc/everpad/Manifest
new file mode 100644
index 0000000..f29f55d
--- /dev/null
+++ b/app-misc/everpad/Manifest
@@ -0,0 +1,3 @@
+AUX everpad-9999-content.py.patch 504 SHA256 c94a02860df1cb3f432ffec4006058dd9452977cc7b858624c0478105a222154 SHA512 034170363bedfa978c8ace55bf3bf9861276dd297a1fede15f3ceb1e06d2c098cce003c934f3cc5772f6c9c02575edbd73d1c8a2f41f2eba31c6f17ed27e5ccc WHIRLPOOL 1c982869cd525aefb5d48ae51e02a74d94ba5d5ea2166425f8435160e417b773f38900444093fbbdb1420ed444eda58a3328d954147ae86005fdcb23209bd41e
+AUX everpad-9999-everpad.desktop.patch 2367 SHA256 1b4fba95f03fec1677e483e07358847451e2cb7828e448890fc1ecaffcfa2aa6 SHA512 322ce0a55d92c4149c79e1c7cb5c6529ab369eb584be36bbb523e5370b8fd319388dc10e33f48c90536577b3816555d7dc4e3c130607ca908a0ff1666fba8016 WHIRLPOOL b01e2053676747ae1f92246107147f9655d0ecf85f59e64cad75976a4e0874600a050fde9629818e58ad1df6ccfdc45533ca1683d6e71243001b2a4395e01a11
+EBUILD everpad-9999.ebuild 1194 SHA256 d3eea89003d725f5d8fcc5e3632d75ac98d5e51e578cca9331c547cce0dbd3e4 SHA512 a3af7e5787d52de08148221375defb31e63379de0692465f4195219a6a35ac97fd3bc8f919d0d0e2df1b720cc6cd2c8d38b1e6f4db5868fbae1c9b55c67e73a5 WHIRLPOOL 4cf60e7249442814749a750b3b20b6d40ac32a65f131f80dd1d236b45b21afe27da1f8b8af1f503d9e266fe56a8cc6764012aac316fe69e55ae7331a6f2fd97e
diff --git a/app-misc/everpad/everpad-9999.ebuild b/app-misc/everpad/everpad-9999.ebuild
new file mode 100644
index 0000000..cbf1ca6
--- /dev/null
+++ b/app-misc/everpad/everpad-9999.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+
+PYTHON_COMPAT=(python{2_5,2_6,2_7})
+
+inherit distutils git-2 eutils
+
+EGIT_REPO_URI="git://github.com/nvbn/everpad.git"
+EGIT_MASTER="develop"
+
+DESCRIPTION="Evernote client well integrated with linux desktop"
+HOMEPAGE="https://github.com/nvbn/everpad"
+SRC_URI=""
+
+LICENSE="X11"
+SLOT="0"
+IUSE="test"
+
+KEYWORDS="amd64 x86"
+
+DEPEND=""
+RDEPEND="${DEPEND}
+ dev-python/beautifulsoup
+ dev-python/html2text
+ dev-python/httplib2
+ dev-python/keyring
+ dev-python/py-oauth2
+ dev-python/regex
+ dev-python/sqlalchemy
+ dev-python/dbus-python
+ dev-python/setuptools
+ dev-python/pyside[webkit]
+ sys-apps/file[python]
+ "
+
+python_test() {
+ esetup.py test
+}
+
+src_prepare() {
+ distutils_src_prepare
+ epatch "${FILESDIR}/${P}-content.py.patch"
+ epatch "${FILESDIR}/${P}-everpad.desktop.patch"
+}
+
+python_install() {
+ distutils_src_install
+ delete_tests() {
+ rm -fr "${ED}$(python_get_sitedir)/everpad/tests"
+ }
+ python_execute_function -q delete_tests
+}
diff --git a/app-misc/everpad/files/everpad-9999-content.py.patch b/app-misc/everpad/files/everpad-9999-content.py.patch
new file mode 100644
index 0000000..6f58faa
--- /dev/null
+++ b/app-misc/everpad/files/everpad-9999-content.py.patch
@@ -0,0 +1,13 @@
+diff --git a/everpad/pad/editor/content.py b/everpad/pad/editor/content.py
+index fa368de..bfb1acb 100644
+--- a/everpad/pad/editor/content.py
++++ b/everpad/pad/editor/content.py
+@@ -145,7 +145,7 @@ class ContentEdit(QObject):
+ os.path.dirname(__file__), 'editor.html',
+ )
+ if not os.path.exists(_editor_path):
+- _editor_path = resource_filename('share/everpad/editor.html')
++ _editor_path = resource_filename('everpad/editor.html')
+
+ _html = open(_editor_path).read()
+
diff --git a/app-misc/everpad/files/everpad-9999-everpad.desktop.patch b/app-misc/everpad/files/everpad-9999-everpad.desktop.patch
new file mode 100644
index 0000000..3b0ea04
--- /dev/null
+++ b/app-misc/everpad/files/everpad-9999-everpad.desktop.patch
@@ -0,0 +1,41 @@
+diff --git a/data/everpad.desktop b/data/everpad.desktop
+index d773e41..d6fbef6 100644
+--- a/data/everpad.desktop
++++ b/data/everpad.desktop
+@@ -1,30 +1,30 @@
+ [Desktop Entry]
+-Version=0.1
++Version=1.0
+ Name=Everpad
+ GenericName=Everpad
+ Comment=Evernote client
+ Comment[ru]=Клиент Ð´Ð»Ñ Evernote
+ Exec=everpad %U
+ Terminal=false
+-Icon=everpad.png
++Icon=everpad
+ Type=Application
+ Categories=Network;
+ X-Ayatana-Desktop-Shortcuts=NewNote;Settings
+-MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;application/pdf;application/x-bzpdf;application/x-gzpdf;application/x-xzpdf;application/postscript;application/x-bzpostscript;application/x-gzpostscript;image/x-eps;image/x-bzeps;image/x-gzeps;application/x-dvi;application/x-bzdvi;application/x-gzdvi;image/vnd.djvu;image/tiff;application/x-cbr;application/x-cbz;application/x-cb7;application/x-cbt;audio/wav;audio/mpeg;
++MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;application/pdf;application/x-bzpdf;application/x-gzpdf;application/x-xzpdf;application/postscript;application/x-bzpostscript;application/x-gzpostscript;image/x-eps;image/x-bzeps;image/x-gzeps;application/x-dvi;application/x-bzdvi;application/x-gzdvi;image/vnd.djvu;application/x-cbr;application/x-cbz;application/x-cb7;application/x-cbt;audio/wav;audio/mpeg;
+
+-[Settings Shortcut Group]
++[X-ShowAllNotes Shortcut Group]
+ Name=Show all notes
+ Name[ru]=Ð’Ñе заметки
+ Exec=everpad --all-notes
+ TargetEnvironment=Unity
+
+-[NewNote Shortcut Group]
++[X-NewNote Shortcut Group]
+ Name=Create Note
+ Name[ru]=Создать заметку
+ Exec=everpad --create
+ TargetEnvironment=Unity
+
+-[Settings Shortcut Group]
++[X-Settings Shortcut Group]
+ Name=Settings and Management
+ Name[ru]=ÐаÑтройки и Управление
+ Exec=everpad --settings
diff --git a/app-misc/geeknote/Manifest b/app-misc/geeknote/Manifest
new file mode 100644
index 0000000..427e4e9
--- /dev/null
+++ b/app-misc/geeknote/Manifest
@@ -0,0 +1,2 @@
+AUX geeknote 286 SHA256 0ea3b74543839713dfab183f47d0aeaa49e70d07b07ece9209bdac674b8cc864 SHA512 d149154e2c1404e8561696cbf3b61df8539f6626d6af52f8a57b11d983426c7ba48a93bca2d9cbe110efacceefb1dfdf123279e03879835f737d14f356b7c847 WHIRLPOOL 4ccbbde6f2c3b341526dbb787e2d02c9fca2d6fc8b7c030ea6994add2b2e6324f2504d9a14fc5691092bd2e758aeb549b45c05bd7edb5aa6551fba9eb967b9aa
+EBUILD geeknote-9999.ebuild 756 SHA256 7d04dba012e1d6b15131f35641ab242f1d6df3a9a6d53a626764d7f3affe41cc SHA512 51293f276a7f0203ed85bb45aa706c60c4c92eaafb7ee5a240ac6efedff856f0ad088a758c13e623c67847f2e07825e725232afce0bc69a62905d0f1d56297fb WHIRLPOOL 6ed1af3d91c59bfee9d1db5d9cccdc5b1cafad076c75d90703df1b0fb4167d9971fc863a74aa71d0f2ac4b032630eabef6995fe325b90d0e883bb276ff6c3904
diff --git a/app-misc/geeknote/files/geeknote b/app-misc/geeknote/files/geeknote
new file mode 100644
index 0000000..1f919b2
--- /dev/null
+++ b/app-misc/geeknote/files/geeknote
@@ -0,0 +1,15 @@
+_geeknote_command()
+{
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+
+ SAVE_IFS=$IFS
+ IFS=" "
+ args="${COMP_WORDS[*]:1}"
+ IFS=$SAVE_IFS
+
+ COMPREPLY=( $(compgen -W "`geeknote autocomplete ${args}`" -- ${cur}) )
+
+ return 0
+}
+complete -F _geeknote_command geeknote
diff --git a/app-misc/geeknote/geeknote-9999.ebuild b/app-misc/geeknote/geeknote-9999.ebuild
new file mode 100644
index 0000000..a635486
--- /dev/null
+++ b/app-misc/geeknote/geeknote-9999.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit bash-completion-r1 eutils distutils-r1 git-2
+
+DESCRIPTION="Console client for Evernote"
+HOMEPAGE="http://geeknote.me"
+
+EGIT_REPO_URI="git://github.com/VitaliyRodnenko/geeknote.git"
+EGIT_BRANCH="master"
+
+LICENSE=""
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="+bash-completion"
+
+RDEPEND="
+ bash-completion? ( app-shells/bash-completion )
+ dev-python/html2text
+ dev-python/sqlalchemy
+ dev-python/markdown2
+ dev-python/beautifulsoup:4
+ dev-python/evernote-sdk-python
+"
+
+DEPEND="
+ ${RDEPEND}
+"
+
+src_install() {
+
+ if use bash-completion; then
+ dobashcomp ${FILESDIR}/geeknote
+ fi
+
+ distutils-r1_src_install
+}
diff --git a/app-misc/lcdproc/Manifest b/app-misc/lcdproc/Manifest
new file mode 100644
index 0000000..d831f5b
--- /dev/null
+++ b/app-misc/lcdproc/Manifest
@@ -0,0 +1,6 @@
+AUX LCDd 544 RMD160 554201b2ca62fb5496f06fc3bf40afcb36af9974 SHA1 594fd6be41199fb9a536ec8dd9b29f46de6f7f25 SHA256 d8009b3984169a819e95a73adc19d5b63c990d63a965a396e10b68703614a652
+AUX lcdproc 512 RMD160 45c496b9f1f6e683c096d4a1ec09ffb6e9c9fdda SHA1 da36be607453db20eb7f29f95ce4b54e5f9f91e7 SHA256 c8fb7ec117015b7a32118bd8d653ada5950c0f6b214a18a098eb291c606e9cca
+AUX lcdproc-ds-adas.patch 3515 RMD160 86afe6c865abeec101900467339eb919b1e6799d SHA1 6036daea1f41f150177fa73fa672edc76dec322d SHA256 1a045c7bf6991df2bc3b1e29c1d5ee36962454bacee522efc208c2f8066cfdf7
+AUX lcdproc.confd 331 RMD160 2343561665d39d30224fdedd1e2fad185c8d14fc SHA1 37cf7b014eb174ebb16f72be5f02d7e35d675fee SHA256 31583e8761d975a5c205dc5d0cb495907cebc5276e16b25ea56a8c989ed5232d
+DIST lcdproc-0.4.5.tar.bz2 291703 RMD160 07067bfb681a098494a105a290711d973ea0171a SHA1 9680b83d18da8569e8f58d6d0b7b0158f543c94d SHA256 8707767a1ddf85b7894f4f62d9af53121fefff4ab8182eb9491b49a6d56b8127
+EBUILD lcdproc-0.4.5-r1.ebuild 2697 RMD160 fa3ad29d71602cb8a4f47cc4217aa7c757a5df52 SHA1 22e719f782240745304db4b236f4dcc98c1d179e SHA256 9ba96061e0ae2e1e454a888fd6be1b21daace86b086a4fd4c8903fd7961900d6
diff --git a/app-misc/lcdproc/files/LCDd b/app-misc/lcdproc/files/LCDd
new file mode 100644
index 0000000..1d9ddba
--- /dev/null
+++ b/app-misc/lcdproc/files/LCDd
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-misc/lcdproc/files/LCDd,v 1.7 2004/10/05 22:21:14 vapier Exp $
+
+depend() {
+ use net
+}
+
+start() {
+ ebegin "Starting LCDd"
+ start-stop-daemon --start --quiet -m --pidfile /var/run/LCDd.pid \
+ --background --exec /usr/sbin/LCDd -- -s -f -c /etc/LCDd.conf
+ sleep 1
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping LCDd"
+ start-stop-daemon --stop --quiet --pidfile /var/run/LCDd.pid
+ eend $?
+}
diff --git a/app-misc/lcdproc/files/lcdproc b/app-misc/lcdproc/files/lcdproc
new file mode 100644
index 0000000..95e7ba7
--- /dev/null
+++ b/app-misc/lcdproc/files/lcdproc
@@ -0,0 +1,21 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-misc/lcdproc/files/lcdproc,v 1.10 2004/07/14 21:32:56 agriffis Exp $
+
+depend(){
+ need LCDd
+}
+start() {
+ source /etc/lcdproc.conf
+ ebegin "Starting lcdproc"
+ start-stop-daemon --start --background \
+ --exec /usr/bin/lcdproc -- ${SCREENS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping lcdproc"
+ start-stop-daemon --stop --exec /usr/bin/lcdproc
+ eend $?
+}
diff --git a/app-misc/lcdproc/files/lcdproc-ds-adas.patch b/app-misc/lcdproc/files/lcdproc-ds-adas.patch
new file mode 100644
index 0000000..4fb3b87
--- /dev/null
+++ b/app-misc/lcdproc/files/lcdproc-ds-adas.patch
@@ -0,0 +1,91 @@
+diff -dPNur lcdproc-0.4.5/server/drivers/MtxOrb.c lcdproc-0.4.5-new/server/drivers/MtxOrb.c
+--- lcdproc-0.4.5/server/drivers/MtxOrb.c 2003-02-03 20:53:58.000000000 +0400
++++ lcdproc-0.4.5-new/server/drivers/MtxOrb.c 2006-05-28 04:29:14.000000000 +0500
+@@ -114,6 +114,7 @@
+
+ static char pause_key = MTXORB_DEF_PAUSE_KEY, back_key = MTXORB_DEF_BACK_KEY;
+ static char forward_key = MTXORB_DEF_FORWARD_KEY, main_menu_key = MTXORB_DEF_MAIN_MENU_KEY;
++static char enter_key = MTXORB_DEF_ENTER_KEY, escape_key = MTXORB_DEF_ESCAPE_KEY;
+ static int keypad_test_mode = 0;
+
+ static int def[9] = { -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+@@ -326,6 +327,14 @@
+ /* main_menu_key */
+ main_menu_key = MtxOrb_parse_keypad_setting (DriverName, "MainMenuKey", MTXORB_DEF_MAIN_MENU_KEY);
+ report (RPT_DEBUG, "MtxOrb: Using \"%c\" as main_menu_key", main_menu_key);
++
++ /* enter_key */
++ enter_key = MtxOrb_parse_keypad_setting (DriverName, "EnterKey", MTXORB_DEF_ENTER_KEY);
++ report (RPT_DEBUG, "MtxOrb: Using \"%c\" as enter_key", enter_key);
++
++ /* escape_key */
++ escape_key = MtxOrb_parse_keypad_setting (DriverName, "EscapeKey", MTXORB_DEF_ESCAPE_KEY);
++ report (RPT_DEBUG, "MtxOrb: Using \"%c\" as escape_key", escape_key);
+ }
+
+ /* End of config file parsing*/
+@@ -1162,6 +1171,10 @@
+ in = INPUT_FORWARD_KEY;
+ } else if (in==main_menu_key) {
+ in = INPUT_MAIN_MENU_KEY;
++ } else if (in==enter_key) {
++ in = INPUT_ENTER_KEY;
++ } else if (in==escape_key) {
++ in = INPUT_ESCAPE_KEY;
+ }
+ /*TODO: add more translations here (anything flexible that can be done from LCDd.conf ...)*/
+ else {
+diff -dPNur lcdproc-0.4.5/server/drivers/MtxOrb.h lcdproc-0.4.5-new/server/drivers/MtxOrb.h
+--- lcdproc-0.4.5/server/drivers/MtxOrb.h 2002-02-21 01:08:49.000000000 +0400
++++ lcdproc-0.4.5-new/server/drivers/MtxOrb.h 2006-05-28 04:29:52.000000000 +0500
+@@ -62,7 +62,8 @@
+ #define MTXORB_DEF_BACK_KEY MTXORB_KEY_LEFT
+ #define MTXORB_DEF_FORWARD_KEY MTXORB_KEY_RIGHT
+ #define MTXORB_DEF_MAIN_MENU_KEY MTXORB_KEY_DOWN
+-
++#define MTXORB_DEF_ENTER_KEY 'L'
++#define MTXORB_DEF_ESCAPE_KEY 'B'
+
+ #endif
+
+diff -dPNur lcdproc-0.4.5/server/input.h lcdproc-0.4.5-new/server/input.h
+--- lcdproc-0.4.5/server/input.h 2002-04-08 23:34:13.000000000 +0500
++++ lcdproc-0.4.5-new/server/input.h 2006-05-28 04:21:41.000000000 +0500
+@@ -21,10 +21,12 @@
+ * You should not change these values, as some drivers still return
+ * A, B, C, D directly without using these defines!
+ */
+-#define INPUT_PAUSE_KEY 'A'
+-#define INPUT_BACK_KEY 'B'
+-#define INPUT_FORWARD_KEY 'C'
+-#define INPUT_MAIN_MENU_KEY 'D'
++#define INPUT_ESCAPE_KEY 'U'
++#define INPUT_ENTER_KEY 'V'
++#define INPUT_PAUSE_KEY 'W'
++#define INPUT_BACK_KEY 'X'
++#define INPUT_FORWARD_KEY 'Y'
++#define INPUT_MAIN_MENU_KEY 'Z'
+
+ #define DEFAULT_FREEPAUSEKEY 0
+ #define DEFAULT_FREEBACKKEY 0
+diff -dPNur lcdproc-0.4.5/server/menu.c lcdproc-0.4.5-new/server/menu.c
+--- lcdproc-0.4.5/server/menu.c 2002-04-11 00:31:23.000000000 +0500
++++ lcdproc-0.4.5-new/server/menu.c 2006-05-28 04:47:49.000000000 +0500
+@@ -142,7 +142,7 @@
+
+ /* Handle the key according to the keybindings...*/
+ switch (key) {
+- case INPUT_MAIN_MENU_KEY:
++ case INPUT_ESCAPE_KEY:
+ done = 1;
+ break;
+ case INPUT_BACK_KEY:
+@@ -159,7 +159,7 @@
+ if (menu[info.selected + 1].text)
+ info.selected++;
+ break;
+- case INPUT_PAUSE_KEY:
++ case INPUT_ENTER_KEY:
+ switch (menu[info.selected].type) {
+ case TYPE_MENU:
+ status = do_menu (menu[info.selected].data);
diff --git a/app-misc/lcdproc/files/lcdproc.confd b/app-misc/lcdproc/files/lcdproc.confd
new file mode 100644
index 0000000..1dae1f5
--- /dev/null
+++ b/app-misc/lcdproc/files/lcdproc.confd
@@ -0,0 +1,16 @@
+# which port is the LCD connected
+port="ttyS0"
+
+# what driver should be used
+driver="MtxOrb"
+
+# "C" (CPU usage)
+# "G" (CPU Graph like Xload)
+# "M" (Memory Usage)
+# "X" (X-Load)
+# "T" (Date, time, Uptime, OS version)
+# "D" (Disk Stats)
+# "B" (Battery Stats)
+# "A" (About)
+# for more clients see "LCDproc Homepage"
+clients="C M T X"
diff --git a/app-misc/lcdproc/lcdproc-0.4.5-r1.ebuild b/app-misc/lcdproc/lcdproc-0.4.5-r1.ebuild
new file mode 100644
index 0000000..5befde7
--- /dev/null
+++ b/app-misc/lcdproc/lcdproc-0.4.5-r1.ebuild
@@ -0,0 +1,102 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-misc/lcdproc/lcdproc-0.4.5.ebuild,v 1.9 2005/04/24 11:23:24 hansmi Exp $
+
+inherit eutils
+
+DESCRIPTION="Client/Server suite to drive all kinds of LCD (-like) devices"
+HOMEPAGE="http://lcdproc.org/"
+SRC_URI="mirror://sourceforge/lcdproc/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64 ~sparc ppc"
+IUSE="doc ncurses samba svga"
+
+DEPEND=">=sys-apps/baselayout-1.6.4
+ >=sys-apps/sed-4
+ doc? ( >=app-text/docbook-sgml-utils-0.6.11-r2 )
+ ncurses? ( >=sys-libs/ncurses-5.3 )
+ svga? ( >=media-libs/svgalib-1.4.3 )"
+
+src_unpack() {
+ unpack ${A} ; cd ${S}
+#SDS
+ epatch ${FILESDIR}/lcdproc-ds-adas.patch || die
+#EDS
+
+ sed -i "889s:-O3:${CFLAGS}:" configure
+}
+
+src_compile() {
+
+ # By default, all drivers that are supported by the given plattform/hardware
+ # are compiled (of course respecting the existing USE flags). If the
+ # LCDPROC_DRIVERS environment variable is set to a comma separated list, only
+ # the specified drivers will be compiled.
+ # Example:
+ #
+ # env LCDPROC_DRIVERS="curses,CFontz" emerge lcdproc
+ #
+ # NOTE: The ebuild still respects your USE variable and will not install any
+ # additional packages unless the corresponding USE flag is set!
+ # You might have to alter it if e.g. ncurses is normally not part of your
+ # USE variable.
+ # Example:
+ #
+ # env USE="$USE ncurses" LCDPROC_DRIVERS="curses,CFontz" emerge lcdproc
+
+ local myconf
+
+ myconf="--enable-drivers=mtxorb,cfontz,cwlnx,text,lb216,"
+ myconf="${myconf}hd44780,joy,irman,lircin,bayrad,glk,stv5730,"
+ myconf="${myconf}stv5730,sed1330,sed1520,lcdm001,"
+ myconf="${myconf}t6963,wirz-sli,sgx120"
+
+ use ncurses && myconf="${myconf},curses"
+ use svga && myconf="${myconf},svgalib"
+
+ [ x"${LCDPROC_DRIVERS}" = x ] || \
+ myconf="--enable-drivers=${LCDPROC_DRIVERS}"
+
+ use samba && myconf="${myconf} --enable-stat-smbfs"
+ myconf="${myconf} --enable-stat-nfs"
+
+ econf ${myconf} || die
+ emake || die
+
+ if use doc; then
+ cd ${S}/docs/lcdproc-user
+ docbook2html lcdproc-user.docbook
+ fi
+}
+
+src_install() {
+ dosbin server/LCDd
+ dobin clients/lcdproc/lcdproc
+
+ doman docs/lcdproc.1 docs/LCDd.8
+
+ dodoc README ChangeLog INSTALL
+
+ if use doc; then
+ insinto /usr/share/doc/${PF}/lcdproc-user
+ doins docs/lcdproc-user/*.html
+ fi
+
+ docinto olddocs
+ dodoc docs/README.dg* docs/*.txt
+
+ insinto /usr/share/doc/${PF}/clients/examples
+ doins clients/examples/*.pl
+ insinto /usr/share/doc/${PF}/clients/headlines
+ doins clients/headlines/lcdheadlines
+
+ insinto /etc
+ doins LCDd.conf
+ doins scripts/lcdproc.conf
+
+ exeinto /etc/init.d
+ doexe ${FILESDIR}/LCDd
+ doexe ${FILESDIR}/lcdproc
+}
diff --git a/app-misc/mumpot/Manifest b/app-misc/mumpot/Manifest
new file mode 100644
index 0000000..a4a8d64
--- /dev/null
+++ b/app-misc/mumpot/Manifest
@@ -0,0 +1,2 @@
+DIST mumpot-0.5.tar.gz 549850 RMD160 4661dc1588c5423bbab9b5a3cd4682da4fac4e74 SHA1 2c9d4c13c4c9515bcfa1441d887908941bf09b3e SHA256 a7068ef399caa009bd7ddbc22a2b55408a6d65b431a1a0bde414b61a71bfda3f
+EBUILD mumpot-0.5.ebuild 763 RMD160 60de58c01dc99b8a510d8a34b265126794a9bb0e SHA1 a47e6c518de753b99d1227bb8a3c674150b9ccc3 SHA256 4fe2522e66b30e0b2360771d04eca92aef4c34c2b1bb973bfb61e12517ae7094
diff --git a/app-misc/mumpot/mumpot-0.5.ebuild b/app-misc/mumpot/mumpot-0.5.ebuild
new file mode 100644
index 0000000..d733a7b
--- /dev/null
+++ b/app-misc/mumpot/mumpot-0.5.ebuild
@@ -0,0 +1,36 @@
+inherit eutils
+
+DESCRIPTION="OSM map viewing, routing and simple editing program"
+HOMEPAGE="http://www.mumpot.org/"
+SRC_URI="http://www.mumpot.org/download/${P}.tar.gz"
+LICENSE="GPL-3"
+IUSE="nls curl"
+SLOT="0"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2
+ >=x11-libs/gtk+-2
+ media-libs/libpng
+ media-libs/jpeg
+ app-arch/bzip2
+ net-wireless/bluez-libs
+ curl? ( net-misc/curl )
+ nls? ( sys-devel/gettext )"
+
+
+src_compile() {
+# libcurl is needed for uploading data to OSM
+ if use curl; then
+ OSM_UPLOAD=
+ else
+ OSM_UPLOAD=--disable-osmupload
+ fi
+ econf $(use_enable nls) $OSM_UPLOAD || die "econf failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+ dodoc README || die "dodoc failed"
+}
+
+
diff --git a/app-misc/navit/Manifest b/app-misc/navit/Manifest
new file mode 100644
index 0000000..b1bd78a
--- /dev/null
+++ b/app-misc/navit/Manifest
@@ -0,0 +1,4 @@
+AUX navit-ds-externc.patch 982 RMD160 cbabe8d5dc7c6046617a382a95ce30849c3c6b64 SHA1 064a530cf6be5737bb333847ee164e124325f104 SHA256 189c733b521d3e449001ad32495749898c8a40f2c073fd616d02196a30aed3b7
+DIST navit-0.0.4.tar.gz 1161693 RMD160 f628ec094d7b7e52cfb5045faf80c412bab344b2 SHA1 73bbe1771b5b5f1534326330af58f05807b305b3 SHA256 c069e983ea8bb9b6706d35126350d4d14619b9ce0ac888adbcdda3ff13362ab4
+EBUILD navit-0.0.4.ebuild 1449 RMD160 4002fd3a23c7d12dab27eeb2c375551c22ee2ec4 SHA1 8cb6b478822e8b7a1267fc4ec204959e68352419 SHA256 dc1c989d1226c801b4a472cebe2fae7bfc3fc2a8c900d1a218ef8f47cc3b3a3d
+EBUILD navit-9999-r1.ebuild 1368 RMD160 b365abbb440a678350718eb221735eab1f0e4803 SHA1 794099ae5a26bf87ca8d06fc77cbd71e03f21dde SHA256 bef09fc104452a3402aa821c903888cd45137691ad795b423c681f6b9f11f7ff
diff --git a/app-misc/navit/files/navit-ds-externc.patch b/app-misc/navit/files/navit-ds-externc.patch
new file mode 100644
index 0000000..ad49b6a
--- /dev/null
+++ b/app-misc/navit/files/navit-ds-externc.patch
@@ -0,0 +1,34 @@
+diff -dPNur navit-9999/navit/gui/cegui/gui_sdl.h navit-9999-ds/navit/gui/cegui/gui_sdl.h
+--- navit-9999/navit/gui/cegui/gui_sdl.h 2008-11-16 04:33:38.000000000 +0100
++++ navit-9999-ds/navit/gui/cegui/gui_sdl.h 2008-11-16 04:04:55.000000000 +0100
+@@ -29,8 +29,10 @@
+ extern struct navit *sdl_gui_navit;
+
+
++extern "C" {
+ bool BookmarkGo(const char * name);
+ bool FormerDestGo(const char * name);
++}
+
+ struct gui_priv {
+ struct navit *nav;
+diff -dPNur navit-9999/navit/gui/cegui/gui_sdl_window.cpp navit-9999-ds/navit/gui/cegui/gui_sdl_window.cpp
+--- navit-9999/navit/gui/cegui/gui_sdl_window.cpp 2008-11-16 04:33:38.000000000 +0100
++++ navit-9999-ds/navit/gui/cegui/gui_sdl_window.cpp 2008-11-16 04:03:25.000000000 +0100
+@@ -24,6 +24,7 @@
+ // FIXME temporary fix for enum
+ #include "projection.h"
+
++extern "C" {
+ #include "item.h"
+ #include "navit.h"
+ #include "vehicle.h"
+@@ -43,7 +44,7 @@
+ #include "track.h"
+ #include "menu.h"
+ #include "map.h"
+-
++}
+
+ #include "CEGUI.h"
+
diff --git a/app-misc/navit/navit-0.0.4.ebuild b/app-misc/navit/navit-0.0.4.ebuild
new file mode 100644
index 0000000..faddf40
--- /dev/null
+++ b/app-misc/navit/navit-0.0.4.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="1"
+#inherit subversion
+
+DESCRIPTION="An open-source car navigation system with a routing engine."
+HOMEPAGE="http://www.navit-project.org"
+SRC_URI="mirror://sourceforge/roadnav/${P}.tar.gz"
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="dbus garmin gps gtk nls python sdl speechd"
+
+COMMON_DEPEND="dev-libs/glib:2
+ garmin? ( dev-libs/libgarmin )
+ gtk? ( x11-libs/gtk+:2
+ x11-misc/xkbd )
+ sdl? ( media-libs/libsdl
+ media-libs/sdl-image
+ >=dev-games/cegui-0.5
+ media-libs/quesoglc )
+ python? ( dev-lang/python )
+ dbus? ( sys-apps/dbus )
+ gps? ( sci-geosciences/gpsd )
+ speechd? ( app-accessibility/speechd )"
+DEPEND="${COMMON_DEPEND}
+ dev-util/pkgconfig"
+RDEPEND="${COMMON_DEPEND}"
+
+#ESVN_REPO_URI="https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit"
+#ESVN_BOOTSTRAP="./autogen.sh"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+# epatch "${FILESDIR}"/navit-ds-externc.patch || die
+}
+
+src_compile() {
+ econf $(use_enable garmin) \
+ $(use_enable gps libgps) \
+ $(use_enable gtk gui-gtk) \
+ $(use_enable sdl gui-sdl) \
+ $(use_enable nls) \
+ $(use_enable dbus binding-dbus) \
+ $(use_enable python binding-python) \
+ $(use_enable speechd speech-speechd) \
+ --disable-graphics-qt-painter \
+ --disable-samplemap
+
+ emake || die "Make failed"
+}
+
+src_install () {
+ emake DESTDIR="${D}" install || die "Install failed"
+}
diff --git a/app-misc/navit/navit-9999-r1.ebuild b/app-misc/navit/navit-9999-r1.ebuild
new file mode 100644
index 0000000..9c448d7
--- /dev/null
+++ b/app-misc/navit/navit-9999-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="1"
+inherit subversion
+
+DESCRIPTION="An open-source car navigation system with a routing engine."
+HOMEPAGE="http://www.navit-project.org"
+SRC_URI=""
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="dbus garmin gps gtk nls python sdl speechd"
+
+COMMON_DEPEND="dev-libs/glib:2
+ garmin? ( dev-libs/libgarmin )
+ gtk? ( x11-libs/gtk+:2
+ x11-misc/xkbd )
+ sdl? ( media-libs/libsdl
+ media-libs/sdl-image
+ >=dev-games/cegui-0.5
+ media-libs/quesoglc )
+ python? ( dev-lang/python )
+ dbus? ( sys-apps/dbus )
+ gps? ( sci-geosciences/gpsd )
+ speechd? ( app-accessibility/speechd )"
+DEPEND="${COMMON_DEPEND}
+ dev-util/pkgconfig"
+RDEPEND="${COMMON_DEPEND}"
+
+ESVN_REPO_URI="https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit"
+ESVN_BOOTSTRAP="./autogen.sh"
+
+src_compile() {
+# epatch "${FILESDIR}"/navit-ds-externc.patch || die
+ econf $(use_enable garmin) \
+ $(use_enable gps libgps) \
+ $(use_enable gtk gui-gtk) \
+ $(use_enable sdl gui-sdl) \
+ $(use_enable nls) \
+ $(use_enable dbus binding-dbus) \
+ $(use_enable python binding-python) \
+ $(use_enable speechd speech-speechd) \
+ --disable-graphics-qt-painter \
+ --disable-samplemap
+
+ emake || die "Make failed"
+}
+
+src_install () {
+ emake DESTDIR="${D}" install || die "Install failed"
+}
diff --git a/app-misc/nixnote2/Manifest b/app-misc/nixnote2/Manifest
new file mode 100644
index 0000000..b0e445b
--- /dev/null
+++ b/app-misc/nixnote2/Manifest
@@ -0,0 +1,6 @@
+DIST nixnote2-2.0-beta7.tar.gz 2027673 SHA256 71e21550b0c86b92a5d58e10494c640721825d5e68c24dbe834214f18952f271 SHA512 607977129e5cecf666f873ffa9ec69c7acf6600af7284600af3b050463ee52425dba52e5cd660750b5d681268476664a23f00cdcf09714c495b94b902e35bf92 WHIRLPOOL a25b2fbf708946adb10873b5036ff6e8e28874792d913ab6f8369177fc3835360103f3f31e9fecf8ac09f9f8b739779ee14858a5cf9bb093e132cac12c160491
+DIST nixnote2-2.0-beta8.tar.gz 2041489 SHA256 0e8cbdfa1b33bf49dd3c6f36de454b492ab8eacf3f792b2a49c02bb09f9053d2 SHA512 3fa99648c04e1b682d90cf306a1ed4d2ab50f3f067d7106ad30725cc0024a8f80f0da2e80eccb0074fce2473234e803dc1014262d53bec5674b771b017369339 WHIRLPOOL b12c3353296429055641a70b04bca826b2443c53696f77cbc22441b0795dce73948ae9e92717e605680ba8ebc8a2e9048fc023445b2fbeea8bf248dcef2f0f49
+DIST nixnote2-2.0.tar.gz 2668933 SHA256 15016caf90bfe09d44fcac4fa4039756eb7efbaf8469505373577f846ee67dcc SHA512 40b7aa7733bf37a0801a4c22823fd4da6ad7b8674e6da864f2ee5031a22cb905e09a098d2b07526232706b6c83772bada1c8dc82761e6ee493778c2e8ee2411b WHIRLPOOL cfb41e09e72c5979052ee165c3808b0ddd7f3da0a78c0e45ae0e645de82999c8073a68a5e07b69a87aed377cf789120839aac986724650884de74b41919f3362
+EBUILD nixnote2-2.0.ebuild 2180 SHA256 ddb122af4b2fad2aa671c2d52007b8ad3805e3a47ffd44a19c2fe59c6ef575ea SHA512 6fc45b41f79dcdcd8ad378942ae4263d7ca072ddd94be7bf5a0bcee09b1b0c9883c37ec9f4e4367edfac911803317d125d7fd75e6d2f688db8a4660404772094 WHIRLPOOL a0cb22b396d2dddcb7f7ca5b5929a105b8d20e92d82d3c730fb02d0d92192a2259496c55a0a84f2d3363a4b32431b01b19641ed8e1c906d6acbd24461b503e09
+EBUILD nixnote2-2.0_beta7.ebuild 2028 SHA256 20cd273a02165ce6f9004bf667549c233a8c312e884387aca4024272a3d972de SHA512 a5d2080b6c307ef07178c36e29ce47a68a0dd9f59051cd58d60460d390809c0dee0047c85b14a993e96119d2c45bb4b0ca890e54891455ff8e2703f24a8d2119 WHIRLPOOL 2e0b52164beb77060bee0f5bbda78d8371aa98e9f92a71ef27c55078185f05e335def1fab5e5f629b240c498fbc55d0760de22272a56ddcf0c188bb04cbdbc24
+EBUILD nixnote2-2.0_beta8.ebuild 1777 SHA256 11292b8cfd5a8f59a9c4aab5aadc508ebb641a8502b257d7411f36c184e17900 SHA512 048d0aabcbc429c6171cd58fb62ab62d007e397eb251bc959a309d3e70de3d77e604c9425504d2f814a674b12a9923f199e552012e4c3ffcd514fe8be885242a WHIRLPOOL e02b599f7c680139054a332faaa4b9df9fa5e510115185ad27a989c276399c809f241b09e7aa3d400e3692d53842502aa82c1880e578157a783184a0c026c090
diff --git a/app-misc/nixnote2/nixnote2-2.0.ebuild b/app-misc/nixnote2/nixnote2-2.0.ebuild
new file mode 100644
index 0000000..5e2ee07
--- /dev/null
+++ b/app-misc/nixnote2/nixnote2-2.0.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit qmake-utils versionator
+
+
+if [[ "${PV}" == "9999" ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/baumgarr/${PN}.git"
+ SLOT="0/9999"
+else
+ MY_PV="$(replace_version_separator 2 '-')"
+ SRC_URI="https://github.com/baumgarr/${PN}/archive/v${MY_PV}.tar.gz -> ${PN}-${MY_PV}.tar.gz"
+ SLOT="0/2"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+DESCRIPTION="Nixnote - A clone of Evernote for Linux"
+HOMEPAGE="http://sourceforge.net/projects/nevernote/"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+IUSE="qt4 qt5 +opencv3"
+
+REQUIRED_USE="^^ ( qt4 qt5 )
+ qt5? ( opencv3 )
+ "
+
+DEPEND="dev-libs/boost
+ app-text/hunspell
+
+ qt4? (
+ app-text/poppler[qt4]
+ dev-qt/qtwebkit:4
+ dev-qt/qtcore:4
+ dev-qt/qtgui:4
+ dev-qt/qtsql:4
+ )
+ qt5? (
+ app-text/poppler[qt5]
+ dev-qt/qtwebkit:5
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtsql:5
+ )
+
+ opencv3? ( media-libs/opencv:0/3.1 )
+ !opencv3? ( media-libs/opencv:0/2.4 )
+ "
+RDEPEND="${DEPEND}
+ app-text/htmltidy"
+
+# After commit 836482e, NixNote2 can not be compiled with qt4 any more
+if [[ "${PV}" == *9999* ]] && use qt4; then
+ EGIT_COMMIT="836482e00c93618560c2896bbac87d3f89d17299"
+fi
+
+src_prepare() {
+ # fix VideoCapture undefined reference error with opencv-3
+ if use opencv3; then
+ sed -i 's/LIBS += /LIBS += -lopencv_videoio/g' NixNote2.pro
+ sed -i '/\#include "opencv\/cv.h"/i\#include "opencv2\/videoio.hpp"' dialog/webcamcapturedialog.h
+ fi
+
+ lupdate -pro NixNote2.pro -no-obsolete || die
+ lrelease NixNote2.pro || die
+
+ if use qt4; then
+ eqmake4 NixNote2.pro || die "qmake failed"
+ fi
+ if use qt5; then
+ eqmake5 NixNote2.pro || die "qmake failed"
+ fi
+}
+
+src_install() {
+ insinto /usr/share/nixnote2
+ doins -r help images java qss translations changelog.txt license.html shortcuts.txt *.ini
+
+ rm -r ${D}/usr/share/nixnote2/translations/*.ts
+
+ dobin nixnote2
+
+ insinto /usr/share/applications
+ doins nixnote2.desktop
+
+ doman ${S}/man/nixnote2.1
+
+}
diff --git a/app-misc/nixnote2/nixnote2-2.0_beta7.ebuild b/app-misc/nixnote2/nixnote2-2.0_beta7.ebuild
new file mode 100644
index 0000000..a2ca7c5
--- /dev/null
+++ b/app-misc/nixnote2/nixnote2-2.0_beta7.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit qmake-utils versionator
+
+
+if [[ "${PV}" == "9999" ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/baumgarr/${PN}.git"
+ SLOT="0/9999"
+else
+ MY_PV="$(replace_version_separator 2 '-')"
+ SRC_URI="https://github.com/baumgarr/${PN}/archive/v${MY_PV}.tar.gz -> ${PN}-${MY_PV}.tar.gz"
+ SLOT="0/2"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+DESCRIPTION="Nixnote - A clone of Evernote for Linux"
+HOMEPAGE="http://sourceforge.net/projects/nevernote/"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+IUSE="qt4 qt5 +opencv3"
+
+REQUIRED_USE="^^ ( qt4 qt5 )
+ qt5? ( opencv3 )
+ "
+
+DEPEND="dev-libs/boost
+ app-text/hunspell
+
+ qt4? (
+ app-text/poppler[qt4]
+ dev-qt/qtwebkit:4
+ dev-qt/qtcore:4
+ dev-qt/qtgui:4
+ dev-qt/qtsql:4
+ opencv3? ( media-libs/opencv:0/3.0[qt4] )
+ !opencv3? ( media-libs/opencv:0/2.4[qt4] )
+ )
+ qt5? (
+ app-text/poppler[qt5]
+ dev-qt/qtwebkit:5
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtsql:5
+ media-libs/opencv[qt5]
+ )
+ "
+RDEPEND="${DEPEND}
+ app-text/htmltidy"
+
+src_prepare() {
+ # fix VideoCapture undefined reference error with opencv-3
+ if use opencv3; then
+ sed -i 's/LIBS += /LIBS += -lopencv_videoio/g' NixNote2.pro
+ sed -i '/\#include "opencv\/cv.h"/i\#include "opencv2\/videoio.hpp"' dialog/webcamcapturedialog.h
+ fi
+
+ lupdate -pro NixNote2.pro -no-obsolete || die
+ lrelease NixNote2.pro || die
+
+ if use qt4; then
+ eqmake4 NixNote2.pro || die "qmake failed"
+ fi
+ if use qt5; then
+ eqmake5 NixNote2.pro || die "qmake failed"
+ fi
+}
+
+src_install() {
+ insinto /usr/share/nixnote2
+ doins -r certs help images java qss translations changelog.txt license.html shortcuts.txt *.ini
+
+ rm -r ${D}/usr/share/nixnote2/translations/*.ts
+
+ dobin nixnote2
+
+ insinto /usr/share/applications
+ doins nixnote2.desktop
+
+ doman ${S}/man/nixnote2.1
+
+}
diff --git a/app-misc/nixnote2/nixnote2-2.0_beta8.ebuild b/app-misc/nixnote2/nixnote2-2.0_beta8.ebuild
new file mode 100644
index 0000000..83133c8
--- /dev/null
+++ b/app-misc/nixnote2/nixnote2-2.0_beta8.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit qmake-utils versionator
+
+
+if [[ "${PV}" == "9999" ]] ; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/baumgarr/${PN}.git"
+ SLOT="0/9999"
+else
+ MY_PV="$(replace_version_separator 2 '-')"
+ SRC_URI="https://github.com/baumgarr/${PN}/archive/v${MY_PV}.tar.gz -> ${PN}-${MY_PV}.tar.gz"
+ SLOT="0/2"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+DESCRIPTION="Nixnote - A clone of Evernote for Linux"
+HOMEPAGE="http://sourceforge.net/projects/nevernote/"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+IUSE="qt4 qt5 +opencv3"
+
+REQUIRED_USE="^^ ( qt4 qt5 )
+ qt5? ( opencv3 )
+ "
+
+DEPEND="dev-libs/boost
+ app-text/hunspell
+
+ qt4? (
+ app-text/poppler[qt4]
+ dev-qt/qtwebkit:4
+ dev-qt/qtcore:4
+ dev-qt/qtgui:4
+ dev-qt/qtsql:4
+ opencv3? ( media-libs/opencv:0/3.0[qt4] )
+ !opencv3? ( media-libs/opencv:0/2.4[qt4] )
+ )
+ qt5? (
+ app-text/poppler[qt5]
+ dev-qt/qtwebkit:5
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtsql:5
+ media-libs/opencv[qt5]
+ )
+ "
+RDEPEND="${DEPEND}
+ app-text/htmltidy"
+
+src_prepare() {
+ lupdate -pro NixNote2.pro -no-obsolete || die
+ lrelease NixNote2.pro || die
+
+ if use qt4; then
+ eqmake4 NixNote2.pro || die "qmake failed"
+ fi
+ if use qt5; then
+ eqmake5 NixNote2.pro || die "qmake failed"
+ fi
+}
+
+src_install() {
+ insinto /usr/share/nixnote2
+ doins -r certs help images java qss translations changelog.txt license.html shortcuts.txt *.ini
+
+ rm -r ${D}/usr/share/nixnote2/translations/*.ts
+
+ dobin nixnote2
+
+ insinto /usr/share/applications
+ doins nixnote2.desktop
+
+ doman ${S}/man/nixnote2.1
+
+}
diff --git a/app-misc/roadnav/Manifest b/app-misc/roadnav/Manifest
new file mode 100644
index 0000000..96d4371
--- /dev/null
+++ b/app-misc/roadnav/Manifest
@@ -0,0 +1,4 @@
+DIST roadnav-0.19.tar.gz 1289497 RMD160 c4ead3450bc3944c40b04108e5ae91b788813f2e SHA1 b9d3580bbd46ccbb03462a329f79962328bd2116 SHA256 6354600e10ec6be17a8f7c0282a11e80b1ad6cb4e59c979dd7e336ffcc22143e
+DIST roadnav-0.20alpha.tar.gz 1301668 RMD160 d573180eab43d03e19ac13bab312d66a6ca3d820 SHA1 02097ccf35d648fded06130c08d0355da00d198d SHA256 a0c0177b965a0a9fbcc41675d937a1146eead20f33a7312ee2ae228205ea3d0b
+EBUILD roadnav-0.19.ebuild 1430 RMD160 1b852de9819a7b3f69a0e22dd83f1ec6ed29f545 SHA1 5a5c8ee8483ed219bd236c708b740f9acc6d6718 SHA256 09984109051c0c48aaf63cf6545ccd24886859cf45076b4c4c5bebe130343790
+EBUILD roadnav-0.20_alpha.ebuild 1474 RMD160 5b9e23f0376e442080adb3f175844f0a38b17401 SHA1 9d3a9992f0f8010529205985758181dbb2cedc4a SHA256 c6f33a2ca33e6709fca52555cdcf303b5582f5bbc671d4e18e30f9f9882385e4
diff --git a/app-misc/roadnav/roadnav-0.19.ebuild b/app-misc/roadnav/roadnav-0.19.ebuild
new file mode 100644
index 0000000..242eee6
--- /dev/null
+++ b/app-misc/roadnav/roadnav-0.19.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-misc/roadnav/roadnav-0.18.ebuild,v 1.1 2007/10/08 06:23:58 dirtyepic Exp $
+
+inherit wxwidgets
+
+DESCRIPTION="Roadnav is a street map application with routing and GPS support"
+HOMEPAGE="http://roadnav.sourceforge.net"
+SRC_URI="mirror://sourceforge/roadnav/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE="gps festival flite openstreetmap scripting"
+
+DEPEND="=x11-libs/wxGTK-2.6*
+ ~dev-libs/libroadnav-${PV}
+ festival? ( app-accessibility/festival )
+ flite? ( app-accessibility/flite )
+ gps? ( sci-geosciences/gpsd )"
+
+RDEPEND="${DEPEND}"
+
+src_compile() {
+ WX_GTK_VER=2.6
+ need-wxwidgets gtk2
+
+ econf \
+ $(use_enable festival) \
+ $(use_enable flite) \
+ $(use_enable gps gpsd) \
+ $(use_enable openstreetmap) \
+ $(use_enable scripting) \
+ --with-wx-config=${WX_CONFIG} \
+ || die "econf failed"
+
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "install failed"
+
+ # generic or empty
+ for f in NEWS COPYING INSTALL; do
+ rm -f "${D}"/usr/share/doc/${PN}/${f}
+ done
+
+ # --docdir is broken and hardcoded to ${PN}
+ mv "${D}"/usr/share/doc/${PN} "${D}"/usr/share/doc/${P}
+
+ insinto /usr/share/applications
+ doins "${S}"/roadnav.desktop
+}
+
+pkg_postinst() {
+ echo
+ elog "After upgrading to ${P} you will need to recompile your maps."
+ echo
+}
diff --git a/app-misc/roadnav/roadnav-0.20_alpha.ebuild b/app-misc/roadnav/roadnav-0.20_alpha.ebuild
new file mode 100644
index 0000000..ee2f5bd
--- /dev/null
+++ b/app-misc/roadnav/roadnav-0.20_alpha.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-misc/roadnav/roadnav-0.18.ebuild,v 1.1 2007/10/08 06:23:58 dirtyepic Exp $
+
+inherit wxwidgets
+
+DESCRIPTION="Roadnav is a street map application with routing and GPS support"
+HOMEPAGE="http://roadnav.sourceforge.net"
+SRC_URI="mirror://sourceforge/roadnav/${PN}-0.20alpha.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE="gps festival flite openstreetmap scripting"
+
+DEPEND="=x11-libs/wxGTK-2.6*
+ ~dev-libs/libroadnav-${PV}
+ festival? ( app-accessibility/festival )
+ flite? ( app-accessibility/flite )
+ gps? ( sci-geosciences/gpsd )"
+
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-0.20alpha"
+
+
+src_compile() {
+ WX_GTK_VER=2.6
+ need-wxwidgets gtk2
+
+ econf \
+ $(use_enable festival) \
+ $(use_enable flite) \
+ $(use_enable gps gpsd) \
+ $(use_enable openstreetmap) \
+ $(use_enable scripting) \
+ --with-wx-config=${WX_CONFIG} \
+ || die "econf failed"
+
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "install failed"
+
+ # generic or empty
+ for f in NEWS COPYING INSTALL; do
+ rm -f "${D}"/usr/share/doc/${PN}/${f}
+ done
+
+ # --docdir is broken and hardcoded to ${PN}
+ mv "${D}"/usr/share/doc/${PN} "${D}"/usr/share/doc/${P}
+
+ insinto /usr/share/applications
+ doins "${S}"/roadnav.desktop
+}
+
+pkg_postinst() {
+ echo
+ elog "After upgrading to ${P} you will need to recompile your maps."
+ echo
+}
diff --git a/app-misc/sshsleeper/Manifest b/app-misc/sshsleeper/Manifest
new file mode 100644
index 0000000..8e15f8c
--- /dev/null
+++ b/app-misc/sshsleeper/Manifest
@@ -0,0 +1,2 @@
+AUX sshsleeper.c 769 RMD160 9cf34c6e8254eeac90b27559180d760e90a838ee SHA1 3521f6b66862e48dd36cb41a93a4543715d514c6 SHA256 d2e3cd2c0576eb8b85b51de8e52b9025c0b4dbaf37fc5b84b99a01e19f66b816
+EBUILD sshsleeper-0.1.ebuild 814 RMD160 fc14687d26acbf33ee149ca51df5489f27b427e9 SHA1 817946110b886ad80e031595e1a713c7edc54b40 SHA256 5e3ff4f6544b42bdddd5c46afb245fe7b8a01f1f804c6679eee7bcb0c2aafb3e
diff --git a/app-misc/sshsleeper/files/sshsleeper.c b/app-misc/sshsleeper/files/sshsleeper.c
new file mode 100644
index 0000000..a88c4bc
--- /dev/null
+++ b/app-misc/sshsleeper/files/sshsleeper.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#define BUFSIZE 128
+
+int main() {
+ int i;
+ unsigned int val;
+ int slpsec = 3600;
+
+ char buf[BUFSIZE+1];
+
+ FILE *f = fopen("/etc/sshsleeper.conf", "r");
+ if (f) {
+ while (fgets(buf, BUFSIZE, f)) {
+ // check if we are facing a long string
+ if (strlen(buf) >= BUFSIZE) {
+ while ((fgets(buf, BUFSIZE, f))&&(strlen(buf) >= BUFSIZE));
+ }
+
+ for (i = 0; buf[i] == ' '; i++);
+ if (strncmp(buf, "duration", 8)) continue;
+ for (i += 8; buf[i] == ' '; i++);
+ if (sscanf(buf + i, "%u", &val) != 1) continue;
+
+ if (val > 0) {
+ slpsec = val;
+ break;
+ }
+
+ }
+ fclose(f);
+ }
+
+ printf("Sleeping for %u seconds\n", slpsec);
+ sleep(slpsec);
+}
diff --git a/app-misc/sshsleeper/sshsleeper-0.1.ebuild b/app-misc/sshsleeper/sshsleeper-0.1.ebuild
new file mode 100644
index 0000000..ca464ab
--- /dev/null
+++ b/app-misc/sshsleeper/sshsleeper-0.1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="just a sleep app to be used for ssh backdoors"
+HOMEPAGE="http://dside.dyndns.org/"
+
+LICENSE="GPL"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+
+
+src_compile() {
+ gcc -o ${PN} "${FILESDIR}"/${PN}.c
+}
+
+src_install() {
+ dobin ${PN}
+
+ dodir /etc
+ echo "duration 14400" > "${D}"/etc/sshsleeper.conf
+
+ dodir /var/lib/sshsleeper
+ dodir /var/lib/sshsleeper/.ssh
+}
+
+pkg_postinst() {
+ enewuser sleep 601 /usr/bin/sshsleeper /var/lib/sshsleeper nogroup -K PASS_MAX_DAYS=31
+ fowners sleep.nogroup /var/lib/sshsleeper
+ fowners sleep.nogroup /var/lib/sshsleeper/.ssh
+
+ einfo ""
+ einfo "Please, add sshsleaper to /etc/shells"
+}
diff --git a/app-misc/tangogps/Manifest b/app-misc/tangogps/Manifest
new file mode 100644
index 0000000..b27d4a5
--- /dev/null
+++ b/app-misc/tangogps/Manifest
@@ -0,0 +1,2 @@
+DIST tangogps-0.9.3.tar.gz 435517 RMD160 a8f3418c770e0915275aa8a253e0cfbdc55ff2d1 SHA1 08a78b535db38970c25153bbb5322e579dd94120 SHA256 d2a107e3a5ceaeeb15ab2e3d7cd308653b4ded8aaf8d3c0e0be3b64ba4e17cfc
+EBUILD tangogps-0.9.3.ebuild 768 RMD160 d3837704e67768a9726db74bb4ac2f0d5e4b1292 SHA1 835777d1617fe4796dfabb03406ab17eed590226 SHA256 aaf5c030ac4674217ee17557076a42ddfe58596c1b1fba0590b1318c2012e2b9
diff --git a/app-misc/tangogps/tangogps-0.9.3.ebuild b/app-misc/tangogps/tangogps-0.9.3.ebuild
new file mode 100644
index 0000000..b61d960
--- /dev/null
+++ b/app-misc/tangogps/tangogps-0.9.3.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+#inherit some_eclass another_eclass
+
+DESCRIPTION="tangoGPS is a lightweight and fast mapping application."
+HOMEPAGE="http://www.tangogps.org/"
+SRC_URI="http://www.tangogps.org/downloads/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE=""
+
+RDEPEND=""
+DEPEND="sys-devel/gettext
+ x11-libs/gtk+
+ sys-apps/dbus
+ gnome-base/gconf
+ net-misc/curl
+ >=sci-geosciences/gpsd-2.34"
+
+src_compile() {
+ econf \
+ || die "could not configure"
+ emake || die "emake failed"
+}
+
+
+src_install() {
+ emake install DESTDIR="${D}" || die "Install failed"
+ dodoc NEWS README* AUTHORS ChangeLog
+}
+
+
diff --git a/app-text/a2ps/Manifest b/app-text/a2ps/Manifest
new file mode 100644
index 0000000..f5ca2fd
--- /dev/null
+++ b/app-text/a2ps/Manifest
@@ -0,0 +1,22 @@
+AUX 50a2ps-gentoo.el 218 SHA256 421f04aba83fc2fdf02230a86d940bae039206473cb070f2cdd78b0d0725d9e3 SHA512 d1696581767c62903ea24cc7ffec2f25c30b64a0a7aa76d22e8a1872c5ea9b1aaa0f88f7ce24b1ee57f3da57bd3eaa36f2c5fd388437ce9a935bd82912075269 WHIRLPOOL 2a807602fcc08d914fd22f3cc77b16767a1b6303ddaa9802613c0df3bdcced07c225a65ac33808af0a3b2669601ebf3eb18f8976a587b6b969c6baf0c44c5fe0
+AUX a2ps-4.13-manpage-chmod.patch 461 SHA256 032c4698c1dabb1a72978b9aefef7a8895098fb5a7e46e81d861fedfef3b11ab SHA512 f3dc2698ee989928b3179b65b01bf12d828f4428bd860f6f1a3811daaa9d6256b353c2acb5cd4bf392dd89b040f8e9c15420ab4373f3d54b8b60652aaf23f864 WHIRLPOOL d94998e5a7bbbdd6fc4ccccbb6701b25c25ff4fd90a8619c7ddca954053f44c540d3d7756a8165c62889a63015b7c96fa9b5c5b384d078b4ce9f8e83b8d8ce5f
+AUX a2ps-4.13-select-freebsd.patch 1582 SHA256 1ef965e835524b4d45dbe98038817d48ebb0c152d7c2c62c1e3d29f85bb0e2ae SHA512 7a86980077ae6cc0458e112304a1f50582a7008c27935f1a41659ff16a4b21dc0980704797c4125a7c176f106cf6d26a8b06b8ae35d04650657fa57d257ab751 WHIRLPOOL 53fbef43f538de238ebb664b8ff0a811040c65a461412b2ba9f927bcfbdf01de8c07472d897209edd51f16475f0b92359d7a98f3a759035b787792cebf8e6006
+AUX a2ps-4.13-stdout.diff 462 SHA256 bde80a714f5de1221ec828cf0f33859561510190e97b08f4ba62ab41ad26fc74 SHA512 61be8be21b08f39b0a7509bb96f67139165421baaaa20968ec54f9df37d5b8c355f06bc76513ed10c8c7d61608ed766ed28d4498211dff285d6b381aaf2454dc WHIRLPOOL 2213de93347dae7e2350c4932f3556a5d8cc198d64c7ac245de6328ef97e2e291fc83e086428d487450aee5ba92e5f738aee65a40987e4af088bc6d207b1b0e0
+AUX a2ps-4.13c-emacs.patch 442 SHA256 943739a788db47f10942477754f42c8c9b22cdaad4463bea4103c31a330de76a SHA512 0ef1a215ecb757e249c4d4bdf9a789419c6cd433f7e330783fef13a0158c57c5c5e6a22526d8abcca0919bdb1dc08337869fdd3f0fe192284ca087eafad322a3 WHIRLPOOL 2e204b9aed61c118f699f3434e6d6679564c8cd9ce7079be7b020a78813be27e1212293a39216ab0519ac34dc5eda30999836a7af202fa37b27a2abe9288198d
+AUX a2ps-4.13c-fixps.patch 549 SHA256 ac32464a1a9bb2f4f557a3567a94928e4d8cbdd20ebaee0e1811f076d7e7456e SHA512 1de385f24940d4b54fe64689d713bb78425f5f9950644890cf7d76ba5e411215cd8738a9570c6b163f219d75949572ae5f004f6849bcf82d3003c26b02977346 WHIRLPOOL 82f1f3acd3ac9640f98c64deb1b4c14450f2a0c01bf539664637a3c72650cb8796a3de3920b6972f3bc96e1a54d58d0b2512a079ae22e483bc9efa96cb773e4c
+AUX a2ps-4.13c-fnmatch-replacement.patch 1500 SHA256 5d1b8a8791fa2a36c23f43ef153a724cce1f8eec8fb92ab886f52fae7f8f3be3 SHA512 5509ae1277ff1f1f487fb106ed6673eb67fa7d1531a35bfa087f78a0bdb4dc0bf38c69b7fab95161a19406fc1acaef09b22b8a05ef603c6d43a8d7a8c3077b56 WHIRLPOOL c08ae041456250152d1355a09ec2b253da6637d67d7834ade169550903132c44345647ceefeef7a4bb2168504752b1b5b6a88d15e8f395bb9b1ed618c1e98286
+AUX a2ps-4.13c-locale-gentoo.diff 981 SHA256 2878415235a2d23231e4295fba1adf0435ddcc539394f7ebe49cf23fdf76ec29 SHA512 56800ba839e04a89088c130df9676595cbcdfa15fb1853eb85560e9d529e93d6db4b5813375ede8cf82aa8b0fd51f81f5f080e2c5d38dc1a7739a8e62e0ab997 WHIRLPOOL 618928fad266cbb3335a9408a78c30fd62a87596631f8e316e35db5d219e11ada62096db7f000db80ca963bb6695441f54781ab6a8c4bb71ef64ef458d81ba03
+AUX a2ps-4.13c-psmandup.diff 569 SHA256 2e64be23e030ed0f08b243f0513800336d06739fc7e347a09c130958531b85cd SHA512 df2eead6d38d1250cd6ac34b445de6685bd73360d93fb4f1d8f1b959aac9046f15e426485f72b1873ab0fd5f116db6b2b829c42edab147cb65f24c2d1028e009 WHIRLPOOL 7a5be2e7144c6692f00db8868289258ddba672b25139be7f24dc36ad26e93e7eb4311ebdbfdb82c24bbce042f69278ad517714b68a058fa8087d4cbdd727dd6c
+AUX a2ps-4.13c-psset.patch 469 SHA256 0ddb899c48c897fc333e73702f9dc666be4cbd6215da6db860784fb503500b68 SHA512 c12baf7d542b6425598870978b6bc83d30f1f5a43b768b34707ca945f62c8b0f6523714c4d00375198799a8c4da0296209bd8b45677413893c83807ea798ddb6 WHIRLPOOL c13aa6a0bb0cca01ce622dad147b44a853328505f5e8940744a6072cdf94c852a32754065407f60233e357acef66b8c33d812f70d5df0e8539dd53a915b1cc04
+AUX a2ps-4.13c-stdarg.patch 1505 SHA256 9e7e630386b694b90b0bc6454bedc7c102d46b8bb6a6246eabd37e8b6d639c68 SHA512 3e71c84ccb3553873011a26c0ef17a2678fa3d79db4531a81f11360a0caf83d541205d2f566b79bf826ef1968120433310202ce77a1910d68ce32e3c05145391 WHIRLPOOL 445bb15878b3ef61eeec7b6f34004d848e4c2d1af038eae233959f9d496b426eea216244291cb7fc0ae5a81d8a9e5a6e55132619a0eff6264eab4f4f492936d7
+AUX a2ps-4.14-check-mempcpy.patch 514 SHA256 7ec2164888d1621a8406d431ed3accd137ec8f92e0ca885175bc1c17010519a1 SHA512 6835f5e9205cb549da52c4a3c13aad601c9e9d294f0f35ebe4d8cc6f8bd8b5f6fe77b857f8c92f552a43c02eb6de812021c078ce597c319bde176f0e91cd167b WHIRLPOOL 00a2fdc4c2267d6b9548c7c908387d544ee5a8579453b3974ef54cdc44df9f382db764cd098949765002b7bde79005088a460ed690d3cea20c62f5e8d749045e
+AUX a2ps-4.14-cleanup.patch 2633 SHA256 5c9285a014a8e57066978b93afbdafdd47d11ed01afaa7c15af4f20c8d2b991c SHA512 07afbf25203c6eacb92ab8c32fa6b913a832163a03fcd47c163cf3bdfd0cf07efd960342005fd7923108b978bc0395919c7f70e048d547b4bc5c083eed86a1f3 WHIRLPOOL ccdba46c3f562d102b7abf66e2f0eef334fffe4e19aa86097cde21ede3b05a217cac1c78b098d739209fffab6a6ea9b63622b2bd122ebc9f7c22c1991387d544
+AUX a2ps-4.14-fix-stpcpy-proto.patch 436 SHA256 3707120fbbbd8306f01fec785c18b9fa2eee02ec689cde5ad251a9337af6573e SHA512 439af060da55d93e8fa6962f7b77c292e47b1a39d987c35010edd52f0ebf360337b5bd29fd134d4d4ab8333187672e7ae97c2d0259c706e38a2cf9d719dcf7bb WHIRLPOOL 886d71fc29fc02d8e8dde050108f4e9b59ece6af2d723a7ba0377dfe1730e3ac6543f02b395b250ee2672e0bf56cb1f4818dbcc52f2c17103f0f1d6c3583d750
+AUX a2ps-4.14-ja-cleanup.patch 3210 SHA256 f2d4ff66d3d908d65a2ce4dd69bceb933d6b02a6141996eae80f00dad389e68b SHA512 1a2ce34b5b0bc79bf269fe171c64bcdef0a87bf4efa8508eee851228a1483efce9c8945a17def7abc4cdfe2f1f8611d63995d98099e290d06fb1be430350b778 WHIRLPOOL f085bc34785e8a1ce9a6d65418d8031032c977530a1efae777c88a1bc2598a376197afe453a4f0bf3d3d7fcb9c4473247cf565cf8c3ccd6e3ff97116a2ed44ba
+AUX a2ps-4.14-psset.patch 616 SHA256 8525836efb9ba5db025b013e0262912ccabc77773307a8b79da6ec1f7444a9e3 SHA512 3118d91519c81e5e9f46a5386e9db757936231e71047ba8579b3d969a7c824bad6325b54221a61a0b171bb87669b548704a068bc71a1cd3b48d3a32416fe0c0f WHIRLPOOL 86eb4c5a06c07a7acea062f7c49b3deb9866569bda3d07382684859575d84978fb6677e9210dc0fa99a42b2908b9f14e434e349e69a0797c88f96d6539df19fe
+AUX a2ps-4.14-ptrdiff_t.patch 367 SHA256 09fa3327d064f3246103894b8abbbea2c7b0d2446080a4b5c9cd0510b9efd6d0 SHA512 b9ebff895614a20b8f9e891ce53cf0f7ec38452619f7e907deadff22840a019737dd129690f5ffec91f7f798ae03bd0c7c62f1aa751589865f589362825038c5 WHIRLPOOL 35adb3bfadb7e2601138df84757aa5111580aa70b4347661c237755bc29108739d570b0bee7c626f57bcb7278b05266bdcd4e7113ade633c96dda30014bcb221
+AUX a2ps-ds2.patch 2023 SHA256 e144f4a7b4d35b0eb54662b2a919750a95c7d6294e3fb5ac25fb57008f1de045 SHA512 0977ad1f9ed1a54396fa009338ef7e636c86e042b0f68a7dabcd25f61a61923f02fb85d26176bc9dba8b744f8ce50ca5b4a786abc979d98d4b6626c59c05dae1 WHIRLPOOL 5f6c10e5de045750403c0274391ca793a3798995263102230167f0b50c1d98059ffcf13e5284d98b3cddb6ee37876582d2333fe95e3bd334e1411e85ba3333cb
+AUX cyr2ps 873 SHA256 2eeec715c902b1f4925ce98c7bfb43fe6e114a9de2d36745cdb20a109fd6b3a5 SHA512 84c9ef6f66dfd8c470c98ec066a20286bef970a0175ab5714be3e2541d0e9653c55c33220294031ae2a090722f77d10476ad6434fb673265879b10ab8307c93e WHIRLPOOL 37504468148a984eb4756c79060778916617d8e2bdbc388fbbfeeb0286e5223ee9a47027172d9fb1d8c4bffa51fddcb77bb44b0988fbe1068fa287aa031ff0ab
+DIST a2ps-4.14-ja_nls.patch.gz 27576 SHA256 90b2a4caf680f04ac8c325a4bc7434edf038ef7059003179b7fa65a5bafdecdc SHA512 f02f553dd9d9dbd9dfe41ebfe103493000aa4e9de5634c94e7453f73b66d88fea6b0010095913a4a99c7285990a1df1ebcc39da451b2b34f96b0c191112b125f WHIRLPOOL 38a532bc7f696cf3a1addc502b6ad2d26ed4222b770b0e9fc4633fc81cad911df7e64781516a84cdc589965d12d51142c0a06980be7211b0a6d9bf279a11d55e
+DIST a2ps-4.14.tar.gz 2552507 SHA256 f3ae8d3d4564a41b6e2a21f237d2f2b104f48108591e8b83497500182a3ab3a4 SHA512 fd6ac8ab47d789114c283e8ca508f7f56feabd1a189f4ac772cad9e6be7e3791e210892cfffd04ad1d39efe4b15386b2e61bf4cd56b70ed581c0554f36bfe06f WHIRLPOOL f0e445b760e0fdee031c9b8204430880f8e46d0eee2b580bec0dca35564818b7a8925b5941346c008a5ef32dedc28768b43f0e58f3a0e71f289bf593e5325e8d
+EBUILD a2ps-4.14-r4.ebuild 3667 SHA256 b4625e2e28b0faf9080863ee13237cff7ff83f0572dba4ce5bf9469179d096f6 SHA512 cd3f7a95236576f372dbc6e947e01d050225f37b82bdabc12363e27fa272ff50a04768c8f5ac8343d929e3caec5f108d70cce29f52b1f6436c0f297373575076 WHIRLPOOL 1f0be15ae0eee46c89607cc8a3d9831021f29f02f4a4727c2c158bc203a46c8fb3520fba440bcff524542b61d7fd0882725ae3ddd8002541914d83582d742388
diff --git a/app-text/a2ps/a2ps-4.14-r4.ebuild b/app-text/a2ps/a2ps-4.14-r4.ebuild
new file mode 100644
index 0000000..e7cf34b
--- /dev/null
+++ b/app-text/a2ps/a2ps-4.14-r4.ebuild
@@ -0,0 +1,155 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=4
+inherit autotools elisp-common eutils flag-o-matic
+
+DESCRIPTION="Any to PostScript filter"
+HOMEPAGE="http://www.inf.enst.fr/~demaille/a2ps/"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz
+ linguas_ja? ( mirror://gentoo/${P}-ja_nls.patch.gz )"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE="emacs latex linguas_ja nls static-libs userland_BSD userland_GNU vanilla"
+
+RESTRICT=test
+
+RDEPEND="app-text/ghostscript-gpl
+ app-text/libpaper
+ >=app-text/psutils-1.17
+ app-text/wdiff
+ emacs? ( virtual/emacs )
+ latex? ( virtual/latex-base )
+ nls? ( virtual/libintl )
+ userland_GNU? ( >=sys-apps/coreutils-6.10-r1 )
+ userland_BSD? ( sys-freebsd/freebsd-ubin )"
+DEPEND="${RDEPEND}
+ >=dev-util/gperf-2.7.2
+ virtual/yacc
+ nls? ( sys-devel/gettext )"
+
+SITEFILE=50${PN}-gentoo.el
+
+S=${WORKDIR}/${PN}-${PV:0:4}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-4.13c-locale-gentoo.diff
+ # this will break
+ #epatch "${FILESDIR}/${PN}-4.13c-stdarg.patch"
+ use vanilla || epatch "${FILESDIR}"/${PN}-4.13-stdout.diff
+ if use linguas_ja; then
+ epatch "${DISTDIR}"/${P}-ja_nls.patch.gz
+ # bug #335803
+ epatch "${FILESDIR}"/${P}-ja-cleanup.patch
+ else
+ epatch "${FILESDIR}"/${P}-cleanup.patch
+ fi
+
+ # fix fnmatch replacement, bug #134546
+ epatch "${FILESDIR}"/${PN}-4.13c-fnmatch-replacement.patch
+
+ # bug #122026
+ epatch "${FILESDIR}"/${P}-psset.patch
+
+ # fix emacs printing, bug #114627
+ epatch "${FILESDIR}"/a2ps-4.13c-emacs.patch
+
+ # fix chmod error, #167670
+ epatch "${FILESDIR}"/a2ps-4.13-manpage-chmod.patch
+
+ # add configure check for mempcpy, bug 216588
+ epatch "${FILESDIR}"/${P}-check-mempcpy.patch
+
+ # fix compilation error due to invalid stpcpy() prototype, bug 216588
+ epatch "${FILESDIR}"/${P}-fix-stpcpy-proto.patch
+
+ # fix compilation error due to obstack.h issue, bug 269638
+ epatch "${FILESDIR}"/${P}-ptrdiff_t.patch
+
+#SDS
+ epatch ${FILESDIR}/a2ps-ds2.patch
+#EDS
+
+ # fix building with sys-devel/automake >= 1.12, bug 420503
+ rm -f {.,ogonkify}/aclocal.m4
+ sed -i \
+ -e '/^AM_C_PROTOTYPES/d' \
+ -e '/^AUTOMAKE_OPTIONS.*ansi2knr/d' \
+ -e 's:AM_CONFIG_HEADER:AC_CONFIG_HEADERS:' \
+ -e 's:AM_PROG_CC_STDC:AC_PROG_CC:' \
+ configure.in {contrib/sample,lib,src}/Makefile.am m4/protos.m4 || die
+
+ eautoreconf
+}
+
+src_configure() {
+ append-cppflags -DPROTOTYPES #420503
+
+ local myconf="COM_netscape=no COM_acroread=no"
+
+ use emacs || myconf="${myconf} EMACS=no"
+ use latex || myconf="${myconf} COM_latex=no"
+
+ export LANG=C LC_ALL=C
+
+#SDS
+ econf \
+ --enable-shared \
+ $(use_enable static-libs static) \
+ --sysconfdir="${EPREFIX}"/etc/a2ps \
+ --with-encoding=KOI8 \
+ $(use_enable nls) \
+ ${myconf}
+#EDS
+
+}
+
+src_compile() {
+ # parallel make b0rked
+ emake -j1
+}
+
+src_install() {
+ emake \
+ DESTDIR="${D}" \
+ lispdir="${EPREFIX}${SITELISP}"/${PN} \
+ install
+
+ newdoc "${ED}"/usr/share/a2ps/README README.a2ps
+ newdoc "${ED}"/usr/share/a2ps/ppd/README README.a2ps.ppd
+ newdoc "${ED}"/usr/share/ogonkify/README README.ogonkify
+
+ rm -f "${ED}"/usr/share/{a2ps,a2ps/ppd,ogonkify}/README
+
+ prune_libtool_files
+
+ if use emacs; then
+ elisp-site-file-install "${FILESDIR}"/${SITEFILE} || die
+ fi
+
+ dodoc ANNOUNCE AUTHORS ChangeLog FAQ NEWS README* THANKS TODO
+
+#SDS
+ install -c -m 755 ${FILESDIR}/cyr2ps ${D}/usr/bin
+#EDS
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+
+#SDS
+ (
+ cd /usr/share/a2ps/afm
+ ./make_fonts_map.sh
+ mv -f fonts.map.new fonts.map || die
+ )
+#EDS
+
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/app-text/a2ps/files/50a2ps-gentoo.el b/app-text/a2ps/files/50a2ps-gentoo.el
new file mode 100644
index 0000000..3e12daa
--- /dev/null
+++ b/app-text/a2ps/files/50a2ps-gentoo.el
@@ -0,0 +1,5 @@
+(add-to-list 'load-path "@SITELISP@")
+(autoload 'a2ps-mode "a2ps" nil t)
+(autoload 'a2ps-buffer "a2ps-print" nil t)
+(autoload 'a2ps-region "a2ps-print" nil t)
+(add-to-list 'auto-mode-alist '("\\.a2ps\\'" . a2ps-mode))
diff --git a/app-text/a2ps/files/a2ps-4.13-manpage-chmod.patch b/app-text/a2ps/files/a2ps-4.13-manpage-chmod.patch
new file mode 100644
index 0000000..e0c6112
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13-manpage-chmod.patch
@@ -0,0 +1,12 @@
+diff -ur a2ps-4.13.orig/man/Makefile.maint a2ps-4.13/man/Makefile.maint
+--- a2ps-4.13.orig/man/Makefile.maint 2002-03-04 20:46:26.000000000 +0200
++++ a2ps-4.13/man/Makefile.maint 2007-02-19 21:50:29.000000000 +0200
+@@ -20,7 +20,7 @@
+ --include=$(basename $@).x \
+ --include=common.x \
+ $(executable) > $@-t || exit 1; \
+- chmod -w $@-t || exit 1; \
++ chmod a-w $@-t || exit 1; \
+ rm -f $@ || exit 1; \
+ mv $@-t $@ || exit 1; \
+ else \
diff --git a/app-text/a2ps/files/a2ps-4.13-select-freebsd.patch b/app-text/a2ps/files/a2ps-4.13-select-freebsd.patch
new file mode 100644
index 0000000..a2c3889
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13-select-freebsd.patch
@@ -0,0 +1,57 @@
+--- src/select.c.orig Thu Dec 16 02:04:56 1999
++++ src/select.c Sat Aug 21 12:05:31 2004
+@@ -131,6 +131,36 @@
+ return 1;
+ }
+
++/* escapes the name of a file so that the shell groks it in 'single' q.marks.
++ The resulting pointer has to be free()ed when not longer used. */
++char *
++shell_escape(const char *fn)
++{
++ size_t len = 0;
++ const char *inp;
++ char *retval, *outp;
++
++ for(inp = fn; *inp; ++inp)
++ switch(*inp)
++ {
++ case '\'': len += 4; break;
++ default: len += 1; break;
++ }
++
++ outp = retval = malloc(len + 1);
++ if(!outp)
++ return NULL; /* perhaps one should do better error handling here */
++ for(inp = fn; *inp; ++inp)
++ switch(*inp)
++ {
++ case '\'': *outp++ = '\''; *outp++ = '\\'; *outp++ = '\'', *outp++ = '\''; break;
++ default: *outp++ = *inp; break;
++ }
++ *outp = 0;
++
++ return retval;
++}
++
+ /* What says file about the type of a file (result is malloc'd). NULL
+ if could not be run. */
+
+@@ -144,11 +174,15 @@
+ if (IS_EMPTY (job->file_command))
+ return NULL;
+
++ filename = shell_escape(filename);
++ if(filename == NULL)
++ return NULL;
+ /* Call file(1) with the correct option */
+- command = ALLOCA (char, (2
++ command = ALLOCA (char, (4
+ + strlen (job->file_command)
+ + ustrlen (filename)));
+- sprintf (command, "%s %s", job->file_command, (const char *) filename);
++ sprintf (command, "%s '%s'", job->file_command, (const char *) filename);
++ free(filename);
+ message (msg_tool, (stderr, "Reading pipe: `%s'\n", command));
+ file_out = popen (command, "r");
+
diff --git a/app-text/a2ps/files/a2ps-4.13-stdout.diff b/app-text/a2ps/files/a2ps-4.13-stdout.diff
new file mode 100644
index 0000000..1e40e61
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13-stdout.diff
@@ -0,0 +1,13 @@
+--- lib/printers.c.orig Tue Oct 12 00:01:59 1999
++++ lib/printers.c Wed May 2 11:23:25 2001
+@@ -315,8 +315,8 @@
+ res->ppd = NULL; /* Printer's ppd are not read yet */
+
+ /* Output */
+- /* Default is to send to default printer */
+- res->flag_output_is_printer = true;
++ /* Default is to send to stdout */
++ res->flag_output_is_printer = false;
+ res->flag_output_name = NULL;
+ res->output_is_file = true;
+ res->output_name = NULL;
diff --git a/app-text/a2ps/files/a2ps-4.13c-emacs.patch b/app-text/a2ps/files/a2ps-4.13c-emacs.patch
new file mode 100644
index 0000000..f1cd5d9
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-emacs.patch
@@ -0,0 +1,10 @@
+--- a2ps-4.13/contrib/emacs/a2ps-print.el.orig 2005-12-05 08:03:48.000000000 +0100
++++ a2ps-4.13/contrib/emacs/a2ps-print.el 2005-12-06 16:38:14.000000000 +0100
+@@ -93,6 +93,7 @@
+ (concat "--center-title=" name)
+ (concat "--footer=" (concat name " Emacs buffer"))
+ (concat "--pretty-print=" filetype)
++ (concat "-d")
+ ;Uncommenting the following gives a print preview (only):
+ ; (concat "--output=/tmp/foo.ps")
+ )
diff --git a/app-text/a2ps/files/a2ps-4.13c-fixps.patch b/app-text/a2ps/files/a2ps-4.13c-fixps.patch
new file mode 100644
index 0000000..13b196f
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-fixps.patch
@@ -0,0 +1,19 @@
+--- contrib/fixps.in.orig 2004-12-20 00:11:40.000000000 +0100
++++ contrib/fixps.in 2004-12-20 00:14:12.000000000 +0100
+@@ -38,7 +38,7 @@
+ run_gs=0
+ # What action to perform: fixps, cat, check, and gs
+ task=fixps
+-tmpdir=/tmp/$program.$$
++tmpdir=`mktemp -d -t fixps.XXXXXX` || { echo "$program: Cannot create temporary dir!" >&2 ; exit 1; }
+ verbose=echo
+
+ # The version/usage strings
+@@ -191,7 +191,6 @@
+ trap "/bin/rm -rf $tmpdir" 0 1 2 3 13 15
+ fi
+
+-mkdir $tmpdir
+ fixps_sed=$tmpdir/fixps.sed
+
+ # If printing from stdin, save into a tmp file
diff --git a/app-text/a2ps/files/a2ps-4.13c-fnmatch-replacement.patch b/app-text/a2ps/files/a2ps-4.13c-fnmatch-replacement.patch
new file mode 100644
index 0000000..c49ab78
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-fnmatch-replacement.patch
@@ -0,0 +1,43 @@
+diff -Naurp a2ps-4.13.orig/lib/fnmatch.c a2ps-4.13/lib/fnmatch.c
+--- a2ps-4.13.orig/lib/fnmatch.c 2002-03-04 12:46:25 -0600
++++ a2ps-4.13/lib/fnmatch.c 2006-05-27 11:41:15 -0500
+@@ -27,18 +27,6 @@
+ #include <fnmatch.h>
+ #include <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 STDC_HEADERS || !defined isascii
+ # define ISASCII(c) 1
+ # else
+@@ -52,10 +40,13 @@
+ extern int errno;
+ # endif
+
++/* fnmatch replacement taken from the GNU C Library for systems that
++ provide a broken implementation. */
++
+ /* Match STRING against the filename pattern PATTERN, returning zero if
+ it matches, nonzero if not. */
+ int
+-fnmatch (const char *pattern, const char *string, int flags)
++rpl_fnmatch (const char *pattern, const char *string, int flags)
+ {
+ register const char *p = pattern, *n = string;
+ register char c;
+@@ -233,5 +224,3 @@ fnmatch (const char *pattern, const char
+
+ # undef FOLD
+ }
+-
+-#endif /* _LIBC or not __GNU_LIBRARY__. */
diff --git a/app-text/a2ps/files/a2ps-4.13c-locale-gentoo.diff b/app-text/a2ps/files/a2ps-4.13c-locale-gentoo.diff
new file mode 100644
index 0000000..0b59956
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-locale-gentoo.diff
@@ -0,0 +1,25 @@
+diff -urN a2ps-4.13.ORIG/config.h.in a2ps-4.13/config.h.in
+--- a2ps-4.13.ORIG/config.h.in 2003-09-27 19:33:38.000000000 +0900
++++ a2ps-4.13/config.h.in 2003-09-27 21:25:46.000000000 +0900
+@@ -181,6 +181,9 @@
+ /* Define to 1 if you have the `rename' function. */
+ #undef HAVE_RENAME
+
++/* Define to 1 if you have the <locale.h> header file. */
++#undef HAVE_LOCALE_H
++
+ /* Define to 1 if you have the `setlocale' function. */
+ #undef HAVE_SETLOCALE
+
+diff -urN a2ps-4.13.ORIG/configure.in a2ps-4.13/configure.in
+--- a2ps-4.13.ORIG/configure.in 2003-09-27 19:33:38.000000000 +0900
++++ a2ps-4.13/configure.in 2003-09-27 21:26:05.000000000 +0900
+@@ -71,7 +71,7 @@
+ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS(sys/time.h sys/stat.h sys/types.h sys/ioctl.h \
+ math.h string.h strings.h stdlib.h unistd.h stdarg.h pwd.h malloc.h \
+- memory.h errno.h fcntl.h stdbool.h fnmatch.h)
++ memory.h errno.h fcntl.h stdbool.h fnmatch.h locale.h)
+
+ ## --------------------- ##
+ ## Checks for typedefs. ##
diff --git a/app-text/a2ps/files/a2ps-4.13c-psmandup.diff b/app-text/a2ps/files/a2ps-4.13c-psmandup.diff
new file mode 100644
index 0000000..67f2fab
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-psmandup.diff
@@ -0,0 +1,19 @@
+--- contrib/psmandup.in.orig 2004-12-20 00:16:07.000000000 +0100
++++ contrib/psmandup.in 2004-12-20 00:16:39.000000000 +0100
+@@ -36,7 +36,7 @@
+ message=
+ psselect=${PSSELECT:-psselect}
+ psset=${PSSET:-psset}
+-tmpdir=/tmp/$program.$$
++tmpdir=`mktemp -d -t fixps.XXXXXX` || { echo "$program: Cannot create temporary dir!" >&2 ; exit 1; }
+
+ # These two must be kept in synch. They are opposed.
+ verbose=echo
+@@ -185,7 +185,6 @@
+ trap "/bin/rm -rf $tmpdir" 0 1 2 3 13 15
+ fi
+
+-mkdir $tmpdir
+
+ # If printing from stdin, save into a tmp file
+ if test $file = '-'; then
diff --git a/app-text/a2ps/files/a2ps-4.13c-psset.patch b/app-text/a2ps/files/a2ps-4.13c-psset.patch
new file mode 100644
index 0000000..f8fd449
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-psset.patch
@@ -0,0 +1,11 @@
+--- a2ps-4.13/contrib/psset.in.orig 2006-03-16 12:30:48.000000000 +0100
++++ a2ps-4.13/contrib/psset.in 2006-03-16 12:28:14.000000000 +0100
+@@ -241,7 +241,7 @@
+ # spaces with a `\' too...
+ pspagedevicelen=`echo "$pspagedevice" | wc -l`
+ pspagedevice=`echo "$pspagedevice" | \
+- sed -e "$pspagedevicelen!s/\$/\\\\\\/;s/^/\\\\\\/"`
++ sed -e "$pspagedevicelen!s/\$/\\\\\\/;s/^ /\\\\\\/"`
+
+ case $at in
+ 0) # Insert last in the Setup, so that we win over other requests.
diff --git a/app-text/a2ps/files/a2ps-4.13c-stdarg.patch b/app-text/a2ps/files/a2ps-4.13c-stdarg.patch
new file mode 100644
index 0000000..4ff1212
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.13c-stdarg.patch
@@ -0,0 +1,74 @@
+--- a2ps-4.13-orig/configure.in 2005-08-14 14:13:42.000000000 +0200
++++ a2ps-4.13/configure.in 2005-08-14 14:18:20.000000000 +0200
+@@ -157,6 +157,22 @@
+ [Define to rpl_fnmatch if the replacement function should be used.])
+ fi
+
++# Check for C99 va_copy
++AC_CACHE_CHECK([
++ AC_TRY_LINK([#include <stdarg.h>],
++ [
++ va_list va1, va2;
++
++ va_copy(va2, va1);
++ va_end(va2);
++ ],
++ [ac_cv_va_copy="yes"],[ac_cv_va_copy="no"]
++ )
++])
++if test "x$ac_cv_va_copy"="xyes"; then
++ AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if C99 va_copy function should be used])
++fi
++
+ # Needed checks for tinyterm.[ch]
+ ad_TINYTERM_CHECKS
+
+--- a2ps-4.13-orig/lib/printlen.c 2002-03-04 19:46:25.000000000 +0100
++++ a2ps-4.13/lib/printlen.c 2005-08-14 14:29:08.000000000 +0200
+@@ -27,15 +27,24 @@
+
+ unsigned long strtoul ();
+
++#if !defined(HAVE_VA_COPY)
+ static int
+ int_printflen (const char *format, va_list *args)
++#else
++static int
++int_printflen (const char *format, va_list args)
++#endif
+ {
+ const char *cp;
+ int total_width = 0;
+ int width = 0;
+ va_list ap;
+
++#ifndef HAVE_VA_COPY
+ memcpy (&ap, args, sizeof (va_list));
++#else
++ va_copy(ap, args);
++#endif
+
+ for (cp = format ; *cp ; cp++)
+ {
+@@ -93,13 +102,21 @@
+ }
+ }
+ }
++
++#ifdef HAVE_VA_COPY
++ va_end(ap);
++#endif
+ return total_width;
+ }
+
+ int
+ vprintflen (const char *format, va_list args)
+ {
++#if !defined(HAVE_VA_COPY)
+ return int_printflen (format, &args);
++#else
++ return int_printflen (format, args);
++#endif
+ }
+
+ int
diff --git a/app-text/a2ps/files/a2ps-4.14-check-mempcpy.patch b/app-text/a2ps/files/a2ps-4.14-check-mempcpy.patch
new file mode 100644
index 0000000..7b820ce
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.14-check-mempcpy.patch
@@ -0,0 +1,12 @@
+--- a2ps-4.14-orig/configure.in 2008-04-16 08:36:03.000000000 +0200
++++ a2ps-4.14/configure.in 2008-04-16 08:36:29.000000000 +0200
+@@ -137,7 +137,8 @@
+ ad_REPLACE_FUNC_STRCASECMP
+ ad_REPLACE_FUNC_STRNCASECMP
+ ad_REPLACE_FUNC_RENAME
+-AC_CHECK_FUNCS(uname strchr strerror strerror_r getcwd bcopy bzero tempnam strsignal psignal setlocale)
++AC_CHECK_FUNCS(uname strchr strerror strerror_r getcwd bcopy bzero \
++ tempnam strsignal psignal setlocale mempcpy)
+ ad_FUNC_SYSTEMPAPERNAME
+ ad_FUNC_ATEXIT
+ ad_FUNC_STRFTIME
diff --git a/app-text/a2ps/files/a2ps-4.14-cleanup.patch b/app-text/a2ps/files/a2ps-4.14-cleanup.patch
new file mode 100644
index 0000000..25187f3
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.14-cleanup.patch
@@ -0,0 +1,106 @@
+fix missing prototype and printf warnings
+
+--- a/lib/argmatch.c
++++ b/lib/argmatch.c
+@@ -21,6 +21,7 @@
+ #include "argmatch.h"
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #ifdef STDC_HEADERS
+ # include <string.h>
+ #endif
+--- a/lib/encoding.c
++++ b/lib/encoding.c
+@@ -790,7 +790,7 @@ dump_encoding_setup (FILE * stream,
+ /* Create the dictionary and fill it */
+ fprintf (stream, "%% Dictionary for %s support\n",
+ encoding->name);
+- fprintf (stream, "/%sdict %d dict begin\n", encoding->key, nb);
++ fprintf (stream, "/%sdict %zu dict begin\n", encoding->key, nb);
+ for (i = 0 ; i < nb ; i++)
+ fprintf (stream, " /f%s %sEncoding /%s reencode_font\n",
+ font_names [i],
+--- a/lib/output.c
++++ b/lib/output.c
+@@ -84,7 +84,7 @@ new_derivation (enum derivation_type type)
+ static void
+ derivation_self_print (struct derivation * derivation, FILE * stream)
+ {
+- fprintf (stream, "At %x: ", (int) derivation);
++ fprintf (stream, "At %p: ", derivation);
+ switch (derivation->type)
+ {
+ case nothing:
+@@ -525,7 +525,7 @@ output_file (struct output * out, a2ps_job * job,
+ expand_user_string (job, FIRST_FILE (job),
+ (const uchar *) "Expand: requirement",
+ (const uchar *) token));
+- output (dest, expansion);
++ output (dest, "%s", expansion);
+ continue;
+ }
+
+--- a/lib/parseppd.y
++++ b/lib/parseppd.y
+@@ -154,7 +154,7 @@ font_clause :
+ void
+ yyerror (const char *msg)
+ {
+- error_at_line (1, 0, ppdfilename, ppdlineno, msg);
++ error_at_line (1, 0, ppdfilename, ppdlineno, "%s", msg);
+ }
+
+ /*
+--- a/lib/psgen.c
++++ b/lib/psgen.c
+@@ -232,7 +232,7 @@ output_marker (a2ps_job * job, const char * kind, uchar * marker)
+ default:
+ *buf = '\0';
+ ps_escape_char (job, cp[i], buf);
+- output (jdiv, (char *) buf);
++ output (jdiv, "%s", buf);
+ break;
+ }
+ }
+--- a/lib/quotearg.c
++++ b/lib/quotearg.c
+@@ -60,6 +60,7 @@
+
+ #if HAVE_MBRTOWC && HAVE_WCHAR_H
+ # include <wchar.h>
++# include <wctype.h>
+ #else
+ # define iswprint(wc) 1
+ # define mbrtowc(pwc, s, n, ps) 1
+--- a/lib/title.c
++++ b/lib/title.c
+@@ -28,6 +28,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <string.h>
+
+ #if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
+ # if __STDC__
+--- a/src/long-options.c
++++ b/src/long-options.c
+@@ -22,6 +22,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <getopt.h>
+ #include "closeout.h"
+ #include "long-options.h"
+--- a/src/parsessh.y
++++ b/src/parsessh.y
+@@ -740,7 +740,7 @@ exception_def_opt:
+ void
+ yyerror (const char *msg)
+ {
+- error_at_line (1, 0, sshfilename, sshlineno, msg);
++ error_at_line (1, 0, sshfilename, sshlineno, "%s", msg);
+ }
+
+ /*
diff --git a/app-text/a2ps/files/a2ps-4.14-fix-stpcpy-proto.patch b/app-text/a2ps/files/a2ps-4.14-fix-stpcpy-proto.patch
new file mode 100644
index 0000000..7c3c690
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.14-fix-stpcpy-proto.patch
@@ -0,0 +1,17 @@
+=== modified file 'lib/xstrrpl.c'
+--- lib/xstrrpl.c 2008-04-14 18:04:50 +0000
++++ lib/xstrrpl.c 2008-04-14 18:20:20 +0000
+@@ -20,12 +20,10 @@
+
+ #include "system.h"
+ #include <assert.h>
+ #include "xstrrpl.h"
+
+-extern char * stpcpy();
+-
+ /* Perform subsitutions in string. Result is malloc'd
+ E.g., result = xstrrrpl ("1234", subst) gives result = "112333"
+ where subst = { {"1", "11"}, {"3", "333"}, { "4", ""}}
+ */
+ char *
+
diff --git a/app-text/a2ps/files/a2ps-4.14-ja-cleanup.patch b/app-text/a2ps/files/a2ps-4.14-ja-cleanup.patch
new file mode 100644
index 0000000..16271b3
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.14-ja-cleanup.patch
@@ -0,0 +1,122 @@
+diff --git lib/argmatch.c lib/argmatch.c
+index f983e9d..eadc7ea 100644
+--- lib/argmatch.c
++++ lib/argmatch.c
+@@ -21,6 +21,7 @@
+ #include "argmatch.h"
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #ifdef STDC_HEADERS
+ # include <string.h>
+ #endif
+diff --git lib/encoding.c lib/encoding.c
+index 9bd9f2a..f554a6d 100644
+--- lib/encoding.c
++++ lib/encoding.c
+@@ -989,7 +989,7 @@ dump_encoding_setup (FILE * stream,
+ /* Create the dictionary and fill it */
+ fprintf (stream, "%% Dictionary for %s support\n",
+ encoding->name);
+- fprintf (stream, "/%sdict %d dict begin\n", encoding->key,
++ fprintf (stream, "/%sdict %zu dict begin\n", encoding->key,
+ (encoding->composite_flag == true)? nb+nb+ns:nb+ns);
+ for (i = 0 ; i < nb ; i++)
+ fprintf (stream, " /f%s %sEncoding /%s reencode_font\n",
+diff --git lib/output.c lib/output.c
+index b5fc37d..5f67676 100644
+--- lib/output.c
++++ lib/output.c
+@@ -84,7 +84,7 @@ new_derivation (enum derivation_type type)
+ static void
+ derivation_self_print (struct derivation * derivation, FILE * stream)
+ {
+- fprintf (stream, "At %x: ", (int) derivation);
++ fprintf (stream, "At %p: ", derivation);
+ switch (derivation->type)
+ {
+ case nothing:
+@@ -525,7 +525,7 @@ output_file (struct output * out, a2ps_job * job,
+ expand_user_string (job, FIRST_FILE (job),
+ (const uchar *) "Expand: requirement",
+ (const uchar *) token));
+- output (dest, expansion);
++ output (dest, "%s", expansion);
+ continue;
+ }
+
+diff --git lib/parseppd.y lib/parseppd.y
+index a7558ba..c89d188 100644
+--- lib/parseppd.y
++++ lib/parseppd.y
+@@ -154,7 +154,7 @@ font_clause :
+ void
+ yyerror (const char *msg)
+ {
+- error_at_line (1, 0, ppdfilename, ppdlineno, msg);
++ error_at_line (1, 0, ppdfilename, ppdlineno, "%s", msg);
+ }
+
+ /*
+diff --git lib/psgen.c lib/psgen.c
+index 9eeef74..9d7a27d 100644
+--- lib/psgen.c
++++ lib/psgen.c
+@@ -232,7 +232,7 @@ output_marker (a2ps_job * job, const char * kind, uchar * marker)
+ default:
+ *buf = '\0';
+ ps_escape_char (job, cp[i], buf);
+- output (jdiv, (char *) buf);
++ output (jdiv, "%s", buf);
+ break;
+ }
+ }
+diff --git lib/quotearg.c lib/quotearg.c
+index 16d0b91..89db991 100644
+--- lib/quotearg.c
++++ lib/quotearg.c
+@@ -60,6 +60,7 @@
+
+ #if HAVE_MBRTOWC && HAVE_WCHAR_H
+ # include <wchar.h>
++# include <wctype.h>
+ #else
+ # define iswprint(wc) 1
+ # define mbrtowc(pwc, s, n, ps) 1
+diff --git lib/title.c lib/title.c
+index cf4a34b..7a3e87b 100644
+--- lib/title.c
++++ lib/title.c
+@@ -28,6 +28,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <string.h>
+
+ #if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
+ # if __STDC__
+diff --git src/long-options.c src/long-options.c
+index fb40cd9..7bd77b0 100644
+--- src/long-options.c
++++ src/long-options.c
+@@ -22,6 +22,7 @@
+ #endif
+
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <getopt.h>
+ #include "closeout.h"
+ #include "long-options.h"
+diff --git src/parsessh.y src/parsessh.y
+index 21e9559..569fdb6 100644
+--- src/parsessh.y
++++ src/parsessh.y
+@@ -740,7 +740,7 @@ exception_def_opt:
+ void
+ yyerror (const char *msg)
+ {
+- error_at_line (1, 0, sshfilename, sshlineno, msg);
++ error_at_line (1, 0, sshfilename, sshlineno, "%s", msg);
+ }
+
+ /*
diff --git a/app-text/a2ps/files/a2ps-4.14-psset.patch b/app-text/a2ps/files/a2ps-4.14-psset.patch
new file mode 100644
index 0000000..291c3aa
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.14-psset.patch
@@ -0,0 +1,21 @@
+diff -Naur a2ps-4.14.orig/contrib/psset.in a2ps-4.14/contrib/psset.in
+--- a2ps-4.14.orig/contrib/psset.in 2007-12-29 12:29:01.000000000 +0900
++++ a2ps-4.14/contrib/psset.in 2009-04-12 12:17:43.000000000 +0900
+@@ -219,7 +219,7 @@
+ done
+
+ pspagedevice="% Pagedevice definitions:
+-countdictstack
++ countdictstack
+ % Push our own mark, since there can be several PS marks pushed depending
+ % where the failure really occured.
+ /psset_mark
+@@ -227,7 +227,7 @@
+ } stopped
+ % My cleartomark
+ { /psset_mark eq { exit } if } loop
+-countdictstack exch sub dup 0 gt
++ countdictstack exch sub dup 0 gt
+ {
+ { end } repeat
+ }{
diff --git a/app-text/a2ps/files/a2ps-4.14-ptrdiff_t.patch b/app-text/a2ps/files/a2ps-4.14-ptrdiff_t.patch
new file mode 100644
index 0000000..00d955a
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-4.14-ptrdiff_t.patch
@@ -0,0 +1,14 @@
+diff -uNr a2ps-4.14/lib/obstack.h a2ps-4.14.test/lib/obstack.h
+--- a2ps-4.14/lib/obstack.h 2007-12-29 09:37:59.000000000 +0800
++++ a2ps-4.14.test/lib/obstack.h 2009-06-10 18:49:45.000000000 +0900
+@@ -138,9 +138,9 @@
+ #define __need_ptrdiff_t
+ #endif
+ #endif
++#endif
+
+ #include <stddef.h>
+-#endif
+
+ #if defined (__STDC__) && __STDC__
+ #define PTR_INT_TYPE ptrdiff_t
diff --git a/app-text/a2ps/files/a2ps-ds2.patch b/app-text/a2ps/files/a2ps-ds2.patch
new file mode 100644
index 0000000..9d9e011
--- /dev/null
+++ b/app-text/a2ps/files/a2ps-ds2.patch
@@ -0,0 +1,53 @@
+diff -dPNur a2ps-4.13/encoding/koi8.edf a2ps-4.13-new/encoding/koi8.edf
+--- a2ps-4.13/encoding/koi8.edf Fri Sep 4 15:05:13 1998
++++ a2ps-4.13-new/encoding/koi8.edf Wed Dec 27 05:05:37 2000
+@@ -32,22 +32,22 @@
+ EndDocumentation
+
+ # Regular fonts don't support Cyrillic glyphs
+-Default: CourierISOC
++Default: Courier
+
+-Substitute: Courier CourierISOC
+-Substitute: Courier-Bold CourierISOC-Bold
+-Substitute: Courier-BoldOblique CourierISOC-BoldOblique
+-Substitute: Courier-Oblique CourierISOC-Oblique
++Substitute: Courier ERKurier
++Substitute: Courier-Bold ERKurierBold
++Substitute: Courier-BoldOblique ERKurierBoldItalic
++Substitute: Courier-Oblique ERKurierItalic
+
+-Substitute: Times-Roman College
+-Substitute: Times-Bold College-Bold
+-Substitute: Times-Italic College-Italic
+-Substitute: Times-BoldItalic College-Italic
++Substitute: Times-Roman ERBukinist
++Substitute: Times-Bold ERBukinistBold
++Substitute: Times-Italic ERBukinistItalic
++Substitute: Times-BoldItalic ERBukinistBoldItalic
+
+-Substitute: Helvetica Textbook
+-Substitute: Helvetica-Bold Textbook-Bold
+-Substitute: Helvetica-Oblique Textbook-Italic
+-Substitute: Helvetica-BoldOblique Textbook-Italic
++Substitute: Helvetica ERUnivers
++Substitute: Helvetica-Bold ERUniversBold
++Substitute: Helvetica-Oblique ERUniversItalic
++Substitute: Helvetica-BoldOblique ERUniversBoldItalic
+
+ Vector:
+ .notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
+diff -dPNur a2ps-4.13/etc/a2ps_cfg.in a2ps-4.13-new/etc/a2ps_cfg.in
+--- a2ps-4.13/etc/a2ps_cfg.in Thu Feb 24 22:37:44 2000
++++ a2ps-4.13-new/etc/a2ps_cfg.in Wed Jul 18 06:43:05 2001
+@@ -72,8 +72,8 @@
+
+ # It may be useful to extend it so that a2ps can see some
+ # TeX or X11 resources: it likes AFM files and PF[AB] files.
+-#AppendLibraryPath: foo
+-
++AppendLibraryPath: /usr/share/fonts/DarkLin/Type1/ER-KOI8
++#AppendLibraryPath: /usr/share/fonts/default/Type1
+
+ #################################################################
+ # 3) Default settings #
diff --git a/app-text/a2ps/files/cyr2ps b/app-text/a2ps/files/cyr2ps
new file mode 100755
index 0000000..a602228
--- /dev/null
+++ b/app-text/a2ps/files/cyr2ps
@@ -0,0 +1,49 @@
+#! /bin/bash
+
+enc=UTF-8
+case $1 in
+koi|KOI|Koi|koi8|Koi8|KOI8|koi-8|Koi-8|KOI-8|koi-8r|Koi-8r|KOI-8R|koi8r|Koi8r|KOI8R|k|K|Koi8-r|koi8-r|KOI8-R)
+ enc=""
+ shift
+ ;;
+alt|Alt|ALT|dos|Dos|DOS|cp866|Cp866|CP866|A|a)
+ enc=CP866
+ shift
+ ;;
+win|Win|WIN|cp1251|Cp1251|CP1251|W|w)
+ enc=CP1251
+ shift
+ ;;
+UTF-8|utf-8|Utf-8|UTF8|utf8|Utf-8|Unicode|UNICODE|unicode|U|u)
+ enc=UTF-8
+ shift
+ ;;
+esac
+
+
+in=$BASH_ARGV
+if [ "$in" == "-" -o -f "$in" ]; then
+ arglen=$(($#-1))
+ args=${@:1:$arglen}
+else
+ args=$@
+ in="-"
+fi
+
+out=""
+
+if [[ " ${args[*]} " != *" -o "* ]]; then
+ if [ $in == "-" ]; then
+ out="-o -"
+ else
+ out="-o `basename $in`.ps"
+ fi
+fi
+
+
+echo "Encoding: $enc, In: $in, Out: $out, extra args: ${args[*]}"
+if [ -n "$enc" ]; then
+ cat $in | iconv -f UTF-8 -t KOI8-R -c | a2ps $out $args -
+else
+ a2ps $out $args $in
+fi
diff --git a/dev-db/freetds/Manifest b/dev-db/freetds/Manifest
new file mode 100644
index 0000000..82ebebf
--- /dev/null
+++ b/dev-db/freetds/Manifest
@@ -0,0 +1,13 @@
+AUX SQLGetData.utf8.odbc.c-r3.diff 6680 RMD160 6198a9fbc7672e0ac8683feb07bf720cb8a5867b SHA1 d2aea252de40b45dc690c0f53d14bbfc0c6650ff SHA256 eb32b59a11ed2c02c326fc565370bfed09fadcdd828e2ce8851a8614161beec2
+AUX SQLGetData.utf8.odbc.c.diff 6780 RMD160 6283137106503c40dec71ea526cf16eacdb9b3e7 SHA1 989ada87c5d7ef7984ff82698a93caa26af61045 SHA256 4f60e53f3b4157c8ee22752d2fa32c5b4546d1ae8248644898af7222ee7cc69e
+AUX SQLGetData_cvs.patch 2134 RMD160 ac879054de7207801777908d9d7d9ee8e1209d3e SHA1 cb6a20dd4f29cde581c1e75ddf68f65ce84d498a SHA256 2ce73cfb9a1bd8f60296d3374221fce82eda46f7d2c4318eb8471af694e3443c
+AUX freetds-0.82-odbc-csa2.patch 15631 RMD160 d92b72af4e22d25a3b6323bdddb23d1fc809ccee SHA1 40fc02b4303301576ea52e8da69e78138f0ef235 SHA256 930994cd10fff36888a9ef0cf19b4ea9aa5a5bf94f77e258f7e2c5d7379b5e24
+AUX freetds-20080603-odbc-csa2.patch 12562 RMD160 39dd4ba34d88860328af7c305337068e4cabc3c5 SHA1 55542007834caa4c8336abd3bd53a5ce3bcfb913 SHA256 03f4b9d4e1b38cd488937a5b00788935ad3782b0b2395755365bbe8f22f13b5c
+AUX freetds-ds-connect_timeout.patch 492 RMD160 9bb69de4e2b5c7277b87aa1b2856db8f0a96756e SHA1 ae59f058e1499954695031bc0bf18b04084938a9 SHA256 ef97347277242c00d6f86c2726b5011735592942f148919ba6bf6b1b6413ac76
+AUX freetds-ds-odbc.patch 7592 RMD160 1a621530d8e15a4807a0dc4490165db65c4f4c06 SHA1 30fc69ca0d3a8ed7cdf0dd95805786dfc536bf6a SHA256 73258ba07157a24ff31cc6b9cc27ab41908d26fafc69c932c577e5be0cf87532
+DIST freetds-0.82.tar.gz 1596755 RMD160 d3596c512022332cdb3bab375950159f1e930a4b SHA1 7e2a0c9e41c240c2d1c7f69c6f278e9a5bb80c2d SHA256 e2731483614bd992c8cb133bcc38432de13cfa243cc1327f37412db50c99b2b6
+EBUILD freetds-0.82-r1.ebuild 996 RMD160 fb51029110a0eabd312fe13675446b8a49028352 SHA1 0ea5d137d3b61aafad5ade6f9c88700ce9b6c8c2 SHA256 bc2c84bb1261012068e6360d94dd4bb84ca2d0bfbf77d0c42caac165880273e8
+EBUILD freetds-0.82-r2.ebuild 1054 RMD160 7ba5c67a5f70851c2b96bd3bbab4c18619cf5adf SHA1 16477de40b943d764002559755543b7fe19c46d1 SHA256 1621385bc1b02a96cfaaeb2bdbcc8c1c73f5a145f610cab4cd80451ea317c08c
+EBUILD freetds-0.82-r3.ebuild 1007 RMD160 0ee4b2cb6047ab0792db4fe35209223513ac4990 SHA1 2e78d88ddf37812fa5a44e6d338977cb817c83cc SHA256 d2295661da6ed18edd2b5506d0c3ade70d2be1855d6d1e9bcebba366672c19e0
+EBUILD freetds-0.82-r4.ebuild 1069 RMD160 759a7399b4e4e83dd49946cd0a016d9a2ada12ec SHA1 27564de2ae850fd52fde2c230922b03b56aa4f70 SHA256 8cb7180c10b328558e0a7d97b359a4ebaedd9f98f86a41ff3c442eda318f8136
+EBUILD freetds-0.82-r5.ebuild 1067 RMD160 6ceb0e8fb1a88c43c16ff6257ca9531925493840 SHA1 82067b926263c2c897aff56d254634d6f0895f67 SHA256 ad5d3a99eac7a68daa9ca6b88a31a7760f7cb257d0f568877a466065d2d2a006
diff --git a/dev-db/freetds/files/SQLGetData.utf8.odbc.c-r3.diff b/dev-db/freetds/files/SQLGetData.utf8.odbc.c-r3.diff
new file mode 100644
index 0000000..0039347
--- /dev/null
+++ b/dev-db/freetds/files/SQLGetData.utf8.odbc.c-r3.diff
@@ -0,0 +1,196 @@
+diff -dPNur freetds-0.82/src/odbc/odbc.c freetds-0.82-new-ds/src/odbc/odbc.c
+--- freetds-0.82/src/odbc/odbc.c 2008-05-06 04:57:26.000000000 +0200
++++ freetds-0.82-new-ds/src/odbc/odbc.c 2008-06-25 22:47:06.000000000 +0200
+@@ -4564,6 +4564,9 @@
+ SQLLEN dummy_cb;
+ int nSybType;
+
++ TDS_INT converted_column_cur_size;
++ int extra_bytes = 0;
++
+ INIT_HSTMT;
+
+ tdsdump_log(TDS_DBG_FUNC, "SQLGetData(%p, %u, %d, %p, %d, %p)\n",
+@@ -4597,46 +4600,154 @@
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+ colinfo = resinfo->columns[icol - 1];
++ converted_column_cur_size = colinfo->column_cur_size;
+
+ if (colinfo->column_cur_size < 0) {
+ *pcbValue = SQL_NULL_DATA;
+ } else {
++ nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
++ if (fCType == SQL_C_DEFAULT)
++ fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
++ if (fCType == SQL_ARD_TYPE) {
++ if (icol > stmt->ard->header.sql_desc_count) {
++ odbc_errs_add(&stmt->errs, "07009", NULL);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
++ }
++ assert(fCType);
++
+ src = (TDS_CHAR *) colinfo->column_data;
+ if (is_variable_type(colinfo->column_type)) {
+- if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+- ODBC_RETURN(stmt, SQL_NO_DATA);
+-
++ int nread = 0;
++
+ /* 2003-8-29 check for an old bug -- freddy77 */
+ assert(colinfo->column_text_sqlgetdatapos >= 0);
+ if (is_blob_type(colinfo->column_type))
+ src = ((TDSBLOB *) src)->textvalue;
+- src += colinfo->column_text_sqlgetdatapos;
+- srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ if (fCType == SQL_C_CHAR) {
++ TDS_CHAR buf[3];
++ SQLLEN len;
++
++ switch (nSybType) {
++ case SYBLONGBINARY:
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case SYBIMAGE:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case TDS_CONVERT_BINARY:
++ if (colinfo->column_text_sqlgetdatapos % 2) {
++ nread = (colinfo->column_text_sqlgetdatapos - 1) / 2;
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ if (cbValueMax > 2) {
++ len = convert_tds2sql(context, nSybType, src + nread, 1, fCType, buf, sizeof(buf), NULL);
++ if (len < 2) {
++ if (len < 0)
++ odbc_convert_err_set(&stmt->errs, len);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ *(TDS_CHAR *) rgbValue = buf[1];
++ *((TDS_CHAR *) rgbValue + 1) = 0;
++
++ rgbValue++;
++ cbValueMax--;
++
++ extra_bytes = 1;
++ nread++;
++
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN_(stmt);
++ } else {
++ if (cbValueMax)
++ *(TDS_CHAR *) rgbValue = 0;
++ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
++ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
++ }
++ } else {
++ nread = colinfo->column_text_sqlgetdatapos / 2;
++
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++ }
++
++ src += nread;
++ srclen = colinfo->column_cur_size - nread;
++ converted_column_cur_size *= 2;
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ }
++ } else if (fCType == SQL_C_BINARY) {
++ switch (nSybType) {
++ case SYBCHAR:
++ case SYBVARCHAR:
++ case SYBTEXT:
++ case XSYBCHAR:
++ case XSYBVARCHAR:
++ nread = (src[0] == '0' && toupper(src[1]) == 'X')? 2 : 0;
++
++ while ((nread < colinfo->column_cur_size) && (src[nread] == ' ' || src[nread] == '\0'))
++ nread++;
++
++ nread += colinfo->column_text_sqlgetdatapos * 2;
++
++ if (nread && nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += nread;
++ srclen = colinfo->column_cur_size - nread;
++
++ if (converted_column_cur_size%2)
++ converted_column_cur_size = (converted_column_cur_size + 1) / 2;
++ else
++ converted_column_cur_size /= 2;
++
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
++ } else {
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
+ } else {
+ if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+ ODBC_RETURN(stmt, SQL_NO_DATA);
+
+ srclen = colinfo->column_cur_size;
+ }
+- nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
+- if (fCType == SQL_C_DEFAULT)
+- fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
+- if (fCType == SQL_ARD_TYPE) {
+- if (icol > stmt->ard->header.sql_desc_count) {
+- odbc_errs_add(&stmt->errs, "07009", NULL);
+- ODBC_RETURN(stmt, SQL_ERROR);
+- }
+- fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
+- }
+- assert(fCType);
++
+ *pcbValue = convert_tds2sql(context, nSybType, src, srclen, fCType, (TDS_CHAR *) rgbValue, cbValueMax, NULL);
+ if (*pcbValue < 0) {
+ odbc_convert_err_set(&stmt->errs, *pcbValue);
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+-
++
++ if (extra_bytes) {
++ colinfo->column_text_sqlgetdatapos += extra_bytes;
++ *pcbValue += extra_bytes;
++ }
++
+ if (is_variable_type(colinfo->column_type) && (fCType == SQL_C_CHAR || fCType == SQL_C_BINARY)) {
+ /* calc how many bytes was readed */
+ int readed = cbValueMax;
+@@ -4651,7 +4762,7 @@
+ if (colinfo->column_text_sqlgetdatapos == 0 && cbValueMax > 0)
+ ++colinfo->column_text_sqlgetdatapos;
+ /* not all readed ?? */
+- if (colinfo->column_text_sqlgetdatapos < colinfo->column_cur_size) {
++ if (colinfo->column_text_sqlgetdatapos < converted_column_cur_size) {
+ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
+ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
+ }
diff --git a/dev-db/freetds/files/SQLGetData.utf8.odbc.c.diff b/dev-db/freetds/files/SQLGetData.utf8.odbc.c.diff
new file mode 100644
index 0000000..91a8fca
--- /dev/null
+++ b/dev-db/freetds/files/SQLGetData.utf8.odbc.c.diff
@@ -0,0 +1,199 @@
+Index: src/odbc/odbc.c
+===================================================================
+RCS file: /cvsroot/freetds/freetds/src/odbc/odbc.c,v
+retrieving revision 1.481
+diff -u -r1.481 odbc.c
+--- src/odbc/odbc.c 5 Jun 2008 16:21:54 -0000 1.481
++++ src/odbc/odbc.c 12 Jun 2008 01:55:58 -0000
+@@ -4644,6 +4646,8 @@
+ SQLLEN dummy_cb;
+ int nSybType;
+
++ int extra_bytes = 0;
++
+ INIT_HSTMT;
+
+ tdsdump_log(TDS_DBG_FUNC, "SQLGetData(%p, %u, %d, %p, %d, %p)\n",
+@@ -4684,42 +4688,140 @@
+ if (colinfo->column_cur_size < 0) {
+ *pcbValue = SQL_NULL_DATA;
+ } else {
++ nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
++ if (fCType == SQL_C_DEFAULT)
++ fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
++ if (fCType == SQL_ARD_TYPE) {
++ if (icol > stmt->ard->header.sql_desc_count) {
++ odbc_errs_add(&stmt->errs, "07009", NULL);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
++ }
++ assert(fCType);
++
+ src = (TDS_CHAR *) colinfo->column_data;
+ if (is_variable_type(colinfo->column_type)) {
+- if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+- ODBC_RETURN(stmt, SQL_NO_DATA);
+-
++ int nread = 0;
++
+ /* 2003-8-29 check for an old bug -- freddy77 */
+ assert(colinfo->column_text_sqlgetdatapos >= 0);
+ if (is_blob_type(colinfo->column_type))
+ src = ((TDSBLOB *) src)->textvalue;
+- src += colinfo->column_text_sqlgetdatapos;
+- srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ if (fCType == SQL_C_CHAR && colinfo->column_text_sqlgetdatapos) {
++ TDS_CHAR buf[3];
++ SQLLEN len;
++
++ switch (nSybType) {
++ case SYBLONGBINARY:
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case SYBIMAGE:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case TDS_CONVERT_BINARY:
++ if (colinfo->column_text_sqlgetdatapos % 2) {
++ nread = (colinfo->column_text_sqlgetdatapos - 1) / 2;
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ if (cbValueMax > 2) {
++ len = convert_tds2sql(context, nSybType, src + nread, 1, fCType, buf, sizeof(buf), NULL);
++ if (len < 2) {
++ if (len < 0)
++ odbc_convert_err_set(&stmt->errs, len);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ *(TDS_CHAR *) rgbValue = buf[1];
++ *((TDS_CHAR *) rgbValue + 1) = 0;
++
++ rgbValue++;
++ cbValueMax--;
++
++ extra_bytes = 1;
++ nread++;
++
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN_(stmt);
++ } else {
++ if (cbValueMax)
++ *(TDS_CHAR *) rgbValue = 0;
++ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
++ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
++ }
++ } else {
++ nread = colinfo->column_text_sqlgetdatapos / 2;
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++ }
++
++ src += nread;
++ srclen = colinfo->column_cur_size - nread;
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ }
++ } else if (fCType == SQL_C_BINARY) {
++ switch (nSybType) {
++ case SYBCHAR:
++ case SYBVARCHAR:
++ case SYBTEXT:
++ case XSYBCHAR:
++ case XSYBVARCHAR:
++ nread = (src[0] == '0' && toupper(src[1]) == 'X')? 2 : 0;
++
++ while ((nread < colinfo->column_cur_size) && (src[nread] == ' ' || src[nread] == '\0'))
++ nread++;
++
++ nread += colinfo->column_text_sqlgetdatapos * 2;
++
++ if (nread && nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += nread;
++ srclen = colinfo->column_cur_size - nread;
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
++ } else {
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
+ } else {
+ if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+ ODBC_RETURN(stmt, SQL_NO_DATA);
+
+ srclen = colinfo->column_cur_size;
+ }
+- nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
+- if (fCType == SQL_C_DEFAULT)
+- fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
+- if (fCType == SQL_ARD_TYPE) {
+- if (icol > stmt->ard->header.sql_desc_count) {
+- odbc_errs_add(&stmt->errs, "07009", NULL);
+- ODBC_RETURN(stmt, SQL_ERROR);
+- }
+- fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
+- }
+- assert(fCType);
++
+ *pcbValue = convert_tds2sql(context, nSybType, src, srclen, fCType, (TDS_CHAR *) rgbValue, cbValueMax, NULL);
+ if (*pcbValue < 0) {
+ odbc_convert_err_set(&stmt->errs, *pcbValue);
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+-
++
++ if (extra_bytes) {
++ colinfo->column_text_sqlgetdatapos += extra_bytes;
++ *pcbValue += extra_bytes;
++ }
++
+ if (is_variable_type(colinfo->column_type) && (fCType == SQL_C_CHAR || fCType == SQL_C_BINARY)) {
+ /* calculate how many bytes were read */
+ int remaining = cbValueMax;
+Index: src/odbc/unittests/getdata.c
+===================================================================
+RCS file: /cvsroot/freetds/freetds/src/odbc/unittests/getdata.c,v
+retrieving revision 1.6
+diff -u -r1.6 getdata.c
+--- src/odbc/unittests/getdata.c 29 Jan 2008 14:30:48 -0000 1.6
++++ src/odbc/unittests/getdata.c 12 Jun 2008 01:55:58 -0000
+@@ -11,7 +11,14 @@
+ {
+ memset(odbc_err, 0, sizeof(odbc_err));
+ memset(odbc_sqlstate, 0, sizeof(odbc_sqlstate));
+- if (!SQL_SUCCEEDED(SQLGetDiagRec(SQL_HANDLE_STMT, Statement, 1, (SQLCHAR *) odbc_sqlstate, NULL, (SQLCHAR *) odbc_err, sizeof(odbc_err), NULL))) {
++ if (!SQL_SUCCEEDED(SQLGetDiagRec(SQL_HANDLE_STMT
++ , Statement
++ , 1
++ , (SQLCHAR *) odbc_sqlstate
++ , NULL
++ , (SQLCHAR *) odbc_err
++ , sizeof(odbc_err)
++ , NULL))) {
+ printf("SQLGetDiagRec should not fail\n");
+ exit(1);
+ }
diff --git a/dev-db/freetds/files/SQLGetData_cvs.patch b/dev-db/freetds/files/SQLGetData_cvs.patch
new file mode 100644
index 0000000..5631c22
--- /dev/null
+++ b/dev-db/freetds/files/SQLGetData_cvs.patch
@@ -0,0 +1,67 @@
+diff -dPNur freetds-0.82-ds1/src/odbc/odbc.c freetds-0.82-ds2/src/odbc/odbc.c
+--- freetds-0.82-ds1/src/odbc/odbc.c 2008-07-01 19:19:14.000000000 +0200
++++ freetds-0.82-ds2/src/odbc/odbc.c 2008-07-01 19:19:25.000000000 +0200
+@@ -4564,6 +4564,7 @@
+ SQLLEN dummy_cb;
+ int nSybType;
+
++ TDS_INT converted_column_cur_size;
+ int extra_bytes = 0;
+
+ INIT_HSTMT;
+@@ -4599,6 +4600,7 @@
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+ colinfo = resinfo->columns[icol - 1];
++ converted_column_cur_size = colinfo->column_cur_size;
+
+ if (colinfo->column_cur_size < 0) {
+ *pcbValue = SQL_NULL_DATA;
+@@ -4624,7 +4626,7 @@
+ if (is_blob_type(colinfo->column_type))
+ src = ((TDSBLOB *) src)->textvalue;
+
+- if (fCType == SQL_C_CHAR && colinfo->column_text_sqlgetdatapos) {
++ if (fCType == SQL_C_CHAR) {
+ TDS_CHAR buf[3];
+ SQLLEN len;
+
+@@ -4667,12 +4669,15 @@
+ }
+ } else {
+ nread = colinfo->column_text_sqlgetdatapos / 2;
+- if (nread >= colinfo->column_cur_size)
++
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && nread >= colinfo->column_cur_size)
+ ODBC_RETURN(stmt, SQL_NO_DATA);
+ }
+
+ src += nread;
+ srclen = colinfo->column_cur_size - nread;
++ converted_column_cur_size *= 2;
+ break;
+ default:
+ if (colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+@@ -4701,6 +4706,12 @@
+
+ src += nread;
+ srclen = colinfo->column_cur_size - nread;
++
++ if (converted_column_cur_size%2)
++ converted_column_cur_size = (converted_column_cur_size + 1) / 2;
++ else
++ converted_column_cur_size /= 2;
++
+ break;
+ default:
+ if (colinfo->column_text_sqlgetdatapos > 0
+@@ -4751,7 +4762,7 @@
+ if (colinfo->column_text_sqlgetdatapos == 0 && cbValueMax > 0)
+ ++colinfo->column_text_sqlgetdatapos;
+ /* not all readed ?? */
+- if (colinfo->column_text_sqlgetdatapos < colinfo->column_cur_size) {
++ if (colinfo->column_text_sqlgetdatapos < converted_column_cur_size) {
+ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
+ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
+ }
diff --git a/dev-db/freetds/files/freetds-0.82-odbc-csa2.patch b/dev-db/freetds/files/freetds-0.82-odbc-csa2.patch
new file mode 100644
index 0000000..7487c7e
--- /dev/null
+++ b/dev-db/freetds/files/freetds-0.82-odbc-csa2.patch
@@ -0,0 +1,484 @@
+diff -dPNur freetds-0.82/include/tds.h freetds-0.82-new/include/tds.h
+--- freetds-0.82/include/tds.h 2007-12-27 14:45:22.000000000 +0100
++++ freetds-0.82-new/include/tds.h 2008-07-02 22:32:56.000000000 +0200
+@@ -1005,6 +1005,7 @@
+ TDS_INT *column_lenbind;
+ TDS_INT column_textpos;
+ TDS_INT column_text_sqlgetdatapos;
++ TDS_CHAR column_text_sqlputdatainfo;
+
+ BCPCOLDATA *bcp_column_data;
+ /**
+diff -dPNur freetds-0.82/src/odbc/odbc.c freetds-0.82-new/src/odbc/odbc.c
+--- freetds-0.82/src/odbc/odbc.c 2008-05-06 04:57:26.000000000 +0200
++++ freetds-0.82-new/src/odbc/odbc.c 2008-07-02 22:32:56.000000000 +0200
+@@ -4564,6 +4564,9 @@
+ SQLLEN dummy_cb;
+ int nSybType;
+
++ TDS_INT converted_column_cur_size;
++ int extra_bytes = 0;
++
+ INIT_HSTMT;
+
+ tdsdump_log(TDS_DBG_FUNC, "SQLGetData(%p, %u, %d, %p, %d, %p)\n",
+@@ -4597,46 +4600,120 @@
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+ colinfo = resinfo->columns[icol - 1];
++ converted_column_cur_size = colinfo->column_cur_size;
+
+ if (colinfo->column_cur_size < 0) {
+ *pcbValue = SQL_NULL_DATA;
+ } else {
++ nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
++ if (fCType == SQL_C_DEFAULT)
++ fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
++ if (fCType == SQL_ARD_TYPE) {
++ if (icol > stmt->ard->header.sql_desc_count) {
++ odbc_errs_add(&stmt->errs, "07009", NULL);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
++ }
++ assert(fCType);
++
+ src = (TDS_CHAR *) colinfo->column_data;
+ if (is_variable_type(colinfo->column_type)) {
+- if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+- ODBC_RETURN(stmt, SQL_NO_DATA);
+-
++ int nread = 0;
++
+ /* 2003-8-29 check for an old bug -- freddy77 */
+ assert(colinfo->column_text_sqlgetdatapos >= 0);
+ if (is_blob_type(colinfo->column_type))
+ src = ((TDSBLOB *) src)->textvalue;
+- src += colinfo->column_text_sqlgetdatapos;
+- srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ if (fCType == SQL_C_CHAR) {
++ TDS_CHAR buf[3];
++ SQLLEN len;
++
++ switch (nSybType) {
++ case SYBLONGBINARY:
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case SYBIMAGE:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case TDS_CONVERT_BINARY:
++ if (colinfo->column_text_sqlgetdatapos % 2) {
++ nread = (colinfo->column_text_sqlgetdatapos - 1) / 2;
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ if (cbValueMax > 2) {
++ len = convert_tds2sql(context, nSybType, src + nread, 1, fCType, buf, sizeof(buf), NULL);
++ if (len < 2) {
++ if (len < 0)
++ odbc_convert_err_set(&stmt->errs, len);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ *(TDS_CHAR *) rgbValue = buf[1];
++ *((TDS_CHAR *) rgbValue + 1) = 0;
++
++ rgbValue++;
++ cbValueMax--;
++
++ extra_bytes = 1;
++ nread++;
++
++ if (nread >= colinfo->column_cur_size)
++ ODBC_RETURN_(stmt);
++ } else {
++ if (cbValueMax)
++ *(TDS_CHAR *) rgbValue = 0;
++ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
++ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
++ }
++ } else {
++ nread = colinfo->column_text_sqlgetdatapos / 2;
++
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && nread >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++ }
++
++ src += nread;
++ srclen = colinfo->column_cur_size - nread;
++ converted_column_cur_size *= 2;
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
++ } else {
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
+ } else {
+ if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+ ODBC_RETURN(stmt, SQL_NO_DATA);
+
+ srclen = colinfo->column_cur_size;
+ }
+- nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
+- if (fCType == SQL_C_DEFAULT)
+- fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
+- if (fCType == SQL_ARD_TYPE) {
+- if (icol > stmt->ard->header.sql_desc_count) {
+- odbc_errs_add(&stmt->errs, "07009", NULL);
+- ODBC_RETURN(stmt, SQL_ERROR);
+- }
+- fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
+- }
+- assert(fCType);
++
+ *pcbValue = convert_tds2sql(context, nSybType, src, srclen, fCType, (TDS_CHAR *) rgbValue, cbValueMax, NULL);
+ if (*pcbValue < 0) {
+ odbc_convert_err_set(&stmt->errs, *pcbValue);
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+-
++
++ if (extra_bytes) {
++ colinfo->column_text_sqlgetdatapos += extra_bytes;
++ *pcbValue += extra_bytes;
++ }
++
+ if (is_variable_type(colinfo->column_type) && (fCType == SQL_C_CHAR || fCType == SQL_C_BINARY)) {
+ /* calc how many bytes was readed */
+ int readed = cbValueMax;
+@@ -4651,7 +4728,7 @@
+ if (colinfo->column_text_sqlgetdatapos == 0 && cbValueMax > 0)
+ ++colinfo->column_text_sqlgetdatapos;
+ /* not all readed ?? */
+- if (colinfo->column_text_sqlgetdatapos < colinfo->column_cur_size) {
++ if (colinfo->column_text_sqlgetdatapos < converted_column_cur_size) {
+ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
+ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
+ }
+diff -dPNur freetds-0.82/src/odbc/prepare_query.c freetds-0.82-new/src/odbc/prepare_query.c
+--- freetds-0.82/src/odbc/prepare_query.c 2007-04-18 16:29:24.000000000 +0200
++++ freetds-0.82-new/src/odbc/prepare_query.c 2008-07-02 22:32:56.000000000 +0200
+@@ -275,21 +275,110 @@
+ /* copy to destination */
+ if (blob) {
+ TDS_CHAR *p;
++ int dest_type, src_type, sql_src_type, res;
++ CONV_RESULT ores;
++ TDS_DBC * dbc = stmt->dbc;
++ void *free_ptr = NULL;
++ int start = 0;
++ SQLPOINTER extradata = NULL;
++ SQLLEN extralen = 0;
++
++
++ dest_type = odbc_sql_to_server_type(dbc->tds_socket, drec_ipd->sql_desc_concise_type);
++ if (dest_type == TDS_FAIL)
++ return SQL_ERROR;
++
++ /* get C type */
++ sql_src_type = drec_apd->sql_desc_concise_type;
++ if (sql_src_type == SQL_C_DEFAULT)
++ sql_src_type = odbc_sql_to_c_type_default(drec_ipd->sql_desc_concise_type);
++
++ /* test source type */
++ /* TODO test intervals */
++ src_type = odbc_c_to_server_type(sql_src_type);
++ if (src_type == TDS_FAIL)
++ return SQL_ERROR;
++
++ if (sql_src_type == SQL_C_CHAR) {
++ switch (tds_get_conversion_type(curcol->column_type, curcol->column_size)) {
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case SYBLONGBINARY:
++ case SYBIMAGE:
++ if (!*((char*)DataPtr+len-1))
++ --len;
++
++ if (!len)
++ return SQL_SUCCESS;
++
++ if (curcol->column_cur_size > 0
++ && curcol->column_text_sqlputdatainfo) {
++ TDS_CHAR data[2];
++ data[0] = curcol->column_text_sqlputdatainfo;
++ data[1] = *(char*)DataPtr;
++
++ res = tds_convert(dbc->env->tds_ctx, src_type, data, 2, dest_type, &ores);
++ if (res < 0)
++ return SQL_ERROR;
++
++ extradata = ores.ib;
++ extralen = res;
++
++ start = 1;
++ --len;
++ }
++
++ if (len&1) {
++ --len;
++ curcol->column_text_sqlputdatainfo = *((char*)DataPtr+len);
++ }
++
++ res = tds_convert(dbc->env->tds_ctx, src_type, DataPtr+start, len, dest_type, &ores);
++ if (res < 0) {
++ if (extradata)
++ free(extradata);
++
++ return SQL_ERROR;
++ }
++
++ DataPtr = free_ptr = ores.ib;
++ len = res;
++ break;
++ }
++ }
+
+ if (blob->textvalue)
+- p = (TDS_CHAR *) realloc(blob->textvalue, len + curcol->column_cur_size);
++ p = (TDS_CHAR *) realloc(blob->textvalue, len + extralen + curcol->column_cur_size);
+ else {
+ assert(curcol->column_cur_size == 0);
+- p = (TDS_CHAR *) malloc(len);
++ p = (TDS_CHAR *) malloc(len + extralen);
+ }
+- if (!p)
++ if (!p) {
++ if (free_ptr)
++ free(free_ptr);
++ if (extradata)
++ free(extradata);
+ return SQL_ERROR;
++ }
+ blob->textvalue = p;
++ if (extralen) {
++ memcpy(blob->textvalue + curcol->column_cur_size, extradata, extralen);
++ curcol->column_cur_size += extralen;
++ }
+ memcpy(blob->textvalue + curcol->column_cur_size, DataPtr, len);
++
++ if (extradata)
++ free(extradata);
++ if (free_ptr)
++ free(free_ptr);
+ } else {
+ memcpy(curcol->column_data + curcol->column_cur_size, DataPtr, len);
+ }
++
+ curcol->column_cur_size += len;
++
+ if (blob && curcol->column_cur_size > curcol->column_size)
+ curcol->column_size = curcol->column_cur_size;
+
+diff -dPNur freetds-0.82/src/odbc/unittests/blob1.c freetds-0.82-new/src/odbc/unittests/blob1.c
+--- freetds-0.82/src/odbc/unittests/blob1.c 2008-01-12 01:21:39.000000000 +0100
++++ freetds-0.82-new/src/odbc/unittests/blob1.c 2008-07-02 22:32:56.000000000 +0200
+@@ -47,6 +47,16 @@
+ buf[n] = 'a' + ((start+n) * step % ('z' - 'a' + 1));
+ }
+
++static void
++fill_hex(char *buf, size_t len, unsigned int start, unsigned int step)
++{
++ size_t n;
++
++ for (n = 0; n < len; ++n)
++ sprintf(buf + 2*n, "%2x", (unsigned int)('a' + ((start+n) * step % ('z' - 'a' + 1))));
++}
++
++
+ static int
+ check_chars(const char *buf, size_t len, unsigned int start, unsigned int step)
+ {
+@@ -60,6 +70,21 @@
+ }
+
+ static int
++check_hex(const char *buf, size_t len, unsigned int start, unsigned int step)
++{
++ size_t n;
++ char symbol[3];
++
++ for (n = 0; n < len; ++n) {
++ sprintf(symbol, "%2x", (unsigned int)('a' + ((start+n) / 2 * step % ('z' - 'a' + 1))));
++ if (buf[n] != symbol[(start+n) % 2])
++ return 0;
++ }
++
++ return 1;
++}
++
++static int
+ readBlob(SQLHSTMT * stmth, SQLUSMALLINT pos)
+ {
+ SQLRETURN rcode;
+@@ -93,6 +118,43 @@
+ return rcode;
+ }
+
++static int
++readBlobAsChar(SQLHSTMT * stmth, SQLUSMALLINT pos, int step)
++{
++ SQLRETURN rcode = SQL_SUCCESS_WITH_INFO;
++ char buf[8192];
++ SQLLEN len, total = 0;
++ int i = 0;
++ int check;
++ int bufsize;
++
++ if (step%2) bufsize = sizeof(buf) - 1;
++ else bufsize = sizeof(buf);
++
++ printf(">> readBlobAsChar field %d\n", pos);
++ while (rcode == SQL_SUCCESS_WITH_INFO) {
++ i++;
++ rcode = SQLGetData(stmth, pos, SQL_C_CHAR, (SQLPOINTER) buf, (SQLINTEGER) bufsize, &len);
++ if (!SQL_SUCCEEDED(rcode) || len <= 0)
++ break;
++ if (len > (SQLLEN) bufsize)
++ len = (SQLLEN) bufsize - 1;
++ printf(">> step %d: %d bytes readed\n", i, (int) len);
++
++ check = check_hex(buf, len, 2*987 + total, 25);
++ if (!check) {
++ fprintf(stderr, "Wrong buffer content\n");
++ failed = 1;
++ }
++ total += len;
++ }
++ printf(">> total bytes read = %d \n", (int) total);
++ if (total != 20000)
++ failed = 1;
++ return rcode;
++}
++
++
+ int
+ main(int argc, char **argv)
+ {
+@@ -106,12 +168,14 @@
+ SQLLEN vind1;
+ char buf2[NBYTES];
+ SQLLEN vind2;
++ char buf3[NBYTES*2 + 1];
++ SQLLEN vind3;
+ int cnt = 2;
+
+ use_odbc_version3 = 1;
+ Connect();
+
+- Command(Statement, "CREATE TABLE #tt ( k INT, t TEXT, b IMAGE, v INT )");
++ Command(Statement, "CREATE TABLE #tt ( k INT, t TEXT, b1 IMAGE, b2 IMAGE, v INT )");
+
+ /* Insert rows ... */
+
+@@ -121,7 +185,7 @@
+ rcode = SQLAllocHandle(SQL_HANDLE_STMT, Connection, &m_hstmt);
+ CHECK_RCODE(SQL_HANDLE_DBC, Connection, "SQLAllocHandle StmtH");
+
+- rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "INSERT INTO #tt VALUES ( ?, ?, ?, ? )", SQL_NTS);
++ rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "INSERT INTO #tt VALUES ( ?, ?, ?, ?, ? )", SQL_NTS);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPrepare");
+
+ SQLBindParameter(m_hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &key, 0, &vind0);
+@@ -133,9 +197,12 @@
+ SQLBindParameter(m_hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_LONGVARBINARY, 0x10000000, 0, buf2, 0, &vind2);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindParameter 3");
+
+- SQLBindParameter(m_hstmt, 4, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &key, 0, &vind0);
++ SQLBindParameter(m_hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARBINARY, 0x10000000, 0, buf3, 0, &vind3);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindParameter 4");
+
++ SQLBindParameter(m_hstmt, 5, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &key, 0, &vind0);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindParameter 5");
++
+ key = i;
+ vind0 = 0;
+
+@@ -144,6 +211,10 @@
+
+ fill_chars(buf2, NBYTES, 987, 25);
+ vind2 = SQL_LEN_DATA_AT_EXEC(NBYTES);
++
++ memset(buf3, 0, sizeof(buf3));
++ vind3 = SQL_LEN_DATA_AT_EXEC(2*NBYTES+1);
++
+
+ printf(">> insert... %d\n", i);
+ rcode = SQLExecute(m_hstmt);
+@@ -155,10 +226,25 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLParamData StmtH");
+ printf(">> SQLParamData: ptr = %p rcode = %d\n", (void *) p, rcode);
+ if (rcode == SQL_NEED_DATA) {
+- SQLRETURN rcode = SQLPutData(m_hstmt, p, NBYTES);
++ SQLRETURN rcode;
++ if (p == buf3) {
++ fill_hex(buf3, NBYTES, 987, 25);
++
++ rcode = SQLPutData(m_hstmt, p, NBYTES - (i&1));
+
+- CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
+- printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
++ printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES - (i&1));
++
++ rcode = SQLPutData(m_hstmt, p + NBYTES - (i&1), NBYTES + (i&1));
++
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
++ printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES + (i&1));
++ } else {
++ rcode = SQLPutData(m_hstmt, p, NBYTES);
++
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
++ printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES);
++ }
+ }
+ }
+
+@@ -182,7 +268,7 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLSetStmtAttr SQL_ATTR_CURSOR_SENSITIVITY");
+ }
+
+- rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "SELECT t, b, v FROM #tt WHERE k = ?", SQL_NTS);
++ rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "SELECT t, b1, b2, v FROM #tt WHERE k = ?", SQL_NTS);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPrepare");
+
+ SQLBindParameter(m_hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &i, 0, &vind0);
+@@ -192,7 +278,9 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 2");
+ SQLBindCol(m_hstmt, 2, SQL_C_BINARY, NULL, 0, &vind2);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 3");
+- SQLBindCol(m_hstmt, 3, SQL_C_LONG, &key, 0, &vind0);
++ SQLBindCol(m_hstmt, 3, SQL_C_BINARY, NULL, 0, &vind3);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 4");
++ SQLBindCol(m_hstmt, 4, SQL_C_LONG, &key, 0, &vind0);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 1");
+
+ vind0 = 0;
+@@ -210,6 +298,8 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "readBlob 1");
+ rcode = readBlob(m_hstmt, 2);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "readBlob 2");
++ rcode = readBlobAsChar(m_hstmt, 3, i);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "readBlob 3 as SQL_C_CHAR");
+
+ rcode = SQLCloseCursor(m_hstmt);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLCloseCursor StmtH");
diff --git a/dev-db/freetds/files/freetds-20080603-odbc-csa2.patch b/dev-db/freetds/files/freetds-20080603-odbc-csa2.patch
new file mode 100644
index 0000000..1615ddd
--- /dev/null
+++ b/dev-db/freetds/files/freetds-20080603-odbc-csa2.patch
@@ -0,0 +1,404 @@
+diff -dPNur freetds/include/tds.h freetds-ds/include/tds.h
+--- freetds/include/tds.h 2008-06-18 11:06:26.000000000 +0200
++++ freetds-ds/include/tds.h 2008-07-02 22:10:03.000000000 +0200
+@@ -1009,6 +1009,7 @@
+ TDS_INT *column_lenbind;
+ TDS_INT column_textpos;
+ TDS_INT column_text_sqlgetdatapos;
++ TDS_CHAR column_text_sqlputdatainfo;
+
+ BCPCOLDATA *bcp_column_data;
+ /**
+diff -dPNur freetds/src/odbc/odbc.c freetds-ds/src/odbc/odbc.c
+--- freetds/src/odbc/odbc.c 2008-06-18 11:06:26.000000000 +0200
++++ freetds-ds/src/odbc/odbc.c 2008-07-02 22:10:03.000000000 +0200
+@@ -4652,6 +4652,7 @@
+ SQLLEN dummy_cb;
+ int nSybType;
+
++ TDS_INT converted_column_cur_size;
+ int extra_bytes = 0;
+
+ INIT_HSTMT;
+@@ -4690,6 +4691,7 @@
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+ colinfo = tds->current_results->columns[icol - 1];
++ converted_column_cur_size = colinfo->column_cur_size;
+
+ if (colinfo->column_cur_size < 0) {
+ *pcbValue = SQL_NULL_DATA;
+@@ -4715,7 +4717,7 @@
+ if (is_blob_type(colinfo->column_type))
+ src = ((TDSBLOB *) src)->textvalue;
+
+- if (fCType == SQL_C_CHAR && colinfo->column_text_sqlgetdatapos) {
++ if (fCType == SQL_C_CHAR) {
+ TDS_CHAR buf[3];
+ SQLLEN len;
+
+@@ -4758,40 +4760,15 @@
+ }
+ } else {
+ nread = colinfo->column_text_sqlgetdatapos / 2;
+- if (nread >= colinfo->column_cur_size)
++
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && nread >= colinfo->column_cur_size)
+ ODBC_RETURN(stmt, SQL_NO_DATA);
+ }
+
+ src += nread;
+ srclen = colinfo->column_cur_size - nread;
+- break;
+- default:
+- if (colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+- ODBC_RETURN(stmt, SQL_NO_DATA);
+-
+- src += colinfo->column_text_sqlgetdatapos;
+- srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
+-
+- }
+- } else if (fCType == SQL_C_BINARY) {
+- switch (nSybType) {
+- case SYBCHAR:
+- case SYBVARCHAR:
+- case SYBTEXT:
+- case XSYBCHAR:
+- case XSYBVARCHAR:
+- nread = (src[0] == '0' && toupper(src[1]) == 'X')? 2 : 0;
+-
+- while ((nread < colinfo->column_cur_size) && (src[nread] == ' ' || src[nread] == '\0'))
+- nread++;
+-
+- nread += colinfo->column_text_sqlgetdatapos * 2;
+-
+- if (nread && nread >= colinfo->column_cur_size)
+- ODBC_RETURN(stmt, SQL_NO_DATA);
+-
+- src += nread;
+- srclen = colinfo->column_cur_size - nread;
++ converted_column_cur_size *= 2;
+ break;
+ default:
+ if (colinfo->column_text_sqlgetdatapos > 0
+@@ -4842,7 +4819,7 @@
+ if (colinfo->column_text_sqlgetdatapos == 0 && cbValueMax > 0)
+ ++colinfo->column_text_sqlgetdatapos;
+
+- if (colinfo->column_text_sqlgetdatapos < colinfo->column_cur_size) { /* not all read ?? */
++ if (colinfo->column_text_sqlgetdatapos < converted_column_cur_size) { /* not all read ?? */
+ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
+ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
+ }
+diff -dPNur freetds/src/odbc/prepare_query.c freetds-ds/src/odbc/prepare_query.c
+--- freetds/src/odbc/prepare_query.c 2007-04-18 16:29:24.000000000 +0200
++++ freetds-ds/src/odbc/prepare_query.c 2008-07-02 22:10:03.000000000 +0200
+@@ -275,21 +275,110 @@
+ /* copy to destination */
+ if (blob) {
+ TDS_CHAR *p;
++ int dest_type, src_type, sql_src_type, res;
++ CONV_RESULT ores;
++ TDS_DBC * dbc = stmt->dbc;
++ void *free_ptr = NULL;
++ int start = 0;
++ SQLPOINTER extradata = NULL;
++ SQLLEN extralen = 0;
++
++
++ dest_type = odbc_sql_to_server_type(dbc->tds_socket, drec_ipd->sql_desc_concise_type);
++ if (dest_type == TDS_FAIL)
++ return SQL_ERROR;
++
++ /* get C type */
++ sql_src_type = drec_apd->sql_desc_concise_type;
++ if (sql_src_type == SQL_C_DEFAULT)
++ sql_src_type = odbc_sql_to_c_type_default(drec_ipd->sql_desc_concise_type);
++
++ /* test source type */
++ /* TODO test intervals */
++ src_type = odbc_c_to_server_type(sql_src_type);
++ if (src_type == TDS_FAIL)
++ return SQL_ERROR;
++
++ if (sql_src_type == SQL_C_CHAR) {
++ switch (tds_get_conversion_type(curcol->column_type, curcol->column_size)) {
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case SYBLONGBINARY:
++ case SYBIMAGE:
++ if (!*((char*)DataPtr+len-1))
++ --len;
++
++ if (!len)
++ return SQL_SUCCESS;
++
++ if (curcol->column_cur_size > 0
++ && curcol->column_text_sqlputdatainfo) {
++ TDS_CHAR data[2];
++ data[0] = curcol->column_text_sqlputdatainfo;
++ data[1] = *(char*)DataPtr;
++
++ res = tds_convert(dbc->env->tds_ctx, src_type, data, 2, dest_type, &ores);
++ if (res < 0)
++ return SQL_ERROR;
++
++ extradata = ores.ib;
++ extralen = res;
++
++ start = 1;
++ --len;
++ }
++
++ if (len&1) {
++ --len;
++ curcol->column_text_sqlputdatainfo = *((char*)DataPtr+len);
++ }
++
++ res = tds_convert(dbc->env->tds_ctx, src_type, DataPtr+start, len, dest_type, &ores);
++ if (res < 0) {
++ if (extradata)
++ free(extradata);
++
++ return SQL_ERROR;
++ }
++
++ DataPtr = free_ptr = ores.ib;
++ len = res;
++ break;
++ }
++ }
+
+ if (blob->textvalue)
+- p = (TDS_CHAR *) realloc(blob->textvalue, len + curcol->column_cur_size);
++ p = (TDS_CHAR *) realloc(blob->textvalue, len + extralen + curcol->column_cur_size);
+ else {
+ assert(curcol->column_cur_size == 0);
+- p = (TDS_CHAR *) malloc(len);
++ p = (TDS_CHAR *) malloc(len + extralen);
+ }
+- if (!p)
++ if (!p) {
++ if (free_ptr)
++ free(free_ptr);
++ if (extradata)
++ free(extradata);
+ return SQL_ERROR;
++ }
+ blob->textvalue = p;
++ if (extralen) {
++ memcpy(blob->textvalue + curcol->column_cur_size, extradata, extralen);
++ curcol->column_cur_size += extralen;
++ }
+ memcpy(blob->textvalue + curcol->column_cur_size, DataPtr, len);
++
++ if (extradata)
++ free(extradata);
++ if (free_ptr)
++ free(free_ptr);
+ } else {
+ memcpy(curcol->column_data + curcol->column_cur_size, DataPtr, len);
+ }
++
+ curcol->column_cur_size += len;
++
+ if (blob && curcol->column_cur_size > curcol->column_size)
+ curcol->column_size = curcol->column_cur_size;
+
+diff -dPNur freetds/src/odbc/unittests/blob1.c freetds-ds/src/odbc/unittests/blob1.c
+--- freetds/src/odbc/unittests/blob1.c 2008-01-12 01:14:11.000000000 +0100
++++ freetds-ds/src/odbc/unittests/blob1.c 2008-07-02 22:09:28.000000000 +0200
+@@ -47,6 +47,16 @@
+ buf[n] = 'a' + ((start+n) * step % ('z' - 'a' + 1));
+ }
+
++static void
++fill_hex(char *buf, size_t len, unsigned int start, unsigned int step)
++{
++ size_t n;
++
++ for (n = 0; n < len; ++n)
++ sprintf(buf + 2*n, "%2x", (unsigned int)('a' + ((start+n) * step % ('z' - 'a' + 1))));
++}
++
++
+ static int
+ check_chars(const char *buf, size_t len, unsigned int start, unsigned int step)
+ {
+@@ -60,6 +70,21 @@
+ }
+
+ static int
++check_hex(const char *buf, size_t len, unsigned int start, unsigned int step)
++{
++ size_t n;
++ char symbol[3];
++
++ for (n = 0; n < len; ++n) {
++ sprintf(symbol, "%2x", (unsigned int)('a' + ((start+n) / 2 * step % ('z' - 'a' + 1))));
++ if (buf[n] != symbol[(start+n) % 2])
++ return 0;
++ }
++
++ return 1;
++}
++
++static int
+ readBlob(SQLHSTMT * stmth, SQLUSMALLINT pos)
+ {
+ SQLRETURN rcode;
+@@ -93,6 +118,43 @@
+ return rcode;
+ }
+
++static int
++readBlobAsChar(SQLHSTMT * stmth, SQLUSMALLINT pos, int step)
++{
++ SQLRETURN rcode = SQL_SUCCESS_WITH_INFO;
++ char buf[8192];
++ SQLLEN len, total = 0;
++ int i = 0;
++ int check;
++ int bufsize;
++
++ if (step%2) bufsize = sizeof(buf) - 1;
++ else bufsize = sizeof(buf);
++
++ printf(">> readBlobAsChar field %d\n", pos);
++ while (rcode == SQL_SUCCESS_WITH_INFO) {
++ i++;
++ rcode = SQLGetData(stmth, pos, SQL_C_CHAR, (SQLPOINTER) buf, (SQLINTEGER) bufsize, &len);
++ if (!SQL_SUCCEEDED(rcode) || len <= 0)
++ break;
++ if (len > (SQLLEN) bufsize)
++ len = (SQLLEN) bufsize - 1;
++ printf(">> step %d: %d bytes readed\n", i, (int) len);
++
++ check = check_hex(buf, len, 2*987 + total, 25);
++ if (!check) {
++ fprintf(stderr, "Wrong buffer content\n");
++ failed = 1;
++ }
++ total += len;
++ }
++ printf(">> total bytes read = %d \n", (int) total);
++ if (total != 20000)
++ failed = 1;
++ return rcode;
++}
++
++
+ int
+ main(int argc, char **argv)
+ {
+@@ -106,12 +168,14 @@
+ SQLLEN vind1;
+ char buf2[NBYTES];
+ SQLLEN vind2;
++ char buf3[NBYTES*2 + 1];
++ SQLLEN vind3;
+ int cnt = 2;
+
+ use_odbc_version3 = 1;
+ Connect();
+
+- Command(Statement, "CREATE TABLE #tt ( k INT, t TEXT, b IMAGE, v INT )");
++ Command(Statement, "CREATE TABLE #tt ( k INT, t TEXT, b1 IMAGE, b2 IMAGE, v INT )");
+
+ /* Insert rows ... */
+
+@@ -121,7 +185,7 @@
+ rcode = SQLAllocHandle(SQL_HANDLE_STMT, Connection, &m_hstmt);
+ CHECK_RCODE(SQL_HANDLE_DBC, Connection, "SQLAllocHandle StmtH");
+
+- rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "INSERT INTO #tt VALUES ( ?, ?, ?, ? )", SQL_NTS);
++ rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "INSERT INTO #tt VALUES ( ?, ?, ?, ?, ? )", SQL_NTS);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPrepare");
+
+ SQLBindParameter(m_hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &key, 0, &vind0);
+@@ -133,9 +197,12 @@
+ SQLBindParameter(m_hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_LONGVARBINARY, 0x10000000, 0, buf2, 0, &vind2);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindParameter 3");
+
+- SQLBindParameter(m_hstmt, 4, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &key, 0, &vind0);
++ SQLBindParameter(m_hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARBINARY, 0x10000000, 0, buf3, 0, &vind3);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindParameter 4");
+
++ SQLBindParameter(m_hstmt, 5, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &key, 0, &vind0);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindParameter 5");
++
+ key = i;
+ vind0 = 0;
+
+@@ -144,6 +211,10 @@
+
+ fill_chars(buf2, NBYTES, 987, 25);
+ vind2 = SQL_LEN_DATA_AT_EXEC(NBYTES);
++
++ memset(buf3, 0, sizeof(buf3));
++ vind3 = SQL_LEN_DATA_AT_EXEC(2*NBYTES+1);
++
+
+ printf(">> insert... %d\n", i);
+ rcode = SQLExecute(m_hstmt);
+@@ -155,10 +226,25 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLParamData StmtH");
+ printf(">> SQLParamData: ptr = %p rcode = %d\n", (void *) p, rcode);
+ if (rcode == SQL_NEED_DATA) {
+- SQLRETURN rcode = SQLPutData(m_hstmt, p, NBYTES);
++ SQLRETURN rcode;
++ if (p == buf3) {
++ fill_hex(buf3, NBYTES, 987, 25);
++
++ rcode = SQLPutData(m_hstmt, p, NBYTES - (i&1));
+
+- CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
+- printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
++ printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES - (i&1));
++
++ rcode = SQLPutData(m_hstmt, p + NBYTES - (i&1), NBYTES + (i&1));
++
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
++ printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES + (i&1));
++ } else {
++ rcode = SQLPutData(m_hstmt, p, NBYTES);
++
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPutData StmtH");
++ printf(">> param %p: total bytes written = %d\n", (void *) p, NBYTES);
++ }
+ }
+ }
+
+@@ -182,7 +268,7 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLSetStmtAttr SQL_ATTR_CURSOR_SENSITIVITY");
+ }
+
+- rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "SELECT t, b, v FROM #tt WHERE k = ?", SQL_NTS);
++ rcode = SQLPrepare(m_hstmt, (SQLCHAR *) "SELECT t, b1, b2, v FROM #tt WHERE k = ?", SQL_NTS);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLPrepare");
+
+ SQLBindParameter(m_hstmt, 1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &i, 0, &vind0);
+@@ -192,7 +278,9 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 2");
+ SQLBindCol(m_hstmt, 2, SQL_C_BINARY, NULL, 0, &vind2);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 3");
+- SQLBindCol(m_hstmt, 3, SQL_C_LONG, &key, 0, &vind0);
++ SQLBindCol(m_hstmt, 3, SQL_C_BINARY, NULL, 0, &vind3);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 4");
++ SQLBindCol(m_hstmt, 4, SQL_C_LONG, &key, 0, &vind0);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLBindCol 1");
+
+ vind0 = 0;
+@@ -210,6 +298,8 @@
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "readBlob 1");
+ rcode = readBlob(m_hstmt, 2);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "readBlob 2");
++ rcode = readBlobAsChar(m_hstmt, 3, i);
++ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "readBlob 3 as SQL_C_CHAR");
+
+ rcode = SQLCloseCursor(m_hstmt);
+ CHECK_RCODE(SQL_HANDLE_STMT, m_hstmt, "SQLCloseCursor StmtH");
diff --git a/dev-db/freetds/files/freetds-ds-connect_timeout.patch b/dev-db/freetds/files/freetds-ds-connect_timeout.patch
new file mode 100644
index 0000000..013764e
--- /dev/null
+++ b/dev-db/freetds/files/freetds-ds-connect_timeout.patch
@@ -0,0 +1,12 @@
+diff -dPNur freetds-0.82/src/odbc/odbc.c freetds-0.82-ds/src/odbc/odbc.c
+--- freetds-0.82/src/odbc/odbc.c 2008-05-06 04:57:26.000000000 +0200
++++ freetds-0.82-ds/src/odbc/odbc.c 2008-06-26 12:20:43.000000000 +0200
+@@ -312,7 +312,7 @@
+
+ tds_fix_connection(connection);
+
+- connection->connect_timeout = dbc->attr.connection_timeout;
++ connection->connect_timeout = dbc->attr.login_timeout;
+
+ if (tds_connect(dbc->tds_socket, connection) == TDS_FAIL) {
+ tds_free_socket(dbc->tds_socket);
diff --git a/dev-db/freetds/files/freetds-ds-odbc.patch b/dev-db/freetds/files/freetds-ds-odbc.patch
new file mode 100644
index 0000000..a7b6707
--- /dev/null
+++ b/dev-db/freetds/files/freetds-ds-odbc.patch
@@ -0,0 +1,222 @@
+diff -dPNur freetds-0.82/src/odbc/odbc.c freetds-0.82-new/src/odbc/odbc.c
+--- freetds-0.82/src/odbc/odbc.c 2008-05-06 04:57:26.000000000 +0200
++++ freetds-0.82-new/src/odbc/odbc.c 2008-06-09 13:12:51.000000000 +0200
+@@ -4564,6 +4564,8 @@
+ SQLLEN dummy_cb;
+ int nSybType;
+
++ int extra_bytes = 0;
++
+ INIT_HSTMT;
+
+ tdsdump_log(TDS_DBG_FUNC, "SQLGetData(%p, %u, %d, %p, %d, %p)\n",
+@@ -4601,18 +4603,117 @@
+ if (colinfo->column_cur_size < 0) {
+ *pcbValue = SQL_NULL_DATA;
+ } else {
++ nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
++ if (fCType == SQL_C_DEFAULT)
++ fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
++ if (fCType == SQL_ARD_TYPE) {
++ if (icol > stmt->ard->header.sql_desc_count) {
++ odbc_errs_add(&stmt->errs, "07009", NULL);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
++ }
++ assert(fCType);
++
+ src = (TDS_CHAR *) colinfo->column_data;
+ if (is_variable_type(colinfo->column_type)) {
+- if (colinfo->column_text_sqlgetdatapos > 0
+- && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+- ODBC_RETURN(stmt, SQL_NO_DATA);
+-
++ int readed = 0;
++
+ /* 2003-8-29 check for an old bug -- freddy77 */
+ assert(colinfo->column_text_sqlgetdatapos >= 0);
+ if (is_blob_type(colinfo->column_type))
+ src = ((TDSBLOB *) src)->textvalue;
+- src += colinfo->column_text_sqlgetdatapos;
+- srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ if ((fCType == SQL_C_CHAR)&&(colinfo->column_text_sqlgetdatapos)) {
++ TDS_CHAR buf[3];
++ SQLLEN len;
++
++ switch (nSybType) {
++ case SYBLONGBINARY:
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case SYBIMAGE:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case TDS_CONVERT_BINARY:
++ if (colinfo->column_text_sqlgetdatapos%2) {
++ readed = (colinfo->column_text_sqlgetdatapos - 1) / 2;
++ if (readed >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ if (cbValueMax > 2) {
++ len = convert_tds2sql(context, nSybType, src + readed, 1, fCType, buf, 3, NULL);
++ if (len < 2) {
++ if (len < 0) odbc_convert_err_set(&stmt->errs, len);
++ ODBC_RETURN(stmt, SQL_ERROR);
++ }
++ *(TDS_CHAR *) rgbValue = buf[1];
++ *((TDS_CHAR *) rgbValue + 1) = 0;
++
++ rgbValue++;
++ cbValueMax--;
++
++ extra_bytes = 1;
++ readed++;
++
++ if (readed >= colinfo->column_cur_size)
++ ODBC_RETURN_(stmt);
++ } else {
++ if (cbValueMax) *(TDS_CHAR *) rgbValue = 0;
++ odbc_errs_add(&stmt->errs, "01004", "String data, right truncated");
++ ODBC_RETURN(stmt, SQL_SUCCESS_WITH_INFO);
++ }
++ } else {
++ readed = colinfo->column_text_sqlgetdatapos / 2;
++ if (readed >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++ }
++
++ src += readed;
++ srclen = colinfo->column_cur_size - readed;
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++
++ }
++ } else if (fCType == SQL_C_BINARY) {
++ switch (nSybType) {
++ case SYBCHAR:
++ case SYBVARCHAR:
++ case SYBTEXT:
++ case XSYBCHAR:
++ case XSYBVARCHAR:
++ if (src[0] == '0' && (src[1] == 'x' || src[1] == 'X')) readed = 2;
++ else readed = 0;
++ while ((readed < colinfo->column_cur_size) && (src[readed] == ' ' || src[readed] == '\0')) readed ++;
++ readed += colinfo->column_text_sqlgetdatapos * 2;
++
++ if ((readed)&&(readed >= colinfo->column_cur_size))
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += readed;
++ srclen = colinfo->column_cur_size - readed;
++ break;
++ default:
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
++ } else {
++ if (colinfo->column_text_sqlgetdatapos > 0
++ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
++ ODBC_RETURN(stmt, SQL_NO_DATA);
++
++ src += colinfo->column_text_sqlgetdatapos;
++ srclen = colinfo->column_cur_size - colinfo->column_text_sqlgetdatapos;
++ }
+ } else {
+ if (colinfo->column_text_sqlgetdatapos > 0
+ && colinfo->column_text_sqlgetdatapos >= colinfo->column_cur_size)
+@@ -4620,23 +4721,18 @@
+
+ srclen = colinfo->column_cur_size;
+ }
+- nSybType = tds_get_conversion_type(colinfo->column_type, colinfo->column_size);
+- if (fCType == SQL_C_DEFAULT)
+- fCType = odbc_sql_to_c_type_default(stmt->ird->records[icol - 1].sql_desc_concise_type);
+- if (fCType == SQL_ARD_TYPE) {
+- if (icol > stmt->ard->header.sql_desc_count) {
+- odbc_errs_add(&stmt->errs, "07009", NULL);
+- ODBC_RETURN(stmt, SQL_ERROR);
+- }
+- fCType = stmt->ard->records[icol - 1].sql_desc_concise_type;
+- }
+- assert(fCType);
++
+ *pcbValue = convert_tds2sql(context, nSybType, src, srclen, fCType, (TDS_CHAR *) rgbValue, cbValueMax, NULL);
+ if (*pcbValue < 0) {
+ odbc_convert_err_set(&stmt->errs, *pcbValue);
+ ODBC_RETURN(stmt, SQL_ERROR);
+ }
+-
++
++ if (extra_bytes) {
++ colinfo->column_text_sqlgetdatapos += extra_bytes;
++ *pcbValue += extra_bytes;
++ }
++
+ if (is_variable_type(colinfo->column_type) && (fCType == SQL_C_CHAR || fCType == SQL_C_BINARY)) {
+ /* calc how many bytes was readed */
+ int readed = cbValueMax;
+@@ -4644,9 +4740,54 @@
+ /* FIXME test on destination char ??? */
+ if (stmt->dbc->env->attr.output_nts != SQL_FALSE && fCType == SQL_C_CHAR && readed > 0)
+ --readed;
++
+ if (readed > *pcbValue)
+ readed = *pcbValue;
++
+ colinfo->column_text_sqlgetdatapos += readed;
++
++/*
++ if (fCType == SQL_C_CHAR) {
++ switch (nSybType) {
++ case SYBLONGBINARY:
++ case SYBBINARY:
++ case SYBVARBINARY:
++ case SYBIMAGE:
++ case XSYBBINARY:
++ case XSYBVARBINARY:
++ case TDS_CONVERT_BINARY:
++ if (readed%2) {
++ readed--;
++ *((TDS_CHAR *)rgbValue + readed) = 0;
++ }
++ colinfo->column_text_sqlgetdatapos += readed / 2;
++ break;
++ default:
++ colinfo->column_text_sqlgetdatapos += readed;
++ }
++ } else if (fCType == SQL_C_BINARY) {
++ switch (nSybType) {
++ case SYBCHAR:
++ case SYBVARCHAR:
++ case SYBTEXT:
++ case XSYBCHAR:
++ case XSYBVARCHAR:
++ if (!colinfo->column_text_sqlgetdatapos) {
++ if (src[0] == '0' && (src[1] == 'x' || src[1] == 'X'))
++ colinfo->column_text_sqlgetdatapos += 2;
++
++ while ((colinfo->column_text_sqlgetdatapos < colinfo->column_cur_size) && (src[colinfo->column_text_sqlgetdatapos] == ' ' || src[colinfo->column_text_sqlgetdatapos] == '\0'))
++ colinfo->column_text_sqlgetdatapos ++;
++ }
++ colinfo->column_text_sqlgetdatapos += readed * 2;
++ break;
++ default:
++ colinfo->column_text_sqlgetdatapos += readed;
++ }
++ } else {
++ colinfo->column_text_sqlgetdatapos += readed;
++ }*/
++
+ /* avoid infinite SQL_SUCCESS on empty strings */
+ if (colinfo->column_text_sqlgetdatapos == 0 && cbValueMax > 0)
+ ++colinfo->column_text_sqlgetdatapos;
diff --git a/dev-db/freetds/freetds-0.82-r1.ebuild b/dev-db/freetds/freetds-0.82-r1.ebuild
new file mode 100644
index 0000000..11c93b1
--- /dev/null
+++ b/dev-db/freetds/freetds-0.82-r1.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/freetds/freetds-0.64.ebuild,v 1.11 2007/11/14 15:53:32 jer Exp $
+
+inherit eutils
+
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+DESCRIPTION="Tabular Datastream Library."
+HOMEPAGE="http://www.freetds.org/"
+SRC_URI="http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="odbc mssql"
+
+DEPEND="odbc? ( dev-db/unixODBC )"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${S}
+
+ epatch "${FILESDIR}"/${PN}-ds-odbc.patch || die
+}
+
+src_compile() {
+ local myconf
+ use odbc && myconf="--with-unixodbc=/usr"
+ use mssql && myconf="${myconf} --enable-msdblib"
+ econf --with-tdsver=7.0 ${myconf} --cache-file="${S}/config.cache" || die "econf failed"
+ emake || die "emake failed"
+}
+
+RESTRICT="test"
+
+src_install() {
+ make DESTDIR="${D}" install || die "make install failed"
+}
diff --git a/dev-db/freetds/freetds-0.82-r2.ebuild b/dev-db/freetds/freetds-0.82-r2.ebuild
new file mode 100644
index 0000000..39586d7
--- /dev/null
+++ b/dev-db/freetds/freetds-0.82-r2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/freetds/freetds-0.64.ebuild,v 1.11 2007/11/14 15:53:32 jer Exp $
+
+inherit eutils
+
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+DESCRIPTION="Tabular Datastream Library."
+HOMEPAGE="http://www.freetds.org/"
+SRC_URI="http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="odbc mssql"
+
+DEPEND="odbc? ( dev-db/unixODBC )"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${S}
+
+# epatch "${FILESDIR}"/${PN}-ds-odbc.patch || die
+ epatch "${FILESDIR}"/SQLGetData.utf8.odbc.c.diff || die
+}
+
+src_compile() {
+ local myconf
+ use odbc && myconf="--with-unixodbc=/usr"
+ use mssql && myconf="${myconf} --enable-msdblib"
+ econf --with-tdsver=7.0 ${myconf} --cache-file="${S}/config.cache" || die "econf failed"
+ emake || die "emake failed"
+}
+
+RESTRICT="test"
+
+src_install() {
+ make DESTDIR="${D}" install || die "make install failed"
+}
diff --git a/dev-db/freetds/freetds-0.82-r3.ebuild b/dev-db/freetds/freetds-0.82-r3.ebuild
new file mode 100644
index 0000000..3d26269
--- /dev/null
+++ b/dev-db/freetds/freetds-0.82-r3.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/freetds/freetds-0.64.ebuild,v 1.11 2007/11/14 15:53:32 jer Exp $
+
+inherit eutils
+
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+DESCRIPTION="Tabular Datastream Library."
+HOMEPAGE="http://www.freetds.org/"
+SRC_URI="http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="odbc mssql"
+
+DEPEND="odbc? ( dev-db/unixODBC )"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${S}
+
+ epatch "${FILESDIR}"/SQLGetData.utf8.odbc.c-r3.diff || die
+}
+
+src_compile() {
+ local myconf
+ use odbc && myconf="--with-unixodbc=/usr"
+ use mssql && myconf="${myconf} --enable-msdblib"
+ econf --with-tdsver=7.0 ${myconf} --cache-file="${S}/config.cache" || die "econf failed"
+ emake || die "emake failed"
+}
+
+RESTRICT="test"
+
+src_install() {
+ make DESTDIR="${D}" install || die "make install failed"
+}
diff --git a/dev-db/freetds/freetds-0.82-r4.ebuild b/dev-db/freetds/freetds-0.82-r4.ebuild
new file mode 100644
index 0000000..8355034
--- /dev/null
+++ b/dev-db/freetds/freetds-0.82-r4.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/freetds/freetds-0.64.ebuild,v 1.11 2007/11/14 15:53:32 jer Exp $
+
+inherit eutils
+
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+DESCRIPTION="Tabular Datastream Library."
+HOMEPAGE="http://www.freetds.org/"
+SRC_URI="http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="odbc mssql"
+
+DEPEND="odbc? ( dev-db/unixODBC )"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${S}
+
+ epatch "${FILESDIR}"/SQLGetData.utf8.odbc.c-r3.diff || die
+ epatch "${FILESDIR}"/freetds-ds-connect_timeout.patch || die
+}
+
+src_compile() {
+ local myconf
+ use odbc && myconf="--with-unixodbc=/usr"
+ use mssql && myconf="${myconf} --enable-msdblib"
+ econf --with-tdsver=7.0 ${myconf} --cache-file="${S}/config.cache" || die "econf failed"
+ emake || die "emake failed"
+}
+
+RESTRICT="test"
+
+src_install() {
+ make DESTDIR="${D}" install || die "make install failed"
+}
diff --git a/dev-db/freetds/freetds-0.82-r5.ebuild b/dev-db/freetds/freetds-0.82-r5.ebuild
new file mode 100644
index 0000000..97c03a6
--- /dev/null
+++ b/dev-db/freetds/freetds-0.82-r5.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-db/freetds/freetds-0.64.ebuild,v 1.11 2007/11/14 15:53:32 jer Exp $
+
+inherit eutils
+
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd"
+DESCRIPTION="Tabular Datastream Library."
+HOMEPAGE="http://www.freetds.org/"
+SRC_URI="http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="odbc mssql"
+
+DEPEND="odbc? ( dev-db/unixODBC )"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd ${S}
+
+ epatch "${FILESDIR}"/freetds-0.82-odbc-csa2.patch || die
+ epatch "${FILESDIR}"/freetds-ds-connect_timeout.patch || die
+}
+
+src_compile() {
+ local myconf
+ use odbc && myconf="--with-unixodbc=/usr"
+ use mssql && myconf="${myconf} --enable-msdblib"
+ econf --with-tdsver=7.0 ${myconf} --cache-file="${S}/config.cache" || die "econf failed"
+ emake || die "emake failed"
+}
+
+RESTRICT="test"
+
+src_install() {
+ make DESTDIR="${D}" install || die "make install failed"
+}
diff --git a/dev-java/oracle-jdk-bin/Manifest b/dev-java/oracle-jdk-bin/Manifest
new file mode 100644
index 0000000..04e0d28
--- /dev/null
+++ b/dev-java/oracle-jdk-bin/Manifest
@@ -0,0 +1,4 @@
+AUX fontconfig.properties 11196 BLAKE2B 31abb25a488c4680ee6a276d4c4fd0f0c8da5572a923cc1f755a6baf6ef007453c1cda4fb280fa108ae124c888a5b36b05658a9695dc5311f859742fbf9e7a79 SHA512 1802e52383a04efd0d7fb4d6a3903f99128dce90afcb10b9dd0d3515e5feafb807449024dbe5742c7dfa9d43736e474412e1a289e06b29cf3a58e59deedd56f9
+AUX oracle-jdk-bin.env.sh 833 BLAKE2B 2e8254aff8d35795f073fb599c1c51dcd2ecb0356b4e90977577b9cd41376c3517a72e634bfb1420c37c8149af89044f48aa374480b26a19c875d4c1b78390eb SHA512 8d41679b4631016dbe98b15368ed027df9e6f4d96db17133c56bbf16b9a81be908d139617bc5350aa6b0e51bddc56bb1ce1abc5a8a4fad74868172cfdde6ffd8
+DIST jdk-8u221-linux-x64.tar.gz 195094741 BLAKE2B f52178576e868ebbfaf2be5f6d36e43c90f0702afcbccb65d1ede66fd342e9ac6f5e55e08eec21dff467359bd543379b66e5f160ccbfd862973436517c298ec4 SHA512 71c12306864dc6daa5eb0895d88cd409ae3db441787eb831d12d16340d9923e8cdfbada7ddbbd6ae4034fee71e9a876f300c2e59eaaf368e492d520b063bb3d4
+EBUILD oracle-jdk-bin-1.8.0.221.ebuild 8215 BLAKE2B 9eef628c17995e4d3cc598c2f15263ddc44248a30e84bf7691dabab3cb9b0f8a0dc3c24b0c5dce8dd707a25ba23a4381539f8715377ce2b94337b920d9d1dbb7 SHA512 c6cc5e9d270e1bba7c4032398db75d5a19bbdfcc0ad608587a5183f432ef7286741598bee152088f06e75c32cc3365a3f6222e12736b9156b078fa1f4410a467
diff --git a/dev-java/oracle-jdk-bin/files/fontconfig.properties b/dev-java/oracle-jdk-bin/files/fontconfig.properties
new file mode 100644
index 0000000..43cb5ee
--- /dev/null
+++ b/dev-java/oracle-jdk-bin/files/fontconfig.properties
@@ -0,0 +1,161 @@
+# Version
+
+version=1
+
+# Component Font Mappings
+
+allfonts.chinese-gb18030=-misc-ming for iso10646 -medium-r-normal--*-%d-*-*-c-*-iso10646-1
+allfonts.chinese-gb18030.motif=-isas-song ti-medium-r-normal--*-%d-*-*-c-*-gb2312.1980-0
+allfonts.chinese-big5=-arphic technology co.-ar pl mingti2l big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+allfonts.chinese-big5.motif=-taipei-fixed-medium-r-normal--*-%d-*-*-c-*-big5-0
+allfonts.lucida=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
+
+serif.plain.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+serif.plain.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+serif.plain.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+serif.plain.latin-1=-b&h-lucidabright-medium-r-normal--*-%d-*-*-p-*-iso8859-1
+serif.plain.latin-1.motif=-b&h-luxi serif-medium-r-normal--*-%d-*-*-p-*-iso8859-1
+
+serif.bold.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+serif.bold.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+serif.bold.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+serif.bold.latin-1=-b&h-lucidabright-demibold-r-normal--*-%d-*-*-p-*-iso8859-1
+serif.bold.latin-1.motif=-b&h-luxi serif-bold-r-normal--*-%d-*-*-p-*-iso8859-1
+
+serif.italic.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+serif.italic.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+serif.italic.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+serif.italic.latin-1=-b&h-lucidabright-medium-i-normal--*-%d-*-*-p-*-iso8859-1
+serif.italic.latin-1.motif=-b&h-luxi serif-medium-i-normal--*-%d-*-*-p-*-iso8859-1
+
+serif.bolditalic.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+serif.bolditalic.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+serif.bolditalic.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+serif.bolditalic.latin-1=-b&h-lucidabright-demibold-i-normal--*-%d-*-*-p-*-iso8859-1
+serif.bolditalic.latin-1.motif=-b&h-luxi serif-bold-i-normal--*-%d-*-*-p-*-iso8859-1
+
+sansserif.plain.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+sansserif.plain.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+sansserif.plain.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+sansserif.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
+sansserif.plain.latin-1.motif=-b&h-luxi sans-medium-r-normal--*-%d-*-*-p-*-iso8859-1
+
+sansserif.bold.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+sansserif.bold.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+sansserif.bold.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+sansserif.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
+sansserif.bold.latin-1.motif=-b&h-luxi sans-bold-r-normal--*-%d-*-*-p-*-iso8859-1
+
+sansserif.italic.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+sansserif.italic.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+sansserif.italic.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+sansserif.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
+sansserif.italic.latin-1.motif=-b&h-luxi sans-medium-i-normal--*-%d-*-*-p-*-iso8859-1
+
+sansserif.bolditalic.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+sansserif.bolditalic.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+sansserif.bolditalic.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+sansserif.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
+sansserif.bolditalic.latin-1.motif=-b&h-luxi sans-bold-i-normal--*-%d-*-*-p-*-iso8859-1
+
+monospaced.plain.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+monospaced.plain.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+monospaced.plain.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+monospaced.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.plain.latin-1.motif=-b&h-luxi mono-medium-r-normal--*-%d-*-*-m-*-iso8859-1
+
+monospaced.bold.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+monospaced.bold.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+monospaced.bold.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+monospaced.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.bold.latin-1.motif=-b&h-luxi mono-bold-r-normal--*-%d-*-*-m-*-iso8859-1
+
+monospaced.italic.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+monospaced.italic.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+monospaced.italic.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+monospaced.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.italic.latin-1.motif=-b&h-luxi mono-medium-i-normal--*-%d-*-*-m-*-iso8859-1
+
+monospaced.bolditalic.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+monospaced.bolditalic.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+monospaced.bolditalic.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+monospaced.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+monospaced.bolditalic.latin-1.motif=-b&h-luxi mono-bold-i-normal--*-%d-*-*-m-*-iso8859-1
+
+dialog.plain.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialog.plain.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialog.plain.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialog.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans-*-%d-*-*-p-*-iso8859-1
+dialog.plain.latin-1.motif=-b&h-luxi sans-medium-r-normal--*-%d-*-*-p-*-iso8859-1
+
+dialog.bold.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialog.bold.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialog.bold.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialog.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans-*-%d-*-*-p-*-iso8859-1
+dialog.bold.latin-1.motif=-b&h-luxi sans-bold-r-normal--*-%d-*-*-p-*-iso8859-1
+
+dialog.italic.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialog.italic.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialog.italic.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialog.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans-*-%d-*-*-p-*-iso8859-1
+dialog.italic.latin-1.motif=-b&h-luxi sans-medium-i-normal--*-%d-*-*-p-*-iso8859-1
+
+dialog.bolditalic.japanese-x0208=-misc-kochi gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialog.bolditalic.korean=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialog.bolditalic.korean.motif=-misc-baekmuk gulim-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialog.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans-*-%d-*-*-p-*-iso8859-1
+dialog.bolditalic.latin-1.motif=-b&h-luxi sans-bold-i-normal--*-%d-*-*-p-*-iso8859-1
+
+dialoginput.plain.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialoginput.plain.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.plain.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialoginput.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.plain.latin-1.motif=-b&h-luxi mono-medium-r-normal--*-%d-*-*-m-*-iso8859-1
+
+dialoginput.bold.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialoginput.bold.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.bold.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialoginput.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.bold.latin-1.motif=-b&h-luxi mono-bold-r-normal--*-%d-*-*-m-*-iso8859-1
+
+dialoginput.italic.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialoginput.italic.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.italic.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialoginput.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.italic.latin-1.motif=-b&h-luxi mono-medium-i-normal--*-%d-*-*-m-*-iso8859-1
+
+dialoginput.bolditalic.japanese-x0208=-misc-kochi mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0
+dialoginput.bolditalic.korean=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1
+dialoginput.bolditalic.korean.motif=-misc-baekmuk batang-medium-r-normal--*-%d-*-*-c-*-ksc5601.1987-0
+dialoginput.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans-*-%d-*-*-m-*-iso8859-1
+dialoginput.bolditalic.latin-1.motif=-b&h-luxi mono-bold-i-normal--*-%d-*-*-m-*-iso8859-1
+
+# Search Sequences
+
+sequence.allfonts=latin-1
+sequence.allfonts.Big5=latin-1,chinese-big5
+sequence.allfonts.GB2312=latin-1,chinese-gb18030
+sequence.allfonts.x-euc-jp-linux=latin-1,japanese-x0208
+sequence.allfonts.EUC-KR=latin-1,korean
+sequence.allfonts.GB18030=latin-1,chinese-gb18030
+sequence.fallback=lucida,chinese-big5,chinese-gb18030,japanese-x0208,korean
+
+# Exclusion Ranges
+
+exclusion.japanese-x0208=0390-03d6,2200-22ef,2701-27be
+
+# Font File Names
+
+filename.-arphic_technology_co.-ar_pl_mingti2l_big5-medium-r-normal--*-%d-*-*-c-*-iso10646-1=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/arphicfonts/bsmi00lp.ttf
+filename.-misc-baekmuk_batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/baekmuk-fonts/batang.ttf
+filename.-misc-baekmuk_gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/baekmuk-fonts/gulim.ttf
+filename.-misc-kochi_gothic-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/kochi-substitute/kochi-gothic-subst.ttf
+filename.-misc-kochi_mincho-medium-r-normal--*-%d-*-*-c-*-jisx0208.1983-0=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/kochi-substitute/kochi-mincho-subst.ttf
+filename.-misc-ming for iso10646 -medium-r-normal--*-%d-*-*-c-*-iso10646-1=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/hkscs-ming/min_uni.ttf
+
+# AWT X11 font paths
+awtfontpath.latin-1=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/Type1
+awtfontpath.chinese-big5=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/arphicfonts
+awtfontpath.chinese-gb18030=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/arphicfonts
+awtfontpath.japanese-x0208=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/kochi-substitute
+awtfontpath.korean=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/baekmuk-fonts
diff --git a/dev-java/oracle-jdk-bin/files/oracle-jdk-bin.env.sh b/dev-java/oracle-jdk-bin/files/oracle-jdk-bin.env.sh
new file mode 100644
index 0000000..508a5c6
--- /dev/null
+++ b/dev-java/oracle-jdk-bin/files/oracle-jdk-bin.env.sh
@@ -0,0 +1,16 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+VERSION="Oracle JDK ${PV}"
+JAVA_HOME="${EPREFIX}/opt/${P}"
+JDK_HOME="${EPREFIX}/opt/${P}"
+JAVAC="\${JAVA_HOME}/bin/javac"
+PATH="\${JAVA_HOME}/bin:\${JAVA_HOME}/jre/bin"
+ROOTPATH="\${JAVA_HOME}/bin:\${JAVA_HOME}/jre/bin"
+LDPATH="\${JAVA_HOME}/jre/lib/$(get_system_arch)/:\${JAVA_HOME}/jre/lib/$(get_system_arch)/server/"
+MANPATH="${EPREFIX}/opt/${P}/man"
+PROVIDES_TYPE="JDK JRE"
+PROVIDES_VERSION="${SLOT}"
+BOOTCLASSPATH="\${JAVA_HOME}/jre/lib/resources.jar:\${JAVA_HOME}/jre/lib/rt.jar:\${JAVA_HOME}/jre/lib/sunrsasign.jar:\${JAVA_HOME}/jre/lib/jsse.jar:\${JAVA_HOME}/jre/lib/jce.jar:\${JAVA_HOME}/jre/lib/charsets.jar:\${JAVA_HOME}/jre/classes"
+GENERATION="2"
+ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH"
diff --git a/dev-java/oracle-jdk-bin/oracle-jdk-bin-1.8.0.221.ebuild b/dev-java/oracle-jdk-bin/oracle-jdk-bin-1.8.0.221.ebuild
new file mode 100644
index 0000000..d972036
--- /dev/null
+++ b/dev-java/oracle-jdk-bin/oracle-jdk-bin-1.8.0.221.ebuild
@@ -0,0 +1,287 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit desktop gnome2-utils java-vm-2 prefix versionator
+
+KEYWORDS="amd64"
+
+if [[ "$(get_version_component_range 4)" == 0 ]] ; then
+ S_PV="$(get_version_component_range 1-3)"
+else
+ MY_PV_EXT="u$(get_version_component_range 4)"
+ S_PV="$(get_version_component_range 1-4)"
+fi
+
+MY_PV="$(get_version_component_range 2)${MY_PV_EXT}"
+
+declare -A ARCH_FILES
+ARCH_FILES[amd64]="jdk-${MY_PV}-linux-x64.tar.gz"
+ARCH_FILES[arm]="jdk-${MY_PV}-linux-arm32-vfp-hflt.tar.gz"
+ARCH_FILES[arm64]="jdk-${MY_PV}-linux-arm64-vfp-hflt.tar.gz"
+ARCH_FILES[x86]="jdk-${MY_PV}-linux-i586.tar.gz"
+ARCH_FILES[x64-macos]="jdk-${MY_PV}-macosx-x64.dmg"
+ARCH_FILES[sparc64-solaris]="jdk-${MY_PV}-solaris-sparcv9.tar.gz"
+ARCH_FILES[x64-solaris]="jdk-${MY_PV}-solaris-x64.tar.gz"
+
+for keyword in ${KEYWORDS//-\*} ; do
+ SRC_URI+="${keyword#\~}? ( ${ARCH_FILES[${keyword#\~}]} )"
+done
+
+DESCRIPTION="Oracle's Java SE Development Kit"
+HOMEPAGE="http://www.oracle.com/technetwork/java/javase/"
+LICENSE="Oracle-BCLA-JavaSE examples? ( BSD )"
+SLOT="1.8"
+IUSE="alsa commercial cups doc examples +fontconfig headless-awt javafx jce nsplugin selinux source visualvm"
+REQUIRED_USE="javafx? ( alsa fontconfig )"
+RESTRICT="fetch preserve-libs strip"
+QA_PREBUILT="*"
+
+# NOTES:
+#
+# * cups is dlopened.
+#
+# * libpng is also dlopened but only by libsplashscreen, which isn't
+# important, so we can exclude that.
+#
+# * We still need to work out the exact AWT and JavaFX dependencies
+# under MacOS. It doesn't appear to use many, if any, of the
+# dependencies below.
+#
+RDEPEND="!x64-macos? (
+ !headless-awt? (
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libXrender
+ x11-libs/libXtst
+ )
+ javafx? (
+ dev-libs/glib:2
+ dev-libs/libxml2:2
+ dev-libs/libxslt
+ media-libs/freetype:2
+ x11-libs/cairo
+ x11-libs/gtk+:2
+ x11-libs/libX11
+ x11-libs/libXtst
+ x11-libs/libXxf86vm
+ x11-libs/pango
+ virtual/opengl
+ )
+ )
+ alsa? ( media-libs/alsa-lib )
+ cups? ( net-print/cups )
+ doc? ( dev-java/java-sdk-docs:${SLOT} )
+ fontconfig? ( media-libs/fontconfig:1.0 )
+ !prefix? ( sys-libs/glibc:* )
+ selinux? ( sec-policy/selinux-java )"
+
+DEPEND="app-arch/zip
+ examples? ( x64-macos? ( app-arch/unzip ) )"
+
+S="${WORKDIR}/jdk$(replace_version_separator 3 _ ${S_PV})"
+
+pkg_nofetch() {
+ local a
+ einfo "Please download these files and move them to your distfiles directory:"
+ einfo
+ for a in ${A} ; do
+ [[ ! -f ${DISTDIR}/${a} ]] && einfo " ${a}"
+ done
+ einfo
+ einfo " http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
+ einfo
+ einfo "If the above mentioned URL does not point to the correct version anymore,"
+ einfo "please download the file from Oracle's Java download archive:"
+ einfo
+ einfo " http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html"
+ einfo
+}
+
+src_unpack() {
+ if use x64-macos ; then
+ mkdir -p "${T}"/dmgmount || die
+ hdiutil attach "${DISTDIR}"/jdk-${MY_PV}-macosx-x64.dmg \
+ -mountpoint "${T}"/dmgmount || die
+ local jdkgen=$(get_version_component_range 2)
+ local uver=$(get_version_component_range 4)
+ ( cd "${T}" &&
+ xar -xf "${T}/dmgmount/JDK ${jdkgen} Update ${uver}.pkg" \
+ jdk${PV//.}.pkg/Payload ) || die
+ zcat "${T}"/jdk${PV//.}.pkg/Payload | cpio -idv || die
+ hdiutil detach "${T}"/dmgmount || die
+ mv Contents/Home "${S}" || die
+ fi
+
+ default
+}
+
+src_prepare() {
+ default
+
+ if [[ -n ${JAVA_PKG_STRICT} ]] ; then
+ # Mark this binary early to run it now.
+ pax-mark m ./bin/javap
+
+ eqawarn "Ensure that this only calls trackJavaUsage(). If not, see bug #559936."
+ eqawarn
+ eqawarn "$(./bin/javap -J-Duser.home=${T} -c sun.misc.PostVMInitHook || die)"
+ fi
+
+ # Remove the hook that calls Oracle's evil usage tracker. Not just
+ # because it's evil but because it breaks the sandbox during builds
+ # and we can't find any other feasible way to disable it or make it
+ # write somewhere else. See bug #559936 for details.
+ zip -d jre/lib/rt.jar sun/misc/PostVMInitHook.class || die
+}
+
+src_install() {
+ local dest="/opt/${P}"
+ local ddest="${ED}${dest#/}"
+
+ # Create files used as storage for system preferences.
+ mkdir jre/.systemPrefs || die
+ touch jre/.systemPrefs/.system.lock || die
+ touch jre/.systemPrefs/.systemRootModFile || die
+
+ if ! use alsa ; then
+ rm -vf jre/lib/*/libjsoundalsa.* || die
+ fi
+
+ if ! use commercial ; then
+ rm -vfr lib/missioncontrol jre/lib/jfr* || die
+ fi
+
+ if use headless-awt ; then
+ rm -vf {,jre/}lib/*/lib*{[jx]awt,splashscreen}* \
+ {,jre/}bin/{javaws,policytool} \
+ bin/appletviewer || die
+ fi
+
+ if ! use javafx ; then
+ rm -vf jre/lib/*/lib*{decora,fx,glass,prism}* \
+ jre/lib/*/libgstreamer-lite.* {,jre/}lib/{,ext/}*fx* \
+ bin/*javafx* bin/javapackager || die
+ fi
+
+ if ! use nsplugin ; then
+ rm -vf jre/lib/*/libnpjp2.* || die
+ else
+ local nsplugin=$(echo jre/lib/*/libnpjp2.*)
+ local nsplugin_link=${nsplugin##*/}
+ nsplugin_link=${nsplugin_link/./-${PN}-${SLOT}.}
+ dosym "${dest}/${nsplugin}" "/usr/$(get_libdir)/nsbrowser/plugins/${nsplugin_link}"
+ fi
+
+ # Even though plugins linked against multiple ffmpeg versions are
+ # provided, they generally lag behind what Gentoo has available.
+ rm -vf jre/lib/*/libavplugin* || die
+
+ # Prune all fontconfig files so that libfontconfig will be used.
+ rm -v jre/lib/fontconfig.* || die
+
+ # Packaged as dev-util/visualvm but some users prefer this version.
+ use visualvm || find -name "*visualvm*" -exec rm -vfr {} + || die
+
+ # Install desktop file for the Java Control Panel. Using
+ # ${PN}-${SLOT} to prevent file collision with JRE and other slots.
+ if [[ -d jre/lib/desktop/icons ]] ; then
+ local icon
+ pushd jre/lib/desktop/icons >/dev/null || die
+ for icon in */*/apps/sun-jcontrol.png ; do
+ insinto /usr/share/icons/"${icon%/*}"
+ newins "${icon}" sun-jcontrol-${PN}-${SLOT}.png
+ done
+ popd >/dev/null || die
+ make_desktop_entry \
+ "${dest}"/bin/jcontrol \
+ "Java Control Panel for Oracle JDK ${SLOT}" \
+ sun-jcontrol-${PN}-${SLOT} \
+ "Settings;Java;"
+ fi
+
+ dodoc COPYRIGHT
+ dodir "${dest}"
+ cp -pPR bin include jre lib man "${ddest}" || die
+
+ if use examples && [[ ${A} = *-demos.* ]] ; then
+ cp -pPR demo sample "${ddest}" || die
+ fi
+
+ ln -s policy/$(usex jce unlimited limited)/{US_export,local}_policy.jar \
+ "${ddest}"/jre/lib/security/ || die
+
+ if use source ; then
+ cp -v src.zip "${ddest}" || die
+
+ if use javafx ; then
+ cp -v javafx-src.zip "${ddest}" || die
+ fi
+ fi
+
+ # Only install Gentoo-specific fontconfig if flag is disabled.
+ # https://docs.oracle.com/javase/8/docs/technotes/guides/intl/fontconfig.html
+ if ! use fontconfig ; then
+ insinto "${dest}"/jre/lib/
+ doins "$(prefixify_ro "${FILESDIR}"/fontconfig.properties)"
+ fi
+
+ # Needs to be done before CDS, bug #215225.
+ java-vm_set-pax-markings "${ddest}"
+
+ # See bug #207282.
+ einfo "Creating the Class Data Sharing archives"
+ case ${ARCH} in
+ arm|ia64)
+ ${ddest}/bin/java -client -Xshare:dump || die
+ ;;
+ x86)
+ ${ddest}/bin/java -client -Xshare:dump || die
+ # limit heap size for large memory on x86 #467518
+ # this is a workaround and shouldn't be needed.
+ ${ddest}/bin/java -server -Xms64m -Xmx64m -Xshare:dump || die
+ ;;
+ *)
+ ${ddest}/bin/java -server -Xshare:dump || die
+ ;;
+ esac
+
+ # Remove empty dirs we might have copied.
+ find "${D}" -type d -empty -exec rmdir -v {} + || die
+
+ if use x64-macos ; then
+ local lib
+ for lib in lib{decora_sse,glass,prism_{common,es2,sw}}.dylib ; do
+ ebegin "Fixing self-reference of ${lib}"
+ install_name_tool \
+ -id "${EPREFIX}${dest}"/jre/lib/${lib} \
+ "${ddest}"/jre/lib/${lib} || die
+ eend $?
+ done
+ fi
+
+ java-vm_install-env "${FILESDIR}"/${PN}.env.sh
+ java-vm_revdep-mask
+ java-vm_sandbox-predict /dev/random /proc/self/coredump_filter
+}
+
+pkg_preinst() {
+ gnome2_icon_savelist
+}
+
+pkg_postinst() {
+ gnome2_icon_cache_update
+ java-vm-2_pkg_postinst
+
+ if ! use headless-awt && ! use javafx ; then
+ ewarn "You have disabled the javafx flag. Some modern desktop Java applications"
+ ewarn "require this and they may fail with a confusing error message."
+ fi
+}
+
+pkg_postrm() {
+ gnome2_icon_cache_update
+ java-vm-2_pkg_postrm
+}
diff --git a/dev-lang/php/Manifest b/dev-lang/php/Manifest
new file mode 100644
index 0000000..d075da6
--- /dev/null
+++ b/dev-lang/php/Manifest
@@ -0,0 +1,41 @@
+AUX 20php4-envd 145 SHA256 17cd1a952434988b4c2125e4d1eef1df7114809f404605d35f255674419dd5d5 SHA512 1bd22935b6b452845fd42c0033eb336ca61556b3375c8fc4cc253e94e50ef1e7c7a40a47a566138da1784f9e4157378c9f3479439d659986a05aa236c1494bb5 WHIRLPOOL 445286fe180fef2193975beab9a51e3005637588e43a1a728a5b1c0a7bbed8edcb48a8ea0c5faf4fc664c15daa927bda7a0769a8ef0d962236f05c540d57e648
+AUX 20php5-envd 145 SHA256 efaae9e6ae5f7010e073c2ab6d8a9dda009f0707c7d7b0c027e142c94f7041a4 SHA512 581aa86479e3cd584ee1bc6dc6d4a135fe8ec343fe5519566d728d81f7018cfb23658bd0c0368951d380982c75adbb4f45acf3c146868aaf4e4ec8e9f2fad1ce WHIRLPOOL b9cfe0e80ba437bbc6008223c268bdafcde306ba8083dce96815804f3e1ec0937706e0db091149785a0076a6c6eaab8f7dff28578b706e84b4bb4e67850a4ecd
+AUX 70_mod_php.conf-apache2 454 SHA256 dd7116f3439e06ef2d6126403360c2722355f8481552fdce0cb601af331f81ee SHA512 179c0d96a1422c9f5f4939fa1f39847fa6175abf698146c9288f28143f7f0c9f24f5e4eb166b787dceb7381b07b7bd9343ad76c18667d221479caa7f18a61d46 WHIRLPOOL dff3fa7a80644f04e16bdc4be46b4db355ee5dc28e512c7748c1c6c761d34ef5a77242bdeb89710de037efc8dafa397ce28dd4c5df8ae159966dfe3b9ced2813
+AUX 70_mod_php5.conf-apache2-r1 374 SHA256 815c1ca23c9afe8479568ceaac4057eb91ea5444fbd863866b29adb4eea2c82b SHA512 a97bcd6a37ba85752b8929b597f7cb75aa69ccbe6cf1f353db167a8b23d66b8a0044d3969dea0368a2b32a6f486dccd60b9cae9d4391da2e5d7fe4dcf21c79c7 WHIRLPOOL 3bf5fdc7a2ea483116468be579ff40b92134264f69011d49c2f9ab4c88845024579920bd865d8bb5f2e834bb3da9674fcadadcbf22381cf0d10dd81a99d9fcb2
+AUX 70_mod_php5_concurr.conf-apache2-r1 376 SHA256 c05f499d9c8927391c586b94716a9f59d63767165552ea527ec7ff63c36eaa40 SHA512 06eb12012b8062116355f0da18ab1bc8abc4e20b534a8b5e10c325b2af4ef0a2d30c4c942f38eb628a123d94c87d2e995c97cb91bf4772fe8a8d5533d9ff9669 WHIRLPOOL 8e7c524b466f6f31031d291f0d5f945be79ad6f4015b482e66541f6bd05c26ede59a1b471fe457b950e1fa87d53aaeb8b05a2ab89a11fff73c6f152c721878aa
+AUX 70_mod_php_concurr.conf-apache2 329 SHA256 092178aa0cf3272b6411abc85b3820665322598932d249c284a8fa4108d5835a SHA512 8e960015802daa0e42e47962e4f3925a705c9bacfd7ac3387973a9c5d7c1ba86dc4a22e0928dbc586cacb59129e298939aec0af7a59600092b4cc741b4cdeb88 WHIRLPOOL 9c9cd9a634882071578489085954695548e7c5d506fc4f8ffc9cb07d3652c62129fe8673271480e9cb136979cf300b7765e8485838edafebd3d26a73bd48fc11
+AUX eblits/common-v1.eblit 379 SHA256 65c909a6d0501a6746518f539c4a4021426469cbf20b2a212fb0d60b48da5362 SHA512 c85127d09b64a1b2c39057aa5b0397468ce6566f2d2fb604cb68796431979eafaf125f23cb1dd64397f6e55faa565ce96f75a013cd70fcf2a9cf65aa8297c01e WHIRLPOOL 8b195a7ad59af474ea2765cb2a3867927e76eade827a3daca155773ef8cda3b48753e4520a90a9a90f75223df8c631b584ba16fc21c551b1c7b29d53992a4846
+AUX eblits/common-v2.eblit 379 SHA256 8c15442b04b0216342ef6f2b8565cb3510f6850fe67745d5697861e2f7759194 SHA512 2da1176a288f509f8920c6f3d690fb71ce73ebf7651f6404f678b4567227c930e7965259a026ccdded20acbe3ee03be596fd6253da51d132f6b0ea0165963e55 WHIRLPOOL 1a4cd516d27034a99a4f4aff4334961556faa2c3f014070403faf27999060db4faae1fa7160ca94ab0465f9fc85b4b5eb9e2eb5e1880343e30daa0d3ff28fdae
+AUX eblits/pkg_postinst-v1.eblit 2406 SHA256 2cad6bf864ea0ad9464642ad9f0fa0e90262771edb2a588cd48ef54d7848e729 SHA512 a3536554b9d3ddf7a1b8402cb7d85990f2c5550b19afa7ec85a05a9a9a5f8ae5443e14e54fb87d2210c5f8378a2d9f4d1ac158ea7aea563e033a3fb5591438f7 WHIRLPOOL 857f95ea481177b67f7ac2917d2d82e27571733a5a22f9d64a5f0d50fe65c586158957d89f65b89baccf56da7db2110daada55d86bd783d252f14c6343bf1eea
+AUX eblits/pkg_postinst-v2.eblit 2371 SHA256 8ea78698a2e6f2e6525bf869c6a085cd37761d8c8429f9d1f0cdeee7986756ee SHA512 6e9b6f03ae37728914a0e45470818ad50d428999a6f186b043a893d9ba2c0e311d3b0f0fa2a130991353fdd93cfcd346827923dc9117c506c29acd608af7d974 WHIRLPOOL 41c5012c24b08917ea115e8ed1d93d21097b20eb8a5558cb22bc1b8b8d30135d12e2f9ce3129d848671a893fb2220ba2b8afe548cbfbaade1a19d15495284d66
+AUX eblits/pkg_setup-v1.eblit 777 SHA256 2613f51ee9e3a258dbab38ff2df724f2971a50a5ad8c097cb5a4e3744df5fc8a SHA512 fd507d33006415795368a5b399341a93f10b611fe92a5ef89eb1748e4cfb772617d6d4f8e02f7fce7a021abf1829f6b72ea9928e681cedfab1010bbdc3a33070 WHIRLPOOL 5ddb6d392ca758adb72d4a8c70940e42743c1af21ea95b163ebd24132cf772828b2b58d687503aa74e4fd9a9319b29f912c7d811157d55c3b16fe75773237447
+AUX eblits/pkg_setup-v2.eblit 393 SHA256 17f9316065960ff0ca56aeec918c2c9e6c80ffdf951a238f7271a589753e320c SHA512 b5714b40c99d6e2eda73cb42cac888ea97680df1ea1c8c430a978c34460a0099f3c9b3438a59bef14acef4ab6653122fdaf10e11bafca8225a87e7ea6f61f416 WHIRLPOOL cbc7d50da571141d28859af2e252b77c79e40fb8a6605019e0a34aa8bf6fc100aa8a61ff2855c9e453ee3d837e8965e68873eec248f2941e4ed2e6c2803a166a
+AUX eblits/pkg_setup-v3.eblit 283 SHA256 5905eb3e6d984a9f8fe49e088adad99db7249f62a957c19f0ae4bf3f56ecaecd SHA512 e1c7fc1bb0a59021767a7bf848de88b0cea602ad596f40768b3b98e90713d41abfc690a15578eaf575ce3841bc52069d229b5470b3e5cd78cb962007b6da8eee WHIRLPOOL a91534151f0dbd804a4af634ca9c29e3008759664a307cd5338d518d4bbc0790bc473f71e645543682e7c25953e524b224d14e9463a2cbbbbde56d3f43e81d77
+AUX eblits/src_compile-v1.eblit 1283 SHA256 5ec76ae24304c5f803a615a98394c219018da1b1ce2018f92f6ac8c5becf6c99 SHA512 2ff139344b874de9f032248687fa51a75d5df5eacb5ff6e879c26391624fbd6c4744034a34b0109bab3e434fd6f189c0dea4e298818ebf2c0c94973cdbf721d0 WHIRLPOOL 2971e61a6932a7c2c19bb40b26f67d529560d08116c37d7b645dc008710d7cc8cd75dcc8feca95eeb556687910968dbe90b20554ad0ca97a624cd7f9c9221482
+AUX eblits/src_compile-v2.eblit 515 SHA256 60fe1529591f7531ad4af37fab1a52e2ffe197f27a19f269b3b62fdbc044261c SHA512 84a041897b9468e22e61914b4134bc26aabc11a4ccc2d782151c03b17acedc6e6a31e61d73f660135d4dc7b96928b239f21248a4b7ec3689eef59c5f31ea1fa1 WHIRLPOOL c0d77ff4d8381878b563210f56607fefd14bea85ce715f9abe74e7e481342efe962e8e025d33e83f89ffd08a5b39e4b6cc0eecd441a9a0ced2a27098c12f64b3
+AUX eblits/src_configure-v1.eblit 10979 SHA256 dc769b7c5846248fdd5d1a930a3e9b614d550bfcc78f09ecd1c08607796f0206 SHA512 ed170b561266e8b23444d7fcd9e4188344cce35120b5921310d3847f0e9e3292b6f4fde91430a5eb303467dc6db3bd746f8f228b3ae6d8ff0d4f5c5dd7a71964 WHIRLPOOL f9421269cf8b47813fd6ad24b1c30ab98213bd39e047d692f42d12fbd727bfaba0082dc438655726765971942b0025318d44a60e5b662bd4e61efceeff009e8a
+AUX eblits/src_configure-v2.eblit 10855 SHA256 cd3002b6c9bd91dc9d7471e416cc631247fb2ad9d7b68981b26a3f83f84c916a SHA512 a91d4a34d5ea56196715c908dfca39f54c100761dfddad3a4c87014cc58da013e5b2327fd7eed46e36913336d21f393289cfbe59ad4bb1abeb592b562a8c43af WHIRLPOOL 2666978310e910f98325ea54e8e61bb980526e216d3a84135cf71c89acd676020e3cea6c7e69dc2dab03804ae67e0270ea2835dc1bcfde7a03ca95e80f1923d8
+AUX eblits/src_configure-v52.eblit 11017 SHA256 784ec5482362cc8f0725ca30a186e08958d7e8e752a238af043cfa8c7a68ed85 SHA512 07de91cc25457da1c257e093d4f58ea2e746c4ee63db34e12564b2129ea4d95ee381db5553108e3aaa02b951345abfac434288646e8b67ad904638fb32d85b06 WHIRLPOOL a4197d90f1ef1a559ac554edde4d8957dae00241528ff1147cfb310dfbfe2e1319259453c698297b28a2b7cfdf8b8b8a048554007d415cf37e1f68c2e15a9fe5
+AUX eblits/src_configure-v521.eblit 10844 SHA256 ad875ca45e9ad975c0d7a3cbedc27c5035aa048d7aa935221a15e47cbca63c3d SHA512 eab9ac435d179b5452d00062977f7e6b858a98a40942f1edb4c063753a003f4dd61c126d84f4d490fa9a1a321d41ef3fd852d81673bfa0da03604338e3d7b87e WHIRLPOOL 80e4f15c6dcee14634e52d454ee8d359d37eca711f19ae9f0d7c2534ddf8c45d406a1928a855fb92d0af3caed7f5f2986fc76fb40480debaa4788a64098a1a53
+AUX eblits/src_configure-v53.eblit 6718 SHA256 a8f8ce539087ea53bd2f4a5e9443017c45a676870cc0a3f2bfba2b1af49f546a SHA512 9bc5c1d94352559cd9e7e10affa0dcbbe0a865852b5f0df9789fa8237e59f8030dc260ace7c5688c9dc1075eb6e10a63e67d030f0a002ec5c0356c61539ec7aa WHIRLPOOL 0b1bc663a9918eb240075b9a8b3f5d851055b4f3bcb85c9aef7b3fe4b65d6cfe36bd9bcec0f21f095d84c1b9e7606a0485bf9c7cb524dfb2a348f2470b5bb797
+AUX eblits/src_configure-v54.eblit 6617 SHA256 1ba1e6a51417e8ed967fd036be1919845b821b8fc0ba3b69b2895d7db013162a SHA512 1016b66dbdd2e5985cc82e5a0a01e85f0b5723437044ba9239868a15e2b7fd97b5efb34d025c196747592bbe293417f7c630d1ae973d076ddac4808d9699cb6e WHIRLPOOL d7756df054bbcfdf1741f09daf125484bf9114c9c70e4e74baef338228ef5fae3af921111e2175250fc1eefea9746871cc16a1e4f18a7982a0337e0b913f1ead
+AUX eblits/src_install-v1.eblit 5146 SHA256 3bddd375764b0ed00cb30e65036c67f96c56ea0ebfd70bcdc61b7465d1500d36 SHA512 37d9d322eb4f4cdc6259f77789923d7d9a343047723d4ba9fde6566cfd291f77a0acaaff292158966059f6d5506e47a89a5fb5913e3240cb7d11dac9956c12d6 WHIRLPOOL f696f53e667fed56cbfa273c03c9eeded6ef50984a91d27bd932e5751e57b4396b85fad75593b529d9fb2f463cc8073bacc750bd469e7703da6795e71b989a58
+AUX eblits/src_install-v2.eblit 5237 SHA256 860bf8ada8a4900d6a4bdd29bab3e65aff29ba8ddbbba4bec50d9d29c6990ca4 SHA512 e8efa688e9f8418a46fb3ef734d787478c77a7cfe2a0e65d9eeaf70241e29964e494c761dcbf61c0e32642ef113b296c66e27e8891b4617ddb2448834b0daffd WHIRLPOOL 100fe0d603ae2105ad5897390c774d93b015f81651369d94ea187aa7e2d37dbbe0a64094dd66e7aad2de0ff7f869c1481c688bde9a8156bb659141ae1681f073
+AUX eblits/src_install-v3.eblit 4744 SHA256 a1666bd7ce923ae8a4a4ae6812bb7ff8dab66ca0d00717fa45c17397cc03f25c SHA512 675d7ec00ba13b1a76ccfabda925ad4a63a6fecf9078770c43da2f5654c8a48df10908adcad00f04432c873262875602bc7d22ddbbb5dbed261ce301798c16c7 WHIRLPOOL 9f1646bc2f8853937ba9a9fc687827dfa4616fe3d02da35c38a2e909f0f6a1975e7ce5ba0334566ae668a95dfffd02c83efe916ea138b37adda0f087311ee771
+AUX eblits/src_prepare-v1.eblit 2616 SHA256 915b9755a37f7670f6e436fe5072dae8f5e6b437ccdfbff835e26bb2f9d22b1e SHA512 e56a34c703c993710369495f7300f09e169dab761718b800f3790f1dafe147c3dcf4311a6eae7c91aa6a5fc40314dea560a383e1505676a7e175b7c8339a6fea WHIRLPOOL efe971058bf9532409bf8273187dcfe4acbbc362afc06922ba3666a3052595907eee6d8fcdc8038d0ed9619bfc0771ce9616622b782465e7d3d391e1e8795102
+AUX eblits/src_prepare-v2.eblit 2604 SHA256 fe7534260fb81a012b8021b5d555756ce8733ad192bf51cedd94f12963811790 SHA512 02b7132e78d41829832c3d0c7e8c47a3ed8747074f5092c2f649c93c31ba84e3ecb7ada259986182077251886449622aebdedfd301cf80a11c1cf47603cea4f4 WHIRLPOOL ad420b8c11e3093b24a4fac793170fba401e0fea293970aa6803c8ce13a1c4aaddc54b14def5ea42885a261aa3658eac44b08313dab8042bd5bba1fb441742e4
+AUX eblits/src_prepare-v3.eblit 2649 SHA256 7ea3a5351fabeb050161e64c09b98ff945bbdb8b4d1a7fb83d6b4645f277b486 SHA512 0c1c5caf47e5955116ddec5b87022920a37f079211aaefb25c9a14b0c269343e808593b4727ea7e3d07487ed0a74de0e683ded318200c304943149548a75c34b WHIRLPOOL 055c5bf47e2c02537e24421cc796316b8a390a0d5447149eda5398b9708e05bfd71167e5ea2fe959432a6abb508f84d7f7cbc84748048c87e7777468bb6ab78e
+AUX eblits/src_prepare-v4.eblit 2317 SHA256 7c18252a49a6d8e071471d14624f284d7b3ad8b95cad4a001e10e6e521f4c9b1 SHA512 e5c8200cd393266f9e608ebe680e74d539f897ab288303ba4b09963c09c3fdcdcd850443c7e76b0f9343f977fec148f448391e94ffb0e81fe46c69e7e9d7bca6 WHIRLPOOL 0246d02c8e1856acbae723ed53f8286921fed7b671ecf2fd7c712d7345ca6dcebfe79e09e83c77df06e4fa6dff0f3e25c92027f2bc9bed2c2b69018cbbcac987
+AUX eblits/src_test-v1.eblit 1530 SHA256 67501925cfdaf9043e4985d0f1c797e62fb42bf47e6863b5ffdecb104888e82c SHA512 41c599ba577bc48bd4300592b5d515718cbf498165c601b87d7aaa098e045c56853c1c73932530262181b76c8cb854ceb252e947b35e8d619204e18680bed246 WHIRLPOOL d7439cfd95fff55ee7d91b3001e700dbd2dceae1dcbea7750e3df434c0f020860aa0555f383487dc0fc5fa7c16ac9769c58130be43fb9dd44286b6c7294b6698
+AUX php-fpm-r4.init 1157 SHA256 37e34461babfb5881169f9729fbdde7d4aba533f123e2c480fe25ac3b863d3e7 SHA512 3555a2210104185b93b3805400995ed987076429c47b0950f58396c535d7ea99a5d2e7eedde071e2de06f4e248e0cb9bd27ccbf01b5606152a2f559fe874afbe WHIRLPOOL 6f5f0e45004275c7c984e68c293282db23461a64965b7d7c4a0ded682140177989ed50217aea6253178cc18fa9f9d202a69383400dc1a53271f00e85884849a1
+AUX php-fpm.conf 12898 SHA256 8ebd676e058e5b64fbb8b5ed0be693e4da8f6fcedd5e427757afccc13504c48d SHA512 cfd93a8381f4a60a71bcf1bedae4889280eafcf92ba7a0f93ea164cdc87a29f598d80b9b98867d8cb966ef5e42f89a291959a84b592433b458cb7e364cec0e7d WHIRLPOOL 3fd4ce204895af20392e28381ab099344756c7a4ba5910b7e3f5c1d8c80bf96cf17eabdda3a801dc07ec8ebc8ead07833c0d7313419d7552e1f661dd2a8fc8bd
+AUX php-fpm.init 385 SHA256 baba8dab2cadc8bdf107e6fe5cede2f5faaabff1281781a0a30b3be79964c94e SHA512 a60fef565ca122c3b551564f493f1cca96d1fd6cef2bff455eaec2162482da88d92cb3fbbb2da64a5bb2aa6c2d291761c888a6bac561c52fda05632dbdeea3dd WHIRLPOOL ac721e59817045fd1a0bbab84b2c42fc2d11f7b66a3ec0c3d937c38177038a2b998fa9ae50daac705acf89f01b7b1cfd9dca6148361a9c8938d6078e739363df
+AUX php-fpm_at-simple.service 316 SHA256 c11d3bb213993ad27642abf2fb13ab8d9bd3fd8ffb6c863ca0baa057555a2fa6 SHA512 7367a3f8d3874f8e0c76f331ba613a0250db02f60ad9f87affaf448dcb5bc34bcecb91d88f415764a12b24b46ae3d1b738a002af9f77a4b707e916e83a0021fd WHIRLPOOL bf78a0e1bc22525de1bfa6896ceeb39932f4a1507820667f5216af10f8de205436a82abefe55d4776d911de99070e6f6ed3dacc1708288323d8ad789dab57fb9
+AUX php-fpm_at.service 317 SHA256 6bbbbd7b6501305c17b7290bb2a83b0ebe492d421adaac8f394e387ed52e0d25 SHA512 27982f9e2d958bfa75c89c7d3531e48d17fc388b1cdcbc8e09051b236b1184ee2baabdfcc567c19d9fcd067d4b3b86f171015616d8da42fccdabd89432d865e8 WHIRLPOOL c101ad8eb7446a6fcb3dba6ec6caae12bd6c0a9d251e222c392abb37314fbc252321bdc7db1696480050ce543a154b7257e503d3065d9e238d1c5c76a74d65ff
+AUX php4-ldvs 22 SHA256 4aee18478b09cda7e925ccde157db6099ea0122b5c4efb0868e3761b65688dde SHA512 a48eb3efe6802b6df65a929310945e4f7b0e53e69c4d9539e6656b4d525681559d70a201903daa32933403c24b7b524ef6639f21d8c8429659966c5ed88cea47 WHIRLPOOL df202f6096fb799920111c73610cc7a1ce5745f0997cf35177a70a709b4c331ece0f0b5fe0adc9cdadece85ea2f8b65d910b5ddc54fda4f81b97e505bc08464a
+AUX php5-ldvs 22 SHA256 b79d0e52b1b3b4543b31ad45525ae1c2814a27ea8e676772ab10bf6fb12dfe79 SHA512 689a0a12b3527741d2e47870c125e93be73a127e5e798c4b685ccb11653be5a8615faf3178c71a6346fe264d3c4ec76601bc05878fef67b9dbd2e45be59a344d WHIRLPOOL b24f193a1067f699c8efb199ba4e3f1fdd22c13dff98655206b30072ce8c8035fb4ed9288f694856f9978bd9935d3a5589cd968316920e712779c45b44897634
+AUX php529-ds-odbc64.patch 502 SHA256 6669b32122d8a832ac2538ed27c09a0d7dcad63552e3a68bc5f2ad0638813d86 SHA512 547acc044fce909fe76472cd0c81991ee6be6be1e51f41e50e8192f2306b9f5a5e32d3d7fb129051149c012bfc0f8c1aab54c471c00a536f9511242e2d2a139f WHIRLPOOL db1948f3df12ec2ca4e39e5e70af718137396ce7e64235ed8111c2df3e7214fc3475e161b300d41edc22865228a67376a66fb2d5571e330b9824eac665b0b0af
+AUX php532-ds-odbc_timeout.patch 1583 SHA256 cc1d89125e7ab574e48b4e37f0ecf7b536d44b347184bdb9c87eb251dc554ea8 SHA512 c237e5bc37c556e2bebe57f6f2e93a3fa5b1e35582dc3746bb74a654fb7491dfedb404e72b44413c78237adc0db6ca8567c9022c21c9bf44881eefdb061b60b1 WHIRLPOOL d77a45916c1a254388deac500c8474afd05c82d002335b7fbc92dd029bee691ac1287375666b6ebeb613736dce65b8db71a3d82cca7c4d7787fa8768b3ebb163
+AUX php547-ds-odbc_blob.patch 632 SHA256 bc3a715d41f93639c7d85ad38f6aba80884a0e57027cb00c06e44df324f88608 SHA512 7fff693338f4bb090c0aa1dc2fb70695f1380779e3dc8226001fc2893041fee74bc56d71e797c56057f21d093aa50c3cb347ada31e9fb491365ea28f7999aeca WHIRLPOOL ffefd684a694e842e3270e171d12777371699b18f5ff97f3a943118a56c80ba6b387d3d06950a66ff91403e78c3c34796420d837b7c6144a143531ea440f6667
+DIST php-5.5.17.tar.bz2 13269227 SHA256 5d81db0c8b2a68da05715c363d037922b82a45c966785d64a77482e5c01e4e1b SHA512 898ab5ae1bcd7def149d63c919cbffa2d9708052a230465d39e53b46d39ec124f52ba31e6440f0ad96ec1e6e4fe4dec3e52bcb4f9a2e7d0af7cdcc94e81e493b WHIRLPOOL b606bb596cfffcc9f3ded6b0c2e2bc18ac5412713beb2a357ae6e93886a8a20119749b33a41cc8fb8d3f9e74b9585b1f66f71d16e4ebe781afc8ded7f9f4bf23
+EBUILD php-5.5.17-r1.ebuild 22508 SHA256 e158406aa88e154785ec79f0e168fb4121219c5be1c946c97c34723f853a2339 SHA512 5d52e3e720027af33771eb06b725bae81f656110233b24de65f184310e22efb3c0034dcb0b1e8ba56bdff5498a2e2c88a31c41074709aa463a95fe263bfa2b7c WHIRLPOOL 1e608079a4b830038e0ac7a3417ed29e81dd089172bdbda22dc873ad6498b3731bd3f38bca01d1ab3b37eb7d24513bf6d3c56f84e564220a1a03f1e3aaed391a
diff --git a/dev-lang/php/files/20php4-envd b/dev-lang/php/files/20php4-envd
new file mode 100644
index 0000000..ac444e9
--- /dev/null
+++ b/dev-lang/php/files/20php4-envd
@@ -0,0 +1,2 @@
+MANPATH="/usr/lib/php4/man/"
+CONFIG_PROTECT_MASK="/etc/php/cli-php4/ext-active/ /etc/php/cgi-php4/ext-active/ /etc/php/apache2-php4/ext-active/"
diff --git a/dev-lang/php/files/20php5-envd b/dev-lang/php/files/20php5-envd
new file mode 100644
index 0000000..f6033ae
--- /dev/null
+++ b/dev-lang/php/files/20php5-envd
@@ -0,0 +1,2 @@
+MANPATH="/usr/lib/php5/man/"
+CONFIG_PROTECT_MASK="/etc/php/cli-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/apache2-php5/ext-active/"
diff --git a/dev-lang/php/files/70_mod_php.conf-apache2 b/dev-lang/php/files/70_mod_php.conf-apache2
new file mode 100644
index 0000000..90cabfb
--- /dev/null
+++ b/dev-lang/php/files/70_mod_php.conf-apache2
@@ -0,0 +1,17 @@
+<IfDefine PHP4>
+ # Load the module first
+ <IfModule !sapi_apache2.c>
+ LoadModule php4_module modules/libphp4.so
+ </IfModule>
+
+ # Set it to handle the files
+ <IfModule mod_mime.c>
+ AddType application/x-httpd-php .php
+ AddType application/x-httpd-php .phtml
+ AddType application/x-httpd-php .php3
+ AddType application/x-httpd-php .php4
+ AddType application/x-httpd-php-source .phps
+ </IfModule>
+
+ DirectoryIndex index.php index.phtml
+</IfDefine>
diff --git a/dev-lang/php/files/70_mod_php5.conf-apache2-r1 b/dev-lang/php/files/70_mod_php5.conf-apache2-r1
new file mode 100644
index 0000000..50911ad
--- /dev/null
+++ b/dev-lang/php/files/70_mod_php5.conf-apache2-r1
@@ -0,0 +1,17 @@
+<IfDefine PHP5>
+ # Load the module first
+ <IfModule !mod_php5.c>
+ LoadModule php5_module modules/libphp5.so
+ </IfModule>
+
+ # Set it to handle the files
+ <FilesMatch "\.ph(p5?|tml)$">
+ SetHandler application/x-httpd-php
+ </FilesMatch>
+
+ <FilesMatch "\.phps$">
+ SetHandler application/x-httpd-php-source
+ </FilesMatch>
+
+ DirectoryIndex index.php index.phtml
+</IfDefine>
diff --git a/dev-lang/php/files/70_mod_php5_concurr.conf-apache2-r1 b/dev-lang/php/files/70_mod_php5_concurr.conf-apache2-r1
new file mode 100644
index 0000000..cd1c380
--- /dev/null
+++ b/dev-lang/php/files/70_mod_php5_concurr.conf-apache2-r1
@@ -0,0 +1,17 @@
+<IfDefine PHP5>
+ # Load the module first
+ <IfModule !mod_php5.c>
+ LoadModule php5_module modules/libphp5.so
+ </IfModule>
+
+ # Set it to handle the files
+ <FilesMatch "\.ph(p5?|tml)$">
+ SetHandler application/x-httpd-php5
+ </FilesMatch>
+
+ <FilesMatch "\.phps$">
+ SetHandler application/x-httpd-php5-source
+ </FilesMatch>
+
+ DirectoryIndex index.php index.phtml
+</IfDefine>
diff --git a/dev-lang/php/files/70_mod_php_concurr.conf-apache2 b/dev-lang/php/files/70_mod_php_concurr.conf-apache2
new file mode 100644
index 0000000..fa73e76
--- /dev/null
+++ b/dev-lang/php/files/70_mod_php_concurr.conf-apache2
@@ -0,0 +1,14 @@
+<IfDefine PHP4>
+ # Load the module first
+ <IfModule !sapi_apache2.c>
+ LoadModule php4_module modules/libphp4.so
+ </IfModule>
+
+ # Set it to handle the files
+ <IfModule mod_mime.c>
+ AddType application/x-httpd-php4 .php3
+ AddType application/x-httpd-php4 .php4
+ </IfModule>
+
+ DirectoryIndex index.php index.phtml
+</IfDefine>
diff --git a/dev-lang/php/files/eblits/common-v1.eblit b/dev-lang/php/files/eblits/common-v1.eblit
new file mode 100644
index 0000000..ae21475
--- /dev/null
+++ b/dev-lang/php/files/eblits/common-v1.eblit
@@ -0,0 +1,9 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/common-v1.eblit,v 1.2 2010/10/08 18:25:10 olemarkus Exp $
+
+php_set_ini_dir() {
+ PHP_INI_DIR="/etc/php/${1}-php${SLOT}"
+ PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
+ PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
+}
diff --git a/dev-lang/php/files/eblits/common-v2.eblit b/dev-lang/php/files/eblits/common-v2.eblit
new file mode 100644
index 0000000..394dacb
--- /dev/null
+++ b/dev-lang/php/files/eblits/common-v2.eblit
@@ -0,0 +1,9 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/common-v2.eblit,v 1.3 2010/10/08 18:25:10 olemarkus Exp $
+
+php_set_ini_dir() {
+ PHP_INI_DIR="/etc/php/${1}-php${SLOT}"
+ PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
+ PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
+}
diff --git a/dev-lang/php/files/eblits/pkg_postinst-v1.eblit b/dev-lang/php/files/eblits/pkg_postinst-v1.eblit
new file mode 100644
index 0000000..c19dd9a
--- /dev/null
+++ b/dev-lang/php/files/eblits/pkg_postinst-v1.eblit
@@ -0,0 +1,76 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/pkg_postinst-v1.eblit,v 1.4 2011/02/16 08:12:28 olemarkus Exp $
+
+eblit-php-pkg_postinst() {
+ # Output some general info to the user
+ if use apache2 ; then
+ APACHE2_MOD_DEFINE="PHP${PHP_MV}"
+ if use concurrentmodphp ; then
+ APACHE2_MOD_CONF="70_mod_php${PHP_MV}_concurr"
+ else
+ APACHE2_MOD_CONF="70_mod_php${PHP_MV}"
+ fi
+ apache-module_pkg_postinst
+ fi
+
+ # Update Apache2 to use mod_php
+ if use apache2 ; then
+ "${ROOT}/usr/sbin/php-select" -t apache2 php${PHP_MV} > /dev/null 2>&1
+ exitStatus=$?
+ if [[ ${exitStatus} == 2 ]] ; then
+ php-select apache2 php${PHP_MV}
+ elif [[ ${exitStatus} == 4 ]] ; then
+ ewarn "To make Apache2 use php-${PHP_MV}, use"
+ ewarn " php-select apache2 php${PHP_MV}"
+ ewarn
+ fi
+ fi
+
+ # Create the symlinks for php-cli
+ if use cli ; then
+ "${ROOT}/usr/sbin/php-select" -t php php${PHP_MV} > /dev/null 2>&1
+ exitStatus=$?
+ if [[ ${exitStatus} == 5 ]] ; then
+ php-select php php${PHP_MV}
+ elif [[ ${exitStatus} == 4 ]] ; then
+ ewarn "To make usr/bin/php point to php-${PHP_MV}, use"
+ ewarn " php-select php php${PHP_MV}"
+ ewarn
+ fi
+ fi
+
+ # Create the symlinks for php-cgi
+ if use cgi ; then
+ "${ROOT}/usr/sbin/php-select" -t php-cgi php${PHP_MV} > /dev/null 2>&1
+ exitStatus=$?
+ if [[ ${exitStatus} == 5 ]] ; then
+ php-select php-cgi php${PHP_MV}
+ elif [[ ${exitStatus} == 4 ]] ; then
+ ewarn "To make usr/bin/php-cgi point to php-${PHP_MV}, use"
+ ewarn " php-select php-cgi php${PHP_MV}"
+ ewarn
+ fi
+ fi
+
+ # Create the symlinks for php-devel
+ "${ROOT}/usr/sbin/php-select" -t php-devel php${PHP_MV} > /dev/null 2>&1
+ exitStatus=$?
+ if [[ $exitStatus == 5 ]] ; then
+ php-select php-devel php${PHP_MV}
+ elif [[ $exitStatus == 4 ]] ; then
+ ewarn "To make usr/bin/php-config and usr/bin/phpize point to php-${PHP_MV}, use"
+ ewarn " php-select php-devel php${PHP_MV}"
+ ewarn
+ fi
+
+ ewarn "You may have to recompile third-party extensions now"
+ ewarn "(includes every dev-php5/pecl-* package and probably others in that category)"
+ ewarn "Also make sure that you merge in the correct extension_dir ini setting for all your"
+ ewarn "php.ini files."
+ ewarn
+ ewarn "Please read the upgrade guide: http://www.gentoo.org/proj/en/php/php-upgrading.xml"
+ ewarn
+}
+
+
diff --git a/dev-lang/php/files/eblits/pkg_postinst-v2.eblit b/dev-lang/php/files/eblits/pkg_postinst-v2.eblit
new file mode 100644
index 0000000..70bb7e8
--- /dev/null
+++ b/dev-lang/php/files/eblits/pkg_postinst-v2.eblit
@@ -0,0 +1,64 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/pkg_postinst-v2.eblit,v 1.12 2011/02/18 09:18:38 olemarkus Exp $
+
+eblit-php-pkg_postinst() {
+ # Output some general info to the user
+ if use apache2 ; then
+ APACHE2_MOD_DEFINE="PHP5"
+ APACHE2_MOD_CONF="70_mod_php5"
+ apache-module_pkg_postinst
+ fi
+
+
+ # Create the symlinks for php
+ for m in ${SAPIS}; do
+ [[ ${m} == 'embed' ]] && continue;
+ if use $m ; then
+ local ci=$(eselect php show $m)
+ if [[ -z $ci ]]; then
+ eselect php set $m php${SLOT}
+ einfo "Switched ${m} to use php:${SLOT}"
+ einfo
+ elif [[ $ci != "php${SLOT}" ]] ; then
+ elog "To switch $m to use php:${SLOT}, run"
+ elog " eselect php set $m php${SLOT}"
+ elog
+ fi
+ fi
+ done
+
+ elog "You may have to recompile third-party extensions now"
+ elog "(includes every dev-php5/pecl-* package and probably others in that category)"
+ elog "Make sure that PHP_TARGETS in /etc/make.conf includes php${SLOT/./-} in order"
+ elog "to compile extensions for the ${SLOT} ABI"
+ elog
+ if ! use readline && use cli ; then
+ ewarn "Note that in order to use php interactivly, you need to enable"
+ ewarn "the readline USE flag or php -a will hang"
+ fi
+ elog
+ elog "This ebuild installed a version of php.ini based on php.ini-${PHP_INI_VERSION} version."
+ elog "You can chose which version of php.ini to install by default by setting PHP_INI_VERSION to either"
+ elog "'production' or 'development' in /etc/make.conf"
+ ewarn "Both versions of php.ini can be found in /usr/share/doc/${PF}"
+
+ # check for not yet migrated old style config dirs
+ ls "${ROOT}"/etc/php/*-php5 &>/dev/null
+ if [[ $? -eq 0 ]]; then
+ ewarn "Make sure to migrate your config files, starting with php-5.3.4 and php-5.2.16 config"
+ ewarn "files are now kept at ${ROOT}etc/php/{apache2,cli,cgi,fpm}-php5.x"
+ fi
+ elog
+ elog "For more details on how minor version slotting works (PHP_TARGETS) please read the upgrade guide:"
+ elog "http://www.gentoo.org/proj/en/php/php-upgrading.xml"
+ elog
+
+ if ( [[ -z SUHOSIN_VERSION ]] && use suhosin && version_is_at_least 5.3.6_rc1 ) ; then
+ ewarn "The suhosin USE flag now only installs the suhosin patch!"
+ ewarn "If you want the suhosin extension, make sure you install"
+ ewarn " dev-php5/suhosin"
+ ewarn
+ fi
+}
+
diff --git a/dev-lang/php/files/eblits/pkg_setup-v1.eblit b/dev-lang/php/files/eblits/pkg_setup-v1.eblit
new file mode 100644
index 0000000..f487a0b
--- /dev/null
+++ b/dev-lang/php/files/eblits/pkg_setup-v1.eblit
@@ -0,0 +1,28 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/pkg_setup-v1.eblit,v 1.2 2010/07/08 22:39:52 mabi Exp $
+
+eblit-php-pkg_setup() {
+ if use concurrentmodphp || use kolab ; then
+ ewarn "concurrentmodphp and kolab are Gentoo-specific experimental"
+ ewarn "patches. Before reporting any bugs to bugs.php.net, make sure to"
+ ewarn "rebuild PHP with those USE flags disabled"
+ ewarn
+ fi
+
+ # Mail support
+ php_check_mta
+
+ # imap support
+ # if virtuals/imap-c-client goes to new style virtual, we can exchange this
+ # for proper use-deps
+ php_check_imap
+
+ # Oracle support
+ php_check_oracle_8
+
+ phpconfutils_warn_about_external_deps
+ depend.apache_pkg_setup
+}
+
+
diff --git a/dev-lang/php/files/eblits/pkg_setup-v2.eblit b/dev-lang/php/files/eblits/pkg_setup-v2.eblit
new file mode 100644
index 0000000..a5218b3
--- /dev/null
+++ b/dev-lang/php/files/eblits/pkg_setup-v2.eblit
@@ -0,0 +1,16 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/pkg_setup-v2.eblit,v 1.2 2011/03/17 16:34:47 olemarkus Exp $
+
+eblit-php-pkg_setup() {
+ # Mail support
+ php_check_mta
+
+ # Oracle support
+ php_check_oracle_8
+
+ phpconfutils_warn_about_external_deps
+ depend.apache_pkg_setup
+}
+
+
diff --git a/dev-lang/php/files/eblits/pkg_setup-v3.eblit b/dev-lang/php/files/eblits/pkg_setup-v3.eblit
new file mode 100644
index 0000000..ca81906
--- /dev/null
+++ b/dev-lang/php/files/eblits/pkg_setup-v3.eblit
@@ -0,0 +1,9 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/pkg_setup-v3.eblit,v 1.1 2011/07/02 15:14:41 olemarkus Exp $
+
+eblit-php-pkg_setup() {
+ depend.apache_pkg_setup
+}
+
+
diff --git a/dev-lang/php/files/eblits/src_compile-v1.eblit b/dev-lang/php/files/eblits/src_compile-v1.eblit
new file mode 100644
index 0000000..cb0d56c
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_compile-v1.eblit
@@ -0,0 +1,60 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_compile-v1.eblit,v 1.6 2010/08/14 19:37:31 mabi Exp $
+
+eblit-php-src_compile() {
+ # snmp seems to run during src_compile, too (bug #324739)
+ addpredict /usr/share/snmp/mibs/.index
+
+ SAPI_DIR="${WORKDIR}/sapis"
+
+ for sapi in ${SAPIS} ; do
+ use "${sapi}" || continue
+
+ php_sapi_build "${sapi}"
+ php_sapi_copy "${sapi}"
+ done
+}
+
+php_sapi_build() {
+ mkdir -p "${SAPI_DIR}/$1"
+
+ cd "${WORKDIR}/sapis-build/$1"
+ emake || die "emake failed"
+}
+
+php_sapi_copy() {
+ local sapi="$1"
+ local source=""
+
+ case "$sapi" in
+ cli)
+ source="sapi/cli/php"
+ ;;
+ cgi)
+ source="sapi/cgi/php-cgi"
+ ;;
+ fpm)
+ source="sapi/fpm/php-fpm"
+ ;;
+ embed)
+ source="libs/libphp${PHP_MV}.so"
+ ;;
+
+ apache2)
+ # apache2 is a special case; the necessary files
+ # (yes, multiple) are copied by make install, not
+ # by the ebuild; that's the reason, why apache2 has
+ # to be the last sapi
+ emake INSTALL_ROOT="${SAPI_DIR}/${sapi}/" install-sapi
+ ;;
+
+ *)
+ die "unhandled sapi in php_sapi_copy"
+ ;;
+ esac
+
+ if [[ "${source}" ]] ; then
+ cp "$source" "${SAPI_DIR}/$sapi" || die "Unable to copy ${sapi} SAPI"
+ fi
+}
diff --git a/dev-lang/php/files/eblits/src_compile-v2.eblit b/dev-lang/php/files/eblits/src_compile-v2.eblit
new file mode 100644
index 0000000..6e3d277
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_compile-v2.eblit
@@ -0,0 +1,17 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_compile-v2.eblit,v 1.3 2011/10/31 16:18:04 mabi Exp $
+
+eblit-php-src_compile() {
+ # snmp seems to run during src_compile, too (bug #324739)
+ addpredict /usr/share/snmp/mibs/.index
+
+ for sapi in ${SAPIS} ; do
+ use "${sapi}" && php_sapi_build "${sapi}"
+ done
+}
+
+php_sapi_build() {
+ cd "${WORKDIR}/sapis-build/$1"
+ emake || die "emake failed"
+}
diff --git a/dev-lang/php/files/eblits/src_configure-v1.eblit b/dev-lang/php/files/eblits/src_configure-v1.eblit
new file mode 100644
index 0000000..09838bd
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_configure-v1.eblit
@@ -0,0 +1,280 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_configure-v1.eblit,v 1.8 2010/10/24 11:48:42 mabi Exp $
+
+eblit-php-src_configure() {
+ PHP_DESTDIR="/usr/$(get_libdir)/php${PHP_MV}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ # for --with-libdir see bug #327025
+ my_conf="
+ --prefix="${PHP_DESTDIR}"
+ --mandir="${PHP_DESTDIR}"/man
+ --infodir="${PHP_DESTDIR}"/info
+ --libdir="${PHP_DESTDIR}"/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ phpconfutils_init
+
+ # extension USE flag shared
+ phpconfutils_extension_enable "bcmath" "bcmath" 1
+ phpconfutils_extension_with "bz2" "bzip2" 1
+ phpconfutils_extension_enable "calendar" "calendar" 1
+ phpconfutils_extension_disable "ctype" "ctype" 0
+ phpconfutils_extension_with "curl" "curl" 1
+ phpconfutils_extension_with "curlwrappers" "curlwrappers" 0
+ phpconfutils_extension_disable "dom" "xml" 0
+ phpconfutils_extension_with "enchant" "enchant" 1 "/usr"
+ phpconfutils_extension_enable "exif" "exif" 1
+ phpconfutils_extension_disable "fileinfo" "fileinfo" 1
+ phpconfutils_extension_disable "filter" "filter" 0
+ phpconfutils_extension_enable "ftp" "ftp" 1
+ phpconfutils_extension_with "gettext" "nls" 1
+ phpconfutils_extension_with "gmp" "gmp" 1
+ phpconfutils_extension_disable "hash" "hash" 0
+ phpconfutils_extension_without "iconv" "iconv" 0
+ phpconfutils_extension_enable "intl" "intl" 1
+ phpconfutils_extension_disable "ipv6" "ipv6" 0
+ phpconfutils_extension_disable "json" "json" 0
+ phpconfutils_extension_with "kerberos" "kerberos" 0 "/usr"
+ phpconfutils_extension_disable "libxml" "xml" 0
+ phpconfutils_extension_enable "mbstring" "unicode" 1
+ phpconfutils_extension_with "mcrypt" "crypt" 1
+ phpconfutils_extension_with "mssql" "mssql" 1
+ phpconfutils_extension_with "onig" "unicode" 0 "/usr"
+ phpconfutils_extension_with "openssl" "ssl" 0
+ phpconfutils_extension_with "openssl-dir" "ssl" 0 "/usr"
+ phpconfutils_extension_enable "pcntl" "pcntl" 1
+ phpconfutils_extension_disable "phar" "phar" 1
+ phpconfutils_extension_disable "pdo" "pdo" 0
+ phpconfutils_extension_with "pgsql" "postgres" 1
+ phpconfutils_extension_disable "posix" "posix" 0
+ phpconfutils_extension_with "pspell" "spell" 1
+ phpconfutils_extension_with "recode" "recode" 1
+ phpconfutils_extension_disable "simplexml" "simplexml" 0
+ phpconfutils_extension_enable "shmop" "sharedmem" 0
+ phpconfutils_extension_with "snmp" "snmp" 1
+ phpconfutils_extension_enable "soap" "soap" 1
+ phpconfutils_extension_enable "sockets" "sockets" 1
+ phpconfutils_extension_without "sqlite3" "sqlite3" 1 "/usr"
+ phpconfutils_extension_with "sybase-ct" "sybase-ct" 1
+ phpconfutils_extension_enable "sysvmsg" "sysvipc" 1
+ phpconfutils_extension_enable "sysvsem" "sysvipc" 1
+ phpconfutils_extension_enable "sysvshm" "sysvipc" 1
+ phpconfutils_extension_with "tidy" "tidy" 1
+ phpconfutils_extension_disable "tokenizer" "tokenizer" 0
+ phpconfutils_extension_enable "wddx" "wddx" 1
+ phpconfutils_extension_disable "xml" "xml" 0
+ phpconfutils_extension_disable "xmlreader" "xmlreader" 0
+ phpconfutils_extension_disable "xmlwriter" "xmlwriter" 0
+ phpconfutils_extension_with "xmlrpc" "xmlrpc" 1
+ phpconfutils_extension_with "xsl" "xsl" 1
+ phpconfutils_extension_enable "zip" "zip" 1
+ phpconfutils_extension_with "zlib" "zlib" 1
+ phpconfutils_extension_enable "debug" "debug" 0
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ phpconfutils_extension_with "cdb" "cdb" 0
+ phpconfutils_extension_with "db4" "berkdb" 0
+ phpconfutils_extension_enable "flatfile" "flatfile" 0
+ phpconfutils_extension_with "gdbm" "gdbm" 0
+ phpconfutils_extension_enable "inifile" "inifile" 0
+ phpconfutils_extension_with "qdbm" "qdbm" 0
+
+ # Support for the GD graphics library
+ if use gd-external ; then
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "gd" "gd-external" 1 "/usr"
+ else
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "jpeg-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "png-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "xpm-dir" "xpm" 0 "/usr"
+ # enable gd last, so configure can pick up the previous settings
+ phpconfutils_extension_with "gd" "gd" 0
+ fi
+
+ # IMAP support
+ if use imap ; then
+ phpconfutils_extension_with "imap" "imap" 1
+ phpconfutils_extension_with "imap-ssl" "ssl" 0
+ fi
+
+ phpconfutils_extension_with "interbase" "interbase" 0 "/opt"
+ phpconfutils_extension_with "interbase" "firebird" 0 "/usr"
+
+ # LDAP support
+ if use ldap ; then
+ if use oci8 ; then
+ phpconfutils_extension_with "ldap" "ldap" 1 "${ORACLE_HOME}"
+ else
+ phpconfutils_extension_with "ldap" "ldap" 1
+ phpconfutils_extension_with "ldap-sasl" "ldap-sasl" 0
+ fi
+ fi
+
+ # MySQL support
+ if use mysql ; then
+ if use mysqlnd ; then
+ phpconfutils_extension_with "mysql" "mysql" 1 "mysqlnd"
+ else
+ phpconfutils_extension_with "mysql" "mysql" 1 "/usr"
+ fi
+ phpconfutils_extension_with "mysql-sock" "mysql" 0 "/var/run/mysqld/mysqld.sock"
+ fi
+
+ # MySQLi support
+ if use mysqlnd ; then
+ phpconfutils_extension_with "mysqli" "mysqli" 1 "mysqlnd"
+ else
+ phpconfutils_extension_with "mysqli" "mysqli" 1 "/usr/bin/mysql_config"
+ fi
+
+ # ODBC support
+ if use odbc ; then
+ phpconfutils_extension_with "unixODBC" "odbc" 1 "/usr"
+ phpconfutils_extension_with "adabas" "adabas" 1
+ phpconfutils_extension_with "birdstep" "birdstep" 1
+ phpconfutils_extension_with "dbmaker" "dbmaker" 1
+ phpconfutils_extension_with "empress" "empress" 1
+ if use empress ; then
+ phpconfutils_extension_with "empress-bcs" "empress-bcs" 0
+ fi
+ phpconfutils_extension_with "esoob" "esoob" 1
+ # Needed to run conftest for IBM DB2
+ [[ -n ${DB2_HOME} ]] && export LD_LIBRARY_PATH="${DB2_HOME}/`get_libdir`"
+ phpconfutils_extension_with "ibm-db2" "db2" 1 "${DB2_HOME}"
+ phpconfutils_extension_with "sapdb" "sapdb" 1
+ phpconfutils_extension_with "solid" "solid" 1
+ fi
+
+ if use iodbc ; then
+ phpconfutils_extension_with "iodbc" "iodbc" 1 "/usr"
+ fi
+
+ # Oracle support
+ phpconfutils_extension_with "oci8" "oci8" 1
+ if use oci8-instant-client ; then
+ OCI8IC_PKG="$(best_version dev-db/oracle-instantclient-basic | \
+ sed -e 's|dev-db/oracle-instantclient-basic-||g' | \
+ sed -e 's|-r.*||g')"
+
+ phpconfutils_extension_with "oci8" "oci8-instant-client" 1 \
+ "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ phpconfutils_extension_with "pdo-dblib" "mssql" 1
+ if use mysqlnd ; then
+ phpconfutils_extension_with "pdo-mysql" "mysql" 1 "mysqlnd"
+ else
+ phpconfutils_extension_with "pdo-mysql" "mysql" 1 "/usr"
+ fi
+ phpconfutils_extension_with "pdo-pgsql" "postgres" 1
+ phpconfutils_extension_with "pdo-sqlite" "sqlite3" 1 "/usr"
+ phpconfutils_extension_with "pdo-odbc" "odbc" 1 "unixODBC,/usr"
+ if use oci8 ; then
+ phpconfutils_extension_with "pdo-oci" "oci8" 1
+ fi
+ if use oci8-instant-client ; then
+ phpconfutils_extension_with "pdo-oci" "oci8-instant-client" 1 \
+ "instantclient,/usr,${OCI8IC_PKG}"
+ fi
+ fi
+
+ # readline/libedit support
+ phpconfutils_extension_with "readline" "readline" 0
+ phpconfutils_extension_with "libedit" "libedit" 0
+
+ # Session support
+ if use session ; then
+ phpconfutils_extension_with "mm" "sharedmem" 0
+ else
+ phpconfutils_extension_disable "session" "session" 0
+ fi
+
+ # SQLite support
+ if use sqlite ; then
+ phpconfutils_extension_with "sqlite" "sqlite" 0 "/usr"
+ phpconfutils_extension_enable "sqlite-utf8" "unicode" 0
+ else
+ phpconfutils_extension_without "sqlite" "sqlite" 0
+ fi
+
+ if use pic ; then
+ my_conf="${my_conf} --with-pic"
+ fi
+
+ if has fpm ${IUSE//+} && use fpm ; then
+ my_conf="${my_conf} --with-libevent-dir=/usr/`get_libdir`"
+ fi
+
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ my_conf="${my_conf} --with-pcre-regex=/usr --with-pcre-dir=/usr"
+
+ # Catch CFLAGS problems
+ php_check_cflags
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+ if use apache2 ; then
+ # Concurrent PHP Apache2 modules support
+ if use concurrentmodphp ; then
+ append-ldflags "-Wl,--version-script=${FILESDIR}/php${PHP_MV}-ldvs"
+ fi
+ fi
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|cgi|embed|fpm)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
diff --git a/dev-lang/php/files/eblits/src_configure-v2.eblit b/dev-lang/php/files/eblits/src_configure-v2.eblit
new file mode 100644
index 0000000..ab09832
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_configure-v2.eblit
@@ -0,0 +1,276 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_configure-v2.eblit,v 1.5 2011/01/05 11:23:16 mabi Exp $
+
+eblit-php-src_configure() {
+ PHP_DESTDIR="/usr/$(get_libdir)/php${SLOT}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ # for --with-libdir see bug #327025
+ my_conf="
+ --prefix="${PHP_DESTDIR}"
+ --mandir="${PHP_DESTDIR}"/man
+ --infodir="${PHP_DESTDIR}"/info
+ --libdir="${PHP_DESTDIR}"/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ phpconfutils_init
+
+ # extension USE flag shared
+ phpconfutils_extension_enable "bcmath" "bcmath" 1
+ phpconfutils_extension_with "bz2" "bzip2" 1
+ phpconfutils_extension_enable "calendar" "calendar" 1
+ phpconfutils_extension_disable "ctype" "ctype" 0
+ phpconfutils_extension_with "curl" "curl" 1
+ phpconfutils_extension_with "curlwrappers" "curlwrappers" 0
+ phpconfutils_extension_disable "dom" "xml" 0
+ phpconfutils_extension_with "enchant" "enchant" 1 "/usr"
+ phpconfutils_extension_enable "exif" "exif" 1
+ phpconfutils_extension_disable "fileinfo" "fileinfo" 1
+ phpconfutils_extension_disable "filter" "filter" 0
+ phpconfutils_extension_enable "ftp" "ftp" 1
+ phpconfutils_extension_with "gettext" "nls" 1
+ phpconfutils_extension_with "gmp" "gmp" 1
+ phpconfutils_extension_disable "hash" "hash" 0
+ phpconfutils_extension_with "mhash" "mhash" 0
+ phpconfutils_extension_without "iconv" "iconv" 0
+ phpconfutils_extension_enable "intl" "intl" 1
+ phpconfutils_extension_disable "ipv6" "ipv6" 0
+ phpconfutils_extension_disable "json" "json" 0
+ phpconfutils_extension_with "kerberos" "kerberos" 0 "/usr"
+ phpconfutils_extension_disable "libxml" "xml" 0
+ phpconfutils_extension_enable "mbstring" "unicode" 1
+ phpconfutils_extension_with "mcrypt" "crypt" 1
+ phpconfutils_extension_with "mssql" "mssql" 1
+ phpconfutils_extension_with "onig" "unicode" 0 "/usr"
+ phpconfutils_extension_with "openssl" "ssl" 0
+ phpconfutils_extension_with "openssl-dir" "ssl" 0 "/usr"
+ phpconfutils_extension_enable "pcntl" "pcntl" 1
+ phpconfutils_extension_disable "phar" "phar" 1
+ phpconfutils_extension_disable "pdo" "pdo" 0
+ phpconfutils_extension_with "pgsql" "postgres" 1
+ phpconfutils_extension_disable "posix" "posix" 0
+ phpconfutils_extension_with "pspell" "spell" 1
+ phpconfutils_extension_with "recode" "recode" 1
+ phpconfutils_extension_disable "simplexml" "simplexml" 0
+ phpconfutils_extension_enable "shmop" "sharedmem" 0
+ phpconfutils_extension_with "snmp" "snmp" 1
+ phpconfutils_extension_enable "soap" "soap" 1
+ phpconfutils_extension_enable "sockets" "sockets" 1
+ phpconfutils_extension_without "sqlite3" "sqlite3" 1 "/usr"
+ phpconfutils_extension_with "sybase-ct" "sybase-ct" 1 "/usr"
+ phpconfutils_extension_enable "sysvmsg" "sysvipc" 1
+ phpconfutils_extension_enable "sysvsem" "sysvipc" 1
+ phpconfutils_extension_enable "sysvshm" "sysvipc" 1
+ phpconfutils_extension_with "tidy" "tidy" 1
+ phpconfutils_extension_disable "tokenizer" "tokenizer" 0
+ phpconfutils_extension_enable "wddx" "wddx" 1
+ phpconfutils_extension_disable "xml" "xml" 0
+ phpconfutils_extension_disable "xmlreader" "xmlreader" 0
+ phpconfutils_extension_disable "xmlwriter" "xmlwriter" 0
+ phpconfutils_extension_with "xmlrpc" "xmlrpc" 1
+ phpconfutils_extension_with "xsl" "xsl" 1
+ phpconfutils_extension_enable "zip" "zip" 1
+ phpconfutils_extension_with "zlib" "zlib" 1
+ phpconfutils_extension_enable "debug" "debug" 0
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ phpconfutils_extension_with "cdb" "cdb" 0
+ phpconfutils_extension_with "db4" "berkdb" 0
+ phpconfutils_extension_enable "flatfile" "flatfile" 0
+ phpconfutils_extension_with "gdbm" "gdbm" 0
+ phpconfutils_extension_enable "inifile" "inifile" 0
+ phpconfutils_extension_with "qdbm" "qdbm" 0
+
+ # Support for the GD graphics library
+ if use gd-external ; then
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "gd" "gd-external" 1 "/usr"
+ else
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "jpeg-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "png-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "xpm-dir" "xpm" 0 "/usr"
+ # enable gd last, so configure can pick up the previous settings
+ phpconfutils_extension_with "gd" "gd" 0
+ fi
+
+ # IMAP support
+ if use imap ; then
+ phpconfutils_extension_with "imap" "imap" 1
+ phpconfutils_extension_with "imap-ssl" "ssl" 0
+ fi
+
+ # Interbase/firebird support
+ if use interbase ; then
+ phpconfutils_extension_with "interbase" "interbase" 0 "/opt"
+ fi
+
+ if use firebird ; then
+ phpconfutils_extension_with "interbase" "firebird" 0 "/usr"
+ fi
+
+ # LDAP support
+ if use ldap ; then
+ if use oci8 ; then
+ phpconfutils_extension_with "ldap" "ldap" 1 "${ORACLE_HOME}"
+ else
+ phpconfutils_extension_with "ldap" "ldap" 1
+ phpconfutils_extension_with "ldap-sasl" "ldap-sasl" 0
+ fi
+ fi
+
+ # MySQL support
+ if use mysql ; then
+ if use mysqlnd ; then
+ phpconfutils_extension_with "mysql" "mysql" 1 "mysqlnd"
+ else
+ phpconfutils_extension_with "mysql" "mysql" 1 "/usr"
+ fi
+ phpconfutils_extension_with "mysql-sock" "mysql" 0 "/var/run/mysqld/mysqld.sock"
+ fi
+
+ # MySQLi support
+ if use mysqlnd ; then
+ phpconfutils_extension_with "mysqli" "mysqli" 1 "mysqlnd"
+ else
+ phpconfutils_extension_with "mysqli" "mysqli" 1 "/usr/bin/mysql_config"
+ fi
+
+ # ODBC support
+ if use odbc ; then
+ phpconfutils_extension_with "unixODBC" "odbc" 1 "/usr"
+ phpconfutils_extension_with "adabas" "adabas" 1
+ phpconfutils_extension_with "birdstep" "birdstep" 1
+ phpconfutils_extension_with "dbmaker" "dbmaker" 1
+ phpconfutils_extension_with "empress" "empress" 1
+ if use empress ; then
+ phpconfutils_extension_with "empress-bcs" "empress-bcs" 0
+ fi
+ phpconfutils_extension_with "esoob" "esoob" 1
+ # Needed to run conftest for IBM DB2
+ [[ -n ${DB2_HOME} ]] && export LD_LIBRARY_PATH="${DB2_HOME}/`get_libdir`"
+ phpconfutils_extension_with "ibm-db2" "db2" 1 "${DB2_HOME}"
+ phpconfutils_extension_with "sapdb" "sapdb" 1
+ phpconfutils_extension_with "solid" "solid" 1
+ fi
+
+ if use iodbc ; then
+ phpconfutils_extension_with "iodbc" "iodbc" 1 "/usr"
+ fi
+
+ # Oracle support
+ phpconfutils_extension_with "oci8" "oci8" 1
+ if use oci8-instant-client ; then
+ OCI8IC_PKG="$(best_version dev-db/oracle-instantclient-basic | \
+ sed -e 's|dev-db/oracle-instantclient-basic-||g' | \
+ sed -e 's|-r.*||g')"
+
+ phpconfutils_extension_with "oci8" "oci8-instant-client" 1 \
+ "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ phpconfutils_extension_with "pdo-dblib" "mssql" 1
+ if use mysqlnd ; then
+ phpconfutils_extension_with "pdo-mysql" "mysql" 1 "mysqlnd"
+ else
+ phpconfutils_extension_with "pdo-mysql" "mysql" 1 "/usr"
+ fi
+ phpconfutils_extension_with "pdo-pgsql" "postgres" 1
+ phpconfutils_extension_with "pdo-sqlite" "sqlite3" 1 "/usr"
+ phpconfutils_extension_with "pdo-odbc" "odbc" 1 "unixODBC,/usr"
+ if use oci8 ; then
+ phpconfutils_extension_with "pdo-oci" "oci8" 1
+ fi
+ if use oci8-instant-client ; then
+ phpconfutils_extension_with "pdo-oci" "oci8-instant-client" 1 \
+ "instantclient,/usr,${OCI8IC_PKG}"
+ fi
+ fi
+
+ # readline/libedit support
+ phpconfutils_extension_with "readline" "readline" 0
+ phpconfutils_extension_with "libedit" "libedit" 0
+
+ # Session support
+ if use session ; then
+ phpconfutils_extension_with "mm" "sharedmem" 0
+ else
+ phpconfutils_extension_disable "session" "session" 0
+ fi
+
+ # SQLite support
+ if use sqlite ; then
+ phpconfutils_extension_with "sqlite" "sqlite" 0 "/usr"
+ phpconfutils_extension_enable "sqlite-utf8" "unicode" 0
+ else
+ phpconfutils_extension_without "sqlite" "sqlite" 0
+ fi
+
+ if use pic ; then
+ my_conf="${my_conf} --with-pic"
+ fi
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ my_conf="${my_conf} --with-pcre-regex=/usr --with-pcre-dir=/usr"
+
+ # Catch CFLAGS problems
+ php_check_cflags
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|cgi|embed|fpm)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
diff --git a/dev-lang/php/files/eblits/src_configure-v52.eblit b/dev-lang/php/files/eblits/src_configure-v52.eblit
new file mode 100644
index 0000000..73fecea
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_configure-v52.eblit
@@ -0,0 +1,279 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_configure-v52.eblit,v 1.5 2010/09/19 15:15:08 mabi Exp $
+
+eblit-php-src_configure() {
+ export CFLAGS="${CFLAGS} -D_GNU_SOURCE"
+ PHP_DESTDIR="/usr/$(get_libdir)/php${SLOT}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ my_conf="
+ --prefix="${PHP_DESTDIR}"
+ --mandir="${PHP_DESTDIR}"/man
+ --infodir="${PHP_DESTDIR}"/info
+ --libdir="${PHP_DESTDIR}"/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ phpconfutils_init
+
+ # extension USE flag shared
+ phpconfutils_extension_enable "bcmath" "bcmath" 1
+ phpconfutils_extension_with "bz2" "bzip2" 1
+ phpconfutils_extension_enable "calendar" "calendar" 1
+ phpconfutils_extension_disable "ctype" "ctype" 0
+ phpconfutils_extension_with "curl" "curl" 1
+ phpconfutils_extension_with "curlwrappers" "curlwrappers" 0
+ phpconfutils_extension_enable "dbase" "dbase" 1
+ phpconfutils_extension_disable "dom" "xml" 0
+ phpconfutils_extension_enable "exif" "exif" 1
+ phpconfutils_extension_with "fbsql" "frontbase" 1
+ phpconfutils_extension_with "fdftk" "fdftk" 1 "/opt/fdftk-6.0"
+ phpconfutils_extension_disable "filter" "filter" 0
+ phpconfutils_extension_enable "ftp" "ftp" 1
+ phpconfutils_extension_with "gettext" "nls" 1
+ phpconfutils_extension_with "gmp" "gmp" 1
+ phpconfutils_extension_disable "hash" "hash" 0
+ phpconfutils_extension_without "iconv" "iconv" 0
+ phpconfutils_extension_disable "ipv6" "ipv6" 0
+ phpconfutils_extension_disable "json" "json" 0
+ phpconfutils_extension_with "kerberos" "kerberos" 0 "/usr"
+ phpconfutils_extension_disable "libxml" "xml" 0
+ phpconfutils_extension_enable "mbstring" "unicode" 1
+ phpconfutils_extension_with "mcrypt" "crypt" 1
+ phpconfutils_extension_with "mhash" "mhash" 1
+ phpconfutils_extension_with "msql" "msql" 1
+ phpconfutils_extension_with "mssql" "mssql" 1
+ phpconfutils_extension_with "ncurses" "ncurses" 1
+ phpconfutils_extension_with "openssl" "ssl" 0
+ phpconfutils_extension_with "openssl-dir" "ssl" 0 "/usr"
+ phpconfutils_extension_enable "pcntl" "pcntl" 1
+ phpconfutils_extension_without "pcre-regex" "pcre" 0
+ phpconfutils_extension_disable "pdo" "pdo" 0
+ phpconfutils_extension_with "pgsql" "postgres" 1
+ phpconfutils_extension_disable "posix" "posix" 0
+ phpconfutils_extension_with "pspell" "spell" 1
+ phpconfutils_extension_with "recode" "recode" 1
+ phpconfutils_extension_disable "reflection" "reflection" 0
+ phpconfutils_extension_disable "simplexml" "simplexml" 0
+ phpconfutils_extension_enable "shmop" "sharedmem" 0
+ phpconfutils_extension_with "snmp" "snmp" 1
+ phpconfutils_extension_enable "soap" "soap" 1
+ phpconfutils_extension_enable "sockets" "sockets" 1
+ phpconfutils_extension_disable "spl" "spl" 0
+ phpconfutils_extension_with "sybase-ct" "sybase-ct" 1
+ phpconfutils_extension_enable "sysvmsg" "sysvipc" 1
+ phpconfutils_extension_enable "sysvsem" "sysvipc" 1
+ phpconfutils_extension_enable "sysvshm" "sysvipc" 1
+ phpconfutils_extension_with "tidy" "tidy" 1
+ phpconfutils_extension_disable "tokenizer" "tokenizer" 0
+ phpconfutils_extension_enable "wddx" "wddx" 1
+ phpconfutils_extension_disable "xml" "xml" 0
+ phpconfutils_extension_disable "xmlreader" "xmlreader" 0
+ phpconfutils_extension_disable "xmlwriter" "xmlwriter" 0
+ phpconfutils_extension_with "xmlrpc" "xmlrpc" 1
+ phpconfutils_extension_with "xsl" "xsl" 1
+ phpconfutils_extension_enable "zip" "zip" 1
+ phpconfutils_extension_with "zlib" "zlib" 1
+ phpconfutils_extension_enable "debug" "debug" 0
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ phpconfutils_extension_with "cdb" "cdb" 0
+ phpconfutils_extension_with "db4" "berkdb" 0
+ phpconfutils_extension_enable "flatfile" "flatfile" 0
+ phpconfutils_extension_with "gdbm" "gdbm" 0
+ phpconfutils_extension_enable "inifile" "inifile" 0
+ phpconfutils_extension_with "qdbm" "qdbm" 0
+
+ # Support for the GD graphics library
+ if use gd-external ; then
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "gd" "gd-external" 1 "/usr"
+ else
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "jpeg-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "png-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "xpm-dir" "xpm" 0 "/usr"
+ # enable gd last, so configure can pick up the previous settings
+ phpconfutils_extension_with "gd" "gd" 0
+ fi
+
+ # IMAP support
+ if use imap ; then
+ phpconfutils_extension_with "imap" "imap" 1
+ phpconfutils_extension_with "imap-ssl" "ssl" 0
+ fi
+
+ phpconfutils_extension_with "interbase" "interbase" 0 "/opt"
+ phpconfutils_extension_with "interbase" "firebird" 0 "/usr"
+
+ # LDAP support
+ if use ldap ; then
+ if use oci8 ; then
+ phpconfutils_extension_with "ldap" "ldap" 1 "${ORACLE_HOME}"
+ else
+ phpconfutils_extension_with "ldap" "ldap" 1
+ phpconfutils_extension_with "ldap-sasl" "ldap-sasl" 0
+ fi
+ fi
+
+ # MySQL support
+ if use mysql ; then
+ phpconfutils_extension_with "mysql" "mysql" 1 "/usr"
+ phpconfutils_extension_with "mysql-sock" "mysql" 0 "/var/run/mysqld/mysqld.sock"
+ fi
+
+ # MySQLi support
+ phpconfutils_extension_with "mysqli" "mysqli" 1 "/usr/bin/mysql_config"
+
+ # ODBC support
+ if use odbc ; then
+ phpconfutils_extension_with "unixODBC" "odbc" 1 "/usr"
+ phpconfutils_extension_with "adabas" "adabas" 1
+ phpconfutils_extension_with "birdstep" "birdstep" 1
+ phpconfutils_extension_with "dbmaker" "dbmaker" 1
+ phpconfutils_extension_with "empress" "empress" 1
+ if use empress ; then
+ phpconfutils_extension_with "empress-bcs" "empress-bcs" 0
+ fi
+ phpconfutils_extension_with "esoob" "esoob" 1
+ # Needed to run conftest for IBM DB2
+ [[ -n ${DB2_HOME} ]] && export LD_LIBRARY_PATH="${DB2_HOME}/`get_libdir`"
+ phpconfutils_extension_with "ibm-db2" "db2" 1 "${DB2_HOME}"
+ phpconfutils_extension_with "sapdb" "sapdb" 1
+ phpconfutils_extension_with "solid" "solid" 1
+ fi
+
+ if use iodbc ; then
+ phpconfutils_extension_with "iodbc" "iodbc" 1 "/usr"
+ fi
+
+ # Oracle support
+ phpconfutils_extension_with "oci8" "oci8" 1
+ if use oci8-instant-client ; then
+ OCI8IC_PKG="$(best_version dev-db/oracle-instantclient-basic | \
+ sed -e 's|dev-db/oracle-instantclient-basic-||g' | \
+ sed -e 's|-r.*||g')"
+
+ phpconfutils_extension_with "oci8" "oci8-instant-client" 1 \
+ "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ phpconfutils_extension_with "pdo-dblib" "mssql" 1
+ phpconfutils_extension_with "pdo-mysql" "mysql" 1 "/usr"
+ phpconfutils_extension_with "pdo-pgsql" "postgres" 1
+ phpconfutils_extension_with "pdo-sqlite" "sqlite" 1 "/usr"
+ phpconfutils_extension_with "pdo-odbc" "odbc" 1 "unixODBC,/usr"
+ if use oci8 ; then
+ phpconfutils_extension_with "pdo-oci" "oci8" 1
+ fi
+ if use oci8-instant-client ; then
+ phpconfutils_extension_with "pdo-oci" "oci8-instant-client" 1 \
+ "instantclient,/usr,${OCI8IC_PKG}"
+ fi
+ fi
+
+ # readline/libedit support
+ phpconfutils_extension_with "readline" "readline" 0
+ phpconfutils_extension_with "libedit" "libedit" 0
+
+ # Session support
+ if use session ; then
+ phpconfutils_extension_with "mm" "sharedmem" 0
+ else
+ phpconfutils_extension_disable "session" "session" 0
+ fi
+
+ # SQLite support
+ if use sqlite ; then
+ phpconfutils_extension_with "sqlite" "sqlite" 0 "/usr"
+ phpconfutils_extension_enable "sqlite-utf8" "unicode" 0
+ else
+ phpconfutils_extension_without "sqlite" "sqlite" 0
+ fi
+
+ if use pic ; then
+ my_conf="${my_conf} --with-pic"
+ fi
+
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ if use pcre ; then
+ my_conf="${my_conf} --with-pcre-regex=/usr --with-pcre-dir=/usr"
+ fi
+
+ # Catch CFLAGS problems
+ php_check_cflags
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+ if use apache2 ; then
+ # Concurrent PHP Apache2 modules support
+ if use concurrentmodphp ; then
+ append-ldflags "-Wl,--version-script=${FILESDIR}/php${PHP_MV}-ldvs"
+ fi
+ fi
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|embed)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ cgi)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf+=" --enable-cgi --enable-fastcgi"
+ use discard-path && sapi_conf+=" --enable-discard-path"
+ use force-cgi-redirect && sapi_conf+=" --enable-force-cgi-redirect"
+ else
+ sapi_conf+=" --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
diff --git a/dev-lang/php/files/eblits/src_configure-v521.eblit b/dev-lang/php/files/eblits/src_configure-v521.eblit
new file mode 100644
index 0000000..61e6389
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_configure-v521.eblit
@@ -0,0 +1,273 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_configure-v521.eblit,v 1.1 2010/10/08 18:25:10 olemarkus Exp $
+
+eblit-php-src_configure() {
+ export CFLAGS="${CFLAGS} -D_GNU_SOURCE"
+ PHP_DESTDIR="/usr/$(get_libdir)/php${SLOT}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ my_conf="
+ --prefix="${PHP_DESTDIR}"
+ --mandir="${PHP_DESTDIR}"/man
+ --infodir="${PHP_DESTDIR}"/info
+ --libdir="${PHP_DESTDIR}"/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ phpconfutils_init
+
+ # extension USE flag shared
+ phpconfutils_extension_enable "bcmath" "bcmath" 1
+ phpconfutils_extension_with "bz2" "bzip2" 1
+ phpconfutils_extension_enable "calendar" "calendar" 1
+ phpconfutils_extension_disable "ctype" "ctype" 0
+ phpconfutils_extension_with "curl" "curl" 1
+ phpconfutils_extension_with "curlwrappers" "curlwrappers" 0
+ phpconfutils_extension_enable "dbase" "dbase" 1
+ phpconfutils_extension_disable "dom" "xml" 0
+ phpconfutils_extension_enable "exif" "exif" 1
+ phpconfutils_extension_with "fbsql" "frontbase" 1
+ phpconfutils_extension_with "fdftk" "fdftk" 1 "/opt/fdftk-6.0"
+ phpconfutils_extension_disable "filter" "filter" 0
+ phpconfutils_extension_enable "ftp" "ftp" 1
+ phpconfutils_extension_with "gettext" "nls" 1
+ phpconfutils_extension_with "gmp" "gmp" 1
+ phpconfutils_extension_disable "hash" "hash" 0
+ phpconfutils_extension_without "iconv" "iconv" 0
+ phpconfutils_extension_disable "ipv6" "ipv6" 0
+ phpconfutils_extension_disable "json" "json" 0
+ phpconfutils_extension_with "kerberos" "kerberos" 0 "/usr"
+ phpconfutils_extension_disable "libxml" "xml" 0
+ phpconfutils_extension_enable "mbstring" "unicode" 1
+ phpconfutils_extension_with "mcrypt" "crypt" 1
+ phpconfutils_extension_with "mhash" "mhash" 1
+ phpconfutils_extension_with "msql" "msql" 1
+ phpconfutils_extension_with "mssql" "mssql" 1
+ phpconfutils_extension_with "ncurses" "ncurses" 1
+ phpconfutils_extension_with "openssl" "ssl" 0
+ phpconfutils_extension_with "openssl-dir" "ssl" 0 "/usr"
+ phpconfutils_extension_enable "pcntl" "pcntl" 1
+ phpconfutils_extension_without "pcre-regex" "pcre" 0
+ phpconfutils_extension_disable "pdo" "pdo" 0
+ phpconfutils_extension_with "pgsql" "postgres" 1
+ phpconfutils_extension_disable "posix" "posix" 0
+ phpconfutils_extension_with "pspell" "spell" 1
+ phpconfutils_extension_with "recode" "recode" 1
+ phpconfutils_extension_disable "reflection" "reflection" 0
+ phpconfutils_extension_disable "simplexml" "simplexml" 0
+ phpconfutils_extension_enable "shmop" "sharedmem" 0
+ phpconfutils_extension_with "snmp" "snmp" 1
+ phpconfutils_extension_enable "soap" "soap" 1
+ phpconfutils_extension_enable "sockets" "sockets" 1
+ phpconfutils_extension_disable "spl" "spl" 0
+ phpconfutils_extension_with "sybase-ct" "sybase-ct" 1
+ phpconfutils_extension_enable "sysvmsg" "sysvipc" 1
+ phpconfutils_extension_enable "sysvsem" "sysvipc" 1
+ phpconfutils_extension_enable "sysvshm" "sysvipc" 1
+ phpconfutils_extension_with "tidy" "tidy" 1
+ phpconfutils_extension_disable "tokenizer" "tokenizer" 0
+ phpconfutils_extension_enable "wddx" "wddx" 1
+ phpconfutils_extension_disable "xml" "xml" 0
+ phpconfutils_extension_disable "xmlreader" "xmlreader" 0
+ phpconfutils_extension_disable "xmlwriter" "xmlwriter" 0
+ phpconfutils_extension_with "xmlrpc" "xmlrpc" 1
+ phpconfutils_extension_with "xsl" "xsl" 1
+ phpconfutils_extension_enable "zip" "zip" 1
+ phpconfutils_extension_with "zlib" "zlib" 1
+ phpconfutils_extension_enable "debug" "debug" 0
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ phpconfutils_extension_with "cdb" "cdb" 0
+ phpconfutils_extension_with "db4" "berkdb" 0
+ phpconfutils_extension_enable "flatfile" "flatfile" 0
+ phpconfutils_extension_with "gdbm" "gdbm" 0
+ phpconfutils_extension_enable "inifile" "inifile" 0
+ phpconfutils_extension_with "qdbm" "qdbm" 0
+
+ # Support for the GD graphics library
+ if use gd-external ; then
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "gd" "gd-external" 1 "/usr"
+ else
+ phpconfutils_extension_with "freetype-dir" "truetype" 0 "/usr"
+ phpconfutils_extension_with "t1lib" "truetype" 0 "/usr"
+ phpconfutils_extension_enable "gd-jis-conv" "cjk" 0
+ phpconfutils_extension_with "jpeg-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "png-dir" "gd" 0 "/usr"
+ phpconfutils_extension_with "xpm-dir" "xpm" 0 "/usr"
+ # enable gd last, so configure can pick up the previous settings
+ phpconfutils_extension_with "gd" "gd" 0
+ fi
+
+ # IMAP support
+ if use imap ; then
+ phpconfutils_extension_with "imap" "imap" 1
+ phpconfutils_extension_with "imap-ssl" "ssl" 0
+ fi
+
+ phpconfutils_extension_with "interbase" "interbase" 0 "/opt"
+ phpconfutils_extension_with "interbase" "firebird" 0 "/usr"
+
+ # LDAP support
+ if use ldap ; then
+ if use oci8 ; then
+ phpconfutils_extension_with "ldap" "ldap" 1 "${ORACLE_HOME}"
+ else
+ phpconfutils_extension_with "ldap" "ldap" 1
+ phpconfutils_extension_with "ldap-sasl" "ldap-sasl" 0
+ fi
+ fi
+
+ # MySQL support
+ if use mysql ; then
+ phpconfutils_extension_with "mysql" "mysql" 1 "/usr"
+ phpconfutils_extension_with "mysql-sock" "mysql" 0 "/var/run/mysqld/mysqld.sock"
+ fi
+
+ # MySQLi support
+ phpconfutils_extension_with "mysqli" "mysqli" 1 "/usr/bin/mysql_config"
+
+ # ODBC support
+ if use odbc ; then
+ phpconfutils_extension_with "unixODBC" "odbc" 1 "/usr"
+ phpconfutils_extension_with "adabas" "adabas" 1
+ phpconfutils_extension_with "birdstep" "birdstep" 1
+ phpconfutils_extension_with "dbmaker" "dbmaker" 1
+ phpconfutils_extension_with "empress" "empress" 1
+ if use empress ; then
+ phpconfutils_extension_with "empress-bcs" "empress-bcs" 0
+ fi
+ phpconfutils_extension_with "esoob" "esoob" 1
+ # Needed to run conftest for IBM DB2
+ [[ -n ${DB2_HOME} ]] && export LD_LIBRARY_PATH="${DB2_HOME}/`get_libdir`"
+ phpconfutils_extension_with "ibm-db2" "db2" 1 "${DB2_HOME}"
+ phpconfutils_extension_with "sapdb" "sapdb" 1
+ phpconfutils_extension_with "solid" "solid" 1
+ fi
+
+ if use iodbc ; then
+ phpconfutils_extension_with "iodbc" "iodbc" 1 "/usr"
+ fi
+
+ # Oracle support
+ phpconfutils_extension_with "oci8" "oci8" 1
+ if use oci8-instant-client ; then
+ OCI8IC_PKG="$(best_version dev-db/oracle-instantclient-basic | \
+ sed -e 's|dev-db/oracle-instantclient-basic-||g' | \
+ sed -e 's|-r.*||g')"
+
+ phpconfutils_extension_with "oci8" "oci8-instant-client" 1 \
+ "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ phpconfutils_extension_with "pdo-dblib" "mssql" 1
+ phpconfutils_extension_with "pdo-mysql" "mysql" 1 "/usr"
+ phpconfutils_extension_with "pdo-pgsql" "postgres" 1
+ phpconfutils_extension_with "pdo-sqlite" "sqlite" 1 "/usr"
+ phpconfutils_extension_with "pdo-odbc" "odbc" 1 "unixODBC,/usr"
+ if use oci8 ; then
+ phpconfutils_extension_with "pdo-oci" "oci8" 1
+ fi
+ if use oci8-instant-client ; then
+ phpconfutils_extension_with "pdo-oci" "oci8-instant-client" 1 \
+ "instantclient,/usr,${OCI8IC_PKG}"
+ fi
+ fi
+
+ # readline/libedit support
+ phpconfutils_extension_with "readline" "readline" 0
+ phpconfutils_extension_with "libedit" "libedit" 0
+
+ # Session support
+ if use session ; then
+ phpconfutils_extension_with "mm" "sharedmem" 0
+ else
+ phpconfutils_extension_disable "session" "session" 0
+ fi
+
+ # SQLite support
+ if use sqlite ; then
+ phpconfutils_extension_with "sqlite" "sqlite" 0 "/usr"
+ phpconfutils_extension_enable "sqlite-utf8" "unicode" 0
+ else
+ phpconfutils_extension_without "sqlite" "sqlite" 0
+ fi
+
+ if use pic ; then
+ my_conf="${my_conf} --with-pic"
+ fi
+
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ if use pcre ; then
+ my_conf="${my_conf} --with-pcre-regex=/usr --with-pcre-dir=/usr"
+ fi
+
+ # Catch CFLAGS problems
+ php_check_cflags
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|embed)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ cgi)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf+=" --enable-cgi --enable-fastcgi"
+ use discard-path && sapi_conf+=" --enable-discard-path"
+ use force-cgi-redirect && sapi_conf+=" --enable-force-cgi-redirect"
+ else
+ sapi_conf+=" --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
diff --git a/dev-lang/php/files/eblits/src_configure-v53.eblit b/dev-lang/php/files/eblits/src_configure-v53.eblit
new file mode 100644
index 0000000..00b7275
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_configure-v53.eblit
@@ -0,0 +1,262 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_configure-v53.eblit,v 1.2 2011/12/23 17:16:42 olemarkus Exp $
+
+eblit-php-src_configure() {
+ addpredict /usr/share/snmp/mibs/.index
+
+ PHP_DESTDIR="/usr/$(get_libdir)/php${SLOT}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ # for --with-libdir see bug #327025
+ my_conf="--prefix=${PHP_DESTDIR}
+ --mandir=${PHP_DESTDIR}/man
+ --infodir=${PHP_DESTDIR}/info
+ --libdir=${PHP_DESTDIR}/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ # extension USE flag shared
+ my_conf+="
+ $(use_enable bcmath bcmath )
+ $(use_with bzip2 bz2 )
+ $(use_enable calendar calendar )
+ $(use_enable ctype ctype )
+ $(use_with curl curl )
+ $(use_with curlwrappers curlwrappers )
+ $(use_enable xml dom )
+ $(use_with enchant enchant /usr)
+ $(use_enable exif exif )
+ $(use_enable fileinfo fileinfo )
+ $(use_enable filter filter )
+ $(use_enable ftp ftp )
+ $(use_with nls gettext )
+ $(use_with gmp gmp )
+ $(use_enable hash hash )
+ $(use_with mhash mhash )
+ $(use_with iconv iconv )
+ $(use_enable intl intl )
+ $(use_enable ipv6 ipv6 )
+ $(use_enable json json )
+ $(use_with kerberos kerberos /usr)
+ $(use_enable xml libxml )
+ $(use_enable unicode mbstring )
+ $(use_with crypt mcrypt )
+ $(use_with mssql mssql )
+ $(use_with unicode onig /usr)
+ $(use_with ssl openssl )
+ $(use_with ssl openssl-dir /usr)
+ $(use_enable pcntl pcntl )
+ $(use_enable phar phar )
+ $(use_enable pdo pdo )
+ $(use_with postgres pgsql )
+ $(use_enable posix posix )
+ $(use_with spell pspell )
+ $(use_with recode recode )
+ $(use_enable simplexml simplexml )
+ $(use_enable sharedmem shmop )
+ $(use_with snmp snmp )
+ $(use_enable soap soap )
+ $(use_enable sockets sockets )
+ $(use_with sqlite sqlite /usr)"
+ use sqlite && my_conf+=" $(use_enable unicode sqlite-utf8)"
+ my_conf+="
+ $(use_with sqlite3 sqlite3 /usr)
+ $(use_with sybase-ct sybase-ct /usr)
+ $(use_enable sysvipc sysvmsg )
+ $(use_enable sysvipc sysvsem )
+ $(use_enable sysvipc sysvshm )
+ $(use_with tidy tidy )
+ $(use_enable tokenizer tokenizer )
+ $(use_enable wddx wddx )
+ $(use_enable xml xml )
+ $(use_enable xmlreader xmlreader )
+ $(use_enable xmlwriter xmlwriter )
+ $(use_with xmlrpc xmlrpc )
+ $(use_with xsl xsl )
+ $(use_enable zip zip )
+ $(use_with zlib zlib )
+ $(use_enable debug debug )"
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ my_conf+="
+ $(use_with cdb cdb )
+ $(use_with berkdb db4 )
+ $(use_enable flatfile flatfile )
+ $(use_with gdbm gdbm )
+ $(use_enable inifile inifile )
+ $(use_with qdbm qdbm )"
+
+ # Support for the GD graphics library
+ my_conf+="
+ $(use_with truetype freetype-dir /usr)
+ $(use_with truetype t1lib /usr)
+ $(use_enable cjk gd-jis-conv )
+ $(use_with gd jpeg-dir /usr)
+ $(use_with gd png-dir /usr)
+ $(use_with xpm xpm-dir /usr)"
+ # enable gd last, so configure can pick up the previous settings
+ my_conf+="
+ $(use_with gd gd )"
+
+ # IMAP support
+ if use imap ; then
+ my_conf+="
+ $(use_with imap imap )
+ $(use_with ssl imap-ssl )"
+ fi
+
+ # Interbase/firebird support
+
+ if use firebird ; then
+ my_conf+="
+ $(use_with firebird interbase /usr)"
+ fi
+
+ # LDAP support
+ if use ldap ; then
+ my_conf+="
+ $(use_with ldap ldap )
+ $(use_with ldap-sasl ldap-sasl )"
+ fi
+
+ # MySQL support
+ if use mysql ; then
+ if use mysqlnd ; then
+ my_conf+="
+ $(use_with mysql mysql mysqlnd)"
+ else
+ my_conf+="
+ $(use_with mysql mysql /usr)"
+ fi
+ my_conf+="
+ $(use_with mysql mysql-sock /var/run/mysqld/mysqld.sock)"
+ fi
+
+ # MySQLi support
+ if use mysqlnd ; then
+ my_conf+="
+ $(use_with mysqli mysqli mysqlnd)"
+ else
+ my_conf+="
+ $(use_with mysqli mysqli /usr/bin/mysql_config)"
+ fi
+
+ # ODBC support
+ if use odbc ; then
+ my_conf+="
+ $(use_with odbc unixODBC /usr)"
+ fi
+
+ if use iodbc ; then
+ my_conf+="
+ $(use_with iodbc iodbc /usr)"
+ fi
+
+ # Oracle support
+ if use oci8-instant-client ; then
+ OCI8IC_PKG="$(best_version dev-db/oracle-instantclient-basic | \
+ sed -e 's|dev-db/oracle-instantclient-basic-||g' | \
+ sed -e 's|-r.*||g')"
+
+ my_conf+="
+ $(use_with oci8-instant-client oci8 "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib")"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ my_conf+="
+ $(use_with mssql pdo-dblib )"
+ if use mysqlnd ; then
+ my_conf+="
+ $(use_with mysql pdo-mysql mysqlnd)"
+ else
+ my_conf+="
+ $(use_with mysql pdo-mysql /usr)"
+ fi
+ my_conf+="
+ $(use_with postgres pdo-pgsql )
+ $(use_with sqlite3 pdo-sqlite /usr)
+ $(use_with odbc pdo-odbc unixODBC,/usr)"
+ if use oci8-instant-client ; then
+ my_conf+="
+ $(use_with oci8-instant-client pdo-oci "instantclient,/usr,${OCI8IC_PKG}" )"
+ fi
+ fi
+
+ # readline/libedit support
+ my_conf+="
+ $(use_with readline readline )
+ $(use_with libedit libedit )"
+
+ # Session support
+ if use session ; then
+ my_conf+="
+ $(use_with sharedmem mm )"
+ else
+ my_conf+="
+ $(use_enable session session )"
+ fi
+
+ if use pic ; then
+ my_conf="${my_conf} --with-pic"
+ fi
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ my_conf="${my_conf} --with-pcre-regex=/usr --with-pcre-dir=/usr"
+
+ # Catch CFLAGS problems
+ # Fixes bug #14067.
+ # Changed order to run it in reverse for bug #32022 and #12021.
+ replace-cpu-flags "k6*" "i586"
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|cgi|embed|fpm)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
diff --git a/dev-lang/php/files/eblits/src_configure-v54.eblit b/dev-lang/php/files/eblits/src_configure-v54.eblit
new file mode 100644
index 0000000..9e6b295
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_configure-v54.eblit
@@ -0,0 +1,260 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_configure-v54.eblit,v 1.1 2011/12/18 09:00:26 olemarkus Exp $
+
+eblit-php-src_configure() {
+ addpredict /usr/share/snmp/mibs/.index
+
+ PHP_DESTDIR="/usr/$(get_libdir)/php${SLOT}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ # for --with-libdir see bug #327025
+ my_conf="
+ --prefix="${PHP_DESTDIR}"
+ --mandir="${PHP_DESTDIR}"/man
+ --infodir="${PHP_DESTDIR}"/info
+ --libdir="${PHP_DESTDIR}"/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ # extension USE flag shared
+ my_conf+="
+ $(use_enable bcmath bcmath )
+ $(use_with bzip2 bz2 )
+ $(use_enable calendar calendar )
+ $(use_enable ctype ctype )
+ $(use_with curl curl )
+ $(use_with curlwrappers curlwrappers )
+ $(use_enable xml dom )
+ $(use_with enchant enchant /usr)
+ $(use_enable exif exif )
+ $(use_enable fileinfo fileinfo )
+ $(use_enable filter filter )
+ $(use_enable ftp ftp )
+ $(use_with nls gettext )
+ $(use_with gmp gmp )
+ $(use_enable hash hash )
+ $(use_with mhash mhash )
+ $(use_with iconv iconv )
+ $(use_enable intl intl )
+ $(use_enable ipv6 ipv6 )
+ $(use_enable json json )
+ $(use_with kerberos kerberos /usr)
+ $(use_enable xml libxml )
+ $(use_enable unicode mbstring )
+ $(use_with crypt mcrypt )
+ $(use_with mssql mssql )
+ $(use_with unicode onig /usr)
+ $(use_with ssl openssl )
+ $(use_with ssl openssl-dir /usr)
+ $(use_enable pcntl pcntl )
+ $(use_enable phar phar )
+ $(use_enable pdo pdo )
+ $(use_with postgres pgsql )
+ $(use_enable posix posix )
+ $(use_with spell pspell )
+ $(use_with recode recode )
+ $(use_enable simplexml simplexml )
+ $(use_enable sharedmem shmop )
+ $(use_with snmp snmp )
+ $(use_enable soap soap )
+ $(use_enable sockets sockets )
+ $(use_with sqlite3 sqlite3 /usr)
+ $(use_with sybase-ct sybase-ct /usr)
+ $(use_enable sysvipc sysvmsg )
+ $(use_enable sysvipc sysvsem )
+ $(use_enable sysvipc sysvshm )
+ $(use_with tidy tidy )
+ $(use_enable tokenizer tokenizer )
+ $(use_enable wddx wddx )
+ $(use_enable xml xml )
+ $(use_enable xmlreader xmlreader )
+ $(use_enable xmlwriter xmlwriter )
+ $(use_with xmlrpc xmlrpc )
+ $(use_with xsl xsl )
+ $(use_enable zip zip )
+ $(use_with zlib zlib )
+ $(use_enable debug debug )"
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ my_conf+="
+ $(use_with cdb cdb )
+ $(use_with berkdb db4 )
+ $(use_enable flatfile flatfile )
+ $(use_with gdbm gdbm )
+ $(use_enable inifile inifile )
+ $(use_with qdbm qdbm )"
+
+ # Support for the GD graphics library
+ my_conf+="
+ $(use_with truetype freetype-dir /usr)
+ $(use_with truetype t1lib /usr)
+ $(use_enable cjk gd-jis-conv )
+ $(use_with gd jpeg-dir /usr)
+ $(use_with gd png-dir /usr)
+ $(use_with xpm xpm-dir /usr)"
+ # enable gd last, so configure can pick up the previous settings
+ my_conf+="
+ $(use_with gd gd )"
+
+ # IMAP support
+ if use imap ; then
+ my_conf+="
+ $(use_with imap imap )
+ $(use_with ssl imap-ssl )"
+ fi
+
+ # Interbase/firebird support
+
+ if use firebird ; then
+ my_conf+="
+ $(use_with firebird interbase /usr)"
+ fi
+
+ # LDAP support
+ if use ldap ; then
+ my_conf+="
+ $(use_with ldap ldap )
+ $(use_with ldap-sasl ldap-sasl )"
+ fi
+
+ # MySQL support
+ if use mysql ; then
+ if use mysqlnd ; then
+ my_conf+="
+ $(use_with mysql mysql mysqlnd)"
+ else
+ my_conf+="
+ $(use_with mysql mysql /usr)"
+ fi
+ my_conf+="
+ $(use_with mysql mysql-sock /var/run/mysqld/mysqld.sock)"
+ fi
+
+ # MySQLi support
+ if use mysqlnd ; then
+ my_conf+="
+ $(use_with mysqli mysqli mysqlnd)"
+ else
+ my_conf+="
+ $(use_with mysqli mysqli /usr/bin/mysql_config)"
+ fi
+
+ # ODBC support
+ if use odbc ; then
+ my_conf+="
+ $(use_with odbc unixODBC /usr)"
+ fi
+
+ if use iodbc ; then
+ my_conf+="
+ $(use_with iodbc iodbc /usr)"
+ fi
+
+ # Oracle support
+ if use oci8-instant-client ; then
+ OCI8IC_PKG="$(best_version dev-db/oracle-instantclient-basic | \
+ sed -e 's|dev-db/oracle-instantclient-basic-||g' | \
+ sed -e 's|-r.*||g')"
+
+ my_conf+="
+ $(use_with oci8-instant-client oci8 "instantclient,/usr/lib/oracle/${OCI8IC_PKG}/client/lib")"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ my_conf+="
+ $(use_with mssql pdo-dblib )"
+ if use mysqlnd ; then
+ my_conf+="
+ $(use_with mysql pdo-mysql mysqlnd)"
+ else
+ my_conf+="
+ $(use_with mysql pdo-mysql /usr)"
+ fi
+ my_conf+="
+ $(use_with postgres pdo-pgsql )
+ $(use_with sqlite3 pdo-sqlite /usr)
+ $(use_with odbc pdo-odbc unixODBC,/usr)"
+ if use oci8-instant-client ; then
+ my_conf+="
+ $(use_with oci8-instant-client pdo-oci "instantclient,/usr,${OCI8IC_PKG}" )"
+ fi
+ fi
+
+ # readline/libedit support
+ my_conf+="
+ $(use_with readline readline )
+ $(use_with libedit libedit )"
+
+ # Session support
+ if use session ; then
+ my_conf+="
+ $(use_with sharedmem mm )"
+ else
+ my_conf+="
+ $(use_enable session session )"
+ fi
+
+ if use pic ; then
+ my_conf="${my_conf} --with-pic"
+ fi
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ my_conf="${my_conf} --with-pcre-regex=/usr --with-pcre-dir=/usr"
+
+ # Catch CFLAGS problems
+ # Fixes bug #14067.
+ # Changed order to run it in reverse for bug #32022 and #12021.
+ replace-cpu-flags "k6*" "i586"
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|cgi|embed|fpm)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
diff --git a/dev-lang/php/files/eblits/src_install-v1.eblit b/dev-lang/php/files/eblits/src_install-v1.eblit
new file mode 100644
index 0000000..225c8f4
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_install-v1.eblit
@@ -0,0 +1,160 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_install-v1.eblit,v 1.12 2010/10/27 10:33:18 olemarkus Exp $
+
+eblit-php-src_install() {
+ # see bug #324739 for what happens when we don't have that
+ addpredict /usr/share/snmp/mibs/.index
+
+ # grab the first SAPI that got built and install common files from there
+ local first_sapi=""
+ for sapi in $SAPIS ; do
+ if use $sapi ; then
+ first_sapi=$sapi
+ break
+ fi
+ done
+
+ # Makefile forgets to create this before trying to write to it...
+ dodir "${PHP_DESTDIR}/bin"
+
+ # Install php environment (without any sapis)
+ cd "${WORKDIR}/sapis-build/$first_sapi"
+ emake INSTALL_ROOT="${D}" \
+ install-build install-headers install-programs \
+ || die "emake install failed"
+
+ local extension_dir="$("${D}/${PHP_DESTDIR}/bin/php-config" --extension-dir)"
+
+ # And install the modules to it
+ if use sharedext ; then
+ insinto "${extension_dir}"
+ doins "${WORKDIR}/sapis-build/${first_sapi}/modules/"*.so
+ fi
+
+ # Generate the USE file for PHP
+ phpconfutils_generate_usefile
+
+ # Create the directory where we'll put version-specific php scripts
+ keepdir /usr/share/php${PHP_MV}
+
+ local sapi="", file=""
+ local sapi_list=""
+
+ for sapi in ${SAPIS}; do
+ if use "${sapi}" ; then
+ einfo "Installing SAPI: ${sapi}"
+ cd "${WORKDIR}/sapis-build/${sapi}"
+ # needed each time, php_install_ini would reset it
+ into "${PHP_DESTDIR}"
+ file=$(find "${SAPI_DIR}/${sapi}/" -type f | head -n 1)
+
+ if [[ "${file: -3}" == ".so" ]]; then
+ if [[ "${sapi}" == "apache2" ]]; then
+ insinto "${PHP_DESTDIR}/../apache2/modules/"
+ newins "${file}" "${file/*\/}"
+ else
+ dolib.so "${file}" || die "Unable to install ${sapi} sapi"
+ fi
+ else
+ dobin "${file}" || die "Unable to install ${sapi} sapi"
+ fi
+
+ php_install_ini "${sapi}"
+
+ # construct correct SAPI string for php-config
+ # thanks to ferringb for the bash voodoo
+ if [[ "${sapi}" == "apache2" ]]; then
+ sapi_list="${sapi_list:+${sapi_list} }apache2handler"
+ else
+ sapi_list="${sapi_list:+${sapi_list} }${sapi}"
+ fi
+ fi
+ done
+
+ # Install env.d files
+ newenvd "${FILESDIR}/20php${PHP_MV}-envd" \
+ "20php${PHP_MV}"
+ sed -e "s|/lib/|/$(get_libdir)/|g" -i \
+ "${D}/etc/env.d/20php${PHP_MV}"
+
+ # set php-config variable correctly (bug #278439)
+ sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
+ "${D}/usr/$(get_libdir)/php5/bin/php-config"
+}
+
+php_install_ini() {
+ local phpsapi="${1}"
+
+ # work out where we are installing the ini file
+ php_set_ini_dir "${phpsapi}"
+
+ local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
+ cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"
+
+ # default to allow_url_open=Off, bug 332763
+ sed -e 's|^allow_url_fopen .*|allow_url_fopen = Off|g' -i "${phpinisrc}"
+
+ # default to expose_php=Off, bug 300695
+ sed -e 's|^expose_php .*|expose_php = Off|g' -i "${phpinisrc}"
+
+ # default to /tmp for save_path, bug #282768
+ sed -e 's|^;session.save_path .*$|session.save_path = "/tmp"|g' -i "${phpinisrc}"
+
+ # Set the extension dir
+ sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"
+
+ # Set the include path to point to where we want to find PEAR packages
+ sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:/usr/share/php'${PHP_MV}':/usr/share/php"|' -i "${phpinisrc}"
+
+ dodir "${PHP_INI_DIR}"
+ insinto "${PHP_INI_DIR}"
+ newins "${phpinisrc}" "${PHP_INI_FILE}"
+
+ dodir "${PHP_EXT_INI_DIR}"
+ dodir "${PHP_EXT_INI_DIR_ACTIVE}"
+
+ # Install any extensions built as shared objects
+ if use sharedext ; then
+ insinto "${PHP_EXT_INI_DIR}"
+ for extension in "${D}/${extension_dir}/"*.so ; do
+ extension="${extension##*/}"
+ inifilename="${extension/.so/.ini}"
+ echo "extension=${extension}" > "${WORKDIR}/sapis-build/${phpsapi}/modules/$inifilename"
+ doins "${WORKDIR}/sapis-build/${phpsapi}/modules/$inifilename"
+ dosym "${PHP_EXT_INI_DIR}/${inifilename}" "${PHP_EXT_INI_DIR_ACTIVE}/${inifilename}"
+ done
+ fi
+
+ # SAPI-specific handling
+ if [[ "${sapi}" == "apache2" ]] ; then
+ if use concurrentmodphp ; then
+ einfo "Installing Apache2 config file 70_mod_php${PHP_MV}_concurr.conf"
+ insinto "${APACHE_MODULES_CONFDIR}"
+ newins "${FILESDIR}/70_mod_php${PHP_MV}_concurr.conf-apache2" \
+ "70_mod_php${PHP_MV}_concurr.conf"
+
+ # Put the ld version script in the right place so
+ # it's always accessible
+ insinto "/var/lib/php-pkg/${CATEGORY}/${PN}-${PVR}/"
+ doins "${FILESDIR}/php${PHP_MV}-ldvs"
+ else
+ einfo "Installing Apache2 config 70_mod_php${PHP_MV}.conf"
+ insinto ${APACHE_MODULES_CONFDIR}
+ newins "${FILESDIR}/70_mod_php${PHP_MV}.conf-apache2" \
+ "70_mod_php${PHP_MV}.conf"
+ fi
+ fi
+
+ if [[ "${sapi}" == "fpm" ]] ; then
+ einfo "Installing FPM CGI config file php-fpm.conf"
+ epatch "${FILESDIR}/php-fpm-gentooified.patch"
+ insinto ${PHP_INI_DIR}
+ doins "${WORKDIR}/sapis-build/fpm/sapi/fpm/php-fpm.conf"
+ dodir "/etc/init.d"
+ insinto "/etc/init.d"
+ newins "${FILESDIR}/php-fpm.init" "php-fpm"
+ fperms 755 "/etc/init.d/php-fpm"
+ dosym "${PHP_DESTDIR}/bin/php-fpm" "/usr/bin/php-fpm"
+ fi
+}
diff --git a/dev-lang/php/files/eblits/src_install-v2.eblit b/dev-lang/php/files/eblits/src_install-v2.eblit
new file mode 100644
index 0000000..b0dd1ae
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_install-v2.eblit
@@ -0,0 +1,165 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_install-v2.eblit,v 1.14 2011/12/16 09:02:43 olemarkus Exp $
+
+eblit-php-src_install() {
+ # see bug #324739 for what happens when we don't have that
+ addpredict /usr/share/snmp/mibs/.index
+
+ # grab the first SAPI that got built and install common files from there
+ local first_sapi=""
+ for sapi in $SAPIS ; do
+ if use $sapi ; then
+ first_sapi=$sapi
+ break
+ fi
+ done
+
+ # Makefile forgets to create this before trying to write to it...
+ dodir "${PHP_DESTDIR}/bin"
+
+ # Install php environment (without any sapis)
+ cd "${WORKDIR}/sapis-build/$first_sapi"
+ emake INSTALL_ROOT="${D}" \
+ install-build install-headers install-programs \
+ || die "emake install failed"
+
+ local extension_dir="$("${D}/${PHP_DESTDIR}/bin/php-config" --extension-dir)"
+
+ # And install the modules to it
+ if use sharedext ; then
+ insinto "${extension_dir}"
+ doins "${WORKDIR}/sapis-build/${first_sapi}/modules/"*.so
+ fi
+
+ # Create the directory where we'll put version-specific php scripts
+ keepdir /usr/share/php${PHP_MV}
+
+ local sapi="", file=""
+ local sapi_list=""
+
+ for sapi in ${SAPIS}; do
+ if use "${sapi}" ; then
+ einfo "Installing SAPI: ${sapi}"
+ cd "${WORKDIR}/sapis-build/${sapi}"
+ # needed each time, php_install_ini would reset it
+ into "${PHP_DESTDIR}"
+ file=$(find "${SAPI_DIR}/${sapi}/" -type f | head -n 1)
+
+ if [[ "${file: -3}" == ".so" ]]; then
+ if [[ "${sapi}" == "apache2" ]]; then
+ insinto "${PHP_DESTDIR}/apache2/"
+ newins "${file}" "${file/*\/}"
+ keepdir "/usr/$(get_libdir)/apache2/modules"
+ else
+ dolib.so "${file}" || die "Unable to install ${sapi} sapi"
+ fi
+ else
+ dobin "${file}" || die "Unable to install ${sapi} sapi"
+ fi
+
+ php_install_ini "${sapi}"
+
+ # construct correct SAPI string for php-config
+ # thanks to ferringb for the bash voodoo
+ if [[ "${sapi}" == "apache2" ]]; then
+ sapi_list="${sapi_list:+${sapi_list} }apache2handler"
+ else
+ sapi_list="${sapi_list:+${sapi_list} }${sapi}"
+ fi
+ fi
+ done
+
+ # Install env.d files
+ newenvd "${FILESDIR}/20php5-envd" \
+ "20php${SLOT}"
+ sed -e "s|/lib/|/$(get_libdir)/|g" -i \
+ "${D}/etc/env.d/20php${SLOT}"
+ sed -e "s|php5|php${SLOT}|g" -i \
+ "${D}/etc/env.d/20php${SLOT}"
+
+ # set php-config variable correctly (bug #278439)
+ sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
+ "${D}/usr/$(get_libdir)/php${SLOT}/bin/php-config"
+}
+
+php_install_ini() {
+ local phpsapi="${1}"
+
+ # work out where we are installing the ini file
+ php_set_ini_dir "${phpsapi}"
+
+ local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
+ cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"
+
+ # default to allow_url_open=Off, bug 332763
+ sed -e 's|^allow_url_fopen .*|allow_url_fopen = Off|g' -i "${phpinisrc}"
+
+ # default to expose_php=Off, bug 300695
+ sed -e 's|^expose_php .*|expose_php = Off|g' -i "${phpinisrc}"
+
+ # default to /tmp for save_path, bug #282768
+ sed -e 's|^;session.save_path .*$|session.save_path = "/tmp"|g' -i "${phpinisrc}"
+
+ # Set the extension dir
+ sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"
+
+ # Set the include path to point to where we want to find PEAR packages
+ sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:/usr/share/php'${PHP_MV}':/usr/share/php"|' -i "${phpinisrc}"
+
+ dodir "${PHP_INI_DIR}"
+ insinto "${PHP_INI_DIR}"
+ newins "${phpinisrc}" "${PHP_INI_FILE}"
+
+ elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR}"
+ elog
+
+ dodir "${PHP_EXT_INI_DIR}"
+ dodir "${PHP_EXT_INI_DIR_ACTIVE}"
+
+ # Install any extensions built as shared objects
+ if use sharedext ; then
+ insinto "${PHP_EXT_INI_DIR}"
+ for extension in "${D}/${extension_dir}/"*.so ; do
+ extension="${extension##*/}"
+ inifilename="${extension/.so/.ini}"
+ echo "extension=${extension}" > "${WORKDIR}/sapis-build/${phpsapi}/modules/$inifilename"
+ doins "${WORKDIR}/sapis-build/${phpsapi}/modules/$inifilename"
+ dosym "${PHP_EXT_INI_DIR}/${inifilename}" "${PHP_EXT_INI_DIR_ACTIVE}/${inifilename}"
+ done
+ fi
+
+ # SAPI-specific handling
+ if [[ "${sapi}" == "apache2" ]] ; then
+ insinto "${APACHE_MODULES_CONFDIR}"
+ newins "${FILESDIR}/70_mod_php${PHP_MV}.conf-apache2" \
+ "70_mod_php${PHP_MV}.conf"
+ fi
+
+ if [[ "${sapi}" == "fpm" ]] ; then
+ [[ -z ${PHP_FPM_INIT_VER} ]] && PHP_FPM_INIT_VER=3
+ [[ -z ${PHP_FPM_CONF_VER} ]] && PHP_FPM_CONF_VER=0
+ einfo "Installing FPM CGI config file php-fpm.conf"
+ insinto ${PHP_INI_DIR}
+ newins "${FILESDIR}/php-fpm-r${PHP_FPM_CONF_VER}.conf" php-fpm.conf
+ dodir "/etc/init.d"
+ insinto "/etc/init.d"
+ newinitd "${FILESDIR}/php-fpm-r${PHP_FPM_INIT_VER}.init" "php-fpm"
+ #dosym "${PHP_DESTDIR}/bin/php-fpm" "/usr/bin/php-fpm"
+
+ # Remove bogus /etc/php-fpm.conf.default (bug 359906)
+ [[ -f "${D}/etc/php-fpm.conf.default" ]] && rm "${D}/etc/php-fpm.conf.default"
+ fi
+
+ # Install PHP ini files into /usr/share/php
+ if [[ ${SLOT} == '5.2' ]]; then
+ newdoc php.ini-dist php.ini-development
+ newdoc php.ini-recommended php.ini-production
+ fi
+
+ if [[ ${SLOT} == '5.3' ]]; then
+ dodoc php.ini-development
+ dodoc php.ini-production
+ fi
+
+}
diff --git a/dev-lang/php/files/eblits/src_install-v3.eblit b/dev-lang/php/files/eblits/src_install-v3.eblit
new file mode 100644
index 0000000..4c3ba24
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_install-v3.eblit
@@ -0,0 +1,160 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_install-v3.eblit,v 1.5 2011/11/08 18:14:08 olemarkus Exp $
+
+eblit-php-src_install() {
+ # see bug #324739 for what happens when we don't have that
+ addpredict /usr/share/snmp/mibs/.index
+
+ # grab the first SAPI that got built and install common files from there
+ local first_sapi=""
+ for sapi in $SAPIS ; do
+ if use $sapi ; then
+ first_sapi=$sapi
+ break
+ fi
+ done
+
+ # Makefile forgets to create this before trying to write to it...
+ dodir "${PHP_DESTDIR}/bin"
+
+ # Install php environment (without any sapis)
+ cd "${WORKDIR}/sapis-build/$first_sapi"
+ emake INSTALL_ROOT="${D}" \
+ install-build install-headers install-programs \
+ || die "emake install failed"
+
+ local extension_dir="$("${D}/${PHP_DESTDIR}/bin/php-config" --extension-dir)"
+
+ # Create the directory where we'll put version-specific php scripts
+ keepdir /usr/share/php${PHP_MV}
+
+ local sapi="", file=""
+ local sapi_list=""
+
+ for sapi in ${SAPIS}; do
+ if use "${sapi}" ; then
+ einfo "Installing SAPI: ${sapi}"
+ cd "${WORKDIR}/sapis-build/${sapi}"
+
+ if [[ "${sapi}" == "apache2" ]] ; then
+ # We're specifically not using emake install-sapi as libtool
+ # may cause unnecessary relink failures (see bug #351266)
+ insinto "${PHP_DESTDIR}/apache2/"
+ newins ".libs/libphp5.so" "libphp${PHP_MV}.so"
+ keepdir "/usr/$(get_libdir)/apache2/modules"
+ else
+ # needed each time, php_install_ini would reset it
+ into "${PHP_DESTDIR}"
+ case "$sapi" in
+ cli)
+ source="sapi/cli/php"
+ ;;
+ cgi)
+ source="sapi/cgi/php-cgi"
+ ;;
+ fpm)
+ source="sapi/fpm/php-fpm"
+ ;;
+ embed)
+ source="libs/libphp${PHP_MV}.so"
+ ;;
+ *)
+ die "unhandled sapi in src_install"
+ ;;
+ esac
+
+ if [[ "${source: -3}" == ".so" ]]; then
+ dolib.so "${source}" || die "Unable to install ${sapi} sapi"
+ else
+ dobin "${source}" || die "Unable to install ${sapi} sapi"
+ fi
+ fi
+
+ php_install_ini "${sapi}"
+
+ # construct correct SAPI string for php-config
+ # thanks to ferringb for the bash voodoo
+ if [[ "${sapi}" == "apache2" ]]; then
+ sapi_list="${sapi_list:+${sapi_list} }apache2handler"
+ else
+ sapi_list="${sapi_list:+${sapi_list} }${sapi}"
+ fi
+ fi
+ done
+
+ # Install env.d files
+ newenvd "${FILESDIR}/20php5-envd" \
+ "20php${SLOT}"
+ sed -e "s|/lib/|/$(get_libdir)/|g" -i \
+ "${D}/etc/env.d/20php${SLOT}"
+ sed -e "s|php5|php${SLOT}|g" -i \
+ "${D}/etc/env.d/20php${SLOT}"
+
+ # set php-config variable correctly (bug #278439)
+ sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
+ "${D}/usr/$(get_libdir)/php${SLOT}/bin/php-config"
+}
+
+php_install_ini() {
+ local phpsapi="${1}"
+
+ # work out where we are installing the ini file
+ php_set_ini_dir "${phpsapi}"
+
+ local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
+ cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"
+
+ # default to /tmp for save_path, bug #282768
+ sed -e 's|^;session.save_path .*$|session.save_path = "/tmp"|g' -i "${phpinisrc}"
+
+ # Set the extension dir
+ sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"
+
+ # Set the include path to point to where we want to find PEAR packages
+ sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:/usr/share/php'${PHP_MV}':/usr/share/php"|' -i "${phpinisrc}"
+
+ dodir "${PHP_INI_DIR}"
+ insinto "${PHP_INI_DIR}"
+ newins "${phpinisrc}" "${PHP_INI_FILE}"
+
+ elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR}"
+ elog
+
+ dodir "${PHP_EXT_INI_DIR}"
+ dodir "${PHP_EXT_INI_DIR_ACTIVE}"
+
+ # SAPI-specific handling
+ if [[ "${sapi}" == "apache2" ]] ; then
+ insinto "${APACHE_MODULES_CONFDIR}"
+ newins "${FILESDIR}/70_mod_php${PHP_MV}.conf-apache2" \
+ "70_mod_php${PHP_MV}.conf"
+ fi
+
+ if [[ "${sapi}" == "fpm" ]] ; then
+ [[ -z ${PHP_FPM_INIT_VER} ]] && PHP_FPM_INIT_VER=3
+ [[ -z ${PHP_FPM_CONF_VER} ]] && PHP_FPM_CONF_VER=0
+ einfo "Installing FPM CGI config file php-fpm.conf"
+ insinto ${PHP_INI_DIR}
+ newins "${FILESDIR}/php-fpm-r${PHP_FPM_CONF_VER}.conf" php-fpm.conf
+ dodir "/etc/init.d"
+ insinto "/etc/init.d"
+ newinitd "${FILESDIR}/php-fpm-r${PHP_FPM_INIT_VER}.init" "php-fpm"
+ #dosym "${PHP_DESTDIR}/bin/php-fpm" "/usr/bin/php-fpm"
+
+ # Remove bogus /etc/php-fpm.conf.default (bug 359906)
+ [[ -f "${D}/etc/php-fpm.conf.default" ]] && rm "${D}/etc/php-fpm.conf.default"
+ fi
+
+ # Install PHP ini files into /usr/share/php
+ if [[ ${SLOT} == '5.2' ]]; then
+ newdoc php.ini-dist php.ini-development
+ newdoc php.ini-recommended php.ini-production
+ fi
+
+ if [[ ${SLOT} == '5.3' ]]; then
+ dodoc php.ini-development
+ dodoc php.ini-production
+ fi
+
+}
diff --git a/dev-lang/php/files/eblits/src_prepare-v1.eblit b/dev-lang/php/files/eblits/src_prepare-v1.eblit
new file mode 100644
index 0000000..d6856b8
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_prepare-v1.eblit
@@ -0,0 +1,70 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_prepare-v1.eblit,v 1.3 2010/06/01 16:17:05 mabi Exp $
+
+eblit-php-src_prepare() {
+ # USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
+ # ([empty session.save_path]/session_mm_[sapi][gid].sem)
+ # there is no easy way to circumvent that, all php calls during
+ # install use -n, so no php.ini file will be used.
+ # As such, this is the easiest way to get around
+ addpredict /session_mm_cli250.sem
+ addpredict /session_mm_cli0.sem
+
+ # Concurrent PHP Apache2 modules support
+ use apache2 && use concurrentmodphp && \
+ epatch "${WORKDIR}/${PV}/opt/concurrent_apache_modules.patch"
+
+ # kolab support (support for imap annotations)
+ use kolab && epatch "${WORKDIR}/${PV}/opt/imap-kolab-annotations.patch"
+
+ # Change PHP branding
+ sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1${PHP_EXTRA_BRANDING}-pl${PR/r/}-gentoo\2|g" \
+ -i configure.in || die "Unable to change PHP branding"
+
+ # Apply generic PHP patches
+ EPATCH_SOURCE="${WORKDIR}/${PV}/generic" EPATCH_SUFFIX="patch" \
+ EPATCH_FORCE="yes" \
+ EPATCH_MULTI_MSG="Applying generic patches and fixes from upstream..." epatch
+
+ # Patch PHP to show Gentoo as the server platform
+ sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+ -i configure.in || die "Failed to fix server platform name"
+
+ # Prevent PHP from activating the Apache config,
+ # as we will do that ourselves
+ sed -i \
+ -e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ -e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
+
+ # Patch PHP to support heimdal instead of mit-krb5
+ if has_version "app-crypt/heimdal" ; then
+ sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+ || die "Failed to fix heimdal libname"
+ sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+ || die "Failed to fix heimdal crypt library reference"
+ fi
+
+ # Suhosin support
+ if use suhosin ; then
+ epatch "${WORKDIR}/${SUHOSIN_PATCH}"
+ fi
+
+ # rebuild the whole autotools stuff as we are heavily patching it
+ # (suhosin, fastbuild, ...)
+
+ # eaclocal doesn't accept --force, so we try to force re-generation
+ # this way
+ rm aclocal.m4
+
+ # work around divert() issues with newer autoconf, bug #281697
+ if has_version '>=sys-devel/autoconf-2.64' ; then
+ sed -i -r \
+ -e 's:^((m4_)?divert)[(]([0-9]*)[)]:\1(600\3):' \
+ $(grep -l divert $(find . -name '*.m4') configure.in) || die
+ fi
+ eautoreconf --force -W no-cross
+}
+
+
diff --git a/dev-lang/php/files/eblits/src_prepare-v2.eblit b/dev-lang/php/files/eblits/src_prepare-v2.eblit
new file mode 100644
index 0000000..b6bd72e
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_prepare-v2.eblit
@@ -0,0 +1,71 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_prepare-v2.eblit,v 1.3 2011/01/05 11:23:16 mabi Exp $
+
+eblit-php-src_prepare() {
+ # USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
+ # ([empty session.save_path]/session_mm_[sapi][gid].sem)
+ # there is no easy way to circumvent that, all php calls during
+ # install use -n, so no php.ini file will be used.
+ # As such, this is the easiest way to get around
+ addpredict /session_mm_cli250.sem
+ addpredict /session_mm_cli0.sem
+
+ # kolab support (support for imap annotations)
+ use kolab && epatch "${WORKDIR}/${PV}/opt/imap-kolab-annotations.patch"
+
+ # Change PHP branding
+ sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1${PHP_EXTRA_BRANDING}-pl${PR/r/}-gentoo\2|g" \
+ -i configure.in || die "Unable to change PHP branding"
+
+ # Apply generic PHP patches
+ EPATCH_SOURCE="${WORKDIR}/${PV}/generic" EPATCH_SUFFIX="patch" \
+ EPATCH_FORCE="yes" \
+ EPATCH_MULTI_MSG="Applying generic patches and fixes from upstream..." epatch
+
+ # Patch PHP to show Gentoo as the server platform
+ sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+ -i configure.in || die "Failed to fix server platform name"
+
+ # Prevent PHP from activating the Apache config,
+ # as we will do that ourselves
+ sed -i \
+ -e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ -e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
+
+ # Patch PHP to support heimdal instead of mit-krb5
+ if has_version "app-crypt/heimdal" ; then
+ sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+ || die "Failed to fix heimdal libname"
+ sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+ || die "Failed to fix heimdal crypt library reference"
+ fi
+
+ # Suhosin support
+ if [[ -n $SUHOSIN_VERSION ]] ; then
+ if use suhosin ; then
+ epatch "${WORKDIR}/${SUHOSIN_PATCH}"
+ fi
+ else
+ ewarn "Please note that this version of PHP does not yet come with a suhosin patch"
+ fi
+
+
+ # rebuild the whole autotools stuff as we are heavily patching it
+ # (suhosin, fastbuild, ...)
+
+ # eaclocal doesn't accept --force, so we try to force re-generation
+ # this way
+ rm aclocal.m4
+
+ # work around divert() issues with newer autoconf, bug #281697
+ if has_version '>=sys-devel/autoconf-2.64' ; then
+ sed -i -r \
+ -e 's:^((m4_)?divert)[(]([0-9]*)[)]:\1(600\3):' \
+ $(grep -l divert $(find . -name '*.m4') configure.in) || die
+ fi
+ eautoreconf --force -W no-cross
+}
+
+
diff --git a/dev-lang/php/files/eblits/src_prepare-v3.eblit b/dev-lang/php/files/eblits/src_prepare-v3.eblit
new file mode 100644
index 0000000..7e270f9
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_prepare-v3.eblit
@@ -0,0 +1,73 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_prepare-v3.eblit,v 1.1 2011/03/13 09:48:06 olemarkus Exp $
+
+eblit-php-src_prepare() {
+ # USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
+ # ([empty session.save_path]/session_mm_[sapi][gid].sem)
+ # there is no easy way to circumvent that, all php calls during
+ # install use -n, so no php.ini file will be used.
+ # As such, this is the easiest way to get around
+ addpredict /session_mm_cli250.sem
+ addpredict /session_mm_cli0.sem
+
+ # kolab support (support for imap annotations)
+ use kolab && epatch "${WORKDIR}/${PV}/opt/imap-kolab-annotations.patch"
+
+ # Change PHP branding
+ sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1${PHP_EXTRA_BRANDING}-pl${PR/r/}-gentoo\2|g" \
+ -i configure.in || die "Unable to change PHP branding"
+
+ # Apply generic PHP patches
+ EPATCH_SOURCE="${WORKDIR}/${PV}/generic" EPATCH_SUFFIX="patch" \
+ EPATCH_FORCE="yes" \
+ EPATCH_MULTI_MSG="Applying generic patches and fixes from upstream..." epatch
+
+ # Patch PHP to show Gentoo as the server platform
+ sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+ -i configure.in || die "Failed to fix server platform name"
+
+ # Prevent PHP from activating the Apache config,
+ # as we will do that ourselves
+ sed -i \
+ -e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ -e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
+
+ # Patch PHP to support heimdal instead of mit-krb5
+ if has_version "app-crypt/heimdal" ; then
+ sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+ || die "Failed to fix heimdal libname"
+ sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+ || die "Failed to fix heimdal crypt library reference"
+ fi
+
+ # Suhosin support
+ if [[ -n $SUHOSIN_VERSION ]] ; then
+ if use suhosin ; then
+ epatch "${WORKDIR}/${SUHOSIN_PATCH}"
+ fi
+ else
+ ewarn "Please note that this version of PHP does not yet come with a suhosin patch"
+ fi
+
+ #Add user patches #357637
+ epatch_user
+
+ # rebuild the whole autotools stuff as we are heavily patching it
+ # (suhosin, fastbuild, ...)
+
+ # eaclocal doesn't accept --force, so we try to force re-generation
+ # this way
+ rm aclocal.m4
+
+ # work around divert() issues with newer autoconf, bug #281697
+ if has_version '>=sys-devel/autoconf-2.64' ; then
+ sed -i -r \
+ -e 's:^((m4_)?divert)[(]([0-9]*)[)]:\1(600\3):' \
+ $(grep -l divert $(find . -name '*.m4') configure.in) || die
+ fi
+ eautoreconf --force -W no-cross
+}
+
+
diff --git a/dev-lang/php/files/eblits/src_prepare-v4.eblit b/dev-lang/php/files/eblits/src_prepare-v4.eblit
new file mode 100644
index 0000000..cab740f
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_prepare-v4.eblit
@@ -0,0 +1,62 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_prepare-v4.eblit,v 1.1 2011/06/29 06:38:38 olemarkus Exp $
+
+eblit-php-src_prepare() {
+ # USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
+ # ([empty session.save_path]/session_mm_[sapi][gid].sem)
+ # there is no easy way to circumvent that, all php calls during
+ # install use -n, so no php.ini file will be used.
+ # As such, this is the easiest way to get around
+ addpredict /session_mm_cli250.sem
+ addpredict /session_mm_cli0.sem
+
+ # kolab support (support for imap annotations)
+ use kolab && epatch "${WORKDIR}/patches/opt/imap-kolab-annotations.patch"
+
+ # Change PHP branding
+ # Get the alpha/beta/rc version
+ local ver=$(get_version_component_range 4)
+ sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1${PHP_EXTRA_BRANDING}-${ver}-pl${PR/r/}-gentoo\2|g" \
+ -i configure.in || die "Unable to change PHP branding"
+
+ # Apply generic PHP patches
+ EPATCH_SOURCE="${WORKDIR}/patches/generic" EPATCH_SUFFIX="patch" \
+ EPATCH_FORCE="yes" \
+ EPATCH_MULTI_MSG="Applying generic patches and fixes from upstream..." epatch
+
+ # Patch PHP to show Gentoo as the server platform
+ sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+ -i configure.in || die "Failed to fix server platform name"
+
+ # Prevent PHP from activating the Apache config,
+ # as we will do that ourselves
+ sed -i \
+ -e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ -e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
+
+ # Patch PHP to support heimdal instead of mit-krb5
+ if has_version "app-crypt/heimdal" ; then
+ sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+ || die "Failed to fix heimdal libname"
+ sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+ || die "Failed to fix heimdal crypt library reference"
+ fi
+
+ # Suhosin support
+ if [[ -n $SUHOSIN_VERSION ]] ; then
+ if use suhosin ; then
+ epatch "${WORKDIR}/${SUHOSIN_PATCH}"
+ fi
+ else
+ ewarn "Please note that this version of PHP does not yet come with a suhosin patch"
+ fi
+
+ #Add user patches #357637
+ epatch_user
+
+ #force rebuilding aclocal.m4
+ rm aclocal.m4
+ eautoreconf
+}
diff --git a/dev-lang/php/files/eblits/src_test-v1.eblit b/dev-lang/php/files/eblits/src_test-v1.eblit
new file mode 100644
index 0000000..95ebc7d
--- /dev/null
+++ b/dev-lang/php/files/eblits/src_test-v1.eblit
@@ -0,0 +1,54 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/files/eblits/src_test-v1.eblit,v 1.2 2010/08/09 10:47:57 mabi Exp $
+
+eblit-php-src_test() {
+ vecho ">>> Test phase [test]: ${CATEGORY}/${PF}"
+
+ if [[ ! -x "${WORKDIR}/sapis/cli/php" ]] ; then
+ ewarn "Test phase requires USE=cli, skipping"
+ return
+ else
+ export TEST_PHP_EXECUTABLE="${WORKDIR}/sapis/cli/php"
+ fi
+
+ if [[ -x "${WORKDIR}/sapis/cgi/php-cgi" ]] ; then
+ export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
+ fi
+
+
+ REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d "session.save_path=${T}" \
+ "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d "session.save_path=${T}"
+
+ for name in ${EXPECTED_TEST_FAILURES}; do
+ mv "${name}.out" "${name}.out.orig" 2>/dev/null
+ done
+
+ local failed="$(find -name '*.out')"
+ if [[ ${failed} != "" ]] ; then
+ ewarn "The following test cases failed unexpectedly:"
+ for name in ${failed}; do
+ ewarn " ${name/.out/}"
+ done
+ else
+ einfo "No unexpected test failures, all fine"
+ fi
+
+ if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
+ local passed=""
+ for name in ${EXPECTED_TEST_FAILURES}; do
+ [[ -f "${name}.diff" ]] && continue
+ passed="${passed} ${name}"
+ done
+ if [[ ${passed} != "" ]] ; then
+ einfo "The following test cases passed unexpectedly:"
+ for name in ${passed}; do
+ ewarn " ${passed}"
+ done
+ else
+ einfo "None of the known-to-fail tests passed, all fine"
+ fi
+ fi
+}
+
+
diff --git a/dev-lang/php/files/php-fpm-r4.init b/dev-lang/php/files/php-fpm-r4.init
new file mode 100755
index 0000000..a186d83
--- /dev/null
+++ b/dev-lang/php/files/php-fpm-r4.init
@@ -0,0 +1,47 @@
+#!/sbin/runscript
+
+set_phpvars() {
+ PHPSLOT=${SVCNAME#php-fpm-}
+ [ ${PHPSLOT} = 'php-fpm' ] && PHPSLOT="$(eselect php show fpm)"
+
+ PHP_FPM_CONF="/etc/php/fpm-${PHPSLOT}/php-fpm.conf"
+ PHP_FPM_PID="/var/run/php-fpm-${PHPSLOT}.pid"
+}
+
+extra_commands="depend"
+extra_started_commands="reload"
+
+depend() {
+ need net
+ use apache2 lighttpd nginx
+}
+
+start() {
+ ebegin "Starting PHP FastCGI Process Manager"
+ set_phpvars
+ start-stop-daemon --start --pidfile ${PHP_FPM_PID} --exec \
+ /usr/lib/${PHPSLOT}/bin/php-fpm -- -y "${PHP_FPM_CONF}" -g "${PHP_FPM_PID}"
+ local i=0
+ local timeout=5
+ while [ ! -f ${PHP_FPM_PID} ] && [ $i -le $timeout ]; do
+ sleep 1
+ i=$(($i + 1))
+ done
+
+ [ $timeout -gt $i ]
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping PHP FastCGI Process Manager"
+ set_phpvars
+ start-stop-daemon --signal QUIT --stop --exec /usr/lib/${PHPSLOT}/bin/php-fpm --pidfile ${PHP_FPM_PID}
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading PHP FastCGI Process Manager"
+ set_phpvars
+ [ -f ${PHP_FPM_PID} ] && kill -USR2 $(cat ${PHP_FPM_PID})
+ eend $?
+}
diff --git a/dev-lang/php/files/php-fpm.conf b/dev-lang/php/files/php-fpm.conf
new file mode 100644
index 0000000..ddef717
--- /dev/null
+++ b/dev-lang/php/files/php-fpm.conf
@@ -0,0 +1,310 @@
+;;;;;;;;;;;;;;;;;;;;;
+; FPM Configuration ;
+;;;;;;;;;;;;;;;;;;;;;
+
+; All relative paths in this configuration file are relative to PHP's install
+; prefix (/usr/lib/php5.3). This prefix can be dynamicaly changed by using the
+; '-p' argument from the command line.
+
+; Include one or more files. If glob(3) exists, it is used to include a bunch of
+; files from a glob(3) pattern. This directive can be used everywhere in the
+; file.
+; Relative path can also be used. They will be prefixed by:
+; - the global prefix if it's been set (-p arguement)
+; - /usr/lib/php5.3 otherwise
+;include=/etc/php/fpm-php5.3/fpm.d/*.conf
+
+;;;;;;;;;;;;;;;;;;
+; Global Options ;
+;;;;;;;;;;;;;;;;;;
+
+[global]
+; Pid file
+; Note: the default prefix is /var/lib
+; Default Value: none
+; Note: The Gentoo init script expects the pid path
+; to be set to /var/run/php-fpm.pid
+pid = /var/run/php-fpm.pid
+
+; Error log file
+; Note: the default prefix is /var/lib
+; Default Value: log/php-fpm.log
+error_log = /var/log/php-fpm.log
+
+; Log level
+; Possible Values: alert, error, warning, notice, debug
+; Default Value: notice
+;log_level = notice
+
+; If this number of child processes exit with SIGSEGV or SIGBUS within the time
+; interval set by emergency_restart_interval then FPM will restart. A value
+; of '0' means 'Off'.
+; Default Value: 0
+;emergency_restart_threshold = 0
+
+; Interval of time used by emergency_restart_interval to determine when
+; a graceful restart will be initiated. This can be useful to work around
+; accidental corruptions in an accelerator's shared memory.
+; Available Units: s(econds), m(inutes), h(ours), or d(ays)
+; Default Unit: seconds
+; Default Value: 0
+;emergency_restart_interval = 0
+
+; Time limit for child processes to wait for a reaction on signals from master.
+; Available units: s(econds), m(inutes), h(ours), or d(ays)
+; Default Unit: seconds
+; Default Value: 0
+;process_control_timeout = 0
+
+; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging.
+; Default Value: yes
+;daemonize = yes
+
+;;;;;;;;;;;;;;;;;;;;
+; Pool Definitions ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Multiple pools of child processes may be started with different listening
+; ports and different management options. The name of the pool will be
+; used in logs and stats. There is no limitation on the number of pools which
+; FPM can handle. Your system will tell you anyway :)
+
+; Start a new pool named 'www'.
+; the variable $pool can we used in any directive and will be replaced by the
+; pool name ('www' here)
+[www]
+
+; Per pool prefix
+; It only applies on the following directives:
+; - 'slowlog'
+; - 'listen' (unixsocket)
+; - 'chroot'
+; - 'chdir'
+; - 'php_values'
+; - 'php_admin_values'
+; When not set, the global prefix (or /usr/lib/php5.3) applies instead.
+; Note: This directive can also be relative to the global prefix.
+; Default Value: none
+;prefix = /path/to/pools/$pool
+
+; The address on which to accept FastCGI requests.
+; Valid syntaxes are:
+; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on
+; a specific port;
+; 'port' - to listen on a TCP socket to all addresses on a
+; specific port;
+; '/path/to/unix/socket' - to listen on a unix socket.
+; Note: This value is mandatory.
+listen = 127.0.0.1:9000
+
+; Set listen(2) backlog. A value of '-1' means unlimited.
+; Default Value: 128 (-1 on FreeBSD and OpenBSD)
+;listen.backlog = -1
+
+; List of ipv4 addresses of FastCGI clients which are allowed to connect.
+; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
+; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
+; must be separated by a comma. If this value is left blank, connections will be
+; accepted from any ip address.
+; Default Value: any
+;listen.allowed_clients = 127.0.0.1
+
+; Set permissions for unix socket, if one is used. In Linux, read/write
+; permissions must be set in order to allow connections from a web server. Many
+; BSD-derived systems allow connections regardless of permissions.
+; Default Values: user and group are set as the running user
+; mode is set to 0666
+;listen.owner = nobody
+;listen.group = nobody
+;listen.mode = 0666
+
+; Unix user/group of processes
+; Note: The user is mandatory. If the group is not set, the default user's group
+; will be used.
+user = nobody
+group = nobody
+
+; Choose how the process manager will control the number of child processes.
+; Possible Values:
+; static - a fixed number (pm.max_children) of child processes;
+; dynamic - the number of child processes are set dynamically based on the
+; following directives:
+; pm.max_children - the maximum number of children that can
+; be alive at the same time.
+; pm.start_servers - the number of children created on startup.
+; pm.min_spare_servers - the minimum number of children in 'idle'
+; state (waiting to process). If the number
+; of 'idle' processes is less than this
+; number then some children will be created.
+; pm.max_spare_servers - the maximum number of children in 'idle'
+; state (waiting to process). If the number
+; of 'idle' processes is greater than this
+; number then some children will be killed.
+; Note: This value is mandatory.
+pm = dynamic
+
+; The number of child processes to be created when pm is set to 'static' and the
+; maximum number of child processes to be created when pm is set to 'dynamic'.
+; This value sets the limit on the number of simultaneous requests that will be
+; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
+; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
+; CGI.
+; Note: Used when pm is set to either 'static' or 'dynamic'
+; Note: This value is mandatory.
+pm.max_children = 50
+
+; The number of child processes created on startup.
+; Note: Used only when pm is set to 'dynamic'
+; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
+;pm.start_servers = 20
+
+; The desired minimum number of idle server processes.
+; Note: Used only when pm is set to 'dynamic'
+; Note: Mandatory when pm is set to 'dynamic'
+pm.min_spare_servers = 5
+
+; The desired maximum number of idle server processes.
+; Note: Used only when pm is set to 'dynamic'
+; Note: Mandatory when pm is set to 'dynamic'
+pm.max_spare_servers = 35
+
+; The number of requests each child process should execute before respawning.
+; This can be useful to work around memory leaks in 3rd party libraries. For
+; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
+; Default Value: 0
+;pm.max_requests = 500
+
+; The URI to view the FPM status page. If this value is not set, no URI will be
+; recognized as a status page. By default, the status page shows the following
+; information:
+; accepted conn - the number of request accepted by the pool;
+; pool - the name of the pool;
+; process manager - static or dynamic;
+; idle processes - the number of idle processes;
+; active processes - the number of active processes;
+; total processes - the number of idle + active processes.
+; max children reached - number of times, the process limit has been reached,
+; when pm tries to start more children (works only for
+; pm 'dynamic')
+; The values of 'idle processes', 'active processes' and 'total processes' are
+; updated each second. The value of 'accepted conn' is updated in real time.
+; Example output:
+; accepted conn: 12073
+; pool: www
+; process manager: static
+; idle processes: 35
+; active processes: 65
+; total processes: 100
+; max children reached: 1
+; By default the status page output is formatted as text/plain. Passing either
+; 'html' or 'json' as a query string will return the corresponding output
+; syntax. Example:
+; http://www.foo.bar/status
+; http://www.foo.bar/status?json
+; http://www.foo.bar/status?html
+; Note: The value must start with a leading slash (/). The value can be
+; anything, but it may not be a good idea to use the .php extension or it
+; may conflict with a real PHP file.
+; Default Value: not set
+;pm.status_path = /status
+
+; The ping URI to call the monitoring page of FPM. If this value is not set, no
+; URI will be recognized as a ping page. This could be used to test from outside
+; that FPM is alive and responding, or to
+; - create a graph of FPM availability (rrd or such);
+; - remove a server from a group if it is not responding (load balancing);
+; - trigger alerts for the operating team (24/7).
+; Note: The value must start with a leading slash (/). The value can be
+; anything, but it may not be a good idea to use the .php extension or it
+; may conflict with a real PHP file.
+; Default Value: not set
+;ping.path = /ping
+
+; This directive may be used to customize the response of a ping request. The
+; response is formatted as text/plain with a 200 response code.
+; Default Value: pong
+;ping.response = pong
+
+; The timeout for serving a single request after which the worker process will
+; be killed. This option should be used when the 'max_execution_time' ini option
+; does not stop script execution for some reason. A value of '0' means 'off'.
+; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
+; Default Value: 0
+;request_terminate_timeout = 0
+
+; The timeout for serving a single request after which a PHP backtrace will be
+; dumped to the 'slowlog' file. A value of '0s' means 'off'.
+; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
+; Default Value: 0
+;request_slowlog_timeout = 0
+
+; The log file for slow requests
+; Default Value: not set
+; Note: slowlog is mandatory if request_slowlog_timeout is set
+;slowlog = /var/log/php-fpm-$pool.log.slow
+
+; Set open file descriptor rlimit.
+; Default Value: system defined value
+;rlimit_files = 1024
+
+; Set max core size rlimit.
+; Possible Values: 'unlimited' or an integer greater or equal to 0
+; Default Value: system defined value
+;rlimit_core = 0
+
+; Chroot to this directory at the start. This value must be defined as an
+; absolute path. When this value is not set, chroot is not used.
+; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
+; of its subdirectories. If the pool prefix is not set, the global prefix
+; will be used instead.
+; Note: chrooting is a great security feature and should be used whenever
+; possible. However, all PHP paths will be relative to the chroot
+; (error_log, sessions.save_path, ...).
+; Default Value: not set
+;chroot =
+
+; Chdir to this directory at the start.
+; Note: relative path can be used.
+; Default Value: current directory or / when chroot
+;chdir = /var/www
+
+; Redirect worker stdout and stderr into main error log. If not set, stdout and
+; stderr will be redirected to /dev/null according to FastCGI specs.
+; Note: on highloaded environement, this can cause some delay in the page
+; process time (several ms).
+; Default Value: no
+;catch_workers_output = yes
+
+; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
+; the current environment.
+; Default Value: clean env
+;env[HOSTNAME] = $HOSTNAME
+;env[PATH] = /usr/local/bin:/usr/bin:/bin
+;env[TMP] = /tmp
+;env[TMPDIR] = /tmp
+;env[TEMP] = /tmp
+
+; Additional php.ini defines, specific to this pool of workers. These settings
+; overwrite the values previously defined in the php.ini. The directives are the
+; same as the PHP SAPI:
+; php_value/php_flag - you can set classic ini defines which can
+; be overwritten from PHP call 'ini_set'.
+; php_admin_value/php_admin_flag - these directives won't be overwritten by
+; PHP call 'ini_set'
+; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
+
+; Defining 'extension' will load the corresponding shared extension from
+; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
+; overwrite previously defined php.ini values, but will append the new value
+; instead.
+
+; Note: path INI options can be relative and will be expanded with the prefix
+; (pool, global or /usr/lib/php5.3)
+
+; Default Value: nothing is defined by default except the values in php.ini and
+; specified at startup with the -d argument
+;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
+;php_flag[display_errors] = off
+;php_admin_value[error_log] = /var/log/fpm-php.www.log
+;php_admin_flag[log_errors] = on
+;php_admin_value[memory_limit] = 32M
diff --git a/dev-lang/php/files/php-fpm.init b/dev-lang/php/files/php-fpm.init
new file mode 100755
index 0000000..adcfd32
--- /dev/null
+++ b/dev-lang/php/files/php-fpm.init
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+
+PHP_FPM_CONF="/etc/php/fpm-php5/php-fpm.conf"
+
+opts="depend start stop reload"
+
+depend() {
+ need net
+ use apache2 lighttpd nginx
+}
+
+start() {
+ ebegin "Starting PHP FastCGI server"
+ start-stop-daemon --start --exec /usr/bin/php-fpm -- -y "${PHP_FPM_CONF}"
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping PHP FastCGI server"
+ start-stop-daemon --stop --name php-fpm
+ eend $?
+}
diff --git a/dev-lang/php/files/php-fpm_at-simple.service b/dev-lang/php/files/php-fpm_at-simple.service
new file mode 100644
index 0000000..5f0482e
--- /dev/null
+++ b/dev-lang/php/files/php-fpm_at-simple.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=The PHP FastCGI Process Manager
+After=network.target
+
+[Service]
+Type=simple
+PIDFile=/run/php-fpm/php-fpm-%I.pid
+ExecStart=/usr/libexec/php-fpm-launcher php%I -y /etc/php/fpm-php%I/php-fpm.conf --nodaemonize
+ExecReload=/bin/kill -USR2 $MAINPID
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/dev-lang/php/files/php-fpm_at.service b/dev-lang/php/files/php-fpm_at.service
new file mode 100644
index 0000000..152c1ab
--- /dev/null
+++ b/dev-lang/php/files/php-fpm_at.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=The PHP FastCGI Process Manager
+After=network.target
+
+[Service]
+Type=notify
+PIDFile=/run/php-fpm/php-fpm-%I.pid
+ExecStart=/usr/libexec/php-fpm-launcher php%I -y /etc/php/fpm-php%I/php-fpm.conf --nodaemonize
+ExecReload=/bin/kill -USR2 $MAINPID
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/dev-lang/php/files/php4-ldvs b/dev-lang/php/files/php4-ldvs
new file mode 100644
index 0000000..01b4eeb
--- /dev/null
+++ b/dev-lang/php/files/php4-ldvs
@@ -0,0 +1 @@
+PHP_4 { global: *; };
diff --git a/dev-lang/php/files/php5-ldvs b/dev-lang/php/files/php5-ldvs
new file mode 100644
index 0000000..783b0f6
--- /dev/null
+++ b/dev-lang/php/files/php5-ldvs
@@ -0,0 +1 @@
+PHP_5 { global: *; };
diff --git a/dev-lang/php/files/php529-ds-odbc64.patch b/dev-lang/php/files/php529-ds-odbc64.patch
new file mode 100644
index 0000000..249b948
--- /dev/null
+++ b/dev-lang/php/files/php529-ds-odbc64.patch
@@ -0,0 +1,16 @@
+diff -dPNur php-5.2.9/ext/pdo_odbc/php_pdo_odbc_int.h php-5.2.9-new/ext/pdo_odbc/php_pdo_odbc_int.h
+--- php-5.2.9/ext/pdo_odbc/php_pdo_odbc_int.h 2008-12-31 12:17:42.000000000 +0100
++++ php-5.2.9-new/ext/pdo_odbc/php_pdo_odbc_int.h 2009-06-15 01:35:47.000000000 +0200
+@@ -134,7 +134,11 @@
+ typedef struct {
+ char *data;
+ unsigned long datalen;
+- long fetched_len;
++#ifdef SQLLEN
++ SQLLEN fetched_len;
++#else
++ SQLINTEGER fetched_len;
++#endif
+ SWORD coltype;
+ char colname[128];
+ unsigned is_long;
diff --git a/dev-lang/php/files/php532-ds-odbc_timeout.patch b/dev-lang/php/files/php532-ds-odbc_timeout.patch
new file mode 100644
index 0000000..0014420
--- /dev/null
+++ b/dev-lang/php/files/php532-ds-odbc_timeout.patch
@@ -0,0 +1,43 @@
+diff -dPNur php-5.3.2/ext/pdo_odbc/odbc_driver.c php-5.3.2-ds/ext/pdo_odbc/odbc_driver.c
+--- php-5.3.2/ext/pdo_odbc/odbc_driver.c 2010-02-03 20:48:04.000000000 +0100
++++ php-5.3.2-ds/ext/pdo_odbc/odbc_driver.c 2010-08-08 00:43:03.000000000 +0200
+@@ -338,11 +338,17 @@
+
+ static int odbc_handle_set_attr(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC)
+ {
++ SQLRETURN ret;
+ pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data;
+ switch (attr) {
+ case PDO_ODBC_ATTR_ASSUME_UTF8:
+ H->assume_utf8 = zval_is_true(val);
+ return 1;
++ case PDO_ATTR_TIMEOUT:
++ convert_to_long(val);
++ ret = SQLSetConnectAttr(H->dbc, SQL_ATTR_CONNECTION_TIMEOUT, (SQLPOINTER)Z_LVAL_P(val), SQL_IS_UINTEGER);
++ if ((ret == SQL_SUCCESS)||(ret == SQL_SUCCESS_WITH_INFO)) return 1;
++ return 0;
+ default:
+ strcpy(H->einfo.last_err_msg, "Unknown Attribute");
+ H->einfo.what = "setAttribute";
+@@ -394,6 +400,7 @@
+ RETCODE rc;
+ int use_direct = 0;
+ SQLUINTEGER cursor_lib;
++ SQLUINTEGER timeout;
+
+ H = pecalloc(1, sizeof(*H), dbh->is_persistent);
+
+@@ -438,6 +445,12 @@
+ goto fail;
+ }
+
++ timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, -1 TSRMLS_CC);
++ if (timeout != (SQLUINTEGER)-1) {
++ SQLSetConnectAttr(H->dbc, SQL_ATTR_CONNECTION_TIMEOUT, (SQLPOINTER)timeout, SQL_IS_UINTEGER);
++ SQLSetConnectAttr(H->dbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER)timeout, SQL_IS_UINTEGER);
++ }
++
+ if (strchr(dbh->data_source, ';')) {
+ char dsnbuf[1024];
+ short dsnbuflen;
+diff -dPNur php-5.3.2/php529-ds-odbc_timeout.patch php-5.3.2-ds/php529-ds-odbc_timeout.patch
diff --git a/dev-lang/php/files/php547-ds-odbc_blob.patch b/dev-lang/php/files/php547-ds-odbc_blob.patch
new file mode 100644
index 0000000..041ce84
--- /dev/null
+++ b/dev-lang/php/files/php547-ds-odbc_blob.patch
@@ -0,0 +1,19 @@
+diff -dPNur php-5.3.2/ext/pdo_odbc/odbc_stmt.c php-5.3.2-ds/ext/pdo_odbc/odbc_stmt.c
+--- php-5.3.2/ext/pdo_odbc/odbc_stmt.c 2010-01-03 10:23:27.000000000 +0100
++++ php-5.3.2-ds/ext/pdo_odbc/odbc_stmt.c 2010-08-08 01:00:46.000000000 +0200
+@@ -569,9 +569,15 @@
+ return 0;
+ }
+ }
++
++ if (displaysize < 0) {
++ col->maxlen = S->cols[colno].datalen = 0;
++ colsize = 256;
++ } else {
+ colsize = displaysize;
+
+ col->maxlen = S->cols[colno].datalen = colsize;
++ }
+ col->namelen = colnamelen;
+ col->name = estrdup(S->cols[colno].colname);
+ S->cols[colno].is_unicode = pdo_odbc_sqltype_is_unicode(S, S->cols[colno].coltype);
diff --git a/dev-lang/php/php-5.5.17-r1.ebuild b/dev-lang/php/php-5.5.17-r1.ebuild
new file mode 100644
index 0000000..8f1915e
--- /dev/null
+++ b/dev-lang/php/php-5.5.17-r1.ebuild
@@ -0,0 +1,790 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/php/php-5.5.17.ebuild,v 1.1 2014/09/19 12:14:27 olemarkus Exp $
+
+EAPI=5
+
+inherit eutils autotools flag-o-matic versionator depend.apache apache-module db-use libtool systemd
+
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+
+function php_get_uri ()
+{
+ case "${1}" in
+ "php-pre")
+ echo "http://downloads.php.net/dsp/${2}"
+ ;;
+ "php")
+ echo "http://www.php.net/distributions/${2}"
+ ;;
+ "olemarkus")
+ echo "http://dev.gentoo.org/~olemarkus/php/${2}"
+ ;;
+ "gentoo")
+ echo "mirror://gentoo/${2}"
+ ;;
+ *)
+ die "unhandled case in php_get_uri"
+ ;;
+ esac
+}
+
+PHP_MV="$(get_major_version)"
+SLOT="$(get_version_component_range 1-2)"
+
+# alias, so we can handle different types of releases (finals, rcs, alphas,
+# betas, ...) w/o changing the whole ebuild
+PHP_PV="${PV/_rc/RC}"
+PHP_PV="${PHP_PV/_alpha/alpha}"
+PHP_PV="${PHP_PV/_beta/beta}"
+PHP_RELEASE="php"
+[[ ${PV} == ${PV/_alpha/} ]] || PHP_RELEASE="php-pre"
+[[ ${PV} == ${PV/_beta/} ]] || PHP_RELEASE="php-pre"
+[[ ${PV} == ${PV/_rc/} ]] || PHP_RELEASE="php-pre"
+PHP_P="${PN}-${PHP_PV}"
+
+PHP_SRC_URI="$(php_get_uri "${PHP_RELEASE}" "${PHP_P}.tar.bz2")"
+
+PHP_FPM_CONF_VER="1"
+
+SRC_URI="${PHP_SRC_URI}"
+
+DESCRIPTION="The PHP language runtime engine: CLI, CGI, FPM/FastCGI, Apache2 and embed SAPIs"
+HOMEPAGE="http://php.net/"
+LICENSE="PHP-3"
+
+S="${WORKDIR}/${PHP_P}"
+
+# We can build the following SAPIs in the given order
+SAPIS="embed cli cgi fpm apache2"
+
+# SAPIs and SAPI-specific USE flags (cli SAPI is default on):
+IUSE="${IUSE}
+ ${SAPIS/cli/+cli}
+ threads"
+
+IUSE="${IUSE} bcmath berkdb bzip2 calendar cdb cjk
+ crypt +ctype curl debug
+ enchant exif frontbase +fileinfo +filter firebird
+ flatfile ftp gd gdbm gmp +hash +iconv imap inifile
+ intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash
+ mssql mysql libmysqlclient mysqli nls
+ oci8-instant-client odbc +opcache pcntl pdo +phar +posix postgres qdbm
+ readline recode selinux +session sharedmem
+ +simplexml snmp soap sockets spell sqlite ssl
+ sybase-ct sysvipc systemd tidy +tokenizer truetype unicode vpx wddx
+ +xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib"
+
+DEPEND="
+ >=app-admin/eselect-php-0.7.1-r3[apache2?,fpm?]
+ >=dev-libs/libpcre-8.32[unicode]
+ apache2? ( || ( >=www-servers/apache-2.4[apache2_modules_unixd,threads=]
+ <www-servers/apache-2.4[threads=] ) )
+ berkdb? ( =sys-libs/db-4* )
+ bzip2? ( app-arch/bzip2 )
+ cdb? ( || ( dev-db/cdb dev-db/tinycdb ) )
+ cjk? ( !gd? (
+ virtual/jpeg:0
+ media-libs/libpng:0=
+ sys-libs/zlib
+ ) )
+ crypt? ( >=dev-libs/libmcrypt-2.4 )
+ curl? ( >=net-misc/curl-7.10.5 )
+ enchant? ( app-text/enchant )
+ exif? ( !gd? (
+ virtual/jpeg:0
+ media-libs/libpng:0=
+ sys-libs/zlib
+ ) )
+ firebird? ( dev-db/firebird )
+ gd? ( virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
+ gdbm? ( >=sys-libs/gdbm-1.8.0 )
+ gmp? ( >=dev-libs/gmp-4.1.2 )
+ iconv? ( virtual/libiconv )
+ imap? ( virtual/imap-c-client[ssl=] )
+ intl? ( dev-libs/icu:= )
+ iodbc? ( dev-db/libiodbc )
+ kerberos? ( virtual/krb5 )
+ ldap? ( >=net-nds/openldap-1.2.11 )
+ ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 )
+ libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) )
+ mssql? ( dev-db/freetds[mssql] )
+ libmysqlclient? (
+ mysql? ( virtual/mysql )
+ mysqli? ( >=virtual/mysql-4.1 )
+ )
+ nls? ( sys-devel/gettext )
+ oci8-instant-client? ( dev-db/oracle-instantclient-basic )
+ odbc? ( >=dev-db/unixODBC-1.8.13 )
+ postgres? ( dev-db/postgresql-base )
+ qdbm? ( dev-db/qdbm )
+ readline? ( sys-libs/readline )
+ recode? ( app-text/recode )
+ sharedmem? ( dev-libs/mm )
+ simplexml? ( >=dev-libs/libxml2-2.6.8 )
+ snmp? ( >=net-analyzer/net-snmp-5.2 )
+ soap? ( >=dev-libs/libxml2-2.6.8 )
+ spell? ( >=app-text/aspell-0.50 )
+ sqlite? ( >=dev-db/sqlite-3.7.6.3 )
+ ssl? ( >=dev-libs/openssl-0.9.7 )
+ sybase-ct? ( dev-db/freetds )
+ tidy? ( app-text/htmltidy )
+ truetype? (
+ =media-libs/freetype-2*
+ >=media-libs/t1lib-5.0.0
+ !gd? (
+ virtual/jpeg:0 media-libs/libpng:0= sys-libs/zlib )
+ )
+ unicode? ( dev-libs/oniguruma )
+ vpx? ( media-libs/libvpx )
+ wddx? ( >=dev-libs/libxml2-2.6.8 )
+ xml? ( >=dev-libs/libxml2-2.6.8 )
+ xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv )
+ xmlreader? ( >=dev-libs/libxml2-2.6.8 )
+ xmlwriter? ( >=dev-libs/libxml2-2.6.8 )
+ xpm? (
+ x11-libs/libXpm
+ virtual/jpeg:0
+ media-libs/libpng:0= sys-libs/zlib
+ )
+ xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 )
+ zip? ( sys-libs/zlib )
+ zlib? ( sys-libs/zlib )
+ virtual/mta
+"
+
+php="=${CATEGORY}/${PF}"
+
+REQUIRED_USE="
+ truetype? ( gd )
+ vpx? ( gd )
+ cjk? ( gd )
+ exif? ( gd )
+
+ xpm? ( gd )
+ gd? ( zlib )
+ simplexml? ( xml )
+ soap? ( xml )
+ wddx? ( xml )
+ xmlrpc? ( || ( xml iconv ) )
+ xmlreader? ( xml )
+ xslt? ( xml )
+ ldap-sasl? ( ldap )
+ mhash? ( hash )
+ phar? ( hash )
+ libmysqlclient? ( || (
+ mysql
+ mysqli
+ pdo
+ ) )
+
+ qdbm? ( !gdbm )
+ readline? ( !libedit )
+ recode? ( !imap !mysql !mysqli )
+ sharedmem? ( !threads )
+
+ !cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )"
+
+RDEPEND="${DEPEND}"
+
+RDEPEND="${RDEPEND}
+ fpm? (
+ selinux? ( sec-policy/selinux-phpfpm )
+ systemd? ( sys-apps/systemd ) )"
+
+DEPEND="${DEPEND}
+ sys-devel/flex
+ >=sys-devel/m4-1.4.3
+ >=sys-devel/libtool-1.5.18"
+
+# Allow users to install production version if they want to
+
+case "${PHP_INI_VERSION}" in
+ production|development)
+ ;;
+ *)
+ PHP_INI_VERSION="development"
+ ;;
+esac
+
+PHP_INI_UPSTREAM="php.ini-${PHP_INI_VERSION}"
+PHP_INI_FILE="php.ini"
+
+want_apache
+
+pkg_setup() {
+ depend.apache_pkg_setup
+}
+
+php_install_ini() {
+ local phpsapi="${1}"
+
+ # work out where we are installing the ini file
+ php_set_ini_dir "${phpsapi}"
+
+ local phpinisrc="${PHP_INI_UPSTREAM}-${phpsapi}"
+ cp "${PHP_INI_UPSTREAM}" "${phpinisrc}"
+
+ # default to /tmp for save_path, bug #282768
+ sed -e 's|^;session.save_path .*$|session.save_path = "'"${EPREFIX}"'/tmp"|g' -i "${phpinisrc}"
+
+ # Set the extension dir
+ sed -e "s|^extension_dir .*$|extension_dir = ${extension_dir}|g" -i "${phpinisrc}"
+
+ # Set the include path to point to where we want to find PEAR packages
+ sed -e 's|^;include_path = ".:/php/includes".*|include_path = ".:'"${EPREFIX}"'/usr/share/php'${PHP_MV}':'"${EPREFIX}"'/usr/share/php"|' -i "${phpinisrc}"
+
+ dodir "${PHP_INI_DIR#${EPREFIX}}"
+ insinto "${PHP_INI_DIR#${EPREFIX}}"
+ newins "${phpinisrc}" "${PHP_INI_FILE}"
+
+ elog "Installing php.ini for ${phpsapi} into ${PHP_INI_DIR#${EPREFIX}}"
+ elog
+
+ dodir "${PHP_EXT_INI_DIR#${EPREFIX}}"
+ dodir "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}"
+
+ if use_if_iuse opcache; then
+ elog "Adding opcache to $PHP_EXT_INI_DIR"
+ echo "zend_extension=${PHP_DESTDIR}/$(get_libdir)/opcache.so" >> "${D}/${PHP_EXT_INI_DIR}"/opcache.ini
+ dosym "${PHP_EXT_INI_DIR#${EPREFIX}}/opcache.ini" "${PHP_EXT_INI_DIR_ACTIVE#${EPREFIX}}/opcache.ini"
+ fi
+
+ # SAPI-specific handling
+
+ if [[ "${sapi}" == "fpm" ]] ; then
+ [[ -z ${PHP_FPM_CONF_VER} ]] && PHP_FPM_CONF_VER=0
+ einfo "Installing FPM CGI config file php-fpm.conf"
+ insinto "${PHP_INI_DIR#${EPREFIX}}"
+ newins "${FILESDIR}/php-fpm-r${PHP_FPM_CONF_VER}.conf" php-fpm.conf
+
+ # Remove bogus /etc/php-fpm.conf.default (bug 359906)
+ [[ -f "${ED}/etc/php-fpm.conf.default" ]] && rm "${ED}/etc/php-fpm.conf.default"
+ fi
+
+ # Install PHP ini files into /usr/share/php
+
+ dodoc php.ini-development
+ dodoc php.ini-production
+
+}
+
+php_set_ini_dir() {
+ PHP_INI_DIR="${EPREFIX}/etc/php/${1}-php${SLOT}"
+ PHP_EXT_INI_DIR="${PHP_INI_DIR}/ext"
+ PHP_EXT_INI_DIR_ACTIVE="${PHP_INI_DIR}/ext-active"
+}
+
+src_prepare() {
+#SDS
+# epatch "${FILESDIR}"/php529-ds-odbc64.patch || die
+ epatch "${FILESDIR}"/php547-ds-odbc_blob.patch || die
+ epatch "${FILESDIR}"/php532-ds-odbc_timeout.patch || die
+#EDS
+
+ # USE=sharedmem (session/mod_mm to be exact) tries to mmap() this path
+ # ([empty session.save_path]/session_mm_[sapi][gid].sem)
+ # there is no easy way to circumvent that, all php calls during
+ # install use -n, so no php.ini file will be used.
+ # As such, this is the easiest way to get around
+ addpredict /session_mm_cli250.sem
+ addpredict /session_mm_cli0.sem
+
+ # Change PHP branding
+ # Get the alpha/beta/rc version
+ sed -re "s|^(PHP_EXTRA_VERSION=\").*(\")|\1-pl${PR/r/}-gentoo\2|g" \
+ -i configure.in || die "Unable to change PHP branding"
+
+ # Patch PHP to show Gentoo as the server platform
+ sed -e 's/PHP_UNAME=`uname -a | xargs`/PHP_UNAME=`uname -s -n -r -v | xargs`/g' \
+ -i configure.in || die "Failed to fix server platform name"
+
+ # Prevent PHP from activating the Apache config,
+ # as we will do that ourselves
+ sed -i \
+ -e "s,-i -a -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ -e "s,-i -A -n php${PHP_MV},-i -n php${PHP_MV},g" \
+ configure sapi/apache2filter/config.m4 sapi/apache2handler/config.m4
+
+ # Patch PHP to support heimdal instead of mit-krb5
+ if has_version "app-crypt/heimdal" ; then
+ sed -e 's|gssapi_krb5|gssapi|g' -i acinclude.m4 \
+ || die "Failed to fix heimdal libname"
+ sed -e 's|PHP_ADD_LIBRARY(k5crypto, 1, $1)||g' -i acinclude.m4 \
+ || die "Failed to fix heimdal crypt library reference"
+ fi
+
+ #Add user patches #357637
+ epatch_user
+
+ #force rebuilding aclocal.m4
+ rm aclocal.m4
+ eautoreconf
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # http://bugs.php.net/bug.php?id=48795, bug #343481
+ sed -i -e '/BUILD_CGI="\\$(CC)/s/CC/CXX/' configure || die
+ fi
+}
+
+src_configure() {
+ addpredict /usr/share/snmp/mibs/.index
+ addpredict /var/lib/net-snmp/mib_indexes
+
+ PHP_DESTDIR="${EPREFIX}/usr/$(get_libdir)/php${SLOT}"
+
+ # This is a global variable and should be in caps. It isn't because the
+ # phpconfutils eclass relies on exactly this name...
+ # for --with-libdir see bug #327025
+ my_conf="
+ --prefix="${PHP_DESTDIR}"
+ --mandir="${PHP_DESTDIR}"/man
+ --infodir="${PHP_DESTDIR}"/info
+ --libdir="${PHP_DESTDIR}"/lib
+ --with-libdir=$(get_libdir)
+ --without-pear
+ $(use_enable threads maintainer-zts)"
+
+ # extension USE flag shared
+ my_conf+="
+ $(use_enable bcmath bcmath )
+ $(use_with bzip2 bz2 "${EPREFIX}"/usr)
+ $(use_enable calendar calendar )
+ $(use_enable ctype ctype )
+ $(use_with curl curl "${EPREFIX}"/usr)
+ $(use_enable xml dom )
+ $(use_with enchant enchant "${EPREFIX}"/usr)
+ $(use_enable exif exif )
+ $(use_enable fileinfo fileinfo )
+ $(use_enable filter filter )
+ $(use_enable ftp ftp )
+ $(use_with nls gettext "${EPREFIX}"/usr)
+ $(use_with gmp gmp "${EPREFIX}"/usr)
+ $(use_enable hash hash )
+ $(use_with mhash mhash "${EPREFIX}"/usr)
+ $(use_with iconv iconv $(use elibc_glibc || echo "${EPREFIX}"/usr))
+ $(use_enable intl intl )
+ $(use_enable ipv6 ipv6 )
+ $(use_enable json json )
+ $(use_with kerberos kerberos "${EPREFIX}"/usr)
+ $(use_enable xml libxml )
+ $(use_with xml libxml-dir "${EPREFIX}"/usr)
+ $(use_enable unicode mbstring )
+ $(use_with crypt mcrypt "${EPREFIX}"/usr)
+ $(use_with mssql mssql "${EPREFIX}"/usr)
+ $(use_with unicode onig "${EPREFIX}"/usr)
+ $(use_with ssl openssl "${EPREFIX}"/usr)
+ $(use_with ssl openssl-dir "${EPREFIX}"/usr)
+ $(use_enable pcntl pcntl )
+ $(use_enable phar phar )
+ $(use_enable pdo pdo )
+ $(use_enable opcache opcache )
+ $(use_with postgres pgsql "${EPREFIX}"/usr)
+ $(use_enable posix posix )
+ $(use_with spell pspell "${EPREFIX}"/usr)
+ $(use_with recode recode "${EPREFIX}"/usr)
+ $(use_enable simplexml simplexml )
+ $(use_enable sharedmem shmop )
+ $(use_with snmp snmp "${EPREFIX}"/usr)
+ $(use_enable soap soap )
+ $(use_enable sockets sockets )
+ $(use_with sqlite sqlite3 "${EPREFIX}"/usr)
+ $(use_with sybase-ct sybase-ct "${EPREFIX}"/usr)
+ $(use_enable sysvipc sysvmsg )
+ $(use_enable sysvipc sysvsem )
+ $(use_enable sysvipc sysvshm )
+ $(use_with systemd fpm-systemd)
+ $(use_with tidy tidy "${EPREFIX}"/usr)
+ $(use_enable tokenizer tokenizer )
+ $(use_enable wddx wddx )
+ $(use_enable xml xml )
+ $(use_enable xmlreader xmlreader )
+ $(use_enable xmlwriter xmlwriter )
+ $(use_with xmlrpc xmlrpc)
+ $(use_with xslt xsl "${EPREFIX}"/usr)
+ $(use_enable zip zip )
+ $(use_with zlib zlib "${EPREFIX}"/usr)
+ $(use_enable debug debug )"
+
+ # DBA support
+ if use cdb || use berkdb || use flatfile || use gdbm || use inifile \
+ || use qdbm ; then
+ my_conf="${my_conf} --enable-dba${shared}"
+ fi
+
+ # DBA drivers support
+ my_conf+="
+ $(use_with cdb cdb)
+ $(use_with berkdb db4 ${EPREFIX}/usr)
+ $(use_enable flatfile flatfile )
+ $(use_with gdbm gdbm ${EPREFIX}/usr)
+ $(use_enable inifile inifile )
+ $(use_with qdbm qdbm ${EPREFIX}/usr)"
+
+ # Support for the GD graphics library
+ my_conf+="
+ $(use_with truetype freetype-dir ${EPREFIX}/usr)
+ $(use_with truetype t1lib ${EPREFIX}/usr)
+ $(use_enable cjk gd-jis-conv )
+ $(use_with gd jpeg-dir ${EPREFIX}/usr)
+ $(use_with gd png-dir ${EPREFIX}/usr)
+ $(use_with xpm xpm-dir ${EPREFIX}/usr)
+ $(use_with vpx vpx-dir ${EPREFIX}/usr)"
+ # enable gd last, so configure can pick up the previous settings
+ my_conf+="
+ $(use_with gd gd)"
+
+ # IMAP support
+ if use imap ; then
+ my_conf+="
+ $(use_with imap imap ${EPREFIX}/usr)
+ $(use_with ssl imap-ssl ${EPREFIX}/usr)"
+ fi
+
+ # Interbase/firebird support
+
+ if use firebird ; then
+ my_conf+="
+ $(use_with firebird interbase ${EPREFIX}/usr)"
+ fi
+
+ # LDAP support
+ if use ldap ; then
+ my_conf+="
+ $(use_with ldap ldap ${EPREFIX}/usr)
+ $(use_with ldap-sasl ldap-sasl ${EPREFIX}/usr)"
+ fi
+
+ # MySQL support
+ local mysqllib="mysqlnd"
+ local mysqlilib="mysqlnd"
+ use libmysqlclient && mysqllib="${EPREFIX}/usr"
+ use libmysqlclient && mysqlilib="${EPREFIX}/usr/bin/mysql_config"
+
+ my_conf+=" $(use_with mysql mysql $mysqllib)"
+ my_conf+=" $(use_with mysqli mysqli $mysqlilib)"
+
+ local mysqlsock=" $(use_with mysql mysql-sock ${EPREFIX}/var/run/mysqld/mysqld.sock)"
+ if use mysql ; then
+ my_conf+="${mysqlsock}"
+ elif use mysqli ; then
+ my_conf+="${mysqlsock}"
+ fi
+
+ # ODBC support
+ if use odbc ; then
+ my_conf+="
+ $(use_with odbc unixODBC ${EPREFIX}/usr)"
+ fi
+
+ if use iodbc ; then
+ my_conf+="
+ $(use_with iodbc iodbc ${EPREFIX}/usr)"
+ fi
+
+ # Oracle support
+ if use oci8-instant-client ; then
+ my_conf+="
+ $(use_with oci8-instant-client oci8)"
+ fi
+
+ # PDO support
+ if use pdo ; then
+ my_conf+="
+ $(use_with mssql pdo-dblib )
+ $(use_with mysql pdo-mysql ${mysqllib})
+ $(use_with postgres pdo-pgsql )
+ $(use_with sqlite pdo-sqlite ${EPREFIX}/usr)
+ $(use_with odbc pdo-odbc unixODBC,${EPREFIX}/usr)"
+ if use oci8-instant-client ; then
+ my_conf+="
+ $(use_with oci8-instant-client pdo-oci)"
+ fi
+ fi
+
+ # readline/libedit support
+ my_conf+="
+ $(use_with readline readline ${EPREFIX}/usr)
+ $(use_with libedit libedit ${EPREFIX}/usr)"
+
+ # Session support
+ if use session ; then
+ my_conf+="
+ $(use_with sharedmem mm ${EPREFIX}/usr)"
+ else
+ my_conf+="
+ $(use_enable session session )"
+ fi
+
+ # Use pic for shared modules such as apache2's mod_php
+ my_conf="${my_conf} --with-pic"
+
+ # we use the system copy of pcre
+ # --with-pcre-regex affects ext/pcre
+ # --with-pcre-dir affects ext/filter and ext/zip
+ my_conf="${my_conf} --with-pcre-regex=${EPREFIX}/usr --with-pcre-dir=${EPREFIX}/usr"
+
+ # Catch CFLAGS problems
+ # Fixes bug #14067.
+ # Changed order to run it in reverse for bug #32022 and #12021.
+ replace-cpu-flags "k6*" "i586"
+
+ # Support user-passed configuration parameters
+ my_conf="${my_conf} ${EXTRA_ECONF:-}"
+
+ # Support the Apache2 extras, they must be set globally for all
+ # SAPIs to work correctly, especially for external PHP extensions
+
+ mkdir -p "${WORKDIR}/sapis-build"
+ for one_sapi in $SAPIS ; do
+ use "${one_sapi}" || continue
+ php_set_ini_dir "${one_sapi}"
+
+ cp -r "${S}" "${WORKDIR}/sapis-build/${one_sapi}"
+ cd "${WORKDIR}/sapis-build/${one_sapi}"
+
+ sapi_conf="${my_conf} --with-config-file-path=${PHP_INI_DIR}
+ --with-config-file-scan-dir=${PHP_EXT_INI_DIR_ACTIVE}"
+
+ for sapi in $SAPIS ; do
+ case "$sapi" in
+ cli|cgi|embed|fpm)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --enable-${sapi}"
+ else
+ sapi_conf="${sapi_conf} --disable-${sapi}"
+ fi
+ ;;
+
+ apache2)
+ if [[ "${one_sapi}" == "${sapi}" ]] ; then
+ sapi_conf="${sapi_conf} --with-apxs2=${EPREFIX}/usr/sbin/apxs"
+ else
+ sapi_conf="${sapi_conf} --without-apxs2"
+ fi
+ ;;
+ esac
+ done
+
+ econf ${sapi_conf}
+ done
+}
+
+src_compile() {
+ # snmp seems to run during src_compile, too (bug #324739)
+ addpredict /usr/share/snmp/mibs/.index
+ addpredict /var/lib/net-snmp/mib_indexes
+
+ for sapi in ${SAPIS} ; do
+ if use "${sapi}"; then
+ cd "${WORKDIR}/sapis-build/$sapi" || "Failed to change dir to ${WORKDIR}/sapis-build/$1"
+ emake || die "emake failed"
+ fi
+ done
+}
+
+src_install() {
+ # see bug #324739 for what happens when we don't have that
+ addpredict /usr/share/snmp/mibs/.index
+
+ # grab the first SAPI that got built and install common files from there
+ local first_sapi=""
+ for sapi in $SAPIS ; do
+ if use $sapi ; then
+ first_sapi=$sapi
+ break
+ fi
+ done
+
+ # Makefile forgets to create this before trying to write to it...
+ dodir "${PHP_DESTDIR#${EPREFIX}}/bin"
+
+ # Install php environment (without any sapis)
+ cd "${WORKDIR}/sapis-build/$first_sapi"
+ emake INSTALL_ROOT="${D}" \
+ install-build install-headers install-programs \
+ || die "emake install failed"
+
+ local extension_dir="$("${ED}/${PHP_DESTDIR#${EPREFIX}}/bin/php-config" --extension-dir)"
+
+ # Create the directory where we'll put version-specific php scripts
+ keepdir /usr/share/php${PHP_MV}
+
+ local sapi="", file=""
+ local sapi_list=""
+
+ for sapi in ${SAPIS}; do
+ if use "${sapi}" ; then
+ einfo "Installing SAPI: ${sapi}"
+ cd "${WORKDIR}/sapis-build/${sapi}"
+
+ if [[ "${sapi}" == "apache2" ]] ; then
+ # We're specifically not using emake install-sapi as libtool
+ # may cause unnecessary relink failures (see bug #351266)
+ insinto "${PHP_DESTDIR#${EPREFIX}}/apache2/"
+ newins ".libs/libphp5$(get_libname)" "libphp${PHP_MV}$(get_libname)"
+ keepdir "/usr/$(get_libdir)/apache2/modules"
+ else
+ # needed each time, php_install_ini would reset it
+ local dest="${PHP_DESTDIR#${EPREFIX}}"
+ into "${dest}"
+ case "$sapi" in
+ cli)
+ source="sapi/cli/php"
+ ;;
+ cgi)
+ source="sapi/cgi/php-cgi"
+ ;;
+ fpm)
+ source="sapi/fpm/php-fpm"
+ ;;
+ embed)
+ source="libs/libphp${PHP_MV}$(get_libname)"
+ ;;
+ *)
+ die "unhandled sapi in src_install"
+ ;;
+ esac
+
+ if [[ "${source}" == *"$(get_libname)" ]]; then
+ dolib.so "${source}" || die "Unable to install ${sapi} sapi"
+ else
+ dobin "${source}" || die "Unable to install ${sapi} sapi"
+ local name="$(basename ${source})"
+ dosym "${dest}/bin/${name}" "/usr/bin/${name}${SLOT}"
+ fi
+ fi
+
+ php_install_ini "${sapi}"
+
+ # construct correct SAPI string for php-config
+ # thanks to ferringb for the bash voodoo
+ if [[ "${sapi}" == "apache2" ]]; then
+ sapi_list="${sapi_list:+${sapi_list} }apache2handler"
+ else
+ sapi_list="${sapi_list:+${sapi_list} }${sapi}"
+ fi
+ fi
+ done
+
+ # Installing opcache module
+ if use_if_iuse opcache ; then
+ dolib.so "modules/opcache$(get_libname)" || die "Unable to install opcache module"
+ fi
+
+ # Install env.d files
+ newenvd "${FILESDIR}/20php5-envd" \
+ "20php${SLOT}"
+ sed -e "s|/lib/|/$(get_libdir)/|g" -i \
+ "${ED}/etc/env.d/20php${SLOT}"
+ sed -e "s|php5|php${SLOT}|g" -i \
+ "${ED}/etc/env.d/20php${SLOT}"
+
+ # set php-config variable correctly (bug #278439)
+ sed -e "s:^\(php_sapis=\)\".*\"$:\1\"${sapi_list}\":" -i \
+ "${ED}/usr/$(get_libdir)/php${SLOT}/bin/php-config"
+
+ if use fpm ; then
+ if use systemd; then
+ systemd_newunit "${FILESDIR}/php-fpm_at.service" "php-fpm@${SLOT}.service"
+ else
+ systemd_newunit "${FILESDIR}/php-fpm_at-simple.service" "php-fpm@${SLOT}.service"
+ fi
+ fi
+}
+
+src_test() {
+ echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
+ PHP_BIN="${WORKDIR}/sapis-build/cli/sapi/cli/php"
+ if [[ ! -x "${PHP_BIN}" ]] ; then
+ ewarn "Test phase requires USE=cli, skipping"
+ return
+ else
+ export TEST_PHP_EXECUTABLE="${PHP_BIN}"
+ fi
+
+ if [[ -x "${WORKDIR}/sapis/cgi/php-cgi" ]] ; then
+ export TEST_PHP_CGI_EXECUTABLE="${WORKDIR}/sapis/cgi/php-cgi"
+ fi
+
+ REPORT_EXIT_STATUS=1 "${TEST_PHP_EXECUTABLE}" -n -d "session.save_path=${T}" \
+ "${WORKDIR}/sapis-build/cli/run-tests.php" -n -q -d "session.save_path=${T}"
+
+ for name in ${EXPECTED_TEST_FAILURES}; do
+ mv "${name}.out" "${name}.out.orig" 2>/dev/null
+ done
+
+ local failed="$(find -name '*.out')"
+ if [[ ${failed} != "" ]] ; then
+ ewarn "The following test cases failed unexpectedly:"
+ for name in ${failed}; do
+ ewarn " ${name/.out/}"
+ done
+ else
+ einfo "No unexpected test failures, all fine"
+ fi
+
+ if [[ ${PHP_SHOW_UNEXPECTED_TEST_PASS} == "1" ]] ; then
+ local passed=""
+ for name in ${EXPECTED_TEST_FAILURES}; do
+ [[ -f "${name}.diff" ]] && continue
+ passed="${passed} ${name}"
+ done
+ if [[ ${passed} != "" ]] ; then
+ einfo "The following test cases passed unexpectedly:"
+ for name in ${passed}; do
+ ewarn " ${passed}"
+ done
+ else
+ einfo "None of the known-to-fail tests passed, all fine"
+ fi
+ fi
+}
+
+pkg_postinst() {
+ # Output some general info to the user
+ if use apache2 ; then
+ APACHE2_MOD_DEFINE="PHP5"
+ APACHE2_MOD_CONF="70_mod_php5"
+ apache-module_pkg_postinst
+ fi
+
+ # Create the symlinks for php
+ for m in ${SAPIS}; do
+ [[ ${m} == 'embed' ]] && continue;
+ if use $m ; then
+ local ci=$(eselect php show $m)
+ if [[ -z $ci ]]; then
+ eselect php set $m php${SLOT}
+ einfo "Switched ${m} to use php:${SLOT}"
+ einfo
+ elif [[ $ci != "php${SLOT}" ]] ; then
+ elog "To switch $m to use php:${SLOT}, run"
+ elog " eselect php set $m php${SLOT}"
+ elog
+ fi
+ fi
+ done
+
+ elog "Make sure that PHP_TARGETS in ${EPREFIX}/etc/make.conf includes php${SLOT/./-} in order"
+ elog "to compile extensions for the ${SLOT} ABI"
+ elog
+ if ! use readline && use cli ; then
+ ewarn "Note that in order to use php interactivly, you need to enable"
+ ewarn "the readline USE flag or php -a will hang"
+ fi
+ elog
+ elog "This ebuild installed a version of php.ini based on php.ini-${PHP_INI_VERSION} version."
+ elog "You can chose which version of php.ini to install by default by setting PHP_INI_VERSION to either"
+ elog "'production' or 'development' in ${EPREFIX}/etc/make.conf"
+ elog "Both versions of php.ini can be found in ${EPREFIX}/usr/share/doc/${PF}"
+
+ elog
+ elog "For more details on how minor version slotting works (PHP_TARGETS) please read the upgrade guide:"
+ elog "http://www.gentoo.org/proj/en/php/php-upgrading.xml"
+ elog
+}
+
+pkg_prerm() {
+ eselect php cleanup
+}
diff --git a/dev-libs/libds/Manifest b/dev-libs/libds/Manifest
new file mode 100644
index 0000000..bd6aa86
--- /dev/null
+++ b/dev-libs/libds/Manifest
@@ -0,0 +1,15 @@
+DIST opc-0.0.12.tar.bz2 2115216 RMD160 adb4ce5368b9638dc877cd8be728c668f73fd3c9 SHA1 973b76dd20a8860ec8de00a8908ceed07ba32ff6 SHA256 9e6ba38d084980e8b992749796db3f48cc99f6401ed62fbc8cfd57d343be299c
+DIST opc-0.0.13.tar.bz2 2115452 RMD160 f1f105121c8c2fa8309e021e8eb80b85b16a820b SHA1 b3bfd2a647a88b41b4767dde4e20a2cc6410c9a7 SHA256 4b3ae9fcea091e5d06b2fca92b559f03cc89307f33b97af35e1f3d56b7d12046
+DIST opc-0.0.14.tar.bz2 2115191 RMD160 d848b14f231528029f3ffb7e7bb07a1a88d5954e SHA1 cc67e641d29df27c8895102591b92e23febad74a SHA256 fa931059de6883a4ad83ad9b2d4bb532735f17fd577aa3b7ef72353bec8fdfcc
+DIST opc-0.1.0.tar.bz2 2168015 RMD160 f6371e106a4894d33847af9bf1ea4a7dfd5bb0e3 SHA1 25becaa6963ff32ae19ebf8c34960d7de41b100c SHA256 3cdc2034f17326ea892dc7a9c178fac784dbde7d963c35849b49686b831551c6
+DIST opc-0.1.1.tar.bz2 2145109 RMD160 aa4b998fe2d4897dbc1fcad7eae9d119758b0797 SHA1 f95994c76511008db8653e9a2b300285f2902957 SHA256 90f0470ee3051a9d256b5721c8220dcfcc265c9d2f47328d343fae8e94dbbb88
+DIST opc-0.1.2.tar.bz2 2145104 RMD160 58591d45d9f867f9a8bc1b6a65e6261e1da879cc SHA1 902bbc6d5663f79c6745948687871757720b524a SHA256 8ad6978a4a32cb6a63ef39672e9d9d9446657a1edcc9ce5dd8be810167f80a12
+DIST opc-0.1.3.tar.bz2 2145680 RMD160 b5e8b649cf68e961de0f8971e7f4e8edc614c1d7 SHA1 b8322d6f5ab2c7144579318408e5a4d4d1b83a8c SHA256 f43c5c7a697de9de63d674b981e9543ac16da2ca95661a978768d7bf41dab203
+EBUILD libds-0.0.12.ebuild 749 RMD160 afaac664683f44733d3a367a0bfe2502b6a1ff9a SHA1 9fb88be9177b09bab8d0f5bc7f2091b363d4ed95 SHA256 04440109e6bca8f91b65f412fc29ced05a8050e80db72c594557dad33fb9e571
+EBUILD libds-0.0.13.ebuild 749 RMD160 afaac664683f44733d3a367a0bfe2502b6a1ff9a SHA1 9fb88be9177b09bab8d0f5bc7f2091b363d4ed95 SHA256 04440109e6bca8f91b65f412fc29ced05a8050e80db72c594557dad33fb9e571
+EBUILD libds-0.0.14-r1.ebuild 758 RMD160 e9f96751835fda527f6c7ea490919ffce7eb5902 SHA1 2d84f503a41e047e85e2183930b46c294adb7871 SHA256 96ee246d7dfd5e3ee5a8a148688317814d5e426277b8427ec6938b5d9fc3083e
+EBUILD libds-0.0.14.ebuild 749 RMD160 afaac664683f44733d3a367a0bfe2502b6a1ff9a SHA1 9fb88be9177b09bab8d0f5bc7f2091b363d4ed95 SHA256 04440109e6bca8f91b65f412fc29ced05a8050e80db72c594557dad33fb9e571
+EBUILD libds-0.1.0.ebuild 758 RMD160 e9f96751835fda527f6c7ea490919ffce7eb5902 SHA1 2d84f503a41e047e85e2183930b46c294adb7871 SHA256 96ee246d7dfd5e3ee5a8a148688317814d5e426277b8427ec6938b5d9fc3083e
+EBUILD libds-0.1.1.ebuild 758 RMD160 e9f96751835fda527f6c7ea490919ffce7eb5902 SHA1 2d84f503a41e047e85e2183930b46c294adb7871 SHA256 96ee246d7dfd5e3ee5a8a148688317814d5e426277b8427ec6938b5d9fc3083e
+EBUILD libds-0.1.2.ebuild 758 RMD160 e9f96751835fda527f6c7ea490919ffce7eb5902 SHA1 2d84f503a41e047e85e2183930b46c294adb7871 SHA256 96ee246d7dfd5e3ee5a8a148688317814d5e426277b8427ec6938b5d9fc3083e
+EBUILD libds-0.1.3.ebuild 758 RMD160 e9f96751835fda527f6c7ea490919ffce7eb5902 SHA1 2d84f503a41e047e85e2183930b46c294adb7871 SHA256 96ee246d7dfd5e3ee5a8a148688317814d5e426277b8427ec6938b5d9fc3083e
diff --git a/dev-libs/libds/libds-0.0.12.ebuild b/dev-libs/libds/libds-0.0.12.ebuild
new file mode 100644
index 0000000..bd05436
--- /dev/null
+++ b/dev-libs/libds/libds-0.0.12.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://localhost/releases/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.0.13.ebuild b/dev-libs/libds/libds-0.0.13.ebuild
new file mode 100644
index 0000000..bd05436
--- /dev/null
+++ b/dev-libs/libds/libds-0.0.13.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://localhost/releases/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.0.14-r1.ebuild b/dev-libs/libds/libds-0.0.14-r1.ebuild
new file mode 100644
index 0000000..597982d
--- /dev/null
+++ b/dev-libs/libds/libds-0.0.14-r1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://dside.dyndns.org/files/adas/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.0.14.ebuild b/dev-libs/libds/libds-0.0.14.ebuild
new file mode 100644
index 0000000..bd05436
--- /dev/null
+++ b/dev-libs/libds/libds-0.0.14.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://localhost/releases/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.1.0.ebuild b/dev-libs/libds/libds-0.1.0.ebuild
new file mode 100644
index 0000000..597982d
--- /dev/null
+++ b/dev-libs/libds/libds-0.1.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://dside.dyndns.org/files/adas/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.1.1.ebuild b/dev-libs/libds/libds-0.1.1.ebuild
new file mode 100644
index 0000000..597982d
--- /dev/null
+++ b/dev-libs/libds/libds-0.1.1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://dside.dyndns.org/files/adas/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.1.2.ebuild b/dev-libs/libds/libds-0.1.2.ebuild
new file mode 100644
index 0000000..597982d
--- /dev/null
+++ b/dev-libs/libds/libds-0.1.2.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://dside.dyndns.org/files/adas/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libds/libds-0.1.3.ebuild b/dev-libs/libds/libds-0.1.3.ebuild
new file mode 100644
index 0000000..597982d
--- /dev/null
+++ b/dev-libs/libds/libds-0.1.3.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="LibDS is OS abstraction library"
+SRC_URI="http://dside.dyndns.org/files/adas/opc-${PV}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+DEPEND="dev-libs/libxml2"
+
+S=${WORKDIR}/opc-${PV}
+
+src_unpack() {
+ unpack opc-${PV}.tar.bz2 || die
+}
+
+src_compile() {
+ make create_includes || die
+ make -C libds || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/lib/ || die
+ mkdir -p ${D}/usr/include/libds/ || die
+ install -c libds/libds.so ${D}/usr/lib/libds.so.${PV} || die
+ ln -s libds.so.${PV} ${D}/usr/lib/libds.so || die
+ cp -L includes/libds/* ${D}/usr/include/libds || die
+}
diff --git a/dev-libs/libroadnav/Manifest b/dev-libs/libroadnav/Manifest
new file mode 100644
index 0000000..510c44c
--- /dev/null
+++ b/dev-libs/libroadnav/Manifest
@@ -0,0 +1,4 @@
+DIST libroadnav-0.19.tar.gz 835616 RMD160 17214adb4217badb4222e371db61e548af3b5681 SHA1 4e0c038a9e1eb8fdca2b2c53539dce460465ea31 SHA256 3aa4c1d951f8149ee0df3a67eb709fce5c379a9ffe8acc7141f87b4841baea0f
+DIST libroadnav-0.20alpha.tar.gz 842338 RMD160 0f616485382b175431d79da7819656261e90bdfc SHA1 fd5ca012f588ab0603e700e9d1c4d1ce680c6e3d SHA256 08595e639f51ddfd42063d90906b533b9fcaba46b27f1a74d566ae18b26bff4b
+EBUILD libroadnav-0.19.ebuild 981 RMD160 d6bbfa5b844291f1c50c78ff962eeee790b9bb7b SHA1 b194bee32cb216097f8ffe63444c47616efb9b65 SHA256 18e12eee30d769837df7dd221fab3ba22b229329d501ea69692f70b7e87b1e4c
+EBUILD libroadnav-0.20_alpha.ebuild 1024 RMD160 ced736e95acce5b0b9f49ba8f25aa00f75ed3326 SHA1 8c685a669bfe48c40f9067a594ee09231729c407 SHA256 397d0976766e3eda227799a5d375779c6ff59be5fbff82911be21de35d57881b
diff --git a/dev-libs/libroadnav/libroadnav-0.19.ebuild b/dev-libs/libroadnav/libroadnav-0.19.ebuild
new file mode 100644
index 0000000..0328cc9
--- /dev/null
+++ b/dev-libs/libroadnav/libroadnav-0.19.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/libroadnav/libroadnav-0.18.ebuild,v 1.1 2007/10/08 06:14:08 dirtyepic Exp $
+
+inherit wxwidgets
+
+DESCRIPTION="LibRoadnav is a library capable of plotting street maps and providing driving directions for US addresses"
+HOMEPAGE="http://roadnav.sourceforge.net"
+SRC_URI="mirror://sourceforge/roadnav/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE=""
+
+DEPEND="=x11-libs/wxGTK-2.6*"
+
+src_compile() {
+ WX_GTK_VER=2.6
+ need-wxwidgets gtk2
+
+ econf \
+ --with-wx-config=${WX_CONFIG} \
+ || die "econf failed"
+
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "install failed"
+
+ # generic or empty
+ for f in NEWS COPYING INSTALL; do
+ rm -f "${D}"/usr/share/doc/${PN}/${f}
+ done
+
+ # --docdir is broken and hardcoded to ${PN}
+ mv "${D}"/usr/share/doc/${PN} "${D}"/usr/share/doc/${P}
+}
diff --git a/dev-libs/libroadnav/libroadnav-0.20_alpha.ebuild b/dev-libs/libroadnav/libroadnav-0.20_alpha.ebuild
new file mode 100644
index 0000000..9422ac0
--- /dev/null
+++ b/dev-libs/libroadnav/libroadnav-0.20_alpha.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/libroadnav/libroadnav-0.18.ebuild,v 1.1 2007/10/08 06:14:08 dirtyepic Exp $
+
+inherit wxwidgets
+
+DESCRIPTION="LibRoadnav is a library capable of plotting street maps and providing driving directions for US addresses"
+HOMEPAGE="http://roadnav.sourceforge.net"
+SRC_URI="mirror://sourceforge/roadnav/${PN}-0.20alpha.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE=""
+
+DEPEND="=x11-libs/wxGTK-2.6*"
+
+S="${WORKDIR}/${PN}-0.20alpha"
+
+src_compile() {
+ WX_GTK_VER=2.6
+ need-wxwidgets gtk2
+
+ econf \
+ --with-wx-config=${WX_CONFIG} \
+ || die "econf failed"
+
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "install failed"
+
+ # generic or empty
+ for f in NEWS COPYING INSTALL; do
+ rm -f "${D}"/usr/share/doc/${PN}/${f}
+ done
+
+ # --docdir is broken and hardcoded to ${PN}
+ mv "${D}"/usr/share/doc/${PN} "${D}"/usr/share/doc/${P}
+}
diff --git a/dev-libs/pocl/Manifest b/dev-libs/pocl/Manifest
new file mode 100644
index 0000000..a1b33dc
--- /dev/null
+++ b/dev-libs/pocl/Manifest
@@ -0,0 +1,6 @@
+AUX vendor_opencl_libs_location.epatch 1099 SHA256 1a5d416b3af501566742f29285985e58e1ab7169e76a347cf5007e34fd7c5cfb SHA512 8309619b6a232dab53f9fb40925f6925671a8a40754c7f8626a0edad69e84bcde7c4222513752aa6c7516cd9b65bb0164d816ac76d6c4254563b0f893fda7685 WHIRLPOOL a0488f0c5006ada32e70e0b5de4ed1b0c881f54daaeb600f03df64851e938fc4b8860fcaa65ca00e5d67f359060318b4f9d467780817fe7456766910efcec150
+DIST pocl-1.1.tar.gz 1545659 SHA256 1e8dd0693a88c84937754df947b202871a40545b1b0a97ebefa370b0281c3c53 SHA512 f785d1a8bbceab86ae220c0c78dc81fc292333ac30bc02cf627aca02d9efc9f659d97c26c227e7ba66fa56d8abdcb23df2d100e5bc4d5c670c48646edefa19af WHIRLPOOL a8ec064447922e78ccf555d6267ef9b76fcac962f271a724fb6f2900f51cf37680c1e905e9f9394b293497a249b7fd2e07fcf5f1b676ade0a8889e3aef4038cf
+DIST pocl-1.2.tar.gz 1603374 SHA256 0c43e68f336892f3a64cba19beb99d9212f529bedb77f7879c0331450b982d46 SHA512 c765fe02f220f707d2e46edfb2782195dc987bd984aeb7f3d14dd767cd96944ffba85c7276415f7b4471de5d1a9c9a0d3ed4285c1c3955ef581aa935a5a0eaa0 WHIRLPOOL a01a2bb953823aaaeefbf551159e473f3b081bdf7dbb23890652011520525d5f80d2f5ece6e68c08db5bc1c66cdbef45f492675b15de1e0f408545c277d06869
+EBUILD pocl-1.1.ebuild 585 SHA256 321d205aba0fe4c2bb3b7f0d481b3e32f3477b608b480b5c56ca86ef6c923242 SHA512 f6b5f74b2b87185c926dbf5e87c779270604f65f7ec5271936f1bfbe7151f1bd8a42ebfe247ee78f0588eaa56ddc3df28ea2981dc7418189023c9c17f0e4a311 WHIRLPOOL 52668e8110c1e33fc2cd5cb8101f57f89e1fa48bcd10ae31b5e9be564b761393f49383bb2d8eb98c1313b4e8fcba08acc27553cece45bd7db84c30d3e109f5f1
+EBUILD pocl-1.2.ebuild 731 SHA256 275476b21a3a380727642077ede7e4a42d8016d07459e70cd4b5581aec3ad31e SHA512 d6d1d85a32b9cc1cf79f6a6f72c4346b13a8434238facbe2fa90b29807921073e778c3c7b3f430838c926a9a77a36d049d1c54bc6e740c114a0ce2a077e53bb5 WHIRLPOOL d941e5922a3c927e389e8e0f0f1d5a294f8908e7c2575a33f8426ee0f0bc7c759ffd526add81e85ea69af3282fbe02e7f9fec7e9365cb46c1b7c694c69f3163e
+EBUILD pocl-9999.ebuild 941 SHA256 dd9219c2be651e9dff6fa28c2df45932c2ca4db4a38902471864c9c95c9cf134 SHA512 d7a80b2b7685d505b66a6f4971a11c1321eac8c062112869d86fa426b4de4f1ce9e655227960362b6f2361bf6f6e46684722291113513514559c27d571bc76db WHIRLPOOL 408e3190f496971bbe63c5e367f72651e2a4679ae29a4270d600ff59733bdf99d145f7917d54bc0a45725941ba43e35d30c43998d67f995f689e79bc0bc7eab4
diff --git a/dev-libs/pocl/files/vendor_opencl_libs_location.epatch b/dev-libs/pocl/files/vendor_opencl_libs_location.epatch
new file mode 100644
index 0000000..22fb86c
--- /dev/null
+++ b/dev-libs/pocl/files/vendor_opencl_libs_location.epatch
@@ -0,0 +1,21 @@
+diff -Nurb a/pocl-0.14/CMakeLists.txt b/pocl-0.14/CMakeLists.txt
+--- a/CMakeLists.txt 2017-04-05 16:15:40.000000000 +0200
++++ b/CMakeLists.txt 2017-04-16 23:34:32.422414270 +0200
+@@ -125,7 +125,7 @@
+ endif()
+
+ # for libpocl.so
+-set(POCL_INSTALL_PUBLIC_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" CACHE PATH "POCL public libdir")
++set(POCL_INSTALL_PUBLIC_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/OpenCL/vendors/pocl" CACHE PATH "POCL public libdir")
+
+ # for llvmopencl.so
+ set(POCL_INSTALL_PRIVATE_LIBDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pocl" CACHE PATH "POCL private libdir")
+@@ -134,7 +134,7 @@
+ if(UNIX AND NOT CMAKE_CROSSCOMPILING AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ set(POCL_INSTALL_ICD_VENDORDIR "/etc/OpenCL/vendors" CACHE PATH "POCL ICD file destination")
+ else()
+- set(POCL_INSTALL_ICD_VENDORDIR "${CMAKE_INSTALL_PREFIX}/etc/OpenCL/vendors" CACHE PATH "POCL ICD file destination")
++ set(POCL_INSTALL_ICD_VENDORDIR "${SYSCONFDIR}/etc/OpenCL/vendors" CACHE PATH "POCL ICD file destination")
+ endif()
+
+ # for kernel-<target>.bc
diff --git a/dev-libs/pocl/pocl-1.1.ebuild b/dev-libs/pocl/pocl-1.1.ebuild
new file mode 100644
index 0000000..4766d9b
--- /dev/null
+++ b/dev-libs/pocl/pocl-1.1.ebuild
@@ -0,0 +1,25 @@
+EAPI="6"
+inherit cmake-utils cmake-multilib versionator
+
+DESCRIPTION="Portable Computing Language"
+HOMEPAGE="http://portablecl.org"
+
+PV_RC_SEPARATOR_FIXED=$(replace_version_separator '_' '-')
+PV_FILE_FORMAT=${PV_RC_SEPARATOR_FIXED^^}
+SRC_URI="https://github.com/pocl/pocl/archive/v${PV_FILE_FORMAT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-${PV_FILE_FORMAT}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE=""
+
+RDEPEND=">=sys-devel/llvm-3.9
+ sys-devel/clang
+ sys-apps/hwloc
+ "
+
+DEPEND="${RDEPEND}"
+
+PATCHES=("${FILESDIR}/vendor_opencl_libs_location.epatch"
+)
diff --git a/dev-libs/pocl/pocl-1.2.ebuild b/dev-libs/pocl/pocl-1.2.ebuild
new file mode 100644
index 0000000..54f7111
--- /dev/null
+++ b/dev-libs/pocl/pocl-1.2.ebuild
@@ -0,0 +1,35 @@
+EAPI="6"
+inherit cmake-utils cmake-multilib versionator
+
+DESCRIPTION="Portable Computing Language"
+HOMEPAGE="http://portablecl.org"
+
+PV_RC_SEPARATOR_FIXED=$(replace_version_separator '_' '-')
+PV_FILE_FORMAT=${PV_RC_SEPARATOR_FIXED^^}
+SRC_URI="https://github.com/pocl/pocl/archive/v${PV_FILE_FORMAT}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-${PV_FILE_FORMAT}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE=""
+
+RDEPEND=">=sys-devel/llvm-6.0
+ sys-devel/clang
+ sys-apps/hwloc
+ "
+
+DEPEND="${RDEPEND}"
+
+PATCHES=("${FILESDIR}/vendor_opencl_libs_location.epatch"
+)
+
+
+src_configure() {
+ local mycmakeargs=(
+ "-DENABLE_CUDA=ON"
+# "-DENABLE_HSA=ON"
+ )
+
+ cmake-multilib_src_configure
+}
diff --git a/dev-libs/pocl/pocl-9999.ebuild b/dev-libs/pocl/pocl-9999.ebuild
new file mode 100644
index 0000000..ae688c4
--- /dev/null
+++ b/dev-libs/pocl/pocl-9999.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit git-r3 cmake-utils
+#cmake-utils
+
+DESCRIPTION="PortableCL: opensource implementation of the OpenCL standard"
+HOMEPAGE="http://portablecl.org/"
+EGIT_REPO_URI="https://github.com/pocl/pocl.git"
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS=""
+IUSE=""
+
+RDEPEND="dev-libs/ocl-icd
+ >=sys-devel/llvm-4.0
+ >=sys-devel/clang-4.0
+ >=sys-apps/hwloc-1.0
+ >=app-eselect/eselect-opencl-1.1.0-r4"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig"
+
+POCL_DIR="/usr/$(get_libdir)/OpenCL/vendors/pocl"
+
+pkg_pretend() {
+ # Needs an OpenCL 1.2 ICD, mesa and nvidia are invalid
+ # Maybe ati works, feel free to add/fix if you can test
+ if [[ $(eselect opencl show) == 'ocl-icd' ]]; then
+ einfo "Valid OpenCL ICD set"
+ else
+ eerror "Please use a supported ICD:"
+ eerror "eselect opencl set ocl-icd"
+ die "OpenCL ICD not set to a supported value"
+ fi
+}
+
diff --git a/dev-php/pecl-rrd/Manifest b/dev-php/pecl-rrd/Manifest
new file mode 100644
index 0000000..16e9f85
--- /dev/null
+++ b/dev-php/pecl-rrd/Manifest
@@ -0,0 +1,2 @@
+DIST rrd-1.0.5.tgz 18676 SHA256 f336a0a56963e0c6a34e335401483f84adde4c09fd6fbe8fe1a4c74596dc4eab SHA512 6e1b1d42e3cabb141052b10547f00b4c2de69518769aa661429cf59f424063ec68416a5f41f10cb4e8a9c079aa1dbc2743750db469acf35b0a37a146273f858b WHIRLPOOL 0b8727f42fcbec38b37d93291e37ab8b9660b111b627342b20de1e96ecd5fcc42073855fd4dca1aef247092054dc13193c01113ede8623e45afadebdaac9e22f
+EBUILD pecl-rrd-1.0.5.ebuild 446 SHA256 3bca2ef02ed73e12c2a34362642ff0d37aa81619d6be9e91c0415a545d8c979d SHA512 264072c47f5afabc33201b6d75220021343aa5f5e147b59415815cca56c1812aedd29b1dcbcae095db9da9398324d2227764d252555262a4bbbc25495fc287e1 WHIRLPOOL ff2940722af5dd69ccd4d4e5a11b0c4578eea1745c6f24c007a87ceb132c93525170dfa702c968e78bf3bc124b463602a9d2ec2432a11779a6f44a1afa1d2ab3
diff --git a/dev-php/pecl-rrd/pecl-rrd-1.0.5.ebuild b/dev-php/pecl-rrd/pecl-rrd-1.0.5.ebuild
new file mode 100644
index 0000000..270016d
--- /dev/null
+++ b/dev-php/pecl-rrd/pecl-rrd-1.0.5.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-php/pecl-rrd/pecl-rrd-1.0.5.ebuild,v 1.1 2012/02/22 22:04:03 mabi Exp $
+
+EAPI=6
+
+USE_PHP="php5-6 php5-5 php5-4 php5-3"
+
+inherit php-ext-pecl-r3
+
+KEYWORDS="amd64 x86"
+
+DESCRIPTION="RRDtool bindings for PHP"
+LICENSE="BSD"
+
+SLOT="0"
+IUSE=""
+
+DEPEND=">=net-analyzer/rrdtool-1.4.5-r1"
+RDEPEND="${DEPEND}"
diff --git a/dev-php/pecl-sqlite/Manifest b/dev-php/pecl-sqlite/Manifest
new file mode 100644
index 0000000..5b8e91c
--- /dev/null
+++ b/dev-php/pecl-sqlite/Manifest
@@ -0,0 +1,3 @@
+AUX sqlite-svn.patch 374879 SHA256 385835716faffe78fec4366b2e82993d4be2f9fb869acc56da258d0e204e94e9 SHA512 6d6a8e0971235acf50a7d97bdc6342ce3bfe8cdcc66190c53d0449e2f50509af1ca7dc49d0e42bb6cd13bb7f65bc1a7c029a3d15855d373cc3ed07233f3c1f21 WHIRLPOOL db0809c740ec75a1766468cce0c3093a7c2c59ef32ce17bf7e6fd4513f08d78c1eefcff172caf5a72b3b365d53001a5235d07e7284785a022331758f334c540c
+DIST SQLite-1.0.3.tgz 371189 SHA256 19edf52557c75a764e021d60414fe4ce347cbdab55377d4aafbecb30785d79a5 SHA512 0f566c3f95364a9b76e7b87aa10536a31f852359edad6ae4d3a702299c5dabf892e2b6758cc1aa642f729ad1d5549732c21863562193a41b9772d3725de6c166 WHIRLPOOL b229882aafb45360cb62f51b6aa4a9f6b8ab30dcb8cf1c3dc41efa550e9fc4447cdc560eb4631959ffd2274eb2baefd5a6fa05a6e4ff0941671f0741de741d31
+EBUILD pecl-sqlite-1.0.3.ebuild 783 SHA256 253d2f7c45c1a6b169bd5d0dac137aff3748d8ae29c9b0a7f14ab5548646f1bb SHA512 75a2cf970366a89fbb0007a7d3c695fe8eeec107fe05644021a58087978cde42ec529e465358ebbd65661371ff404b3a3a84242783978b500f7511202405a324 WHIRLPOOL a42265f6273215f9cb227ec308414cbc22c78fd291f22dbf3c02191fa3254d8c3a5e81fa6cb58f3781bb3fa7ba556a8ed8ca8604a814d32efd94db0e2f52f726
diff --git a/dev-php/pecl-sqlite/files/sqlite-svn.patch b/dev-php/pecl-sqlite/files/sqlite-svn.patch
new file mode 100644
index 0000000..95b111b
--- /dev/null
+++ b/dev-php/pecl-sqlite/files/sqlite-svn.patch
@@ -0,0 +1,12200 @@
+diff -dPNur sqlite-1.0.3/CREDITS sqlite-svn/CREDITS
+--- sqlite-1.0.3/CREDITS 2004-04-29 22:58:31.000000000 +0000
++++ sqlite-svn/CREDITS 2012-10-09 13:36:42.760063980 +0000
+@@ -1,2 +1,2 @@
+-sqlite
++SQLite
+ Wez Furlong, Tal Peer, Marcus Boerger, Ilia Alshanetsky
+diff -dPNur sqlite-1.0.3/Makefile.frag sqlite-svn/Makefile.frag
+--- sqlite-1.0.3/Makefile.frag 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/Makefile.frag 2012-10-09 13:36:42.760063980 +0000
+@@ -0,0 +1,2 @@
++$(srcdir)/libsqlite/src/parse.c: $(srcdir)/libsqlite/src/parse.y
++ @$(LEMON) $(srcdir)/libsqlite/src/parse.y
+diff -dPNur sqlite-1.0.3/README sqlite-svn/README
+--- sqlite-1.0.3/README 2003-04-17 01:37:42.000000000 +0000
++++ sqlite-svn/README 2012-10-09 13:36:42.760063980 +0000
+@@ -1,4 +1,4 @@
+-This is an extension for the SQLite Embeddable SQL Database Engine.
++This is an extension for the SQLite 2 Embeddable SQL Database Engine.
+ http://www.sqlite.org/
+
+ SQLite is a C library that implements an embeddable SQL database engine.
+diff -dPNur sqlite-1.0.3/TODO sqlite-svn/TODO
+--- sqlite-1.0.3/TODO 2003-06-26 18:30:12.000000000 +0000
++++ sqlite-svn/TODO 2012-10-09 13:36:42.760063980 +0000
+@@ -1,3 +1,20 @@
++CURRENT
++--------------------------------------
++- Discuss the pdo_sqlite2 situation. Either split into two extensions,
++ or research/implement alternatives. Currently configure does not
++ implement this pdo driver. sqlite_*() should always exist/work
++
++- Update notes/changelog to reflect (or inform) users of php-src changes
++ since version 1.0.3
++
++- Clarify that this extension exists for BC reasons, and is barely maintained
++
++- Consider moving ext/sqlite bugs to the PECL bug tracker
++
++OLD
++--------------------------------------
++- Implement a PDO driver, called sqlite2
++
+ - Transparent binary encoding of return values from PHP callback functions.
+
+ - Add user-space callback for the authorizer function (this is potentially
+@@ -5,8 +22,6 @@
+
+ - Add user-space callback to handle busy databases.
+
+-- Test-suite
+-
+ o Test how robust we are when a user-space function is registered as
+ a callback for a persistent connection in script A, then script B is
+ called that doesn't register the callback but does make use of the
+@@ -14,9 +29,6 @@
+ --> Our test suite doesn't allow us to test persistent connections
+ at this time :/
+
+-- If building a ZTS build, -DTHREADSAFE while compiling libsqlite
+-
+-- If building a non-debug build, -DNDEBUG will disable the expensive
+- asserts in the inner loop. (and double performance)
++- Use later version of built-in library
+
+ vim:tw=78
+diff -dPNur sqlite-1.0.3/config.m4 sqlite-svn/config.m4
+--- sqlite-1.0.3/config.m4 2004-07-10 12:50:18.000000000 +0000
++++ sqlite-svn/config.m4 2012-10-09 13:36:42.760063980 +0000
+@@ -1,55 +1,96 @@
+-dnl $Id: config.m4,v 1.16.2.5 2004/07/10 12:50:18 wez Exp $
++dnl $Id: config.m4 291414 2009-11-29 06:13:22Z rasmus $
+ dnl config.m4 for extension sqlite
+ dnl vim:et:ts=2:sw=2
+
+ PHP_ARG_WITH(sqlite, for sqlite support,
+-[ --with-sqlite Include sqlite support])
++[ --without-sqlite=DIR Do not include sqlite support. DIR is the sqlite base
++ install directory [BUNDLED]], yes)
++
++PHP_ARG_ENABLE(sqlite-utf8, whether to enable UTF-8 support in sqlite (default: ISO-8859-1),
++[ --enable-sqlite-utf8 SQLite: Enable UTF-8 support for SQLite], no, no)
++
++
++
++dnl
++dnl PHP_PROG_LEMON
++dnl
++dnl Search for lemon binary and check its version
++dnl
++AC_DEFUN([PHP_PROG_LEMON],[
++ # we only support certain lemon versions
++ lemon_version_list="1.0"
++
++ AC_CHECK_PROG(LEMON, lemon, lemon)
++ if test "$LEMON"; then
++ AC_CACHE_CHECK([for lemon version], php_cv_lemon_version, [
++ lemon_version=`$LEMON -x 2>/dev/null | $SED -e 's/^.* //'`
++ php_cv_lemon_version=invalid
++ for lemon_check_version in $lemon_version_list; do
++ if test "$lemon_version" = "$lemon_check_version"; then
++ php_cv_lemon_version="$lemon_check_version (ok)"
++ fi
++ done
++ ])
++ else
++ lemon_version=none
++ fi
++ case $php_cv_lemon_version in
++ ""|invalid[)]
++ lemon_msg="lemon versions supported for regeneration of libsqlite parsers: $lemon_version_list (found: $lemon_version)."
++ AC_MSG_WARN([$lemon_msg])
++ LEMON="exit 0;"
++ ;;
++ esac
++ PHP_SUBST(LEMON)
++])
++
+
+ if test "$PHP_SQLITE" != "no"; then
++ if test "$PHP_PDO" != "no"; then
++ PHP_CHECK_PDO_INCLUDES([], [AC_MSG_WARN([Cannot find php_pdo_driver.h.])])
++ if test -n "$pdo_inc_path"; then
++ AC_DEFINE([PHP_SQLITE2_HAVE_PDO], [1], [Have PDO])
++ pdo_inc_path="-I$pdo_inc_path"
++ fi
++ fi
+
+ if test "$PHP_SQLITE" != "yes"; then
+ SEARCH_PATH="/usr/local /usr"
+ SEARCH_FOR="/include/sqlite.h"
+ if test -r $PHP_SQLITE/; then # path given as parameter
+- SQLITE_DIR=$PHP_SQLITE
++ SQLITE_DIR=$PHP_SQLITE
+ else # search default path list
+- AC_MSG_CHECKING([for sqlite files in default path])
+- for i in $SEARCH_PATH ; do
++ AC_MSG_CHECKING([for sqlite files in default path])
++ for i in $SEARCH_PATH ; do
+ if test -r $i/$SEARCH_FOR; then
+- SQLITE_DIR=$i
+- AC_MSG_RESULT(found in $i)
++ SQLITE_DIR=$i
++ AC_MSG_RESULT(found in $i)
+ fi
+- done
++ done
+ fi
+
+ if test -z "$SQLITE_DIR"; then
+- AC_MSG_RESULT([not found])
+- AC_MSG_ERROR([Please reinstall the sqlite distribution from http://www.sqlite.org])
++ AC_MSG_RESULT([not found])
++ AC_MSG_ERROR([Please reinstall the sqlite distribution from http://www.sqlite.org])
+ fi
+
+- PHP_ADD_INCLUDE($SQLITE_DIR/include)
+-
+- LIBNAME=sqlite
+- LIBSYMBOL=sqlite_open
+-
+- PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
+- [
+- PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $SQLITE_DIR/lib, SQLITE_SHARED_LIBADD)
+- AC_DEFINE(HAVE_SQLITELIB,1,[ ])
++ PHP_CHECK_LIBRARY(sqlite, sqlite_open, [
++ PHP_ADD_LIBRARY_WITH_PATH(sqlite, $SQLITE_DIR/$PHP_LIBDIR, SQLITE_SHARED_LIBADD)
++ PHP_ADD_INCLUDE($SQLITE_DIR/include)
+ ],[
+- AC_MSG_ERROR([wrong sqlite lib version or lib not found])
++ AC_MSG_ERROR([wrong sqlite lib version or lib not found])
+ ],[
+- -L$SQLITE_DIR/lib -lm
++ -L$SQLITE_DIR/$PHP_LIBDIR -lm
+ ])
+-
+- PHP_SUBST(SQLITE_SHARED_LIBADD)
+- PHP_NEW_EXTENSION(sqlite, sqlite.c libsqlite/src/encode.c, $ext_shared)
++ SQLITE_MODULE_TYPE=external
++ PHP_SQLITE_CFLAGS=$pdo_inc_path
++ sqlite_extra_sources="libsqlite/src/encode.c"
+ else
+ # use bundled library
+-
+- PHP_SQLITE_CFLAGS="-I@ext_srcdir@/libsqlite/src"
+-
+- sources="libsqlite/src/opcodes.c
++ PHP_PROG_LEMON
++ SQLITE_MODULE_TYPE=builtin
++ PHP_SQLITE_CFLAGS="-I@ext_srcdir@/libsqlite/src -I@ext_builddir@/libsqlite/src $pdo_inc_path"
++ sqlite_extra_sources="libsqlite/src/opcodes.c \
+ libsqlite/src/parse.c libsqlite/src/encode.c \
+ libsqlite/src/auth.c libsqlite/src/btree.c libsqlite/src/build.c \
+ libsqlite/src/delete.c libsqlite/src/expr.c libsqlite/src/func.c \
+@@ -62,35 +103,46 @@
+ libsqlite/src/vacuum.c libsqlite/src/copy.c \
+ libsqlite/src/vdbeaux.c libsqlite/src/date.c \
+ libsqlite/src/where.c libsqlite/src/trigger.c"
+-
+- PHP_NEW_EXTENSION(sqlite, sqlite.c $sources, $ext_shared,,$PHP_SQLITE_CFLAGS)
+- PHP_ADD_BUILD_DIR($ext_builddir/libsqlite)
+- PHP_ADD_BUILD_DIR($ext_builddir/libsqlite/src)
+- AC_CHECK_SIZEOF(char *,4)
++ fi
++ dnl
++ dnl Common for both bundled/external
++ dnl
++ sqlite_sources="sqlite.c sess_sqlite.c pdo_sqlite2.c $sqlite_extra_sources"
++ PHP_NEW_EXTENSION(sqlite, $sqlite_sources, $ext_shared,,$PHP_SQLITE_CFLAGS)
++ PHP_ADD_EXTENSION_DEP(sqlite, spl, true)
++ PHP_ADD_EXTENSION_DEP(sqlite, pdo, true)
++
++ PHP_ADD_MAKEFILE_FRAGMENT
++ PHP_SUBST(SQLITE_SHARED_LIBADD)
++ PHP_INSTALL_HEADERS([$ext_builddir/libsqlite/src/sqlite.h])
++
++ if test "$SQLITE_MODULE_TYPE" = "builtin"; then
++ PHP_ADD_BUILD_DIR($ext_builddir/libsqlite/src, 1)
++ AC_CHECK_SIZEOF(char *, 4)
+ AC_DEFINE(SQLITE_PTR_SZ, SIZEOF_CHAR_P, [Size of a pointer])
+ dnl use latin 1 for SQLite older than 2.8.9; the utf-8 handling
+ dnl in funcs.c uses assert(), which is a bit silly and something
+ dnl we want to avoid. This assert() was removed in SQLite 2.8.9.
+ if test "$PHP_SQLITE_UTF8" = "yes"; then
+- SQLITE_ENCODING="UTF8"
+- AC_DEFINE(SQLITE_UTF8, 1, [ ])
++ SQLITE_ENCODING="UTF8"
++ AC_DEFINE(SQLITE_UTF8, 1, [ ])
+ else
+- SQLITE_ENCODING="ISO8859"
++ SQLITE_ENCODING="ISO8859"
+ fi
+ PHP_SUBST(SQLITE_ENCODING)
+
+ SQLITE_VERSION=`cat $ext_srcdir/libsqlite/VERSION`
+ PHP_SUBST(SQLITE_VERSION)
+-
+- sed -e s/--VERS--/$SQLITE_VERSION/ -e s/--ENCODING--/$SQLITE_ENCODING/ $ext_srcdir/libsqlite/src/sqlite.h.in >$ext_srcdir/libsqlite/src/sqlite.h
+
+- if test "$ext_shared" = "no"; then
+- echo '#include "php_config.h"' > $ext_srcdir/libsqlite/src/config.h
++ sed -e s/--VERS--/$SQLITE_VERSION/ -e s/--ENCODING--/$SQLITE_ENCODING/ $ext_srcdir/libsqlite/src/sqlite.h.in > $ext_builddir/libsqlite/src/sqlite.h
++
++ if test "$ext_shared" = "no" || test "$ext_srcdir" != "$abs_srcdir"; then
++ echo '#include <php_config.h>' > $ext_builddir/libsqlite/src/config.h
+ else
+- echo "#include \"$abs_builddir/config.h\"" > $ext_srcdir/libsqlite/src/config.h
++ echo "#include \"$abs_builddir/config.h\"" > $ext_builddir/libsqlite/src/config.h
+ fi
+
+- cat >> $ext_srcdir/libsqlite/src/config.h <<EOF
++ cat >> $ext_builddir/libsqlite/src/config.h <<EOF
+ #if ZTS
+ # define THREADSAFE 1
+ #endif
+@@ -98,9 +150,8 @@
+ # define NDEBUG
+ #endif
+ EOF
+-
+ fi
+-
++
+ AC_CHECK_FUNCS(usleep nanosleep)
+ AC_CHECK_HEADERS(time.h)
+ fi
+diff -dPNur sqlite-1.0.3/config.w32 sqlite-svn/config.w32
+--- sqlite-1.0.3/config.w32 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/config.w32 2012-10-09 13:36:42.760063980 +0000
+@@ -0,0 +1,39 @@
++// $Id: config.w32 242949 2007-09-26 15:44:16Z cvs2svn $
++// vim:ft=javascript
++
++ARG_WITH("sqlite", "SQLite support", "no");
++
++if (PHP_SQLITE != "no") {
++ copy_and_subst(configure_module_dirname + "\\libsqlite\\src\\sqlite.h.in",
++ configure_module_dirname + "\\libsqlite\\src\\sqlite.h", new Array(
++ "--VERS--", file_get_contents(configure_module_dirname + "\\libsqlite\\VERSION").replace(new RegExp("[\r\n]+", "g"), ""),
++ "--ENCODING--", "ISO8859"
++ ));
++
++ FSO.CopyFile(configure_module_dirname + "\\libsqlite\\src\\sqlite_config.w32.h",
++ configure_module_dirname + "\\libsqlite\\src\\config.h");
++
++ if (FSO.FileExists(configure_module_dirname + "\\..\\pdo\\php_pdo_driver.h")) {
++ PHP_SQLITE2_PDO_CFLAGS = " /DPHP_SQLITE2_HAVE_PDO=1 /I " + configure_module_dirname + "\\..";
++ ADD_EXTENSION_DEP('sqlite', 'pdo')
++ } else {
++ PHP_SQLITE2_PDO_CFLAGS = "";
++ }
++
++ EXTENSION("sqlite", "sqlite.c sess_sqlite.c pdo_sqlite2.c", null,
++ "/D PHP_SQLITE_EXPORTS /I " + configure_module_dirname + "/libsqlite/src" +
++ PHP_SQLITE2_PDO_CFLAGS);
++
++
++ ADD_SOURCES(configure_module_dirname + "/libsqlite/src", "opcodes.c parse.c encode.c \
++ auth.c btree.c build.c delete.c expr.c func.c hash.c insert.c \
++ main.c os.c pager.c printf.c random.c select.c table.c tokenize.c \
++ update.c util.c vdbe.c attach.c btree_rb.c pragma.c vacuum.c \
++ copy.c where.c trigger.c vdbeaux.c date.c", "sqlite");
++
++ AC_DEFINE("HAVE_SQLITE", 1, "SQLite support");
++ if (!PHP_SQLITE_SHARED) {
++ ADD_DEF_FILE(configure_module_dirname + "\\php_sqlite.def");
++ }
++ ADD_EXTENSION_DEP('sqlite', 'spl')
++}
+diff -dPNur sqlite-1.0.3/libsqlite/VERSION sqlite-svn/libsqlite/VERSION
+--- sqlite-1.0.3/libsqlite/VERSION 2004-07-10 11:43:20.000000000 +0000
++++ sqlite-svn/libsqlite/VERSION 2012-10-09 13:36:42.661358144 +0000
+@@ -1 +1 @@
+-2.8.14
++2.8.17
+diff -dPNur sqlite-1.0.3/libsqlite/src/attach.c sqlite-svn/libsqlite/src/attach.c
+--- sqlite-1.0.3/libsqlite/src/attach.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/attach.c 2012-10-09 13:36:42.531952680 +0000
+@@ -11,7 +11,7 @@
+ *************************************************************************
+ ** This file contains code used to implement the ATTACH and DETACH commands.
+ **
+-** $Id: attach.c,v 1.2.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: attach.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+diff -dPNur sqlite-1.0.3/libsqlite/src/auth.c sqlite-svn/libsqlite/src/auth.c
+--- sqlite-1.0.3/libsqlite/src/auth.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/auth.c 2012-10-09 13:36:42.541252205 +0000
+@@ -14,7 +14,7 @@
+ ** systems that do not need this facility may omit it by recompiling
+ ** the library with -DSQLITE_OMIT_AUTHORIZATION=1
+ **
+-** $Id: auth.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: auth.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+@@ -111,6 +111,7 @@
+ const char *zCol; /* Name of the column of the table */
+ int iSrc; /* Index in pTabList->a[] of table being read */
+ const char *zDBase; /* Name of database being accessed */
++ TriggerStack *pStack; /* The stack of current triggers */
+
+ if( db->xAuth==0 ) return;
+ assert( pExpr->op==TK_COLUMN );
+@@ -119,15 +120,14 @@
+ }
+ if( iSrc>=0 && iSrc<pTabList->nSrc ){
+ pTab = pTabList->a[iSrc].pTab;
+- }else{
++ }else if( (pStack = pParse->trigStack)!=0 ){
+ /* This must be an attempt to read the NEW or OLD pseudo-tables
+ ** of a trigger.
+ */
+- TriggerStack *pStack; /* The stack of current triggers */
+- pStack = pParse->trigStack;
+- assert( pStack!=0 );
+ assert( pExpr->iTable==pStack->newIdx || pExpr->iTable==pStack->oldIdx );
+ pTab = pStack->pTab;
++ }else{
++ return;
+ }
+ if( pTab==0 ) return;
+ if( pExpr->iColumn>=0 ){
+diff -dPNur sqlite-1.0.3/libsqlite/src/btree.c sqlite-svn/libsqlite/src/btree.c
+--- sqlite-1.0.3/libsqlite/src/btree.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/btree.c 2012-10-09 13:36:42.531952680 +0000
+@@ -9,7 +9,7 @@
+ ** May you share freely, never taking more than you give.
+ **
+ *************************************************************************
+-** $Id: btree.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: btree.c 195361 2005-09-07 15:11:33Z iliaa $
+ **
+ ** This file implements a external (disk-based) database using BTrees.
+ ** For a detailed discussion of BTrees, refer to
+diff -dPNur sqlite-1.0.3/libsqlite/src/btree.h sqlite-svn/libsqlite/src/btree.h
+--- sqlite-1.0.3/libsqlite/src/btree.h 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/btree.h 2012-10-09 13:36:42.531952680 +0000
+@@ -13,7 +13,7 @@
+ ** subsystem. See comments in the source code for a detailed description
+ ** of what each interface routine does.
+ **
+-** @(#) $Id: btree.h,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: btree.h 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #ifndef _BTREE_H_
+ #define _BTREE_H_
+diff -dPNur sqlite-1.0.3/libsqlite/src/btree_rb.c sqlite-svn/libsqlite/src/btree_rb.c
+--- sqlite-1.0.3/libsqlite/src/btree_rb.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/btree_rb.c 2012-10-09 13:36:42.551252050 +0000
+@@ -9,7 +9,7 @@
+ ** May you share freely, never taking more than you give.
+ **
+ *************************************************************************
+-** $Id: btree_rb.c,v 1.2.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: btree_rb.c 195361 2005-09-07 15:11:33Z iliaa $
+ **
+ ** This file implements an in-core database using Red-Black balanced
+ ** binary trees.
+@@ -259,17 +259,16 @@
+ * concatenation of orig and val is returned. The original orig is deleted
+ * (using sqliteFree()).
+ */
+-static char *append_val(char * orig, char const * val)
+-{
++static char *append_val(char * orig, char const * val){
++ char *z;
+ if( !orig ){
+- return sqliteStrDup( val );
++ z = sqliteStrDup( val );
+ } else{
+- char * ret = 0;
+- sqliteSetString(&ret, orig, val, (char*)0);
++ z = 0;
++ sqliteSetString(&z, orig, val, (char*)0);
+ sqliteFree( orig );
+- return ret;
+ }
+- assert(0);
++ return z;
+ }
+
+ /*
+@@ -723,13 +722,13 @@
+ pCur = *ppCur = sqliteMalloc(sizeof(RbtCursor));
+ if( sqlite_malloc_failed ) return SQLITE_NOMEM;
+ pCur->pTree = sqliteHashFind(&tree->tblHash, 0, iTable);
++ assert( pCur->pTree );
+ pCur->pRbtree = tree;
+ pCur->iTree = iTable;
+ pCur->pOps = &sqliteRbtreeCursorOps;
+ pCur->wrFlag = wrFlag;
+ pCur->pShared = pCur->pTree->pCursors;
+ pCur->pTree->pCursors = pCur;
+-
+
+ assert( (*ppCur)->pTree );
+ return SQLITE_OK;
+@@ -1178,12 +1177,11 @@
+ if( !pCur->pNode ) return 0;
+ if( !pCur->pNode->pKey || ((amt + offset) <= pCur->pNode->nKey) ){
+ memcpy(zBuf, ((char*)pCur->pNode->pKey)+offset, amt);
+- return amt;
+ }else{
+ memcpy(zBuf, ((char*)pCur->pNode->pKey)+offset, pCur->pNode->nKey-offset);
+- return pCur->pNode->nKey-offset;
++ amt = pCur->pNode->nKey-offset;
+ }
+- assert(0);
++ return amt;
+ }
+
+ static int memRbtreeDataSize(RbtCursor* pCur, int *pSize)
+@@ -1201,12 +1199,11 @@
+ if( !pCur->pNode ) return 0;
+ if( (amt + offset) <= pCur->pNode->nData ){
+ memcpy(zBuf, ((char*)pCur->pNode->pData)+offset, amt);
+- return amt;
+ }else{
+ memcpy(zBuf, ((char*)pCur->pNode->pData)+offset ,pCur->pNode->nData-offset);
+- return pCur->pNode->nData-offset;
++ amt = pCur->pNode->nData-offset;
+ }
+- assert(0);
++ return amt;
+ }
+
+ static int memRbtreeCloseCursor(RbtCursor* pCur)
+@@ -1421,13 +1418,12 @@
+ assert(!"Cannot call sqliteRbtreeCursorDump");
+ return SQLITE_OK;
+ }
++#endif
+
+ static struct Pager *memRbtreePager(Rbtree* tree)
+ {
+- assert(!"Cannot call sqliteRbtreePager");
+- return SQLITE_OK;
++ return 0;
+ }
+-#endif
+
+ /*
+ ** Return the full pathname of the underlying database file.
+@@ -1463,10 +1459,9 @@
+ (char*(*)(Btree*,int*,int)) memRbtreeIntegrityCheck,
+ (const char*(*)(Btree*)) memRbtreeGetFilename,
+ (int(*)(Btree*,Btree*)) memRbtreeCopyFile,
+-
++ (struct Pager*(*)(Btree*)) memRbtreePager,
+ #ifdef SQLITE_TEST
+ (int(*)(Btree*,int,int)) memRbtreePageDump,
+- (struct Pager*(*)(Btree*)) memRbtreePager
+ #endif
+ };
+
+diff -dPNur sqlite-1.0.3/libsqlite/src/build.c sqlite-svn/libsqlite/src/build.c
+--- sqlite-1.0.3/libsqlite/src/build.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/build.c 2012-10-09 13:36:42.520091164 +0000
+@@ -23,7 +23,7 @@
+ ** ROLLBACK
+ ** PRAGMA
+ **
+-** $Id: build.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: build.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include <ctype.h>
+@@ -1537,7 +1537,7 @@
+ if( pName && !db->init.busy ){
+ Index *pISameName; /* Another index with the same name */
+ Table *pTSameName; /* A table with same name as the index */
+- zName = sqliteStrNDup(pName->z, pName->n);
++ zName = sqliteTableNameFromToken(pName);
+ if( zName==0 ) goto exit_create_index;
+ if( (pISameName = sqliteFindIndex(db, zName, 0))!=0 ){
+ sqliteErrorMsg(pParse, "index %s already exists", zName);
+@@ -1557,7 +1557,7 @@
+ sqliteSetString(&zName, "(", pTab->zName, " autoindex ", zBuf, (char*)0);
+ if( zName==0 ) goto exit_create_index;
+ }else{
+- zName = sqliteStrNDup(pName->z, pName->n);
++ zName = sqliteTableNameFromToken(pName);
+ }
+
+ /* Check for authorization to create an index.
+diff -dPNur sqlite-1.0.3/libsqlite/src/config_static.w32.h sqlite-svn/libsqlite/src/config_static.w32.h
+--- sqlite-1.0.3/libsqlite/src/config_static.w32.h 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/libsqlite/src/config_static.w32.h 2012-10-09 13:36:42.551252050 +0000
+@@ -0,0 +1 @@
++#define SQLITE_PTR_SZ 4
+\ No newline at end of file
+diff -dPNur sqlite-1.0.3/libsqlite/src/copy.c sqlite-svn/libsqlite/src/copy.c
+--- sqlite-1.0.3/libsqlite/src/copy.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/copy.c 2012-10-09 13:36:42.541252205 +0000
+@@ -11,7 +11,7 @@
+ *************************************************************************
+ ** This file contains code used to implement the COPY command.
+ **
+-** $Id: copy.c,v 1.2.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: copy.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+diff -dPNur sqlite-1.0.3/libsqlite/src/date.c sqlite-svn/libsqlite/src/date.c
+--- sqlite-1.0.3/libsqlite/src/date.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/date.c 2012-10-09 13:36:42.541252205 +0000
+@@ -16,7 +16,7 @@
+ ** sqliteRegisterDateTimeFunctions() found at the bottom of the file.
+ ** All other code has file scope.
+ **
+-** $Id: date.c,v 1.2.2.2 2004/07/10 12:25:34 wez Exp $
++** $Id: date.c 278363 2009-04-07 11:45:13Z kalle $
+ **
+ ** NOTES:
+ **
+@@ -53,6 +53,9 @@
+ #include <stdlib.h>
+ #include <assert.h>
+ #include <time.h>
++#ifndef PHP_WIN32
++#include "main/php_reentrancy.h"
++#endif
+
+ #ifndef SQLITE_OMIT_DATETIME_FUNCS
+
+@@ -397,7 +400,7 @@
+ static double localtimeOffset(DateTime *p){
+ DateTime x, y;
+ time_t t;
+- struct tm *pTm;
++ struct tm *pTm, tmbuf;
+ x = *p;
+ computeYMD_HMS(&x);
+ if( x.Y<1971 || x.Y>=2038 ){
+@@ -416,7 +419,10 @@
+ computeJD(&x);
+ t = (x.rJD-2440587.5)*86400.0 + 0.5;
+ sqliteOsEnterMutex();
+- pTm = localtime(&t);
++ pTm = php_localtime_r(&t, &tmbuf);
++ if (!pTm) {
++ return 0;
++ }
+ y.Y = pTm->tm_year + 1900;
+ y.M = pTm->tm_mon + 1;
+ y.D = pTm->tm_mday;
+@@ -800,18 +806,20 @@
+ case 'H': sprintf(&z[j],"%02d",x.h); j+=2; break;
+ case 'W': /* Fall thru */
+ case 'j': {
+- int n;
++ int n; /* Number of days since 1st day of year */
+ DateTime y = x;
+ y.validJD = 0;
+ y.M = 1;
+ y.D = 1;
+ computeJD(&y);
+- n = x.rJD - y.rJD + 1;
++ n = x.rJD - y.rJD;
+ if( zFmt[i]=='W' ){
+- sprintf(&z[j],"%02d",(n+6)/7);
++ int wd; /* 0=Monday, 1=Tuesday, ... 6=Sunday */
++ wd = ((int)(x.rJD+0.5)) % 7;
++ sprintf(&z[j],"%02d",(n+7-wd)/7);
+ j += 2;
+ }else{
+- sprintf(&z[j],"%03d",n);
++ sprintf(&z[j],"%03d",n+1);
+ j += 3;
+ }
+ break;
+@@ -847,19 +855,18 @@
+ ** external linkage.
+ */
+ void sqliteRegisterDateTimeFunctions(sqlite *db){
++#ifndef SQLITE_OMIT_DATETIME_FUNCS
+ static struct {
+ char *zName;
+ int nArg;
+ int dataType;
+ void (*xFunc)(sqlite_func*,int,const char**);
+ } aFuncs[] = {
+-#ifndef SQLITE_OMIT_DATETIME_FUNCS
+ { "julianday", -1, SQLITE_NUMERIC, juliandayFunc },
+ { "date", -1, SQLITE_TEXT, dateFunc },
+ { "time", -1, SQLITE_TEXT, timeFunc },
+ { "datetime", -1, SQLITE_TEXT, datetimeFunc },
+ { "strftime", -1, SQLITE_TEXT, strftimeFunc },
+-#endif
+ };
+ int i;
+
+@@ -870,4 +877,5 @@
+ sqlite_function_type(db, aFuncs[i].zName, aFuncs[i].dataType);
+ }
+ }
++#endif
+ }
+diff -dPNur sqlite-1.0.3/libsqlite/src/delete.c sqlite-svn/libsqlite/src/delete.c
+--- sqlite-1.0.3/libsqlite/src/delete.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/delete.c 2012-10-09 13:36:42.531952680 +0000
+@@ -12,7 +12,7 @@
+ ** This file contains C code routines that are called by the parser
+ ** to handle DELETE FROM statements.
+ **
+-** $Id: delete.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: delete.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+diff -dPNur sqlite-1.0.3/libsqlite/src/encode.c sqlite-svn/libsqlite/src/encode.c
+--- sqlite-1.0.3/libsqlite/src/encode.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/encode.c 2012-10-09 13:36:42.551252050 +0000
+@@ -15,7 +15,7 @@
+ ** data in an SQLite database. The code in this file is not used by any other
+ ** part of the SQLite library.
+ **
+-** $Id: encode.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: encode.c 225725 2006-12-24 20:50:02Z iliaa $
+ */
+ #include <string.h>
+ #include <assert.h>
+@@ -176,9 +176,12 @@
+ int i, e;
+ unsigned char c;
+ e = *(in++);
++ if (e == 0) {
++ return 0;
++ }
+ i = 0;
+ while( (c = *(in++))!=0 ){
+- if( c==1 ){
++ if (c == 1) {
+ c = *(in++) - 1;
+ }
+ out[i++] = c + e;
+diff -dPNur sqlite-1.0.3/libsqlite/src/expr.c sqlite-svn/libsqlite/src/expr.c
+--- sqlite-1.0.3/libsqlite/src/expr.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/expr.c 2012-10-09 13:36:42.551252050 +0000
+@@ -12,7 +12,7 @@
+ ** This file contains routines used for analyzing expressions and
+ ** for generating VDBE code that evaluates expressions in SQLite.
+ **
+-** $Id: expr.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: expr.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include <ctype.h>
+@@ -124,7 +124,7 @@
+ if( pNew==0 ) return 0;
+ memcpy(pNew, p, sizeof(*pNew));
+ if( p->token.z!=0 ){
+- pNew->token.z = sqliteStrDup(p->token.z);
++ pNew->token.z = sqliteStrNDup(p->token.z, p->token.n);
+ pNew->token.dyn = 1;
+ }else{
+ assert( pNew->token.z==0 );
+@@ -155,7 +155,10 @@
+ if( pNew==0 ) return 0;
+ pNew->nExpr = pNew->nAlloc = p->nExpr;
+ pNew->a = pItem = sqliteMalloc( p->nExpr*sizeof(p->a[0]) );
+- if( pItem==0 ) return 0; /* Leaks memory after a malloc failure */
++ if( pItem==0 ){
++ sqliteFree(pNew);
++ return 0;
++ }
+ for(i=0; i<p->nExpr; i++, pItem++){
+ Expr *pNewExpr, *pOldExpr;
+ pItem->pExpr = pNewExpr = sqliteExprDup(pOldExpr = p->a[i].pExpr);
+diff -dPNur sqlite-1.0.3/libsqlite/src/func.c sqlite-svn/libsqlite/src/func.c
+--- sqlite-1.0.3/libsqlite/src/func.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/func.c 2012-10-09 13:36:42.551252050 +0000
+@@ -16,7 +16,7 @@
+ ** sqliteRegisterBuildinFunctions() found at the bottom of the file.
+ ** All other code has file scope.
+ **
+-** $Id: func.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: func.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include <ctype.h>
+ #include <math.h>
+@@ -157,20 +157,20 @@
+ ** Implementation of the upper() and lower() SQL functions.
+ */
+ static void upperFunc(sqlite_func *context, int argc, const char **argv){
+- char *z;
++ unsigned char *z;
+ int i;
+ if( argc<1 || argv[0]==0 ) return;
+- z = sqlite_set_result_string(context, argv[0], -1);
++ z = (unsigned char*)sqlite_set_result_string(context, argv[0], -1);
+ if( z==0 ) return;
+ for(i=0; z[i]; i++){
+ if( islower(z[i]) ) z[i] = toupper(z[i]);
+ }
+ }
+ static void lowerFunc(sqlite_func *context, int argc, const char **argv){
+- char *z;
++ unsigned char *z;
+ int i;
+ if( argc<1 || argv[0]==0 ) return;
+- z = sqlite_set_result_string(context, argv[0], -1);
++ z = (unsigned char*)sqlite_set_result_string(context, argv[0], -1);
+ if( z==0 ) return;
+ for(i=0; z[i]; i++){
+ if( isupper(z[i]) ) z[i] = tolower(z[i]);
+@@ -517,26 +517,28 @@
+ int mask; /* 0 for min() or 0xffffffff for max() */
+
+ assert( argc==2 );
++ if( argv[0]==0 ) return; /* Ignore NULL values */
+ if( argv[1][0]=='n' ){
+ xCompare = sqliteCompare;
+ }else{
+ xCompare = strcmp;
+ }
+ mask = (int)sqlite_user_data(context);
++ assert( mask==0 || mask==-1 );
+ p = sqlite_aggregate_context(context, sizeof(*p));
+- if( p==0 || argc<1 || argv[0]==0 ) return;
++ if( p==0 || argc<1 ) return;
+ if( p->z==0 || (xCompare(argv[0],p->z)^mask)<0 ){
+ int len;
+- if( !p->zBuf[0] ){
++ if( p->zBuf[0] ){
+ sqliteFree(p->z);
+ }
+ len = strlen(argv[0]);
+ if( len < sizeof(p->zBuf)-1 ){
+ p->z = &p->zBuf[1];
+- p->zBuf[0] = 1;
++ p->zBuf[0] = 0;
+ }else{
+ p->z = sqliteMalloc( len+1 );
+- p->zBuf[0] = 0;
++ p->zBuf[0] = 1;
+ if( p->z==0 ) return;
+ }
+ strcpy(p->z, argv[0]);
+@@ -545,10 +547,10 @@
+ static void minMaxFinalize(sqlite_func *context){
+ MinMaxCtx *p;
+ p = sqlite_aggregate_context(context, sizeof(*p));
+- if( p && p->z ){
++ if( p && p->z && p->zBuf[0]<2 ){
+ sqlite_set_result_string(context, p->z, strlen(p->z));
+ }
+- if( p && !p->zBuf[0] ){
++ if( p && p->zBuf[0] ){
+ sqliteFree(p->z);
+ }
+ }
+@@ -621,7 +623,12 @@
+ int i;
+
+ for(i=0; i<sizeof(aFuncs)/sizeof(aFuncs[0]); i++){
+- void *pArg = aFuncs[i].argType==2 ? (void*)(-1) : db;
++ void *pArg;
++ switch( aFuncs[i].argType ){
++ case 0: pArg = 0; break;
++ case 1: pArg = db; break;
++ case 2: pArg = (void*)(-1); break;
++ }
+ sqlite_create_function(db, aFuncs[i].zName,
+ aFuncs[i].nArg, aFuncs[i].xFunc, pArg);
+ if( aFuncs[i].xFunc ){
+@@ -629,7 +636,12 @@
+ }
+ }
+ for(i=0; i<sizeof(aAggs)/sizeof(aAggs[0]); i++){
+- void *pArg = aAggs[i].argType==2 ? (void*)(-1) : db;
++ void *pArg;
++ switch( aAggs[i].argType ){
++ case 0: pArg = 0; break;
++ case 1: pArg = db; break;
++ case 2: pArg = (void*)(-1); break;
++ }
+ sqlite_create_aggregate(db, aAggs[i].zName,
+ aAggs[i].nArg, aAggs[i].xStep, aAggs[i].xFinalize, pArg);
+ sqlite_function_type(db, aAggs[i].zName, aAggs[i].dataType);
+diff -dPNur sqlite-1.0.3/libsqlite/src/hash.c sqlite-svn/libsqlite/src/hash.c
+--- sqlite-1.0.3/libsqlite/src/hash.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/hash.c 2012-10-09 13:36:42.541252205 +0000
+@@ -12,7 +12,7 @@
+ ** This is the implementation of generic hash-tables
+ ** used in SQLite.
+ **
+-** $Id: hash.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: hash.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include <assert.h>
+diff -dPNur sqlite-1.0.3/libsqlite/src/hash.h sqlite-svn/libsqlite/src/hash.h
+--- sqlite-1.0.3/libsqlite/src/hash.h 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/hash.h 2012-10-09 13:36:42.541252205 +0000
+@@ -12,7 +12,7 @@
+ ** This is the header file for the generic hash-table implemenation
+ ** used in SQLite.
+ **
+-** $Id: hash.h,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: hash.h 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #ifndef _SQLITE_HASH_H_
+ #define _SQLITE_HASH_H_
+diff -dPNur sqlite-1.0.3/libsqlite/src/insert.c sqlite-svn/libsqlite/src/insert.c
+--- sqlite-1.0.3/libsqlite/src/insert.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/insert.c 2012-10-09 13:36:42.541252205 +0000
+@@ -12,7 +12,7 @@
+ ** This file contains C code routines that are called by the parser
+ ** to handle INSERT statements in SQLite.
+ **
+-** $Id: insert.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: insert.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+diff -dPNur sqlite-1.0.3/libsqlite/src/libsqlite.dsp sqlite-svn/libsqlite/src/libsqlite.dsp
+--- sqlite-1.0.3/libsqlite/src/libsqlite.dsp 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/libsqlite/src/libsqlite.dsp 2012-10-09 13:36:42.541252205 +0000
+@@ -0,0 +1,353 @@
++# Microsoft Developer Studio Project File - Name="libsqlite" - Package Owner=<4>
++# Microsoft Developer Studio Generated Build File, Format Version 6.00
++# ** DO NOT EDIT **
++
++# TARGTYPE "Win32 (x86) Static Library" 0x0104
++
++CFG=libsqlite - Win32 Debug_TS
++!MESSAGE This is not a valid makefile. To build this project using NMAKE,
++!MESSAGE use the Export Makefile command and run
++!MESSAGE
++!MESSAGE NMAKE /f "libsqlite.mak".
++!MESSAGE
++!MESSAGE You can specify a configuration when running NMAKE
++!MESSAGE by defining the macro CFG on the command line. For example:
++!MESSAGE
++!MESSAGE NMAKE /f "libsqlite.mak" CFG="libsqlite - Win32 Debug_TS"
++!MESSAGE
++!MESSAGE Possible choices for configuration are:
++!MESSAGE
++!MESSAGE "libsqlite - Win32 Debug_TS" (based on "Win32 (x86) Static Library")
++!MESSAGE "libsqlite - Win32 Release_TS" (based on "Win32 (x86) Static Library")
++!MESSAGE "libsqlite - Win32 Release_TSDbg" (based on "Win32 (x86) Static Library")
++!MESSAGE
++
++# Begin Project
++# PROP AllowPerConfigDependencies 0
++# PROP Scc_ProjName ""
++# PROP Scc_LocalPath ""
++CPP=cl.exe
++RSC=rc.exe
++
++!IF "$(CFG)" == "libsqlite - Win32 Debug_TS"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 1
++# PROP BASE Output_Dir "Debug_TS"
++# PROP BASE Intermediate_Dir "Debug_TS"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 1
++# PROP Output_Dir "..\..\Debug_TS"
++# PROP Intermediate_Dir "..\..\Debug_TS"
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
++# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D THREADSAFE=1 /YX /FD /GZ /c
++# ADD BASE RSC /l 0x406 /d "_DEBUG"
++# ADD RSC /l 0x406 /d "_DEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo
++
++!ELSEIF "$(CFG)" == "libsqlite - Win32 Release_TS"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir "Release_TS"
++# PROP BASE Intermediate_Dir "Release_TS"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "..\..\Release_TS"
++# PROP Intermediate_Dir "..\..\Release_TS"
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
++# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D THREADSAFE=1 /YX /FD /c
++# ADD BASE RSC /l 0x406 /d "NDEBUG"
++# ADD RSC /l 0x406 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo
++# ADD LIB32 /nologo
++
++!ELSEIF "$(CFG)" == "libsqlite - Win32 Release_TSDbg"
++
++# PROP BASE Use_MFC 0
++# PROP BASE Use_Debug_Libraries 0
++# PROP BASE Output_Dir "libsqlite___Win32_Release_TSDbg"
++# PROP BASE Intermediate_Dir "libsqlite___Win32_Release_TSDbg"
++# PROP BASE Target_Dir ""
++# PROP Use_MFC 0
++# PROP Use_Debug_Libraries 0
++# PROP Output_Dir "..\..\Release_TSDbg"
++# PROP Intermediate_Dir "..\..\Release_TSDbg"
++# PROP Target_Dir ""
++# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D THREADSAFE=1 /YX /FD /c
++# ADD CPP /nologo /MD /W3 /GX /Zi /Od /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D THREADSAFE=1 /YX /FD /c
++# ADD BASE RSC /l 0x406 /d "NDEBUG"
++# ADD RSC /l 0x406 /d "NDEBUG"
++BSC32=bscmake.exe
++# ADD BASE BSC32 /nologo
++# ADD BSC32 /nologo
++LIB32=link.exe -lib
++# ADD BASE LIB32 /nologo /out:"Release_TS\libsqlite.lib"
++# ADD LIB32 /nologo
++
++!ENDIF
++
++# Begin Target
++
++# Name "libsqlite - Win32 Debug_TS"
++# Name "libsqlite - Win32 Release_TS"
++# Name "libsqlite - Win32 Release_TSDbg"
++# Begin Group "Source Files"
++
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
++# Begin Source File
++
++SOURCE=attach.c
++# End Source File
++# Begin Source File
++
++SOURCE=auth.c
++# End Source File
++# Begin Source File
++
++SOURCE=btree.c
++# End Source File
++# Begin Source File
++
++SOURCE=btree_rb.c
++# End Source File
++# Begin Source File
++
++SOURCE=build.c
++# End Source File
++# Begin Source File
++
++SOURCE=copy.c
++# End Source File
++# Begin Source File
++
++SOURCE=.\date.c
++# End Source File
++# Begin Source File
++
++SOURCE=delete.c
++# End Source File
++# Begin Source File
++
++SOURCE=encode.c
++# End Source File
++# Begin Source File
++
++SOURCE=expr.c
++# End Source File
++# Begin Source File
++
++SOURCE=func.c
++# End Source File
++# Begin Source File
++
++SOURCE=hash.c
++# End Source File
++# Begin Source File
++
++SOURCE=insert.c
++# End Source File
++# Begin Source File
++
++SOURCE=main.c
++# End Source File
++# Begin Source File
++
++SOURCE=opcodes.c
++# End Source File
++# Begin Source File
++
++SOURCE=os.c
++# End Source File
++# Begin Source File
++
++SOURCE=pager.c
++# End Source File
++# Begin Source File
++
++SOURCE=parse.c
++# End Source File
++# Begin Source File
++
++SOURCE=pragma.c
++# End Source File
++# Begin Source File
++
++SOURCE=printf.c
++# End Source File
++# Begin Source File
++
++SOURCE=random.c
++# End Source File
++# Begin Source File
++
++SOURCE=select.c
++# End Source File
++# Begin Source File
++
++SOURCE=table.c
++# End Source File
++# Begin Source File
++
++SOURCE=tokenize.c
++# End Source File
++# Begin Source File
++
++SOURCE=trigger.c
++# End Source File
++# Begin Source File
++
++SOURCE=update.c
++# End Source File
++# Begin Source File
++
++SOURCE=util.c
++# End Source File
++# Begin Source File
++
++SOURCE=vacuum.c
++# End Source File
++# Begin Source File
++
++SOURCE=vdbe.c
++# End Source File
++# Begin Source File
++
++SOURCE=.\vdbeaux.c
++# End Source File
++# Begin Source File
++
++SOURCE=where.c
++# End Source File
++# End Group
++# Begin Group "Header Files"
++
++# PROP Default_Filter "h;hpp;hxx;hm;inl"
++# Begin Source File
++
++SOURCE=btree.h
++# End Source File
++# Begin Source File
++
++SOURCE=config_static.w32.h
++
++!IF "$(CFG)" == "libsqlite - Win32 Debug_TS"
++
++# Begin Custom Build
++InputDir=.
++InputPath=config_static.w32.h
++
++"$(InputDir)\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
++ copy $(InputPath) $(InputDir)\config.h
++
++# End Custom Build
++
++!ELSEIF "$(CFG)" == "libsqlite - Win32 Release_TS"
++
++# Begin Custom Build
++InputDir=.
++InputPath=config_static.w32.h
++
++"$(InputDir)\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
++ copy $(InputPath) $(InputDir)\config.h
++
++# End Custom Build
++
++!ELSEIF "$(CFG)" == "libsqlite - Win32 Release_TSDbg"
++
++# Begin Custom Build
++InputDir=.
++InputPath=config_static.w32.h
++
++"$(InputDir)\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
++ copy $(InputPath) $(InputDir)\config.h
++
++# End Custom Build
++
++!ENDIF
++
++# End Source File
++# Begin Source File
++
++SOURCE=hash.h
++# End Source File
++# Begin Source File
++
++SOURCE=opcodes.h
++# End Source File
++# Begin Source File
++
++SOURCE=os.h
++# End Source File
++# Begin Source File
++
++SOURCE=pager.h
++# End Source File
++# Begin Source File
++
++SOURCE=parse.h
++# End Source File
++# Begin Source File
++
++SOURCE=sqlite.w32.h
++
++!IF "$(CFG)" == "libsqlite - Win32 Debug_TS"
++
++# Begin Custom Build
++InputDir=.
++InputPath=sqlite.w32.h
++
++"$(InputDir)\sqlite.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
++ copy $(InputPath) $(InputDir)\sqlite.h
++
++# End Custom Build
++
++!ELSEIF "$(CFG)" == "libsqlite - Win32 Release_TS"
++
++# Begin Custom Build
++InputDir=.
++InputPath=sqlite.w32.h
++
++"$(InputDir)\sqlite.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
++ copy $(InputPath) $(InputDir)\sqlite.h
++
++# End Custom Build
++
++!ELSEIF "$(CFG)" == "libsqlite - Win32 Release_TSDbg"
++
++# Begin Custom Build
++InputDir=.
++InputPath=sqlite.w32.h
++
++"$(InputDir)\sqlite.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
++ copy $(InputPath) $(InputDir)\sqlite.h
++
++# End Custom Build
++
++!ENDIF
++
++# End Source File
++# Begin Source File
++
++SOURCE=sqliteInt.h
++# End Source File
++# Begin Source File
++
++SOURCE=vdbe.h
++# End Source File
++# End Group
++# End Target
++# End Project
+diff -dPNur sqlite-1.0.3/libsqlite/src/main.c sqlite-svn/libsqlite/src/main.c
+--- sqlite-1.0.3/libsqlite/src/main.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/main.c 2012-10-09 13:36:42.551252050 +0000
+@@ -14,7 +14,7 @@
+ ** other files are for internal use by SQLite and should not be
+ ** accessed by users of the library.
+ **
+-** $Id: main.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: main.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include "os.h"
+@@ -189,10 +189,13 @@
+ BtCursor *curMain;
+ int size;
+ Table *pTab;
+- char *azArg[6];
++ char const *azArg[6];
+ char zDbNum[30];
+ int meta[SQLITE_N_BTREE_META];
+ InitData initData;
++ char const *zMasterSchema;
++ char const *zMasterName;
++ char *zSql = 0;
+
+ /*
+ ** The master database table has a structure like this
+@@ -216,62 +219,38 @@
+ ")"
+ ;
+
+- /* The following SQL will read the schema from the master tables.
+- ** The first version works with SQLite file formats 2 or greater.
+- ** The second version is for format 1 files.
+- **
+- ** Beginning with file format 2, the rowid for new table entries
+- ** (including entries in sqlite_master) is an increasing integer.
+- ** So for file format 2 and later, we can play back sqlite_master
+- ** and all the CREATE statements will appear in the right order.
+- ** But with file format 1, table entries were random and so we
+- ** have to make sure the CREATE TABLEs occur before their corresponding
+- ** CREATE INDEXs. (We don't have to deal with CREATE VIEW or
+- ** CREATE TRIGGER in file format 1 because those constructs did
+- ** not exist then.)
+- */
+- static char init_script[] =
+- "SELECT type, name, rootpage, sql, 1 FROM sqlite_temp_master "
+- "UNION ALL "
+- "SELECT type, name, rootpage, sql, 0 FROM sqlite_master";
+- static char older_init_script[] =
+- "SELECT type, name, rootpage, sql, 1 FROM sqlite_temp_master "
+- "UNION ALL "
+- "SELECT type, name, rootpage, sql, 0 FROM sqlite_master "
+- "WHERE type='table' "
+- "UNION ALL "
+- "SELECT type, name, rootpage, sql, 0 FROM sqlite_master "
+- "WHERE type='index'";
+-
++ assert( iDb>=0 && iDb<db->nDb );
+
+- assert( iDb>=0 && iDb!=1 && iDb<db->nDb );
++ /* zMasterSchema and zInitScript are set to point at the master schema
++ ** and initialisation script appropriate for the database being
++ ** initialised. zMasterName is the name of the master table.
++ */
++ if( iDb==1 ){
++ zMasterSchema = temp_master_schema;
++ zMasterName = TEMP_MASTER_NAME;
++ }else{
++ zMasterSchema = master_schema;
++ zMasterName = MASTER_NAME;
++ }
+
+- /* Construct the schema tables: sqlite_master and sqlite_temp_master
++ /* Construct the schema table.
+ */
+ sqliteSafetyOff(db);
+ azArg[0] = "table";
+- azArg[1] = MASTER_NAME;
++ azArg[1] = zMasterName;
+ azArg[2] = "2";
+- azArg[3] = master_schema;
++ azArg[3] = zMasterSchema;
+ sprintf(zDbNum, "%d", iDb);
+ azArg[4] = zDbNum;
+ azArg[5] = 0;
+ initData.db = db;
+ initData.pzErrMsg = pzErrMsg;
+- sqliteInitCallback(&initData, 5, azArg, 0);
+- pTab = sqliteFindTable(db, MASTER_NAME, "main");
++ sqliteInitCallback(&initData, 5, (char **)azArg, 0);
++ pTab = sqliteFindTable(db, zMasterName, db->aDb[iDb].zName);
+ if( pTab ){
+ pTab->readOnly = 1;
+- }
+- if( iDb==0 ){
+- azArg[1] = TEMP_MASTER_NAME;
+- azArg[3] = temp_master_schema;
+- azArg[4] = "1";
+- sqliteInitCallback(&initData, 5, azArg, 0);
+- pTab = sqliteFindTable(db, TEMP_MASTER_NAME, "temp");
+- if( pTab ){
+- pTab->readOnly = 1;
+- }
++ }else{
++ return SQLITE_NOMEM;
+ }
+ sqliteSafetyOn(db);
+
+@@ -320,7 +299,7 @@
+ sqliteSetString(pzErrMsg, "unsupported file format", (char*)0);
+ return SQLITE_ERROR;
+ }
+- }else if( db->file_format!=meta[2] || db->file_format<4 ){
++ }else if( iDb!=1 && (db->file_format!=meta[2] || db->file_format<4) ){
+ assert( db->file_format>=4 );
+ if( meta[2]==0 ){
+ sqliteSetString(pzErrMsg, "cannot attach empty database: ",
+@@ -340,18 +319,35 @@
+ */
+ assert( db->init.busy );
+ sqliteSafetyOff(db);
+- if( iDb==0 ){
+- rc = sqlite_exec(db,
+- db->file_format>=2 ? init_script : older_init_script,
+- sqliteInitCallback, &initData, 0);
++
++ /* The following SQL will read the schema from the master tables.
++ ** The first version works with SQLite file formats 2 or greater.
++ ** The second version is for format 1 files.
++ **
++ ** Beginning with file format 2, the rowid for new table entries
++ ** (including entries in sqlite_master) is an increasing integer.
++ ** So for file format 2 and later, we can play back sqlite_master
++ ** and all the CREATE statements will appear in the right order.
++ ** But with file format 1, table entries were random and so we
++ ** have to make sure the CREATE TABLEs occur before their corresponding
++ ** CREATE INDEXs. (We don't have to deal with CREATE VIEW or
++ ** CREATE TRIGGER in file format 1 because those constructs did
++ ** not exist then.)
++ */
++ if( db->file_format>=2 ){
++ sqliteSetString(&zSql,
++ "SELECT type, name, rootpage, sql, ", zDbNum, " FROM \"",
++ db->aDb[iDb].zName, "\".", zMasterName, (char*)0);
+ }else{
+- char *zSql = 0;
+ sqliteSetString(&zSql,
+- "SELECT type, name, rootpage, sql, ", zDbNum, " FROM \"",
+- db->aDb[iDb].zName, "\".sqlite_master", (char*)0);
+- rc = sqlite_exec(db, zSql, sqliteInitCallback, &initData, 0);
+- sqliteFree(zSql);
++ "SELECT type, name, rootpage, sql, ", zDbNum, " FROM \"",
++ db->aDb[iDb].zName, "\".", zMasterName,
++ " WHERE type IN ('table', 'index')"
++ " ORDER BY CASE type WHEN 'table' THEN 0 ELSE 1 END", (char*)0);
+ }
++ rc = sqlite_exec(db, zSql, sqliteInitCallback, &initData, 0);
++
++ sqliteFree(zSql);
+ sqliteSafetyOn(db);
+ sqliteBtreeCloseCursor(curMain);
+ if( sqlite_malloc_failed ){
+@@ -361,9 +357,6 @@
+ }
+ if( rc==SQLITE_OK ){
+ DbSetProperty(db, iDb, DB_SchemaLoaded);
+- if( iDb==0 ){
+- DbSetProperty(db, 1, DB_SchemaLoaded);
+- }
+ }else{
+ sqliteResetInternalSchema(db, iDb);
+ }
+@@ -391,13 +384,24 @@
+ rc = SQLITE_OK;
+ db->init.busy = 1;
+ for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
+- if( DbHasProperty(db, i, DB_SchemaLoaded) ) continue;
+- assert( i!=1 ); /* Should have been initialized together with 0 */
++ if( DbHasProperty(db, i, DB_SchemaLoaded) || i==1 ) continue;
+ rc = sqliteInitOne(db, i, pzErrMsg);
+ if( rc ){
+ sqliteResetInternalSchema(db, i);
+ }
+ }
++
++ /* Once all the other databases have been initialised, load the schema
++ ** for the TEMP database. This is loaded last, as the TEMP database
++ ** schema may contain references to objects in other databases.
++ */
++ if( rc==SQLITE_OK && db->nDb>1 && !DbHasProperty(db, 1, DB_SchemaLoaded) ){
++ rc = sqliteInitOne(db, 1, pzErrMsg);
++ if( rc ){
++ sqliteResetInternalSchema(db, 1);
++ }
++ }
++
+ db->init.busy = 0;
+ if( rc==SQLITE_OK ){
+ db->flags |= SQLITE_Initialized;
+diff -dPNur sqlite-1.0.3/libsqlite/src/os.c sqlite-svn/libsqlite/src/os.c
+--- sqlite-1.0.3/libsqlite/src/os.c 2004-07-10 11:47:26.000000000 +0000
++++ sqlite-svn/libsqlite/src/os.c 2012-10-09 13:36:42.541252205 +0000
+@@ -830,7 +830,7 @@
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "0123456789";
+ int i, j;
+- char *zDir;
++ const char *zDir;
+ char zTempPath[SQLITE_TEMPNAME_SIZE];
+ if( sqlite_temp_directory==0 ){
+ GetTempPath(SQLITE_TEMPNAME_SIZE-30, zTempPath);
+@@ -1116,6 +1116,10 @@
+ #endif
+ }
+
++#ifdef SQLITE_NOSYNC
++# define fsync(X) 0
++#endif
++
+ /*
+ ** Make sure all writes to a particular file are committed to disk.
+ **
+@@ -1774,6 +1778,7 @@
+ sqliteSetString(&zFull, zRelative, (char*)0);
+ }else{
+ char zBuf[5000];
++ zBuf[0] = 0;
+ sqliteSetString(&zFull, getcwd(zBuf, sizeof(zBuf)), "/", zRelative,
+ (char*)0);
+ }
+diff -dPNur sqlite-1.0.3/libsqlite/src/pager.c sqlite-svn/libsqlite/src/pager.c
+--- sqlite-1.0.3/libsqlite/src/pager.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/pager.c 2012-10-09 13:36:42.541252205 +0000
+@@ -18,7 +18,7 @@
+ ** file simultaneously, or one process from reading the database while
+ ** another is writing.
+ **
+-** @(#) $Id: pager.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: pager.c 203289 2005-12-20 15:26:26Z iliaa $
+ */
+ #include "os.h" /* Must be first to enable large file support */
+ #include "sqliteInt.h"
+@@ -1929,7 +1929,7 @@
+
+ pPg = pager_lookup(pPager, pgno);
+ pPg->alwaysRollback = 1;
+- if( pPg && pPg->dirty ){
++ if( pPg && pPg->dirty && !pPager->ckptInUse ){
+ if( pPager->dbSize==(int)pPg->pgno && pPager->origDbSize<pPager->dbSize ){
+ /* If this pages is the last page in the file and the file has grown
+ ** during the current transaction, then do NOT mark the page as clean.
+diff -dPNur sqlite-1.0.3/libsqlite/src/pager.h sqlite-svn/libsqlite/src/pager.h
+--- sqlite-1.0.3/libsqlite/src/pager.h 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/pager.h 2012-10-09 13:36:42.541252205 +0000
+@@ -13,7 +13,7 @@
+ ** subsystem. The page cache subsystem reads and writes a file a page
+ ** at a time and provides a journal for rollback.
+ **
+-** @(#) $Id: pager.h,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: pager.h 195361 2005-09-07 15:11:33Z iliaa $
+ */
+
+ /*
+diff -dPNur sqlite-1.0.3/libsqlite/src/parse.c sqlite-svn/libsqlite/src/parse.c
+--- sqlite-1.0.3/libsqlite/src/parse.c 2004-07-18 10:29:42.000000000 +0000
++++ sqlite-svn/libsqlite/src/parse.c 2012-10-09 13:36:42.541252205 +0000
+@@ -4,7 +4,7 @@
+ /* First off, code is include which follows the "include" declaration
+ ** in the input file. */
+ #include <stdio.h>
+-#line 33 "parse.y"
++#line 33 "ext/sqlite/libsqlite/src/parse.y"
+
+ #include "sqliteInt.h"
+ #include "parse.h"
+@@ -29,8 +29,7 @@
+ */
+ struct TrigEvent { int a; IdList * b; };
+
+-
+-#line 34 "parse.c"
++#line 34 "ext/sqlite/libsqlite/src/parse.c"
+ /* Next is all token values, in a form suitable for use by makeheaders.
+ ** This section will be null unless lemon is run with the -m switch.
+ */
+@@ -79,7 +78,6 @@
+ ** YYERRORSYMBOL is the code number of the error symbol. If not
+ ** defined, then do no error processing.
+ */
+-/*  */
+ #define YYCODETYPE unsigned char
+ #define YYNOCODE 221
+ #define YYACTIONTYPE unsigned short int
+@@ -161,7 +159,7 @@
+ ** shifting non-terminals after a reduce.
+ ** yy_default[] Default action for each state.
+ */
+-static YYACTIONTYPE yy_action[] = {
++static const YYACTIONTYPE yy_action[] = {
+ /* 0 */ 264, 5, 262, 119, 123, 117, 121, 129, 131, 133,
+ /* 10 */ 135, 144, 146, 148, 150, 152, 154, 568, 106, 106,
+ /* 20 */ 143, 857, 1, 562, 3, 142, 129, 131, 133, 135,
+@@ -292,7 +290,7 @@
+ /* 1270 */ 556, 550, 850, 547, 549, 851, 555, 558, 551, 855,
+ /* 1280 */ 553, 559,
+ };
+-static YYCODETYPE yy_lookahead[] = {
++static const YYCODETYPE yy_lookahead[] = {
+ /* 0 */ 21, 9, 23, 70, 71, 72, 73, 74, 75, 76,
+ /* 10 */ 77, 78, 79, 80, 81, 82, 83, 9, 140, 140,
+ /* 20 */ 41, 132, 133, 134, 135, 46, 74, 75, 76, 77,
+@@ -424,7 +422,7 @@
+ /* 1280 */ 219, 140,
+ };
+ #define YY_SHIFT_USE_DFLT (-68)
+-static short yy_shift_ofst[] = {
++static const short yy_shift_ofst[] = {
+ /* 0 */ 170, 113, -68, 746, -8, -68, 8, 127, 288, 239,
+ /* 10 */ 348, 167, -68, -68, -68, -68, -68, -68, 547, -68,
+ /* 20 */ -68, -68, -68, 115, 613, 115, 723, 115, 761, 44,
+@@ -484,7 +482,7 @@
+ /* 560 */ -68, -68, -68,
+ };
+ #define YY_REDUCE_USE_DFLT (-123)
+-static short yy_reduce_ofst[] = {
++static const short yy_reduce_ofst[] = {
+ /* 0 */ -111, 55, -123, 643, -123, -123, -123, -100, 82, -123,
+ /* 10 */ -123, 233, -123, -123, -123, -123, -123, -123, 310, -123,
+ /* 20 */ -123, -123, -123, 442, -123, 448, -123, 542, -123, 540,
+@@ -543,7 +541,7 @@
+ /* 550 */ -123, 1129, 1061, -123, 1124, -123, -123, 1059, 1141, -123,
+ /* 560 */ -123, -123, -123,
+ };
+-static YYACTIONTYPE yy_default[] = {
++static const YYACTIONTYPE yy_default[] = {
+ /* 0 */ 570, 570, 564, 856, 856, 566, 856, 572, 856, 856,
+ /* 10 */ 856, 856, 652, 655, 656, 657, 658, 659, 573, 574,
+ /* 20 */ 591, 592, 593, 856, 856, 856, 856, 856, 856, 856,
+@@ -816,7 +814,7 @@
+ #ifndef NDEBUG
+ /* For tracing shifts, the names of all terminals and nonterminals
+ ** are required. The following table supplies these names */
+-static const char *yyTokenName[] = {
++static const char *const yyTokenName[] = {
+ "$", "END_OF_FILE", "ILLEGAL", "SPACE",
+ "UNCLOSED_STRING", "COMMENT", "FUNCTION", "COLUMN",
+ "AGG_FUNCTION", "SEMI", "EXPLAIN", "BEGIN",
+@@ -878,7 +876,7 @@
+ #ifndef NDEBUG
+ /* For tracing reduce actions, the names of all rules are required.
+ */
+-static const char *yyRuleName[] = {
++static const char *const yyRuleName[] = {
+ /* 0 */ "input ::= cmdlist",
+ /* 1 */ "cmdlist ::= cmdlist ecmd",
+ /* 2 */ "cmdlist ::= ecmd",
+@@ -1230,149 +1228,61 @@
+ ** inside the C code.
+ */
+ case 146:
+-#line 286 "parse.y"
++ case 171:
++ case 189:
++#line 286 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteSelectDelete((yypminor->yy179));}
+-#line 1235 "parse.c"
++#line 1237 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 158:
+-#line 533 "parse.y"
++ case 176:
++ case 178:
++ case 187:
++ case 192:
++ case 204:
++#line 533 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteExprDelete((yypminor->yy242));}
+-#line 1240 "parse.c"
++#line 1247 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 159:
+-#line 746 "parse.y"
+-{sqliteIdListDelete((yypminor->yy320));}
+-#line 1245 "parse.c"
+- break;
+ case 167:
+-#line 744 "parse.y"
++ case 188:
++ case 197:
++ case 199:
++#line 746 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteIdListDelete((yypminor->yy320));}
+-#line 1250 "parse.c"
+- break;
+- case 171:
+-#line 288 "parse.y"
+-{sqliteSelectDelete((yypminor->yy179));}
+-#line 1255 "parse.c"
++#line 1256 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 174:
+-#line 322 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1260 "parse.c"
+- break;
+- case 175:
+-#line 353 "parse.y"
+-{sqliteSrcListDelete((yypminor->yy307));}
+-#line 1265 "parse.c"
+- break;
+- case 176:
+-#line 483 "parse.y"
+-{sqliteExprDelete((yypminor->yy242));}
+-#line 1270 "parse.c"
+- break;
+ case 177:
+-#line 459 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1275 "parse.c"
+- break;
+- case 178:
+-#line 464 "parse.y"
+-{sqliteExprDelete((yypminor->yy242));}
+-#line 1280 "parse.c"
+- break;
+ case 179:
+-#line 431 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1285 "parse.c"
+- break;
+ case 181:
+-#line 324 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1290 "parse.c"
+- break;
+- case 183:
+-#line 349 "parse.y"
+-{sqliteSrcListDelete((yypminor->yy307));}
+-#line 1295 "parse.c"
+- break;
+- case 184:
+-#line 351 "parse.y"
+-{sqliteSrcListDelete((yypminor->yy307));}
+-#line 1300 "parse.c"
+- break;
+- case 187:
+-#line 420 "parse.y"
+-{sqliteExprDelete((yypminor->yy242));}
+-#line 1305 "parse.c"
+- break;
+- case 188:
+-#line 425 "parse.y"
+-{sqliteIdListDelete((yypminor->yy320));}
+-#line 1310 "parse.c"
+- break;
+- case 189:
+-#line 400 "parse.y"
+-{sqliteSelectDelete((yypminor->yy179));}
+-#line 1315 "parse.c"
+- break;
+ case 191:
+-#line 433 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1320 "parse.c"
+- break;
+- case 192:
+-#line 435 "parse.y"
+-{sqliteExprDelete((yypminor->yy242));}
+-#line 1325 "parse.c"
+- break;
+ case 194:
+-#line 719 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1330 "parse.c"
+- break;
+ case 195:
+-#line 489 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1335 "parse.c"
+- break;
+- case 197:
+-#line 520 "parse.y"
+-{sqliteIdListDelete((yypminor->yy320));}
+-#line 1340 "parse.c"
+- break;
+ case 198:
+-#line 514 "parse.y"
+-{sqliteExprListDelete((yypminor->yy322));}
+-#line 1345 "parse.c"
+- break;
+- case 199:
+-#line 522 "parse.y"
+-{sqliteIdListDelete((yypminor->yy320));}
+-#line 1350 "parse.c"
+- break;
+ case 202:
+-#line 702 "parse.y"
++#line 322 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteExprListDelete((yypminor->yy322));}
+-#line 1355 "parse.c"
++#line 1269 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+- case 204:
+-#line 721 "parse.y"
+-{sqliteExprDelete((yypminor->yy242));}
+-#line 1360 "parse.c"
++ case 175:
++ case 183:
++ case 184:
++#line 353 "ext/sqlite/libsqlite/src/parse.y"
++{sqliteSrcListDelete((yypminor->yy307));}
++#line 1276 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 212:
+-#line 828 "parse.y"
++ case 217:
++#line 828 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteDeleteTriggerStep((yypminor->yy19));}
+-#line 1365 "parse.c"
++#line 1282 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 214:
+-#line 812 "parse.y"
++#line 812 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteIdListDelete((yypminor->yy290).b);}
+-#line 1370 "parse.c"
+- break;
+- case 217:
+-#line 836 "parse.y"
+-{sqliteDeleteTriggerStep((yypminor->yy19));}
+-#line 1375 "parse.c"
++#line 1287 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ default: break; /* If no destructor action specified: do nothing */
+ }
+@@ -1479,11 +1389,11 @@
+ ** return YY_NO_ACTION.
+ */
+ static int yy_find_reduce_action(
+- yyParser *pParser, /* The parser */
++ int stateno, /* Current state number */
+ int iLookAhead /* The look-ahead token */
+ ){
+ int i;
+- int stateno = pParser->yystack[pParser->yyidx].stateno;
++ /* int stateno = pParser->yystack[pParser->yyidx].stateno; */
+
+ i = yy_reduce_ofst[stateno];
+ if( i==YY_REDUCE_USE_DFLT ){
+@@ -1544,7 +1454,7 @@
+ /* The following table contains information about every rule that
+ ** is used during the reduce.
+ */
+-static struct {
++static const struct {
+ YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
+ unsigned char nrhs; /* Number of right-hand side symbols in the rule */
+ } yyRuleInfo[] = {
+@@ -1868,6 +1778,18 @@
+ }
+ #endif /* NDEBUG */
+
++#ifndef NDEBUG
++ /* Silence complaints from purify about yygotominor being uninitialized
++ ** in some cases when it is copied into the stack after the following
++ ** switch. yygotominor is uninitialized when a rule reduces that does
++ ** not set the value of its left-hand side nonterminal. Leaving the
++ ** value of the nonterminal uninitialized is utterly harmless as long
++ ** as the value is never used. So really the only thing this code
++ ** accomplishes is to quieten purify.
++ */
++ memset(&yygotominor, 0, sizeof(yygotominor));
++#endif
++
+ switch( yyruleno ){
+ /* Beginning here are the reduction cases. A typical example
+ ** follows:
+@@ -1877,596 +1799,330 @@
+ ** #line <lineno> <thisfile>
+ ** break;
+ */
+- case 0:
+- /* No destructor defined for cmdlist */
+- break;
+- case 1:
+- /* No destructor defined for cmdlist */
+- /* No destructor defined for ecmd */
+- break;
+- case 2:
+- /* No destructor defined for ecmd */
+- break;
+- case 3:
+- /* No destructor defined for explain */
+- /* No destructor defined for cmdx */
+- /* No destructor defined for SEMI */
+- break;
+- case 4:
+- /* No destructor defined for SEMI */
+- break;
+ case 5:
+-#line 72 "parse.y"
++#line 72 "ext/sqlite/libsqlite/src/parse.y"
+ { sqliteExec(pParse); }
+-#line 1901 "parse.c"
+- /* No destructor defined for cmd */
++#line 1807 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 6:
+-#line 73 "parse.y"
++#line 73 "ext/sqlite/libsqlite/src/parse.y"
+ { sqliteBeginParse(pParse, 1); }
+-#line 1907 "parse.c"
+- /* No destructor defined for EXPLAIN */
++#line 1812 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 7:
+-#line 74 "parse.y"
++#line 74 "ext/sqlite/libsqlite/src/parse.y"
+ { sqliteBeginParse(pParse, 0); }
+-#line 1913 "parse.c"
++#line 1817 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 8:
+-#line 79 "parse.y"
++#line 79 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteBeginTransaction(pParse,yymsp[0].minor.yy372);}
+-#line 1918 "parse.c"
+- /* No destructor defined for BEGIN */
+- /* No destructor defined for trans_opt */
+- break;
+- case 9:
+- break;
+- case 10:
+- /* No destructor defined for TRANSACTION */
+- break;
+- case 11:
+- /* No destructor defined for TRANSACTION */
+- /* No destructor defined for nm */
++#line 1822 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 12:
+-#line 83 "parse.y"
+-{sqliteCommitTransaction(pParse);}
+-#line 1934 "parse.c"
+- /* No destructor defined for COMMIT */
+- /* No destructor defined for trans_opt */
+- break;
+ case 13:
+-#line 84 "parse.y"
++#line 83 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteCommitTransaction(pParse);}
+-#line 1941 "parse.c"
+- /* No destructor defined for END */
+- /* No destructor defined for trans_opt */
++#line 1828 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 14:
+-#line 85 "parse.y"
++#line 85 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteRollbackTransaction(pParse);}
+-#line 1948 "parse.c"
+- /* No destructor defined for ROLLBACK */
+- /* No destructor defined for trans_opt */
+- break;
+- case 15:
+- /* No destructor defined for create_table */
+- /* No destructor defined for create_table_args */
++#line 1833 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 16:
+-#line 90 "parse.y"
++#line 90 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy298,yymsp[-2].minor.yy372,0);
+ }
+-#line 1961 "parse.c"
+- /* No destructor defined for TABLE */
++#line 1840 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 17:
+-#line 94 "parse.y"
++ case 74:
++ case 108:
++#line 94 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = 1;}
+-#line 1967 "parse.c"
+- /* No destructor defined for TEMP */
++#line 1847 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 18:
+-#line 95 "parse.y"
++ case 73:
++ case 75:
++ case 86:
++ case 109:
++ case 110:
++#line 95 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = 0;}
+-#line 1973 "parse.c"
++#line 1857 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 19:
+-#line 96 "parse.y"
++#line 96 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteEndTable(pParse,&yymsp[0].minor.yy0,0);
+ }
+-#line 1980 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for columnlist */
+- /* No destructor defined for conslist_opt */
++#line 1864 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 20:
+-#line 99 "parse.y"
++#line 99 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteEndTable(pParse,0,yymsp[0].minor.yy179);
+ sqliteSelectDelete(yymsp[0].minor.yy179);
+ }
+-#line 1991 "parse.c"
+- /* No destructor defined for AS */
+- break;
+- case 21:
+- /* No destructor defined for columnlist */
+- /* No destructor defined for COMMA */
+- /* No destructor defined for column */
+- break;
+- case 22:
+- /* No destructor defined for column */
+- break;
+- case 23:
+- /* No destructor defined for columnid */
+- /* No destructor defined for type */
+- /* No destructor defined for carglist */
++#line 1872 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 24:
+-#line 111 "parse.y"
++#line 111 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddColumn(pParse,&yymsp[0].minor.yy298);}
+-#line 2010 "parse.c"
++#line 1877 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 25:
+-#line 117 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 2015 "parse.c"
+- break;
+ case 26:
+-#line 149 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 2020 "parse.c"
+- break;
+ case 27:
+-#line 150 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 2025 "parse.c"
+- break;
+ case 28:
+-#line 155 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 2030 "parse.c"
+- break;
+ case 29:
+-#line 156 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 2035 "parse.c"
+- break;
+ case 30:
+-#line 157 "parse.y"
++ case 256:
++ case 257:
++#line 117 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 2040 "parse.c"
+- break;
+- case 31:
++#line 1889 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 32:
+-#line 160 "parse.y"
++#line 160 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddColumnType(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298);}
+-#line 2047 "parse.c"
++#line 1894 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 33:
+-#line 161 "parse.y"
++#line 161 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddColumnType(pParse,&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0);}
+-#line 2052 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for signed */
++#line 1899 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 34:
+-#line 163 "parse.y"
++#line 163 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddColumnType(pParse,&yymsp[-5].minor.yy298,&yymsp[0].minor.yy0);}
+-#line 2059 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for signed */
+- /* No destructor defined for COMMA */
+- /* No destructor defined for signed */
++#line 1904 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 35:
+-#line 165 "parse.y"
++ case 128:
++ case 254:
++ case 255:
++#line 165 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy298 = yymsp[0].minor.yy298;}
+-#line 2068 "parse.c"
++#line 1912 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 36:
+-#line 166 "parse.y"
++ case 242:
++#line 166 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy298 = yymsp[-1].minor.yy298;}
+-#line 2073 "parse.c"
+- /* No destructor defined for ids */
++#line 1918 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 37:
+-#line 168 "parse.y"
+-{ yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); }
+-#line 2079 "parse.c"
+- break;
+ case 38:
+-#line 169 "parse.y"
++#line 168 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); }
+-#line 2084 "parse.c"
+- /* No destructor defined for PLUS */
++#line 1924 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 39:
+-#line 170 "parse.y"
++#line 170 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = -atoi(yymsp[0].minor.yy0.z); }
+-#line 2090 "parse.c"
+- /* No destructor defined for MINUS */
+- break;
+- case 40:
+- /* No destructor defined for carglist */
+- /* No destructor defined for carg */
+- break;
+- case 41:
+- break;
+- case 42:
+- /* No destructor defined for CONSTRAINT */
+- /* No destructor defined for nm */
+- /* No destructor defined for ccons */
+- break;
+- case 43:
+- /* No destructor defined for ccons */
++#line 1929 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 44:
+-#line 175 "parse.y"
+-{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
+-#line 2110 "parse.c"
+- /* No destructor defined for DEFAULT */
+- break;
+ case 45:
+-#line 176 "parse.y"
+-{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
+-#line 2116 "parse.c"
+- /* No destructor defined for DEFAULT */
+- break;
+ case 46:
+-#line 177 "parse.y"
+-{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
+-#line 2122 "parse.c"
+- /* No destructor defined for DEFAULT */
+- break;
+ case 47:
+-#line 178 "parse.y"
+-{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
+-#line 2128 "parse.c"
+- /* No destructor defined for DEFAULT */
+- /* No destructor defined for PLUS */
+- break;
+- case 48:
+-#line 179 "parse.y"
+-{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);}
+-#line 2135 "parse.c"
+- /* No destructor defined for DEFAULT */
+- /* No destructor defined for MINUS */
+- break;
+ case 49:
+-#line 180 "parse.y"
+-{sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
+-#line 2142 "parse.c"
+- /* No destructor defined for DEFAULT */
+- break;
+ case 50:
+-#line 181 "parse.y"
++#line 175 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
+-#line 2148 "parse.c"
+- /* No destructor defined for DEFAULT */
+- /* No destructor defined for PLUS */
++#line 1939 "ext/sqlite/libsqlite/src/parse.c"
+ break;
++ case 48:
+ case 51:
+-#line 182 "parse.y"
++#line 179 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);}
+-#line 2155 "parse.c"
+- /* No destructor defined for DEFAULT */
+- /* No destructor defined for MINUS */
+- break;
+- case 52:
+- /* No destructor defined for DEFAULT */
+- /* No destructor defined for NULL */
+- break;
+- case 53:
+- /* No destructor defined for NULL */
+- /* No destructor defined for onconf */
++#line 1945 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 54:
+-#line 189 "parse.y"
++#line 189 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddNotNull(pParse, yymsp[0].minor.yy372);}
+-#line 2170 "parse.c"
+- /* No destructor defined for NOT */
+- /* No destructor defined for NULL */
++#line 1950 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 55:
+-#line 190 "parse.y"
++#line 190 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddPrimaryKey(pParse,0,yymsp[0].minor.yy372);}
+-#line 2177 "parse.c"
+- /* No destructor defined for PRIMARY */
+- /* No destructor defined for KEY */
+- /* No destructor defined for sortorder */
++#line 1955 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 56:
+-#line 191 "parse.y"
++#line 191 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteCreateIndex(pParse,0,0,0,yymsp[0].minor.yy372,0,0);}
+-#line 2185 "parse.c"
+- /* No destructor defined for UNIQUE */
+- break;
+- case 57:
+- /* No destructor defined for CHECK */
+- /* No destructor defined for LP */
+- yy_destructor(158,&yymsp[-2].minor);
+- /* No destructor defined for RP */
+- /* No destructor defined for onconf */
++#line 1960 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 58:
+-#line 194 "parse.y"
++#line 194 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy298,yymsp[-1].minor.yy320,yymsp[0].minor.yy372);}
+-#line 2198 "parse.c"
+- /* No destructor defined for REFERENCES */
++#line 1965 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 59:
+-#line 195 "parse.y"
++#line 195 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteDeferForeignKey(pParse,yymsp[0].minor.yy372);}
+-#line 2204 "parse.c"
++#line 1970 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 60:
+-#line 196 "parse.y"
++#line 196 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n));
+ }
+-#line 2211 "parse.c"
+- /* No destructor defined for COLLATE */
++#line 1977 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 61:
+-#line 206 "parse.y"
++#line 206 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Restrict * 0x010101; }
+-#line 2217 "parse.c"
++#line 1982 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 62:
+-#line 207 "parse.y"
++#line 207 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = (yymsp[-1].minor.yy372 & yymsp[0].minor.yy407.mask) | yymsp[0].minor.yy407.value; }
+-#line 2222 "parse.c"
++#line 1987 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 63:
+-#line 209 "parse.y"
++#line 209 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy407.value = 0; yygotominor.yy407.mask = 0x000000; }
+-#line 2227 "parse.c"
+- /* No destructor defined for MATCH */
+- /* No destructor defined for nm */
++#line 1992 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 64:
+-#line 210 "parse.y"
++#line 210 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy407.value = yymsp[0].minor.yy372; yygotominor.yy407.mask = 0x0000ff; }
+-#line 2234 "parse.c"
+- /* No destructor defined for ON */
+- /* No destructor defined for DELETE */
++#line 1997 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 65:
+-#line 211 "parse.y"
++#line 211 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy407.value = yymsp[0].minor.yy372<<8; yygotominor.yy407.mask = 0x00ff00; }
+-#line 2241 "parse.c"
+- /* No destructor defined for ON */
+- /* No destructor defined for UPDATE */
++#line 2002 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 66:
+-#line 212 "parse.y"
++#line 212 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy407.value = yymsp[0].minor.yy372<<16; yygotominor.yy407.mask = 0xff0000; }
+-#line 2248 "parse.c"
+- /* No destructor defined for ON */
+- /* No destructor defined for INSERT */
++#line 2007 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 67:
+-#line 214 "parse.y"
++#line 214 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_SetNull; }
+-#line 2255 "parse.c"
+- /* No destructor defined for SET */
+- /* No destructor defined for NULL */
++#line 2012 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 68:
+-#line 215 "parse.y"
++#line 215 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_SetDflt; }
+-#line 2262 "parse.c"
+- /* No destructor defined for SET */
+- /* No destructor defined for DEFAULT */
++#line 2017 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 69:
+-#line 216 "parse.y"
++#line 216 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Cascade; }
+-#line 2269 "parse.c"
+- /* No destructor defined for CASCADE */
++#line 2022 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 70:
+-#line 217 "parse.y"
++#line 217 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Restrict; }
+-#line 2275 "parse.c"
+- /* No destructor defined for RESTRICT */
++#line 2027 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 71:
+-#line 219 "parse.y"
+-{yygotominor.yy372 = yymsp[0].minor.yy372;}
+-#line 2281 "parse.c"
+- /* No destructor defined for NOT */
+- /* No destructor defined for DEFERRABLE */
+- break;
+ case 72:
+-#line 220 "parse.y"
++ case 87:
++ case 164:
++#line 219 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = yymsp[0].minor.yy372;}
+-#line 2288 "parse.c"
+- /* No destructor defined for DEFERRABLE */
+- break;
+- case 73:
+-#line 222 "parse.y"
+-{yygotominor.yy372 = 0;}
+-#line 2294 "parse.c"
+- break;
+- case 74:
+-#line 223 "parse.y"
+-{yygotominor.yy372 = 1;}
+-#line 2299 "parse.c"
+- /* No destructor defined for INITIALLY */
+- /* No destructor defined for DEFERRED */
+- break;
+- case 75:
+-#line 224 "parse.y"
+-{yygotominor.yy372 = 0;}
+-#line 2306 "parse.c"
+- /* No destructor defined for INITIALLY */
+- /* No destructor defined for IMMEDIATE */
+- break;
+- case 76:
+- break;
+- case 77:
+- /* No destructor defined for COMMA */
+- /* No destructor defined for conslist */
+- break;
+- case 78:
+- /* No destructor defined for conslist */
+- /* No destructor defined for COMMA */
+- /* No destructor defined for tcons */
+- break;
+- case 79:
+- /* No destructor defined for conslist */
+- /* No destructor defined for tcons */
+- break;
+- case 80:
+- /* No destructor defined for tcons */
+- break;
+- case 81:
+- /* No destructor defined for CONSTRAINT */
+- /* No destructor defined for nm */
++#line 2035 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 82:
+-#line 236 "parse.y"
++#line 236 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteAddPrimaryKey(pParse,yymsp[-2].minor.yy320,yymsp[0].minor.yy372);}
+-#line 2335 "parse.c"
+- /* No destructor defined for PRIMARY */
+- /* No destructor defined for KEY */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
++#line 2040 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 83:
+-#line 238 "parse.y"
++#line 238 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteCreateIndex(pParse,0,0,yymsp[-2].minor.yy320,yymsp[0].minor.yy372,0,0);}
+-#line 2344 "parse.c"
+- /* No destructor defined for UNIQUE */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
+- break;
+- case 84:
+- /* No destructor defined for CHECK */
+- yy_destructor(158,&yymsp[-1].minor);
+- /* No destructor defined for onconf */
++#line 2045 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 85:
+-#line 241 "parse.y"
++#line 241 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy320, &yymsp[-3].minor.yy298, yymsp[-2].minor.yy320, yymsp[-1].minor.yy372);
+ sqliteDeferForeignKey(pParse, yymsp[0].minor.yy372);
+ }
+-#line 2360 "parse.c"
+- /* No destructor defined for FOREIGN */
+- /* No destructor defined for KEY */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
+- /* No destructor defined for REFERENCES */
+- break;
+- case 86:
+-#line 246 "parse.y"
+-{yygotominor.yy372 = 0;}
+-#line 2370 "parse.c"
+- break;
+- case 87:
+-#line 247 "parse.y"
+-{yygotominor.yy372 = yymsp[0].minor.yy372;}
+-#line 2375 "parse.c"
++#line 2053 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 88:
+-#line 255 "parse.y"
+-{ yygotominor.yy372 = OE_Default; }
+-#line 2380 "parse.c"
+- break;
+- case 89:
+-#line 256 "parse.y"
+-{ yygotominor.yy372 = yymsp[0].minor.yy372; }
+-#line 2385 "parse.c"
+- /* No destructor defined for ON */
+- /* No destructor defined for CONFLICT */
+- break;
+ case 90:
+-#line 257 "parse.y"
++#line 255 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Default; }
+-#line 2392 "parse.c"
++#line 2059 "ext/sqlite/libsqlite/src/parse.c"
+ break;
++ case 89:
+ case 91:
+-#line 258 "parse.y"
++#line 256 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = yymsp[0].minor.yy372; }
+-#line 2397 "parse.c"
+- /* No destructor defined for OR */
++#line 2065 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 92:
+-#line 259 "parse.y"
++#line 259 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Rollback; }
+-#line 2403 "parse.c"
+- /* No destructor defined for ROLLBACK */
++#line 2070 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 93:
+-#line 260 "parse.y"
++ case 236:
++#line 260 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Abort; }
+-#line 2409 "parse.c"
+- /* No destructor defined for ABORT */
++#line 2076 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 94:
+-#line 261 "parse.y"
++#line 261 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Fail; }
+-#line 2415 "parse.c"
+- /* No destructor defined for FAIL */
++#line 2081 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 95:
+-#line 262 "parse.y"
++#line 262 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Ignore; }
+-#line 2421 "parse.c"
+- /* No destructor defined for IGNORE */
++#line 2086 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 96:
+-#line 263 "parse.y"
++#line 263 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_Replace; }
+-#line 2427 "parse.c"
+- /* No destructor defined for REPLACE */
++#line 2091 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 97:
+-#line 267 "parse.y"
++#line 267 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteDropTable(pParse,&yymsp[0].minor.yy298,0);}
+-#line 2433 "parse.c"
+- /* No destructor defined for DROP */
+- /* No destructor defined for TABLE */
++#line 2096 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 98:
+-#line 271 "parse.y"
++#line 271 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy298, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);
+ }
+-#line 2442 "parse.c"
+- /* No destructor defined for VIEW */
+- /* No destructor defined for AS */
++#line 2103 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 99:
+-#line 274 "parse.y"
++#line 274 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteDropTable(pParse, &yymsp[0].minor.yy298, 1);
+ }
+-#line 2451 "parse.c"
+- /* No destructor defined for DROP */
+- /* No destructor defined for VIEW */
++#line 2110 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 100:
+-#line 280 "parse.y"
++#line 280 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteSelect(pParse, yymsp[0].minor.yy179, SRT_Callback, 0, 0, 0, 0);
+ sqliteSelectDelete(yymsp[0].minor.yy179);
+ }
+-#line 2461 "parse.c"
++#line 2118 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 101:
+-#line 290 "parse.y"
++ case 125:
++#line 290 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy179 = yymsp[0].minor.yy179;}
+-#line 2466 "parse.c"
++#line 2124 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 102:
+-#line 291 "parse.y"
++#line 291 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ if( yymsp[0].minor.yy179 ){
+ yymsp[0].minor.yy179->op = yymsp[-1].minor.yy372;
+@@ -2474,137 +2130,107 @@
+ }
+ yygotominor.yy179 = yymsp[0].minor.yy179;
+ }
+-#line 2477 "parse.c"
++#line 2135 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 103:
+-#line 299 "parse.y"
++#line 299 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = TK_UNION;}
+-#line 2482 "parse.c"
+- /* No destructor defined for UNION */
++#line 2140 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 104:
+-#line 300 "parse.y"
++#line 300 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = TK_ALL;}
+-#line 2488 "parse.c"
+- /* No destructor defined for UNION */
+- /* No destructor defined for ALL */
++#line 2145 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 105:
+-#line 301 "parse.y"
++#line 301 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = TK_INTERSECT;}
+-#line 2495 "parse.c"
+- /* No destructor defined for INTERSECT */
++#line 2150 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 106:
+-#line 302 "parse.y"
++#line 302 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = TK_EXCEPT;}
+-#line 2501 "parse.c"
+- /* No destructor defined for EXCEPT */
++#line 2155 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 107:
+-#line 304 "parse.y"
++#line 304 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy179 = sqliteSelectNew(yymsp[-6].minor.yy322,yymsp[-5].minor.yy307,yymsp[-4].minor.yy242,yymsp[-3].minor.yy322,yymsp[-2].minor.yy242,yymsp[-1].minor.yy322,yymsp[-7].minor.yy372,yymsp[0].minor.yy124.limit,yymsp[0].minor.yy124.offset);
+ }
+-#line 2509 "parse.c"
+- /* No destructor defined for SELECT */
+- break;
+- case 108:
+-#line 312 "parse.y"
+-{yygotominor.yy372 = 1;}
+-#line 2515 "parse.c"
+- /* No destructor defined for DISTINCT */
+- break;
+- case 109:
+-#line 313 "parse.y"
+-{yygotominor.yy372 = 0;}
+-#line 2521 "parse.c"
+- /* No destructor defined for ALL */
+- break;
+- case 110:
+-#line 314 "parse.y"
+-{yygotominor.yy372 = 0;}
+-#line 2527 "parse.c"
++#line 2162 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 111:
+-#line 325 "parse.y"
++#line 325 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = yymsp[-1].minor.yy322;}
+-#line 2532 "parse.c"
+- /* No destructor defined for COMMA */
++#line 2167 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 112:
+-#line 326 "parse.y"
++ case 138:
++ case 148:
++#line 326 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = 0;}
+-#line 2538 "parse.c"
++#line 2174 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 113:
+-#line 327 "parse.y"
++#line 327 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy242,yymsp[0].minor.yy298.n?&yymsp[0].minor.yy298:0);
+ }
+-#line 2545 "parse.c"
++#line 2181 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 114:
+-#line 330 "parse.y"
++#line 330 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy322 = sqliteExprListAppend(yymsp[-1].minor.yy322, sqliteExpr(TK_ALL, 0, 0, 0), 0);
+ }
+-#line 2552 "parse.c"
+- /* No destructor defined for STAR */
++#line 2188 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 115:
+-#line 333 "parse.y"
++#line 333 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ Expr *pRight = sqliteExpr(TK_ALL, 0, 0, 0);
+ Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
+ yygotominor.yy322 = sqliteExprListAppend(yymsp[-3].minor.yy322, sqliteExpr(TK_DOT, pLeft, pRight, 0), 0);
+ }
+-#line 2562 "parse.c"
+- /* No destructor defined for DOT */
+- /* No destructor defined for STAR */
++#line 2197 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 116:
+-#line 343 "parse.y"
+-{ yygotominor.yy298 = yymsp[0].minor.yy298; }
+-#line 2569 "parse.c"
+- /* No destructor defined for AS */
+- break;
+ case 117:
+-#line 344 "parse.y"
++ case 288:
++#line 343 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy298 = yymsp[0].minor.yy298; }
+-#line 2575 "parse.c"
++#line 2204 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 118:
+-#line 345 "parse.y"
++#line 345 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy298.n = 0; }
+-#line 2580 "parse.c"
++#line 2209 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 119:
+-#line 357 "parse.y"
++#line 357 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy307 = sqliteMalloc(sizeof(*yygotominor.yy307));}
+-#line 2585 "parse.c"
++#line 2214 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 120:
+-#line 358 "parse.y"
++#line 358 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy307 = yymsp[0].minor.yy307;}
+-#line 2590 "parse.c"
+- /* No destructor defined for FROM */
++#line 2219 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 121:
+-#line 363 "parse.y"
++#line 363 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy307 = yymsp[-1].minor.yy307;
+ if( yygotominor.yy307 && yygotominor.yy307->nSrc>0 ) yygotominor.yy307->a[yygotominor.yy307->nSrc-1].jointype = yymsp[0].minor.yy372;
+ }
+-#line 2599 "parse.c"
++#line 2227 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 122:
+-#line 367 "parse.y"
++#line 367 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy307 = 0;}
+-#line 2604 "parse.c"
++#line 2232 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 123:
+-#line 368 "parse.y"
++#line 368 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy307 = sqliteSrcListAppend(yymsp[-5].minor.yy307,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298);
+ if( yymsp[-2].minor.yy298.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy298);
+@@ -2617,10 +2243,10 @@
+ else { sqliteIdListDelete(yymsp[0].minor.yy320); }
+ }
+ }
+-#line 2620 "parse.c"
++#line 2248 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 124:
+-#line 381 "parse.y"
++#line 381 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy307 = sqliteSrcListAppend(yymsp[-6].minor.yy307,0,0);
+ yygotominor.yy307->a[yygotominor.yy307->nSrc-1].pSelect = yymsp[-4].minor.yy179;
+@@ -2634,330 +2260,227 @@
+ else { sqliteIdListDelete(yymsp[0].minor.yy320); }
+ }
+ }
+-#line 2637 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
+- break;
+- case 125:
+-#line 401 "parse.y"
+-{yygotominor.yy179 = yymsp[0].minor.yy179;}
+-#line 2644 "parse.c"
++#line 2265 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 126:
+-#line 402 "parse.y"
++#line 402 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy179 = sqliteSelectNew(0,yymsp[0].minor.yy307,0,0,0,0,0,-1,0);
+ }
+-#line 2651 "parse.c"
++#line 2272 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 127:
+-#line 407 "parse.y"
++#line 407 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy298.z=0; yygotominor.yy298.n=0;}
+-#line 2656 "parse.c"
+- break;
+- case 128:
+-#line 408 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy298;}
+-#line 2661 "parse.c"
+- /* No destructor defined for DOT */
++#line 2277 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 129:
+-#line 412 "parse.y"
+-{ yygotominor.yy372 = JT_INNER; }
+-#line 2667 "parse.c"
+- /* No destructor defined for COMMA */
+- break;
+ case 130:
+-#line 413 "parse.y"
++#line 412 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = JT_INNER; }
+-#line 2673 "parse.c"
+- /* No destructor defined for JOIN */
++#line 2283 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 131:
+-#line 414 "parse.y"
++#line 414 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
+-#line 2679 "parse.c"
+- /* No destructor defined for JOIN */
++#line 2288 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 132:
+-#line 415 "parse.y"
++#line 415 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy298,0); }
+-#line 2685 "parse.c"
+- /* No destructor defined for JOIN */
++#line 2293 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 133:
+-#line 417 "parse.y"
++#line 417 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298); }
+-#line 2691 "parse.c"
+- /* No destructor defined for JOIN */
++#line 2298 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 134:
+-#line 421 "parse.y"
++ case 142:
++ case 151:
++ case 158:
++ case 227:
++ case 229:
++ case 233:
++#line 421 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 2697 "parse.c"
+- /* No destructor defined for ON */
++#line 2309 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 135:
+-#line 422 "parse.y"
++ case 150:
++ case 157:
++ case 228:
++ case 230:
++ case 234:
++#line 422 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = 0;}
+-#line 2703 "parse.c"
++#line 2319 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 136:
+-#line 426 "parse.y"
++ case 169:
++ case 239:
++#line 426 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy320 = yymsp[-1].minor.yy320;}
+-#line 2708 "parse.c"
+- /* No destructor defined for USING */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
++#line 2326 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 137:
+-#line 427 "parse.y"
++ case 168:
++ case 238:
++#line 427 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy320 = 0;}
+-#line 2716 "parse.c"
+- break;
+- case 138:
+-#line 437 "parse.y"
+-{yygotominor.yy322 = 0;}
+-#line 2721 "parse.c"
++#line 2333 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 139:
+-#line 438 "parse.y"
++ case 149:
++#line 438 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = yymsp[0].minor.yy322;}
+-#line 2726 "parse.c"
+- /* No destructor defined for ORDER */
+- /* No destructor defined for BY */
++#line 2339 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 140:
+-#line 439 "parse.y"
++#line 439 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[-2].minor.yy242,0);
+ if( yygotominor.yy322 ) yygotominor.yy322->a[yygotominor.yy322->nExpr-1].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
+ }
+-#line 2736 "parse.c"
+- /* No destructor defined for COMMA */
++#line 2347 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 141:
+-#line 443 "parse.y"
++#line 443 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy322 = sqliteExprListAppend(0,yymsp[-2].minor.yy242,0);
+ if( yygotominor.yy322 ) yygotominor.yy322->a[0].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
+ }
+-#line 2745 "parse.c"
+- break;
+- case 142:
+-#line 447 "parse.y"
+-{yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 2750 "parse.c"
++#line 2355 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 143:
+-#line 452 "parse.y"
++ case 145:
++#line 452 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = SQLITE_SO_ASC;}
+-#line 2755 "parse.c"
+- /* No destructor defined for ASC */
++#line 2361 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 144:
+-#line 453 "parse.y"
++#line 453 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = SQLITE_SO_DESC;}
+-#line 2761 "parse.c"
+- /* No destructor defined for DESC */
+- break;
+- case 145:
+-#line 454 "parse.y"
+-{yygotominor.yy372 = SQLITE_SO_ASC;}
+-#line 2767 "parse.c"
++#line 2366 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 146:
+-#line 455 "parse.y"
++#line 455 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = SQLITE_SO_UNK;}
+-#line 2772 "parse.c"
++#line 2371 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 147:
+-#line 456 "parse.y"
++#line 456 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n);}
+-#line 2777 "parse.c"
+- /* No destructor defined for COLLATE */
+- break;
+- case 148:
+-#line 460 "parse.y"
+-{yygotominor.yy322 = 0;}
+-#line 2783 "parse.c"
+- break;
+- case 149:
+-#line 461 "parse.y"
+-{yygotominor.yy322 = yymsp[0].minor.yy322;}
+-#line 2788 "parse.c"
+- /* No destructor defined for GROUP */
+- /* No destructor defined for BY */
+- break;
+- case 150:
+-#line 465 "parse.y"
+-{yygotominor.yy242 = 0;}
+-#line 2795 "parse.c"
+- break;
+- case 151:
+-#line 466 "parse.y"
+-{yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 2800 "parse.c"
+- /* No destructor defined for HAVING */
++#line 2376 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 152:
+-#line 469 "parse.y"
++#line 469 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy124.limit = -1; yygotominor.yy124.offset = 0;}
+-#line 2806 "parse.c"
++#line 2381 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 153:
+-#line 470 "parse.y"
++#line 470 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = 0;}
+-#line 2811 "parse.c"
+- /* No destructor defined for LIMIT */
++#line 2386 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 154:
+-#line 472 "parse.y"
++#line 472 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy124.limit = yymsp[-2].minor.yy372; yygotominor.yy124.offset = yymsp[0].minor.yy372;}
+-#line 2817 "parse.c"
+- /* No destructor defined for LIMIT */
+- /* No destructor defined for OFFSET */
++#line 2391 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 155:
+-#line 474 "parse.y"
++#line 474 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = yymsp[-2].minor.yy372;}
+-#line 2824 "parse.c"
+- /* No destructor defined for LIMIT */
+- /* No destructor defined for COMMA */
++#line 2396 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 156:
+-#line 478 "parse.y"
++#line 478 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298), yymsp[0].minor.yy242);
+ }
+-#line 2833 "parse.c"
+- /* No destructor defined for DELETE */
+- /* No destructor defined for FROM */
+- break;
+- case 157:
+-#line 485 "parse.y"
+-{yygotominor.yy242 = 0;}
+-#line 2840 "parse.c"
+- break;
+- case 158:
+-#line 486 "parse.y"
+-{yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 2845 "parse.c"
+- /* No destructor defined for WHERE */
++#line 2403 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 159:
+-#line 494 "parse.y"
++#line 494 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298),yymsp[-1].minor.yy322,yymsp[0].minor.yy242,yymsp[-5].minor.yy372);}
+-#line 2851 "parse.c"
+- /* No destructor defined for UPDATE */
+- /* No destructor defined for SET */
++#line 2408 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 160:
+-#line 497 "parse.y"
++#line 497 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);}
+-#line 2858 "parse.c"
+- /* No destructor defined for COMMA */
+- /* No destructor defined for EQ */
++#line 2413 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 161:
+-#line 498 "parse.y"
++#line 498 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);}
+-#line 2865 "parse.c"
+- /* No destructor defined for EQ */
++#line 2418 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 162:
+-#line 504 "parse.y"
++#line 504 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298), yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy320, yymsp[-8].minor.yy372);}
+-#line 2871 "parse.c"
+- /* No destructor defined for INTO */
+- /* No destructor defined for VALUES */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
++#line 2423 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 163:
+-#line 506 "parse.y"
++#line 506 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298), 0, yymsp[0].minor.yy179, yymsp[-1].minor.yy320, yymsp[-5].minor.yy372);}
+-#line 2880 "parse.c"
+- /* No destructor defined for INTO */
+- break;
+- case 164:
+-#line 509 "parse.y"
+-{yygotominor.yy372 = yymsp[0].minor.yy372;}
+-#line 2886 "parse.c"
+- /* No destructor defined for INSERT */
++#line 2428 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 165:
+-#line 510 "parse.y"
++#line 510 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = OE_Replace;}
+-#line 2892 "parse.c"
+- /* No destructor defined for REPLACE */
++#line 2433 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 166:
+-#line 516 "parse.y"
++ case 231:
++#line 516 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);}
+-#line 2898 "parse.c"
+- /* No destructor defined for COMMA */
++#line 2439 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 167:
+-#line 517 "parse.y"
++ case 232:
++#line 517 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);}
+-#line 2904 "parse.c"
+- break;
+- case 168:
+-#line 524 "parse.y"
+-{yygotominor.yy320 = 0;}
+-#line 2909 "parse.c"
+- break;
+- case 169:
+-#line 525 "parse.y"
+-{yygotominor.yy320 = yymsp[-1].minor.yy320;}
+-#line 2914 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
++#line 2445 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 170:
+-#line 526 "parse.y"
++ case 240:
++#line 526 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);}
+-#line 2921 "parse.c"
+- /* No destructor defined for COMMA */
++#line 2451 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 171:
+-#line 527 "parse.y"
++ case 241:
++#line 527 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);}
+-#line 2927 "parse.c"
++#line 2457 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 172:
+-#line 535 "parse.y"
++#line 535 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = yymsp[-1].minor.yy242; sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
+-#line 2932 "parse.c"
++#line 2462 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 173:
+-#line 536 "parse.y"
++#line 536 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_NULL, 0, 0, &yymsp[0].minor.yy0);}
+-#line 2937 "parse.c"
++#line 2467 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 174:
+-#line 537 "parse.y"
+-{yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
+-#line 2942 "parse.c"
+- break;
+ case 175:
+-#line 538 "parse.y"
++#line 537 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
+-#line 2947 "parse.c"
++#line 2473 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 176:
+-#line 539 "parse.y"
++#line 539 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
+ Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy298);
+ yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp2, 0);
+ }
+-#line 2956 "parse.c"
+- /* No destructor defined for DOT */
++#line 2482 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 177:
+-#line 544 "parse.y"
++#line 544 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy298);
+ Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
+@@ -2965,126 +2488,109 @@
+ Expr *temp4 = sqliteExpr(TK_DOT, temp2, temp3, 0);
+ yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp4, 0);
+ }
+-#line 2968 "parse.c"
+- /* No destructor defined for DOT */
+- /* No destructor defined for DOT */
++#line 2493 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 178:
+-#line 551 "parse.y"
++#line 551 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_INTEGER, 0, 0, &yymsp[0].minor.yy0);}
+-#line 2975 "parse.c"
++#line 2498 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 179:
+-#line 552 "parse.y"
++#line 552 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_FLOAT, 0, 0, &yymsp[0].minor.yy0);}
+-#line 2980 "parse.c"
++#line 2503 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 180:
+-#line 553 "parse.y"
++#line 553 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_STRING, 0, 0, &yymsp[0].minor.yy0);}
+-#line 2985 "parse.c"
++#line 2508 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 181:
+-#line 554 "parse.y"
++#line 554 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_VARIABLE, 0, 0, &yymsp[0].minor.yy0);
+ if( yygotominor.yy242 ) yygotominor.yy242->iTable = ++pParse->nVar;
+ }
+-#line 2993 "parse.c"
++#line 2516 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 182:
+-#line 558 "parse.y"
++#line 558 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExprFunction(yymsp[-1].minor.yy322, &yymsp[-3].minor.yy0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
+ }
+-#line 3001 "parse.c"
+- /* No destructor defined for LP */
++#line 2524 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 183:
+-#line 562 "parse.y"
++#line 562 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExprFunction(0, &yymsp[-3].minor.yy0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
+ }
+-#line 3010 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for STAR */
++#line 2532 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 184:
+-#line 566 "parse.y"
++#line 566 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_AND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3017 "parse.c"
+- /* No destructor defined for AND */
++#line 2537 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 185:
+-#line 567 "parse.y"
++#line 567 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_OR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3023 "parse.c"
+- /* No destructor defined for OR */
++#line 2542 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 186:
+-#line 568 "parse.y"
++#line 568 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_LT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3029 "parse.c"
+- /* No destructor defined for LT */
++#line 2547 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 187:
+-#line 569 "parse.y"
++#line 569 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_GT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3035 "parse.c"
+- /* No destructor defined for GT */
++#line 2552 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 188:
+-#line 570 "parse.y"
++#line 570 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_LE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3041 "parse.c"
+- /* No destructor defined for LE */
++#line 2557 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 189:
+-#line 571 "parse.y"
++#line 571 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_GE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3047 "parse.c"
+- /* No destructor defined for GE */
++#line 2562 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 190:
+-#line 572 "parse.y"
++#line 572 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_NE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3053 "parse.c"
+- /* No destructor defined for NE */
++#line 2567 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 191:
+-#line 573 "parse.y"
++#line 573 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_EQ, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3059 "parse.c"
+- /* No destructor defined for EQ */
++#line 2572 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 192:
+-#line 574 "parse.y"
++#line 574 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_BITAND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3065 "parse.c"
+- /* No destructor defined for BITAND */
++#line 2577 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 193:
+-#line 575 "parse.y"
++#line 575 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_BITOR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3071 "parse.c"
+- /* No destructor defined for BITOR */
++#line 2582 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 194:
+-#line 576 "parse.y"
++#line 576 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_LSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3077 "parse.c"
+- /* No destructor defined for LSHIFT */
++#line 2587 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 195:
+-#line 577 "parse.y"
++#line 577 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_RSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3083 "parse.c"
+- /* No destructor defined for RSHIFT */
++#line 2592 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 196:
+-#line 578 "parse.y"
++#line 578 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
+ pList = sqliteExprListAppend(pList, yymsp[-2].minor.yy242, 0);
+@@ -3092,10 +2598,10 @@
+ if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372;
+ sqliteExprSpan(yygotominor.yy242, &yymsp[-2].minor.yy242->span, &yymsp[0].minor.yy242->span);
+ }
+-#line 3095 "parse.c"
++#line 2603 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 197:
+-#line 585 "parse.y"
++#line 585 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
+ pList = sqliteExprListAppend(pList, yymsp[-3].minor.yy242, 0);
+@@ -3104,144 +2610,131 @@
+ yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy242->span);
+ }
+-#line 3107 "parse.c"
+- /* No destructor defined for NOT */
++#line 2615 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 198:
+-#line 594 "parse.y"
++#line 594 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = TK_LIKE;}
+-#line 3113 "parse.c"
+- /* No destructor defined for LIKE */
++#line 2620 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 199:
+-#line 595 "parse.y"
++#line 595 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy372 = TK_GLOB;}
+-#line 3119 "parse.c"
+- /* No destructor defined for GLOB */
++#line 2625 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 200:
+-#line 596 "parse.y"
++#line 596 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_PLUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3125 "parse.c"
+- /* No destructor defined for PLUS */
++#line 2630 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 201:
+-#line 597 "parse.y"
++#line 597 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_MINUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3131 "parse.c"
+- /* No destructor defined for MINUS */
++#line 2635 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 202:
+-#line 598 "parse.y"
++#line 598 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_STAR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3137 "parse.c"
+- /* No destructor defined for STAR */
++#line 2640 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 203:
+-#line 599 "parse.y"
++#line 599 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_SLASH, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3143 "parse.c"
+- /* No destructor defined for SLASH */
++#line 2645 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 204:
+-#line 600 "parse.y"
++#line 600 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_REM, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3149 "parse.c"
+- /* No destructor defined for REM */
++#line 2650 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 205:
+-#line 601 "parse.y"
++#line 601 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy242 = sqliteExpr(TK_CONCAT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
+-#line 3155 "parse.c"
+- /* No destructor defined for CONCAT */
++#line 2655 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 206:
+-#line 602 "parse.y"
++#line 602 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-1].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3164 "parse.c"
++#line 2663 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 207:
+-#line 606 "parse.y"
++#line 606 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-2].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3172 "parse.c"
+- /* No destructor defined for IS */
++#line 2671 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 208:
+-#line 610 "parse.y"
++#line 610 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-1].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3181 "parse.c"
++#line 2679 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 209:
+-#line 614 "parse.y"
++#line 614 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-2].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3189 "parse.c"
+- /* No destructor defined for NOT */
++#line 2687 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 210:
+-#line 618 "parse.y"
++#line 618 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-3].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3198 "parse.c"
+- /* No destructor defined for IS */
+- /* No destructor defined for NOT */
++#line 2695 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 211:
+-#line 622 "parse.y"
++#line 622 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_NOT, yymsp[0].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
+ }
+-#line 3208 "parse.c"
++#line 2703 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 212:
+-#line 626 "parse.y"
++#line 626 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_BITNOT, yymsp[0].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
+ }
+-#line 3216 "parse.c"
++#line 2711 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 213:
+-#line 630 "parse.y"
++#line 630 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_UMINUS, yymsp[0].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
+ }
+-#line 3224 "parse.c"
++#line 2719 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 214:
+-#line 634 "parse.y"
++#line 634 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_UPLUS, yymsp[0].minor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
+ }
+-#line 3232 "parse.c"
++#line 2727 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 215:
+-#line 638 "parse.y"
++#line 638 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_SELECT, 0, 0, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
+ }
+-#line 3241 "parse.c"
++#line 2736 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 216:
+-#line 643 "parse.y"
++#line 643 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
+ pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
+@@ -3249,12 +2742,10 @@
+ if( yygotominor.yy242 ) yygotominor.yy242->pList = pList;
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy242->span);
+ }
+-#line 3252 "parse.c"
+- /* No destructor defined for BETWEEN */
+- /* No destructor defined for AND */
++#line 2747 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 217:
+-#line 650 "parse.y"
++#line 650 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
+ pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
+@@ -3263,72 +2754,58 @@
+ yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy242->span);
+ }
+-#line 3266 "parse.c"
+- /* No destructor defined for NOT */
+- /* No destructor defined for BETWEEN */
+- /* No destructor defined for AND */
++#line 2759 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 218:
+-#line 658 "parse.y"
++#line 658 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3278 "parse.c"
+- /* No destructor defined for IN */
+- /* No destructor defined for LP */
++#line 2768 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 219:
+-#line 663 "parse.y"
++#line 663 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3289 "parse.c"
+- /* No destructor defined for IN */
+- /* No destructor defined for LP */
++#line 2777 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 220:
+-#line 668 "parse.y"
++#line 668 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
+ yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3301 "parse.c"
+- /* No destructor defined for NOT */
+- /* No destructor defined for IN */
+- /* No destructor defined for LP */
++#line 2787 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 221:
+-#line 674 "parse.y"
++#line 674 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
+ yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
+ }
+-#line 3314 "parse.c"
+- /* No destructor defined for NOT */
+- /* No destructor defined for IN */
+- /* No destructor defined for LP */
++#line 2797 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 222:
+-#line 680 "parse.y"
++#line 680 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
+ yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-3].minor.yy242, 0, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298);
+ }
+-#line 3327 "parse.c"
+- /* No destructor defined for IN */
++#line 2807 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 223:
+-#line 686 "parse.y"
++#line 686 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
+ yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
+@@ -3336,489 +2813,298 @@
+ yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
+ sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298);
+ }
+-#line 3339 "parse.c"
+- /* No destructor defined for NOT */
+- /* No destructor defined for IN */
++#line 2818 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 224:
+-#line 696 "parse.y"
++#line 696 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_CASE, yymsp[-3].minor.yy242, yymsp[-1].minor.yy242, 0);
+ if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-2].minor.yy322;
+ sqliteExprSpan(yygotominor.yy242, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
+ }
+-#line 3350 "parse.c"
++#line 2827 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 225:
+-#line 703 "parse.y"
++#line 703 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322, yymsp[-2].minor.yy242, 0);
+ yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
+ }
+-#line 3358 "parse.c"
+- /* No destructor defined for WHEN */
+- /* No destructor defined for THEN */
++#line 2835 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 226:
+-#line 707 "parse.y"
++#line 707 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy322 = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
+ yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
+ }
+-#line 3368 "parse.c"
+- /* No destructor defined for WHEN */
+- /* No destructor defined for THEN */
+- break;
+- case 227:
+-#line 712 "parse.y"
+-{yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 3375 "parse.c"
+- /* No destructor defined for ELSE */
+- break;
+- case 228:
+-#line 713 "parse.y"
+-{yygotominor.yy242 = 0;}
+-#line 3381 "parse.c"
+- break;
+- case 229:
+-#line 715 "parse.y"
+-{yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 3386 "parse.c"
+- break;
+- case 230:
+-#line 716 "parse.y"
+-{yygotominor.yy242 = 0;}
+-#line 3391 "parse.c"
+- break;
+- case 231:
+-#line 724 "parse.y"
+-{yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);}
+-#line 3396 "parse.c"
+- /* No destructor defined for COMMA */
+- break;
+- case 232:
+-#line 725 "parse.y"
+-{yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);}
+-#line 3402 "parse.c"
+- break;
+- case 233:
+-#line 726 "parse.y"
+-{yygotominor.yy242 = yymsp[0].minor.yy242;}
+-#line 3407 "parse.c"
+- break;
+- case 234:
+-#line 727 "parse.y"
+-{yygotominor.yy242 = 0;}
+-#line 3412 "parse.c"
++#line 2843 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 235:
+-#line 732 "parse.y"
++#line 732 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy298, &yymsp[-4].minor.yy298);
+ if( yymsp[-9].minor.yy372!=OE_None ) yymsp[-9].minor.yy372 = yymsp[0].minor.yy372;
+ if( yymsp[-9].minor.yy372==OE_Default) yymsp[-9].minor.yy372 = OE_Abort;
+ sqliteCreateIndex(pParse, &yymsp[-7].minor.yy298, pSrc, yymsp[-2].minor.yy320, yymsp[-9].minor.yy372, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0);
+ }
+-#line 3422 "parse.c"
+- /* No destructor defined for INDEX */
+- /* No destructor defined for ON */
+- /* No destructor defined for LP */
+- break;
+- case 236:
+-#line 740 "parse.y"
+-{ yygotominor.yy372 = OE_Abort; }
+-#line 3430 "parse.c"
+- /* No destructor defined for UNIQUE */
++#line 2853 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 237:
+-#line 741 "parse.y"
++#line 741 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = OE_None; }
+-#line 3436 "parse.c"
+- break;
+- case 238:
+-#line 749 "parse.y"
+-{yygotominor.yy320 = 0;}
+-#line 3441 "parse.c"
+- break;
+- case 239:
+-#line 750 "parse.y"
+-{yygotominor.yy320 = yymsp[-1].minor.yy320;}
+-#line 3446 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
+- break;
+- case 240:
+-#line 751 "parse.y"
+-{yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);}
+-#line 3453 "parse.c"
+- /* No destructor defined for COMMA */
+- break;
+- case 241:
+-#line 752 "parse.y"
+-{yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);}
+-#line 3459 "parse.c"
+- break;
+- case 242:
+-#line 753 "parse.y"
+-{yygotominor.yy298 = yymsp[-1].minor.yy298;}
+-#line 3464 "parse.c"
+- /* No destructor defined for sortorder */
++#line 2858 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 243:
+-#line 758 "parse.y"
++#line 758 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298));
+ }
+-#line 3472 "parse.c"
+- /* No destructor defined for DROP */
+- /* No destructor defined for INDEX */
++#line 2865 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 244:
+-#line 766 "parse.y"
++#line 766 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298),&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0,yymsp[-7].minor.yy372);}
+-#line 3479 "parse.c"
+- /* No destructor defined for COPY */
+- /* No destructor defined for FROM */
+- /* No destructor defined for USING */
+- /* No destructor defined for DELIMITERS */
++#line 2870 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 245:
+-#line 768 "parse.y"
++#line 768 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298),&yymsp[0].minor.yy298,0,yymsp[-4].minor.yy372);}
+-#line 3488 "parse.c"
+- /* No destructor defined for COPY */
+- /* No destructor defined for FROM */
++#line 2875 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 246:
+-#line 772 "parse.y"
++#line 772 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteVacuum(pParse,0);}
+-#line 3495 "parse.c"
+- /* No destructor defined for VACUUM */
++#line 2880 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 247:
+-#line 773 "parse.y"
++#line 773 "ext/sqlite/libsqlite/src/parse.y"
+ {sqliteVacuum(pParse,&yymsp[0].minor.yy298);}
+-#line 3501 "parse.c"
+- /* No destructor defined for VACUUM */
++#line 2885 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 248:
+-#line 777 "parse.y"
++ case 250:
++#line 777 "ext/sqlite/libsqlite/src/parse.y"
+ {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);}
+-#line 3507 "parse.c"
+- /* No destructor defined for PRAGMA */
+- /* No destructor defined for EQ */
++#line 2891 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 249:
+-#line 778 "parse.y"
++#line 778 "ext/sqlite/libsqlite/src/parse.y"
+ {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy0,0);}
+-#line 3514 "parse.c"
+- /* No destructor defined for PRAGMA */
+- /* No destructor defined for EQ */
+- break;
+- case 250:
+-#line 779 "parse.y"
+-{sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);}
+-#line 3521 "parse.c"
+- /* No destructor defined for PRAGMA */
+- /* No destructor defined for EQ */
++#line 2896 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 251:
+-#line 780 "parse.y"
++#line 780 "ext/sqlite/libsqlite/src/parse.y"
+ {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,1);}
+-#line 3528 "parse.c"
+- /* No destructor defined for PRAGMA */
+- /* No destructor defined for EQ */
++#line 2901 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 252:
+-#line 781 "parse.y"
++#line 781 "ext/sqlite/libsqlite/src/parse.y"
+ {sqlitePragma(pParse,&yymsp[-3].minor.yy298,&yymsp[-1].minor.yy298,0);}
+-#line 3535 "parse.c"
+- /* No destructor defined for PRAGMA */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
++#line 2906 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 253:
+-#line 782 "parse.y"
++#line 782 "ext/sqlite/libsqlite/src/parse.y"
+ {sqlitePragma(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298,0);}
+-#line 3543 "parse.c"
+- /* No destructor defined for PRAGMA */
+- break;
+- case 254:
+-#line 783 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy298;}
+-#line 3549 "parse.c"
+- /* No destructor defined for plus_opt */
+- break;
+- case 255:
+-#line 784 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy298;}
+-#line 3555 "parse.c"
+- /* No destructor defined for MINUS */
+- break;
+- case 256:
+-#line 785 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 3561 "parse.c"
+- break;
+- case 257:
+-#line 786 "parse.y"
+-{yygotominor.yy298 = yymsp[0].minor.yy0;}
+-#line 3566 "parse.c"
+- break;
+- case 258:
+- /* No destructor defined for PLUS */
+- break;
+- case 259:
++#line 2911 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 260:
+-#line 792 "parse.y"
++#line 792 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ Token all;
+ all.z = yymsp[-4].minor.yy0.z;
+ all.n = (yymsp[0].minor.yy0.z - yymsp[-4].minor.yy0.z) + yymsp[0].minor.yy0.n;
+ sqliteFinishTrigger(pParse, yymsp[-1].minor.yy19, &all);
+ }
+-#line 3581 "parse.c"
+- /* No destructor defined for trigger_decl */
+- /* No destructor defined for BEGIN */
++#line 2921 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 261:
+-#line 800 "parse.y"
++#line 800 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy298, &yymsp[-2].minor.yy298);
+ sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy298, yymsp[-6].minor.yy372, yymsp[-5].minor.yy290.a, yymsp[-5].minor.yy290.b, pTab, yymsp[-1].minor.yy372, yymsp[0].minor.yy182, yymsp[-9].minor.yy372);
+ }
+-#line 3591 "parse.c"
+- /* No destructor defined for TRIGGER */
+- /* No destructor defined for ON */
++#line 2929 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 262:
+-#line 806 "parse.y"
++ case 265:
++#line 806 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = TK_BEFORE; }
+-#line 3598 "parse.c"
+- /* No destructor defined for BEFORE */
++#line 2935 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 263:
+-#line 807 "parse.y"
++#line 807 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = TK_AFTER; }
+-#line 3604 "parse.c"
+- /* No destructor defined for AFTER */
++#line 2940 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 264:
+-#line 808 "parse.y"
++#line 808 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = TK_INSTEAD;}
+-#line 3610 "parse.c"
+- /* No destructor defined for INSTEAD */
+- /* No destructor defined for OF */
+- break;
+- case 265:
+-#line 809 "parse.y"
+-{ yygotominor.yy372 = TK_BEFORE; }
+-#line 3617 "parse.c"
++#line 2945 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 266:
+-#line 813 "parse.y"
++#line 813 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy290.a = TK_DELETE; yygotominor.yy290.b = 0; }
+-#line 3622 "parse.c"
+- /* No destructor defined for DELETE */
++#line 2950 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 267:
+-#line 814 "parse.y"
++#line 814 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy290.a = TK_INSERT; yygotominor.yy290.b = 0; }
+-#line 3628 "parse.c"
+- /* No destructor defined for INSERT */
++#line 2955 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 268:
+-#line 815 "parse.y"
++#line 815 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = 0;}
+-#line 3634 "parse.c"
+- /* No destructor defined for UPDATE */
++#line 2960 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 269:
+-#line 816 "parse.y"
++#line 816 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = yymsp[0].minor.yy320; }
+-#line 3640 "parse.c"
+- /* No destructor defined for UPDATE */
+- /* No destructor defined for OF */
++#line 2965 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 270:
+-#line 819 "parse.y"
+-{ yygotominor.yy372 = TK_ROW; }
+-#line 3647 "parse.c"
+- break;
+ case 271:
+-#line 820 "parse.y"
++#line 819 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = TK_ROW; }
+-#line 3652 "parse.c"
+- /* No destructor defined for FOR */
+- /* No destructor defined for EACH */
+- /* No destructor defined for ROW */
++#line 2971 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 272:
+-#line 821 "parse.y"
++#line 821 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy372 = TK_STATEMENT; }
+-#line 3660 "parse.c"
+- /* No destructor defined for FOR */
+- /* No destructor defined for EACH */
+- /* No destructor defined for STATEMENT */
++#line 2976 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 273:
+-#line 824 "parse.y"
++#line 824 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy182 = 0; }
+-#line 3668 "parse.c"
++#line 2981 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 274:
+-#line 825 "parse.y"
++#line 825 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy182 = yymsp[0].minor.yy242; }
+-#line 3673 "parse.c"
+- /* No destructor defined for WHEN */
++#line 2986 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 275:
+-#line 829 "parse.y"
++#line 829 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yymsp[-2].minor.yy19->pNext = yymsp[0].minor.yy19;
+ yygotominor.yy19 = yymsp[-2].minor.yy19;
+ }
+-#line 3682 "parse.c"
+- /* No destructor defined for SEMI */
++#line 2994 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 276:
+-#line 833 "parse.y"
++#line 833 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy19 = 0; }
+-#line 3688 "parse.c"
++#line 2999 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 277:
+-#line 839 "parse.y"
++#line 839 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy19 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy298, yymsp[-1].minor.yy322, yymsp[0].minor.yy242, yymsp[-4].minor.yy372); }
+-#line 3693 "parse.c"
+- /* No destructor defined for UPDATE */
+- /* No destructor defined for SET */
++#line 3004 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 278:
+-#line 844 "parse.y"
++#line 844 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy298, yymsp[-4].minor.yy320, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy372);}
+-#line 3700 "parse.c"
+- /* No destructor defined for INTO */
+- /* No destructor defined for VALUES */
+- /* No destructor defined for LP */
+- /* No destructor defined for RP */
++#line 3009 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 279:
+-#line 847 "parse.y"
++#line 847 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy298, yymsp[-1].minor.yy320, 0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);}
+-#line 3709 "parse.c"
+- /* No destructor defined for INTO */
++#line 3014 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 280:
+-#line 851 "parse.y"
++#line 851 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy19 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy298, yymsp[0].minor.yy242);}
+-#line 3715 "parse.c"
+- /* No destructor defined for DELETE */
+- /* No destructor defined for FROM */
++#line 3019 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 281:
+-#line 854 "parse.y"
++#line 854 "ext/sqlite/libsqlite/src/parse.y"
+ {yygotominor.yy19 = sqliteTriggerSelectStep(yymsp[0].minor.yy179); }
+-#line 3722 "parse.c"
++#line 3024 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 282:
+-#line 857 "parse.y"
++#line 857 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, 0);
+ yygotominor.yy242->iColumn = OE_Ignore;
+ sqliteExprSpan(yygotominor.yy242, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
+ }
+-#line 3731 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for IGNORE */
++#line 3033 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 283:
+-#line 862 "parse.y"
++#line 862 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
+ yygotominor.yy242->iColumn = OE_Rollback;
+ sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
+ }
+-#line 3742 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for ROLLBACK */
+- /* No destructor defined for COMMA */
++#line 3042 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 284:
+-#line 867 "parse.y"
++#line 867 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
+ yygotominor.yy242->iColumn = OE_Abort;
+ sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
+ }
+-#line 3754 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for ABORT */
+- /* No destructor defined for COMMA */
++#line 3051 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 285:
+-#line 872 "parse.y"
++#line 872 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
+ yygotominor.yy242->iColumn = OE_Fail;
+ sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
+ }
+-#line 3766 "parse.c"
+- /* No destructor defined for LP */
+- /* No destructor defined for FAIL */
+- /* No destructor defined for COMMA */
++#line 3060 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 286:
+-#line 879 "parse.y"
++#line 879 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298));
+ }
+-#line 3776 "parse.c"
+- /* No destructor defined for DROP */
+- /* No destructor defined for TRIGGER */
++#line 3067 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 287:
+-#line 884 "parse.y"
++#line 884 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteAttach(pParse, &yymsp[-3].minor.yy298, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
+ }
+-#line 3785 "parse.c"
+- /* No destructor defined for ATTACH */
+- /* No destructor defined for database_kw_opt */
+- /* No destructor defined for AS */
+- break;
+- case 288:
+-#line 888 "parse.y"
+-{ yygotominor.yy298 = yymsp[0].minor.yy298; }
+-#line 3793 "parse.c"
+- /* No destructor defined for USING */
++#line 3074 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 289:
+-#line 889 "parse.y"
++#line 889 "ext/sqlite/libsqlite/src/parse.y"
+ { yygotominor.yy298.z = 0; yygotominor.yy298.n = 0; }
+-#line 3799 "parse.c"
+- break;
+- case 290:
+- /* No destructor defined for DATABASE */
+- break;
+- case 291:
++#line 3079 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ case 292:
+-#line 895 "parse.y"
++#line 895 "ext/sqlite/libsqlite/src/parse.y"
+ {
+ sqliteDetach(pParse, &yymsp[0].minor.yy298);
+ }
+-#line 3811 "parse.c"
+- /* No destructor defined for DETACH */
+- /* No destructor defined for database_kw_opt */
++#line 3086 "ext/sqlite/libsqlite/src/parse.c"
+ break;
+ };
+ yygoto = yyRuleInfo[yyruleno].lhs;
+ yysize = yyRuleInfo[yyruleno].nrhs;
+ yypParser->yyidx -= yysize;
+- yyact = yy_find_reduce_action(yypParser,yygoto);
++ yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
+ if( yyact < YYNSTATE ){
+- yy_shift(yypParser,yyact,yygoto,&yygotominor);
++#ifdef NDEBUG
++ /* If we are not debugging and the reduce action popped at least
++ ** one element off the stack, then we can push the new element back
++ ** onto the stack here, and skip the stack overflow test in yy_shift().
++ ** That gives a significant speed improvement. */
++ if( yysize ){
++ yypParser->yyidx++;
++ yymsp -= yysize-1;
++ yymsp->stateno = yyact;
++ yymsp->major = yygoto;
++ yymsp->minor = yygotominor;
++ }else
++#endif
++ {
++ yy_shift(yypParser,yyact,yygoto,&yygotominor);
++ }
+ }else if( yyact == YYNSTATE + YYNRULE + 1 ){
+ yy_accept(yypParser);
+ }
+@@ -3852,7 +3138,7 @@
+ ){
+ sqliteParserARG_FETCH;
+ #define TOKEN (yyminor.yy0)
+-#line 23 "parse.y"
++#line 23 "ext/sqlite/libsqlite/src/parse.y"
+
+ if( pParse->zErrMsg==0 ){
+ if( TOKEN.z[0] ){
+@@ -3861,8 +3147,7 @@
+ sqliteErrorMsg(pParse, "incomplete SQL statement");
+ }
+ }
+-
+-#line 3865 "parse.c"
++#line 3153 "ext/sqlite/libsqlite/src/parse.c"
+ sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
+ }
+
+@@ -3918,7 +3203,7 @@
+ /* (re)initialize the parser, if necessary */
+ yypParser = (yyParser*)yyp;
+ if( yypParser->yyidx<0 ){
+- if( yymajor==0 ) return;
++ /* if( yymajor==0 ) return; // not sure why this was here... */
+ yypParser->yyidx = 0;
+ yypParser->yyerrcnt = -1;
+ yypParser->yystack[0].stateno = 0;
+diff -dPNur sqlite-1.0.3/libsqlite/src/parse.y sqlite-svn/libsqlite/src/parse.y
+--- sqlite-1.0.3/libsqlite/src/parse.y 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/parse.y 2012-10-09 13:36:42.531952680 +0000
+@@ -14,7 +14,7 @@
+ ** the parser. Lemon will also generate a header file containing
+ ** numeric codes for all of the tokens.
+ **
+-** @(#) $Id: parse.y,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: parse.y 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ %token_prefix TK_
+ %token_type {Token}
+diff -dPNur sqlite-1.0.3/libsqlite/src/pragma.c sqlite-svn/libsqlite/src/pragma.c
+--- sqlite-1.0.3/libsqlite/src/pragma.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/pragma.c 2012-10-09 13:36:42.531952680 +0000
+@@ -11,7 +11,7 @@
+ *************************************************************************
+ ** This file contains code used to implement the PRAGMA command.
+ **
+-** $Id: pragma.c,v 1.2.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: pragma.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include <ctype.h>
+diff -dPNur sqlite-1.0.3/libsqlite/src/printf.c sqlite-svn/libsqlite/src/printf.c
+--- sqlite-1.0.3/libsqlite/src/printf.c 2004-07-10 11:47:26.000000000 +0000
++++ sqlite-svn/libsqlite/src/printf.c 2012-10-09 13:36:42.531952680 +0000
+@@ -227,6 +227,7 @@
+ int nsd; /* Number of significant digits returned */
+ #endif
+
++ func(arg,"",0);
+ count = length = 0;
+ bufpt = 0;
+ for(; (c=(*fmt))!=0; ++fmt){
+@@ -673,9 +674,11 @@
+ }
+ }
+ }
+- if( pM->zText && nNewChar>0 ){
+- memcpy(&pM->zText[pM->nChar], zNewText, nNewChar);
+- pM->nChar += nNewChar;
++ if( pM->zText ){
++ if( nNewChar>0 ){
++ memcpy(&pM->zText[pM->nChar], zNewText, nNewChar);
++ pM->nChar += nNewChar;
++ }
+ pM->zText[pM->nChar] = 0;
+ }
+ }
+diff -dPNur sqlite-1.0.3/libsqlite/src/random.c sqlite-svn/libsqlite/src/random.c
+--- sqlite-1.0.3/libsqlite/src/random.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/random.c 2012-10-09 13:36:42.551252050 +0000
+@@ -15,7 +15,7 @@
+ ** Random numbers are used by some of the database backends in order
+ ** to generate random integer keys for tables or random filenames.
+ **
+-** $Id: random.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: random.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include "os.h"
+diff -dPNur sqlite-1.0.3/libsqlite/src/select.c sqlite-svn/libsqlite/src/select.c
+--- sqlite-1.0.3/libsqlite/src/select.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/select.c 2012-10-09 13:36:42.531952680 +0000
+@@ -12,7 +12,7 @@
+ ** This file contains C code routines that are called by the parser
+ ** to handle SELECT statements in SQLite.
+ **
+-** $Id: select.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: select.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+@@ -365,6 +365,30 @@
+ }
+
+ /*
++** Add code to implement the OFFSET and LIMIT
++*/
++static void codeLimiter(
++ Vdbe *v, /* Generate code into this VM */
++ Select *p, /* The SELECT statement being coded */
++ int iContinue, /* Jump here to skip the current record */
++ int iBreak, /* Jump here to end the loop */
++ int nPop /* Number of times to pop stack when jumping */
++){
++ if( p->iOffset>=0 ){
++ int addr = sqliteVdbeCurrentAddr(v) + 2;
++ if( nPop>0 ) addr++;
++ sqliteVdbeAddOp(v, OP_MemIncr, p->iOffset, addr);
++ if( nPop>0 ){
++ sqliteVdbeAddOp(v, OP_Pop, nPop, 0);
++ }
++ sqliteVdbeAddOp(v, OP_Goto, 0, iContinue);
++ }
++ if( p->iLimit>=0 ){
++ sqliteVdbeAddOp(v, OP_MemIncr, p->iLimit, iBreak);
++ }
++}
++
++/*
+ ** This routine generates the code for the inside of the inner loop
+ ** of a SELECT.
+ **
+@@ -388,6 +412,7 @@
+ ){
+ Vdbe *v = pParse->pVdbe;
+ int i;
++ int hasDistinct; /* True if the DISTINCT keyword is present */
+
+ if( v==0 ) return 0;
+ assert( pEList!=0 );
+@@ -395,15 +420,9 @@
+ /* If there was a LIMIT clause on the SELECT statement, then do the check
+ ** to see if this row should be output.
+ */
+- if( pOrderBy==0 ){
+- if( p->iOffset>=0 ){
+- int addr = sqliteVdbeCurrentAddr(v);
+- sqliteVdbeAddOp(v, OP_MemIncr, p->iOffset, addr+2);
+- sqliteVdbeAddOp(v, OP_Goto, 0, iContinue);
+- }
+- if( p->iLimit>=0 ){
+- sqliteVdbeAddOp(v, OP_MemIncr, p->iLimit, iBreak);
+- }
++ hasDistinct = distinct>=0 && pEList && pEList->nExpr>0;
++ if( pOrderBy==0 && !hasDistinct ){
++ codeLimiter(v, p, iContinue, iBreak, 0);
+ }
+
+ /* Pull the requested columns.
+@@ -423,7 +442,7 @@
+ ** and this row has been seen before, then do not make this row
+ ** part of the result.
+ */
+- if( distinct>=0 && pEList && pEList->nExpr>0 ){
++ if( hasDistinct ){
+ #if NULL_ALWAYS_DISTINCT
+ sqliteVdbeAddOp(v, OP_IsNull, -pEList->nExpr, sqliteVdbeCurrentAddr(v)+7);
+ #endif
+@@ -434,6 +453,9 @@
+ sqliteVdbeAddOp(v, OP_Goto, 0, iContinue);
+ sqliteVdbeAddOp(v, OP_String, 0, 0);
+ sqliteVdbeAddOp(v, OP_PutStrKey, distinct, 0);
++ if( pOrderBy==0 ){
++ codeLimiter(v, p, iContinue, iBreak, nColumn);
++ }
+ }
+
+ switch( eDest ){
+@@ -570,14 +592,7 @@
+ if( eDest==SRT_Sorter ) return;
+ sqliteVdbeAddOp(v, OP_Sort, 0, 0);
+ addr = sqliteVdbeAddOp(v, OP_SortNext, 0, end1);
+- if( p->iOffset>=0 ){
+- sqliteVdbeAddOp(v, OP_MemIncr, p->iOffset, addr+4);
+- sqliteVdbeAddOp(v, OP_Pop, 1, 0);
+- sqliteVdbeAddOp(v, OP_Goto, 0, addr);
+- }
+- if( p->iLimit>=0 ){
+- sqliteVdbeAddOp(v, OP_MemIncr, p->iLimit, end2);
+- }
++ codeLimiter(v, p, addr, end2, 1);
+ switch( eDest ){
+ case SRT_Callback: {
+ sqliteVdbeAddOp(v, OP_SortCallback, nColumn, 0);
+@@ -810,8 +825,9 @@
+ }else{
+ char zBuf[30];
+ sprintf(zBuf, "column%d", i+1);
+- pTab->aCol[i].zName = sqliteStrDup(zBuf);
++ aCol[i].zName = sqliteStrDup(zBuf);
+ }
++ sqliteDequote(aCol[i].zName);
+ }
+ pTab->iPKey = -1;
+ return pTab;
+@@ -943,11 +959,11 @@
+ /* This expression is a "*" or a "TABLE.*" and needs to be
+ ** expanded. */
+ int tableSeen = 0; /* Set to 1 when TABLE matches */
+- Token *pName; /* text of name of TABLE */
++ char *zTName; /* text of name of TABLE */
+ if( pE->op==TK_DOT && pE->pLeft ){
+- pName = &pE->pLeft->token;
++ zTName = sqliteTableNameFromToken(&pE->pLeft->token);
+ }else{
+- pName = 0;
++ zTName = 0;
+ }
+ for(i=0; i<pTabList->nSrc; i++){
+ Table *pTab = pTabList->a[i].pTab;
+@@ -955,9 +971,8 @@
+ if( zTabName==0 || zTabName[0]==0 ){
+ zTabName = pTab->zName;
+ }
+- if( pName && (zTabName==0 || zTabName[0]==0 ||
+- sqliteStrNICmp(pName->z, zTabName, pName->n)!=0 ||
+- zTabName[pName->n]!=0) ){
++ if( zTName && (zTabName==0 || zTabName[0]==0 ||
++ sqliteStrICmp(zTName, zTabName)!=0) ){
+ continue;
+ }
+ tableSeen = 1;
+@@ -1002,13 +1017,14 @@
+ }
+ }
+ if( !tableSeen ){
+- if( pName ){
+- sqliteErrorMsg(pParse, "no such table: %T", pName);
++ if( zTName ){
++ sqliteErrorMsg(pParse, "no such table: %s", zTName);
+ }else{
+ sqliteErrorMsg(pParse, "no tables specified");
+ }
+ rc = 1;
+ }
++ sqliteFree(zTName);
+ }
+ }
+ sqliteExprListDelete(pEList);
+@@ -1916,6 +1932,12 @@
+ }else{
+ sqliteVdbeAddOp(v, OP_Integer, pIdx->iDb, 0);
+ sqliteVdbeOp3(v, OP_OpenRead, base+1, pIdx->tnum, pIdx->zName, P3_STATIC);
++ if( seekOp==OP_Rewind ){
++ sqliteVdbeAddOp(v, OP_String, 0, 0);
++ sqliteVdbeAddOp(v, OP_MakeKey, 1, 0);
++ sqliteVdbeAddOp(v, OP_IncrKey, 0, 0);
++ seekOp = OP_MoveTo;
++ }
+ sqliteVdbeAddOp(v, seekOp, base+1, 0);
+ sqliteVdbeAddOp(v, OP_IdxRecno, base+1, 0);
+ sqliteVdbeAddOp(v, OP_Close, base+1, 0);
+diff -dPNur sqlite-1.0.3/libsqlite/src/sqlite.h.in sqlite-svn/libsqlite/src/sqlite.h.in
+--- sqlite-1.0.3/libsqlite/src/sqlite.h.in 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/sqlite.h.in 2012-10-09 13:36:42.541252205 +0000
+@@ -12,7 +12,7 @@
+ ** This header file defines the interface that the SQLite library
+ ** presents to client programs.
+ **
+-** @(#) $Id: sqlite.h.in,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: sqlite.h.in 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #ifndef _SQLITE_H_
+ #define _SQLITE_H_
+@@ -28,7 +28,11 @@
+ /*
+ ** The version of the SQLite library.
+ */
+-#define SQLITE_VERSION "--VERS--"
++#ifdef SQLITE_VERSION
++# undef SQLITE_VERSION
++#else
++# define SQLITE_VERSION "--VERS--"
++#endif
+
+ /*
+ ** The version string is also compiled into the library so that a program
+@@ -479,10 +483,24 @@
+ int datatype /* The datatype for this function */
+ );
+ #define SQLITE_NUMERIC (-1)
+-#define SQLITE_TEXT (-2)
++/* #define SQLITE_TEXT (-2) // See below */
+ #define SQLITE_ARGS (-3)
+
+ /*
++** SQLite version 3 defines SQLITE_TEXT differently. To allow both
++** version 2 and version 3 to be included, undefine them both if a
++** conflict is seen. Define SQLITE2_TEXT to be the version 2 value.
++*/
++#ifdef SQLITE_TEXT
++# undef SQLITE_TEXT
++#else
++# define SQLITE_TEXT (-2)
++#endif
++#define SQLITE2_TEXT (-2)
++
++
++
++/*
+ ** The user function implementations call one of the following four routines
+ ** in order to return their results. The first parameter to each of these
+ ** routines is a copy of the first argument to xFunc() or xFinialize().
+diff -dPNur sqlite-1.0.3/libsqlite/src/sqlite.w32.h sqlite-svn/libsqlite/src/sqlite.w32.h
+--- sqlite-1.0.3/libsqlite/src/sqlite.w32.h 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/sqlite.w32.h 2012-10-09 13:36:42.551252050 +0000
+@@ -12,7 +12,7 @@
+ ** This header file defines the interface that the SQLite library
+ ** presents to client programs.
+ **
+-** @(#) $Id: sqlite.w32.h,v 1.3.6.3 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: sqlite.w32.h 203289 2005-12-20 15:26:26Z iliaa $
+ */
+ #ifndef _SQLITE_H_
+ #define _SQLITE_H_
+@@ -28,7 +28,7 @@
+ /*
+ ** The version of the SQLite library.
+ */
+-#define SQLITE_VERSION "2.8.14"
++#define SQLITE_VERSION "2.8.17"
+
+ /*
+ ** The version string is also compiled into the library so that a program
+@@ -204,32 +204,6 @@
+ */
+ int sqlite_changes(sqlite*);
+
+-/*
+-** This function returns the number of database rows that were changed
+-** by the last INSERT, UPDATE, or DELETE statment executed by sqlite_exec(),
+-** or by the last VM to run to completion. The change count is not updated
+-** by SQL statements other than INSERT, UPDATE or DELETE.
+-**
+-** Changes are counted, even if they are later undone by a ROLLBACK or
+-** ABORT. Changes associated with trigger programs that execute as a
+-** result of the INSERT, UPDATE, or DELETE statement are not counted.
+-**
+-** If a callback invokes sqlite_exec() recursively, then the changes
+-** in the inner, recursive call are counted together with the changes
+-** in the outer call.
+-**
+-** SQLite implements the command "DELETE FROM table" without a WHERE clause
+-** by dropping and recreating the table. (This is much faster than going
+-** through and deleting individual elements form the table.) Because of
+-** this optimization, the change count for "DELETE FROM table" will be
+-** zero regardless of the number of elements that were originally in the
+-** table. To get an accurate count of the number of rows deleted, use
+-** "DELETE FROM table WHERE 1" instead.
+-**
+-******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ******
+-*/
+-int sqlite_last_statement_changes(sqlite*);
+-
+ /* If the parameter to this routine is one of the return value constants
+ ** defined above, then this routine returns a constant text string which
+ ** descripts (in English) the meaning of the return value.
+@@ -466,12 +440,13 @@
+ ** Use the following routine to define the datatype returned by a
+ ** user-defined function. The second argument can be one of the
+ ** constants SQLITE_NUMERIC, SQLITE_TEXT, or SQLITE_ARGS or it
+-** can be an integer greater than or equal to zero. When the datatype
+-** parameter is non-negative, the type of the result will be the
+-** same as the datatype-th argument. If datatype==SQLITE_NUMERIC
+-** then the result is always numeric. If datatype==SQLITE_TEXT then
+-** the result is always text. If datatype==SQLITE_ARGS then the result
+-** is numeric if any argument is numeric and is text otherwise.
++** can be an integer greater than or equal to zero. The datatype
++** will be numeric or text (the only two types supported) if the
++** argument is SQLITE_NUMERIC or SQLITE_TEXT. If the argument is
++** SQLITE_ARGS, then the datatype is numeric if any argument to the
++** function is numeric and is text otherwise. If the second argument
++** is an integer, then the datatype of the result is the same as the
++** parameter to the function that corresponds to that integer.
+ */
+ int sqlite_function_type(
+ sqlite *db, /* The database there the function is registered */
+@@ -779,88 +754,9 @@
+ ** query is immediately terminated and any database changes rolled back. If the
+ ** query was part of a larger transaction, then the transaction is not rolled
+ ** back and remains active. The sqlite_exec() call returns SQLITE_ABORT.
+-**
+-******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ******
+ */
+ void sqlite_progress_handler(sqlite*, int, int(*)(void*), void*);
+
+-/*
+-** Register a callback function to be invoked whenever a new transaction
+-** is committed. The pArg argument is passed through to the callback.
+-** callback. If the callback function returns non-zero, then the commit
+-** is converted into a rollback.
+-**
+-** If another function was previously registered, its pArg value is returned.
+-** Otherwise NULL is returned.
+-**
+-** Registering a NULL function disables the callback.
+-**
+-******* THIS IS AN EXPERIMENTAL API AND IS SUBJECT TO CHANGE ******
+-*/
+-void *sqlite_commit_hook(sqlite*, int(*)(void*), void*);
+-
+-/*
+-** Open an encrypted SQLite database. If pKey==0 or nKey==0, this routine
+-** is the same as sqlite_open().
+-**
+-** The code to implement this API is not available in the public release
+-** of SQLite.
+-*/
+-sqlite *sqlite_open_encrypted(
+- const char *zFilename, /* Name of the encrypted database */
+- const void *pKey, /* Pointer to the key */
+- int nKey, /* Number of bytes in the key */
+- int *pErrcode, /* Write error code here */
+- char **pzErrmsg /* Write error message here */
+-);
+-
+-/*
+-** Change the key on an open database. If the current database is not
+-** encrypted, this routine will encrypt it. If pNew==0 or nNew==0, the
+-** database is decrypted.
+-**
+-** The code to implement this API is not available in the public release
+-** of SQLite.
+-*/
+-int sqlite_rekey(
+- sqlite *db, /* Database to be rekeyed */
+- const void *pKey, int nKey /* The new key */
+-);
+-
+-/*
+-** Encode a binary buffer "in" of size n bytes so that it contains
+-** no instances of characters '\'' or '\000'. The output is
+-** null-terminated and can be used as a string value in an INSERT
+-** or UPDATE statement. Use sqlite_decode_binary() to convert the
+-** string back into its original binary.
+-**
+-** The result is written into a preallocated output buffer "out".
+-** "out" must be able to hold at least 2 +(257*n)/254 bytes.
+-** In other words, the output will be expanded by as much as 3
+-** bytes for every 254 bytes of input plus 2 bytes of fixed overhead.
+-** (This is approximately 2 + 1.0118*n or about a 1.2% size increase.)
+-**
+-** The return value is the number of characters in the encoded
+-** string, excluding the "\000" terminator.
+-**
+-** If out==NULL then no output is generated but the routine still returns
+-** the number of characters that would have been generated if out had
+-** not been NULL.
+-*/
+-int sqlite_encode_binary(const unsigned char *in, int n, unsigned char *out);
+-
+-/*
+-** Decode the string "in" into binary data and write it into "out".
+-** This routine reverses the encoding created by sqlite_encode_binary().
+-** The output will always be a few bytes less than the input. The number
+-** of bytes of output is returned. If the input is not a well-formed
+-** encoding, -1 is returned.
+-**
+-** The "in" and "out" parameters may point to the same buffer in order
+-** to decode a string in place.
+-*/
+-int sqlite_decode_binary(const unsigned char *in, unsigned char *out);
+-
+ #ifdef __cplusplus
+ } /* End of the 'extern "C"' block */
+ #endif
+diff -dPNur sqlite-1.0.3/libsqlite/src/sqliteInt.h sqlite-svn/libsqlite/src/sqliteInt.h
+--- sqlite-1.0.3/libsqlite/src/sqliteInt.h 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/sqliteInt.h 2012-10-09 13:36:42.551252050 +0000
+@@ -11,7 +11,7 @@
+ *************************************************************************
+ ** Internal interface definitions for SQLite.
+ **
+-** @(#) $Id: sqliteInt.h,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** @(#) $Id: sqliteInt.h 203289 2005-12-20 15:26:26Z iliaa $
+ */
+ #include "config.h"
+ #include "sqlite.h"
+@@ -102,6 +102,9 @@
+ #ifndef UINT16_TYPE
+ # define UINT16_TYPE unsigned short int
+ #endif
++#ifndef INT16_TYPE
++# define INT16_TYPE short int
++#endif
+ #ifndef UINT8_TYPE
+ # define UINT8_TYPE unsigned char
+ #endif
+@@ -117,6 +120,7 @@
+ #endif
+ typedef UINT32_TYPE u32; /* 4-byte unsigned integer */
+ typedef UINT16_TYPE u16; /* 2-byte unsigned integer */
++typedef INT16_TYPE i16; /* 2-byte signed integer */
+ typedef UINT8_TYPE u8; /* 1-byte unsigned integer */
+ typedef UINT8_TYPE i8; /* 1-byte signed integer */
+ typedef INTPTR_TYPE ptr; /* Big enough to hold a pointer */
+@@ -762,8 +766,8 @@
+ ** now be identified by a database name, a dot, then the table name: ID.ID.
+ */
+ struct SrcList {
+- u16 nSrc; /* Number of tables or subqueries in the FROM clause */
+- u16 nAlloc; /* Number of entries allocated in a[] below */
++ i16 nSrc; /* Number of tables or subqueries in the FROM clause */
++ i16 nAlloc; /* Number of entries allocated in a[] below */
+ struct SrcList_item {
+ char *zDatabase; /* Name of database holding this table */
+ char *zName; /* Name of the table */
+@@ -1116,7 +1120,7 @@
+ #endif
+ char *sqliteMPrintf(const char*, ...);
+ char *sqliteVMPrintf(const char*, va_list);
+-void sqliteSetString(char **, const char *, ...);
++void sqliteSetString(char **, ...);
+ void sqliteSetNString(char **, ...);
+ void sqliteErrorMsg(Parse*, const char*, ...);
+ void sqliteDequote(char*);
+diff -dPNur sqlite-1.0.3/libsqlite/src/tokenize.c sqlite-svn/libsqlite/src/tokenize.c
+--- sqlite-1.0.3/libsqlite/src/tokenize.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/tokenize.c 2012-10-09 13:36:42.541252205 +0000
+@@ -15,7 +15,7 @@
+ ** individual tokens and sends those tokens one-by-one over to the
+ ** parser for analysis.
+ **
+-** $Id: tokenize.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: tokenize.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include "os.h"
+diff -dPNur sqlite-1.0.3/libsqlite/src/update.c sqlite-svn/libsqlite/src/update.c
+--- sqlite-1.0.3/libsqlite/src/update.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/update.c 2012-10-09 13:36:42.551252050 +0000
+@@ -12,7 +12,7 @@
+ ** This file contains C code routines that are called by the parser
+ ** to handle UPDATE statements.
+ **
+-** $Id: update.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: update.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+diff -dPNur sqlite-1.0.3/libsqlite/src/util.c sqlite-svn/libsqlite/src/util.c
+--- sqlite-1.0.3/libsqlite/src/util.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/util.c 2012-10-09 13:36:42.531952680 +0000
+@@ -14,7 +14,7 @@
+ ** This file contains functions for allocating memory, comparing
+ ** strings, and stuff like that.
+ **
+-** $Id: util.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: util.c 203289 2005-12-20 15:26:26Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include <stdarg.h>
+@@ -330,15 +330,15 @@
+ ** point to that string. The 1st argument must either be NULL or
+ ** point to memory obtained from sqliteMalloc().
+ */
+-void sqliteSetString(char **pz, const char *zFirst, ...){
++void sqliteSetString(char **pz, ...){
+ va_list ap;
+ int nByte;
+ const char *z;
+ char *zResult;
+
+ if( pz==0 ) return;
+- nByte = strlen(zFirst) + 1;
+- va_start(ap, zFirst);
++ nByte = 1;
++ va_start(ap, pz);
+ while( (z = va_arg(ap, const char*))!=0 ){
+ nByte += strlen(z);
+ }
+@@ -348,9 +348,8 @@
+ if( zResult==0 ){
+ return;
+ }
+- strcpy(zResult, zFirst);
+- zResult += strlen(zResult);
+- va_start(ap, zFirst);
++ *zResult = 0;
++ va_start(ap, pz);
+ while( (z = va_arg(ap, const char*))!=0 ){
+ strcpy(zResult, z);
+ zResult += strlen(zResult);
+@@ -504,14 +503,14 @@
+ a = (unsigned char *)zLeft;
+ b = (unsigned char *)zRight;
+ while( *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; }
+- return *a - *b;
++ return UpperToLower[*a] - UpperToLower[*b];
+ }
+ int sqliteStrNICmp(const char *zLeft, const char *zRight, int N){
+ register unsigned char *a, *b;
+ a = (unsigned char *)zLeft;
+ b = (unsigned char *)zRight;
+ while( N-- > 0 && *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; }
+- return N<0 ? 0 : *a - *b;
++ return N<0 ? 0 : UpperToLower[*a] - UpperToLower[*b];
+ }
+
+ /*
+diff -dPNur sqlite-1.0.3/libsqlite/src/vacuum.c sqlite-svn/libsqlite/src/vacuum.c
+--- sqlite-1.0.3/libsqlite/src/vacuum.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/vacuum.c 2012-10-09 13:36:42.541252205 +0000
+@@ -14,7 +14,7 @@
+ ** Most of the code in this file may be omitted by defining the
+ ** SQLITE_OMIT_VACUUM macro.
+ **
+-** $Id: vacuum.c,v 1.2.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: vacuum.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+ #include "os.h"
+@@ -164,24 +164,6 @@
+ }
+
+ /*
+-** This callback is used to transfer PRAGMA settings from one database
+-** to the other. The value in argv[0] should be passed to a pragma
+-** identified by ((vacuumStruct*)pArg)->zPragma.
+-*/
+-static int vacuumCallback3(void *pArg, int argc, char **argv, char **NotUsed){
+- vacuumStruct *p = (vacuumStruct*)pArg;
+- char zBuf[200];
+- assert( argc==1 );
+- if( argv==0 ) return 0;
+- assert( argv[0]!=0 );
+- assert( strlen(p->zPragma)<100 );
+- assert( strlen(argv[0])<30 );
+- sprintf(zBuf,"PRAGMA %s=%s;", p->zPragma, argv[0]);
+- p->rc = execsql(p->pzErrMsg, p->dbNew, zBuf);
+- return p->rc;
+-}
+-
+-/*
+ ** Generate a random name of 20 character in length.
+ */
+ static void randomName(unsigned char *zBuf){
+@@ -226,14 +208,6 @@
+ char *zErrMsg; /* Error message */
+ vacuumStruct sVac; /* Information passed to callbacks */
+
+- /* These are all of the pragmas that need to be transferred over
+- ** to the new database */
+- static const char *zPragma[] = {
+- "default_synchronous",
+- "default_cache_size",
+- /* "default_temp_store", */
+- };
+-
+ if( db->flags & SQLITE_InTrans ){
+ sqliteSetString(pzErrMsg, "cannot VACUUM from within a transaction",
+ (char*)0);
+@@ -283,13 +257,6 @@
+ sVac.dbOld = db;
+ sVac.dbNew = dbNew;
+ sVac.pzErrMsg = pzErrMsg;
+- for(i=0; rc==SQLITE_OK && i<sizeof(zPragma)/sizeof(zPragma[0]); i++){
+- char zBuf[200];
+- assert( strlen(zPragma[i])<100 );
+- sprintf(zBuf, "PRAGMA %s;", zPragma[i]);
+- sVac.zPragma = zPragma[i];
+- rc = sqlite_exec(db, zBuf, vacuumCallback3, &sVac, &zErrMsg);
+- }
+ if( rc==SQLITE_OK ){
+ rc = sqlite_exec(db,
+ "SELECT type, name, sql FROM sqlite_master "
+@@ -300,6 +267,17 @@
+ vacuumCallback1, &sVac, &zErrMsg);
+ }
+ if( rc==SQLITE_OK ){
++ int meta1[SQLITE_N_BTREE_META];
++ int meta2[SQLITE_N_BTREE_META];
++ sqliteBtreeGetMeta(db->aDb[0].pBt, meta1);
++ sqliteBtreeGetMeta(dbNew->aDb[0].pBt, meta2);
++ meta2[1] = meta1[1]+1;
++ meta2[3] = meta1[3];
++ meta2[4] = meta1[4];
++ meta2[6] = meta1[6];
++ rc = sqliteBtreeUpdateMeta(dbNew->aDb[0].pBt, meta2);
++ }
++ if( rc==SQLITE_OK ){
+ rc = sqliteBtreeCopyFile(db->aDb[0].pBt, dbNew->aDb[0].pBt);
+ sqlite_exec(db, "COMMIT", 0, 0, 0);
+ sqliteResetInternalSchema(db, 0);
+diff -dPNur sqlite-1.0.3/libsqlite/src/vdbe.c sqlite-svn/libsqlite/src/vdbe.c
+--- sqlite-1.0.3/libsqlite/src/vdbe.c 2004-07-10 12:25:34.000000000 +0000
++++ sqlite-svn/libsqlite/src/vdbe.c 2012-10-09 13:36:42.551252050 +0000
+@@ -43,7 +43,7 @@
+ ** in this file for details. If in doubt, do not deviate from existing
+ ** commenting and indentation practices when changing or adding code.
+ **
+-** $Id: vdbe.c,v 1.3.6.2 2004/07/10 12:25:34 wez Exp $
++** $Id: vdbe.c 219681 2006-09-09 10:59:05Z tony2001 $
+ */
+ #include "sqliteInt.h"
+ #include "os.h"
+@@ -114,7 +114,7 @@
+ sqlite *db;
+ int rc;
+
+- if( p->magic!=VDBE_MAGIC_RUN ){
++ if( !p || p->magic!=VDBE_MAGIC_RUN ){
+ return SQLITE_MISUSE;
+ }
+ db = p->db;
+@@ -4545,6 +4545,10 @@
+ pTos->flags &= ~(MEM_Dyn|MEM_Static|MEM_Short);
+ pTos->flags |= MEM_Ephem;
+ }
++ if( pTos->flags & MEM_AggCtx ){
++ Release(pTos);
++ pTos->flags = MEM_Null;
++ }
+ break;
+ }
+
+@@ -4695,8 +4699,9 @@
+ break;
+ }
+ }else{
+- assert( pSet->prev );
+- pSet->prev = sqliteHashNext(pSet->prev);
++ if( pSet->prev ){
++ pSet->prev = sqliteHashNext(pSet->prev);
++ }
+ if( pSet->prev==0 ){
+ break;
+ }else{
+diff -dPNur sqlite-1.0.3/libsqlite/src/vdbe.h sqlite-svn/libsqlite/src/vdbe.h
+--- sqlite-1.0.3/libsqlite/src/vdbe.h 2004-07-10 12:25:35.000000000 +0000
++++ sqlite-svn/libsqlite/src/vdbe.h 2012-10-09 13:36:42.551252050 +0000
+@@ -15,7 +15,7 @@
+ ** or VDBE. The VDBE implements an abstract machine that runs a
+ ** simple program to access and modify the underlying database.
+ **
+-** $Id: vdbe.h,v 1.3.6.2 2004/07/10 12:25:35 wez Exp $
++** $Id: vdbe.h 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #ifndef _SQLITE_VDBE_H_
+ #define _SQLITE_VDBE_H_
+diff -dPNur sqlite-1.0.3/libsqlite/src/where.c sqlite-svn/libsqlite/src/where.c
+--- sqlite-1.0.3/libsqlite/src/where.c 2004-07-10 12:25:35.000000000 +0000
++++ sqlite-svn/libsqlite/src/where.c 2012-10-09 13:36:42.541252205 +0000
+@@ -12,7 +12,7 @@
+ ** This module contains C code that generates VDBE code used to process
+ ** the WHERE clause of SQL statements.
+ **
+-** $Id: where.c,v 1.3.6.2 2004/07/10 12:25:35 wez Exp $
++** $Id: where.c 195361 2005-09-07 15:11:33Z iliaa $
+ */
+ #include "sqliteInt.h"
+
+@@ -46,7 +46,7 @@
+ typedef struct ExprMaskSet ExprMaskSet;
+ struct ExprMaskSet {
+ int n; /* Number of assigned cursor values */
+- int ix[32]; /* Cursor assigned to each bit */
++ int ix[31]; /* Cursor assigned to each bit */
+ };
+
+ /*
+@@ -123,7 +123,9 @@
+ unsigned int mask = 0;
+ if( p==0 ) return 0;
+ if( p->op==TK_COLUMN ){
+- return getMask(pMaskSet, p->iTable);
++ mask = getMask(pMaskSet, p->iTable);
++ if( mask==0 ) mask = -1;
++ return mask;
+ }
+ if( p->pRight ){
+ mask = exprTableUsage(pMaskSet, p->pRight);
+@@ -270,6 +272,35 @@
+ }
+
+ /*
++** Disable a term in the WHERE clause. Except, do not disable the term
++** if it controls a LEFT OUTER JOIN and it did not originate in the ON
++** or USING clause of that join.
++**
++** Consider the term t2.z='ok' in the following queries:
++**
++** (1) SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.x WHERE t2.z='ok'
++** (2) SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.x AND t2.z='ok'
++** (3) SELECT * FROM t1, t2 WHERE t1.a=t2.x AND t2.z='ok'
++**
++** The t2.z='ok' is disabled in the in (2) because it did not originate
++** in the ON clause. The term is disabled in (3) because it is not part
++** of a LEFT OUTER JOIN. In (1), the term is not disabled.
++**
++** Disabling a term causes that term to not be tested in the inner loop
++** of the join. Disabling is an optimization. We would get the correct
++** results if nothing were ever disabled, but joins might run a little
++** slower. The trick is to disable as much as we can without disabling
++** too much. If we disabled in (1), we'd get the wrong answer.
++** See ticket #813.
++*/
++static void disableTerm(WhereLevel *pLevel, Expr **ppExpr){
++ Expr *pExpr = *ppExpr;
++ if( pLevel->iLeftJoin==0 || ExprHasProperty(pExpr, EP_FromJoin) ){
++ *ppExpr = 0;
++ }
++}
++
++/*
+ ** Generate the beginning of the loop used for WHERE clause processing.
+ ** The return value is a pointer to an (opaque) structure that contains
+ ** information needed to terminate the loop. Later, the calling routine
+@@ -736,7 +767,7 @@
+ }else{
+ sqliteExprCode(pParse, aExpr[k].p->pLeft);
+ }
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ cont = pLevel->cont = sqliteVdbeMakeLabel(v);
+ sqliteVdbeAddOp(v, OP_MustBeInt, 1, brk);
+ haveKey = 0;
+@@ -760,7 +791,7 @@
+ ){
+ if( pX->op==TK_EQ ){
+ sqliteExprCode(pParse, pX->pRight);
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ if( pX->op==TK_IN && nColumn==1 ){
+@@ -777,7 +808,7 @@
+ pLevel->inOp = OP_Next;
+ pLevel->inP1 = pX->iTable;
+ }
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ }
+@@ -787,7 +818,7 @@
+ && aExpr[k].p->pRight->iColumn==pIdx->aiColumn[j]
+ ){
+ sqliteExprCode(pParse, aExpr[k].p->pLeft);
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ }
+@@ -854,7 +885,7 @@
+ sqliteVdbeAddOp(v, OP_ForceInt,
+ aExpr[k].p->op==TK_LT || aExpr[k].p->op==TK_GT, brk);
+ sqliteVdbeAddOp(v, OP_MoveTo, iCur, brk);
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ }else{
+ sqliteVdbeAddOp(v, OP_Rewind, iCur, brk);
+ }
+@@ -876,7 +907,7 @@
+ }else{
+ testOp = OP_Gt;
+ }
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ }
+ start = sqliteVdbeCurrentAddr(v);
+ pLevel->op = OP_Next;
+@@ -931,7 +962,7 @@
+ && aExpr[k].p->pLeft->iColumn==pIdx->aiColumn[j]
+ ){
+ sqliteExprCode(pParse, aExpr[k].p->pRight);
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ if( aExpr[k].idxRight==iCur
+@@ -940,7 +971,7 @@
+ && aExpr[k].p->pRight->iColumn==pIdx->aiColumn[j]
+ ){
+ sqliteExprCode(pParse, aExpr[k].p->pLeft);
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ }
+@@ -977,7 +1008,7 @@
+ ){
+ sqliteExprCode(pParse, pExpr->pRight);
+ leFlag = pExpr->op==TK_LE;
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ if( aExpr[k].idxRight==iCur
+@@ -987,7 +1018,7 @@
+ ){
+ sqliteExprCode(pParse, pExpr->pLeft);
+ leFlag = pExpr->op==TK_GE;
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ }
+@@ -1036,7 +1067,7 @@
+ ){
+ sqliteExprCode(pParse, pExpr->pRight);
+ geFlag = pExpr->op==TK_GE;
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ if( aExpr[k].idxRight==iCur
+@@ -1046,7 +1077,7 @@
+ ){
+ sqliteExprCode(pParse, pExpr->pLeft);
+ geFlag = pExpr->op==TK_LE;
+- aExpr[k].p = 0;
++ disableTerm(pLevel, &aExpr[k].p);
+ break;
+ }
+ }
+diff -dPNur sqlite-1.0.3/package.xml sqlite-svn/package.xml
+--- sqlite-1.0.3/package.xml 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/package.xml 2012-10-09 13:36:42.760063980 +0000
+@@ -0,0 +1,158 @@
++<?xml version="1.0" encoding="UTF-8" ?>
++<package version="2.0" xmlns="http://pear.php.net/dtd/package-2.0"
++ xmlns:tasks="http://pear.php.net/dtd/tasks-1.0"
++ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
++ xsi:schemaLocation="
++ http://pear.php.net/dtd/tasks-1.0
++ http://pear.php.net/dtd/tasks-1.0.xsd
++ http://pear.php.net/dtd/package-2.0
++ http://pear.php.net/dtd/package-2.0.xsd">
++ <name>SQLite</name>
++ <channel>pecl.php.net</channel>
++ <summary>SQLite 2 database bindings</summary>
++ <description><![CDATA[
++SQLite is a C library that implements an embeddable SQL database engine.
++Programs that link with the SQLite library can have SQL database access
++without running a separate RDBMS process.
++This extension allows access to SQLite 2 databases from within PHP
++using sqlite_* and pdo_sqlite2 functions.
++
++This extension does not work with SQLite 3 databases; use pdo_sqlite or ext/sqlite3
++for that.
++]]></description>
++ <lead>
++ <name>Wez Furlong</name>
++ <user>wez</user>
++ <email>wez@php.net</email>
++ <active>no</active>
++ </lead>
++ <lead>
++ <name>Marcus Borger</name>
++ <user>helly</user>
++ <email>helly@php.net</email>
++ <active>no</active>
++ </lead>
++ <developer>
++ <name>Ilia Alshanetsky</name>
++ <user>iliaa</user>
++ <email>ilia@php.net</email>
++ <active>no</active>
++ </developer>
++ <developer>
++ <name>Tal Peer</name>
++ <user>tal</user>
++ <email>tal@php.net</email>
++ <active>no</active>
++ </developer>
++ <date>2011-07-08</date>
++ <version>
++ <release>2.0.0</release>
++ <api>2.0.0</api>
++ </version>
++ <stability>
++ <release>stable</release>
++ <api>stable</api>
++ </stability>
++ <license uri="http://www.php.net/license">PHP License</license>
++ <notes><![CDATA[
++ * Moved from php-src back to PECL, and released as version 2.0.0
++ * Upgraded package.xml file from v1 to v2
++]]></notes>
++ <contents>
++ <dir name="/">
++ <file role="src" name="config.m4"/>
++ <file role="src" name="config.w32"/>
++ <file role="src" name="sqlite.c"/>
++ <file role="src" name="sqlite.dsp"/>
++ <file role="src" name="php_sqlite.h"/>
++ <file role="src" name="php_sqlite.def"/>
++ <file role="doc" name="CREDITS"/>
++ <file role="doc" name="README"/>
++ <file role="doc" name="TODO"/>
++ <file role="doc" name="sqlite.php"/>
++ <file role="test" name="tests/sqlite_001.phpt"/>
++ <file role="test" name="tests/sqlite_002.phpt"/>
++ <file role="test" name="tests/sqlite_003.phpt"/>
++ <file role="test" name="tests/sqlite_004.phpt"/>
++ <file role="test" name="tests/sqlite_005.phpt"/>
++ <file role="test" name="tests/sqlite_006.phpt"/>
++ <file role="test" name="tests/sqlite_007.phpt"/>
++ <file role="test" name="tests/sqlite_008.phpt"/>
++ <file role="test" name="tests/sqlite_009.phpt"/>
++ <file role="test" name="tests/sqlite_010.phpt"/>
++ <file role="test" name="tests/sqlite_011.phpt"/>
++ <file role="test" name="tests/sqlite_012.phpt"/>
++ <file role="test" name="tests/sqlite_013.phpt"/>
++ <file role="test" name="tests/sqlite_014.phpt"/>
++ <file role="test" name="tests/sqlite_015.phpt"/>
++ <file role="test" name="tests/sqlite_016.phpt"/>
++ <file role="test" name="tests/sqlite_017.phpt"/>
++ <file role="test" name="tests/blankdb.inc"/>
++
++ <dir name="libsqlite">
++ <file role="doc" name="README"/>
++ <file role="src" name="VERSION"/>
++
++ <dir name="src">
++ <file role="src" name="attach.c"/>
++ <file role="src" name="auth.c"/>
++ <file role="src" name="btree.c"/>
++ <file role="src" name="btree_rb.c"/>
++ <file role="src" name="build.c"/>
++ <file role="src" name="copy.c"/>
++ <file role="src" name="delete.c"/>
++ <file role="src" name="encode.c"/>
++ <file role="src" name="expr.c"/>
++ <file role="src" name="func.c"/>
++ <file role="src" name="hash.c"/>
++ <file role="src" name="insert.c"/>
++ <file role="src" name="main.c"/>
++ <file role="src" name="opcodes.c"/>
++ <file role="src" name="os.c"/>
++ <file role="src" name="pager.c"/>
++ <file role="src" name="parse.c"/>
++ <file role="src" name="parse.y"/>
++ <file role="src" name="pragma.c"/>
++ <file role="src" name="printf.c"/>
++ <file role="src" name="random.c"/>
++ <file role="src" name="select.c"/>
++ <file role="src" name="table.c"/>
++ <file role="src" name="tokenize.c"/>
++ <file role="src" name="trigger.c"/>
++ <file role="src" name="update.c"/>
++ <file role="src" name="util.c"/>
++ <file role="src" name="vacuum.c"/>
++ <file role="src" name="vdbe.c"/>
++ <file role="src" name="where.c"/>
++ <file role="src" name="btree.h"/>
++ <file role="src" name="hash.h"/>
++ <file role="src" name="opcodes.h"/>
++ <file role="src" name="os.h"/>
++ <file role="src" name="pager.h"/>
++ <file role="src" name="parse.h"/>
++ <file role="src" name="sqlite_config.w32.h"/>
++ <file role="src" name="sqlite.h.in"/>
++ <file role="src" name="sqliteInt.h"/>
++ <file role="src" name="sqlite.w32.h"/>
++ <file role="src" name="vdbe.h"/>
++ </dir>
++ </dir>
++ </dir>
++ </contents>
++ <dependencies>
++ <required>
++ <php>
++ <min>5.1.0</min>
++ </php>
++ <pearinstaller>
++ <min>1.4.1</min>
++ </pearinstaller>
++ </required>
++ </dependencies>
++ <providesextension>SQLite</providesextension>
++ <changelog />
++ <extsrcrelease />
++</package>
++<!--
++vim:et:ts=1:sw=1
++-->
+diff -dPNur sqlite-1.0.3/pdo_sqlite2.c sqlite-svn/pdo_sqlite2.c
+--- sqlite-1.0.3/pdo_sqlite2.c 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/pdo_sqlite2.c 2012-10-09 13:36:42.760063980 +0000
+@@ -0,0 +1,633 @@
++/*
++ +----------------------------------------------------------------------+
++ | PHP Version 5 |
++ +----------------------------------------------------------------------+
++ | Copyright (c) 1997-2010 The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | http://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Wez Furlong <wez@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++/* $Id: pdo_sqlite2.c 300612 2010-06-20 14:12:06Z felipe $ */
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++#include "php.h"
++
++#ifdef PHP_SQLITE2_HAVE_PDO
++#include "sqlite.h"
++#include "pdo/php_pdo.h"
++#include "pdo/php_pdo_driver.h"
++#include "zend_exceptions.h"
++
++#define php_sqlite_encode_binary(in, n, out) sqlite_encode_binary((const unsigned char *)in, n, (unsigned char *)out)
++#define php_sqlite_decode_binary(in, out) sqlite_decode_binary((const unsigned char *)in, (unsigned char *)out)
++
++
++typedef struct {
++ const char *file;
++ int line;
++ unsigned int errcode;
++ char *errmsg;
++} pdo_sqlite2_error_info;
++
++typedef struct {
++ sqlite *db;
++ pdo_sqlite2_error_info einfo;
++} pdo_sqlite2_db_handle;
++
++typedef struct {
++ pdo_sqlite2_db_handle *H;
++ sqlite_vm *vm;
++ const char **rowdata, **colnames;
++ int ncols;
++ unsigned pre_fetched:1;
++ unsigned done:1;
++ pdo_sqlite2_error_info einfo;
++} pdo_sqlite2_stmt;
++
++extern int _pdo_sqlite2_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, char *errmsg, const char *file, int line TSRMLS_DC);
++#define pdo_sqlite2_error(msg, s) _pdo_sqlite2_error(s, NULL, msg, __FILE__, __LINE__ TSRMLS_CC)
++#define pdo_sqlite2_error_stmt(msg, s) _pdo_sqlite2_error(stmt->dbh, stmt, msg, __FILE__, __LINE__ TSRMLS_CC)
++
++extern struct pdo_stmt_methods sqlite2_stmt_methods;
++
++static int pdo_sqlite2_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)
++{
++ pdo_sqlite2_stmt *S = (pdo_sqlite2_stmt*)stmt->driver_data;
++
++ if (S->vm) {
++ char *errmsg = NULL;
++ sqlite_finalize(S->vm, &errmsg);
++ if (errmsg) {
++ sqlite_freemem(errmsg);
++ }
++ S->vm = NULL;
++ }
++ if (S->einfo.errmsg) {
++ pefree(S->einfo.errmsg, stmt->dbh->is_persistent);
++ }
++ efree(S);
++ return 1;
++}
++
++static int pdo_sqlite2_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)
++{
++ pdo_sqlite2_stmt *S = (pdo_sqlite2_stmt*)stmt->driver_data;
++ char *errmsg = NULL;
++ const char *tail;
++
++ if (stmt->executed && !S->done) {
++ sqlite_finalize(S->vm, &errmsg);
++ pdo_sqlite2_error_stmt(errmsg, stmt);
++ errmsg = NULL;
++ S->vm = NULL;
++ }
++
++ S->einfo.errcode = sqlite_compile(S->H->db, stmt->active_query_string, &tail, &S->vm, &errmsg);
++ if (S->einfo.errcode != SQLITE_OK) {
++ pdo_sqlite2_error_stmt(errmsg, stmt);
++ return 0;
++ }
++
++ S->done = 0;
++ S->einfo.errcode = sqlite_step(S->vm, &S->ncols, &S->rowdata, &S->colnames);
++ switch (S->einfo.errcode) {
++ case SQLITE_ROW:
++ S->pre_fetched = 1;
++ stmt->column_count = S->ncols;
++ return 1;
++
++ case SQLITE_DONE:
++ stmt->column_count = S->ncols;
++ stmt->row_count = sqlite_changes(S->H->db);
++ S->einfo.errcode = sqlite_reset(S->vm, &errmsg);
++ if (S->einfo.errcode != SQLITE_OK) {
++ pdo_sqlite2_error_stmt(errmsg, stmt);
++ }
++ S->done = 1;
++ return 1;
++
++ case SQLITE_ERROR:
++ case SQLITE_MISUSE:
++ case SQLITE_BUSY:
++ default:
++ pdo_sqlite2_error_stmt(errmsg, stmt);
++ return 0;
++ }
++}
++
++static int pdo_sqlite2_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *param,
++ enum pdo_param_event event_type TSRMLS_DC)
++{
++ return 1;
++}
++
++static int pdo_sqlite2_stmt_fetch(pdo_stmt_t *stmt,
++ enum pdo_fetch_orientation ori, long offset TSRMLS_DC)
++{
++ pdo_sqlite2_stmt *S = (pdo_sqlite2_stmt*)stmt->driver_data;
++ char *errmsg = NULL;
++
++ if (!S->vm) {
++ return 0;
++ }
++ if (S->pre_fetched) {
++ S->pre_fetched = 0;
++ return 1;
++ }
++ if (S->done) {
++ return 0;
++ }
++
++ S->einfo.errcode = sqlite_step(S->vm, &S->ncols, &S->rowdata, &S->colnames);
++ switch (S->einfo.errcode) {
++ case SQLITE_ROW:
++ return 1;
++
++ case SQLITE_DONE:
++ S->done = 1;
++ S->einfo.errcode = sqlite_reset(S->vm, &errmsg);
++ if (S->einfo.errcode != SQLITE_OK) {
++ pdo_sqlite2_error_stmt(errmsg, stmt);
++ errmsg = NULL;
++ }
++ return 0;
++
++ default:
++ pdo_sqlite2_error_stmt(errmsg, stmt);
++ return 0;
++ }
++}
++
++static int pdo_sqlite2_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
++{
++ pdo_sqlite2_stmt *S = (pdo_sqlite2_stmt*)stmt->driver_data;
++
++ if(colno >= S->ncols) {
++ /* error invalid column */
++ pdo_sqlite2_error_stmt(NULL, stmt);
++ return 0;
++ }
++
++ stmt->columns[colno].name = estrdup(S->colnames[colno]);
++ stmt->columns[colno].namelen = strlen(stmt->columns[colno].name);
++ stmt->columns[colno].maxlen = 0xffffffff;
++ stmt->columns[colno].precision = 0;
++ stmt->columns[colno].param_type = PDO_PARAM_STR;
++
++ return 1;
++}
++
++static int pdo_sqlite2_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC)
++{
++ pdo_sqlite2_stmt *S = (pdo_sqlite2_stmt*)stmt->driver_data;
++ if (!S->vm) {
++ return 0;
++ }
++ if(colno >= S->ncols) {
++ /* error invalid column */
++ pdo_sqlite2_error_stmt(NULL, stmt);
++ return 0;
++ }
++ if (S->rowdata[colno]) {
++ if (S->rowdata[colno][0] == '\x01') {
++ /* encoded */
++ *caller_frees = 1;
++ *ptr = emalloc(strlen(S->rowdata[colno]));
++ *len = php_sqlite_decode_binary(S->rowdata[colno]+1, *ptr);
++ (*(char**)ptr)[*len] = '\0';
++ } else {
++ *ptr = (char*)S->rowdata[colno];
++ *len = strlen(*ptr);
++ }
++ } else {
++ *ptr = NULL;
++ *len = 0;
++ }
++ return 1;
++}
++
++struct pdo_stmt_methods sqlite2_stmt_methods = {
++ pdo_sqlite2_stmt_dtor,
++ pdo_sqlite2_stmt_execute,
++ pdo_sqlite2_stmt_fetch,
++ pdo_sqlite2_stmt_describe,
++ pdo_sqlite2_stmt_get_col,
++ pdo_sqlite2_stmt_param_hook,
++ NULL, /* set_attr */
++ NULL, /* get_attr */
++ NULL
++};
++
++
++int _pdo_sqlite2_error(pdo_dbh_t *dbh, pdo_stmt_t *stmt, char *errmsg, const char *file, int line TSRMLS_DC) /* {{{ */
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ pdo_error_type *pdo_err = stmt ? &stmt->error_code : &dbh->error_code;
++ pdo_sqlite2_error_info *einfo = &H->einfo;
++ pdo_sqlite2_stmt *S;
++
++ if (stmt) {
++ S = stmt->driver_data;
++ einfo = &S->einfo;
++ }
++
++ einfo->file = file;
++ einfo->line = line;
++
++ if (einfo->errmsg) {
++ pefree(einfo->errmsg, dbh->is_persistent);
++ einfo->errmsg = NULL;
++ }
++
++ if (einfo->errcode != SQLITE_OK) {
++ if (errmsg) {
++ einfo->errmsg = pestrdup(errmsg, dbh->is_persistent);
++ sqlite_freemem(errmsg);
++ } else {
++ einfo->errmsg = pestrdup(sqlite_error_string(einfo->errcode), dbh->is_persistent);
++ }
++ } else { /* no error */
++ strcpy(*pdo_err, PDO_ERR_NONE);
++ return 0;
++ }
++ switch (einfo->errcode) {
++ case SQLITE_NOTFOUND:
++ strcpy(*pdo_err, "42S02");
++ break;
++
++ case SQLITE_INTERRUPT:
++ strcpy(*pdo_err, "01002");
++ break;
++
++ case SQLITE_NOLFS:
++ strcpy(*pdo_err, "HYC00");
++ break;
++
++ case SQLITE_TOOBIG:
++ strcpy(*pdo_err, "22001");
++ break;
++
++ case SQLITE_CONSTRAINT:
++ strcpy(*pdo_err, "23000");
++ break;
++
++ case SQLITE_ERROR:
++ default:
++ strcpy(*pdo_err, "HY000");
++ break;
++ }
++
++ if (!dbh->methods) {
++ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC, "SQLSTATE[%s] [%d] %s",
++ *pdo_err, einfo->errcode, einfo->errmsg);
++ }
++
++ return einfo->errcode;
++}
++/* }}} */
++
++static int pdo_sqlite2_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *info TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ pdo_sqlite2_error_info *einfo = &H->einfo;
++ pdo_sqlite2_stmt *S;
++
++ if (stmt) {
++ S = stmt->driver_data;
++ einfo = &S->einfo;
++ }
++
++ if (einfo->errcode) {
++ add_next_index_long(info, einfo->errcode);
++ if (einfo->errmsg) {
++ add_next_index_string(info, einfo->errmsg, 1);
++ }
++ }
++
++ return 1;
++}
++
++static int sqlite2_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++
++ if (H) {
++ if (H->db) {
++ sqlite_close(H->db);
++ H->db = NULL;
++ }
++ if (H->einfo.errmsg) {
++ pefree(H->einfo.errmsg, dbh->is_persistent);
++ H->einfo.errmsg = NULL;
++ }
++ pefree(H, dbh->is_persistent);
++ dbh->driver_data = NULL;
++ }
++ return 0;
++}
++/* }}} */
++
++static int sqlite2_handle_preparer(pdo_dbh_t *dbh, const char *sql, long sql_len, pdo_stmt_t *stmt, zval *driver_options TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ pdo_sqlite2_stmt *S = ecalloc(1, sizeof(pdo_sqlite2_stmt));
++
++ S->H = H;
++ stmt->driver_data = S;
++ stmt->methods = &sqlite2_stmt_methods;
++ stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;
++
++ if (PDO_CURSOR_FWDONLY != pdo_attr_lval(driver_options, PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY TSRMLS_CC)) {
++ H->einfo.errcode = SQLITE_ERROR;
++ pdo_sqlite2_error(NULL, dbh);
++ return 0;
++ }
++
++ return 1;
++}
++
++static long sqlite2_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ char *errmsg = NULL;
++
++ if ((H->einfo.errcode = sqlite_exec(H->db, sql, NULL, NULL, &errmsg)) != SQLITE_OK) {
++ pdo_sqlite2_error(errmsg, dbh);
++ return -1;
++ } else {
++ return sqlite_changes(H->db);
++ }
++}
++
++static char *pdo_sqlite2_last_insert_id(pdo_dbh_t *dbh, const char *name, unsigned int *len TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ char *id;
++
++ id = php_pdo_int64_to_str(sqlite_last_insert_rowid(H->db) TSRMLS_CC);
++ *len = strlen(id);
++ return id;
++}
++
++static int sqlite2_handle_quoter(pdo_dbh_t *dbh, const char *unquoted, int unquotedlen, char **quoted, int *quotedlen, enum pdo_param_type paramtype TSRMLS_DC)
++{
++ char *ret;
++
++ if (unquotedlen && (unquoted[0] == '\x01' || memchr(unquoted, '\0', unquotedlen) != NULL)) {
++ /* binary string */
++ int len;
++ ret = safe_emalloc(1 + unquotedlen / 254, 257, 5);
++ ret[0] = '\'';
++ ret[1] = '\x01';
++ len = php_sqlite_encode_binary(unquoted, unquotedlen, ret+2);
++ ret[len + 2] = '\'';
++ ret[len + 3] = '\0';
++ *quoted = ret;
++ *quotedlen = len + 3;
++ /* fprintf(stderr, "Quoting:%d:%.*s:\n", *quotedlen, *quotedlen, *quoted); */
++ return 1;
++ } else if (unquotedlen) {
++ ret = sqlite_mprintf("'%q'", unquoted);
++ if (ret) {
++ *quoted = estrdup(ret);
++ *quotedlen = strlen(ret);
++ sqlite_freemem(ret);
++ return 1;
++ }
++ return 0;
++ } else {
++ *quoted = estrdup("''");
++ *quotedlen = 2;
++ return 1;
++ }
++}
++
++static int sqlite2_handle_begin(pdo_dbh_t *dbh TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ char *errmsg = NULL;
++
++ if (sqlite_exec(H->db, "BEGIN", NULL, NULL, &errmsg) != SQLITE_OK) {
++ pdo_sqlite2_error(errmsg, dbh);
++ return 0;
++ }
++ return 1;
++}
++
++static int sqlite2_handle_commit(pdo_dbh_t *dbh TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ char *errmsg = NULL;
++
++ if (sqlite_exec(H->db, "COMMIT", NULL, NULL, &errmsg) != SQLITE_OK) {
++ pdo_sqlite2_error(errmsg, dbh);
++ return 0;
++ }
++ return 1;
++}
++
++static int sqlite2_handle_rollback(pdo_dbh_t *dbh TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++ char *errmsg = NULL;
++
++ if (sqlite_exec(H->db, "ROLLBACK", NULL, NULL, &errmsg) != SQLITE_OK) {
++ pdo_sqlite2_error(errmsg, dbh);
++ return 0;
++ }
++ return 1;
++}
++
++static int pdo_sqlite2_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value TSRMLS_DC)
++{
++ switch (attr) {
++ case PDO_ATTR_CLIENT_VERSION:
++ case PDO_ATTR_SERVER_VERSION:
++ ZVAL_STRING(return_value, (char *)sqlite_libversion(), 1);
++ break;
++
++ default:
++ return 0;
++ }
++
++ return 1;
++}
++
++static int pdo_sqlite2_set_attr(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC)
++{
++ pdo_sqlite2_db_handle *H = (pdo_sqlite2_db_handle *)dbh->driver_data;
++
++ switch (attr) {
++ case PDO_ATTR_TIMEOUT:
++ convert_to_long(val);
++ sqlite_busy_timeout(H->db, Z_LVAL_P(val) * 1000);
++ return 1;
++ }
++ return 0;
++}
++
++static PHP_FUNCTION(sqlite2_create_function)
++{
++ /* TODO: implement this stuff */
++}
++
++static const zend_function_entry dbh_methods[] = {
++ PHP_FE(sqlite2_create_function, NULL)
++ {NULL, NULL, NULL}
++};
++
++static const zend_function_entry *get_driver_methods(pdo_dbh_t *dbh, int kind TSRMLS_DC)
++{
++ switch (kind) {
++ case PDO_DBH_DRIVER_METHOD_KIND_DBH:
++ return dbh_methods;
++
++ default:
++ return NULL;
++ }
++}
++
++static struct pdo_dbh_methods sqlite2_methods = {
++ sqlite2_handle_closer,
++ sqlite2_handle_preparer,
++ sqlite2_handle_doer,
++ sqlite2_handle_quoter,
++ sqlite2_handle_begin,
++ sqlite2_handle_commit,
++ sqlite2_handle_rollback,
++ pdo_sqlite2_set_attr,
++ pdo_sqlite2_last_insert_id,
++ pdo_sqlite2_fetch_error_func,
++ pdo_sqlite2_get_attribute,
++ NULL, /* check_liveness: not needed */
++ get_driver_methods
++};
++
++static char *make_filename_safe(const char *filename TSRMLS_DC)
++{
++ if (*filename && strncmp(filename, ":memory:", sizeof(":memory:")-1)) {
++ char *fullpath = expand_filepath(filename, NULL TSRMLS_CC);
++
++ if (!fullpath) {
++ return NULL;
++ }
++
++ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
++ efree(fullpath);
++ return NULL;
++ }
++ return fullpath;
++ }
++ return estrdup(filename);
++}
++
++static int authorizer(void *autharg, int access_type, const char *arg3, const char *arg4,
++ const char *arg5, const char *arg6)
++{
++ char *filename;
++ switch (access_type) {
++ case SQLITE_COPY: {
++ TSRMLS_FETCH();
++ filename = make_filename_safe(arg4 TSRMLS_CC);
++ if (!filename) {
++ return SQLITE_DENY;
++ }
++ efree(filename);
++ return SQLITE_OK;
++ }
++
++ case SQLITE_ATTACH: {
++ TSRMLS_FETCH();
++ filename = make_filename_safe(arg3 TSRMLS_CC);
++ if (!filename) {
++ return SQLITE_DENY;
++ }
++ efree(filename);
++ return SQLITE_OK;
++ }
++
++ default:
++ /* access allowed */
++ return SQLITE_OK;
++ }
++}
++
++static int pdo_sqlite2_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC) /* {{{ */
++{
++ pdo_sqlite2_db_handle *H;
++ int ret = 0;
++ long timeout = 60;
++ char *filename;
++ char *errmsg = NULL;
++
++ H = pecalloc(1, sizeof(pdo_sqlite2_db_handle), dbh->is_persistent);
++
++ H->einfo.errcode = 0;
++ H->einfo.errmsg = NULL;
++ dbh->driver_data = H;
++
++ filename = make_filename_safe(dbh->data_source TSRMLS_CC);
++
++ if (!filename) {
++ zend_throw_exception_ex(php_pdo_get_exception(), 0 TSRMLS_CC,
++ "open_basedir prohibits opening %s",
++ dbh->data_source);
++ goto cleanup;
++ }
++
++ H->db = sqlite_open(filename, 0666, &errmsg);
++ efree(filename);
++
++ if (!H->db) {
++ H->einfo.errcode = SQLITE_ERROR;
++ pdo_sqlite2_error(errmsg, dbh);
++ goto cleanup;
++ }
++
++ sqlite_set_authorizer(H->db, authorizer, NULL);
++
++ if (driver_options) {
++ timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, timeout TSRMLS_CC);
++ }
++ sqlite_busy_timeout(H->db, timeout * 1000);
++
++ dbh->alloc_own_columns = 1;
++ dbh->max_escaped_char_length = 2;
++
++ ret = 1;
++
++cleanup:
++ dbh->methods = &sqlite2_methods;
++
++ return ret;
++}
++/* }}} */
++
++pdo_driver_t pdo_sqlite2_driver = {
++ PDO_DRIVER_HEADER(sqlite2),
++ pdo_sqlite2_handle_factory
++};
++
++
++
++#endif
++
++
++/*
++ * Local variables:
++ * tab-width: 4
++ * c-basic-offset: 4
++ * End:
++ * vim600: noet sw=4 ts=4 fdm=marker
++ * vim<600: noet sw=4 ts=4
++ */
+diff -dPNur sqlite-1.0.3/php_sqlite.def sqlite-svn/php_sqlite.def
+--- sqlite-1.0.3/php_sqlite.def 2003-06-12 23:22:33.000000000 +0000
++++ sqlite-svn/php_sqlite.def 2012-10-09 13:36:42.760063980 +0000
+@@ -35,3 +35,9 @@
+ sqlite_compile
+ sqlite_step
+ sqlite_finalize
++; some experimental stuff
++sqlite_last_statement_changes
++sqlite_reset
++sqlite_bind
++sqlite_progress_handler
++sqlite_commit_hook
+diff -dPNur sqlite-1.0.3/php_sqlite.h sqlite-svn/php_sqlite.h
+--- sqlite-1.0.3/php_sqlite.h 2004-05-13 14:54:55.000000000 +0000
++++ sqlite-svn/php_sqlite.h 2012-10-09 13:36:42.760063980 +0000
+@@ -1,13 +1,13 @@
+ /*
+ +----------------------------------------------------------------------+
+- | PHP Version 4 |
++ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+- | Copyright (c) 1997-2003 The PHP Group |
++ | Copyright (c) 1997-2010 The PHP Group |
+ +----------------------------------------------------------------------+
+- | This source file is subject to version 3.0 of the PHP license, |
++ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+- | http://www.php.net/license/3_0.txt. |
++ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+@@ -17,7 +17,7 @@
+ | Marcus Boerger <helly@php.net> |
+ +----------------------------------------------------------------------+
+
+- $Id: php_sqlite.h,v 1.23.2.3 2004/05/13 14:54:55 stas Exp $
++ $Id: php_sqlite.h 293036 2010-01-03 09:23:27Z sebastian $
+ */
+
+ #ifndef PHP_SQLITE_H
+@@ -26,19 +26,12 @@
+ extern zend_module_entry sqlite_module_entry;
+ #define phpext_sqlite_ptr &sqlite_module_entry
+
+-#ifdef PHP_WIN32
+-#define PHP_SQLITE_API __declspec(dllexport)
+-#else
+-#define PHP_SQLITE_API
+-#endif
+-
+ #ifdef ZTS
+ #include "TSRM.h"
+ #endif
+
+ PHP_MINIT_FUNCTION(sqlite);
+ PHP_MSHUTDOWN_FUNCTION(sqlite);
+-PHP_RINIT_FUNCTION(sqlite);
+ PHP_RSHUTDOWN_FUNCTION(sqlite);
+ PHP_MINFO_FUNCTION(sqlite);
+
+@@ -52,6 +45,7 @@
+ PHP_FUNCTION(sqlite_single_query);
+
+ PHP_FUNCTION(sqlite_fetch_array);
++PHP_FUNCTION(sqlite_fetch_object);
+ PHP_FUNCTION(sqlite_fetch_single);
+ PHP_FUNCTION(sqlite_fetch_all);
+ PHP_FUNCTION(sqlite_current);
+@@ -63,7 +57,11 @@
+ PHP_FUNCTION(sqlite_seek);
+ PHP_FUNCTION(sqlite_rewind);
+ PHP_FUNCTION(sqlite_next);
+-PHP_FUNCTION(sqlite_has_more);
++PHP_FUNCTION(sqlite_prev);
++PHP_FUNCTION(sqlite_key);
++
++PHP_FUNCTION(sqlite_valid);
++PHP_FUNCTION(sqlite_has_prev);
+
+ PHP_FUNCTION(sqlite_libversion);
+ PHP_FUNCTION(sqlite_libencoding);
+@@ -83,6 +81,10 @@
+ PHP_FUNCTION(sqlite_udf_decode_binary);
+ PHP_FUNCTION(sqlite_udf_encode_binary);
+
++PHP_FUNCTION(sqlite_factory);
++
++PHP_FUNCTION(sqlite_fetch_column_types);
++
+ ZEND_BEGIN_MODULE_GLOBALS(sqlite)
+ long assoc_case;
+ ZEND_END_MODULE_GLOBALS(sqlite)
+diff -dPNur sqlite-1.0.3/sess_sqlite.c sqlite-svn/sess_sqlite.c
+--- sqlite-1.0.3/sess_sqlite.c 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/sess_sqlite.c 2012-10-09 13:36:42.760063980 +0000
+@@ -0,0 +1,200 @@
++/*
++ +----------------------------------------------------------------------+
++ | PHP Version 5 |
++ +----------------------------------------------------------------------+
++ | Copyright (c) 1997-2010 The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.01 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | http://www.php.net/license/3_01.txt |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Authors: John Coggeshall <john@php.net> |
++ | Wez Furlong <wez@thebrainroom.com> |
++ +----------------------------------------------------------------------+
++ */
++
++/* $Id: sess_sqlite.c 298625 2010-04-26 23:53:30Z kalle $ */
++
++#include "php.h"
++
++#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
++
++#include "ext/session/php_session.h"
++#include "ext/standard/php_lcg.h"
++#include <sqlite.h>
++#define SQLITE_RETVAL(__r) ((__r) == SQLITE_OK ? SUCCESS : FAILURE)
++#define PS_SQLITE_DATA sqlite *db = (sqlite*)PS_GET_MOD_DATA()
++extern int sqlite_encode_binary(const unsigned char *in, int n, unsigned char *out);
++extern int sqlite_decode_binary(const unsigned char *in, unsigned char *out);
++
++PS_FUNCS(sqlite);
++
++ps_module ps_mod_sqlite = {
++ PS_MOD(sqlite)
++};
++
++PS_OPEN_FUNC(sqlite)
++{
++ char *errmsg = NULL;
++ sqlite *db;
++
++ db = sqlite_open(save_path, 0666, &errmsg);
++ if (db == NULL) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING,
++ "SQLite: failed to open/create session database `%s' - %s", save_path, errmsg);
++ sqlite_freemem(errmsg);
++ return FAILURE;
++ }
++
++ /* allow up to 1 minute when busy */
++ sqlite_busy_timeout(db, 60000);
++
++ sqlite_exec(db, "PRAGMA default_synchronous = OFF", NULL, NULL, NULL);
++ sqlite_exec(db, "PRAGMA count_changes = OFF", NULL, NULL, NULL);
++
++ /* This will fail if the table already exists, but that's not a big problem. I'm
++ unclear as to how to check for a table's existence in SQLite -- that would be better here. */
++ sqlite_exec(db,
++ "CREATE TABLE session_data ("
++ " sess_id PRIMARY KEY,"
++ " value TEXT, "
++ " updated INTEGER "
++ ")", NULL, NULL, NULL);
++
++ PS_SET_MOD_DATA(db);
++
++ return SUCCESS;
++}
++
++PS_CLOSE_FUNC(sqlite)
++{
++ PS_SQLITE_DATA;
++
++ sqlite_close(db);
++
++ return SUCCESS;
++}
++
++PS_READ_FUNC(sqlite)
++{
++ PS_SQLITE_DATA;
++ char *query;
++ const char *tail;
++ sqlite_vm *vm;
++ int colcount, result;
++ const char **rowdata, **colnames;
++ char *error;
++
++ *val = NULL;
++ *vallen = 0;
++
++ query = sqlite_mprintf("SELECT value FROM session_data WHERE sess_id='%q' LIMIT 1", key);
++ if (query == NULL) {
++ /* no memory */
++ return FAILURE;
++ }
++
++ if (sqlite_compile(db, query, &tail, &vm, &error) != SQLITE_OK) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQLite: Could not compile session read query: %s", error);
++ sqlite_freemem(error);
++ sqlite_freemem(query);
++ return FAILURE;
++ }
++
++ switch ((result = sqlite_step(vm, &colcount, &rowdata, &colnames))) {
++ case SQLITE_ROW:
++ if (rowdata[0] != NULL) {
++ *vallen = strlen(rowdata[0]);
++ if (*vallen) {
++ *val = emalloc(*vallen);
++ *vallen = sqlite_decode_binary(rowdata[0], *val);
++ (*val)[*vallen] = '\0';
++ } else {
++ *val = STR_EMPTY_ALLOC();
++ }
++ }
++ break;
++ default:
++ sqlite_freemem(error);
++ error = NULL;
++ }
++
++ if (SQLITE_OK != sqlite_finalize(vm, &error)) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQLite: session read: error %s", error);
++ sqlite_freemem(error);
++ error = NULL;
++ }
++
++ sqlite_freemem(query);
++
++ return *val == NULL ? FAILURE : SUCCESS;
++}
++
++PS_WRITE_FUNC(sqlite)
++{
++ PS_SQLITE_DATA;
++ char *error;
++ time_t t;
++ char *binary;
++ int binlen;
++ int rv;
++
++ t = time(NULL);
++
++ binary = safe_emalloc(1 + vallen / 254, 257, 3);
++ binlen = sqlite_encode_binary((const unsigned char*)val, vallen, binary);
++
++ rv = sqlite_exec_printf(db, "REPLACE INTO session_data VALUES('%q', '%q', %d)", NULL, NULL, &error, key, binary, t);
++ if (rv != SQLITE_OK) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "SQLite: session write query failed: %s", error);
++ sqlite_freemem(error);
++ }
++ efree(binary);
++
++ return SQLITE_RETVAL(rv);
++}
++
++PS_DESTROY_FUNC(sqlite)
++{
++ int rv;
++ PS_SQLITE_DATA;
++
++ rv = sqlite_exec_printf(db, "DELETE FROM session_data WHERE sess_id='%q'", NULL, NULL, NULL, key);
++
++ return SQLITE_RETVAL(rv);
++}
++
++PS_GC_FUNC(sqlite)
++{
++ PS_SQLITE_DATA;
++ int rv;
++ time_t t = time(NULL);
++
++ rv = sqlite_exec_printf(db,
++ "DELETE FROM session_data WHERE (%d - updated) > %d",
++ NULL, NULL, NULL, t, maxlifetime);
++
++ /* because SQLite does not actually clear the deleted data from the database
++ * we need to occassionaly do so manually to prevent the sessions database
++ * from growing endlessly.
++ */
++ if ((int) ((float) PS(gc_divisor) * PS(gc_divisor) * php_combined_lcg(TSRMLS_C)) < PS(gc_probability)) {
++ rv = sqlite_exec_printf(db, "VACUUM", NULL, NULL, NULL);
++ }
++ return SQLITE_RETVAL(rv);
++}
++
++#endif /* HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION) */
++
++/*
++ * Local variables:
++ * tab-width: 4
++ * c-basic-offset: 4
++ * End:
++ * vim600: sw=4 ts=4 fdm=marker
++ * vim<600: sw=4 ts=4
++ */
+diff -dPNur sqlite-1.0.3/sqlite.c sqlite-svn/sqlite.c
+--- sqlite-1.0.3/sqlite.c 2004-07-18 10:23:18.000000000 +0000
++++ sqlite-svn/sqlite.c 2012-10-09 13:36:42.760063980 +0000
+@@ -1,13 +1,13 @@
+ /*
+ +----------------------------------------------------------------------+
+- | PHP Version 4 |
++ | PHP Version 5 |
+ +----------------------------------------------------------------------+
+- | Copyright (c) 1997-2003 The PHP Group |
++ | Copyright (c) 1997-2010 The PHP Group |
+ +----------------------------------------------------------------------+
+- | This source file is subject to version 3.0 of the PHP license, |
++ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+ | available through the world-wide-web at the following url: |
+- | http://www.php.net/license/3_0.txt. |
++ | http://www.php.net/license/3_01.txt |
+ | If you did not receive a copy of the PHP license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@php.net so we can mail you a copy immediately. |
+@@ -17,43 +17,65 @@
+ | Marcus Boerger <helly@php.net> |
+ +----------------------------------------------------------------------+
+
+- $Id: sqlite.c,v 1.62.2.25 2004/07/10 12:25:33 wez Exp $
++ $Id: sqlite.c 299692 2010-05-24 14:11:39Z dmitry $
+ */
+
+ #ifdef HAVE_CONFIG_H
+ #include "config.h"
+ #endif
+
+-#define PHP_SQLITE_MODULE_VERSION "1.0.3"
++#define PHP_SQLITE_MODULE_VERSION "2.0-dev"
+
+ #include "php.h"
+ #include "php_ini.h"
+ #include "ext/standard/info.h"
++#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
++#include "ext/session/php_session.h"
++#endif
+ #include "php_sqlite.h"
+
+ #if HAVE_TIME_H
+ # include <time.h>
+ #endif
+-#ifdef HAVE_UNISTD_H
++#if HAVE_UNISTD_H
+ #include <unistd.h>
+ #endif
+
+ #include <sqlite.h>
+
+-#ifndef safe_emalloc
+-# define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
++#include "zend_exceptions.h"
++#include "zend_interfaces.h"
++
++#if defined(HAVE_SPL) && ((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1))
++extern PHPAPI zend_class_entry *spl_ce_RuntimeException;
++extern PHPAPI zend_class_entry *spl_ce_Countable;
+ #endif
+
+-#ifndef ZEND_ENGINE_2
+-# define OnUpdateLong OnUpdateInt
++#if PHP_SQLITE2_HAVE_PDO
++# include "pdo/php_pdo.h"
++# include "pdo/php_pdo_driver.h"
++extern pdo_driver_t pdo_sqlite2_driver;
++#endif
++
++#ifndef safe_emalloc
++# define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
+ #endif
+
+ ZEND_DECLARE_MODULE_GLOBALS(sqlite)
++static PHP_GINIT_FUNCTION(sqlite);
++
++#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
++extern ps_module ps_mod_sqlite;
++#define ps_sqlite_ptr &ps_mod_sqlite
++#endif
+
+ extern int sqlite_encode_binary(const unsigned char *in, int n, unsigned char *out);
+ extern int sqlite_decode_binary(const unsigned char *in, unsigned char *out);
+
+-static unsigned char arg3_force_ref[] = {3, BYREF_NONE, BYREF_NONE, BYREF_FORCE };
++#define php_sqlite_encode_binary(in, n, out) sqlite_encode_binary((const unsigned char *)in, n, (unsigned char *)out)
++#define php_sqlite_decode_binary(in, out) in && *in ? sqlite_decode_binary((const unsigned char *)in, (unsigned char *)out) : 0
++
++static int sqlite_count_elements(zval *object, long *count TSRMLS_DC);
+
+ static int le_sqlite_db, le_sqlite_result, le_sqlite_pdb;
+
+@@ -80,11 +102,34 @@
+ PHP_INI_END()
+ /* }}} */
+
+-
+ #define DB_FROM_ZVAL(db, zv) ZEND_FETCH_RESOURCE2(db, struct php_sqlite_db *, zv, -1, "sqlite database", le_sqlite_db, le_sqlite_pdb)
+
++#define DB_FROM_OBJECT(db, object) \
++ { \
++ sqlite_object *obj = (sqlite_object*) zend_object_store_get_object(object TSRMLS_CC); \
++ db = obj->u.db; \
++ if (!db) { \
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The database wasn't opened"); \
++ RETURN_NULL(); \
++ } \
++ }
++
++#define RES_FROM_OBJECT_RESTORE_ERH(res, object, error_handling) \
++ { \
++ sqlite_object *obj = (sqlite_object*) zend_object_store_get_object(object TSRMLS_CC); \
++ res = obj->u.res; \
++ if (!res) { \
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "No result set available"); \
++ if (error_handling) \
++ zend_restore_error_handling(error_handling TSRMLS_CC); \
++ RETURN_NULL(); \
++ } \
++ }
++
++#define RES_FROM_OBJECT(res, object) RES_FROM_OBJECT_RESTORE_ERH(res, object, NULL)
++
+ #define PHP_SQLITE_EMPTY_QUERY \
+- if (!sql_len) { \
++ if (!sql_len || !*sql) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot execute empty query."); \
+ RETURN_FALSE; \
+ }
+@@ -98,15 +143,15 @@
+ int curr_row;
+ char **col_names;
+ int alloc_rows;
+- char **table;
+ int mode;
++ char **table;
+ };
+
+ struct php_sqlite_db {
+ sqlite *db;
+ int last_err_code;
+- int is_persistent;
+- int rsrc_id;
++ zend_bool is_persistent;
++ long rsrc_id;
+
+ HashTable callbacks;
+ };
+@@ -118,62 +163,475 @@
+ zval *fini;
+ };
+
++static void php_sqlite_fetch_array(struct php_sqlite_result *res, int mode, zend_bool decode_binary, int move_next, zval *return_value TSRMLS_DC);
++static int php_sqlite_fetch(struct php_sqlite_result *rres TSRMLS_DC);
+
+ enum { PHPSQLITE_ASSOC = 1, PHPSQLITE_NUM = 2, PHPSQLITE_BOTH = PHPSQLITE_ASSOC|PHPSQLITE_NUM };
+
+-function_entry sqlite_functions[] = {
+- PHP_FE(sqlite_open, arg3_force_ref)
+- PHP_FE(sqlite_popen, arg3_force_ref)
+- PHP_FE(sqlite_close, NULL)
+- PHP_FE(sqlite_query, NULL)
+- PHP_FE(sqlite_exec, NULL)
+- PHP_FE(sqlite_array_query, NULL)
+- PHP_FE(sqlite_single_query, NULL)
+- PHP_FE(sqlite_fetch_array, NULL)
+- PHP_FE(sqlite_fetch_single, NULL)
+- PHP_FALIAS(sqlite_fetch_string, sqlite_fetch_single, NULL)
+- PHP_FE(sqlite_fetch_all, NULL)
+- PHP_FE(sqlite_current, NULL)
+- PHP_FE(sqlite_column, NULL)
+- PHP_FE(sqlite_libversion, NULL)
+- PHP_FE(sqlite_libencoding, NULL)
+- PHP_FE(sqlite_changes, NULL)
+- PHP_FE(sqlite_last_insert_rowid, NULL)
+- PHP_FE(sqlite_num_rows, NULL)
+- PHP_FE(sqlite_num_fields, NULL)
+- PHP_FE(sqlite_field_name, NULL)
+- PHP_FE(sqlite_seek, NULL)
+- PHP_FE(sqlite_rewind, NULL)
+- PHP_FE(sqlite_next, NULL)
+- PHP_FE(sqlite_has_more, NULL)
+- PHP_FE(sqlite_escape_string, NULL)
+- PHP_FE(sqlite_busy_timeout, NULL)
+- PHP_FE(sqlite_last_error, NULL)
+- PHP_FE(sqlite_error_string, NULL)
+- PHP_FE(sqlite_unbuffered_query, NULL)
+- PHP_FE(sqlite_create_aggregate, NULL)
+- PHP_FE(sqlite_create_function, NULL)
+- PHP_FE(sqlite_udf_encode_binary, NULL)
+- PHP_FE(sqlite_udf_decode_binary, NULL)
++/* {{{ arginfo */
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_popen, 0, 0, 1)
++ ZEND_ARG_INFO(0, filename)
++ ZEND_ARG_INFO(0, mode)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_open, 0, 0, 1)
++ ZEND_ARG_INFO(0, filename)
++ ZEND_ARG_INFO(0, mode)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_factory, 0, 0, 1)
++ ZEND_ARG_INFO(0, filename)
++ ZEND_ARG_INFO(0, mode)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_busy_timeout, 0, 0, 2)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, ms)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_busy_timeout, 0, 0, 1)
++ ZEND_ARG_INFO(0, ms)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_close, 0, 0, 1)
++ ZEND_ARG_INFO(0, db)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_unbuffered_query, 0, 0, 2)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_unbuffered_query, 0, 0, 1)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_fetch_column_types, 0, 0, 2)
++ ZEND_ARG_INFO(0, table_name)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, result_type)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_fetch_column_types, 0, 0, 1)
++ ZEND_ARG_INFO(0, table_name)
++ ZEND_ARG_INFO(0, result_type)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_query, 0, 0, 2)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_query, 0, 0, 1)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_exec, 0, 0, 2)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_exec, 0, 0, 1)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(1, error_message)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_fetch_all, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_fetch_all, 0, 0, 0)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_fetch_array, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_fetch_array, 0, 0, 0)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_fetch_object, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, class_name)
++ ZEND_ARG_INFO(0, ctor_params)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_fetch_object, 0, 0, 0)
++ ZEND_ARG_INFO(0, class_name)
++ ZEND_ARG_INFO(0, ctor_params)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_array_query, 0, 0, 2)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_array_query, 0, 0, 1)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_single_query, 0, 0, 2)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, first_row_only)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_single_query, 0, 0, 1)
++ ZEND_ARG_INFO(0, query)
++ ZEND_ARG_INFO(0, first_row_only)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_fetch_single, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_fetch_single, 0, 0, 0)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_current, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_current, 0, 0, 0)
++ ZEND_ARG_INFO(0, result_type)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_column, 0, 0, 2)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, index_or_name)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_column, 0, 0, 1)
++ ZEND_ARG_INFO(0, index_or_name)
++ ZEND_ARG_INFO(0, decode_binary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_libversion, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_libencoding, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_changes, 0, 0, 1)
++ ZEND_ARG_INFO(0, db)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_changes, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_last_insert_rowid, 0, 0, 1)
++ ZEND_ARG_INFO(0, db)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_last_insert_rowid, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_num_rows, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_num_rows, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_valid, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_valid, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_has_prev, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_has_prev, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_num_fields, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_num_fields, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_field_name, 0, 0, 2)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, field_index)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_field_name, 0, 0, 1)
++ ZEND_ARG_INFO(0, field_index)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_seek, 0, 0, 2)
++ ZEND_ARG_INFO(0, result)
++ ZEND_ARG_INFO(0, row)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_seek, 0, 0, 1)
++ ZEND_ARG_INFO(0, row)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_rewind, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_rewind, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_next, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_next, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_key, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_key, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_prev, 0, 0, 1)
++ ZEND_ARG_INFO(0, result)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_prev, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_escape_string, 0, 0, 1)
++ ZEND_ARG_INFO(0, item)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_last_error, 0, 0, 1)
++ ZEND_ARG_INFO(0, db)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO(arginfo_sqlite_method_last_error, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_error_string, 0, 0, 1)
++ ZEND_ARG_INFO(0, error_code)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_create_aggregate, 0, 0, 4)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, funcname)
++ ZEND_ARG_INFO(0, step_func)
++ ZEND_ARG_INFO(0, finalize_func)
++ ZEND_ARG_INFO(0, num_args)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_create_aggregate, 0, 0, 3)
++ ZEND_ARG_INFO(0, funcname)
++ ZEND_ARG_INFO(0, step_func)
++ ZEND_ARG_INFO(0, finalize_func)
++ ZEND_ARG_INFO(0, num_args)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_create_function, 0, 0, 3)
++ ZEND_ARG_INFO(0, db)
++ ZEND_ARG_INFO(0, funcname)
++ ZEND_ARG_INFO(0, callback)
++ ZEND_ARG_INFO(0, num_args)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_method_create_function, 0, 0, 2)
++ ZEND_ARG_INFO(0, funcname)
++ ZEND_ARG_INFO(0, callback)
++ ZEND_ARG_INFO(0, num_args)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_udf_encode_binary, 0, 0, 1)
++ ZEND_ARG_INFO(0, data)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(arginfo_sqlite_udf_decode_binary, 0, 0, 1)
++ ZEND_ARG_INFO(0, data)
++ZEND_END_ARG_INFO()
++/* }}} */
++
++const zend_function_entry sqlite_functions[] = {
++ PHP_FE(sqlite_open, arginfo_sqlite_open)
++ PHP_FE(sqlite_popen, arginfo_sqlite_popen)
++ PHP_FE(sqlite_close, arginfo_sqlite_close)
++ PHP_FE(sqlite_query, arginfo_sqlite_query)
++ PHP_FE(sqlite_exec, arginfo_sqlite_exec)
++ PHP_FE(sqlite_array_query, arginfo_sqlite_array_query)
++ PHP_FE(sqlite_single_query, arginfo_sqlite_single_query)
++ PHP_FE(sqlite_fetch_array, arginfo_sqlite_fetch_array)
++ PHP_FE(sqlite_fetch_object, arginfo_sqlite_fetch_object)
++ PHP_FE(sqlite_fetch_single, arginfo_sqlite_fetch_single)
++ PHP_FALIAS(sqlite_fetch_string, sqlite_fetch_single, arginfo_sqlite_fetch_single)
++ PHP_FE(sqlite_fetch_all, arginfo_sqlite_fetch_all)
++ PHP_FE(sqlite_current, arginfo_sqlite_current)
++ PHP_FE(sqlite_column, arginfo_sqlite_column)
++ PHP_FE(sqlite_libversion, arginfo_sqlite_libversion)
++ PHP_FE(sqlite_libencoding, arginfo_sqlite_libencoding)
++ PHP_FE(sqlite_changes, arginfo_sqlite_changes)
++ PHP_FE(sqlite_last_insert_rowid, arginfo_sqlite_last_insert_rowid)
++ PHP_FE(sqlite_num_rows, arginfo_sqlite_num_rows)
++ PHP_FE(sqlite_num_fields, arginfo_sqlite_num_fields)
++ PHP_FE(sqlite_field_name, arginfo_sqlite_field_name)
++ PHP_FE(sqlite_seek, arginfo_sqlite_seek)
++ PHP_FE(sqlite_rewind, arginfo_sqlite_rewind)
++ PHP_FE(sqlite_next, arginfo_sqlite_next)
++ PHP_FE(sqlite_prev, arginfo_sqlite_prev)
++ PHP_FE(sqlite_valid, arginfo_sqlite_valid)
++ PHP_FALIAS(sqlite_has_more, sqlite_valid, arginfo_sqlite_valid)
++ PHP_FE(sqlite_has_prev, arginfo_sqlite_has_prev)
++ PHP_FE(sqlite_escape_string, arginfo_sqlite_escape_string)
++ PHP_FE(sqlite_busy_timeout, arginfo_sqlite_busy_timeout)
++ PHP_FE(sqlite_last_error, arginfo_sqlite_last_error)
++ PHP_FE(sqlite_error_string, arginfo_sqlite_error_string)
++ PHP_FE(sqlite_unbuffered_query, arginfo_sqlite_unbuffered_query)
++ PHP_FE(sqlite_create_aggregate, arginfo_sqlite_create_aggregate)
++ PHP_FE(sqlite_create_function, arginfo_sqlite_create_function)
++ PHP_FE(sqlite_factory, arginfo_sqlite_factory)
++ PHP_FE(sqlite_udf_encode_binary, arginfo_sqlite_udf_encode_binary)
++ PHP_FE(sqlite_udf_decode_binary, arginfo_sqlite_udf_decode_binary)
++ PHP_FE(sqlite_fetch_column_types, arginfo_sqlite_fetch_column_types)
++ {NULL, NULL, NULL}
++};
++
++const zend_function_entry sqlite_funcs_db[] = {
++ PHP_ME_MAPPING(__construct, sqlite_open, arginfo_sqlite_open, 0)
++/* PHP_ME_MAPPING(close, sqlite_close, NULL, 0)*/
++ PHP_ME_MAPPING(query, sqlite_query, arginfo_sqlite_method_query, 0)
++ PHP_ME_MAPPING(queryExec, sqlite_exec, arginfo_sqlite_method_exec, 0)
++ PHP_ME_MAPPING(arrayQuery, sqlite_array_query, arginfo_sqlite_method_array_query, 0)
++ PHP_ME_MAPPING(singleQuery, sqlite_single_query, arginfo_sqlite_method_single_query, 0)
++ PHP_ME_MAPPING(unbufferedQuery, sqlite_unbuffered_query, arginfo_sqlite_method_unbuffered_query, 0)
++ PHP_ME_MAPPING(lastInsertRowid, sqlite_last_insert_rowid, arginfo_sqlite_method_last_insert_rowid, 0)
++ PHP_ME_MAPPING(changes, sqlite_changes, arginfo_sqlite_method_changes, 0)
++ PHP_ME_MAPPING(createAggregate, sqlite_create_aggregate, arginfo_sqlite_method_create_aggregate, 0)
++ PHP_ME_MAPPING(createFunction, sqlite_create_function, arginfo_sqlite_method_create_function, 0)
++ PHP_ME_MAPPING(busyTimeout, sqlite_busy_timeout, arginfo_sqlite_method_busy_timeout, 0)
++ PHP_ME_MAPPING(lastError, sqlite_last_error, arginfo_sqlite_method_last_error, 0)
++ PHP_ME_MAPPING(fetchColumnTypes, sqlite_fetch_column_types, arginfo_sqlite_method_fetch_column_types, 0)
++/* PHP_ME_MAPPING(error_string, sqlite_error_string, NULL, 0) static */
++/* PHP_ME_MAPPING(escape_string, sqlite_escape_string, NULL, 0) static */
++ {NULL, NULL, NULL}
++};
++
++const zend_function_entry sqlite_funcs_query[] = {
++ PHP_ME_MAPPING(fetch, sqlite_fetch_array, arginfo_sqlite_method_fetch_array, 0)
++ PHP_ME_MAPPING(fetchObject, sqlite_fetch_object, arginfo_sqlite_method_fetch_object, 0)
++ PHP_ME_MAPPING(fetchSingle, sqlite_fetch_single, arginfo_sqlite_method_fetch_single, 0)
++ PHP_ME_MAPPING(fetchAll, sqlite_fetch_all, arginfo_sqlite_method_fetch_all, 0)
++ PHP_ME_MAPPING(column, sqlite_column, arginfo_sqlite_method_column, 0)
++ PHP_ME_MAPPING(numFields, sqlite_num_fields, arginfo_sqlite_method_num_fields, 0)
++ PHP_ME_MAPPING(fieldName, sqlite_field_name, arginfo_sqlite_method_field_name, 0)
++ /* iterator */
++ PHP_ME_MAPPING(current, sqlite_current, arginfo_sqlite_method_current, 0)
++ PHP_ME_MAPPING(key, sqlite_key, arginfo_sqlite_method_key, 0)
++ PHP_ME_MAPPING(next, sqlite_next, arginfo_sqlite_method_next, 0)
++ PHP_ME_MAPPING(valid, sqlite_valid, arginfo_sqlite_method_valid, 0)
++ PHP_ME_MAPPING(rewind, sqlite_rewind, arginfo_sqlite_method_rewind, 0)
++ /* countable */
++ PHP_ME_MAPPING(count, sqlite_num_rows, arginfo_sqlite_method_num_rows, 0)
++ /* additional */
++ PHP_ME_MAPPING(prev, sqlite_prev, arginfo_sqlite_method_prev, 0)
++ PHP_ME_MAPPING(hasPrev, sqlite_has_prev, arginfo_sqlite_method_has_prev, 0)
++ PHP_ME_MAPPING(numRows, sqlite_num_rows, arginfo_sqlite_method_num_rows, 0)
++ PHP_ME_MAPPING(seek, sqlite_seek, arginfo_sqlite_method_seek, 0)
++ {NULL, NULL, NULL}
++};
++
++const zend_function_entry sqlite_funcs_ub_query[] = {
++ PHP_ME_MAPPING(fetch, sqlite_fetch_array, arginfo_sqlite_method_fetch_array, 0)
++ PHP_ME_MAPPING(fetchObject, sqlite_fetch_object, arginfo_sqlite_method_fetch_object, 0)
++ PHP_ME_MAPPING(fetchSingle, sqlite_fetch_single, arginfo_sqlite_method_fetch_single, 0)
++ PHP_ME_MAPPING(fetchAll, sqlite_fetch_all, arginfo_sqlite_method_fetch_all, 0)
++ PHP_ME_MAPPING(column, sqlite_column, arginfo_sqlite_method_column, 0)
++ PHP_ME_MAPPING(numFields, sqlite_num_fields, arginfo_sqlite_method_num_fields, 0)
++ PHP_ME_MAPPING(fieldName, sqlite_field_name, arginfo_sqlite_method_field_name, 0)
++ /* iterator */
++ PHP_ME_MAPPING(current, sqlite_current, arginfo_sqlite_method_current, 0)
++ PHP_ME_MAPPING(next, sqlite_next, arginfo_sqlite_method_next, 0)
++ PHP_ME_MAPPING(valid, sqlite_valid, arginfo_sqlite_method_valid, 0)
+ {NULL, NULL, NULL}
+ };
+
++const zend_function_entry sqlite_funcs_exception[] = {
++ {NULL, NULL, NULL}
++};
++
++/* Dependancies */
++static const zend_module_dep sqlite_deps[] = {
++#if defined(HAVE_SPL) && ((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1))
++ ZEND_MOD_REQUIRED("spl")
++#endif
++#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
++ ZEND_MOD_REQUIRED("session")
++#endif
++#ifdef PHP_SQLITE2_HAVE_PDO
++ ZEND_MOD_REQUIRED("pdo")
++#endif
++ {NULL, NULL, NULL}
++};
+
+ zend_module_entry sqlite_module_entry = {
+-#if ZEND_MODULE_API_NO >= 20010901
++#if ZEND_MODULE_API_NO >= 20050922
++ STANDARD_MODULE_HEADER_EX, NULL,
++ sqlite_deps,
++#elif ZEND_MODULE_API_NO >= 20010901
+ STANDARD_MODULE_HEADER,
+ #endif
+- "sqlite",
++ "SQLite",
+ sqlite_functions,
+ PHP_MINIT(sqlite),
+- NULL,
++ PHP_MSHUTDOWN(sqlite),
+ NULL,
+ PHP_RSHUTDOWN(sqlite),
+ PHP_MINFO(sqlite),
+ #if ZEND_MODULE_API_NO >= 20010901
+ PHP_SQLITE_MODULE_VERSION,
+ #endif
++#if ZEND_MODULE_API_NO >= 20060613
++ PHP_MODULE_GLOBALS(sqlite),
++ PHP_GINIT(sqlite),
++ NULL,
++ NULL,
++ STANDARD_MODULE_PROPERTIES_EX
++#else
+ STANDARD_MODULE_PROPERTIES
++#endif
+ };
+
+
+@@ -218,11 +676,11 @@
+ {
+ if (rsrc->ptr) {
+ struct php_sqlite_db *db = (struct php_sqlite_db*)rsrc->ptr;
+-
++
+ sqlite_close(db->db);
+
+ zend_hash_destroy(&db->callbacks);
+-
++
+ pefree(db, db->is_persistent);
+
+ rsrc->ptr = NULL;
+@@ -264,6 +722,17 @@
+ efree(res);
+ }
+
++static int _clean_unfinished_results(zend_rsrc_list_entry *le, void *db TSRMLS_DC)
++{
++ if (Z_TYPE_P(le) == le_sqlite_result) {
++ struct php_sqlite_result *res = (struct php_sqlite_result *)le->ptr;
++ if (res->db->rsrc_id == ((struct php_sqlite_db*)db)->rsrc_id) {
++ return ZEND_HASH_APPLY_REMOVE;
++ }
++ }
++ return ZEND_HASH_APPLY_KEEP;
++}
++
+ static ZEND_RSRC_DTOR_FUNC(php_sqlite_result_dtor)
+ {
+ struct php_sqlite_result *res = (struct php_sqlite_result *)rsrc->ptr;
+@@ -280,12 +749,12 @@
+
+ /* prevent bad mojo if someone tries to use a previously registered function in the next request */
+ zend_hash_apply(&db->callbacks, (apply_func_t)php_sqlite_callback_invalidator TSRMLS_CC);
+-
++
+ db->rsrc_id = FAILURE;
+
+ /* don't leave pending commits hanging around */
+ sqlite_exec(db->db, "ROLLBACK", NULL, NULL, NULL);
+-
++
+ return 0;
+ }
+
+@@ -310,21 +779,21 @@
+ sqlite_set_result_error(func, "not enough parameters", -1);
+ return;
+ }
+-
+- ZVAL_STRING(&funcname, (char*)argv[0], 0);
+
+- if (!zend_is_callable(&funcname, 0, &callable)) {
+- spprintf(&errbuf, 0, "function `%s' is not callable", callable);
++ ZVAL_STRING(&funcname, (char*)argv[0], 1);
++
++ if (!zend_make_callable(&funcname, &callable TSRMLS_CC)) {
++ spprintf(&errbuf, 0, "function `%s' is not a function name", callable);
+ sqlite_set_result_error(func, errbuf, -1);
+ efree(errbuf);
+ efree(callable);
++ zval_dtor(&funcname);
+ return;
+ }
+- efree(callable);
+-
++
+ if (argc > 1) {
+ zargs = (zval ***)safe_emalloc((argc - 1), sizeof(zval **), 0);
+-
++
+ for (i = 0; i < argc-1; i++) {
+ zargs[i] = emalloc(sizeof(zval *));
+ MAKE_STD_ZVAL(*zargs[i]);
+@@ -340,6 +809,8 @@
+ zargs,
+ 0, NULL TSRMLS_CC);
+
++ zval_dtor(&funcname);
++
+ if (res == SUCCESS) {
+ if (retval == NULL) {
+ sqlite_set_result_string(func, NULL, 0);
+@@ -361,9 +832,14 @@
+ }
+ }
+ } else {
+- sqlite_set_result_error(func, "call_user_function_ex failed", -1);
++ char *errbuf;
++ spprintf(&errbuf, 0, "call_user_function_ex failed for function %s()", callable);
++ sqlite_set_result_error(func, errbuf, -1);
++ efree(errbuf);
+ }
+
++ efree(callable);
++
+ if (retval) {
+ zval_ptr_dtor(&retval);
+ }
+@@ -394,7 +870,7 @@
+
+ if (argc > 0) {
+ zargs = (zval ***)safe_emalloc(argc, sizeof(zval **), 0);
+-
++
+ for (i = 0; i < argc; i++) {
+ zargs[i] = emalloc(sizeof(zval *));
+ MAKE_STD_ZVAL(*zargs[i]);
+@@ -473,16 +949,16 @@
+ if (argc < 1) {
+ return;
+ }
+-
++
+ zargc = argc + 1;
+ zargs = (zval ***)safe_emalloc(zargc, sizeof(zval **), 0);
+-
++
+ /* first arg is always the context zval */
+ context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p));
+
+ if (*context_p == NULL) {
+ MAKE_STD_ZVAL(*context_p);
+- (*context_p)->is_ref = 1;
++ Z_SET_ISREF_PP(context_p);
+ Z_TYPE_PP(context_p) = IS_NULL;
+ }
+
+@@ -538,9 +1014,9 @@
+ sqlite_set_result_error(func, "this function has not been correctly defined for this request", -1);
+ return;
+ }
+-
++
+ context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p));
+-
++
+ res = call_user_function_ex(EG(function_table),
+ NULL,
+ funcs->fini,
+@@ -590,9 +1066,6 @@
+ case SQLITE_COPY:
+ if (strncmp(arg4, ":memory:", sizeof(":memory:") - 1)) {
+ TSRMLS_FETCH();
+- if (PG(safe_mode) && (!php_checkuid(arg4, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
+- return SQLITE_DENY;
+- }
+
+ if (php_check_open_basedir(arg4 TSRMLS_CC)) {
+ return SQLITE_DENY;
+@@ -603,9 +1076,6 @@
+ case SQLITE_ATTACH:
+ if (strncmp(arg3, ":memory:", sizeof(":memory:") - 1)) {
+ TSRMLS_FETCH();
+- if (PG(safe_mode) && (!php_checkuid(arg3, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
+- return SQLITE_DENY;
+- }
+
+ if (php_check_open_basedir(arg3 TSRMLS_CC)) {
+ return SQLITE_DENY;
+@@ -621,18 +1091,303 @@
+ }
+ /* }}} */
+
+-static int init_sqlite_globals(zend_sqlite_globals *g)
++/* {{{ OO init/structure stuff */
++#define REGISTER_SQLITE_CLASS(name, c_name, parent) \
++ { \
++ zend_class_entry ce; \
++ INIT_CLASS_ENTRY(ce, "SQLite" # name, sqlite_funcs_ ## c_name); \
++ ce.create_object = sqlite_object_new_ ## c_name; \
++ sqlite_ce_ ## c_name = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); \
++ memcpy(&sqlite_object_handlers_ ## c_name, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); \
++ sqlite_object_handlers_ ## c_name.clone_obj = NULL; \
++ sqlite_ce_ ## c_name->ce_flags |= ZEND_ACC_FINAL_CLASS; \
++ }
++
++zend_class_entry *sqlite_ce_db, *sqlite_ce_exception;
++zend_class_entry *sqlite_ce_query, *sqlite_ce_ub_query;
++
++static zend_object_handlers sqlite_object_handlers_db;
++static zend_object_handlers sqlite_object_handlers_query;
++static zend_object_handlers sqlite_object_handlers_ub_query;
++static zend_object_handlers sqlite_object_handlers_exception;
++
++typedef enum {
++ is_db,
++ is_result
++} sqlite_obj_type;
++
++typedef struct _sqlite_object {
++ zend_object std;
++ sqlite_obj_type type;
++ union {
++ struct php_sqlite_db *db;
++ struct php_sqlite_result *res;
++ void *ptr;
++ } u;
++} sqlite_object;
++
++static int sqlite_free_persistent(zend_rsrc_list_entry *le, void *ptr TSRMLS_DC)
+ {
+- g->assoc_case = 0;
+- return SUCCESS;
++ return le->ptr == ptr ? ZEND_HASH_APPLY_REMOVE : ZEND_HASH_APPLY_KEEP;
+ }
+
+-PHP_MINIT_FUNCTION(sqlite)
++static void sqlite_object_free_storage(void *object TSRMLS_DC)
+ {
+- ZEND_INIT_MODULE_GLOBALS(sqlite, init_sqlite_globals, NULL);
++ sqlite_object *intern = (sqlite_object *)object;
++
++ zend_object_std_dtor(&intern->std TSRMLS_CC);
++
++ if (intern->u.ptr) {
++ if (intern->type == is_db) {
++ if (intern->u.db->rsrc_id) {
++ zend_list_delete(intern->u.db->rsrc_id);
++ zend_hash_apply_with_argument(&EG(persistent_list), (apply_func_arg_t) sqlite_free_persistent, &intern->u.ptr TSRMLS_CC);
++ }
++ } else {
++ real_result_dtor(intern->u.res TSRMLS_CC);
++ }
++ }
++
++ efree(object);
++}
++
++static void sqlite_object_new(zend_class_entry *class_type, zend_object_handlers *handlers, zend_object_value *retval TSRMLS_DC)
++{
++ sqlite_object *intern;
++
++ intern = emalloc(sizeof(sqlite_object));
++ memset(intern, 0, sizeof(sqlite_object));
++
++ zend_object_std_init(&intern->std, class_type TSRMLS_CC);
++ object_properties_init(&intern->std, class_type);
+
++ retval->handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) sqlite_object_free_storage, NULL TSRMLS_CC);
++ retval->handlers = handlers;
++}
++
++static zend_object_value sqlite_object_new_db(zend_class_entry *class_type TSRMLS_DC)
++{
++ zend_object_value retval;
++
++ sqlite_object_new(class_type, &sqlite_object_handlers_db, &retval TSRMLS_CC);
++ return retval;
++}
++
++static zend_object_value sqlite_object_new_query(zend_class_entry *class_type TSRMLS_DC)
++{
++ zend_object_value retval;
++
++ sqlite_object_new(class_type, &sqlite_object_handlers_query, &retval TSRMLS_CC);
++ return retval;
++}
++
++static zend_object_value sqlite_object_new_ub_query(zend_class_entry *class_type TSRMLS_DC)
++{
++ zend_object_value retval;
++
++ sqlite_object_new(class_type, &sqlite_object_handlers_ub_query, &retval TSRMLS_CC);
++ return retval;
++}
++
++static zend_object_value sqlite_object_new_exception(zend_class_entry *class_type TSRMLS_DC)
++{
++ zend_object_value retval;
++
++ sqlite_object_new(class_type, &sqlite_object_handlers_exception, &retval TSRMLS_CC);
++ return retval;
++}
++
++#define SQLITE_REGISTER_OBJECT(_type, _object, _ptr) \
++ { \
++ sqlite_object *obj; \
++ obj = (sqlite_object*)zend_object_store_get_object(_object TSRMLS_CC); \
++ obj->type = is_ ## _type; \
++ obj->u._type = _ptr; \
++ }
++
++static zend_class_entry *sqlite_get_ce_query(const zval *object TSRMLS_DC)
++{
++ return sqlite_ce_query;
++}
++
++static zend_class_entry *sqlite_get_ce_ub_query(const zval *object TSRMLS_DC)
++{
++ return sqlite_ce_ub_query;
++}
++
++static zval * sqlite_instanciate(zend_class_entry *pce, zval *object TSRMLS_DC)
++{
++ if (!object) {
++ ALLOC_ZVAL(object);
++ }
++ Z_TYPE_P(object) = IS_OBJECT;
++ object_init_ex(object, pce);
++ Z_SET_REFCOUNT_P(object, 1);
++ Z_SET_ISREF_P(object);
++ return object;
++}
++
++typedef struct _sqlite_object_iterator {
++ zend_object_iterator it;
++ struct php_sqlite_result *res;
++ zval *value;
++} sqlite_object_iterator;
++
++void sqlite_iterator_dtor(zend_object_iterator *iter TSRMLS_DC)
++{
++ zval *object = (zval*)((sqlite_object_iterator*)iter)->it.data;
++
++ if (((sqlite_object_iterator*)iter)->value) {
++ zval_ptr_dtor(&((sqlite_object_iterator*)iter)->value);
++ ((sqlite_object_iterator*)iter)->value = NULL;
++ }
++ zval_ptr_dtor(&object);
++ efree(iter);
++}
++
++void sqlite_iterator_rewind(zend_object_iterator *iter TSRMLS_DC)
++{
++ struct php_sqlite_result *res = ((sqlite_object_iterator*)iter)->res;
++
++ if (((sqlite_object_iterator*)iter)->value) {
++ zval_ptr_dtor(&((sqlite_object_iterator*)iter)->value);
++ ((sqlite_object_iterator*)iter)->value = NULL;
++ }
++ if (res) {
++ res->curr_row = 0;
++ }
++}
++
++int sqlite_iterator_valid(zend_object_iterator *iter TSRMLS_DC)
++{
++ struct php_sqlite_result *res = ((sqlite_object_iterator*)iter)->res;
++
++ if (res && res->curr_row < res->nrows && res->nrows) { /* curr_row may be -1 */
++ return SUCCESS;
++ } else {
++ return FAILURE;
++ }
++}
++
++void sqlite_iterator_get_current_data(zend_object_iterator *iter, zval ***data TSRMLS_DC)
++{
++ struct php_sqlite_result *res = ((sqlite_object_iterator*)iter)->res;
++
++ *data = &((sqlite_object_iterator*)iter)->value;
++ if (res && !**data) {
++ MAKE_STD_ZVAL(**data);
++ php_sqlite_fetch_array(res, res->mode, 1, 0, **data TSRMLS_CC);
++ }
++
++}
++
++int sqlite_iterator_get_current_key(zend_object_iterator *iter, char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC)
++{
++ struct php_sqlite_result *res = ((sqlite_object_iterator*)iter)->res;
++
++ *str_key = NULL;
++ *str_key_len = 0;
++ *int_key = res ? res->curr_row : 0;
++ return HASH_KEY_IS_LONG;
++}
++
++void sqlite_iterator_move_forward(zend_object_iterator *iter TSRMLS_DC)
++{
++ struct php_sqlite_result *res = ((sqlite_object_iterator*)iter)->res;
++
++ if (((sqlite_object_iterator*)iter)->value) {
++ zval_ptr_dtor(&((sqlite_object_iterator*)iter)->value);
++ ((sqlite_object_iterator*)iter)->value = NULL;
++ }
++ if (res) {
++ if (!res->buffered && res->vm) {
++ php_sqlite_fetch(res TSRMLS_CC);
++ }
++ if (res->curr_row >= res->nrows) {
++ /* php_error_docref(NULL TSRMLS_CC, E_WARNING, "no more rows available"); */
++ return;
++ }
++
++ res->curr_row++;
++ }
++}
++
++zend_object_iterator_funcs sqlite_ub_query_iterator_funcs = {
++ sqlite_iterator_dtor,
++ sqlite_iterator_valid,
++ sqlite_iterator_get_current_data,
++ sqlite_iterator_get_current_key,
++ sqlite_iterator_move_forward,
++ NULL
++};
++
++zend_object_iterator_funcs sqlite_query_iterator_funcs = {
++ sqlite_iterator_dtor,
++ sqlite_iterator_valid,
++ sqlite_iterator_get_current_data,
++ sqlite_iterator_get_current_key,
++ sqlite_iterator_move_forward,
++ sqlite_iterator_rewind
++};
++
++zend_object_iterator *sqlite_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC)
++{
++ sqlite_object_iterator *iterator = emalloc(sizeof(sqlite_object_iterator));
++
++ sqlite_object *obj = (sqlite_object*) zend_object_store_get_object(object TSRMLS_CC);
++
++ if (by_ref) {
++ zend_error(E_RECOVERABLE_ERROR, "An iterator cannot be used with foreach by reference");
++ }
++ Z_ADDREF_P(object);
++ iterator->it.data = (void*)object;
++ iterator->it.funcs = ce->iterator_funcs.funcs;
++ iterator->res = obj->u.res;
++ iterator->value = NULL;
++ return (zend_object_iterator*)iterator;
++}
++/* }}} */
++
++static PHP_GINIT_FUNCTION(sqlite)
++{
++ sqlite_globals->assoc_case = 0;
++}
++
++PHP_MINIT_FUNCTION(sqlite)
++{
++ REGISTER_SQLITE_CLASS(Database, db, NULL);
++ REGISTER_SQLITE_CLASS(Result, query, NULL);
++ REGISTER_SQLITE_CLASS(Unbuffered, ub_query, NULL);
++#if defined(HAVE_SPL) && ((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1))
++ REGISTER_SQLITE_CLASS(Exception, exception, spl_ce_RuntimeException);
++#else
++ REGISTER_SQLITE_CLASS(Exception, exception, zend_exception_get_default(TSRMLS_C));
++#endif
++
++ sqlite_ce_db->ce_flags &= ~ZEND_ACC_FINAL_CLASS;
++ sqlite_ce_db->constructor->common.fn_flags |= ZEND_ACC_FINAL;
++
++ sqlite_object_handlers_query.get_class_entry = sqlite_get_ce_query;
++ sqlite_object_handlers_ub_query.get_class_entry = sqlite_get_ce_ub_query;
++ sqlite_object_handlers_ub_query.count_elements = sqlite_count_elements;
++
++ sqlite_ce_ub_query->get_iterator = sqlite_get_iterator;
++ sqlite_ce_ub_query->iterator_funcs.funcs = &sqlite_ub_query_iterator_funcs;
++
++#if defined(HAVE_SPL) && ((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1))
++ zend_class_implements(sqlite_ce_query TSRMLS_CC, 2, zend_ce_iterator, spl_ce_Countable);
++#else
++ zend_class_implements(sqlite_ce_query TSRMLS_CC, 1, zend_ce_iterator);
++#endif
++ sqlite_ce_query->get_iterator = sqlite_get_iterator;
++ sqlite_ce_query->iterator_funcs.funcs = &sqlite_query_iterator_funcs;
++
+ REGISTER_INI_ENTRIES();
+
++#if HAVE_PHP_SESSION && !defined(COMPILE_DL_SESSION)
++ php_session_register_module(ps_sqlite_ptr);
++#endif
++
+ le_sqlite_db = zend_register_list_destructors_ex(php_sqlite_db_dtor, NULL, "sqlite database", module_number);
+ le_sqlite_pdb = zend_register_list_destructors_ex(NULL, php_sqlite_db_dtor, "sqlite database (persistent)", module_number);
+ le_sqlite_result = zend_register_list_destructors_ex(php_sqlite_result_dtor, NULL, "sqlite result", module_number);
+@@ -640,7 +1395,7 @@
+ REGISTER_LONG_CONSTANT("SQLITE_BOTH", PHPSQLITE_BOTH, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_NUM", PHPSQLITE_NUM, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_ASSOC", PHPSQLITE_ASSOC, CONST_CS|CONST_PERSISTENT);
+-
++
+ REGISTER_LONG_CONSTANT("SQLITE_OK", SQLITE_OK, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_ERROR", SQLITE_ERROR, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_INTERNAL", SQLITE_INTERNAL, CONST_CS|CONST_PERSISTENT);
+@@ -665,18 +1420,30 @@
+ REGISTER_LONG_CONSTANT("SQLITE_MISUSE", SQLITE_MISUSE, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_NOLFS", SQLITE_NOLFS, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_AUTH", SQLITE_AUTH, CONST_CS|CONST_PERSISTENT);
++ REGISTER_LONG_CONSTANT("SQLITE_NOTADB", SQLITE_NOTADB, CONST_CS|CONST_PERSISTENT);
+ #ifdef SQLITE_FORMAT
+ REGISTER_LONG_CONSTANT("SQLITE_FORMAT", SQLITE_FORMAT, CONST_CS|CONST_PERSISTENT);
+ #endif
+-#ifdef SQLITE_RANGE
+- REGISTER_LONG_CONSTANT("SQLITE_RANGE", SQLITE_RANGE, CONST_CS|CONST_PERSISTENT);
+-#endif
+-#ifdef SQLITE_NOTADB
+- REGISTER_LONG_CONSTANT("SQLITE_NOTADB", SQLITE_NOTADB, CONST_CS|CONST_PERSISTENT);
+-#endif
+ REGISTER_LONG_CONSTANT("SQLITE_ROW", SQLITE_ROW, CONST_CS|CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("SQLITE_DONE", SQLITE_DONE, CONST_CS|CONST_PERSISTENT);
+
++#ifdef PHP_SQLITE2_HAVE_PDO
++ if (FAILURE == php_pdo_register_driver(&pdo_sqlite2_driver)) {
++ return FAILURE;
++ }
++#endif
++
++ return SUCCESS;
++}
++
++PHP_MSHUTDOWN_FUNCTION(sqlite)
++{
++ UNREGISTER_INI_ENTRIES();
++
++#ifdef PHP_SQLITE2_HAVE_PDO
++ php_pdo_unregister_driver(&pdo_sqlite2_driver);
++#endif
++
+ return SUCCESS;
+ }
+
+@@ -684,7 +1451,7 @@
+ {
+ php_info_print_table_start();
+ php_info_print_table_header(2, "SQLite support", "enabled");
+- php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c,v 1.62.2.25 2004/07/10 12:25:33 wez Exp $");
++ php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " $Id: sqlite.c 299692 2010-05-24 14:11:39Z dmitry $");
+ php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
+ php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
+ php_info_print_table_end();
+@@ -692,7 +1459,7 @@
+ DISPLAY_INI_ENTRIES();
+ }
+
+-static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *persistent_id, zval *return_value, zval *errmsg TSRMLS_DC)
++static struct php_sqlite_db *php_sqlite_open(char *filename, int mode, char *persistent_id, zval *return_value, zval *errmsg, zval *object TSRMLS_DC)
+ {
+ char *errtext = NULL;
+ sqlite *sdb = NULL;
+@@ -710,7 +1477,12 @@
+
+ sqlite_freemem(errtext);
+
+- RETVAL_FALSE;
++ /* if object is not an object then we're called from the factory() function */
++ if (object && Z_TYPE_P(object) != IS_OBJECT) {
++ RETVAL_NULL();
++ } else {
++ RETVAL_FALSE;
++ }
+ return NULL;
+ }
+
+@@ -720,7 +1492,7 @@
+ db->db = sdb;
+
+ zend_hash_init(&db->callbacks, 0, NULL, php_sqlite_callback_dtor, db->is_persistent);
+-
++
+ /* register the PHP functions */
+ sqlite_create_function(sdb, "php", -1, php_sqlite_generic_function_callback, 0);
+
+@@ -731,12 +1503,22 @@
+ /* authorizer hook so we can enforce safe mode
+ * Note: the declaration of php_sqlite_authorizer is correct for 2.8.2 of libsqlite,
+ * and IS backwards binary compatible with earlier versions */
+- sqlite_set_authorizer(sdb, php_sqlite_authorizer, NULL);
+-
+- db->rsrc_id = ZEND_REGISTER_RESOURCE(return_value, db, persistent_id ? le_sqlite_pdb : le_sqlite_db);
++ if (PG(open_basedir) && *PG(open_basedir)) {
++ sqlite_set_authorizer(sdb, php_sqlite_authorizer, NULL);
++ }
++
++ db->rsrc_id = ZEND_REGISTER_RESOURCE(object ? NULL : return_value, db, persistent_id ? le_sqlite_pdb : le_sqlite_db);
++ if (object) {
++ /* if object is not an object then we're called from the factory() function */
++ if (Z_TYPE_P(object) != IS_OBJECT) {
++ sqlite_instanciate(sqlite_ce_db, object TSRMLS_CC);
++ }
++ /* and now register the object */
++ SQLITE_REGISTER_OBJECT(db, object, db)
++ }
+
+ if (persistent_id) {
+- list_entry le;
++ zend_rsrc_list_entry le;
+
+ Z_TYPE(le) = le_sqlite_pdb;
+ le.ptr = db;
+@@ -747,51 +1529,51 @@
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to register persistent resource");
+ }
+ }
+-
++
+ return db;
+ }
+
+-/* {{{ proto resource sqlite_popen(string filename [, int mode, string &errmessage])
+- Opens a persistent handle to an SQLite database. Will create the database if it does not exist */
++/* {{{ proto resource sqlite_popen(string filename [, int mode [, string &error_message]])
++ Opens a persistent handle to a SQLite database. Will create the database if it does not exist. */
+ PHP_FUNCTION(sqlite_popen)
+ {
+- int mode = 0666;
++ long mode = 0666;
+ char *filename, *fullpath, *hashkey;
+- long filename_len, hashkeylen;
++ int filename_len, hashkeylen;
+ zval *errmsg = NULL;
+ struct php_sqlite_db *db = NULL;
+- list_entry *le;
+-
++ zend_rsrc_list_entry *le;
++
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/",
+ &filename, &filename_len, &mode, &errmsg)) {
+ return;
+ }
+ if (errmsg) {
+ zval_dtor(errmsg);
++ ZVAL_NULL(errmsg);
+ }
+
+ if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
+ /* resolve the fully-qualified path name to use as the hash key */
+- fullpath = expand_filepath(filename, NULL TSRMLS_CC);
+-
+- if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
++ if (!(fullpath = expand_filepath(filename, NULL TSRMLS_CC))) {
+ RETURN_FALSE;
+ }
+
+ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
++ efree(fullpath);
+ RETURN_FALSE;
+ }
+ } else {
+ fullpath = estrndup(filename, filename_len);
+ }
+
+- hashkeylen = spprintf(&hashkey, 0, "sqlite_pdb_%s:%d", fullpath, mode);
+-
++ hashkeylen = spprintf(&hashkey, 0, "sqlite_pdb_%s:%ld", fullpath, mode);
++
+ /* do we have an existing persistent connection ? */
+ if (SUCCESS == zend_hash_find(&EG(persistent_list), hashkey, hashkeylen+1, (void*)&le)) {
+ if (Z_TYPE_P(le) == le_sqlite_pdb) {
+ db = (struct php_sqlite_db*)le->ptr;
+-
++
+ if (db->rsrc_id == FAILURE) {
+ /* give it a valid resource id for this request */
+ db->rsrc_id = ZEND_REGISTER_RESOURCE(return_value, db, le_sqlite_pdb);
+@@ -799,7 +1581,7 @@
+ int type;
+ /* sanity check to ensure that the resource is still a valid regular resource
+ * number */
+- if (_zend_list_find(db->rsrc_id, &type TSRMLS_CC) == db) {
++ if (zend_list_find(db->rsrc_id, &type) == db) {
+ /* already accessed this request; map it */
+ zend_list_addref(db->rsrc_id);
+ ZVAL_RESOURCE(return_value, db->rsrc_id);
+@@ -809,109 +1591,174 @@
+ }
+
+ /* all set */
+- efree(fullpath);
+- efree(hashkey);
+- return;
++ goto done;
+ }
+
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Some other type of persistent resource is using this hash key!?");
+- RETURN_FALSE;
++ RETVAL_FALSE;
++ goto done;
+ }
+
+ /* now we need to open the database */
+- php_sqlite_open(fullpath, mode, hashkey, return_value, errmsg TSRMLS_CC);
+-
++ php_sqlite_open(fullpath, (int)mode, hashkey, return_value, errmsg, NULL TSRMLS_CC);
++done:
+ efree(fullpath);
+ efree(hashkey);
+ }
+ /* }}} */
+
+-/* {{{ proto resource sqlite_open(string filename [, int mode, string &errmessage])
+- Opens an SQLite database. Will create the database if it does not exist */
++/* {{{ proto resource sqlite_open(string filename [, int mode [, string &error_message]])
++ Opens a SQLite database. Will create the database if it does not exist. */
+ PHP_FUNCTION(sqlite_open)
+ {
+- int mode = 0666;
++ long mode = 0666;
+ char *filename, *fullpath = NULL;
+- long filename_len;
++ int filename_len;
+ zval *errmsg = NULL;
++ zval *object = getThis();
++ zend_error_handling error_handling;
+
++ zend_replace_error_handling(object ? EH_THROW : EH_NORMAL, sqlite_ce_exception, &error_handling TSRMLS_CC);
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/",
+ &filename, &filename_len, &mode, &errmsg)) {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
+ return;
+ }
+ if (errmsg) {
+ zval_dtor(errmsg);
++ ZVAL_NULL(errmsg);
+ }
+
+ if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
+ /* resolve the fully-qualified path name to use as the hash key */
+- fullpath = expand_filepath(filename, NULL TSRMLS_CC);
+-
+- if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, CHECKUID_CHECK_FILE_AND_DIR))) {
++ if (!(fullpath = expand_filepath(filename, NULL TSRMLS_CC))) {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ if (object) {
++ RETURN_NULL();
++ } else {
++ RETURN_FALSE;
++ }
++ }
++
++ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
+ efree(fullpath);
+- RETURN_FALSE;
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ if (object) {
++ RETURN_NULL();
++ } else {
++ RETURN_FALSE;
++ }
++ }
++ }
++
++ php_sqlite_open(fullpath ? fullpath : filename, (int)mode, NULL, return_value, errmsg, object TSRMLS_CC);
++
++ if (fullpath) {
++ efree(fullpath);
++ }
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++}
++/* }}} */
++
++/* {{{ proto object sqlite_factory(string filename [, int mode [, string &error_message]])
++ Opens a SQLite database and creates an object for it. Will create the database if it does not exist. */
++PHP_FUNCTION(sqlite_factory)
++{
++ long mode = 0666;
++ char *filename, *fullpath = NULL;
++ int filename_len;
++ zval *errmsg = NULL;
++ zend_error_handling error_handling;
++
++ zend_replace_error_handling(EH_THROW, sqlite_ce_exception, &error_handling TSRMLS_CC);
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/",
++ &filename, &filename_len, &mode, &errmsg)) {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ RETURN_NULL();
++ }
++ if (errmsg) {
++ zval_dtor(errmsg);
++ ZVAL_NULL(errmsg);
++ }
++
++ if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
++ /* resolve the fully-qualified path name to use as the hash key */
++ if (!(fullpath = expand_filepath(filename, NULL TSRMLS_CC))) {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ RETURN_NULL();
+ }
+
+ if (php_check_open_basedir(fullpath TSRMLS_CC)) {
+ efree(fullpath);
+- RETURN_FALSE;
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ RETURN_NULL();
+ }
+ }
+-
+- php_sqlite_open(fullpath ? fullpath : filename, mode, NULL, return_value, errmsg TSRMLS_CC);
+
++ php_sqlite_open(fullpath ? fullpath : filename, (int)mode, NULL, return_value, errmsg, return_value TSRMLS_CC);
+ if (fullpath) {
+ efree(fullpath);
+ }
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
+ }
+ /* }}} */
+
+ /* {{{ proto void sqlite_busy_timeout(resource db, int ms)
+- Set busy timeout duration. If ms <= 0, all busy handlers are disabled */
++ Set busy timeout duration. If ms <= 0, all busy handlers are disabled. */
+ PHP_FUNCTION(sqlite_busy_timeout)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
+ long ms;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zdb, &ms)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &ms)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zdb, &ms)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+
+- DB_FROM_ZVAL(db, &zdb);
+-
+ sqlite_busy_timeout(db->db, ms);
+ }
+ /* }}} */
+
+ /* {{{ proto void sqlite_close(resource db)
+- Closes an open sqlite database */
++ Closes an open sqlite database. */
+ PHP_FUNCTION(sqlite_close)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
+- return;
+- }
+- DB_FROM_ZVAL(db, &zdb);
+-
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
+- return;
++ if (object) {
++ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Ignored, you must destruct the object instead");
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+
+- DB_FROM_ZVAL(db, &zdb);
++ zend_hash_apply_with_argument(&EG(regular_list),
++ (apply_func_arg_t) _clean_unfinished_results,
++ db TSRMLS_CC);
+
+ zend_list_delete(Z_RESVAL_P(zdb));
+ }
+ /* }}} */
+
+ /* {{{ php_sqlite_fetch */
+-int php_sqlite_fetch(struct php_sqlite_result *rres TSRMLS_DC)
++static int php_sqlite_fetch(struct php_sqlite_result *rres TSRMLS_DC)
+ {
+ const char **rowdata, **colnames;
+ int ret, i, base;
+- char *errtext = NULL, *colname;
++ char *errtext = NULL;
+
+ next_row:
+ ret = sqlite_step(rres->vm, &rres->ncolumns, &rowdata, &colnames);
+@@ -919,14 +1766,13 @@
+ /* first row - lets copy the column names */
+ rres->col_names = safe_emalloc(rres->ncolumns, sizeof(char *), 0);
+ for (i = 0; i < rres->ncolumns; i++) {
+- colname = (char*)colnames[i];
++ rres->col_names[i] = estrdup((char*)colnames[i]);
+
+ if (SQLITE_G(assoc_case) == 1) {
+- php_sqlite_strtoupper(colname);
++ php_sqlite_strtoupper(rres->col_names[i]);
+ } else if (SQLITE_G(assoc_case) == 2) {
+- php_sqlite_strtolower(colname);
++ php_sqlite_strtolower(rres->col_names[i]);
+ }
+- rres->col_names[i] = estrdup(colname);
+ }
+ if (!rres->buffered) {
+ /* non buffered mode - also fetch memory for on single row */
+@@ -940,7 +1786,7 @@
+ /* add the row to our collection */
+ if (rres->nrows + 1 >= rres->alloc_rows) {
+ rres->alloc_rows = rres->alloc_rows ? rres->alloc_rows * 2 : 16;
+- rres->table = erealloc(rres->table, rres->alloc_rows * rres->ncolumns * sizeof(char *));
++ rres->table = safe_erealloc(rres->table, rres->alloc_rows, rres->ncolumns*sizeof(char *), 0);
+ }
+ base = rres->nrows * rres->ncolumns;
+ for (i = 0; i < rres->ncolumns; i++) {
+@@ -994,9 +1840,9 @@
+ /* }}} */
+
+ /* {{{ sqlite_query */
+-void sqlite_query(struct php_sqlite_db *db, char *sql, long sql_len, int mode, int buffered, zval *return_value, struct php_sqlite_result *rres TSRMLS_DC)
++void sqlite_query(zval *object, struct php_sqlite_db *db, char *sql, long sql_len, int mode, int buffered, zval *return_value, struct php_sqlite_result **prres, zval *errmsg TSRMLS_DC)
+ {
+- struct php_sqlite_result res;
++ struct php_sqlite_result res, *rres;
+ int ret;
+ char *errtext = NULL;
+ const char *tail;
+@@ -1010,61 +1856,92 @@
+
+ if (ret != SQLITE_OK) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
++ if (errmsg) {
++ ZVAL_STRING(errmsg, errtext, 1);
++ }
+ sqlite_freemem(errtext);
+ goto terminate;
+- } else if (!res.vm) { /* emptry query */
++ } else if (!res.vm) { /* empty query */
+ terminate:
+ if (return_value) {
+ RETURN_FALSE;
+ } else {
+- efree(rres);
+ return;
+ }
+ }
+
+- if (!rres) {
+- rres = (struct php_sqlite_result*)emalloc(sizeof(*rres));
++ if (!prres) {
++ rres = NULL;
++ prres = &rres;
+ }
+- memcpy(rres, &res, sizeof(*rres));
+- rres->db = db;
++ if (!*prres) {
++ *prres = (struct php_sqlite_result*)emalloc(sizeof(**prres));
++ }
++ memcpy(*prres, &res, sizeof(**prres));
++ (*prres)->db = db;
+ zend_list_addref(db->rsrc_id);
+
++
+ /* now the result set is ready for stepping: get first row */
+- if (php_sqlite_fetch(rres TSRMLS_CC) != SQLITE_OK) {
+- real_result_dtor(rres TSRMLS_CC);
++ if (php_sqlite_fetch((*prres) TSRMLS_CC) != SQLITE_OK) {
++ real_result_dtor((*prres) TSRMLS_CC);
++ *prres = NULL;
+ if (return_value) {
+ RETURN_FALSE;
+ } else {
+- return;
++ return;
+ }
+ }
+-
+- rres->curr_row = 0;
+
+- if (return_value) {
+- ZEND_REGISTER_RESOURCE(return_value, rres, le_sqlite_result);
++ (*prres)->curr_row = 0;
++
++ if (object) {
++ sqlite_object *obj;
++ if (buffered) {
++ sqlite_instanciate(sqlite_ce_query, return_value TSRMLS_CC);
++ } else {
++ sqlite_instanciate(sqlite_ce_ub_query, return_value TSRMLS_CC);
++ }
++ obj = (sqlite_object *) zend_object_store_get_object(return_value TSRMLS_CC);
++ obj->type = is_result;
++ obj->u.res = (*prres);
++ } else if (return_value) {
++ ZEND_REGISTER_RESOURCE(object ? NULL : return_value, (*prres), le_sqlite_result);
+ }
+ }
+ /* }}} */
+
+-/* {{{ proto resource sqlite_unbuffered_query(string query, resource db [ , int result_type ])
+- Execute a query that does not prefetch and buffer all data */
++/* {{{ proto resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])
++ Executes a query that does not prefetch and buffer all data. */
+ PHP_FUNCTION(sqlite_unbuffered_query)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
+ char *sql;
+- long sql_len;
+- int mode = PHPSQLITE_BOTH;
++ int sql_len;
++ long mode = PHPSQLITE_BOTH;
+ char *errtext = NULL;
++ zval *errmsg = NULL;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
+- ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &sql, &sql_len, &zdb, &mode) &&
+- FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &sql, &sql_len, &mode)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/", &sql, &sql_len, &mode, &errmsg)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
++ ZEND_NUM_ARGS() TSRMLS_CC, "sr|lz/", &sql, &sql_len, &zdb, &mode, &errmsg) &&
++ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lz/", &zdb, &sql, &sql_len, &mode, &errmsg)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+
+- DB_FROM_ZVAL(db, &zdb);
++ if (errmsg) {
++ zval_dtor(errmsg);
++ ZVAL_NULL(errmsg);
++ }
+
+ PHP_SQLITE_EMPTY_QUERY;
+
+@@ -1074,32 +1951,124 @@
+
+ if (db->last_err_code != SQLITE_OK) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
++ if (errmsg) {
++ ZVAL_STRING(errmsg, errtext, 1);
++ }
+ sqlite_freemem(errtext);
+ }
+ return;
+ }
+-
+- sqlite_query(db, sql, sql_len, mode, 0, return_value, NULL TSRMLS_CC);
++
++ sqlite_query(object, db, sql, sql_len, (int)mode, 0, return_value, NULL, errmsg TSRMLS_CC);
+ }
+ /* }}} */
+
+-/* {{{ proto resource sqlite_query(string query, resource db [ , int result_type ])
+- Executes a query against a given database and returns a result handle */
++/* {{{ proto resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])
++ Return an array of column types from a particular table. */
++PHP_FUNCTION(sqlite_fetch_column_types)
++{
++ zval *zdb;
++ struct php_sqlite_db *db;
++ char *tbl, *sql;
++ int tbl_len;
++ char *errtext = NULL;
++ zval *object = getThis();
++ struct php_sqlite_result res;
++ const char **rowdata, **colnames, *tail;
++ int i, ncols;
++ long result_type = PHPSQLITE_ASSOC;
++
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &tbl, &tbl_len, &result_type)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
++ ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &tbl, &tbl_len, &zdb, &result_type) &&
++ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &tbl, &tbl_len, &result_type)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
++ }
++
++ if (!(sql = sqlite_mprintf("SELECT * FROM '%q' LIMIT 1", tbl))) {
++ RETURN_FALSE;
++ }
++
++ sqlite_exec(db->db, "PRAGMA show_datatypes = ON", NULL, NULL, NULL);
++
++ db->last_err_code = sqlite_compile(db->db, sql, &tail, &res.vm, &errtext);
++
++ sqlite_freemem(sql);
++
++ if (db->last_err_code != SQLITE_OK) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
++ sqlite_freemem(errtext);
++ RETVAL_FALSE;
++ goto done;
++ }
++
++ sqlite_step(res.vm, &ncols, &rowdata, &colnames);
++
++ array_init(return_value);
++
++ for (i = 0; i < ncols; i++) {
++ if (result_type == PHPSQLITE_ASSOC) {
++ char *colname = estrdup((char *)colnames[i]);
++
++ if (SQLITE_G(assoc_case) == 1) {
++ php_sqlite_strtoupper(colname);
++ } else if (SQLITE_G(assoc_case) == 2) {
++ php_sqlite_strtolower(colname);
++ }
++
++ add_assoc_string(return_value, colname, colnames[ncols + i] ? (char *)colnames[ncols + i] : "", 1);
++ efree(colname);
++ }
++ if (result_type == PHPSQLITE_NUM) {
++ add_index_string(return_value, i, colnames[ncols + i] ? (char *)colnames[ncols + i] : "", 1);
++ }
++ }
++ if (res.vm) {
++ sqlite_finalize(res.vm, NULL);
++ }
++done:
++ sqlite_exec(db->db, "PRAGMA show_datatypes = OFF", NULL, NULL, NULL);
++}
++/* }}} */
++
++/* {{{ proto resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])
++ Executes a query against a given database and returns a result handle. */
+ PHP_FUNCTION(sqlite_query)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
+ char *sql;
+- long sql_len;
+- int mode = PHPSQLITE_BOTH;
++ int sql_len;
++ long mode = PHPSQLITE_BOTH;
+ char *errtext = NULL;
++ zval *errmsg = NULL;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
+- ZEND_NUM_ARGS() TSRMLS_CC, "sr|l", &sql, &sql_len, &zdb, &mode) &&
+- FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &zdb, &sql, &sql_len, &mode)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lz/", &sql, &sql_len, &mode, &errmsg)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
++ ZEND_NUM_ARGS() TSRMLS_CC, "sr|lz/", &sql, &sql_len, &zdb, &mode, &errmsg) &&
++ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lz/", &zdb, &sql, &sql_len, &mode, &errmsg)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
++ }
++
++ if (errmsg) {
++ zval_dtor(errmsg);
++ ZVAL_NULL(errmsg);
+ }
+- DB_FROM_ZVAL(db, &zdb);
+
+ PHP_SQLITE_EMPTY_QUERY;
+
+@@ -1109,31 +2078,48 @@
+
+ if (db->last_err_code != SQLITE_OK) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
++ if (errmsg) {
++ ZVAL_STRING(errmsg, errtext, 1);
++ }
+ sqlite_freemem(errtext);
+ }
+ return;
+ }
+-
+- sqlite_query(db, sql, sql_len, mode, 1, return_value, NULL TSRMLS_CC);
++
++ sqlite_query(object, db, sql, sql_len, (int)mode, 1, return_value, NULL, errmsg TSRMLS_CC);
+ }
+ /* }}} */
+
+-/* {{{ proto boolean sqlite_exec(string query, resource db)
++/* {{{ proto boolean sqlite_exec(string query, resource db[, string &error_message])
+ Executes a result-less query against a given database */
+ PHP_FUNCTION(sqlite_exec)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
+ char *sql;
+- long sql_len;
++ int sql_len;
+ char *errtext = NULL;
++ zval *errmsg = NULL;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
+- ZEND_NUM_ARGS() TSRMLS_CC, "sr", &sql, &sql_len, &zdb) &&
+- FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs", &zdb, &sql, &sql_len)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|z/", &sql, &sql_len, &errmsg)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if(FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
++ ZEND_NUM_ARGS() TSRMLS_CC, "sr", &sql, &sql_len, &zdb) &&
++ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|z/", &zdb, &sql, &sql_len, &errmsg)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
++ }
++
++ if (errmsg) {
++ zval_dtor(errmsg);
++ ZVAL_NULL(errmsg);
+ }
+- DB_FROM_ZVAL(db, &zdb);
+
+ PHP_SQLITE_EMPTY_QUERY;
+
+@@ -1141,6 +2127,9 @@
+
+ if (db->last_err_code != SQLITE_OK) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", errtext);
++ if (errmsg) {
++ ZVAL_STRING(errmsg, errtext, 1);
++ }
+ sqlite_freemem(errtext);
+ RETURN_FALSE;
+ }
+@@ -1152,9 +2141,9 @@
+ /* {{{ php_sqlite_fetch_array */
+ static void php_sqlite_fetch_array(struct php_sqlite_result *res, int mode, zend_bool decode_binary, int move_next, zval *return_value TSRMLS_DC)
+ {
+- int j, buffered = res->buffered;
++ int j, n = res->ncolumns, buffered = res->buffered;
+ const char **rowdata, **colnames;
+-
++
+ /* check range of the row */
+ if (res->curr_row >= res->nrows) {
+ /* no more */
+@@ -1170,7 +2159,7 @@
+ /* now populate the result */
+ array_init(return_value);
+
+- for (j = 0; j < res->ncolumns; j++) {
++ for (j = 0; j < n; j++) {
+ zval *decoded;
+ MAKE_STD_ZVAL(decoded);
+
+@@ -1178,7 +2167,7 @@
+ ZVAL_NULL(decoded);
+ } else if (decode_binary && rowdata[j][0] == '\x01') {
+ Z_STRVAL_P(decoded) = emalloc(strlen(rowdata[j]));
+- Z_STRLEN_P(decoded) = sqlite_decode_binary(rowdata[j]+1, Z_STRVAL_P(decoded));
++ Z_STRLEN_P(decoded) = php_sqlite_decode_binary(rowdata[j]+1, Z_STRVAL_P(decoded));
+ Z_STRVAL_P(decoded)[Z_STRLEN_P(decoded)] = '\0';
+ Z_TYPE_P(decoded) = IS_STRING;
+ if (!buffered) {
+@@ -1195,7 +2184,7 @@
+ if (mode & PHPSQLITE_NUM) {
+ if (mode & PHPSQLITE_ASSOC) {
+ add_index_zval(return_value, j, decoded);
+- ZVAL_ADDREF(decoded);
++ Z_ADDREF_P(decoded);
+ add_assoc_zval(return_value, (char*)colnames[j], decoded);
+ } else {
+ add_next_index_zval(return_value, decoded);
+@@ -1252,10 +2241,10 @@
+
+ if (rowdata[j] == NULL) {
+ RETURN_NULL();
+- } else if (decode_binary && rowdata[j][0] == '\x01') {
++ } else if (decode_binary && rowdata[j] != NULL && rowdata[j][0] == '\x01') {
+ int l = strlen(rowdata[j]);
+ char *decoded = emalloc(l);
+- l = sqlite_decode_binary(rowdata[j]+1, decoded);
++ l = php_sqlite_decode_binary(rowdata[j]+1, decoded);
+ decoded[l] = '\0';
+ RETVAL_STRINGL(decoded, l, 0);
+ if (!res->buffered) {
+@@ -1271,26 +2260,37 @@
+ }
+ /* }}} */
+
+-/* {{{ proto array sqlite_fetch_all(resource result [, int result_type, bool decode_binary])
+- Fetches all rows from a result set as an array */
++/* {{{ proto array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])
++ Fetches all rows from a result set as an array of arrays. */
+ PHP_FUNCTION(sqlite_fetch_all)
+ {
+ zval *zres, *ent;
+- int mode = PHPSQLITE_BOTH;
++ long mode = PHPSQLITE_BOTH;
+ zend_bool decode_binary = 1;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
+- return;
+- }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+- if (ZEND_NUM_ARGS() < 2) {
+- mode = res->mode;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lb", &mode, &decode_binary)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ if (!ZEND_NUM_ARGS()) {
++ mode = res->mode;
++ }
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ if (ZEND_NUM_ARGS() < 2) {
++ mode = res->mode;
++ }
+ }
+
+ if (res->curr_row >= res->nrows && res->nrows) {
+ if (!res->buffered) {
+- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "One or more rowsets were already returned");
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "One or more rowsets were already returned; returning NULL this time");
+ } else {
+ res->curr_row = 0;
+ }
+@@ -1306,46 +2306,184 @@
+ }
+ /* }}} */
+
+-/* {{{ proto array sqlite_fetch_array(resource result [, int result_type, bool decode_binary])
+- Fetches the next row from a result set as an array */
++/* {{{ proto array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])
++ Fetches the next row from a result set as an array. */
+ PHP_FUNCTION(sqlite_fetch_array)
+ {
+ zval *zres;
+- int mode = PHPSQLITE_BOTH;
++ long mode = PHPSQLITE_BOTH;
+ zend_bool decode_binary = 1;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lb", &mode, &decode_binary)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ if (!ZEND_NUM_ARGS()) {
++ mode = res->mode;
++ }
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ if (ZEND_NUM_ARGS() < 2) {
++ mode = res->mode;
++ }
++ }
++
++ php_sqlite_fetch_array(res, mode, decode_binary, 1, return_value TSRMLS_CC);
++}
++/* }}} */
++
++/* {{{ proto object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])
++ Fetches the next row from a result set as an object. */
++ /* note that you can do array(&$val) for param ctor_params */
++PHP_FUNCTION(sqlite_fetch_object)
++{
++ zval *zres;
++ zend_bool decode_binary = 1;
++ struct php_sqlite_result *res;
++ zval *object = getThis();
++ char *class_name = NULL;
++ int class_name_len;
++ zend_class_entry *ce;
++ zval dataset;
++ zend_fcall_info fci;
++ zend_fcall_info_cache fcc;
++ zval *retval_ptr;
++ zval *ctor_params = NULL;
++ zend_error_handling error_handling;
++
++ zend_replace_error_handling(object ? EH_THROW : EH_NORMAL, sqlite_ce_exception, &error_handling TSRMLS_CC);
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|szb", &class_name, &class_name_len, &ctor_params, &decode_binary)) {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ return;
++ }
++ RES_FROM_OBJECT_RESTORE_ERH(res, object, &error_handling);
++ if (!class_name) {
++ ce = zend_standard_class_def;
++ } else {
++ ce = zend_fetch_class(class_name, class_name_len, ZEND_FETCH_CLASS_AUTO TSRMLS_CC);
++ }
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|szb", &zres, &class_name, &class_name_len, &ctor_params, &decode_binary)) {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ if (!class_name) {
++ ce = zend_standard_class_def;
++ } else {
++ ce = zend_fetch_class(class_name, class_name_len, ZEND_FETCH_CLASS_AUTO TSRMLS_CC);
++ }
++ }
++
++ if (!ce) {
++ zend_throw_exception_ex(sqlite_ce_exception, 0 TSRMLS_CC, "Could not find class '%s'", class_name);
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
+ return;
+ }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+- if (ZEND_NUM_ARGS() < 2) {
+- mode = res->mode;
++
++ if (res->curr_row < res->nrows) {
++ php_sqlite_fetch_array(res, PHPSQLITE_ASSOC, decode_binary, 1, &dataset TSRMLS_CC);
++ } else {
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++ RETURN_FALSE;
+ }
+
+- php_sqlite_fetch_array(res, mode, decode_binary, 1, return_value TSRMLS_CC);
++ object_and_properties_init(return_value, ce, NULL);
++ zend_merge_properties(return_value, Z_ARRVAL(dataset), 1 TSRMLS_CC);
++
++ zend_restore_error_handling(&error_handling TSRMLS_CC);
++
++ if (ce->constructor) {
++ fci.size = sizeof(fci);
++ fci.function_table = &ce->function_table;
++ fci.function_name = NULL;
++ fci.symbol_table = NULL;
++ fci.object_ptr = return_value;
++ fci.retval_ptr_ptr = &retval_ptr;
++ if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
++ if (Z_TYPE_P(ctor_params) == IS_ARRAY) {
++ HashTable *ht = Z_ARRVAL_P(ctor_params);
++ Bucket *p;
++
++ fci.param_count = 0;
++ fci.params = safe_emalloc(sizeof(zval*), ht->nNumOfElements, 0);
++ p = ht->pListHead;
++ while (p != NULL) {
++ fci.params[fci.param_count++] = (zval**)p->pData;
++ p = p->pListNext;
++ }
++ } else {
++ /* Two problems why we throw exceptions here: PHP is typeless
++ * and hence passing one argument that's not an array could be
++ * by mistake and the other way round is possible, too. The
++ * single value is an array. Also we'd have to make that one
++ * argument passed by reference.
++ */
++ zend_throw_exception(sqlite_ce_exception, "Parameter ctor_params must be an array", 0 TSRMLS_CC);
++ return;
++ }
++ } else {
++ fci.param_count = 0;
++ fci.params = NULL;
++ }
++ fci.no_separation = 1;
++
++ fcc.initialized = 1;
++ fcc.function_handler = ce->constructor;
++ fcc.calling_scope = EG(scope);
++ fcc.called_scope = Z_OBJCE_P(return_value);
++ fcc.object_ptr = return_value;
++
++ if (zend_call_function(&fci, &fcc TSRMLS_CC) == FAILURE) {
++ zend_throw_exception_ex(sqlite_ce_exception, 0 TSRMLS_CC, "Could not execute %s::%s()", class_name, ce->constructor->common.function_name);
++ } else {
++ if (retval_ptr) {
++ zval_ptr_dtor(&retval_ptr);
++ }
++ }
++ if (fci.params) {
++ efree(fci.params);
++ }
++ } else if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) {
++ zend_throw_exception_ex(sqlite_ce_exception, 0 TSRMLS_CC, "Class %s does not have a constructor, use NULL for parameter ctor_params or omit it", class_name);
++ }
+ }
+ /* }}} */
+
+-/* {{{ proto array sqlite_array_query(resource db, string query [ , int result_type, bool decode_binary ])
+- Executes a query against a given database and returns an array */
++/* {{{ proto array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])
++ Executes a query against a given database and returns an array of arrays. */
+ PHP_FUNCTION(sqlite_array_query)
+ {
+ zval *zdb, *ent;
+ struct php_sqlite_db *db;
+ struct php_sqlite_result *rres;
+ char *sql;
+- long sql_len;
+- int mode = PHPSQLITE_BOTH;
++ int sql_len;
++ long mode = PHPSQLITE_BOTH;
+ char *errtext = NULL;
+ zend_bool decode_binary = 1;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
+- ZEND_NUM_ARGS() TSRMLS_CC, "sr|lb", &sql, &sql_len, &zdb, &mode, &decode_binary) &&
+- FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lb", &zdb, &sql, &sql_len, &mode, &decode_binary)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|lb", &sql, &sql_len, &mode, &decode_binary)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
++ ZEND_NUM_ARGS() TSRMLS_CC, "sr|lb", &sql, &sql_len, &zdb, &mode, &decode_binary) &&
++ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|lb", &zdb, &sql, &sql_len, &mode, &decode_binary)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+- DB_FROM_ZVAL(db, &zdb);
+
+ PHP_SQLITE_EMPTY_QUERY;
+
+@@ -1360,10 +2498,12 @@
+ return;
+ }
+
+- rres = (struct php_sqlite_result *)emalloc(sizeof(*rres));
+- sqlite_query(db, sql, sql_len, mode, 0, NULL, rres TSRMLS_CC);
++ rres = (struct php_sqlite_result *)ecalloc(1, sizeof(*rres));
++ sqlite_query(NULL, db, sql, sql_len, (int)mode, 0, NULL, &rres, NULL TSRMLS_CC);
+ if (db->last_err_code != SQLITE_OK) {
+- /* no need to free rres, as it will be freed by sqlite_query() for us */
++ if (rres) {
++ efree(rres);
++ }
+ RETURN_FALSE;
+ }
+
+@@ -1384,13 +2524,13 @@
+ const char **rowdata;
+ char *decoded;
+ int decoded_len;
+-
++
+ /* check range of the row */
+ if (res->curr_row >= res->nrows) {
+ /* no more */
+ RETURN_FALSE;
+ }
+-
++
+ if (res->buffered) {
+ rowdata = (const char**)&res->table[res->curr_row * res->ncolumns];
+ } else {
+@@ -1399,7 +2539,7 @@
+
+ if (decode_binary && rowdata[0] != NULL && rowdata[0][0] == '\x01') {
+ decoded = emalloc(strlen(rowdata[0]));
+- decoded_len = sqlite_decode_binary(rowdata[0]+1, decoded);
++ decoded_len = php_sqlite_decode_binary(rowdata[0]+1, decoded);
+ if (!res->buffered) {
+ efree((char*)rowdata[0]);
+ rowdata[0] = NULL;
+@@ -1432,25 +2572,34 @@
+ }
+ /* }}} */
+
+-/* {{{ proto array sqlite_single_query(resource db, string query [ , bool single_row, bool decode_binary ])
+- Executes a query against a given database and returns an array */
++
++/* {{{ proto array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])
++ Executes a query and returns either an array for one single column or the value of the first row. */
+ PHP_FUNCTION(sqlite_single_query)
+ {
+ zval *zdb, *ent;
+ struct php_sqlite_db *db;
+ struct php_sqlite_result *rres;
+ char *sql;
+- long sql_len;
++ int sql_len;
+ char *errtext = NULL;
+ zend_bool decode_binary = 1;
+ zend_bool srow = 1;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
+- ZEND_NUM_ARGS() TSRMLS_CC, "sr|bb", &sql, &sql_len, &zdb, &srow, &decode_binary) &&
+- FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|bb", &zdb, &sql, &sql_len, &srow, &decode_binary)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|bb", &sql, &sql_len, &srow, &decode_binary)) {
++ return;
++ }
++ RES_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
++ ZEND_NUM_ARGS() TSRMLS_CC, "sr|bb", &sql, &sql_len, &zdb, &srow, &decode_binary) &&
++ FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|bb", &zdb, &sql, &sql_len, &srow, &decode_binary)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+- DB_FROM_ZVAL(db, &zdb);
+
+ PHP_SQLITE_EMPTY_QUERY;
+
+@@ -1465,10 +2614,12 @@
+ return;
+ }
+
+- rres = (struct php_sqlite_result *)emalloc(sizeof(*rres));
+- sqlite_query(db, sql, sql_len, PHPSQLITE_NUM, 0, NULL, rres TSRMLS_CC);
++ rres = (struct php_sqlite_result *)ecalloc(1, sizeof(*rres));
++ sqlite_query(NULL, db, sql, sql_len, PHPSQLITE_NUM, 0, NULL, &rres, NULL TSRMLS_CC);
+ if (db->last_err_code != SQLITE_OK) {
+- /* no need to free rres, as it will be freed by sqlite_query() for us */
++ if (rres) {
++ efree(rres);
++ }
+ RETURN_FALSE;
+ }
+
+@@ -1501,38 +2652,57 @@
+ /* }}} */
+
+
+-/* {{{ proto string sqlite_fetch_array(resource result [, bool decode_binary])
+- Fetches first column of a result set as a string */
++/* {{{ proto string sqlite_fetch_single(resource result [, bool decode_binary])
++ Fetches the first column of a result set as a string. */
+ PHP_FUNCTION(sqlite_fetch_single)
+ {
+ zval *zres;
+ zend_bool decode_binary = 1;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|b", &zres, &decode_binary)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &decode_binary)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|b", &zres, &decode_binary)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+
+ php_sqlite_fetch_single(res, decode_binary, return_value TSRMLS_CC);
+ }
+ /* }}} */
+
+-/* {{{ proto array sqlite_fetch_array(resource result [, int result_type, bool decode_binary])
+- Fetches the current row from a result set as an array */
++/* {{{ proto array sqlite_current(resource result [, int result_type [, bool decode_binary]])
++ Fetches the current row from a result set as an array. */
+ PHP_FUNCTION(sqlite_current)
+ {
+ zval *zres;
+- int mode = PHPSQLITE_BOTH;
++ long mode = PHPSQLITE_BOTH;
+ zend_bool decode_binary = 1;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
+- return;
+- }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+- if (ZEND_NUM_ARGS() < 2) {
+- mode = res->mode;
++ if (object) {
++ if (ZEND_NUM_ARGS() && FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|lb", &mode, &decode_binary)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ if (!ZEND_NUM_ARGS()) {
++ mode = res->mode;
++ }
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|lb", &zres, &mode, &decode_binary)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ if (ZEND_NUM_ARGS() < 2) {
++ mode = res->mode;
++ }
+ }
+
+ php_sqlite_fetch_array(res, mode, decode_binary, 0, return_value TSRMLS_CC);
+@@ -1540,92 +2710,139 @@
+ /* }}} */
+
+ /* {{{ proto mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])
+- Fetches a column from the current row of a result set */
++ Fetches a column from the current row of a result set. */
+ PHP_FUNCTION(sqlite_column)
+ {
+ zval *zres;
+ zval *which;
+ zend_bool decode_binary = 1;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|b", &zres, &which, &decode_binary)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|b", &which, &decode_binary)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|b", &zres, &which, &decode_binary)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+
+ php_sqlite_fetch_column(res, which, decode_binary, return_value TSRMLS_CC);
+ }
+ /* }}} */
+
+ /* {{{ proto string sqlite_libversion()
+- Returns the version of the linked SQLite library */
++ Returns the version of the linked SQLite library. */
+ PHP_FUNCTION(sqlite_libversion)
+ {
+- if (ZEND_NUM_ARGS() != 0) {
+- WRONG_PARAM_COUNT;
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
+ }
+ RETURN_STRING((char*)sqlite_libversion(), 1);
+ }
+ /* }}} */
+
+ /* {{{ proto string sqlite_libencoding()
+- Returns the encoding (iso8859 or UTF-8) of the linked SQLite library */
++ Returns the encoding (iso8859 or UTF-8) of the linked SQLite library. */
+ PHP_FUNCTION(sqlite_libencoding)
+ {
+- if (ZEND_NUM_ARGS() != 0) {
+- WRONG_PARAM_COUNT;
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
+ }
+ RETURN_STRING((char*)sqlite_libencoding(), 1);
+ }
+ /* }}} */
+
+ /* {{{ proto int sqlite_changes(resource db)
+- Returns the number of rows that were changed by the most recent SQL statement */
++ Returns the number of rows that were changed by the most recent SQL statement. */
+ PHP_FUNCTION(sqlite_changes)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+
+- DB_FROM_ZVAL(db, &zdb);
+-
+ RETURN_LONG(sqlite_changes(db->db));
+ }
+ /* }}} */
+
+ /* {{{ proto int sqlite_last_insert_rowid(resource db)
+- Returns the rowid of the most recently inserted row */
++ Returns the rowid of the most recently inserted row. */
+ PHP_FUNCTION(sqlite_last_insert_rowid)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+
+- DB_FROM_ZVAL(db, &zdb);
+-
+ RETURN_LONG(sqlite_last_insert_rowid(db->db));
+ }
+ /* }}} */
+
++static int sqlite_count_elements(zval *object, long *count TSRMLS_DC) /* {{{ */
++{
++ sqlite_object *obj = (sqlite_object*) zend_object_store_get_object(object TSRMLS_CC);
++
++ if (obj->u.res == NULL) {
++ zend_throw_exception(sqlite_ce_exception, "Row count is not available for this query", 0 TSRMLS_CC);
++ return FAILURE;
++ }
++
++ if (obj->u.res->buffered) {
++ * count = obj->u.res->nrows;
++ return SUCCESS;
++ } else {
++ zend_throw_exception(sqlite_ce_exception, "Row count is not available for unbuffered queries", 0 TSRMLS_CC);
++ return FAILURE;
++ }
++} /* }}} */
++
+ /* {{{ proto int sqlite_num_rows(resource result)
+- Returns the number of rows in a result set */
++ Returns the number of rows in a buffered result set. */
+ PHP_FUNCTION(sqlite_num_rows)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+-
+ if (res->buffered) {
+ RETURN_LONG(res->nrows);
+ } else {
+@@ -1635,55 +2852,106 @@
+ }
+ /* }}} */
+
+-/* {{{ proto bool sqlite_has_more(resource result)
+- Returns whether or not more rows are available */
+-PHP_FUNCTION(sqlite_has_more)
++/* {{{ proto bool sqlite_valid(resource result)
++ Returns whether more rows are available. */
++PHP_FUNCTION(sqlite_valid)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+
+- RETURN_BOOL(res->nrows && res->curr_row < res->nrows); /* curr_row may be -1 */
++ RETURN_BOOL(res->curr_row < res->nrows && res->nrows); /* curr_row may be -1 */
++}
++/* }}} */
++
++/* {{{ proto bool sqlite_has_prev(resource result)
++ * Returns whether a previous row is available. */
++PHP_FUNCTION(sqlite_has_prev)
++{
++ zval *zres;
++ struct php_sqlite_result *res;
++ zval *object = getThis();
++
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ }
++
++ if(!res->buffered) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "you cannot use sqlite_has_prev on unbuffered querys");
++ RETURN_FALSE;
++ }
++
++ RETURN_BOOL(res->curr_row);
+ }
+ /* }}} */
+
+ /* {{{ proto int sqlite_num_fields(resource result)
+- Returns the number of fields in a result set */
++ Returns the number of fields in a result set. */
+ PHP_FUNCTION(sqlite_num_fields)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+-
+ RETURN_LONG(res->ncolumns);
+ }
+ /* }}} */
+
+-/* {{{ proto string sqlite_field_name(resource result, int field)
+- Returns the name of a particular field */
++/* {{{ proto string sqlite_field_name(resource result, int field_index)
++ Returns the name of a particular field of a result set. */
+ PHP_FUNCTION(sqlite_field_name)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
+- int field;
++ long field;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zres, &field)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &field)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zres, &field)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+-
+ if (field < 0 || field >= res->ncolumns) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "field %d out of range", field);
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "field %ld out of range", field);
+ RETURN_FALSE;
+ }
+
+@@ -1692,26 +2960,33 @@
+ /* }}} */
+
+ /* {{{ proto bool sqlite_seek(resource result, int row)
+- Seek to a particular row number */
++ Seek to a particular row number of a buffered result set. */
+ PHP_FUNCTION(sqlite_seek)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
+- int row;
++ long row;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zres, &row)) {
+- return;
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &row)) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zres, &row)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+-
+ if (!res->buffered) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot seek an unbuffered result set");
+ RETURN_FALSE;
+ }
+-
++
+ if (row < 0 || row >= res->nrows) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "row %d out of range", row);
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "row %ld out of range", row);
+ RETURN_FALSE;
+ }
+
+@@ -1721,22 +2996,30 @@
+ /* }}} */
+
+ /* {{{ proto bool sqlite_rewind(resource result)
+- Seek to first row number */
++ Seek to the first row number of a buffered result set. */
+ PHP_FUNCTION(sqlite_rewind)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+
+ if (!res->buffered) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot seek an unbuffered result set");
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot rewind an unbuffered result set");
+ RETURN_FALSE;
+ }
+-
++
+ if (!res->nrows) {
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "no rows received");
+ RETURN_FALSE;
+@@ -1748,16 +3031,24 @@
+ /* }}} */
+
+ /* {{{ proto bool sqlite_next(resource result)
+- Seek to next row number */
++ Seek to the next row number of a result set. */
+ PHP_FUNCTION(sqlite_next)
+ {
+ zval *zres;
+ struct php_sqlite_result *res;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+ }
+- ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
+
+ if (!res->buffered && res->vm) {
+ php_sqlite_fetch(res TSRMLS_CC);
+@@ -1774,12 +3065,72 @@
+ }
+ /* }}} */
+
++/* {{{ proto int sqlite_key(resource result)
++ Return the current row index of a buffered result. */
++PHP_FUNCTION(sqlite_key)
++{
++ zval *zres;
++ struct php_sqlite_result *res;
++ zval *object = getThis();
++
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ }
++
++ RETURN_LONG(res->curr_row);
++}
++/* }}} */
++
++/* {{{ proto bool sqlite_prev(resource result)
++ * Seek to the previous row number of a result set. */
++PHP_FUNCTION(sqlite_prev)
++{
++ zval *zres;
++ struct php_sqlite_result *res;
++ zval *object = getThis();
++
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ RES_FROM_OBJECT(res, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zres)) {
++ return;
++ }
++ ZEND_FETCH_RESOURCE(res, struct php_sqlite_result *, &zres, -1, "sqlite result", le_sqlite_result);
++ }
++
++ if (!res->buffered) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "you cannot use sqlite_prev on unbuffered querys");
++ RETURN_FALSE;
++ }
++
++ if (res->curr_row <= 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "no previous row available");
++ RETURN_FALSE;
++ }
++
++ res->curr_row--;
++
++ RETURN_TRUE;
++}
++/* }}} */
++
+ /* {{{ proto string sqlite_escape_string(string item)
+- Escapes a string for use as a query parameter */
++ Escapes a string for use as a query parameter. */
+ PHP_FUNCTION(sqlite_escape_string)
+ {
+ char *string = NULL;
+- long stringlen;
++ int stringlen;
+ char *ret;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &string, &stringlen)) {
+@@ -1789,41 +3140,50 @@
+ if (stringlen && (string[0] == '\x01' || memchr(string, '\0', stringlen) != NULL)) {
+ /* binary string */
+ int enclen;
+-
+- ret = emalloc( 1 + 5 + stringlen * ((float) 256 / (float) 253) );
++
++ ret = safe_emalloc(1 + stringlen / 254, 257, 3);
+ ret[0] = '\x01';
+- enclen = sqlite_encode_binary((const unsigned char*)string, stringlen, ret+1);
++ enclen = php_sqlite_encode_binary(string, stringlen, ret+1);
+ RETVAL_STRINGL(ret, enclen+1, 0);
+-
+- } else {
++
++ } else if (stringlen) {
+ ret = sqlite_mprintf("%q", string);
+ if (ret) {
+ RETVAL_STRING(ret, 1);
+ sqlite_freemem(ret);
+ }
++ } else {
++ RETURN_EMPTY_STRING();
+ }
+ }
+ /* }}} */
+
+ /* {{{ proto int sqlite_last_error(resource db)
+- Returns the error code of the last error for a database */
++ Returns the error code of the last error for a database. */
+ PHP_FUNCTION(sqlite_last_error)
+ {
+ zval *zdb;
+ struct php_sqlite_db *db;
++ zval *object = getThis();
+
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
+- return;
++ if (object) {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zdb)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+
+- DB_FROM_ZVAL(db, &zdb);
+-
+ RETURN_LONG(db->last_err_code);
+ }
+ /* }}} */
+
+ /* {{{ proto string sqlite_error_string(int error_code)
+- Returns the textual description of an error code */
++ Returns the textual description of an error code. */
+ PHP_FUNCTION(sqlite_error_string)
+ {
+ long code;
+@@ -1832,7 +3192,7 @@
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code)) {
+ return;
+ }
+-
++
+ msg = sqlite_error_string(code);
+
+ if (msg) {
+@@ -1890,86 +3250,106 @@
+ MAKE_STD_ZVAL(alloc_funcs->step);
+ *(alloc_funcs->step) = *step;
+ zval_copy_ctor(alloc_funcs->step);
++ INIT_PZVAL(alloc_funcs->step);
+
+ if (is_agg) {
+ MAKE_STD_ZVAL(alloc_funcs->fini);
+ *(alloc_funcs->fini) = *fini;
+ zval_copy_ctor(alloc_funcs->fini);
++ INIT_PZVAL(alloc_funcs->fini);
+ } else {
+ alloc_funcs->fini = NULL;
+ }
+ alloc_funcs->is_valid = 1;
+ *funcs = alloc_funcs;
+-
++
+ return ret;
+ }
+
+
+ /* {{{ proto bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])
+- Registers an aggregated function for queries*/
++ Registers an aggregate function for queries. */
+ PHP_FUNCTION(sqlite_create_aggregate)
+ {
+ char *funcname = NULL;
+- long funcname_len;
++ int funcname_len;
+ zval *zstep, *zfinal, *zdb;
+ struct php_sqlite_db *db;
+ struct php_sqlite_agg_functions *funcs;
+ char *callable = NULL;
+ long num_args = -1;
+-
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rszz|l", &zdb, &funcname, &funcname_len, &zstep, &zfinal, &num_args)) {
+- return;
++ zval *object = getThis();
++
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "szz|l", &funcname, &funcname_len, &zstep, &zfinal, &num_args)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rszz|l", &zdb, &funcname, &funcname_len, &zstep, &zfinal, &num_args)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+- DB_FROM_ZVAL(db, &zdb);
+
+- if (!zend_is_callable(zstep, 0, &callable)) {
++ if (!zend_is_callable(zstep, 0, &callable TSRMLS_CC)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "step function `%s' is not callable", callable);
+ efree(callable);
+ return;
+ }
+ efree(callable);
+-
+- if (!zend_is_callable(zfinal, 0, &callable)) {
++
++ if (!zend_is_callable(zfinal, 0, &callable TSRMLS_CC)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "finalize function `%s' is not callable", callable);
+ efree(callable);
+ return;
+ }
+ efree(callable);
+
++
+ if (prep_callback_struct(db, 1, funcname, zstep, zfinal, &funcs) == DO_REG) {
+ sqlite_create_aggregate(db->db, funcname, num_args,
+ php_sqlite_agg_step_function_callback,
+ php_sqlite_agg_fini_function_callback, funcs);
+ }
+-
++
+
+ }
+ /* }}} */
+
+ /* {{{ proto bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])
+- Registers a "regular" function for queries */
++ Registers a "regular" function for queries. */
+ PHP_FUNCTION(sqlite_create_function)
+ {
+ char *funcname = NULL;
+- long funcname_len;
++ int funcname_len;
+ zval *zcall, *zdb;
+ struct php_sqlite_db *db;
+ struct php_sqlite_agg_functions *funcs;
+ char *callable = NULL;
+ long num_args = -1;
+-
+- if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsz|l", &zdb, &funcname, &funcname_len, &zcall, &num_args)) {
+- return;
++
++ zval *object = getThis();
++
++ if (object) {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &funcname, &funcname_len, &zcall, &num_args)) {
++ return;
++ }
++ DB_FROM_OBJECT(db, object);
++ } else {
++ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsz|l", &zdb, &funcname, &funcname_len, &zcall, &num_args)) {
++ return;
++ }
++ DB_FROM_ZVAL(db, &zdb);
+ }
+- DB_FROM_ZVAL(db, &zdb);
+
+- if (!zend_is_callable(zcall, 0, &callable)) {
++ if (!zend_is_callable(zcall, 0, &callable TSRMLS_CC)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "function `%s' is not callable", callable);
+ efree(callable);
+ return;
+ }
+ efree(callable);
+-
++
+ if (prep_callback_struct(db, 0, funcname, zcall, NULL, &funcs) == DO_REG) {
+ sqlite_create_function(db->db, funcname, num_args, php_sqlite_function_callback, funcs);
+ }
+@@ -1977,11 +3357,11 @@
+ /* }}} */
+
+ /* {{{ proto string sqlite_udf_encode_binary(string data)
+- Apply binary encoding (if required) to a string to return from an UDF */
++ Apply binary encoding (if required) to a string to return from an UDF. */
+ PHP_FUNCTION(sqlite_udf_encode_binary)
+ {
+ char *data = NULL;
+- long datalen;
++ int datalen;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!", &data, &datalen)) {
+ return;
+@@ -1994,10 +3374,10 @@
+ /* binary string */
+ int enclen;
+ char *ret;
+-
+- ret = emalloc( 1 + 5 + datalen * ((float) 256 / (float) 253) );
++
++ ret = safe_emalloc(1 + datalen / 254, 257, 3);
+ ret[0] = '\x01';
+- enclen = sqlite_encode_binary((const unsigned char*)data, datalen, ret+1);
++ enclen = php_sqlite_encode_binary(data, datalen, ret+1);
+ RETVAL_STRINGL(ret, enclen+1, 0);
+ } else {
+ RETVAL_STRINGL(data, datalen, 1);
+@@ -2006,11 +3386,11 @@
+ /* }}} */
+
+ /* {{{ proto string sqlite_udf_decode_binary(string data)
+- Decode binary encoding on a string parameter passed to an UDF */
++ Decode binary encoding on a string parameter passed to an UDF. */
+ PHP_FUNCTION(sqlite_udf_decode_binary)
+ {
+ char *data = NULL;
+- long datalen;
++ int datalen;
+
+ if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!", &data, &datalen)) {
+ return;
+@@ -2023,9 +3403,9 @@
+ /* encoded string */
+ int enclen;
+ char *ret;
+-
++
+ ret = emalloc(datalen);
+- enclen = sqlite_decode_binary((const unsigned char*)data+1, ret);
++ enclen = php_sqlite_decode_binary(data+1, ret);
+ ret[enclen] = '\0';
+ RETVAL_STRINGL(ret, enclen, 0);
+ } else {
+diff -dPNur sqlite-1.0.3/sqlite.dsp sqlite-svn/sqlite.dsp
+--- sqlite-1.0.3/sqlite.dsp 2004-01-17 00:33:14.000000000 +0000
++++ sqlite-svn/sqlite.dsp 2012-10-09 13:36:42.760063980 +0000
+@@ -44,7 +44,7 @@
+ # PROP Ignore_Export_Lib 0
+ # PROP Target_Dir ""
+ # ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SQLITE_EXPORTS" /YX /FD /c
+-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\php4" /I "..\..\..\php4\main" /I "..\..\..\php4\Zend" /I "..\..\..\php4\TSRM" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_SQLITE" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_SQLITE=1 /D "PHP_SQLITE_EXPORTS" /FR /YX /FD /c
++# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\win32" /I "..\..\..\php_build" /D ZEND_DEBUG=0 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_SQLITE" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_SQLITE=1 /D "PHP_SQLITE_EXPORTS" /FR /YX /FD /c
+ # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+ # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+ # ADD BASE RSC /l 0x407 /d "NDEBUG"
+@@ -54,7 +54,7 @@
+ # ADD BSC32 /nologo
+ LINK32=link.exe
+ # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+-# ADD LINK32 php4ts.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\Release_TS\php_sqlite.dll" /libpath:"..\..\..\php4\Release_TS" /libpath:"..\..\..\php4\Release_TS_Inline" /libpath:"..\..\..\php_build\release"
++# ADD LINK32 php5ts.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /out:"..\..\Release_TS\php_sqlite.dll" /libpath:"..\..\Release_TS" /libpath:"..\..\Release_TS_Inline" /libpath:"..\..\..\php_build\release"
+
+ !ELSEIF "$(CFG)" == "sqlite - Win32 Debug_TS"
+
+@@ -70,7 +70,7 @@
+ # PROP Ignore_Export_Lib 0
+ # PROP Target_Dir ""
+ # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "SQLITE_EXPORTS" /YX /FD /GZ /c
+-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\php4" /I "..\..\..\php4\main" /I "..\..\..\php4\Zend" /I "..\..\..\php4\TSRM" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_SQLITE" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_SQLITE=1 /D "PHP_SQLITE_EXPORTS" /YX /FD /GZ /c
++# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /I "..\..\main" /I "..\..\Zend" /I "..\..\TSRM" /I "..\..\win32" /I "..\..\..\php_build" /D ZEND_DEBUG=1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "COMPILE_DL_SQLITE" /D ZTS=1 /D "ZEND_WIN32" /D "PHP_WIN32" /D HAVE_SQLITE=1 /D "PHP_SQLITE_EXPORTS" /YX /FD /GZ /c
+ # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+ # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+ # ADD BASE RSC /l 0x407 /d "_DEBUG"
+@@ -80,7 +80,7 @@
+ # ADD BSC32 /nologo
+ LINK32=link.exe
+ # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+-# ADD LINK32 php4ts_debug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS\php_sqlite.dll" /pdbtype:sept /libpath:"..\..\..\php4\Debug_TS" /libpath:"..\..\..\php_build\release"
++# ADD LINK32 php5ts_debug.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /out:"..\..\Debug_TS\php_sqlite.dll" /pdbtype:sept /libpath:"..\..\Debug_TS" /libpath:"..\..\..\php_build\release"
+
+ !ENDIF
+
+@@ -314,10 +314,6 @@
+ # End Source File
+ # Begin Source File
+
+-SOURCE=.\libsqlite\src\vdbeInt.h
+-# End Source File
+-# Begin Source File
+-
+ SOURCE=.\libsqlite\src\where.c
+ # End Source File
+ # End Group
+diff -dPNur sqlite-1.0.3/sqlite.php sqlite-svn/sqlite.php
+--- sqlite-1.0.3/sqlite.php 2003-04-17 20:08:00.000000000 +0000
++++ sqlite-svn/sqlite.php 2012-10-09 13:36:42.760063980 +0000
+@@ -1,6 +1,9 @@
+ <?php
+ if (!extension_loaded("sqlite")) {
+ dl("sqlite.so");
++ if (!extension_loaded("sqlite")) {
++ exit("Please enable SQLite support\n");
++ }
+ }
+
+ debug_zval_dump(sqlite_libversion());
+diff -dPNur sqlite-1.0.3/tests/blankdb.inc sqlite-svn/tests/blankdb.inc
+--- sqlite-1.0.3/tests/blankdb.inc 2003-04-18 20:53:18.000000000 +0000
++++ sqlite-svn/tests/blankdb.inc 2012-10-09 13:36:42.740092676 +0000
+@@ -1,11 +1,3 @@
+ <?php #vim:ft=php
+-$dbname = tempnam(dirname(__FILE__), "phpsql");
+-function cleanup() {
+- if ($GLOBALS['db']) {
+- sqlite_close($GLOBALS['db']);
+- }
+- unlink($GLOBALS['dbname']);
+-}
+-register_shutdown_function("cleanup");
+-$db = sqlite_open($dbname);
++$db = sqlite_open(":memory:");
+ ?>
+diff -dPNur sqlite-1.0.3/tests/blankdb_oo.inc sqlite-svn/tests/blankdb_oo.inc
+--- sqlite-1.0.3/tests/blankdb_oo.inc 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/blankdb_oo.inc 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,3 @@
++<?php #vim:ft=php
++$db = new SQLiteDatabase(":memory:");
++?>
+diff -dPNur sqlite-1.0.3/tests/bug26911.phpt sqlite-svn/tests/bug26911.phpt
+--- sqlite-1.0.3/tests/bug26911.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/bug26911.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,12 @@
++--TEST--
++Bug #26911 (crash when fetching data from empty queries)
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++ $db = sqlite_open(":memory:");
++ $a = sqlite_query($db, " ");
++ echo "I am ok\n";
++?>
++--EXPECT--
++I am ok
+diff -dPNur sqlite-1.0.3/tests/bug28112.phpt sqlite-svn/tests/bug28112.phpt
+--- sqlite-1.0.3/tests/bug28112.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/bug28112.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,16 @@
++--TEST--
++Bug #28112 (sqlite_query() crashing apache on malformed query)
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++
++if (!($db = sqlite_open(":memory:", 666, $error))) die ("Couldn't open the database");
++sqlite_query($db, "create table frob (foo INTEGER PRIMARY KEY, bar text);");
++$res = @sqlite_array_query($db, "");
++
++?>
++===DONE===
++<?php exit(0); ?>
++--EXPECTF--
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/bug35248.phpt sqlite-svn/tests/bug35248.phpt
+--- sqlite-1.0.3/tests/bug35248.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/bug35248.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,15 @@
++--TEST--
++Bug #35248 (sqlite_query does not return parse error message)
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++ $db = sqlite_open(":memory:");
++ $res = @sqlite_query($db, "asdfesdfa", SQLITE_NUM, $err);
++ var_dump($err);
++ $res = @sqlite_unbuffered_query($db, "asdfesdfa", SQLITE_NUM, $err);
++ var_dump($err);
++?>
++--EXPECT--
++string(30) "near "asdfesdfa": syntax error"
++string(30) "near "asdfesdfa": syntax error"
+diff -dPNur sqlite-1.0.3/tests/bug38759.phpt sqlite-svn/tests/bug38759.phpt
+--- sqlite-1.0.3/tests/bug38759.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/bug38759.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,18 @@
++--TEST--
++Bug #38759 (sqlite2 empty query causes segfault)
++--SKIPIF--
++<?php
++if (!extension_loaded("pdo")) print "skip";
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++
++$dbh = new PDO('sqlite2::memory:');
++var_dump($dbh->query(" "));
++
++echo "Done\n";
++?>
++--EXPECTF--
++bool(false)
++Done
+diff -dPNur sqlite-1.0.3/tests/bug48679.phpt sqlite-svn/tests/bug48679.phpt
+--- sqlite-1.0.3/tests/bug48679.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/bug48679.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,20 @@
++--TEST--
++Bug #48679 (sqlite2 count on unbuffered query causes segfault)
++--SKIPIF--
++<?php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++
++try {
++ $x = new sqliteunbuffered;
++ count($x);
++} catch (SQLiteException $e) {
++ var_dump($e->getMessage());
++}
++echo "Done\n";
++?>
++--EXPECT--
++string(41) "Row count is not available for this query"
++Done
+diff -dPNur sqlite-1.0.3/tests/pdo/common.phpt sqlite-svn/tests/pdo/common.phpt
+--- sqlite-1.0.3/tests/pdo/common.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/pdo/common.phpt 2012-10-09 13:36:42.700706048 +0000
+@@ -0,0 +1,12 @@
++--TEST--
++SQLite2
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded('pdo') || !extension_loaded('sqlite')) print 'skip'; ?>
++--REDIRECTTEST--
++return array(
++ 'ENV' => array(
++ 'PDOTEST_DSN' => 'sqlite2::memory:'
++ ),
++ 'TESTS' => 'ext/pdo/tests'
++ );
+diff -dPNur sqlite-1.0.3/tests/sqlite_001.phpt sqlite-svn/tests/sqlite_001.phpt
+--- sqlite-1.0.3/tests/sqlite_001.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_001.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -9,7 +9,6 @@
+ require_once('blankdb.inc');
+ echo "$db\n";
+ sqlite_close($db);
+-$db = NULL;
+ echo "Done\n";
+ ?>
+ --EXPECTF--
+diff -dPNur sqlite-1.0.3/tests/sqlite_002.phpt sqlite-svn/tests/sqlite_002.phpt
+--- sqlite-1.0.3/tests/sqlite_002.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_002.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -13,6 +13,7 @@
+ sqlite_query("INSERT INTO foo VALUES ('2002-01-02', '12:49:00', NULL)", $db);
+ $r = sqlite_query("SELECT * from foo", $db);
+ var_dump(sqlite_fetch_array($r));
++sqlite_close($db);
+ ?>
+ --EXPECT--
+ array(6) {
+diff -dPNur sqlite-1.0.3/tests/sqlite_003.phpt sqlite-svn/tests/sqlite_003.phpt
+--- sqlite-1.0.3/tests/sqlite_003.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_003.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -17,6 +17,7 @@
+ var_dump(sqlite_fetch_array($r, SQLITE_NUM));
+ $r = sqlite_query("SELECT * from foo", $db);
+ var_dump(sqlite_fetch_array($r, SQLITE_ASSOC));
++sqlite_close($db);
+ ?>
+ --EXPECT--
+ array(6) {
+diff -dPNur sqlite-1.0.3/tests/sqlite_004.phpt sqlite-svn/tests/sqlite_004.phpt
+--- sqlite-1.0.3/tests/sqlite_004.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_004.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -35,6 +35,9 @@
+ }
+ $i++;
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_005.phpt sqlite-svn/tests/sqlite_005.phpt
+--- sqlite-1.0.3/tests/sqlite_005.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_005.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -37,6 +37,9 @@
+ while ($row = sqlite_fetch_array($r, SQLITE_NUM)) {
+ var_dump($row);
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_006.phpt sqlite-svn/tests/sqlite_006.phpt
+--- sqlite-1.0.3/tests/sqlite_006.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_006.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -34,6 +34,9 @@
+ while ($row = sqlite_fetch_array($r, SQLITE_NUM)) {
+ var_dump($row);
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_007.phpt sqlite-svn/tests/sqlite_007.phpt
+--- sqlite-1.0.3/tests/sqlite_007.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_007.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -17,6 +17,7 @@
+ var_dump(sqlite_fetch_array($r, SQLITE_NUM));
+ $r = sqlite_unbuffered_query("SELECT * from foo", $db);
+ var_dump(sqlite_fetch_array($r, SQLITE_ASSOC));
++sqlite_close($db);
+ ?>
+ --EXPECT--
+ array(6) {
+diff -dPNur sqlite-1.0.3/tests/sqlite_008.phpt sqlite-svn/tests/sqlite_008.phpt
+--- sqlite-1.0.3/tests/sqlite_008.phpt 2003-05-02 22:09:54.000000000 +0000
++++ sqlite-svn/tests/sqlite_008.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -25,6 +25,9 @@
+ while ($row = sqlite_fetch_array($r, SQLITE_NUM)) {
+ var_dump($row);
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_009.phpt sqlite-svn/tests/sqlite_009.phpt
+--- sqlite-1.0.3/tests/sqlite_009.phpt 2003-05-01 13:29:11.000000000 +0000
++++ sqlite-svn/tests/sqlite_009.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -25,6 +25,9 @@
+ while ($row = sqlite_fetch_array($r, SQLITE_NUM)) {
+ var_dump($row);
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_010.phpt sqlite-svn/tests/sqlite_010.phpt
+--- sqlite-1.0.3/tests/sqlite_010.phpt 2003-05-02 22:09:54.000000000 +0000
++++ sqlite-svn/tests/sqlite_010.phpt 2012-10-09 13:36:42.721252390 +0000
+@@ -22,20 +22,23 @@
+ }
+
+ $r = sqlite_unbuffered_query("SELECT a from strings", $db);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_current($r, SQLITE_NUM));
+ sqlite_next($r);
+ }
+ $r = sqlite_query("SELECT a from strings", $db);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_current($r, SQLITE_NUM));
+ sqlite_next($r);
+ }
+ sqlite_rewind($r);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_current($r, SQLITE_NUM));
+ sqlite_next($r);
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_011.phpt sqlite-svn/tests/sqlite_011.phpt
+--- sqlite-1.0.3/tests/sqlite_011.phpt 2003-12-14 18:47:14.000000000 +0000
++++ sqlite-svn/tests/sqlite_011.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -15,6 +15,7 @@
+ sqlite_query("INSERT INTO bar VALUES ('4', '5', '6')", $db);
+ $r = sqlite_query("SELECT * from foo, bar", $db, SQLITE_ASSOC);
+ var_dump(sqlite_fetch_array($r));
++sqlite_close($db);
+ ?>
+ --EXPECT--
+ array(6) {
+diff -dPNur sqlite-1.0.3/tests/sqlite_012.phpt sqlite-svn/tests/sqlite_012.phpt
+--- sqlite-1.0.3/tests/sqlite_012.phpt 2003-05-02 22:09:54.000000000 +0000
++++ sqlite-svn/tests/sqlite_012.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -21,6 +21,9 @@
+ for($i=0; $i<sqlite_num_fields($r); $i++) {
+ var_dump(sqlite_field_name($r, $i));
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_013.phpt sqlite-svn/tests/sqlite_013.phpt
+--- sqlite-1.0.3/tests/sqlite_013.phpt 2003-06-09 23:16:32.000000000 +0000
++++ sqlite-svn/tests/sqlite_013.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -22,7 +22,7 @@
+
+ echo "====BUFFERED====\n";
+ $r = sqlite_query("SELECT a, b from strings", $db);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_current($r, SQLITE_NUM));
+ var_dump(sqlite_column($r, 0));
+ var_dump(sqlite_column($r, 1));
+@@ -32,13 +32,16 @@
+ }
+ echo "====UNBUFFERED====\n";
+ $r = sqlite_unbuffered_query("SELECT a, b from strings", $db);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_column($r, 0));
+ var_dump(sqlite_column($r, 'b'));
+ var_dump(sqlite_column($r, 1));
+ var_dump(sqlite_column($r, 'a'));
+ sqlite_next($r);
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_014.phpt sqlite-svn/tests/sqlite_014.phpt
+--- sqlite-1.0.3/tests/sqlite_014.phpt 2003-06-09 23:21:06.000000000 +0000
++++ sqlite-svn/tests/sqlite_014.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -37,6 +37,8 @@
+ var_dump(sqlite_fetch_array($r));
+ var_dump(sqlite_fetch_all($r));
+
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECTF--
+@@ -59,7 +61,7 @@
+ }
+ }
+
+-Notice: sqlite_fetch_all(): One or more rowsets were already returned in %ssqlite_014.php on line %d
++Warning: sqlite_fetch_all(): One or more rowsets were already returned; returning NULL this time in %ssqlite_014.php on line %d
+ array(0) {
+ }
+ unbuffered with fetch_array
+diff -dPNur sqlite-1.0.3/tests/sqlite_015.phpt sqlite-svn/tests/sqlite_015.phpt
+--- sqlite-1.0.3/tests/sqlite_015.phpt 2003-06-09 23:22:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_015.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -24,6 +24,8 @@
+ $res = sqlite_array_query("SELECT a from strings", $db, SQLITE_NUM);
+ var_dump($res);
+
++$db = null;
++
+ echo "DONE!\n";
+ ?>
+ --EXPECTF--
+diff -dPNur sqlite-1.0.3/tests/sqlite_016.phpt sqlite-svn/tests/sqlite_016.phpt
+--- sqlite-1.0.3/tests/sqlite_016.phpt 2003-06-26 21:32:37.000000000 +0000
++++ sqlite-svn/tests/sqlite_016.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -22,14 +22,17 @@
+
+ echo "====BUFFERED====\n";
+ $r = sqlite_query("SELECT a, b from strings", $db);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_fetch_single($r));
+ }
+ echo "====UNBUFFERED====\n";
+ $r = sqlite_unbuffered_query("SELECT a, b from strings", $db);
+-while (sqlite_has_more($r)) {
++while (sqlite_valid($r)) {
+ var_dump(sqlite_fetch_single($r));
+ }
++
++sqlite_close($db);
++
+ echo "DONE!\n";
+ ?>
+ --EXPECT--
+diff -dPNur sqlite-1.0.3/tests/sqlite_018.phpt sqlite-svn/tests/sqlite_018.phpt
+--- sqlite-1.0.3/tests/sqlite_018.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_018.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,14 @@
++--TEST--
++sqlite: crash on bad queries inside sqlite_array_query()
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++sqlite_array_query($db, "SELECT foo FROM foobar");
++sqlite_close($db);
++?>
++--EXPECTF--
++Warning: sqlite_array_query(): no such table: foobar in %s on line %d
+diff -dPNur sqlite-1.0.3/tests/sqlite_019.phpt sqlite-svn/tests/sqlite_019.phpt
+--- sqlite-1.0.3/tests/sqlite_019.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_019.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,47 @@
++--TEST--
++sqlite: single query
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++sqlite_query($db, "CREATE TABLE test_db ( id INTEGER PRIMARY KEY, data VARCHAR(100) )");
++for ($i = 0; $i < 10; $i++) {
++ sqlite_query($db, "INSERT INTO test_db (data) VALUES('{$i}data')");
++}
++sqlite_query($db, "INSERT INTO test_db (data) VALUES(NULL)");
++
++var_dump(sqlite_single_query($db, "SELECT id FROM test_db WHERE id=5"));
++var_dump(sqlite_single_query($db, "SELECT * FROM test_db WHERE id=4"));
++var_dump(sqlite_single_query($db, "SELECT data FROM test_db WHERE id=6"));
++var_dump(sqlite_single_query($db, "SELECT * FROM test_db WHERE id < 5"));
++var_dump(sqlite_single_query($db, "SELECT * FROM test db WHERE id < 4"));
++var_dump(sqlite_single_query($db, "SELECT * FROM test_db WHERE id=999999"));
++var_dump(sqlite_single_query($db, "SELECT id FROM test_db WHERE id=5", FALSE));
++
++sqlite_close($db);
++?>
++--EXPECTF--
++string(1) "5"
++string(1) "4"
++string(5) "5data"
++array(4) {
++ [0]=>
++ string(1) "1"
++ [1]=>
++ string(1) "2"
++ [2]=>
++ string(1) "3"
++ [3]=>
++ string(1) "4"
++}
++
++Warning: sqlite_single_query(): no such table: test in %s on line %d
++bool(false)
++NULL
++array(1) {
++ [0]=>
++ string(1) "5"
++}
+diff -dPNur sqlite-1.0.3/tests/sqlite_022.phpt sqlite-svn/tests/sqlite_022.phpt
+--- sqlite-1.0.3/tests/sqlite_022.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_022.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,101 @@
++--TEST--
++sqlite: sqlite_seek
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++sqlite_query("CREATE TABLE strings(a)", $db);
++
++foreach ($data as $str) {
++ sqlite_query("INSERT INTO strings VALUES('$str')", $db);
++}
++
++$res = sqlite_query("SELECT a FROM strings", $db, SQLITE_NUM);
++for ($idx = -1; $idx < 4; $idx++) {
++ echo "====SEEK:$idx====\n";
++ sqlite_seek($res, $idx);
++ var_dump(sqlite_current($res));
++}
++echo "====AGAIN====\n";
++for ($idx = -1; $idx < 4; $idx++) {
++ echo "====SEEK:$idx====\n";
++ sqlite_seek($res, $idx);
++ var_dump(sqlite_current($res));
++}
++
++sqlite_close($db);
++
++echo "====DONE!====\n";
++?>
++--EXPECTF--
++====SEEK:-1====
++
++Warning: sqlite_seek(): row -1 out of range in %ssqlite_022.php on line %d
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====SEEK:0====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====SEEK:1====
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++====SEEK:2====
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====SEEK:3====
++
++Warning: sqlite_seek(): row 3 out of range in %ssqlite_022.php on line %d
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====AGAIN====
++====SEEK:-1====
++
++Warning: sqlite_seek(): row -1 out of range in %ssqlite_022.php on line %d
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====SEEK:0====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====SEEK:1====
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++====SEEK:2====
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====SEEK:3====
++
++Warning: sqlite_seek(): row 3 out of range in %ssqlite_022.php on line %d
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====DONE!====
+diff -dPNur sqlite-1.0.3/tests/sqlite_023.phpt sqlite-svn/tests/sqlite_023.phpt
+--- sqlite-1.0.3/tests/sqlite_023.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_023.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,105 @@
++--TEST--
++sqlite: sqlite_[has_]prev
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++sqlite_query("CREATE TABLE strings(a)", $db);
++
++foreach ($data as $str) {
++ sqlite_query("INSERT INTO strings VALUES('$str')", $db);
++}
++
++$r = sqlite_query("SELECT a FROM strings", $db, SQLITE_NUM);
++
++echo "====TRAVERSE====\n";
++for(sqlite_rewind($r); sqlite_valid($r); sqlite_next($r)) {
++ var_dump(sqlite_current($r));
++
++}
++echo "====REVERSE====\n";
++do {
++ sqlite_prev($r);
++ var_dump(sqlite_current($r));
++} while(sqlite_has_prev($r));
++
++echo "====UNBUFFERED====\n";
++
++$r = sqlite_unbuffered_query("SELECT a FROM strings", $db, SQLITE_NUM);
++
++echo "====TRAVERSE====\n";
++for(sqlite_rewind($r); sqlite_valid($r); sqlite_next($r)) {
++ var_dump(sqlite_current($r));
++
++}
++echo "====REVERSE====\n";
++do {
++ sqlite_prev($r);
++ var_dump(sqlite_current($r));
++} while(sqlite_has_prev($r));
++
++sqlite_close($db);
++
++echo "====DONE!====\n";
++?>
++--EXPECTF--
++====TRAVERSE====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====REVERSE====
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====UNBUFFERED====
++====TRAVERSE====
++
++Warning: sqlite_rewind(): Cannot rewind an unbuffered result set in %ssqlite_023.php on line %d
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====REVERSE====
++
++Warning: sqlite_prev(): you cannot use sqlite_prev on unbuffered querys in %ssqlite_023.php on line %d
++bool(false)
++
++Warning: sqlite_has_prev(): you cannot use sqlite_has_prev on unbuffered querys in %ssqlite_023.php on line %d
++====DONE!====
+diff -dPNur sqlite-1.0.3/tests/sqlite_024.phpt sqlite-svn/tests/sqlite_024.phpt
+--- sqlite-1.0.3/tests/sqlite_024.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_024.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,76 @@
++--TEST--
++sqlite: sqlite_fetch_object
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++class class24 {
++ function __construct() {
++ echo __METHOD__ . "\n";
++ }
++}
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++sqlite_query($db, "CREATE TABLE strings(a)");
++
++foreach ($data as $str) {
++ sqlite_query($db, "INSERT INTO strings VALUES('$str')");
++}
++
++echo "====class24====\n";
++$res = sqlite_query($db, "SELECT a FROM strings", SQLITE_ASSOC);
++while (sqlite_valid($res)) {
++ var_dump(sqlite_fetch_object($res, 'class24'));
++}
++
++echo "====stdclass====\n";
++$res = sqlite_query($db, "SELECT a FROM strings", SQLITE_ASSOC);
++while (sqlite_valid($res)) {
++ var_dump(sqlite_fetch_object($res));
++}
++
++sqlite_close($db);
++
++echo "====DONE!====\n";
++?>
++--EXPECTF--
++====class24====
++class24::__construct
++object(class24)#%d (1) {
++ ["a"]=>
++ string(3) "one"
++}
++class24::__construct
++object(class24)#%d (1) {
++ ["a"]=>
++ string(3) "two"
++}
++class24::__construct
++object(class24)#%d (1) {
++ ["a"]=>
++ string(5) "three"
++}
++====stdclass====
++object(stdClass)#%d (1) {
++ ["a"]=>
++ string(3) "one"
++}
++object(stdClass)#%d (1) {
++ ["a"]=>
++ string(3) "two"
++}
++object(stdClass)#%d (1) {
++ ["a"]=>
++ string(5) "three"
++}
++====DONE!====
+diff -dPNur sqlite-1.0.3/tests/sqlite_025.phpt sqlite-svn/tests/sqlite_025.phpt
+--- sqlite-1.0.3/tests/sqlite_025.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_025.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,38 @@
++--TEST--
++sqlite: sqlite_fetch_object in a loop
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++sqlite_query($db, "CREATE TABLE strings(a)");
++
++foreach (array("one", "two", "three") as $str) {
++ sqlite_query($db, "INSERT INTO strings VALUES('$str')");
++}
++
++$res = sqlite_query("SELECT * FROM strings", $db);
++
++while (($obj = sqlite_fetch_object($res))) {
++ var_dump($obj);
++}
++
++sqlite_close($db);
++?>
++--EXPECTF--
++object(stdClass)#1 (1) {
++ ["a"]=>
++ string(3) "one"
++}
++object(stdClass)#2 (1) {
++ ["a"]=>
++ string(3) "two"
++}
++object(stdClass)#1 (1) {
++ ["a"]=>
++ string(5) "three"
++}
+\ No newline at end of file
+diff -dPNur sqlite-1.0.3/tests/sqlite_026.phpt sqlite-svn/tests/sqlite_026.phpt
+--- sqlite-1.0.3/tests/sqlite_026.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_026.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,27 @@
++--TEST--
++sqlite: sqlite_fetch_column_types
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++sqlite_query($db, "CREATE TABLE strings(a, b INTEGER, c VARCHAR(10), d)");
++sqlite_query($db, "INSERT INTO strings VALUES('1', '2', '3', 'abc')");
++
++var_dump(sqlite_fetch_column_types($db, "strings"));
++
++sqlite_close($db);
++?>
++--EXPECT--
++array(4) {
++ ["a"]=>
++ string(0) ""
++ ["b"]=>
++ string(7) "INTEGER"
++ ["c"]=>
++ string(11) "VARCHAR(10)"
++ ["d"]=>
++ string(0) ""
++}
+diff -dPNur sqlite-1.0.3/tests/sqlite_027.phpt sqlite-svn/tests/sqlite_027.phpt
+--- sqlite-1.0.3/tests/sqlite_027.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_027.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,15 @@
++--TEST--
++sqlite: crash inside sqlite_escape_string() & sqlite_udf_encode_binary
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--INI--
++memory_limit=-1
++--FILE--
++<?php
++ var_dump(strlen(sqlite_escape_string(str_repeat("\0", 20000000))));
++ var_dump(strlen(sqlite_udf_encode_binary(str_repeat("\0", 20000000))));
++?>
++--EXPECT--
++int(20000002)
++int(20000002)
+diff -dPNur sqlite-1.0.3/tests/sqlite_closures_001.phpt sqlite-svn/tests/sqlite_closures_001.phpt
+--- sqlite-1.0.3/tests/sqlite_closures_001.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_closures_001.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,54 @@
++--TEST--
++sqlite: aggregate functions with closures
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++sqlite_query("CREATE TABLE strings(a)", $db);
++
++foreach ($data as $str) {
++ sqlite_query("INSERT INTO strings VALUES('" . sqlite_escape_string($str) . "')", $db);
++}
++
++function cat_step(&$context, $string)
++{
++ $context .= $string;
++}
++
++function cat_fin(&$context)
++{
++ return $context;
++}
++
++sqlite_create_aggregate($db, "cat", function (&$context, $string) {
++ $context .= $string;
++}, function (&$context) {
++ return $context;
++});
++
++$r = sqlite_query("SELECT cat(a) from strings", $db);
++while ($row = sqlite_fetch_array($r, SQLITE_NUM)) {
++ var_dump($row);
++}
++
++sqlite_close($db);
++
++echo "DONE!\n";
++?>
++--EXPECT--
++array(1) {
++ [0]=>
++ string(11) "onetwothree"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_closures_002.phpt sqlite-svn/tests/sqlite_closures_002.phpt
+--- sqlite-1.0.3/tests/sqlite_closures_002.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_closures_002.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,52 @@
++--TEST--
++sqlite: regular functions with closures
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb.inc";
++
++$data = array(
++ array("one", "uno"),
++ array("two", "dos"),
++ array("three", "tres"),
++ );
++
++sqlite_query("CREATE TABLE strings(a,b)", $db);
++
++foreach ($data as $row) {
++ sqlite_query("INSERT INTO strings VALUES('" . sqlite_escape_string($row[0]) . "','" . sqlite_escape_string($row[1]) . "')", $db);
++}
++
++sqlite_create_function($db, "implode", function () {
++ $args = func_get_args();
++ $sep = array_shift($args);
++ return implode($sep, $args);
++});
++
++$r = sqlite_query("SELECT implode('-', a, b) from strings", $db);
++while ($row = sqlite_fetch_array($r, SQLITE_NUM)) {
++ var_dump($row);
++}
++
++sqlite_close($db);
++
++echo "DONE!\n";
++?>
++--EXPECT--
++array(1) {
++ [0]=>
++ string(7) "one-uno"
++}
++array(1) {
++ [0]=>
++ string(7) "two-dos"
++}
++array(1) {
++ [0]=>
++ string(10) "three-tres"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_exec_basic.phpt sqlite-svn/tests/sqlite_exec_basic.phpt
+--- sqlite-1.0.3/tests/sqlite_exec_basic.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_exec_basic.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,34 @@
++--TEST--
++Test sqlite_exec() function : basic functionality
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
++--FILE--
++<?php
++/* Prototype : boolean sqlite_exec(string query, resource db[, string &error_message])
++ * Description: Executes a result-less query against a given database
++ * Source code: ext/sqlite/sqlite.c
++ * Alias to functions:
++ */
++
++echo "*** Testing sqlite_exec() : basic functionality ***\n";
++
++// set up variables
++$query = 'CREATE TABLE foobar (id INTEGER PRIMARY KEY, name CHAR(255));';
++$error_message = null;
++
++// procedural
++$db = sqlite_open(':memory:');
++var_dump( sqlite_exec($db, $query) );
++sqlite_close($db);
++
++// oo-style
++$db = new SQLiteDatabase(':memory:');
++var_dump( $db->queryExec($query, $error_message) );
++
++?>
++===DONE===
++--EXPECTF--
++*** Testing sqlite_exec() : basic functionality ***
++bool(true)
++bool(true)
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_exec_error.phpt sqlite-svn/tests/sqlite_exec_error.phpt
+--- sqlite-1.0.3/tests/sqlite_exec_error.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_exec_error.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,44 @@
++--TEST--
++Test sqlite_exec() function : error behaviour and functionality
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
++--FILE--
++<?php
++/* Prototype : boolean sqlite_exec(string query, resource db[, string &error_message])
++ * Description: Executes a result-less query against a given database
++ * Source code: ext/sqlite/sqlite.c
++ * Alias to functions:
++ */
++
++echo "*** Testing sqlite_exec() : error functionality ***\n";
++
++// set up variables
++$fail = 'CRE ATE TABLE';
++$error_message = null;
++
++// procedural
++$db = sqlite_open(':memory:');
++var_dump( sqlite_exec($db, $fail, $error_message) );
++var_dump( $error_message );
++var_dump( sqlite_exec($db) );
++sqlite_close($db);
++
++// oo-style
++$db = new SQLiteDatabase(':memory:');
++var_dump( $db->queryExec($fail, $error_message, 'fooparam') );
++
++?>
++===DONE===
++--EXPECTF--
++*** Testing sqlite_exec() : error functionality ***
++
++Warning: sqlite_exec(): near "CRE": syntax error in %s on line %d
++bool(false)
++%string|unicode%(24) "near "CRE": syntax error"
++
++Warning: sqlite_exec() expects at least 2 parameters, 1 given in %s on line %d
++NULL
++
++Warning: SQLiteDatabase::queryExec() expects at most 2 parameters, 3 given in %s on line %d
++NULL
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_last_error_basic.phpt sqlite-svn/tests/sqlite_last_error_basic.phpt
+--- sqlite-1.0.3/tests/sqlite_last_error_basic.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_last_error_basic.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,48 @@
++--TEST--
++Test sqlite_last_error() function : basic functionality
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
++--FILE--
++<?php
++/* Prototype : int sqlite_last_error(resource db)
++ * Description: Returns the error code of the last error for a database.
++ * Source code: ext/sqlite/sqlite.c
++ * Alias to functions:
++ */
++
++echo "*** Testing sqlite_last_error() : basic functionality ***\n";
++
++// set up variables
++$query = 'CREATE TAB LE foobar (id INTEGER PRIMARY KEY, name CHAR(255));';
++$query_ok = 'CREATE TABLE foobar (id INTEGER, name CHAR(255));';
++
++// procedural
++$db = sqlite_open(':memory:');
++var_dump( sqlite_last_error($db) === SQLITE_OK );
++sqlite_exec($db, $query);
++var_dump( sqlite_last_error($db) === SQLITE_ERROR );
++sqlite_exec($db, $query_ok);
++var_dump( sqlite_last_error($db) === SQLITE_OK );
++sqlite_close($db);
++
++// oo-style
++$db = new SQLiteDatabase(':memory:');
++$db->queryExec($query);
++var_dump( $db->lastError() === SQLITE_ERROR );
++$db->queryExec($query_ok);
++var_dump( $db->lastError() === SQLITE_OK );
++
++?>
++===DONE===
++--EXPECTF--
++*** Testing sqlite_last_error() : basic functionality ***
++bool(true)
++
++Warning: sqlite_exec(): near "TAB": syntax error in %s on line %d
++bool(true)
++bool(true)
++
++Warning: SQLiteDatabase::queryExec(): near "TAB": syntax error in %s on line %d
++bool(true)
++bool(true)
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_last_error_error.phpt sqlite-svn/tests/sqlite_last_error_error.phpt
+--- sqlite-1.0.3/tests/sqlite_last_error_error.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_last_error_error.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,47 @@
++--TEST--
++Test sqlite_last_error() function : error conditions
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
++--FILE--
++<?php
++/* Prototype : int sqlite_last_error(resource db)
++ * Description: Returns the error code of the last error for a database.
++ * Source code: ext/sqlite/sqlite.c
++ * Alias to functions:
++ */
++
++echo "*** Testing sqlite_last_error() : error conditions ***\n";
++
++// Zero arguments
++echo "\n-- Testing sqlite_last_error() function with Zero arguments --\n";
++var_dump( sqlite_last_error() );
++
++//Test sqlite_last_error with one more than the expected number of arguments
++echo "\n-- Testing sqlite_last_error() function with more than expected no. of arguments --\n";
++
++$db = sqlite_open(':memory:');
++$extra_arg = 10;
++var_dump( sqlite_last_error($db, $extra_arg) );
++sqlite_close($db);
++
++$db = new SQLiteDatabase(':memory:');
++var_dump( $db->lastError($extra_arg) );
++
++?>
++===DONE===
++--EXPECTF--
++*** Testing sqlite_last_error() : error conditions ***
++
++-- Testing sqlite_last_error() function with Zero arguments --
++
++Warning: sqlite_last_error() expects exactly 1 parameter, 0 given in %s on line %d
++NULL
++
++-- Testing sqlite_last_error() function with more than expected no. of arguments --
++
++Warning: sqlite_last_error() expects exactly 1 parameter, 2 given in %s on line %d
++NULL
++
++Warning: SQLiteDatabase::lastError() expects exactly 0 parameters, 1 given in %s on line %d
++NULL
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_001.phpt sqlite-svn/tests/sqlite_oo_001.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_001.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_001.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,17 @@
++--TEST--
++sqlite-oo: sqlite_open/close
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++require_once('blankdb_oo.inc');
++var_dump($db);
++$db = NULL;
++echo "Done\n";
++?>
++--EXPECTF--
++object(SQLiteDatabase)#%d (0) {
++}
++Done
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_002.phpt sqlite-svn/tests/sqlite_oo_002.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_002.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_002.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,41 @@
++--TEST--
++sqlite-oo: Simple insert/select
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++require_once('blankdb_oo.inc');
++var_dump($db);
++
++var_dump($db->query("CREATE TABLE foo(c1 date, c2 time, c3 varchar(64))"));
++var_dump($db->query("INSERT INTO foo VALUES ('2002-01-02', '12:49:00', NULL)"));
++$r = $db->query("SELECT * from foo");
++var_dump($r);
++var_dump($r->fetch());
++?>
++--EXPECTF--
++object(SQLiteDatabase)#%d (0) {
++}
++object(SQLiteResult)#%d (0) {
++}
++object(SQLiteResult)#%d (0) {
++}
++object(SQLiteResult)#%d (0) {
++}
++array(6) {
++ [0]=>
++ string(10) "2002-01-02"
++ ["c1"]=>
++ string(10) "2002-01-02"
++ [1]=>
++ string(8) "12:49:00"
++ ["c2"]=>
++ string(8) "12:49:00"
++ [2]=>
++ NULL
++ ["c3"]=>
++ NULL
++}
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_003.phpt sqlite-svn/tests/sqlite_oo_003.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_003.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_003.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,51 @@
++--TEST--
++sqlite-oo: Simple insert/select, different result representation
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE foo(c1 date, c2 time, c3 varchar(64))");
++$db->query("INSERT INTO foo VALUES ('2002-01-02', '12:49:00', NULL)");
++$r = $db->query("SELECT * from foo");
++var_dump($r->fetch(SQLITE_BOTH));
++$r = $db->query("SELECT * from foo");
++var_dump($r->fetch(SQLITE_NUM));
++$r = $db->query("SELECT * from foo");
++var_dump($r->fetch(SQLITE_ASSOC));
++?>
++--EXPECT--
++array(6) {
++ [0]=>
++ string(10) "2002-01-02"
++ ["c1"]=>
++ string(10) "2002-01-02"
++ [1]=>
++ string(8) "12:49:00"
++ ["c2"]=>
++ string(8) "12:49:00"
++ [2]=>
++ NULL
++ ["c3"]=>
++ NULL
++}
++array(3) {
++ [0]=>
++ string(10) "2002-01-02"
++ [1]=>
++ string(8) "12:49:00"
++ [2]=>
++ NULL
++}
++array(3) {
++ ["c1"]=>
++ string(10) "2002-01-02"
++ ["c2"]=>
++ string(8) "12:49:00"
++ ["c3"]=>
++ NULL
++}
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_008.phpt sqlite-svn/tests/sqlite_oo_008.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_008.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_008.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,43 @@
++--TEST--
++sqlite-oo: fetch all (buffered)
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++$r = $db->query("SELECT a from strings");
++while ($row = $r->fetch(SQLITE_NUM)) {
++ var_dump($row);
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_009.phpt sqlite-svn/tests/sqlite_oo_009.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_009.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_009.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,43 @@
++--TEST--
++sqlite-oo: fetch all (unbuffered)
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++$r = $db->unbufferedQuery("SELECT a from strings");
++while ($row = $r->fetch(SQLITE_NUM)) {
++ var_dump($row);
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_010.phpt sqlite-svn/tests/sqlite_oo_010.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_010.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_010.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,44 @@
++--TEST--
++sqlite-oo: fetch all (iterator)
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++$r = $db->unbufferedQuery("SELECT a from strings", SQLITE_NUM);
++while ($row = $r->valid()) {
++ var_dump($r->current());
++ $r->next();
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_011.phpt sqlite-svn/tests/sqlite_oo_011.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_011.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_011.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,33 @@
++--TEST--
++sqlite-oo: returned associative column names
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE foo (c1 char, c2 char, c3 char)");
++$db->query("CREATE TABLE bar (c1 char, c2 char, c3 char)");
++$db->query("INSERT INTO foo VALUES ('1', '2', '3')");
++$db->query("INSERT INTO bar VALUES ('4', '5', '6')");
++$r = $db->query("SELECT * from foo, bar", SQLITE_ASSOC);
++var_dump($r->fetch());
++?>
++--EXPECT--
++array(6) {
++ ["foo.c1"]=>
++ string(1) "1"
++ ["foo.c2"]=>
++ string(1) "2"
++ ["foo.c3"]=>
++ string(1) "3"
++ ["bar.c1"]=>
++ string(1) "4"
++ ["bar.c2"]=>
++ string(1) "5"
++ ["bar.c3"]=>
++ string(1) "6"
++}
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_012.phpt sqlite-svn/tests/sqlite_oo_012.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_012.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_012.phpt 2012-10-09 13:36:42.721252390 +0000
+@@ -0,0 +1,35 @@
++--TEST--
++sqlite-oo: read field names
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE strings(foo VARCHAR, bar VARCHAR, baz VARCHAR)");
++
++echo "Buffered\n";
++$r = $db->query("SELECT * from strings");
++for($i=0; $i<$r->numFields(); $i++) {
++ var_dump($r->fieldName($i));
++}
++echo "Unbuffered\n";
++$r = $db->unbufferedQuery("SELECT * from strings");
++for($i=0; $i<$r->numFields(); $i++) {
++ var_dump($r->fieldName($i));
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++Buffered
++string(3) "foo"
++string(3) "bar"
++string(3) "baz"
++Unbuffered
++string(3) "foo"
++string(3) "bar"
++string(3) "baz"
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_013.phpt sqlite-svn/tests/sqlite_oo_013.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_013.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_013.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,75 @@
++--TEST--
++sqlite-oo: fetch column
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ array (0 => 'one', 1 => 'two'),
++ array (0 => 'three', 1 => 'four')
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR, b VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('${str[0]}','${str[1]}')");
++}
++
++echo "====BUFFERED====\n";
++$r = $db->query("SELECT a, b from strings");
++while ($r->valid()) {
++ var_dump($r->current(SQLITE_NUM));
++ var_dump($r->column(0));
++ var_dump($r->column(1));
++ var_dump($r->column('a'));
++ var_dump($r->column('b'));
++ $r->next();
++}
++echo "====UNBUFFERED====\n";
++$r = $db->unbufferedQuery("SELECT a, b from strings");
++while ($r->valid()) {
++ var_dump($r->column(0));
++ var_dump($r->column('b'));
++ var_dump($r->column(1));
++ var_dump($r->column('a'));
++ $r->next();
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++====BUFFERED====
++array(2) {
++ [0]=>
++ string(3) "one"
++ [1]=>
++ string(3) "two"
++}
++string(3) "one"
++string(3) "two"
++string(3) "one"
++string(3) "two"
++array(2) {
++ [0]=>
++ string(5) "three"
++ [1]=>
++ string(4) "four"
++}
++string(5) "three"
++string(4) "four"
++string(5) "three"
++string(4) "four"
++====UNBUFFERED====
++string(3) "one"
++string(3) "two"
++NULL
++NULL
++string(5) "three"
++string(4) "four"
++NULL
++NULL
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_014.phpt sqlite-svn/tests/sqlite_oo_014.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_014.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_014.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,118 @@
++--TEST--
++sqlite-oo: fetch all
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++echo "unbuffered twice\n";
++$r = $db->unbufferedQuery("SELECT a from strings", SQLITE_NUM);
++var_dump($r->fetchAll());
++var_dump($r->fetchAll());
++
++echo "unbuffered with fetch_array\n";
++$r = $db->unbufferedQuery("SELECT a from strings", SQLITE_NUM);
++var_dump($r->fetch());
++var_dump($r->fetchAll());
++
++echo "buffered\n";
++$r = $db->query("SELECT a from strings", SQLITE_NUM);
++var_dump($r->fetchAll());
++var_dump($r->fetch());
++var_dump($r->fetchAll());
++
++echo "DONE!\n";
++?>
++--EXPECTF--
++unbuffered twice
++array(3) {
++ [0]=>
++ array(1) {
++ [0]=>
++ string(3) "one"
++ }
++ [1]=>
++ array(1) {
++ [0]=>
++ string(3) "two"
++ }
++ [2]=>
++ array(1) {
++ [0]=>
++ string(5) "three"
++ }
++}
++
++Warning: SQLiteUnbuffered::fetchAll(): One or more rowsets were already returned; returning NULL this time in %ssqlite_oo_014.php on line %d
++array(0) {
++}
++unbuffered with fetch_array
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(2) {
++ [0]=>
++ array(1) {
++ [0]=>
++ string(3) "two"
++ }
++ [1]=>
++ array(1) {
++ [0]=>
++ string(5) "three"
++ }
++}
++buffered
++array(3) {
++ [0]=>
++ array(1) {
++ [0]=>
++ string(3) "one"
++ }
++ [1]=>
++ array(1) {
++ [0]=>
++ string(3) "two"
++ }
++ [2]=>
++ array(1) {
++ [0]=>
++ string(5) "three"
++ }
++}
++bool(false)
++array(3) {
++ [0]=>
++ array(1) {
++ [0]=>
++ string(3) "one"
++ }
++ [1]=>
++ array(1) {
++ [0]=>
++ string(3) "two"
++ }
++ [2]=>
++ array(1) {
++ [0]=>
++ string(5) "three"
++ }
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_015.phpt sqlite-svn/tests/sqlite_oo_015.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_015.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_015.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,47 @@
++--TEST--
++sqlite-oo: array_query
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++$res = $db->arrayQuery("SELECT a from strings", SQLITE_NUM);
++var_dump($res);
++
++echo "DONE!\n";
++?>
++--EXPECTF--
++array(3) {
++ [0]=>
++ array(1) {
++ [0]=>
++ string(3) "one"
++ }
++ [1]=>
++ array(1) {
++ [0]=>
++ string(3) "two"
++ }
++ [2]=>
++ array(1) {
++ [0]=>
++ string(5) "three"
++ }
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_016.phpt sqlite-svn/tests/sqlite_oo_016.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_016.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_016.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,42 @@
++--TEST--
++sqlite-oo: fetch single
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ array (0 => 'one', 1 => 'two'),
++ array (0 => 'three', 1 => 'four')
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR, b VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('${str[0]}','${str[1]}')");
++}
++
++echo "====BUFFERED====\n";
++$r = $db->query("SELECT a, b from strings");
++while ($r->valid()) {
++ var_dump($r->fetchSingle());
++}
++echo "====UNBUFFERED====\n";
++$r = $db->unbufferedQuery("SELECT a, b from strings");
++while ($r->valid()) {
++ var_dump($r->fetchSingle());
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++====BUFFERED====
++string(3) "one"
++string(5) "three"
++====UNBUFFERED====
++string(3) "one"
++string(5) "three"
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_020.phpt sqlite-svn/tests/sqlite_oo_020.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_020.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_020.phpt 2012-10-09 13:36:42.721252390 +0000
+@@ -0,0 +1,66 @@
++--TEST--
++sqlite-oo: factory and exception
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++$dbname = tempnam(dirname(__FILE__), "phpsql");
++function cleanup() {
++ global $db, $dbname;
++
++ $db = NULL;
++ unlink($dbname);
++}
++register_shutdown_function("cleanup");
++
++try {
++ $db = sqlite_factory();
++} catch(SQLiteException $err) {
++ echo "Message: ".$err->getMessage()."\n";
++ echo "File: ".$err->getFile()."\n";
++ //echo "Line: ".$err->getLine()."\n";
++ //print_r($err->getTrace());
++ //echo "BackTrace: ".$err->getTraceAsString()."\n";
++}
++
++$db = sqlite_factory($dbname);
++
++$data = array(
++ array (0 => 'one', 1 => 'two'),
++ array (0 => 'three', 1 => 'four')
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR, b VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('${str[0]}','${str[1]}')");
++}
++
++$r = $db->unbufferedQuery("SELECT a, b from strings");
++while ($r->valid()) {
++ var_dump($r->current(SQLITE_NUM));
++ $r->next();
++}
++$r = null;
++$db = null;
++echo "DONE!\n";
++?>
++--EXPECTF--
++Message: sqlite_factory() expects at least 1 parameter, 0 given
++File: %ssqlite_oo_020.php
++array(2) {
++ [0]=>
++ string(3) "one"
++ [1]=>
++ string(3) "two"
++}
++array(2) {
++ [0]=>
++ string(5) "three"
++ [1]=>
++ string(4) "four"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_021.phpt sqlite-svn/tests/sqlite_oo_021.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_021.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_021.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,48 @@
++--TEST--
++sqlite-oo: single query
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE test_db ( id INTEGER PRIMARY KEY, data VARCHAR(100) )");
++for ($i = 0; $i < 10; $i++) {
++ $db->query("INSERT INTO test_db (data) VALUES('{$i}data')");
++}
++$db->query("INSERT INTO test_db (data) VALUES(NULL)");
++
++var_dump($db->singleQuery("SELECT id FROM test_db WHERE id=5"));
++var_dump($db->singleQuery("SELECT * FROM test_db WHERE id=4"));
++var_dump($db->singleQuery("SELECT data FROM test_db WHERE id=6"));
++var_dump($db->singleQuery("SELECT * FROM test_db WHERE id < 5"));
++var_dump($db->singleQuery("SELECT * FROM test db WHERE id < 4"));
++var_dump($db->singleQuery("SELECT * FROM test_db WHERE id=999999"));
++var_dump($db->singleQuery("SELECT id FROM test_db WHERE id=5", FALSE));
++
++echo "DONE!\n";
++?>
++--EXPECTF--
++string(1) "5"
++string(1) "4"
++string(5) "5data"
++array(4) {
++ [0]=>
++ string(1) "1"
++ [1]=>
++ string(1) "2"
++ [2]=>
++ string(1) "3"
++ [3]=>
++ string(1) "4"
++}
++
++Warning: SQLiteDatabase::singleQuery(): no such table: test in %s on line %d
++bool(false)
++NULL
++array(1) {
++ [0]=>
++ string(1) "5"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_022.phpt sqlite-svn/tests/sqlite_oo_022.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_022.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_022.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,98 @@
++--TEST--
++sqlite-oo: sqlite::seek
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++$res = $db->query("SELECT a FROM strings", SQLITE_NUM);
++for ($idx = -1; $idx < 4; $idx++) {
++ echo "====SEEK:$idx====\n";
++ $res->seek($idx);
++ var_dump($res->current());
++}
++echo "====AGAIN====\n";
++for ($idx = -1; $idx < 4; $idx++) {
++ echo "====SEEK:$idx====\n";
++ $res->seek($idx);
++ var_dump($res->current());
++}
++echo "====DONE!====\n";
++?>
++--EXPECTF--
++====SEEK:-1====
++
++Warning: SQLiteResult::seek(): row -1 out of range in %ssqlite_oo_022.php on line %d
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====SEEK:0====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====SEEK:1====
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++====SEEK:2====
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====SEEK:3====
++
++Warning: SQLiteResult::seek(): row 3 out of range in %ssqlite_oo_022.php on line %d
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====AGAIN====
++====SEEK:-1====
++
++Warning: SQLiteResult::seek(): row -1 out of range in %ssqlite_oo_022.php on line %d
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====SEEK:0====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++====SEEK:1====
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++====SEEK:2====
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====SEEK:3====
++
++Warning: SQLiteResult::seek(): row 3 out of range in %ssqlite_oo_022.php on line %d
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====DONE!====
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_024.phpt sqlite-svn/tests/sqlite_oo_024.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_024.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_024.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,74 @@
++--TEST--
++sqlite-oo: sqlite::fetch_object
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++class class24 {
++ function __construct() {
++ echo __METHOD__ . "\n";
++ }
++}
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++echo "====class24====\n";
++$res = $db->query("SELECT a FROM strings", SQLITE_ASSOC);
++while ($res->valid()) {
++ var_dump($res->fetchObject('class24'));
++}
++
++echo "====stdclass====\n";
++$res = $db->query("SELECT a FROM strings", SQLITE_ASSOC);
++while ($res->valid()) {
++ var_dump($res->fetchObject());
++}
++
++echo "====DONE!====\n";
++?>
++--EXPECTF--
++====class24====
++class24::__construct
++object(class24)#%d (1) {
++ ["a"]=>
++ string(3) "one"
++}
++class24::__construct
++object(class24)#%d (1) {
++ ["a"]=>
++ string(3) "two"
++}
++class24::__construct
++object(class24)#%d (1) {
++ ["a"]=>
++ string(5) "three"
++}
++====stdclass====
++object(stdClass)#%d (1) {
++ ["a"]=>
++ string(3) "one"
++}
++object(stdClass)#%d (1) {
++ ["a"]=>
++ string(3) "two"
++}
++object(stdClass)#%d (1) {
++ ["a"]=>
++ string(5) "three"
++}
++====DONE!====
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_025.phpt sqlite-svn/tests/sqlite_oo_025.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_025.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_025.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,103 @@
++--TEST--
++sqlite-oo: sqlite / foreach
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++echo "====UNBUFFERED====\n";
++$r = $db->unbufferedQuery("SELECT a from strings", SQLITE_NUM);
++//var_dump(class_implements($r));
++foreach($r as $row) {
++ var_dump($row);
++}
++echo "====NO-MORE====\n";
++foreach($r as $row) {
++ var_dump($row);
++}
++echo "====DIRECT====\n";
++foreach($db->unbufferedQuery("SELECT a from strings", SQLITE_NUM) as $row) {
++ var_dump($row);
++}
++echo "====BUFFERED====\n";
++$r = $db->query("SELECT a from strings", SQLITE_NUM);
++//var_dump(class_implements($r));
++foreach($r as $row) {
++ var_dump($row);
++}
++foreach($r as $row) {
++ var_dump($row);
++}
++echo "DONE!\n";
++?>
++--EXPECT--
++====UNBUFFERED====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====NO-MORE====
++====DIRECT====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++====BUFFERED====
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++array(1) {
++ [0]=>
++ string(3) "one"
++}
++array(1) {
++ [0]=>
++ string(3) "two"
++}
++array(1) {
++ [0]=>
++ string(5) "three"
++}
++DONE!
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_026.phpt sqlite-svn/tests/sqlite_oo_026.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_026.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_026.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,56 @@
++--TEST--
++sqlite-oo: unbuffered
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array(
++ "one",
++ "two",
++ "three"
++ );
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++}
++
++echo "====FOREACH====\n";
++$r = $db->unbufferedQuery("SELECT a from strings", SQLITE_NUM);
++foreach($r as $idx => $row) {
++ var_dump($row[0]);
++ var_dump($row[0]);
++}
++echo "====FOR====\n";
++$r = $db->unbufferedQuery("SELECT a from strings", SQLITE_NUM);
++for(;$r->valid(); $r->next()) {
++ $v = $r->column(0);
++ var_dump($v);
++ $c = $r->column(0);
++ var_dump(is_null($c) || $c==$v);
++}
++echo "===DONE===\n";
++?>
++--EXPECT--
++====FOREACH====
++string(3) "one"
++string(3) "one"
++string(3) "two"
++string(3) "two"
++string(5) "three"
++string(5) "three"
++====FOR====
++string(3) "one"
++bool(true)
++string(3) "two"
++bool(true)
++string(5) "three"
++bool(true)
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_027.phpt sqlite-svn/tests/sqlite_oo_027.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_027.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_027.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,42 @@
++--TEST--
++sqlite-oo: changes
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$data = array("one", "two", "three");
++
++$db->query("CREATE TABLE strings(a VARCHAR)");
++
++foreach ($data as $str) {
++ $db->query("INSERT INTO strings VALUES('$str')");
++ echo $db->changes() . "\n";
++}
++
++$db->query("UPDATE strings SET a='foo' WHERE a!='two'");
++echo $db->changes() . "\n";
++
++$db->query("DELETE FROM strings WHERE 1");
++echo $db->changes() . "\n";
++
++$str = '';
++foreach ($data as $s) {
++ $str .= "INSERT INTO strings VALUES('".$s."');";
++}
++$db->query($str);
++echo $db->changes() . "\n";
++
++?>
++--EXPECT--
++1
++1
++1
++2
++3
++3
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_028.phpt sqlite-svn/tests/sqlite_oo_028.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_028.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_028.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,25 @@
++--TEST--
++sqlite-oo: sqlite_fetch_column_types
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE strings(a, b INTEGER, c VARCHAR(10), d)");
++$db->query("INSERT INTO strings VALUES('1', '2', '3', 'abc')");
++
++var_dump($db->fetchColumnTypes("strings"));
++?>
++--EXPECT--
++array(4) {
++ ["a"]=>
++ string(0) ""
++ ["b"]=>
++ string(7) "INTEGER"
++ ["c"]=>
++ string(11) "VARCHAR(10)"
++ ["d"]=>
++ string(0) ""
++}
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_029.phpt sqlite-svn/tests/sqlite_oo_029.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_029.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_029.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,53 @@
++--TEST--
++sqlite-oo: call method with $this
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE strings(key VARCHAR(10), var VARCHAR(10))");
++$db->query("INSERT INTO strings VALUES('foo', 'foo')");
++
++class sqlite_help
++{
++ function __construct($db){
++ $this->db = $db;
++ $this->db->createFunction('link_keywords', array(&$this, 'linkers'), 1);
++ }
++
++ function getSingle($key)
++ {
++ return $this->db->singleQuery('SELECT link_keywords(var) FROM strings WHERE key=\''.$key.'\'', 1);
++ }
++
++ function linkers($str)
++ {
++ $str = str_replace('foo', 'bar', $str);
++ return $str;
++ }
++
++ function free()
++ {
++ unset($this->db);
++ }
++
++ function __destruct()
++ {
++ echo "DESTRUCTED\n";
++ }
++}
++
++$obj = new sqlite_help($db);
++echo $obj->getSingle('foo')."\n";
++$obj->free();
++unset($obj);
++
++?>
++===DONE===
++--EXPECT--
++bar
++===DONE===
++DESTRUCTED
+diff -dPNur sqlite-1.0.3/tests/sqlite_oo_030.phpt sqlite-svn/tests/sqlite_oo_030.phpt
+--- sqlite-1.0.3/tests/sqlite_oo_030.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_oo_030.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,44 @@
++--TEST--
++sqlite-oo: calling static methods
++--INI--
++sqlite.assoc_case=0
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++
++require_once('blankdb_oo.inc');
++
++class foo {
++ static function bar($param = NULL) {
++ return $param;
++ }
++}
++
++function baz($param = NULL) {
++ return $param;
++}
++
++var_dump($db->singleQuery("select php('baz')", 1));
++var_dump($db->singleQuery("select php('baz', 1)", 1));
++var_dump($db->singleQuery("select php('baz', \"PHP\")", 1));
++var_dump($db->singleQuery("select php('foo::bar')", 1));
++var_dump($db->singleQuery("select php('foo::bar', 1)", 1));
++var_dump($db->singleQuery("select php('foo::bar', \"PHP\")", 1));
++var_dump($db->singleQuery("select php('foo::bar(\"PHP\")')", 1));
++
++?>
++===DONE===
++--EXPECTF--
++NULL
++string(1) "1"
++string(3) "PHP"
++NULL
++string(1) "1"
++string(3) "PHP"
++
++Warning: SQLiteDatabase::singleQuery(): function `foo::bar("PHP")' is not a function name in %ssqlite_oo_030.php on line %d
++bool(false)
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_popen_basic.phpt sqlite-svn/tests/sqlite_popen_basic.phpt
+--- sqlite-1.0.3/tests/sqlite_popen_basic.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_popen_basic.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,27 @@
++--TEST--
++SQLite: sqlite_popen() basic tests
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip"; ?>
++--FILE--
++<?php
++/* Prototype : resource sqlite_popen(string filename [, int mode [, string &error_message]])
++ * Description: Opens a persistent handle to a SQLite database. Will create the database if it does not exist.
++ * Source code: ext/sqlite/sqlite.c
++ * Alias to functions:
++*/
++
++ $db1 = sqlite_popen(":memory:");
++ $db2 = sqlite_popen(":memory:");
++
++ var_dump($db1);
++ var_dump($db2);
++
++ list($resourceId1) = sscanf((string) $db1, "resource(%d) of type (sqlite database (persistent))");
++ list($resourceId2) = sscanf((string) $db2, "resource(%d) of type (sqlite database (persistent))");
++
++ var_dump($resourceId1 === $resourceId2);
++?>
++--EXPECTF--
++resource(%d) of type (sqlite database (persistent))
++resource(%d) of type (sqlite database (persistent))
++bool(true)
+diff -dPNur sqlite-1.0.3/tests/sqlite_popen_error.phpt sqlite-svn/tests/sqlite_popen_error.phpt
+--- sqlite-1.0.3/tests/sqlite_popen_error.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_popen_error.phpt 2012-10-09 13:36:42.721252390 +0000
+@@ -0,0 +1,34 @@
++--TEST--
++Test sqlite_popen() function : error conditions
++--SKIPIF--
++<?php if (!extension_loaded("sqlite")) print "skip sqlite extension not loaded"; ?>
++--FILE--
++<?php
++/* Prototype : resource sqlite_popen(string filename [, int mode [, string &error_message]])
++ * Description: Opens a persistent handle to a SQLite database. Will create the database if it does not exist.
++ * Source code: ext/sqlite/sqlite.c
++ * Alias to functions:
++ */
++
++$message = '';
++
++echo "*** Testing sqlite_popen() : error conditions ***\n";
++
++var_dump( sqlite_popen() );
++var_dump( sqlite_popen(":memory:", 0666, $message, 'foobar') );
++var_dump( sqlite_popen("", 0666, $message) );
++var_dump( $message );
++
++?>
++===DONE===
++--EXPECTF--
++*** Testing sqlite_popen() : error conditions ***
++
++Warning: sqlite_popen() expects at least 1 parameter, 0 given in %s on line %d
++NULL
++
++Warning: sqlite_popen() expects at most 3 parameters, 4 given in %s on line %d
++NULL
++bool(false)
++NULL
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_session_001.phpt sqlite-svn/tests/sqlite_session_001.phpt
+--- sqlite-1.0.3/tests/sqlite_session_001.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_session_001.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,46 @@
++--TEST--
++sqlite, session storage test
++--CREDITS--
++Mats Lindh <mats at lindh.no>
++#Testfest php.no
++--INI--
++session.save_handler = sqlite
++--SKIPIF--
++if (!extension_loaded("session"))
++{
++ die("skip Session module not loaded");
++}
++if (!extension_loaded("sqlite"))
++{
++ die("skip Session module not loaded");
++}
++--FILE--
++<?php
++/* Description: Tests that sqlite can be used as a session save handler
++* Source code: ext/sqlite/sess_sqlite.c
++*/
++
++ob_start();
++session_save_path(__DIR__ . "/sessiondb.sdb");
++
++// create the session and set a session value
++session_start();
++$_SESSION["test"] = "foo_bar";
++
++// close the session and unset the value
++session_write_close();
++unset($_SESSION["test"]);
++var_dump(isset($_SESSION["test"]));
++
++// start the session again and check that we have the proper value
++session_start();
++var_dump($_SESSION["test"]);
++ob_end_flush();
++?>
++--EXPECTF--
++bool(false)
++%unicode|string%(7) "foo_bar"
++--CLEAN--
++<?php
++ unlink(__DIR__ . "/sessiondb.sdb")
++?>
+diff -dPNur sqlite-1.0.3/tests/sqlite_session_002.phpt sqlite-svn/tests/sqlite_session_002.phpt
+--- sqlite-1.0.3/tests/sqlite_session_002.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_session_002.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,54 @@
++--TEST--
++sqlite, session destroy test
++--CREDITS--
++Mats Lindh <mats at lindh.no>
++#Testfest php.no
++--INI--
++session.save_handler = sqlite
++--SKIPIF--
++if (!extension_loaded("session"))
++{
++ die("skip Session module not loaded");
++}
++if (!extension_loaded("sqlite"))
++{
++ die("skip sqlite module not loaded");
++}
++--FILE--
++<?php
++/* Description: Tests that sqlite will destroy a session when used as a session handler
++* Source code: ext/sqlite/sess_sqlite.c
++*/
++ob_start();
++session_save_path(__DIR__ . "/sessiondb.sdb");
++
++// start a session and save a value to it before commiting the session to the database
++session_start();
++$_SESSION["test"] = "foo_bar";
++session_write_close();
++
++// remove the session value
++unset($_SESSION["test"]);
++var_dump(isset($_SESSION["test"]));
++
++// start the session again and destroy it
++session_start();
++var_dump($_SESSION["test"]);
++session_destroy();
++session_write_close();
++
++unset($_SESSION["test"]);
++
++// check that the session has been destroyed
++session_start();
++var_dump(isset($_SESSION["test"]));
++ob_end_flush();
++?>
++--EXPECTF--
++bool(false)
++%unicode|string%(7) "foo_bar"
++bool(false)
++--CLEAN--
++<?php
++ unlink(__DIR__ . "/sessiondb.sdb")
++?>
+diff -dPNur sqlite-1.0.3/tests/sqlite_spl_001.phpt sqlite-svn/tests/sqlite_spl_001.phpt
+--- sqlite-1.0.3/tests/sqlite_spl_001.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_spl_001.phpt 2012-10-09 13:36:42.730091166 +0000
+@@ -0,0 +1,125 @@
++--TEST--
++sqlite-spl: Iteration
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++if (!extension_loaded("spl")) print "skip SPL is not present";
++?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE menu(id_l int PRIMARY KEY, id_r int UNIQUE, key VARCHAR(10))");
++$db->query("INSERT INTO menu VALUES( 1, 12, 'A')");
++$db->query("INSERT INTO menu VALUES( 2, 9, 'B')");
++$db->query("INSERT INTO menu VALUES(10, 11, 'F')");
++$db->query("INSERT INTO menu VALUES( 3, 6, 'C')");
++$db->query("INSERT INTO menu VALUES( 7, 8, 'E')");
++$db->query("INSERT INTO menu VALUES( 4, 5, 'D')");
++
++class SqliteNestedsetElement
++{
++ protected $id_l;
++ protected $id_r;
++ protected $key;
++
++ function __construct($db)
++ {
++ $this->db = $db;
++ }
++
++ function getLeft()
++ {
++ return $this->id_l;
++ }
++
++ function getRight()
++ {
++ return $this->id_r;
++ }
++
++ function __toString()
++ {
++ return $this->key;
++ }
++
++ function key()
++ {
++ return $this->key;
++ }
++}
++
++class SqliteNestedset implements RecursiveIterator
++{
++ protected $id;
++ protected $id_l;
++ protected $id_r;
++ protected $entry;
++
++ function __construct($db, $id_l = 1)
++ {
++ $this->db = $db;
++ $this->id_l = $id_l;
++ $this->id_r = $this->db->singleQuery('SELECT id_r FROM menu WHERE id_l='.$id_l, 1);
++ $this->id = $id_l;
++ }
++
++ function rewind()
++ {
++ $this->id = $this->id_l;
++ $this->fetch();
++ }
++
++ function valid()
++ {
++ return is_object($this->entry);
++ }
++
++ function current()
++ {
++ return $this->entry->__toString();
++ }
++
++ function key()
++ {
++ return $this->entry->key();;
++ }
++
++ function next()
++ {
++ $this->id = $this->entry->getRight() + 1;
++ $this->fetch();
++ }
++
++ protected function fetch()
++ {
++ $res = $this->db->unbufferedQuery('SELECT * FROM menu WHERE id_l='.$this->id);
++ $this->entry = $res->fetchObject('SqliteNestedsetElement', array(&$this->db));
++ unset($res);
++ }
++
++ function hasChildren()
++ {
++ return $this->entry->getLeft() + 1 < $this->entry->getRight();
++ }
++
++ function getChildren()
++ {
++ return new SqliteNestedset($this->db, $this->entry->getLeft() + 1, $this->entry->getRight() - 1);
++ }
++}
++
++$menu_iterator = new RecursiveIteratorIterator(new SqliteNestedset($db), RecursiveIteratorIterator::SELF_FIRST);
++foreach($menu_iterator as $entry) {
++ echo $menu_iterator->getDepth() . $entry . "\n";
++}
++?>
++===DONE===
++--EXPECT--
++0A
++1B
++2C
++3D
++2E
++1F
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_spl_002.phpt sqlite-svn/tests/sqlite_spl_002.phpt
+--- sqlite-1.0.3/tests/sqlite_spl_002.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_spl_002.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,29 @@
++--TEST--
++sqlite-spl: Countable
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++if (!extension_loaded("spl")) print "skip SPL is not present";
++?>
++--FILE--
++<?php
++include "blankdb_oo.inc";
++
++$db->query("CREATE TABLE menu(id_l int PRIMARY KEY, id_r int UNIQUE, key VARCHAR(10))");
++$db->query("INSERT INTO menu VALUES( 1, 12, 'A')");
++$db->query("INSERT INTO menu VALUES( 2, 9, 'B')");
++$db->query("INSERT INTO menu VALUES(10, 11, 'F')");
++$db->query("INSERT INTO menu VALUES( 3, 6, 'C')");
++$db->query("INSERT INTO menu VALUES( 7, 8, 'E')");
++$db->query("INSERT INTO menu VALUES( 4, 5, 'D')");
++
++$res = $db->query("SELECT * from menu");
++
++var_dump($res->count());
++var_dump(count($res));
++?>
++===DONE===
++--EXPECT--
++int(6)
++int(6)
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlite_spl_003.phpt sqlite-svn/tests/sqlite_spl_003.phpt
+--- sqlite-1.0.3/tests/sqlite_spl_003.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlite_spl_003.phpt 2012-10-09 13:36:42.740092676 +0000
+@@ -0,0 +1,28 @@
++--TEST--
++sqlite-spl: Exception
++--SKIPIF--
++<?php # vim:ft=php
++if (!extension_loaded("sqlite")) print "skip";
++if (!extension_loaded("spl")) print "skip SPL is not present";
++?>
++--FILE--
++<?php
++
++try
++{
++ $db = sqlite_factory();
++}
++catch(SQLiteException $e)
++{
++ $parents = class_parents($e);
++ if (array_key_exists('RuntimeException', $parents))
++ {
++ echo "GOOD\n";
++ }
++}
++
++?>
++===DONE===
++--EXPECT--
++GOOD
++===DONE===
+diff -dPNur sqlite-1.0.3/tests/sqlitedatabase_arrayquery.phpt sqlite-svn/tests/sqlitedatabase_arrayquery.phpt
+--- sqlite-1.0.3/tests/sqlitedatabase_arrayquery.phpt 1970-01-01 00:00:00.000000000 +0000
++++ sqlite-svn/tests/sqlitedatabase_arrayquery.phpt 2012-10-09 13:36:42.721252390 +0000
+@@ -0,0 +1,23 @@
++--TEST--
++Testing SQLiteDatabase::ArrayQuery with NULL-byte string
++--SKIPIF--
++<?php
++if (!extension_loaded("sqlite")) print "skip";
++?>
++--FILE--
++<?php
++
++$method = new ReflectionMethod('sqlitedatabase::arrayquery');
++
++$class = $method->getDeclaringClass()->newInstanceArgs(array(':memory:'));
++
++$p = "\0";
++
++$method->invokeArgs($class, array_fill(0, 2, $p));
++$method->invokeArgs($class, array_fill(0, 1, $p));
++
++?>
++--EXPECTF--
++Warning: SQLiteDatabase::arrayQuery() expects parameter 2 to be long, string given in %s on line %d
++
++Warning: SQLiteDatabase::arrayQuery(): Cannot execute empty query. in %s on line %d
diff --git a/dev-php/pecl-sqlite/pecl-sqlite-1.0.3.ebuild b/dev-php/pecl-sqlite/pecl-sqlite-1.0.3.ebuild
new file mode 100644
index 0000000..fd26274
--- /dev/null
+++ b/dev-php/pecl-sqlite/pecl-sqlite-1.0.3.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-php/PECL-sqlite/Attic/PECL-sqlite-1.0.3.ebuild,v 1.7 2006/05/21 01:53:28 chtekk dead $
+
+EAPI=6
+
+PHP_EXT_ZENDEXT="no"
+PHP_EXT_INI="yes"
+PHP_EXT_PECL_PKG="SQLite"
+PHP_EXT_NAME="sqlite"
+USE_PHP="php5-6 php5-5 php5-4"
+
+inherit php-ext-pecl-r3
+
+DEPEND="${DEPEND} !dev-php/sqlite-php"
+
+IUSE=""
+DESCRIPTION="PHP bindings for the SQLite database engine"
+HOMEPAGE="http://pear.php.net/SQLite"
+SLOT="0"
+LICENSE="PHP"
+KEYWORDS="alpha amd64 ~ia64 ppc ~sparc x86"
+
+src_prepare() {
+ local slot
+ for slot in $(php_get_slots); do
+ php_init_slot_env ${slot}
+ epatch "${FILESDIR}"/sqlite-svn.patch
+ done
+
+ php-ext-source-r2_src_prepare
+}
diff --git a/dev-php/pecl-stats/Manifest b/dev-php/pecl-stats/Manifest
new file mode 100644
index 0000000..08a393c
--- /dev/null
+++ b/dev-php/pecl-stats/Manifest
@@ -0,0 +1,3 @@
+AUX stats-php54.diff 223990 SHA256 b9aafe8e8f12bc442540e0f917b98b6c35a7115dbdb5305fd70470133159bcd1 SHA512 ed6bf44fc20cd14c70e3b29bd6f864fc9dddaeef7b090f52edddb155e0844f09f6b6cf02f31bed8d9e1e8689042ee7f763ffd45df89391255ada82a6b523fc8d WHIRLPOOL 7314b415118f1f70734b8d5197a5c823688bf7698694416f7960d2f262585a7d00295a099a9bd01632089269066ddeaefdf10ae19a44c2cbe91c144d1ce6b54d
+DIST stats-1.0.2.tgz 99018 SHA256 465d1bbec43c916ecdc8fc59f0d13e24e7e23f6b76866b7172d25ab6e08f2244 SHA512 bb47a73f46ef49aea2f95ed20e315e7bef2f403ffcab1806bb9e4478abffa2a12f3b378108cb3a6b6a8aa930fd7cb9aa0b184fcec24ae88fb9e9abec67fbc1f0 WHIRLPOOL ddd11ccf68d40e16fd6c74428696f4ccc3c7369969b4ff935b69152968c10f43399a868e5c6593855c618149e2914232c15ed90e7b0ef4b60f24990b5121f593
+EBUILD pecl-stats-1.0.2.ebuild 735 SHA256 e910ba0fda3d93665af415aa5f72e664d8e309438883d82076fffefc11c80f81 SHA512 4319ad92cf925e3cfe5a2df4de8b45b9993aa5e6e0913d2f2141b1fa857c9da94c2ba3d0437af92a30be8ddcdc1b67e3234a96d7e64771b481baa506cbc3d359 WHIRLPOOL c46287889ecf9a19d23bc9e4a998bc11c3318b3cc8335f476bcb798de869260bdda25d8c3d76daae13bcbf2a7c98a7013e7faa2edb5616c5cb83aadf7a88f39b
diff --git a/dev-php/pecl-stats/files/stats-php54.diff b/dev-php/pecl-stats/files/stats-php54.diff
new file mode 100644
index 0000000..2c3d39c
--- /dev/null
+++ b/dev-php/pecl-stats/files/stats-php54.diff
@@ -0,0 +1,7930 @@
+diff -dPNur stats-1.0.2/config.m4 trunk/config.m4
+--- stats-1.0.2/config.m4 2006-05-31 19:24:26.000000000 +0200
++++ trunk/config.m4 2012-10-29 17:22:36.000000000 +0100
+@@ -1,9 +1,9 @@
+-dnl $Id: config.m4,v 1.2 2004/01/09 19:22:36 andrey Exp $
++dnl $Id: config.m4 256977 2008-04-08 16:13:17Z sfox $
+ dnl config.m4 for extension stats
+
+ PHP_ARG_ENABLE(stats, whether to enable stats support,
+ [ --enable-stats Enable statistics support])
+
+ if test "$PHP_STATS" != "no"; then
+- PHP_NEW_EXTENSION(stats, statistics.c com.c dcdflib.c ipmpar.c linpack.c randlib.c, $ext_shared)
++ PHP_NEW_EXTENSION(stats, php_stats.c com.c dcdflib.c ipmpar.c linpack.c randlib.c , $ext_shared)
+ fi
+diff -dPNur stats-1.0.2/config.w32 trunk/config.w32
+--- stats-1.0.2/config.w32 2006-05-31 19:24:26.000000000 +0200
++++ trunk/config.w32 2012-10-29 17:22:36.000000000 +0100
+@@ -1,9 +1,9 @@
+-// $Id: config.w32,v 1.2 2006/05/30 17:53:18 andrey Exp $
++// $Id: config.w32 256977 2008-04-08 16:13:17Z sfox $
+ // vim:ft=javascript
+
+ ARG_ENABLE("stats", "statistics support", "no");
+
+ if (PHP_STATS != "no") {
+- EXTENSION('stats', 'statistics.c com.c dcdflib.c ipmpar.c linpack.c randlib.c fd_e_lgamma_r.c fd_e_log.c fd_k_cos.c fd_k_sin.c fd_w_lgamma.c');
++ EXTENSION('stats', 'php_stats.c com.c dcdflib.c ipmpar.c linpack.c randlib.c fd_e_lgamma_r.c fd_e_log.c fd_k_cos.c fd_k_sin.c fd_w_lgamma.c');
+ }
+
+diff -dPNur stats-1.0.2/package.xml trunk/package.xml
+--- stats-1.0.2/package.xml 1970-01-01 01:00:00.000000000 +0100
++++ trunk/package.xml 2012-10-29 17:22:36.000000000 +0100
+@@ -0,0 +1,104 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<package packagerversion="1.4.8" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
++http://pear.php.net/dtd/tasks-1.0.xsd
++http://pear.php.net/dtd/package-2.0
++http://pear.php.net/dtd/package-2.0.xsd">
++ <name>stats</name>
++ <channel>pecl.php.net</channel>
++ <summary>Extension with routines for statistical computation.</summary>
++ <description>Extension that provides few dozens routines for statistical computation.
++ </description>
++ <lead>
++ <name>Andrey Hristov</name>
++ <user>andrey</user>
++ <email>andrey_php_net</email>
++ <active>yes</active>
++ </lead>
++ <date>2006-05-31</date>
++ <time>18:55:52</time>
++ <version>
++ <release>1.0.2</release>
++ <api>1.0.2</api>
++ </version>
++ <stability>
++ <release>stable</release>
++ <api>stable</api>
++ </stability>
++ <license uri="http://www.php.net/license">PHP License</license>
++ <notes>Added fd_lgamma from FDLibM, so now all functions are also available on Windows.
++ Previously some were disabled because Microsoft does not ship lgamma with their C library.
++ </notes>
++ <contents>
++ <dir name="/">
++ <dir name="tests">
++ <file name="common.php" role="test" />
++ <file name="math_abs_dev.phpt" role="test" />
++ <file name="math_covariance.phpt" role="test" />
++ <file name="math_harmonic_mean.phpt" role="test" />
++ <file name="math_skew_kurtosis.phpt" role="test" />
++ <file name="math_std_dev.phpt" role="test" />
++ </dir> <!-- //tests -->
++ <file name="cdflib.h" role="src" />
++ <file name="com.c" role="src" />
++ <file name="config.m4" role="src" />
++ <file name="config.w32" role="src" />
++ <file name="CREDITS" role="doc" />
++ <file name="dcdflib.c" role="src" />
++ <file name="fd_e_lgamma_r.c" role="src" />
++ <file name="fd_e_log.c" role="src" />
++ <file name="fd_k_cos.c" role="src" />
++ <file name="fd_k_sin.c" role="src" />
++ <file name="fdlibm.h" role="src" />
++ <file name="fd_w_lgamma.c" role="src" />
++ <file name="ipmpar.c" role="src" />
++ <file name="linpack.c" role="src" />
++ <file name="php_stats.h" role="src" />
++ <file name="randlib.c" role="src" />
++ <file name="randlib.h" role="src" />
++ <file name="php_stats.c" role="src" />
++ <file name="TODO" role="doc" />
++ </dir> <!-- / -->
++ </contents>
++ <dependencies>
++ <required>
++ <php>
++ <min>4.0.0</min>
++ </php>
++ <pearinstaller>
++ <min>1.4.0</min>
++ </pearinstaller>
++ </required>
++ </dependencies>
++ <providesextension>stats</providesextension>
++ <extsrcrelease />
++ <changelog>
++ <release>
++ <version>
++ <release>1.0.0</release>
++ <api>1.0.0</api>
++ </version>
++ <stability>
++ <release>stable</release>
++ <api>stable</api>
++ </stability>
++ <date>2005-11-24</date>
++ <license uri="http://www.php.net/license">PHP License</license>
++ <notes>Initial release.
++ </notes>
++ </release>
++ <release>
++ <version>
++ <release>1.0.1</release>
++ <api>1.0.1</api>
++ </version>
++ <stability>
++ <release>stable</release>
++ <api>stable</api>
++ </stability>
++ <date>2005-3-25</date>
++ <license uri="http://www.php.net/license">PHP License</license>
++ <notes>Fixed shared build.
++ </notes>
++ </release>
++ </changelog>
++</package>
+diff -dPNur stats-1.0.2/php_statistics.h trunk/php_statistics.h
+--- stats-1.0.2/php_statistics.h 2006-05-31 19:24:26.000000000 +0200
++++ trunk/php_statistics.h 1970-01-01 01:00:00.000000000 +0100
+@@ -1,127 +0,0 @@
+-/*
+- +----------------------------------------------------------------------+
+- | PHP Version 5 |
+- +----------------------------------------------------------------------+
+- | Copyright (c) 1997-2004 The PHP Group |
+- +----------------------------------------------------------------------+
+- | This source file is subject to version 3.0 of the PHP license, |
+- | that is bundled with this package in the file LICENSE, and is |
+- | available through the world-wide-web at the following url: |
+- | http://www.php.net/license/3_0.txt. |
+- | If you did not receive a copy of the PHP license and are unable to |
+- | obtain it through the world-wide-web, please send a note to |
+- | license@php.net so we can mail you a copy immediately. |
+- +----------------------------------------------------------------------+
+- | Author: Andrey Hristov <andrey@php.net> |
+- +----------------------------------------------------------------------+
+-*/
+-
+-/* $Id: php_statistics.h,v 1.5 2005/05/13 12:17:07 andrey Exp $ */
+-
+-#ifndef PHP_STATISTICS_H
+-#define PHP_STATISTICS_H
+-
+-extern zend_module_entry stats_module_entry;
+-#define phpext_stats_ptr &stats_module_entry
+-
+-#ifdef PHP_WIN32
+-#define PHP_STATS_API __declspec(dllexport)
+-#else
+-#define PHP_STATS_API
+-#endif
+-
+-
+-PHP_MINFO_FUNCTION(stats);
+-
+-PHP_FUNCTION(stats_bin_counts);
+-PHP_FUNCTION(stats_cdf_t);
+-PHP_FUNCTION(stats_cdf_normal);
+-PHP_FUNCTION(stats_cdf_gamma);
+-PHP_FUNCTION(stats_cdf_chisquare);
+-PHP_FUNCTION(stats_cdf_beta);
+-PHP_FUNCTION(stats_cdf_binomial);
+-PHP_FUNCTION(stats_cdf_noncentral_chisquare);
+-PHP_FUNCTION(stats_cdf_f);
+-PHP_FUNCTION(stats_cdf_noncentral_f);
+-PHP_FUNCTION(stats_cdf_noncentral_t);
+-PHP_FUNCTION(stats_cdf_negative_binomial);
+-PHP_FUNCTION(stats_cdf_poisson);
+-PHP_FUNCTION(stats_cdf_laplace);
+-PHP_FUNCTION(stats_cdf_cauchy);
+-PHP_FUNCTION(stats_cdf_logistic);
+-PHP_FUNCTION(stats_cdf_weibull);
+-PHP_FUNCTION(stats_cdf_uniform);
+-PHP_FUNCTION(stats_cdf_exponential);
+-PHP_FUNCTION(stats_rand_setall);
+-PHP_FUNCTION(stats_rand_getsd);
+-PHP_FUNCTION(stats_rand_gen_iuniform);
+-PHP_FUNCTION(stats_rand_gen_funiform);
+-PHP_FUNCTION(stats_rand_ignlgi);
+-PHP_FUNCTION(stats_rand_ranf);
+-PHP_FUNCTION(stats_rand_gen_beta);
+-PHP_FUNCTION(stats_rand_gen_chisquare);
+-PHP_FUNCTION(stats_rand_gen_exponential);
+-PHP_FUNCTION(stats_rand_gen_f);
+-PHP_FUNCTION(stats_rand_gen_gamma);
+-PHP_FUNCTION(stats_rand_gen_noncentral_chisquare);
+-PHP_FUNCTION(stats_rand_gen_noncenral_f);
+-PHP_FUNCTION(stats_rand_gen_normal);
+-PHP_FUNCTION(stats_rand_phrase_to_seeds);
+-PHP_FUNCTION(stats_rand_ibinomial);
+-PHP_FUNCTION(stats_rand_ibinomial_negative);
+-PHP_FUNCTION(stats_rand_gen_ipoisson);
+-PHP_FUNCTION(stats_rand_gen_noncentral_t);
+-PHP_FUNCTION(stats_rand_gen_t);
+-PHP_FUNCTION(stats_dens_normal);
+-PHP_FUNCTION(stats_dens_cauchy);
+-PHP_FUNCTION(stats_dens_laplace);
+-PHP_FUNCTION(stats_dens_logistic);
+-PHP_FUNCTION(stats_dens_beta);
+-PHP_FUNCTION(stats_dens_weibull);
+-PHP_FUNCTION(stats_dens_uniform);
+-PHP_FUNCTION(stats_dens_chisquare);
+-PHP_FUNCTION(stats_dens_t);
+-PHP_FUNCTION(stats_dens_gamma);
+-PHP_FUNCTION(stats_dens_exponential);
+-PHP_FUNCTION(stats_dens_f);
+-PHP_FUNCTION(stats_dens_pmf_binomial);
+-PHP_FUNCTION(stats_dens_pmf_poisson);
+-PHP_FUNCTION(stats_dens_pmf_negative_binomial);
+-PHP_FUNCTION(stats_dens_pmf_hypergeometric);
+-PHP_FUNCTION(stats_stat_powersum);
+-PHP_FUNCTION(stats_stat_innerproduct);
+-PHP_FUNCTION(stats_stat_independent_t);
+-PHP_FUNCTION(stats_stat_paired_t);
+-PHP_FUNCTION(stats_stat_percentile);
+-PHP_FUNCTION(stats_stat_correlation);
+-PHP_FUNCTION(stats_stat_binomial_coef);
+-PHP_FUNCTION(stats_stat_factorial);
+-PHP_FUNCTION(stats_absolute_deviation);
+-PHP_FUNCTION(stats_standard_deviation);
+-PHP_FUNCTION(stats_variance);
+-PHP_FUNCTION(stats_harmonic_mean);
+-PHP_FUNCTION(stats_skew);
+-PHP_FUNCTION(stats_kurtosis);
+-PHP_FUNCTION(stats_covariance);
+-
+-
+-#ifdef ZTS
+-#define STATS_D zend_stats_globals *stats_globals
+-#define STATS_G(v) (stats_globals->v)
+-#define STATS_FETCH() zend_stats_globals *stats_globals = ts_resource(stats_globals_id)
+-#else
+-#define STATS_D
+-#define STATS_G(v) (stats_globals.v)
+-#define STATS_FETCH()
+-#endif
+-
+-#endif /* PHP_STATISTICS_H */
+-
+-
+-/*
+- * Local variables:
+- * tab-width: 4
+- * c-basic-offset: 4
+- * indent-tabs-mode: t
+- * End:
+- */
+diff -dPNur stats-1.0.2/php_stats.c trunk/php_stats.c
+--- stats-1.0.2/php_stats.c 1970-01-01 01:00:00.000000000 +0100
++++ trunk/php_stats.c 2012-10-29 17:22:36.000000000 +0100
+@@ -0,0 +1,3729 @@
++/*
++ +----------------------------------------------------------------------+
++ | PHP Version 5 |
++ +----------------------------------------------------------------------+
++ | Copyright (c) 1997-2004 The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.0 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | http://www.php.net/license/3_0.txt. |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Andrey Hristov <andrey@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++/* $Id: php_stats.c 313529 2011-07-21 12:14:10Z derick $ */
++
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include "php.h"
++#include "php_stats.h"
++#include "ext/standard/info.h"
++#include "ext/standard/head.h"
++#include <stdlib.h>
++#include <string.h>
++#include <ctype.h>
++#include <math.h>
++#include "randlib.h"
++#include "cdflib.h"
++
++#define STATS_PI 3.14159265358979323846
++
++
++#ifdef PHP_WIN32
++extern double fd_lgamma(double x);
++#define lgamma fd_lgamma
++#endif
++
++static double logistic_quantile(double p);
++static double logistic_cdf(double x);
++static double cauchy_quantile(double p);
++static double cauchy_cdf(double x);
++static double laplace_quantile(double p);
++static double laplace_cdf(double x);
++static double exponential_quantile(double p);
++static double exponential_cdf(double x);
++static double binom(double x, double n);
++
++zend_function_entry statistics_functions[] = {
++ PHP_FE(stats_cdf_t, NULL)
++ PHP_FE(stats_cdf_normal, NULL)
++ PHP_FE(stats_cdf_gamma, NULL)
++ PHP_FE(stats_cdf_chisquare, NULL)
++ PHP_FE(stats_cdf_beta, NULL)
++ PHP_FE(stats_cdf_binomial, NULL)
++ PHP_FE(stats_cdf_noncentral_chisquare,NULL)
++ PHP_FE(stats_cdf_f, NULL)
++ PHP_FE(stats_cdf_noncentral_f, NULL)
++ PHP_FE(stats_cdf_noncentral_t, NULL)
++ PHP_FE(stats_cdf_negative_binomial, NULL)
++ PHP_FE(stats_cdf_poisson, NULL)
++ PHP_FE(stats_cdf_laplace, NULL)
++ PHP_FE(stats_cdf_cauchy, NULL)
++ PHP_FE(stats_cdf_logistic, NULL)
++ PHP_FE(stats_cdf_weibull, NULL)
++ PHP_FE(stats_cdf_uniform, NULL)
++ PHP_FE(stats_cdf_exponential, NULL)
++ PHP_FE(stats_rand_setall, NULL)
++ PHP_FE(stats_rand_getsd, NULL)
++ PHP_FE(stats_rand_gen_iuniform, NULL)
++ PHP_FE(stats_rand_gen_funiform, NULL)
++ PHP_FE(stats_rand_ignlgi, NULL)
++ PHP_FE(stats_rand_ranf, NULL)
++ PHP_FE(stats_rand_gen_beta, NULL)
++ PHP_FE(stats_rand_gen_chisquare, NULL)
++ PHP_FE(stats_rand_gen_exponential, NULL)
++ PHP_FE(stats_rand_gen_f, NULL)
++ PHP_FE(stats_rand_gen_gamma, NULL)
++ PHP_FE(stats_rand_gen_noncentral_chisquare,NULL)
++ PHP_FE(stats_rand_gen_noncenral_f, NULL)
++ PHP_FE(stats_rand_gen_normal, NULL)
++ PHP_FE(stats_rand_phrase_to_seeds, NULL)
++ PHP_FE(stats_rand_ibinomial, NULL)
++ PHP_FE(stats_rand_ibinomial_negative,NULL)
++ PHP_FE(stats_rand_gen_ipoisson, NULL)
++ PHP_FE(stats_rand_gen_noncentral_t, NULL)
++ PHP_FE(stats_rand_gen_t, NULL)
++ PHP_FE(stats_dens_normal, NULL)
++ PHP_FE(stats_dens_cauchy, NULL)
++ PHP_FE(stats_dens_laplace, NULL)
++ PHP_FE(stats_dens_logistic, NULL)
++ PHP_FE(stats_dens_beta, NULL)
++ PHP_FE(stats_dens_weibull, NULL)
++ PHP_FE(stats_dens_uniform, NULL)
++ PHP_FE(stats_dens_chisquare, NULL)
++ PHP_FE(stats_dens_t, NULL)
++ PHP_FE(stats_dens_gamma, NULL)
++ PHP_FE(stats_dens_exponential, NULL)
++ PHP_FE(stats_dens_f, NULL)
++ PHP_FE(stats_dens_pmf_binomial, NULL)
++ PHP_FE(stats_dens_pmf_poisson, NULL)
++ PHP_FE(stats_dens_pmf_negative_binomial,NULL)
++ PHP_FE(stats_dens_pmf_hypergeometric, NULL)
++ PHP_FE(stats_stat_powersum, NULL)
++ PHP_FE(stats_stat_innerproduct, NULL)
++ PHP_FE(stats_stat_independent_t, NULL)
++ PHP_FE(stats_stat_paired_t, NULL)
++ PHP_FE(stats_stat_percentile, NULL)
++ PHP_FE(stats_stat_correlation, NULL)
++ PHP_FE(stats_stat_binomial_coef, NULL)
++ PHP_FE(stats_stat_factorial, NULL)
++ PHP_FE(stats_standard_deviation, NULL)
++ PHP_FE(stats_absolute_deviation, NULL)
++ PHP_FE(stats_variance, NULL)
++ PHP_FE(stats_harmonic_mean, NULL)
++ PHP_FE(stats_skew, NULL)
++ PHP_FE(stats_kurtosis, NULL)
++ PHP_FE(stats_covariance, NULL)
++ {NULL, NULL, NULL}
++};
++
++zend_module_entry stats_module_entry = {
++ STANDARD_MODULE_HEADER,
++ "stats",
++ statistics_functions,
++ NULL,
++ NULL,
++ NULL,
++ NULL,
++ PHP_MINFO(stats),
++ PHP_STATS_VERSION,
++ STANDARD_MODULE_PROPERTIES,
++};
++
++#ifdef COMPILE_DL_STATS
++ZEND_GET_MODULE(stats)
++#endif
++
++
++PHP_MINFO_FUNCTION(stats)
++{
++ php_info_print_table_start();
++ php_info_print_table_header(2, "Statistics Support", "enabled");
++ php_info_print_table_row(2, "Version", PHP_STATS_VERSION);
++ php_info_print_table_end();
++}
++
++
++
++/* Numbers are always smaller than strings int this function as it
++ * anyway doesn't make much sense to compare two different data types.
++ * This keeps it consistant and simple.
++ *
++ * This is not correct any more, depends on what compare_func is set to.
++ */
++static int stats_array_data_compare(const void *a, const void *b TSRMLS_DC)
++{
++ Bucket *f;
++ Bucket *s;
++ zval result;
++ zval *first;
++ zval *second;
++
++ f = *((Bucket **) a);
++ s = *((Bucket **) b);
++
++ first = *((zval **) f->pData);
++ second = *((zval **) s->pData);
++
++ if (numeric_compare_function(&result, first, second TSRMLS_CC) == FAILURE) {
++ return 0;
++ }
++
++ if (Z_TYPE(result) == IS_DOUBLE) {
++ if (Z_DVAL(result) < 0) {
++ return -1;
++ } else if (Z_DVAL(result) > 0) {
++ return 1;
++ } else {
++ return 0;
++ }
++ }
++
++ convert_to_long(&result);
++
++ if (Z_LVAL(result) < 0) {
++ return -1;
++ } else if (Z_LVAL(result) > 0) {
++ return 1;
++ }
++
++ return 0;
++}
++
++
++
++/**************************************/
++/* Cumulative Distributions Functions */
++/**************************************/
++
++/******************************************************
++ Cumulative Distribution Function
++ T distribution
++
++ Function
++
++
++ Calculates any one parameter of the t distribution given
++ values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which argument
++ values is to be calculated from the others.
++ Legal range: 1..3
++ iwhich = 1 : Calculate P and Q from T and DF
++ iwhich = 2 : Calculate T from P,Q and DF
++ iwhich = 3 : Calculate DF from P,Q and T
++
++ P <--> The integral from -infinity to t of the t-density.
++ Input range: (0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ T <--> Upper limit of integration of the t-density.
++ Input range: ( -infinity, +infinity).
++ Search range: [ -1E100, 1E100 ]
++
++ DF <--> Degrees of freedom of the t-distribution.
++ Input range: (0 , +infinity).
++ Search range: [1e-100, 1E10]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.5.27 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to reduce the computation
++ of the cumulative distribution function to that of an incomplete
++ beta.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++******************************************************/
++
++/* {{{ proto float stats_cdf_t(float par1, float par2, int which)
++ Calculates any one parameter of the T distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_t)
++{
++ double arg1;
++ double arg2;
++ double df;
++ double bound;
++ double p;
++ double q;
++ double t;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddl", &arg1, &arg2, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 3) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 3 ) {
++ df = arg2;
++ } else {
++ t = arg2;
++ }
++ if (which == 1) {
++ t = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdft((int *)&which, &p, &q, &t, &df, &status, &bound);
++
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(t);
++ case 3: RETURN_DOUBLE(df);
++ }
++ RETURN_FALSE; /* should never be reached */
++}
++/* }}} */
++
++/*********************************************************************
++ Cumulative Distribution Function NORmal distribution
++
++ Calculates any one parameter of the normal
++ distribution given values for the others.
++
++
++ Arguments
++
++
++ WHICH --> Integer indicating which of the next parameter
++ values is to be calculated using values of the others.
++ Legal range: 1..4
++ iwhich = 1 : Calculate P and Q from X,MEAN and SD
++ iwhich = 2 : Calculate X from P,Q,MEAN and SD
++ iwhich = 3 : Calculate MEAN from P,Q,X and SD
++ iwhich = 4 : Calculate SD from P,Q,X and MEAN
++
++ P <--> The integral from -infinity to X of the normal density.
++ Input range: (0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ X < --> Upper limit of integration of the normal-density.
++ Input range: ( -infinity, +infinity)
++
++ MEAN <--> The mean of the normal density.
++ Input range: (-infinity, +infinity)
++
++ SD <--> Standard Deviation of the normal density.
++ Input range: (0, +infinity).
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ A slightly modified version of ANORM from
++
++ Cody, W.D. (1993). "ALGORITHM 715: SPECFUN - A Portabel FORTRAN
++ Package of Special Function Routines and Test Drivers"
++ acm Transactions on Mathematical Software. 19, 22-32.
++
++ is used to calulate the cumulative standard normal distribution.
++
++ The rational functions from pages 90-95 of Kennedy and Gentle,
++ Statistical Computing, Marcel Dekker, NY, 1980 are used as
++ starting values to Newton's Iterations which compute the inverse
++ standard normal. Therefore no searches are necessary for any
++ parameter.
++
++ For X < -15, the asymptotic expansion for the normal is used as
++ the starting value in finding the inverse standard normal.
++ This is formula 26.2.12 of Abramowitz and Stegun.
++
++ Note
++
++ The normal density is proportional to
++ exp( - 0.5 * (( X - MEAN)/SD)**2)
++***********************************************************************/
++
++/* {{{ proto float stats_stat_gennch(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the normal distribution given values for thee others. */
++PHP_FUNCTION(stats_cdf_normal)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double sd;
++ double bound;
++ double p;
++ double q;
++ double x;
++ double mean;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ sd = arg3;
++ } else {
++ mean = arg3;
++ }
++
++ if (which < 3) {
++ mean = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfnor((int *)&which, &p, &q, &x, &mean, &sd, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(mean);
++ case 4: RETURN_DOUBLE(sd);
++ }
++ RETURN_FALSE; /* should never be reached */
++}
++/* }}} */
++
++
++/*********************************************************************
++ Cumulative Distribution Function
++ GAMma Distribution
++
++
++ Function
++
++
++ Calculates any one parameter of the gamma
++ distribution given values for the others.
++
++
++ Arguments
++
++
++ WHICH --> Integer indicating which of the next four argument
++ values is to be calculated from the others.
++ Legal range: 1..4
++ iwhich = 1 : Calculate P and Q from X,SHAPE and SCALE
++ iwhich = 2 : Calculate X from P,Q,SHAPE and SCALE
++ iwhich = 3 : Calculate SHAPE from P,Q,X and SCALE
++ iwhich = 4 : Calculate SCALE from P,Q,X and SHAPE
++
++ P <--> The integral from 0 to X of the gamma density.
++ Input range: [0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ X <--> The upper limit of integration of the gamma density.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ SHAPE <--> The shape parameter of the gamma density.
++ Input range: (0, +infinity).
++ Search range: [1E-100,1E100]
++
++ SCALE <--> The scale parameter of the gamma density.
++ Input range: (0, +infinity).
++ Search range: (1E-100,1E100]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++ 10 if the gamma or inverse gamma routine cannot
++ compute the answer. Usually happens only for
++ X and SHAPE very large (gt 1E10 or more)
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++
++ Method
++
++
++ Cumulative distribution function (P) is calculated directly by
++ the code associated with:
++
++ DiDinato, A. R. and Morris, A. H. Computation of the incomplete
++ gamma function ratios and their inverse. ACM Trans. Math.
++ Softw. 12 (1986), 377-393.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++
++ Note
++
++
++
++ The gamma density is proportional to
++ T**(SHAPE - 1) * EXP(- SCALE * T)
++**************************************************************************/
++/* {{{ proto float stats_cdf_gamma(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the gamma distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_gamma)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double bound;
++ double p;
++ double q;
++ double x;
++ double shape;
++ double scale;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ scale = arg3;
++ } else {
++ shape = arg3;
++ }
++
++ if (which < 3) {
++ shape = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfgam((int *)&which, &p, &q, &x, &shape, &scale, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(shape);
++ case 4: RETURN_DOUBLE(scale);
++ }
++ RETURN_FALSE; /* should never be reached */
++}
++/* }}} */
++
++/*****************************************************************
++ Cumulative Distribution Function
++ CHI-Square distribution
++
++ Function
++
++ Calculates any one parameter of the chi-square
++ distribution given values for the others.
++
++ Arguments
++
++
++ WHICH --> Integer indicating which of the next three argument
++ values is to be calculated from the others.
++ Legal range: 1..3
++ iwhich = 1 : Calculate P and Q from X and DF
++ iwhich = 2 : Calculate X from P,Q and DF
++ iwhich = 3 : Calculate DF from P,Q and X
++
++ P <--> The integral from 0 to X of the chi-square
++ distribution.
++ Input range: [0, 1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ X <--> Upper limit of integration of the non-central
++ chi-square distribution.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ DF <--> Degrees of freedom of the
++ chi-square distribution.
++ Input range: (0, +infinity).
++ Search range: [ 1E-100, 1E100]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++ 10 indicates error returned from cumgam. See
++ references in cdfgam
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++
++ Method
++
++
++ Formula 26.4.19 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to reduce the chisqure
++ distribution to the incomplete distribution.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++*****************************************************************/
++/* {{{ proto float stats_cdf_chisquare(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the chi-square distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_chisquare)
++{
++ double arg1;
++ double arg2;
++ double bound;
++ double p;
++ double q;
++ double x;
++ double df;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddl", &arg1, &arg2, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 3) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 3 ) {
++ df = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfchi((int *)&which, &p, &q, &x, &df, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(df);
++ }
++ RETURN_FALSE; /* should never be here */
++}
++/* }}} */
++
++/*******************************************************************
++ Cumulative Distribution Function
++ BETa Distribution
++
++ Function
++
++ Calculates any one parameter of the beta distribution given
++ values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which of the next four argument
++ values is to be calculated from the others.
++ Legal range: 1..4
++ iwhich = 1 : Calculate P and Q from X,Y,A and B
++ iwhich = 2 : Calculate X and Y from P,Q,A and B
++ iwhich = 3 : Calculate A from P,Q,X,Y and B
++ iwhich = 4 : Calculate B from P,Q,X,Y and A
++
++ P <--> The integral from 0 to X of the chi-square
++ distribution.
++ Input range: [0, 1].
++
++ Q <--> 1-P.
++ Input range: [0, 1].
++ P + Q = 1.0.
++
++ X <--> Upper limit of integration of beta density.
++ Input range: [0,1].
++ Search range: [0,1]
++
++ Y <--> 1-X.
++ Input range: [0,1].
++ Search range: [0,1]
++ X + Y = 1.0.
++
++ A <--> The first parameter of the beta density.
++ Input range: (0, +infinity).
++ Search range: [1D-100,1D100]
++
++ B <--> The second parameter of the beta density.
++ Input range: (0, +infinity).
++ Search range: [1D-100,1D100]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++ 4 if X + Y .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Cumulative distribution function (P) is calculated directly by
++ code associated with the following reference.
++
++ DiDinato, A. R. and Morris, A. H. Algorithm 708: Significant
++ Digit Computation of the Incomplete Beta Function Ratios. ACM
++ Trans. Math. Softw. 18 (1993), 360-373.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++ Note
++
++ The beta density is proportional to
++ t^(A-1) * (1-t)^(B-1)
++
++*******************************************************************/
++
++/* {{{ proto float stats_cdf_beta(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the beta distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_beta)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double x;
++ double bound;
++ double y;
++ double a;
++ double b;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++
++ if (which < 4) {
++ b = arg3;
++ } else {
++ a = arg3;
++ }
++
++ if (which < 3) {
++ a = arg2;
++ } else {
++ x = arg2;
++ y = 1.0 - x;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ y = 1.0 - x;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfbet((int *)&which, &p, &q, &x, &y, &a, &b, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(a);
++ case 4: RETURN_DOUBLE(b);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/*********************************************************************
++ Cumulative Distribution Function
++ BINomial distribution
++
++ Function
++
++ Calculates any one parameter of the binomial
++ distribution given values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which of the next four argument
++ values is to be calculated from the others.
++ Legal range: 1..4
++ iwhich = 1 : Calculate P and Q from S,XN,PR and OMPR
++ iwhich = 2 : Calculate S from P,Q,XN,PR and OMPR
++ iwhich = 3 : Calculate XN from P,Q,S,PR and OMPR
++ iwhich = 4 : Calculate PR and OMPR from P,Q,S and XN
++
++ P <--> The cumulation from 0 to S of the binomial distribution.
++ (Probablility of S or fewer successes in XN trials each
++ with probability of success PR.)
++ Input range: [0,1].
++
++ Q <--> 1-P.
++ Input range: [0, 1].
++ P + Q = 1.0.
++
++ S <--> The number of successes observed.
++ Input range: [0, XN]
++ Search range: [0, XN]
++
++ XN <--> The number of binomial trials.
++ Input range: (0, +infinity).
++ Search range: [1E-100, 1E100]
++
++ PR <--> The probability of success in each binomial trial.
++ Input range: [0,1].
++ Search range: [0,1]
++
++ OMPR <--> 1-PR
++ Input range: [0,1].
++ Search range: [0,1]
++ PR + OMPR = 1.0
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++ 4 if PR + OMPR .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.5.24 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to reduce the binomial
++ distribution to the cumulative incomplete beta distribution.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++*********************************************************************/
++
++/* {{{ proto float stats_cdf_binomial(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the binomial distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_binomial)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double xn;
++ double bound;
++ double sn;
++ double pr;
++ double ompr;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++
++ if (which < 4) {
++ pr = arg3;
++ ompr = 1.0 - pr;
++ } else {
++ xn = arg3;
++ }
++
++ if (which < 3) {
++ xn = arg2;
++ } else {
++ sn = arg2;
++ }
++
++ if (which == 1) {
++ sn = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfbin((int *)&which, &p, &q, &sn, &xn, &pr, &ompr, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in binomialcdf");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(sn);
++ case 3: RETURN_DOUBLE(xn);
++ case 4: RETURN_DOUBLE(pr);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/*****************************************************************
++ Cumulative Distribution Function
++ Non-central Chi-Square
++
++ Function
++
++ Calculates any one parameter of the non-central chi-square
++ distribution given values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which of the next three argument
++ values is to be calculated from the others.
++ Input range: 1..4
++ iwhich = 1 : Calculate P and Q from X and DF
++ iwhich = 2 : Calculate X from P,DF and PNONC
++ iwhich = 3 : Calculate DF from P,X and PNONC
++ iwhich = 3 : Calculate PNONC from P,X and DF
++
++ P <--> The integral from 0 to X of the non-central chi-square
++ distribution.
++ Input range: [0, 1-1E-16).
++
++ Q <--> 1-P.
++ Q is not used by this subroutine and is only included
++ for similarity with other cdf* routines.
++
++ X <--> Upper limit of integration of the non-central
++ chi-square distribution.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ DF <--> Degrees of freedom of the non-central
++ chi-square distribution.
++ Input range: (0, +infinity).
++ Search range: [ 1E-100, 1E100]
++
++ PNONC <--> Non-centrality parameter of the non-central
++ chi-square distribution.
++ Input range: [0, +infinity).
++ Search range: [0,1E4]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.4.25 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to compute the cumulative
++ distribution function.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++ WARNING
++
++ The computation time required for this routine is proportional
++ to the noncentrality parameter (PNONC). Very large values of
++ this parameter can consume immense computer resources. This is
++ why the search range is bounded by 10,000.
++
++*****************************************************************/
++
++/* {{{ proto float stats_cdf_noncentral_chisquare(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the non-central chi-square distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_noncentral_chisquare)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double bound;
++ double q;
++ double x;
++ double df;
++ double pnonc;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ pnonc = arg3;
++ } else {
++ df = arg3;
++ }
++
++ if (which < 3) {
++ df = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfchn((int *)&which, &p, &q, &x, &df, &pnonc, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdfchn");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(df);
++ case 4: RETURN_DOUBLE(pnonc);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/**************************************************************
++ Cumulative Distribution Function F distribution
++
++ Function
++
++ Calculates any one parameter of the F distribution
++ given values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which of the next four argument
++ values is to be calculated from the others.
++ Legal range: 1..4
++ iwhich = 1 : Calculate P and Q from F,DFN and DFD
++ iwhich = 2 : Calculate F from P,Q,DFN and DFD
++ iwhich = 3 : Calculate DFN from P,Q,F and DFD
++ iwhich = 4 : Calculate DFD from P,Q,F and DFN
++
++ P <--> The integral from 0 to F of the f-density.
++ Input range: [0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ F <--> Upper limit of integration of the f-density.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ DFN < --> Degrees of freedom of the numerator sum of squares.
++ Input range: (0, +infinity).
++ Search range: [ 1E-100, 1E100]
++
++ DFD < --> Degrees of freedom of the denominator sum of squares.
++ Input range: (0, +infinity).
++ Search range: [ 1E-100, 1E100]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.6.2 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to reduce the computation
++ of the cumulative distribution function for the F variate to
++ that of an incomplete beta.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++ WARNING
++
++ The value of the cumulative F distribution is not necessarily
++ monotone in either degrees of freedom. There thus may be two
++ values that provide a given CDF value. This routine assumes
++ monotonicity and will find an arbitrary one of the two values.
++
++**********************************************************************/
++/* {{{ proto float stats_cdf_f(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the F distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_f)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double bound;
++ double dfn;
++ double q;
++ double f;
++ double dfd;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++ if (which < 4) {
++ dfd = arg3;
++ } else {
++ dfn = arg3;
++ }
++ if (which < 3) {
++ dfn = arg2;
++ } else {
++ f = arg2;
++ }
++ if (which == 1) {
++ f = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdff((int *)&which, &p, &q, &f, &dfn, &dfd, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdff");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(f);
++ case 3: RETURN_DOUBLE(dfn);
++ case 4: RETURN_DOUBLE(dfd);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/***********************************************************************
++ Cumulative Distribution Function
++ Non-central F distribution
++
++ Function
++
++ Calculates any one parameter of the Non-central F
++ distribution given values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which of the next five argument
++ values is to be calculated from the others.
++ Legal range: 1..5
++ iwhich = 1 : Calculate P and Q from F,DFN,DFD and PNONC
++ iwhich = 2 : Calculate F from P,Q,DFN,DFD and PNONC
++ iwhich = 3 : Calculate DFN from P,Q,F,DFD and PNONC
++ iwhich = 4 : Calculate DFD from P,Q,F,DFN and PNONC
++ iwhich = 5 : Calculate PNONC from P,Q,F,DFN and DFD
++
++ P <--> The integral from 0 to F of the non-central f-density.
++ Input range: [0,1-1E-16).
++
++ Q <--> 1-P.
++ Q is not used by this subroutine and is only included
++ for similarity with other cdf* routines.
++
++ F <--> Upper limit of integration of the non-central f-density.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ DFN < --> Degrees of freedom of the numerator sum of squares.
++ Input range: (0, +infinity).
++ Search range: [ 1E-100, 1E100]
++
++ DFD < --> Degrees of freedom of the denominator sum of squares.
++ Must be in range: (0, +infinity).
++ Input range: (0, +infinity).
++ Search range: [ 1E-100, 1E100]
++
++ PNONC <-> The non-centrality parameter
++ Input range: [0,infinity)
++ Search range: [0,1E4]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.6.20 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to compute the cumulative
++ distribution function.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++ WARNING
++
++ The computation time required for this routine is proportional
++ to the noncentrality parameter (PNONC). Very large values of
++ this parameter can consume immense computer resources. This is
++ why the search range is bounded by 10,000.
++
++ WARNING
++
++ The value of the cumulative noncentral F distribution is not
++ necessarily monotone in either degrees of freedom. There thus
++ may be two values that provide a given CDF value. This routine
++ assumes monotonicity and will find an arbitrary one of the two
++ values.
++
++***********************************************************************/
++
++/* {{{ proto float stats_cdf_noncentral_f(float par1, float par2, float par3, float par4, int which)
++ Calculates any one parameter of the Non-central F distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_noncentral_f)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double arg4;
++ double p;
++ double q;
++ double f;
++ double dfn;
++ double dfd;
++ double pnonc;
++ double bound;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddddl", &arg1, &arg2, &arg3, &arg4, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 5) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fifth parameter should be in the 1..5 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 5) {
++ pnonc = arg4;
++ } else {
++ dfd = arg4;
++ }
++
++ if (which < 4) {
++ dfd = arg3;
++ } else {
++ dfn = arg3;
++ }
++
++ if (which < 3) {
++ dfn = arg2;
++ } else {
++ f = arg2;
++ }
++
++ if (which == 1) {
++ f = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdffnc((int *)&which, &p, &q, &f, &dfn, &dfd, &pnonc, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdffnc");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(f);
++ case 3: RETURN_DOUBLE(dfn);
++ case 4: RETURN_DOUBLE(dfd);
++ case 5: RETURN_DOUBLE(pnonc);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/************************************************************************
++ Cumulative Distribution Function Non-Central T distribution
++
++ Function
++
++ Calculates any one parameter of the noncentral t distribution give
++ values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which argument
++ values is to be calculated from the others.
++ Legal range: 1..3
++ iwhich = 1 : Calculate P and Q from T,DF,PNONC
++ iwhich = 2 : Calculate T from P,Q,DF,PNONC
++ iwhich = 3 : Calculate DF from P,Q,T
++ iwhich = 4 : Calculate PNONC from P,Q,DF,T
++
++ P <--> The integral from -infinity to t of the noncentral t-den
++ Input range: (0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ T <--> Upper limit of integration of the noncentral t-density.
++ Input range: ( -infinity, +infinity).
++ Search range: [ -1E100, 1E100 ]
++
++ DF <--> Degrees of freedom of the noncentral t-distribution.
++ Input range: (0 , +infinity).
++ Search range: [1e-100, 1E10]
++
++ PNONC <--> Noncentrality parameter of the noncentral t-distributio
++ Input range: [-infinity , +infinity).
++ Search range: [-1e4, 1E4]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Upper tail of the cumulative noncentral t is calculated usin
++ formulae from page 532 of Johnson, Kotz, Balakrishnan, Coninuou
++ Univariate Distributions, Vol 2, 2nd Edition. Wiley (1995)
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++************************************************************************/
++
++/* {{{ proto float stats_stat_noncentral_t(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the noncentral t distribution give values for the others. */
++PHP_FUNCTION(stats_cdf_noncentral_t)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double pnonc;
++ double bound;
++ double p;
++ double q;
++ double t;
++ double df;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ pnonc = arg3;
++ } else {
++ df = arg3;
++ }
++ if (which < 3) {
++ df = arg2;
++ } else {
++ t = arg2;
++ }
++
++ if (which == 1) {
++ t = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdftnc((int *)&which, &p, &q, &t, &df, &pnonc, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(t);
++ case 3: RETURN_DOUBLE(df);
++ case 4: RETURN_DOUBLE(pnonc);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/************************************************************************
++ Cumulative Distribution Function Negative BiNomial distribution
++
++ Function
++
++ Calculates any one parameter of the negative binomial
++ distribution given values for the others.
++
++ The cumulative negative binomial distribution returns the
++ probability that there will be F or fewer failures before the
++ XNth success in binomial trials each of which has probability of
++ success PR.
++
++ The individual term of the negative binomial is the probability of
++ S failures before XN successes and is
++ Choose( S, XN+S-1 ) * PR^(XN) * (1-PR)^S
++
++ Arguments
++
++ WHICH --> Integer indicating which of the next four argument
++ values is to be calculated from the others.
++ Legal range: 1..4
++ iwhich = 1 : Calculate P and Q from S,XN,PR and OMPR
++ iwhich = 2 : Calculate S from P,Q,XN,PR and OMPR
++ iwhich = 3 : Calculate XN from P,Q,S,PR and OMPR
++ iwhich = 4 : Calculate PR and OMPR from P,Q,S and XN
++
++ P <--> The cumulation from 0 to S of the negative
++ binomial distribution.
++ Input range: [0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ S <--> The upper limit of cumulation of the binomial distribution.
++ There are F or fewer failures before the XNth success.
++ Input range: [0, +infinity).
++ Search range: [0, 1E100]
++
++ XN <--> The number of successes.
++ Input range: [0, +infinity).
++ Search range: [0, 1E100]
++
++ PR <--> The probability of success in each binomial trial.
++ Input range: [0,1].
++ Search range: [0,1].
++
++ OMPR <--> 1-PR
++ Input range: [0,1].
++ Search range: [0,1]
++ PR + OMPR = 1.0
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++ 4 if PR + OMPR .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.5.26 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to reduce calculation of
++ the cumulative distribution function to that of an incomplete
++ beta.
++
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++************************************************************************/
++
++/* {{{ proto float stats_cdf_negative_binomial(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the negative binomial distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_negative_binomial)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double bound;
++ double sn;
++ double xn;
++ double pr;
++ double ompr;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ pr = arg3;
++ ompr = 1.0 - pr;
++ } else {
++ xn = arg3;
++ }
++
++ if (which < 3) {
++ xn = arg2;
++ } else {
++ sn = arg2;
++ }
++
++ if (which == 1) {
++ sn = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfnbn((int *)&which, &p, &q, &sn, &xn, &pr, &ompr, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdfnbn");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(sn);
++ case 3: RETURN_DOUBLE(xn);
++ case 4: RETURN_DOUBLE(pr);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/**********************************************************************
++ Cumulative Distribution Function POIsson distribution
++
++ Function
++
++ Calculates any one parameter of the Poisson
++ distribution given values for the others.
++
++ Arguments
++
++ WHICH --> Integer indicating which argument
++ value is to be calculated from the others.
++ Legal range: 1..3
++ iwhich = 1 : Calculate P and Q from S and XLAM
++ iwhich = 2 : Calculate A from P,Q and XLAM
++ iwhich = 3 : Calculate XLAM from P,Q and S
++
++ P <--> The cumulation from 0 to S of the poisson density.
++ Input range: [0,1].
++
++ Q <--> 1-P.
++ Input range: (0, 1].
++ P + Q = 1.0.
++
++ S <--> Upper limit of cumulation of the Poisson.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ XLAM <--> Mean of the Poisson distribution.
++ Input range: [0, +infinity).
++ Search range: [0,1E100]
++
++ STATUS <-- 0 if calculation completed correctly
++ -I if input parameter number I is out of range
++ 1 if answer appears to be lower than lowest
++ search bound
++ 2 if answer appears to be higher than greatest
++ search bound
++ 3 if P + Q .ne. 1
++
++ BOUND <-- Undefined if STATUS is 0
++
++ Bound exceeded by parameter number I if STATUS
++ is negative.
++
++ Lower search bound if STATUS is 1.
++
++ Upper search bound if STATUS is 2.
++
++ Method
++
++ Formula 26.4.21 of Abramowitz and Stegun, Handbook of
++ Mathematical Functions (1966) is used to reduce the computation
++ of the cumulative distribution function to that of computing a
++ chi-square, hence an incomplete gamma function.
++
++ Cumulative distribution function (P) is calculated directly.
++ Computation of other parameters involve a seach for a value that
++ produces the desired value of P. The search relies on the
++ monotinicity of P with the other parameter.
++
++**********************************************************************/
++
++/* {{{ proto float stats_cdf_poisson(float par1, float par2, float par3, int which)
++ Calculates any one parameter of the Poisson distribution given values for the others. */
++PHP_FUNCTION(stats_cdf_poisson)
++{
++ double arg1;
++ double arg2;
++ double p;
++ double q;
++ double x;
++ double xlam;
++ double bound;
++ long which;
++ int status = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddl", &arg1, &arg2, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 3) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 3 ) {
++ xlam = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ cdfpoi((int *)&which, &p, &q, &x, &xlam, &status, &bound);
++ if (status != 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
++ RETURN_FALSE;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(xlam);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++
++static double laplace_quantile(double p)
++{
++ if (p <= 0.5) {
++ return log(2.0*p);
++ } else {
++ return (-log(2.0*(1.0-p)));
++ }
++}
++
++static double laplace_cdf(double x)
++{
++ if (x <= 0) {
++ return (0.5*exp(x));
++ } else {
++ return (1.0 - 0.5*exp(-x));
++ }
++}
++
++
++/* {{{ proto float stats_cdf_laplace(float par1, float par2, float par3, int which)
++ Not documented */
++PHP_FUNCTION(stats_cdf_laplace)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double x;
++ double t;
++ double mean;
++ double sd;
++ long which;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ sd = arg3;
++ } else {
++ mean = arg3;
++ }
++
++ if (which < 3) {
++ mean = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ if (which == 1) {
++ t = (x - mean) / sd;
++ p = laplace_cdf(t);
++ } else {
++ t = laplace_quantile(p);
++ }
++
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(mean + (sd * t));
++ case 3: RETURN_DOUBLE(x - (sd * t));
++ case 4: RETURN_DOUBLE((x - mean) / t);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++static double cauchy_quantile(double p)
++{
++ return (tan(STATS_PI*(p-0.5)));
++}
++
++static double cauchy_cdf (double x)
++{
++ return (0.5+(atan(x)/STATS_PI));
++}
++
++/* {{{ proto float stats_cdf_cauchy(float par1, float par2, float par3, int which)
++ Not documented */
++PHP_FUNCTION(stats_cdf_cauchy)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double x;
++ double t;
++ double mean;
++ double sd;
++ long which;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ sd = arg3;
++ } else {
++ mean = arg3;
++ }
++
++ if (which < 3) {
++ mean = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ if (which == 1) {
++ t = (x - mean) / sd;
++ p = cauchy_cdf(t);
++ } else {
++ t = cauchy_quantile(p);
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(mean + (sd * t));
++ case 3: RETURN_DOUBLE(x - (sd * t));
++ case 4: RETURN_DOUBLE((x - mean) / t);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++static double logistic_cdf(double x)
++{
++ return (1.0/(1.0+exp(-x)));
++}
++
++static double logistic_quantile (double p)
++{
++ return (log(p/(1.0-p)));
++}
++
++/* {{{ proto float stats_cdf_logistic(float par1, float par2, float par3, int which)
++ Not documented */
++PHP_FUNCTION(stats_cdf_logistic)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double sd;
++ double p;
++ double q;
++ double x;
++ double t;
++ double mean;
++ long which;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ sd = arg3;
++ } else {
++ mean = arg3;
++ }
++
++ if (which < 3) {
++ mean = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ if (which == 1) {
++ t = (x - mean) / sd;
++ p = logistic_cdf(t);
++ } else {
++ t = logistic_quantile(p);
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(mean + (sd * t));
++ case 3: RETURN_DOUBLE(x - (sd * t));
++ case 4: RETURN_DOUBLE((x - mean) / t);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/* {{{ proto float stats_cdf_weibull(float par1, float par2, float par3, int which)
++ Not documented */
++PHP_FUNCTION(stats_cdf_weibull)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double x;
++ double a;
++ double b;
++ long which;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ b = arg3;
++ } else {
++ a = arg3;
++ }
++
++ if (which < 3) {
++ a = arg2;
++ } else {
++ x = arg2;
++ }
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ if (which == 1) {
++ p = 1 - exp(-pow(x / b, a));
++ } else {
++ x = b * pow(-log(1.0 - p), 1.0 / a);
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(p);
++ case 2: RETURN_DOUBLE(x);
++ case 3: RETURN_DOUBLE(log(-log(1.0 - p)) / log(x / b));
++ case 4: RETURN_DOUBLE(x / pow(-log(1.0 - p), 1.0 / a));
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++/* {{{ proto float stats_cdf_uniform(float par1, float par2, float par3, int which)
++ Not documented */
++PHP_FUNCTION(stats_cdf_uniform)
++{
++ double arg1;
++ double arg2;
++ double arg3;
++ double p;
++ double q;
++ double x;
++ double a;
++ double b;
++ long which;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 4) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 4) {
++ b = arg3;
++ } else {
++ a = arg3;
++ }
++
++ if (which < 3) {
++ a = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ if (which == 1) {
++ p = 1 - exp(-pow(x / b, a));
++ } else {
++ x = b * pow(-log(1.0 - p), 1.0 / a);
++ }
++
++ switch (which) {
++ case 4: RETURN_DOUBLE((x - (1.0 - p) * a) / p);
++ case 3: RETURN_DOUBLE((x - p * b) / (1.0 - p));
++ case 2: RETURN_DOUBLE(a + p * (b - a));
++ case 1:
++ if (x < a) {
++ p = 0;
++ } else {
++ if (x > b) {
++ p = 1;
++ } else {
++ p = (x - a) / ( b - a);
++ }
++ }
++ RETURN_DOUBLE(p);
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++static double exponential_quantile(double p)
++{
++ return -log(1.0-p);
++}
++
++static double exponential_cdf(double x)
++{
++ return (1.0 - exp(-x));
++}
++
++/* {{{ proto float stats_cdf_exponential(float par1, float par2, int which)
++ Not documented */
++PHP_FUNCTION(stats_cdf_exponential)
++{
++ double arg1;
++ double arg2;
++ double p;
++ double q;
++ double x;
++ double scale;
++ long which;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddl", &arg1, &arg2, &which) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (which < 1 || which > 3) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
++ RETURN_FALSE;
++ }
++
++ if (which < 3) {
++ scale = arg2;
++ } else {
++ x = arg2;
++ }
++
++ if (which == 1) {
++ x = arg1;
++ } else {
++ p = arg1;
++ q = 1.0 - p;
++ }
++
++ switch (which) {
++ case 1: RETURN_DOUBLE(exponential_cdf(x / scale));
++ case 2: RETURN_DOUBLE(scale * exponential_quantile(p));
++ case 3: RETURN_DOUBLE(x / exponential_quantile(p));
++ }
++ RETURN_FALSE; /* never here */
++}
++/* }}} */
++
++
++/*********************/
++/* RANDLIB functions */
++/*********************/
++
++/* {{{ proto void stats_rand_setall(int iseed1, int iseed2)
++ Not documented */
++PHP_FUNCTION(stats_rand_setall)
++{
++ long iseed_1;
++ long iseed_2;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &iseed_1, &iseed_2) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ setall(iseed_1, iseed_2);
++}
++/* }}} */
++
++/* {{{ proto array stats_rand_get_seeds(void)
++ Not documented */
++PHP_FUNCTION(stats_rand_getsd)
++{
++ long iseed_1;
++ long iseed_2;
++
++ if (ZEND_NUM_ARGS() != 0) {
++ WRONG_PARAM_COUNT;
++ }
++ getsd(&iseed_1, &iseed_2);
++
++ array_init(return_value);
++ add_next_index_long(return_value, iseed_1);
++ add_next_index_long(return_value, iseed_2);
++}
++/* }}} */
++
++/* {{{ proto int stats_rand_gen_iuniform(int low, int high)
++ Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive) */
++PHP_FUNCTION(stats_rand_gen_iuniform)
++{
++ long low;
++ long high;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &low, &high) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (high - low > 2147483561L) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "high - low too large. low : %16ld high %16ld", low, high);
++ RETURN_FALSE;
++ }
++ if (low > high) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "low greater than high. low : %16ld high %16ld", low, high);
++ RETURN_FALSE;
++ }
++
++ RETURN_LONG(ignuin(low, high));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_funiform(float low, float high)
++ Generates uniform float between low (exclusive) and high (exclusive) */
++PHP_FUNCTION(stats_rand_gen_funiform)
++{
++ double low;
++ double high;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &low, &high) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (low > high) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "low greater than high. low : %16.6E high : %16.6E", low, high);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(genunf(low, high));
++}
++/* }}} */
++
++/* {{{ proto int stats_rand_gen_int(void)
++ Generates random integer between 1 and 2147483562 */
++PHP_FUNCTION(stats_rand_ignlgi)
++{
++ if (ZEND_NUM_ARGS() != 0) {
++ WRONG_PARAM_COUNT;
++ }
++
++ RETURN_LONG(ignlgi());
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_ranf(void)
++ Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator */
++PHP_FUNCTION(stats_rand_ranf)
++{
++ if (ZEND_NUM_ARGS() != 0) {
++ WRONG_PARAM_COUNT;
++ }
++
++ RETURN_DOUBLE(ranf());
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_beta(float a, float b)
++ Generates beta random deviate. Returns a random deviate from the beta distribution with parameters A and B. The density of the beta is x^(a-1) * (1-x)^(b-1) / B(a,b) for 0<x<1. aa - first parameter of the beta distribution. bb - second parameter of the beta distribution. Method R. C. H. Cheng */
++PHP_FUNCTION(stats_rand_gen_beta)
++{
++ double a;
++ double b;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &a, &b) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (a < 1.0E-37 || b < 1.0E-37) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "'a' or 'b' lower than 1.0E-37. 'a' value : %16.6E 'b' value : %16.6E", a, b);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(genbet(a, b));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_chisquare(float df)
++ Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable. */
++PHP_FUNCTION(stats_rand_gen_chisquare)
++{
++ double df;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &df) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (df <= 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "df <= 0.0. df : %16.6E", df);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(genchi(df));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_exponential(float av)
++ Generates a single random deviate from an exponential distribution with mean "av" */
++PHP_FUNCTION(stats_rand_gen_exponential)
++{
++ double av;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &av) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (av < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "av < 0.0");
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(genexp(av));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_f(float dfn, float dfd)
++ Generates a random deviate from the F (variance ratio) distribution with "dfn" degrees of freedom in the numerator and "dfd" degrees of freedom in the denominator. Method : directly generates ratio of chisquare variates*/
++PHP_FUNCTION(stats_rand_gen_f)
++{
++ double dfn;
++ double dfd;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &dfn, &dfd) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (dfn < 0.0 || dfd < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Degrees of freedom nonpositive. DFN value:%16.6E DFD value:%16.6E", dfn, dfd);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(genf(dfn, dfd));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_gamma(float a, float r)
++ Generates random deviates from the gamma distribution whose density is (A**R)/Gamma(R) * X**(R-1) * Exp(-A*X). Parameters : a - location parameter of Gamma distribution (a > 0), r - shape parameter of Gamma distribution (r > 0) */
++PHP_FUNCTION(stats_rand_gen_gamma)
++{
++ double a;
++ double r;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &a, &r) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (!(a > 0.0 && r > 0.0)) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "A or R nonpositive. A value : %16.6E , R value : %16.6E", a, r);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(gengam(a, r));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_noncenral_chisquare(float df, float xnonc)
++ Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0 */
++PHP_FUNCTION(stats_rand_gen_noncentral_chisquare)
++{
++ double df;
++ double xnonc;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &df, &xnonc) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (df < 1.0 || xnonc < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "df < 1 or xnonc < 0. df value : %16.6E xnonc value : %16.6E", df, xnonc);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(gennch(df, xnonc));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_noncentral_f(float dfn, float dfd, float xnonc)
++ Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central denominator chisquare variate. */
++PHP_FUNCTION(stats_rand_gen_noncenral_f)
++{
++ double dfn;
++ double dfd;
++ double xnonc;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &dfn, &dfd, &xnonc) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (dfn < 1.0 || dfd <= 0.0 || xnonc < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Either (1) Numerator df < 1.0 or (2) Denominator df <= 0.0 or (3) Noncentrality parameter < 0.0. dfn: %16.6E dfd: %16.6E xnonc: %16.6E", dfn, dfd, xnonc);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(gennf(dfn, dfd, xnonc));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_normal(float av, float sd)
++ Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF. */
++PHP_FUNCTION(stats_rand_gen_normal)
++{
++ double av;
++ double sd;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &av, &sd) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (sd < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "sd < 0.0 . sd : %16.6E", sd);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(gennor(av, sd));
++}
++/* }}} */
++
++/* {{{ proto array stats_rand_phrase_to_seeds(string phrase)
++ Uses a phrase (characted string) to generate two seeds for the RGN random number generator. Trailing blanks are eliminated before the seeds are generated. Generated seed values will fall in the range 1..2^30. */
++PHP_FUNCTION(stats_rand_phrase_to_seeds)
++{
++ zval **par1;
++ char *arg1 = NULL;
++ long seed_1;
++ long seed_2;
++
++ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &par1) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++ convert_to_string_ex(par1);
++
++ arg1 = estrndup(Z_STRVAL_PP(par1), Z_STRLEN_PP(par1));
++ phrtsd(arg1, &seed_1, &seed_2);
++ efree(arg1);
++
++ array_init(return_value);
++ add_next_index_long(return_value, seed_1);
++ add_next_index_long(return_value, seed_2);
++}
++/* }}} */
++
++/* {{{ proto int stats_rand_gen_ibinomial(int n, float pp)
++ Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE */
++PHP_FUNCTION(stats_rand_ibinomial)
++{
++ long n;
++ double pp;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ld", &n, &pp) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if ((n < 0) || (pp < 0.0) || (pp > 1.0)) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad values for the arguments. n : %ld pp : %16.6E", n, pp);
++ RETURN_FALSE;
++ }
++
++ RETURN_LONG(ignbin(n, pp));
++}
++/* }}} */
++
++/* {{{ proto int stats_rand_gen_ibinomial_negative(int n, float p)
++ Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)). */
++PHP_FUNCTION(stats_rand_ibinomial_negative)
++{
++ long n;
++ double p;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ld", &n, &p) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (n <= 0L) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "n < 0. n : %ld", n);
++ RETURN_FALSE;
++ }
++ if (p < 0.0F || p > 1.0F) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "p is out of range. p : %16.E", p);
++ RETURN_FALSE;
++ }
++
++ RETURN_LONG(ignnbn(n, p));
++}
++/* }}} */
++
++/* {{{ proto int stats_rand_gen_ipoisson(float mu)
++ Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0). */
++PHP_FUNCTION(stats_rand_gen_ipoisson)
++{
++ double mu;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &mu) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (mu < 0.0F) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "mu < 0.0 . mu : %16.6E", mu);
++ RETURN_FALSE;
++ }
++
++ RETURN_LONG(ignpoi(mu));
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_noncentral_t(float df, float xnonc)
++ Generates a single random deviate from a noncentral T distribution. xnonc - noncentrality parameter. df must be >= 0.0*/
++PHP_FUNCTION(stats_rand_gen_noncentral_t)
++{
++ double df;
++ double xnonc;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &df, &xnonc) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (df < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "df <= 0 . df : %16.6E", df);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(gennor(xnonc, 1) / sqrt(genchi(df) / df) );
++}
++/* }}} */
++
++/* {{{ proto float stats_rand_gen_t(float df)
++ Generates a single random deviate from a T distribution. df must be >= 0.0 */
++PHP_FUNCTION(stats_rand_gen_t)
++{
++ zval **arg1;
++ double df;
++
++ if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++
++ convert_to_double_ex(arg1);
++ df = Z_DVAL_PP(arg1);
++
++ if (df < 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "df <= 0 . df : %16.6E", df);
++ RETURN_FALSE;
++ }
++
++ RETURN_DOUBLE(gennor(0, 1) / sqrt(genchi(df) / df));
++}
++/* }}} */
++
++/***************************/
++/* Start density functions */
++/***************************/
++
++/* {{{ proto float stats_dens_normal(float x, float ave, float stdev)
++ Not documented */
++PHP_FUNCTION(stats_dens_normal)
++{
++ double stdev;
++ double ave;
++ double x;
++ double y;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddd", &x, &ave, &stdev) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (stdev == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
++ RETURN_FALSE;
++ }
++
++ z = (x - ave) / stdev;
++ y = (1.0 / (stdev * sqrt(2.0 * STATS_PI))) * exp (-0.5 * z * z);
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_cauchy(float x, float ave, float stdev)
++ Not documented */
++PHP_FUNCTION(stats_dens_cauchy)
++{
++ double stdev;
++ double ave;
++ double x;
++ double y;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddd", &x, &ave, &stdev) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (stdev == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
++ RETURN_FALSE;
++ }
++
++ z = (x - ave) / stdev;
++ y = 1.0 / (stdev*STATS_PI * (1.0 + (z * z)));
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_laplace(float x, float ave, float stdev)
++ Not documented */
++PHP_FUNCTION(stats_dens_laplace)
++{
++ double stdev;
++ double ave;
++ double x;
++ double y;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddd", &x, &ave, &stdev) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (stdev == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
++ RETURN_FALSE;
++ }
++
++ z = fabs((x - ave) / stdev);
++ y = (1.0 / (2.0 * stdev)) * exp(- z);
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_logistic(float x, float ave, float stdev)
++ Not documented */
++PHP_FUNCTION(stats_dens_logistic)
++{
++ double stdev;
++ double ave;
++ double x;
++ double y;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddd", &x, &ave, &stdev) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (stdev == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
++ RETURN_FALSE;
++ }
++
++ z = exp((x - ave) / stdev);
++ y = z / (stdev * pow(1 + z, 2.0));
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_beta(float x, float a, float b)
++ Not documented */
++PHP_FUNCTION(stats_dens_beta)
++{
++ double a;
++ double b;
++ double beta;
++ double x;
++ double y;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &a, &b) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ beta = 1.0 / exp(lgamma(a) + lgamma(b) - lgamma(a + b));
++ y = beta * pow(x, a - 1.0) * pow(1.0 - x, b - 1.0);
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_weibull(float x, float a, float b)
++ Not documented */
++PHP_FUNCTION(stats_dens_weibull)
++{
++ double a;
++ double b;
++ double x;
++ double y;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &a, &b) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (b == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "b is 0.0");
++ RETURN_FALSE;
++ }
++
++ y = (a / b) * pow(x / b, a - 1.0) * exp(pow(- x / b, a));
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_uniform(float x, float a, float b)
++ Not documented */
++PHP_FUNCTION(stats_dens_uniform)
++{
++ double a;
++ double b;
++ double x;
++ double y;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddd", &x, &a, &b) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (a == b) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "b == a == %16.6E", a);
++ RETURN_FALSE;
++ }
++
++ if ((x <= b) && (x >= a)) {
++ y = 1.0 / (b - a);
++ } else {
++ y = 0.0;
++ }
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_chisquare(float x, float dfr)
++ Not documented */
++PHP_FUNCTION(stats_dens_chisquare)
++{
++ double dfr;
++ double e;
++ double x;
++ double y;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "dd", &x, &dfr) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ e = dfr / 2.0;
++ z = ((e - 1.0) * log(x)) - ((x / 2.0) +(e * log(2.0)) + lgamma(e));
++ y = exp (z);
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_t(float x, float dfr)
++ Not documented */
++PHP_FUNCTION(stats_dens_t)
++{
++ double dfr;
++ double e;
++ double f;
++ double fac1;
++ double fac2;
++ double fac3;
++ double x;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &x, &dfr) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (dfr == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "dfr == 0.0");
++ RETURN_FALSE;
++ }
++
++ e = dfr / 2.0;
++ f = e + 0.5;
++ fac1 = lgamma(f);
++ fac2 = f * log(1.0 + (x * x) / dfr);
++ fac3 = lgamma(e) + 0.5 * log(dfr * STATS_PI);
++
++ RETURN_DOUBLE(exp( fac1 - (fac2 + fac3) ));
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_gamma(float x, float shape, float scale)
++ Not documented */
++PHP_FUNCTION(stats_dens_gamma)
++{
++ double shape;
++ double scale;
++ double x;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &shape, &scale) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (scale == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "scale == 0.0");
++ RETURN_FALSE;
++ }
++
++ z = ((shape - 1.0) * log(x)) -
++ (
++ (x / scale) + lgamma(shape) + (shape * log(scale))
++ )
++ ;
++
++ RETURN_DOUBLE(exp(z));
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_exponential(float x, float scale)
++ Not documented */
++PHP_FUNCTION(stats_dens_exponential)
++{
++ double scale;
++ double x;
++ double y;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &x, &scale) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if (scale == 0.0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "scale == 0.0");
++ RETURN_FALSE;
++ }
++
++ if (x < 0) {
++ y = 0;
++ } else {
++ y = exp(-x / scale) / scale;
++ }
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_f(float x, float dfr1, float dfr2)
++ */
++PHP_FUNCTION(stats_dens_f)
++{
++ double dfr1;
++ double dfr2;
++ double efr1;
++ double efr2;
++ double fac1;
++ double fac2;
++ double fac3;
++ double fac4;
++ double x;
++ double z;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &dfr1, &dfr2) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ efr1 = dfr1 / 2.0;
++ efr2 = dfr2 / 2.0;
++ fac1 = (efr1 - 1.0) * log (x);
++ fac2 = (efr1 + efr2) * log (dfr2 + (dfr1 * x));
++ fac3 = (efr1 * log (dfr1)) + (efr2 * log (dfr2));
++ fac4 = lgamma (efr1) + lgamma (efr2) - lgamma (efr1 + efr2);
++
++ z = (fac1 + fac3) - (fac2 + fac4);
++
++ RETURN_DOUBLE(exp(z));
++}
++/* }}} */
++
++static double binom(double x, double n)
++{
++ int i;
++ double di;
++ double s = 1.0;
++
++ for (i = 0; i < x; ++i) {
++ di = (double) i;
++ s = (s * (n - di)) / (di + 1.0);
++ }
++
++ return s;
++}
++
++/* {{{ proto float stats_dens_pmf_binomial(float x, float n, float pi)
++ Not documented */
++PHP_FUNCTION(stats_dens_pmf_binomial)
++{
++ double pi;
++ double y;
++ double n;
++ double x;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
++ "ddd", &x, &n, &pi) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if ((x == 0.0 && n == 0.0) || (pi == 0.0 && x == 0.0)
++ || ( (1.0 - pi) == 0.0 && (n - x) == 0) ) {
++
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Params leading to pow(0, 0). x:%16.6E n:%16.6E pi:%16.6E", x, n, pi);
++ RETURN_FALSE;
++ }
++
++ y = binom(x,n) * pow(pi,x) * pow((1.0 - pi), (n - x));
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_pmf_poisson(float x, float lb)
++ Not documented */
++PHP_FUNCTION(stats_dens_pmf_poisson)
++{
++ double lb;
++ double z;
++ double x;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &x, &lb) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ z = (x * log(lb)) - (lb + lgamma(x + 1.0));
++
++ RETURN_DOUBLE(exp(z));
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_negative_binomial(float x, float n, float pi)
++ Not documented */
++PHP_FUNCTION(stats_dens_pmf_negative_binomial)
++{
++ double pi;
++ double y;
++ double n;
++ double x;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &n, &pi) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if ((pi == 0.0 && n == 0.0) || ((1.0 - pi) == 0.0 && x == 0.0)) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Params leading to pow(0, 0). x:%16.6E n:%16.6E pi:%16.6E", x, n, pi);
++ RETURN_FALSE;
++ }
++
++ y = binom(x, n + x - 1.0) * pow(pi,n) * pow((1.0 - pi), x);
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/* {{{ proto float stats_dens_pmf_hypergeometric(float n1, float n2, float N1, float N2)
++ */
++PHP_FUNCTION(stats_dens_pmf_hypergeometric)
++{
++ double y;
++ double N1;
++ double N2;
++ double n1;
++ double n2;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dddd", &n1, &n2, &N1, &N2) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ if ((int)(n1 + n2) >= (int)(N1 + N2)) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "possible division by zero - n1+n2 >= N1+N2");
++ /* RETURN_FALSE; */
++ }
++
++ y = binom(n1, N1) * binom (n2, N2)/binom(n1 + n2, N1 + N2);
++
++ RETURN_DOUBLE(y);
++}
++/* }}} */
++
++/************************/
++/* Statistics functions */
++/************************/
++
++/* {{{ proto float stats_stat_powersum(array arr, float power)
++ Not documented */
++PHP_FUNCTION(stats_stat_powersum)
++{
++ zval **arg1, **arg2, **data; /* pointer to array entry */
++ HashPosition pos; /* hash iterator */
++ double power;
++ double sum = 0.0;
++
++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++
++ convert_to_array_ex(arg1);
++ convert_to_double_ex(arg2);
++ power = Z_DVAL_PP(arg2);
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data, &pos) == SUCCESS) {
++ convert_to_double_ex(data);
++ if (Z_DVAL_PP(data) != 0 && power != 0) {
++ sum += pow (Z_DVAL_PP(data), power);
++ } else {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Both value and power are zero");
++ }
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos);
++ }
++
++ RETURN_DOUBLE(sum);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_innerproduct(array arr1, array arr2)
++ */
++PHP_FUNCTION(stats_stat_innerproduct)
++{
++ zval **arg1, **arg2;
++ zval **data1, **data2; /* pointers to array entries */
++ HashPosition pos1; /* hash iterator */
++ HashPosition pos2; /* hash iterator */
++ double sum = 0.0;
++
++
++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++ convert_to_array_ex(arg1);
++ convert_to_array_ex(arg2);
++
++ if (zend_hash_num_elements(Z_ARRVAL_PP(arg1)) != zend_hash_num_elements(Z_ARRVAL_PP(arg2))) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unequal number of X and Y coordinates");
++ RETURN_FALSE;
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS
++ && zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
++ convert_to_double_ex(data1);
++ convert_to_double_ex(data2);
++ sum = Z_DVAL_PP(data1) * Z_DVAL_PP(data2);
++
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
++ }
++
++ RETURN_DOUBLE(sum);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_independent_t(array arr1, array arr2)
++ Not documented */
++PHP_FUNCTION(stats_stat_independent_t)
++{
++ zval **arg1, **arg2;
++ zval **data1, **data2; /* pointers to array entries */
++ HashPosition pos1; /* hash iterator */
++ HashPosition pos2; /* hash iterator */
++ int xnum = 0, ynum = 0;
++ double cur;
++ double sx = 0.0;
++ double sxx = 0.0;
++ double sy = 0.0;
++ double syy = 0.0;
++ double mx;
++ double vx;
++ double my;
++ double vy;
++ double sp;
++ double fc;
++ double ts;
++
++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++ convert_to_array_ex(arg1);
++ convert_to_array_ex(arg2);
++
++ xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
++ ynum = zend_hash_num_elements(Z_ARRVAL_PP(arg2));
++ if ( xnum < 2 || ynum < 2) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Each argument should have more than 1 element");
++ RETURN_FALSE;
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS) {
++ convert_to_double_ex(data1);
++ cur = Z_DVAL_PP(data1);
++ sx += cur;
++ sxx += cur * cur;
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
++ convert_to_double_ex(data2);
++ cur = Z_DVAL_PP(data2);
++ sy += cur;
++ syy += cur * cur;
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
++ }
++
++ mx = sx / xnum;
++ my = sy / ynum;
++ vx = (sxx - (xnum * mx * mx)) / (xnum - 1.0);
++ vy = (syy - (ynum * my * my)) / (ynum - 1.0);
++ sp = (((xnum - 1.0) * vx) + ((ynum - 1.0) * vy)) / (xnum + ynum - 2.0);
++ fc = (1.0 / xnum) + (1.0 / ynum);
++ ts = (mx - my) / sqrt(sp * fc);
++
++ RETURN_DOUBLE(ts);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_paired_t(array arr1, array arr2)
++ Not documented */
++PHP_FUNCTION(stats_stat_paired_t)
++{
++ zval **arg1, **arg2, **data1, **data2; /* pointers to array entries */
++ HashPosition pos1; /* hash iterator */
++ HashPosition pos2; /* hash iterator */
++ int xnum = 0;
++ int ynum = 0;
++ double sd = 0.0;
++ double sdd = 0.0;
++ double md;
++ double td;
++ double ts;
++ double cur;
++
++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++ convert_to_array_ex(arg1);
++ convert_to_array_ex(arg2);
++
++ xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
++ ynum = zend_hash_num_elements(Z_ARRVAL_PP(arg2));
++
++ if (xnum != ynum) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unequal number of X and Y coordinates");
++ RETURN_FALSE;
++ }
++ if (xnum < 2) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "arr1 should have atleast 2 elements");
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS
++ &&
++ zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
++ convert_to_double_ex(data1);
++ convert_to_double_ex(data2);
++
++ cur = Z_DVAL_PP(data1) - Z_DVAL_PP(data2);
++ sd += cur;
++ sdd += cur * cur;
++
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
++ }
++
++ md = sd / xnum;
++ td = sqrt((sdd - (xnum * md * md)) / (xnum - 1.0));
++ ts = sqrt((double) xnum) * (md / td);
++
++ RETURN_DOUBLE(ts);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_percentile(float df, float xnonc)
++ Not documented */
++PHP_FUNCTION(stats_stat_percentile)
++{
++ zval **arg1, **arg2;
++ zval **data1; /* pointers to array entries */
++ HashPosition pos1; /* hash iterator */
++ long ilow;
++ long iupp;
++ int xnum = 0;
++ int cnt = -1;
++ double perc;
++ double low;
++ double upp;
++ double val = 0.0;
++
++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++
++ convert_to_array_ex(arg1);
++ convert_to_double_ex(arg2);
++ perc = Z_DVAL_PP(arg2);
++
++ xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
++
++ if (zend_hash_sort(Z_ARRVAL_PP(arg1), zend_qsort, stats_array_data_compare, 1 TSRMLS_CC) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
++
++ low = .01 * perc * (double)xnum;
++ upp = .01 * (100.0 - perc) * (double)xnum;
++ ilow = floor(low);
++ iupp = floor(upp);
++ if ((ilow + iupp) == xnum) {
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS) {
++ if (++cnt == ilow - 1 ) {
++ convert_to_double_ex(data1);
++ val = Z_DVAL_PP(data1);
++
++ zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1);
++ convert_to_double_ex(data1);
++ val += Z_DVAL_PP(data1);
++ val = val / 2.0;
++ break;
++ }
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
++ }
++ } else {
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS) {
++ if (++cnt == ilow) {
++ convert_to_double_ex(data1);
++ val += Z_DVAL_PP(data1);
++ break;
++ }
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
++ }
++ }
++
++ RETURN_DOUBLE(val);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_correlation(array arr1, array arr2)
++ Not documented */
++PHP_FUNCTION(stats_stat_correlation)
++{
++ zval **arg1, **arg2;
++ zval **data1, **data2; /* pointers to array entries */
++ HashPosition pos1; /* hash iterator */
++ HashPosition pos2; /* hash iterator */
++ int xnum = 0;
++ int ynum = 0;
++ double sx = 0.0;
++ double sy = 0.0;
++ double sxx = 0.0;
++ double syy = 0.0;
++ double sxy = 0.0;
++ double mx;
++ double my;
++ double vx;
++ double vy;
++ double cc;
++ double rr;
++
++ if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
++ WRONG_PARAM_COUNT;
++ }
++
++ convert_to_array_ex(arg1);
++ convert_to_array_ex(arg2);
++
++ xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
++ ynum = zend_hash_num_elements(Z_ARRVAL_PP(arg2));
++
++ if (xnum != ynum) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unequal number of X and Y coordinates");
++ RETURN_FALSE;
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
++
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS
++ && zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
++
++ convert_to_double_ex(data1);
++ convert_to_double_ex(data2);
++
++ sx += Z_DVAL_PP(data1);
++ sxx += Z_DVAL_PP(data1) * Z_DVAL_PP(data1);
++ sy += Z_DVAL_PP(data2);
++ syy += Z_DVAL_PP(data2) * Z_DVAL_PP(data2);
++ sxy += Z_DVAL_PP(data1) * Z_DVAL_PP(data2);
++
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
++ zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
++ }
++
++ mx = sx / xnum;
++ my = sy / ynum;
++ vx = sxx - (xnum * mx * mx);
++ vy = syy - (ynum * my * my);
++ cc = sxy - (xnum * mx * my);
++ rr = cc / sqrt(vx * vy);
++
++ RETURN_DOUBLE(rr);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_binomial_coef(int x, int n)
++ Not documented */
++PHP_FUNCTION(stats_stat_binomial_coef)
++{
++ int i;
++ int n;
++ int x;
++ double bc = 1.0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &x, &n) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ for (i = 0; i < x; ++i) {
++ bc = (bc * (n - i)) / (i + 1);
++ }
++
++ RETURN_DOUBLE(bc);
++}
++/* }}} */
++
++/* {{{ proto float stats_stat_gennch(int n)
++ Not documented */
++PHP_FUNCTION(stats_stat_factorial)
++{
++ int n;
++ int i;
++ double f = 1;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &n) == FAILURE) {
++ RETURN_FALSE;
++ }
++
++ for (i = 1; i <= n; ++i) {
++ f *= i;
++ }
++
++ RETURN_DOUBLE(f);
++}
++/* }}} */
++
++
++/* {{{ php_population_variance
++*/
++static long double php_math_mean(zval *arr)
++{
++ double sum = 0.0;
++ zval **entry;
++ HashPosition pos;
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
++ convert_to_double_ex(entry);
++ sum += Z_DVAL_PP(entry);
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
++ }
++ /*
++ we don't check whether the array has 0 elements. this is left to the caller - no need
++ to kill performance by checking on every level.
++ */
++ return sum / zend_hash_num_elements(Z_ARRVAL_P(arr));
++}
++/* }}} */
++
++
++/* {{{ php_population_variance
++*/
++static long double php_population_variance(zval *arr, zend_bool sample)
++{
++ double mean, vr = 0.0;
++ zval **entry;
++ HashPosition pos;
++ int elements_num;
++
++ elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr));
++
++ mean = php_math_mean(arr);
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
++ double d;
++ convert_to_double_ex(entry);
++ d = Z_DVAL_PP(entry) - mean;
++ vr += d*d;
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
++ }
++ if (sample) {
++ --elements_num;
++ }
++ return (vr / elements_num);
++}
++/* }}} */
++
++
++/* {{{ proto float stats_variance(array a [, bool sample])
++ Returns the population variance */
++PHP_FUNCTION(stats_variance)
++{
++ zval *arr;
++ zend_bool sample = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|b", &arr, &sample) == FAILURE) {
++ return;
++ }
++ if (zend_hash_num_elements(Z_ARRVAL_P(arr)) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
++ RETURN_FALSE;
++ }
++ if (sample && zend_hash_num_elements(Z_ARRVAL_P(arr)) == 1) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has only 1 element");
++ RETURN_FALSE;
++ }
++ RETURN_DOUBLE(php_population_variance(arr, sample));
++}
++/* }}} */
++
++/* {{{ proto float stats_standard_deviation(array a[, bool sample = false])
++ Returns the standard deviation */
++PHP_FUNCTION(stats_standard_deviation)
++{
++ zval *arr;
++ zend_bool sample = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|b", &arr, &sample) == FAILURE) {
++ return;
++ }
++ if (zend_hash_num_elements(Z_ARRVAL_P(arr)) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
++ RETURN_FALSE;
++ }
++ if (sample && zend_hash_num_elements(Z_ARRVAL_P(arr)) == 1) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has only 1 element");
++ RETURN_FALSE;
++ }
++ RETURN_DOUBLE(sqrt(php_population_variance(arr, sample)));
++}
++/* }}} */
++
++
++/* {{{ proto float stats_absolute_deviation(array a)
++ Returns the absolute deviation of an array of values*/
++PHP_FUNCTION(stats_absolute_deviation)
++{
++ zval *arr;
++ double mean = 0.0, abs_dev = 0.0;
++ zval **entry;
++ HashPosition pos;
++ int elements_num;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
++ return;
++ }
++ if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
++ RETURN_FALSE;
++ }
++
++ mean = php_math_mean(arr);
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
++ convert_to_double_ex(entry);
++ abs_dev += fabs(Z_DVAL_PP(entry) - mean);
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
++ }
++
++ RETURN_DOUBLE(abs_dev / elements_num);
++}
++/* }}} */
++
++/* {{{ proto float stats_harmonic_mean(array a)
++ Returns the harmonic mean of an array of values */
++PHP_FUNCTION(stats_harmonic_mean)
++{
++ zval *arr;
++ double sum = 0.0;
++ zval **entry;
++ HashPosition pos;
++ int elements_num;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
++ return;
++ }
++ if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
++ RETURN_FALSE;
++ }
++
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
++ convert_to_double_ex(entry);
++ if (Z_DVAL_PP(entry) == 0) {
++ RETURN_LONG(0);
++ }
++ sum += 1 / Z_DVAL_PP(entry);
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
++ }
++
++ RETURN_DOUBLE(elements_num / sum);
++}
++/* }}} */
++
++/* {{{ proto float stats_skew(array a)
++ Computes the skewness of the data in the array */
++PHP_FUNCTION(stats_skew)
++{
++ zval *arr;
++ double mean, std_dev, skew = 0.0;
++ zval **entry;
++ HashPosition pos;
++ int elements_num, i = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
++ return;
++ }
++ if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
++ RETURN_FALSE;
++ }
++
++ mean = php_math_mean(arr);
++ std_dev = sqrt(php_population_variance(arr, 0));
++
++ /* the calculation of the skewness is protected of value "explosion". a bit more
++ FP operations performed but more accurateness.
++ */
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
++ double tmp;
++ convert_to_double_ex(entry);
++ tmp = ((Z_DVAL_PP(entry) - mean) / std_dev);
++ skew += (tmp*tmp*tmp - skew) / (i + 1);
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
++ ++i;
++ }
++
++ RETURN_DOUBLE(skew);
++}
++/* }}} */
++
++/* {{{ proto float stats_kurtosis(array a)
++ Computes the kurtosis of the data in the array */
++PHP_FUNCTION(stats_kurtosis)
++{
++ zval *arr;
++ double mean, std_dev, avg = 0.0;
++ zval **entry;
++ HashPosition pos;
++ int elements_num, i = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
++ return;
++ }
++ if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
++ RETURN_FALSE;
++ }
++
++ mean = php_math_mean(arr);
++ std_dev = sqrt(php_population_variance(arr, 0));
++
++ /* the calculation of the kurtosis is protected of value "explosion". a bit more
++ FP operations performed but more accurateness.
++ */
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
++ double tmp;
++ convert_to_double_ex(entry);
++ tmp = ((Z_DVAL_PP(entry) - mean) / std_dev);
++ avg += (tmp*tmp*tmp*tmp - avg) / (i + 1);
++
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
++ ++i;
++ }
++
++ RETURN_DOUBLE(avg - 3);
++}
++/* }}} */
++
++
++/* {{{ proto float stats_covariance(array a, array b)
++ Computes the covariance of two data sets */
++PHP_FUNCTION(stats_covariance)
++{
++ zval *arr_1, *arr_2;
++ double mean_1, mean_2, covar = 0.0;
++ zval **entry;
++ HashPosition pos_1, pos_2;
++ int elements_num, i = 0;
++
++ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "aa", &arr_1, &arr_2) == FAILURE) {
++ return;
++ }
++ if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr_1))) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first array has zero elements");
++ RETURN_FALSE;
++ }
++ if (zend_hash_num_elements(Z_ARRVAL_P(arr_2)) == 0) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The second array has zero elements");
++ RETURN_FALSE;
++ }
++ if (elements_num != zend_hash_num_elements(Z_ARRVAL_P(arr_2))) {
++ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The datasets are not of the same size");
++ RETURN_FALSE;
++ }
++
++ mean_1 = php_math_mean(arr_1);
++ mean_2 = php_math_mean(arr_2);
++ /* the calculation of the covariance is protected of value "explosion". a bit more
++ FP operations performed but more accurateness.
++ */
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr_1), &pos_1);
++ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr_2), &pos_2);
++ while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr_1), (void **)&entry, &pos_1) == SUCCESS) {
++ double tmp_1, tmp_2;
++ convert_to_double_ex(entry);
++ tmp_1 = Z_DVAL_PP(entry) - mean_1;
++
++ if (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr_2), (void **)&entry, &pos_2) != SUCCESS) {
++ break;
++ }
++ convert_to_double_ex(entry);
++ tmp_2 = Z_DVAL_PP(entry) - mean_2;
++
++ covar += (tmp_1 * tmp_2 - covar) / (i + 1);
++
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr_1), &pos_1);
++ zend_hash_move_forward_ex(Z_ARRVAL_P(arr_2), &pos_2);
++ ++i;
++ }
++
++ RETURN_DOUBLE(covar);
++}
++/* }}} */
++
++
++/*
++ * Local variables:
++ * tab-width: 4
++ * c-basic-offset: 4
++ * indent-tabs-mode: t
++ * End:
++ */
+diff -dPNur stats-1.0.2/php_stats.h trunk/php_stats.h
+--- stats-1.0.2/php_stats.h 1970-01-01 01:00:00.000000000 +0100
++++ trunk/php_stats.h 2012-10-29 17:22:36.000000000 +0100
+@@ -0,0 +1,129 @@
++/*
++ +----------------------------------------------------------------------+
++ | PHP Version 5 |
++ +----------------------------------------------------------------------+
++ | Copyright (c) 1997-2004 The PHP Group |
++ +----------------------------------------------------------------------+
++ | This source file is subject to version 3.0 of the PHP license, |
++ | that is bundled with this package in the file LICENSE, and is |
++ | available through the world-wide-web at the following url: |
++ | http://www.php.net/license/3_0.txt. |
++ | If you did not receive a copy of the PHP license and are unable to |
++ | obtain it through the world-wide-web, please send a note to |
++ | license@php.net so we can mail you a copy immediately. |
++ +----------------------------------------------------------------------+
++ | Author: Andrey Hristov <andrey@php.net> |
++ +----------------------------------------------------------------------+
++*/
++
++/* $Id: php_stats.h 256977 2008-04-08 16:13:17Z sfox $ */
++
++#ifndef PHP_STATS_H
++#define PHP_STATS_H
++
++extern zend_module_entry stats_module_entry;
++#define phpext_stats_ptr &stats_module_entry
++
++#define PHP_STATS_VERSION "1.0.3-dev"
++
++#ifdef PHP_WIN32
++#define PHP_STATS_API __declspec(dllexport)
++#else
++#define PHP_STATS_API
++#endif
++
++
++PHP_MINFO_FUNCTION(stats);
++
++PHP_FUNCTION(stats_bin_counts);
++PHP_FUNCTION(stats_cdf_t);
++PHP_FUNCTION(stats_cdf_normal);
++PHP_FUNCTION(stats_cdf_gamma);
++PHP_FUNCTION(stats_cdf_chisquare);
++PHP_FUNCTION(stats_cdf_beta);
++PHP_FUNCTION(stats_cdf_binomial);
++PHP_FUNCTION(stats_cdf_noncentral_chisquare);
++PHP_FUNCTION(stats_cdf_f);
++PHP_FUNCTION(stats_cdf_noncentral_f);
++PHP_FUNCTION(stats_cdf_noncentral_t);
++PHP_FUNCTION(stats_cdf_negative_binomial);
++PHP_FUNCTION(stats_cdf_poisson);
++PHP_FUNCTION(stats_cdf_laplace);
++PHP_FUNCTION(stats_cdf_cauchy);
++PHP_FUNCTION(stats_cdf_logistic);
++PHP_FUNCTION(stats_cdf_weibull);
++PHP_FUNCTION(stats_cdf_uniform);
++PHP_FUNCTION(stats_cdf_exponential);
++PHP_FUNCTION(stats_rand_setall);
++PHP_FUNCTION(stats_rand_getsd);
++PHP_FUNCTION(stats_rand_gen_iuniform);
++PHP_FUNCTION(stats_rand_gen_funiform);
++PHP_FUNCTION(stats_rand_ignlgi);
++PHP_FUNCTION(stats_rand_ranf);
++PHP_FUNCTION(stats_rand_gen_beta);
++PHP_FUNCTION(stats_rand_gen_chisquare);
++PHP_FUNCTION(stats_rand_gen_exponential);
++PHP_FUNCTION(stats_rand_gen_f);
++PHP_FUNCTION(stats_rand_gen_gamma);
++PHP_FUNCTION(stats_rand_gen_noncentral_chisquare);
++PHP_FUNCTION(stats_rand_gen_noncenral_f);
++PHP_FUNCTION(stats_rand_gen_normal);
++PHP_FUNCTION(stats_rand_phrase_to_seeds);
++PHP_FUNCTION(stats_rand_ibinomial);
++PHP_FUNCTION(stats_rand_ibinomial_negative);
++PHP_FUNCTION(stats_rand_gen_ipoisson);
++PHP_FUNCTION(stats_rand_gen_noncentral_t);
++PHP_FUNCTION(stats_rand_gen_t);
++PHP_FUNCTION(stats_dens_normal);
++PHP_FUNCTION(stats_dens_cauchy);
++PHP_FUNCTION(stats_dens_laplace);
++PHP_FUNCTION(stats_dens_logistic);
++PHP_FUNCTION(stats_dens_beta);
++PHP_FUNCTION(stats_dens_weibull);
++PHP_FUNCTION(stats_dens_uniform);
++PHP_FUNCTION(stats_dens_chisquare);
++PHP_FUNCTION(stats_dens_t);
++PHP_FUNCTION(stats_dens_gamma);
++PHP_FUNCTION(stats_dens_exponential);
++PHP_FUNCTION(stats_dens_f);
++PHP_FUNCTION(stats_dens_pmf_binomial);
++PHP_FUNCTION(stats_dens_pmf_poisson);
++PHP_FUNCTION(stats_dens_pmf_negative_binomial);
++PHP_FUNCTION(stats_dens_pmf_hypergeometric);
++PHP_FUNCTION(stats_stat_powersum);
++PHP_FUNCTION(stats_stat_innerproduct);
++PHP_FUNCTION(stats_stat_independent_t);
++PHP_FUNCTION(stats_stat_paired_t);
++PHP_FUNCTION(stats_stat_percentile);
++PHP_FUNCTION(stats_stat_correlation);
++PHP_FUNCTION(stats_stat_binomial_coef);
++PHP_FUNCTION(stats_stat_factorial);
++PHP_FUNCTION(stats_absolute_deviation);
++PHP_FUNCTION(stats_standard_deviation);
++PHP_FUNCTION(stats_variance);
++PHP_FUNCTION(stats_harmonic_mean);
++PHP_FUNCTION(stats_skew);
++PHP_FUNCTION(stats_kurtosis);
++PHP_FUNCTION(stats_covariance);
++
++
++#ifdef ZTS
++#define STATS_D zend_stats_globals *stats_globals
++#define STATS_G(v) (stats_globals->v)
++#define STATS_FETCH() zend_stats_globals *stats_globals = ts_resource(stats_globals_id)
++#else
++#define STATS_D
++#define STATS_G(v) (stats_globals.v)
++#define STATS_FETCH()
++#endif
++
++#endif /* PHP_STATS_H */
++
++
++/*
++ * Local variables:
++ * tab-width: 4
++ * c-basic-offset: 4
++ * indent-tabs-mode: t
++ * End:
++ */
+diff -dPNur stats-1.0.2/statistics.c trunk/statistics.c
+--- stats-1.0.2/statistics.c 2006-05-31 19:24:26.000000000 +0200
++++ trunk/statistics.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3728 +0,0 @@
+-/*
+- +----------------------------------------------------------------------+
+- | PHP Version 5 |
+- +----------------------------------------------------------------------+
+- | Copyright (c) 1997-2004 The PHP Group |
+- +----------------------------------------------------------------------+
+- | This source file is subject to version 3.0 of the PHP license, |
+- | that is bundled with this package in the file LICENSE, and is |
+- | available through the world-wide-web at the following url: |
+- | http://www.php.net/license/3_0.txt. |
+- | If you did not receive a copy of the PHP license and are unable to |
+- | obtain it through the world-wide-web, please send a note to |
+- | license@php.net so we can mail you a copy immediately. |
+- +----------------------------------------------------------------------+
+- | Author: Andrey Hristov <andrey@php.net> |
+- +----------------------------------------------------------------------+
+-*/
+-
+-/* $Id: statistics.c,v 1.11 2006/05/30 18:02:36 andrey Exp $ */
+-
+-
+-#ifdef HAVE_CONFIG_H
+-#include "config.h"
+-#endif
+-
+-#include "php.h"
+-#include "php_statistics.h"
+-#include "ext/standard/info.h"
+-#include "ext/standard/head.h"
+-#include <stdlib.h>
+-#include <string.h>
+-#include <ctype.h>
+-#include <math.h>
+-#include "randlib.h"
+-#include "cdflib.h"
+-
+-#define STATS_PI 3.14159265358979323846
+-
+-
+-#ifdef PHP_WIN32
+-extern double fd_lgamma(double x);
+-#define lgamma fd_lgamma
+-#endif
+-
+-static double logistic_quantile(double p);
+-static double logistic_cdf(double x);
+-static double cauchy_quantile(double p);
+-static double cauchy_cdf(double x);
+-static double laplace_quantile(double p);
+-static double laplace_cdf(double x);
+-static double exponential_quantile(double p);
+-static double exponential_cdf(double x);
+-static double binom(double x, double n);
+-
+-zend_function_entry statistics_functions[] = {
+- PHP_FE(stats_cdf_t, NULL)
+- PHP_FE(stats_cdf_normal, NULL)
+- PHP_FE(stats_cdf_gamma, NULL)
+- PHP_FE(stats_cdf_chisquare, NULL)
+- PHP_FE(stats_cdf_beta, NULL)
+- PHP_FE(stats_cdf_binomial, NULL)
+- PHP_FE(stats_cdf_noncentral_chisquare,NULL)
+- PHP_FE(stats_cdf_f, NULL)
+- PHP_FE(stats_cdf_noncentral_f, NULL)
+- PHP_FE(stats_cdf_noncentral_t, NULL)
+- PHP_FE(stats_cdf_negative_binomial, NULL)
+- PHP_FE(stats_cdf_poisson, NULL)
+- PHP_FE(stats_cdf_laplace, NULL)
+- PHP_FE(stats_cdf_cauchy, NULL)
+- PHP_FE(stats_cdf_logistic, NULL)
+- PHP_FE(stats_cdf_weibull, NULL)
+- PHP_FE(stats_cdf_uniform, NULL)
+- PHP_FE(stats_cdf_exponential, NULL)
+- PHP_FE(stats_rand_setall, NULL)
+- PHP_FE(stats_rand_getsd, NULL)
+- PHP_FE(stats_rand_gen_iuniform, NULL)
+- PHP_FE(stats_rand_gen_funiform, NULL)
+- PHP_FE(stats_rand_ignlgi, NULL)
+- PHP_FE(stats_rand_ranf, NULL)
+- PHP_FE(stats_rand_gen_beta, NULL)
+- PHP_FE(stats_rand_gen_chisquare, NULL)
+- PHP_FE(stats_rand_gen_exponential, NULL)
+- PHP_FE(stats_rand_gen_f, NULL)
+- PHP_FE(stats_rand_gen_gamma, NULL)
+- PHP_FE(stats_rand_gen_noncentral_chisquare,NULL)
+- PHP_FE(stats_rand_gen_noncenral_f, NULL)
+- PHP_FE(stats_rand_gen_normal, NULL)
+- PHP_FE(stats_rand_phrase_to_seeds, NULL)
+- PHP_FE(stats_rand_ibinomial, NULL)
+- PHP_FE(stats_rand_ibinomial_negative,NULL)
+- PHP_FE(stats_rand_gen_ipoisson, NULL)
+- PHP_FE(stats_rand_gen_noncentral_t, NULL)
+- PHP_FE(stats_rand_gen_t, NULL)
+- PHP_FE(stats_dens_normal, NULL)
+- PHP_FE(stats_dens_cauchy, NULL)
+- PHP_FE(stats_dens_laplace, NULL)
+- PHP_FE(stats_dens_logistic, NULL)
+- PHP_FE(stats_dens_beta, NULL)
+- PHP_FE(stats_dens_weibull, NULL)
+- PHP_FE(stats_dens_uniform, NULL)
+- PHP_FE(stats_dens_chisquare, NULL)
+- PHP_FE(stats_dens_t, NULL)
+- PHP_FE(stats_dens_gamma, NULL)
+- PHP_FE(stats_dens_exponential, NULL)
+- PHP_FE(stats_dens_f, NULL)
+- PHP_FE(stats_dens_pmf_binomial, NULL)
+- PHP_FE(stats_dens_pmf_poisson, NULL)
+- PHP_FE(stats_dens_pmf_negative_binomial,NULL)
+- PHP_FE(stats_dens_pmf_hypergeometric, NULL)
+- PHP_FE(stats_stat_powersum, NULL)
+- PHP_FE(stats_stat_innerproduct, NULL)
+- PHP_FE(stats_stat_independent_t, NULL)
+- PHP_FE(stats_stat_paired_t, NULL)
+- PHP_FE(stats_stat_percentile, NULL)
+- PHP_FE(stats_stat_correlation, NULL)
+- PHP_FE(stats_stat_binomial_coef, NULL)
+- PHP_FE(stats_stat_factorial, NULL)
+- PHP_FE(stats_standard_deviation, NULL)
+- PHP_FE(stats_absolute_deviation, NULL)
+- PHP_FE(stats_variance, NULL)
+- PHP_FE(stats_harmonic_mean, NULL)
+- PHP_FE(stats_skew, NULL)
+- PHP_FE(stats_kurtosis, NULL)
+- PHP_FE(stats_covariance, NULL)
+- {NULL, NULL, NULL}
+-};
+-
+-zend_module_entry stats_module_entry = {
+- STANDARD_MODULE_HEADER,
+- "stats",
+- statistics_functions,
+- NULL,
+- NULL,
+- NULL,
+- NULL,
+- PHP_MINFO(stats),
+- "1.1",
+- STANDARD_MODULE_PROPERTIES,
+-};
+-
+-#ifdef COMPILE_DL_STATS
+-ZEND_GET_MODULE(stats)
+-#endif
+-
+-
+-PHP_MINFO_FUNCTION(stats)
+-{
+- php_info_print_table_start();
+- php_info_print_table_row(2, "Statistics Support", "enabled");
+- php_info_print_table_end();
+-}
+-
+-
+-
+-/* Numbers are always smaller than strings int this function as it
+- * anyway doesn't make much sense to compare two different data types.
+- * This keeps it consistant and simple.
+- *
+- * This is not correct any more, depends on what compare_func is set to.
+- */
+-static int stats_array_data_compare(const void *a, const void *b TSRMLS_DC)
+-{
+- Bucket *f;
+- Bucket *s;
+- pval result;
+- pval *first;
+- pval *second;
+-
+- f = *((Bucket **) a);
+- s = *((Bucket **) b);
+-
+- first = *((pval **) f->pData);
+- second = *((pval **) s->pData);
+-
+- if (numeric_compare_function(&result, first, second TSRMLS_CC) == FAILURE) {
+- return 0;
+- }
+-
+- if (Z_TYPE(result) == IS_DOUBLE) {
+- if (Z_DVAL(result) < 0) {
+- return -1;
+- } else if (Z_DVAL(result) > 0) {
+- return 1;
+- } else {
+- return 0;
+- }
+- }
+-
+- convert_to_long(&result);
+-
+- if (Z_LVAL(result) < 0) {
+- return -1;
+- } else if (Z_LVAL(result) > 0) {
+- return 1;
+- }
+-
+- return 0;
+-}
+-
+-
+-
+-/**************************************/
+-/* Cumulative Distributions Functions */
+-/**************************************/
+-
+-/******************************************************
+- Cumulative Distribution Function
+- T distribution
+-
+- Function
+-
+-
+- Calculates any one parameter of the t distribution given
+- values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which argument
+- values is to be calculated from the others.
+- Legal range: 1..3
+- iwhich = 1 : Calculate P and Q from T and DF
+- iwhich = 2 : Calculate T from P,Q and DF
+- iwhich = 3 : Calculate DF from P,Q and T
+-
+- P <--> The integral from -infinity to t of the t-density.
+- Input range: (0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- T <--> Upper limit of integration of the t-density.
+- Input range: ( -infinity, +infinity).
+- Search range: [ -1E100, 1E100 ]
+-
+- DF <--> Degrees of freedom of the t-distribution.
+- Input range: (0 , +infinity).
+- Search range: [1e-100, 1E10]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.5.27 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to reduce the computation
+- of the cumulative distribution function to that of an incomplete
+- beta.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-******************************************************/
+-
+-/* {{{ proto float stats_cdf_t(float par1, float par2, int which)
+- Calculates any one parameter of the T distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_t)
+-{
+- double arg1;
+- double arg2;
+- double df;
+- double bound;
+- double p;
+- double q;
+- double t;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddl", &arg1, &arg2, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 3) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 3 ) {
+- df = arg2;
+- } else {
+- t = arg2;
+- }
+- if (which == 1) {
+- t = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdft((int *)&which, &p, &q, &t, &df, &status, &bound);
+-
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(t);
+- case 3: RETURN_DOUBLE(df);
+- }
+- RETURN_FALSE; /* should never be reached */
+-}
+-/* }}} */
+-
+-/*********************************************************************
+- Cumulative Distribution Function NORmal distribution
+-
+- Calculates any one parameter of the normal
+- distribution given values for the others.
+-
+-
+- Arguments
+-
+-
+- WHICH --> Integer indicating which of the next parameter
+- values is to be calculated using values of the others.
+- Legal range: 1..4
+- iwhich = 1 : Calculate P and Q from X,MEAN and SD
+- iwhich = 2 : Calculate X from P,Q,MEAN and SD
+- iwhich = 3 : Calculate MEAN from P,Q,X and SD
+- iwhich = 4 : Calculate SD from P,Q,X and MEAN
+-
+- P <--> The integral from -infinity to X of the normal density.
+- Input range: (0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- X < --> Upper limit of integration of the normal-density.
+- Input range: ( -infinity, +infinity)
+-
+- MEAN <--> The mean of the normal density.
+- Input range: (-infinity, +infinity)
+-
+- SD <--> Standard Deviation of the normal density.
+- Input range: (0, +infinity).
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- A slightly modified version of ANORM from
+-
+- Cody, W.D. (1993). "ALGORITHM 715: SPECFUN - A Portabel FORTRAN
+- Package of Special Function Routines and Test Drivers"
+- acm Transactions on Mathematical Software. 19, 22-32.
+-
+- is used to calulate the cumulative standard normal distribution.
+-
+- The rational functions from pages 90-95 of Kennedy and Gentle,
+- Statistical Computing, Marcel Dekker, NY, 1980 are used as
+- starting values to Newton's Iterations which compute the inverse
+- standard normal. Therefore no searches are necessary for any
+- parameter.
+-
+- For X < -15, the asymptotic expansion for the normal is used as
+- the starting value in finding the inverse standard normal.
+- This is formula 26.2.12 of Abramowitz and Stegun.
+-
+- Note
+-
+- The normal density is proportional to
+- exp( - 0.5 * (( X - MEAN)/SD)**2)
+-***********************************************************************/
+-
+-/* {{{ proto float stats_stat_gennch(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the normal distribution given values for thee others. */
+-PHP_FUNCTION(stats_cdf_normal)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double sd;
+- double bound;
+- double p;
+- double q;
+- double x;
+- double mean;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- sd = arg3;
+- } else {
+- mean = arg3;
+- }
+-
+- if (which < 3) {
+- mean = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfnor((int *)&which, &p, &q, &x, &mean, &sd, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(mean);
+- case 4: RETURN_DOUBLE(sd);
+- }
+- RETURN_FALSE; /* should never be reached */
+-}
+-/* }}} */
+-
+-
+-/*********************************************************************
+- Cumulative Distribution Function
+- GAMma Distribution
+-
+-
+- Function
+-
+-
+- Calculates any one parameter of the gamma
+- distribution given values for the others.
+-
+-
+- Arguments
+-
+-
+- WHICH --> Integer indicating which of the next four argument
+- values is to be calculated from the others.
+- Legal range: 1..4
+- iwhich = 1 : Calculate P and Q from X,SHAPE and SCALE
+- iwhich = 2 : Calculate X from P,Q,SHAPE and SCALE
+- iwhich = 3 : Calculate SHAPE from P,Q,X and SCALE
+- iwhich = 4 : Calculate SCALE from P,Q,X and SHAPE
+-
+- P <--> The integral from 0 to X of the gamma density.
+- Input range: [0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- X <--> The upper limit of integration of the gamma density.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- SHAPE <--> The shape parameter of the gamma density.
+- Input range: (0, +infinity).
+- Search range: [1E-100,1E100]
+-
+- SCALE <--> The scale parameter of the gamma density.
+- Input range: (0, +infinity).
+- Search range: (1E-100,1E100]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+- 10 if the gamma or inverse gamma routine cannot
+- compute the answer. Usually happens only for
+- X and SHAPE very large (gt 1E10 or more)
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+-
+- Method
+-
+-
+- Cumulative distribution function (P) is calculated directly by
+- the code associated with:
+-
+- DiDinato, A. R. and Morris, A. H. Computation of the incomplete
+- gamma function ratios and their inverse. ACM Trans. Math.
+- Softw. 12 (1986), 377-393.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+-
+- Note
+-
+-
+-
+- The gamma density is proportional to
+- T**(SHAPE - 1) * EXP(- SCALE * T)
+-**************************************************************************/
+-/* {{{ proto float stats_cdf_gamma(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the gamma distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_gamma)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double bound;
+- double p;
+- double q;
+- double x;
+- double shape;
+- double scale;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- scale = arg3;
+- } else {
+- shape = arg3;
+- }
+-
+- if (which < 3) {
+- shape = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfgam((int *)&which, &p, &q, &x, &shape, &scale, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(shape);
+- case 4: RETURN_DOUBLE(scale);
+- }
+- RETURN_FALSE; /* should never be reached */
+-}
+-/* }}} */
+-
+-/*****************************************************************
+- Cumulative Distribution Function
+- CHI-Square distribution
+-
+- Function
+-
+- Calculates any one parameter of the chi-square
+- distribution given values for the others.
+-
+- Arguments
+-
+-
+- WHICH --> Integer indicating which of the next three argument
+- values is to be calculated from the others.
+- Legal range: 1..3
+- iwhich = 1 : Calculate P and Q from X and DF
+- iwhich = 2 : Calculate X from P,Q and DF
+- iwhich = 3 : Calculate DF from P,Q and X
+-
+- P <--> The integral from 0 to X of the chi-square
+- distribution.
+- Input range: [0, 1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- X <--> Upper limit of integration of the non-central
+- chi-square distribution.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- DF <--> Degrees of freedom of the
+- chi-square distribution.
+- Input range: (0, +infinity).
+- Search range: [ 1E-100, 1E100]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+- 10 indicates error returned from cumgam. See
+- references in cdfgam
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+-
+- Method
+-
+-
+- Formula 26.4.19 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to reduce the chisqure
+- distribution to the incomplete distribution.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-*****************************************************************/
+-/* {{{ proto float stats_cdf_chisquare(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the chi-square distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_chisquare)
+-{
+- double arg1;
+- double arg2;
+- double bound;
+- double p;
+- double q;
+- double x;
+- double df;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddl", &arg1, &arg2, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 3) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 3 ) {
+- df = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfchi((int *)&which, &p, &q, &x, &df, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(df);
+- }
+- RETURN_FALSE; /* should never be here */
+-}
+-/* }}} */
+-
+-/*******************************************************************
+- Cumulative Distribution Function
+- BETa Distribution
+-
+- Function
+-
+- Calculates any one parameter of the beta distribution given
+- values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which of the next four argument
+- values is to be calculated from the others.
+- Legal range: 1..4
+- iwhich = 1 : Calculate P and Q from X,Y,A and B
+- iwhich = 2 : Calculate X and Y from P,Q,A and B
+- iwhich = 3 : Calculate A from P,Q,X,Y and B
+- iwhich = 4 : Calculate B from P,Q,X,Y and A
+-
+- P <--> The integral from 0 to X of the chi-square
+- distribution.
+- Input range: [0, 1].
+-
+- Q <--> 1-P.
+- Input range: [0, 1].
+- P + Q = 1.0.
+-
+- X <--> Upper limit of integration of beta density.
+- Input range: [0,1].
+- Search range: [0,1]
+-
+- Y <--> 1-X.
+- Input range: [0,1].
+- Search range: [0,1]
+- X + Y = 1.0.
+-
+- A <--> The first parameter of the beta density.
+- Input range: (0, +infinity).
+- Search range: [1D-100,1D100]
+-
+- B <--> The second parameter of the beta density.
+- Input range: (0, +infinity).
+- Search range: [1D-100,1D100]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+- 4 if X + Y .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Cumulative distribution function (P) is calculated directly by
+- code associated with the following reference.
+-
+- DiDinato, A. R. and Morris, A. H. Algorithm 708: Significant
+- Digit Computation of the Incomplete Beta Function Ratios. ACM
+- Trans. Math. Softw. 18 (1993), 360-373.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+- Note
+-
+- The beta density is proportional to
+- t^(A-1) * (1-t)^(B-1)
+-
+-*******************************************************************/
+-
+-/* {{{ proto float stats_cdf_beta(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the beta distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_beta)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double x;
+- double bound;
+- double y;
+- double a;
+- double b;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+-
+- if (which < 4) {
+- b = arg3;
+- } else {
+- a = arg3;
+- }
+-
+- if (which < 3) {
+- a = arg2;
+- } else {
+- x = arg2;
+- y = 1.0 - x;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- y = 1.0 - x;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfbet((int *)&which, &p, &q, &x, &y, &a, &b, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(a);
+- case 4: RETURN_DOUBLE(b);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/*********************************************************************
+- Cumulative Distribution Function
+- BINomial distribution
+-
+- Function
+-
+- Calculates any one parameter of the binomial
+- distribution given values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which of the next four argument
+- values is to be calculated from the others.
+- Legal range: 1..4
+- iwhich = 1 : Calculate P and Q from S,XN,PR and OMPR
+- iwhich = 2 : Calculate S from P,Q,XN,PR and OMPR
+- iwhich = 3 : Calculate XN from P,Q,S,PR and OMPR
+- iwhich = 4 : Calculate PR and OMPR from P,Q,S and XN
+-
+- P <--> The cumulation from 0 to S of the binomial distribution.
+- (Probablility of S or fewer successes in XN trials each
+- with probability of success PR.)
+- Input range: [0,1].
+-
+- Q <--> 1-P.
+- Input range: [0, 1].
+- P + Q = 1.0.
+-
+- S <--> The number of successes observed.
+- Input range: [0, XN]
+- Search range: [0, XN]
+-
+- XN <--> The number of binomial trials.
+- Input range: (0, +infinity).
+- Search range: [1E-100, 1E100]
+-
+- PR <--> The probability of success in each binomial trial.
+- Input range: [0,1].
+- Search range: [0,1]
+-
+- OMPR <--> 1-PR
+- Input range: [0,1].
+- Search range: [0,1]
+- PR + OMPR = 1.0
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+- 4 if PR + OMPR .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.5.24 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to reduce the binomial
+- distribution to the cumulative incomplete beta distribution.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+-*********************************************************************/
+-
+-/* {{{ proto float stats_cdf_binomial(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the binomial distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_binomial)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double xn;
+- double bound;
+- double sn;
+- double pr;
+- double ompr;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+-
+- if (which < 4) {
+- pr = arg3;
+- ompr = 1.0 - pr;
+- } else {
+- xn = arg3;
+- }
+-
+- if (which < 3) {
+- xn = arg2;
+- } else {
+- sn = arg2;
+- }
+-
+- if (which == 1) {
+- sn = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfbin((int *)&which, &p, &q, &sn, &xn, &pr, &ompr, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in binomialcdf");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(sn);
+- case 3: RETURN_DOUBLE(xn);
+- case 4: RETURN_DOUBLE(pr);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/*****************************************************************
+- Cumulative Distribution Function
+- Non-central Chi-Square
+-
+- Function
+-
+- Calculates any one parameter of the non-central chi-square
+- distribution given values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which of the next three argument
+- values is to be calculated from the others.
+- Input range: 1..4
+- iwhich = 1 : Calculate P and Q from X and DF
+- iwhich = 2 : Calculate X from P,DF and PNONC
+- iwhich = 3 : Calculate DF from P,X and PNONC
+- iwhich = 3 : Calculate PNONC from P,X and DF
+-
+- P <--> The integral from 0 to X of the non-central chi-square
+- distribution.
+- Input range: [0, 1-1E-16).
+-
+- Q <--> 1-P.
+- Q is not used by this subroutine and is only included
+- for similarity with other cdf* routines.
+-
+- X <--> Upper limit of integration of the non-central
+- chi-square distribution.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- DF <--> Degrees of freedom of the non-central
+- chi-square distribution.
+- Input range: (0, +infinity).
+- Search range: [ 1E-100, 1E100]
+-
+- PNONC <--> Non-centrality parameter of the non-central
+- chi-square distribution.
+- Input range: [0, +infinity).
+- Search range: [0,1E4]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.4.25 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to compute the cumulative
+- distribution function.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+- WARNING
+-
+- The computation time required for this routine is proportional
+- to the noncentrality parameter (PNONC). Very large values of
+- this parameter can consume immense computer resources. This is
+- why the search range is bounded by 10,000.
+-
+-*****************************************************************/
+-
+-/* {{{ proto float stats_cdf_noncentral_chisquare(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the non-central chi-square distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_noncentral_chisquare)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double bound;
+- double q;
+- double x;
+- double df;
+- double pnonc;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- pnonc = arg3;
+- } else {
+- df = arg3;
+- }
+-
+- if (which < 3) {
+- df = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfchn((int *)&which, &p, &q, &x, &df, &pnonc, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdfchn");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(df);
+- case 4: RETURN_DOUBLE(pnonc);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/**************************************************************
+- Cumulative Distribution Function F distribution
+-
+- Function
+-
+- Calculates any one parameter of the F distribution
+- given values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which of the next four argument
+- values is to be calculated from the others.
+- Legal range: 1..4
+- iwhich = 1 : Calculate P and Q from F,DFN and DFD
+- iwhich = 2 : Calculate F from P,Q,DFN and DFD
+- iwhich = 3 : Calculate DFN from P,Q,F and DFD
+- iwhich = 4 : Calculate DFD from P,Q,F and DFN
+-
+- P <--> The integral from 0 to F of the f-density.
+- Input range: [0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- F <--> Upper limit of integration of the f-density.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- DFN < --> Degrees of freedom of the numerator sum of squares.
+- Input range: (0, +infinity).
+- Search range: [ 1E-100, 1E100]
+-
+- DFD < --> Degrees of freedom of the denominator sum of squares.
+- Input range: (0, +infinity).
+- Search range: [ 1E-100, 1E100]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.6.2 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to reduce the computation
+- of the cumulative distribution function for the F variate to
+- that of an incomplete beta.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+- WARNING
+-
+- The value of the cumulative F distribution is not necessarily
+- monotone in either degrees of freedom. There thus may be two
+- values that provide a given CDF value. This routine assumes
+- monotonicity and will find an arbitrary one of the two values.
+-
+-**********************************************************************/
+-/* {{{ proto float stats_cdf_f(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the F distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_f)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double bound;
+- double dfn;
+- double q;
+- double f;
+- double dfd;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+- if (which < 4) {
+- dfd = arg3;
+- } else {
+- dfn = arg3;
+- }
+- if (which < 3) {
+- dfn = arg2;
+- } else {
+- f = arg2;
+- }
+- if (which == 1) {
+- f = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdff((int *)&which, &p, &q, &f, &dfn, &dfd, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdff");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(f);
+- case 3: RETURN_DOUBLE(dfn);
+- case 4: RETURN_DOUBLE(dfd);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/***********************************************************************
+- Cumulative Distribution Function
+- Non-central F distribution
+-
+- Function
+-
+- Calculates any one parameter of the Non-central F
+- distribution given values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which of the next five argument
+- values is to be calculated from the others.
+- Legal range: 1..5
+- iwhich = 1 : Calculate P and Q from F,DFN,DFD and PNONC
+- iwhich = 2 : Calculate F from P,Q,DFN,DFD and PNONC
+- iwhich = 3 : Calculate DFN from P,Q,F,DFD and PNONC
+- iwhich = 4 : Calculate DFD from P,Q,F,DFN and PNONC
+- iwhich = 5 : Calculate PNONC from P,Q,F,DFN and DFD
+-
+- P <--> The integral from 0 to F of the non-central f-density.
+- Input range: [0,1-1E-16).
+-
+- Q <--> 1-P.
+- Q is not used by this subroutine and is only included
+- for similarity with other cdf* routines.
+-
+- F <--> Upper limit of integration of the non-central f-density.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- DFN < --> Degrees of freedom of the numerator sum of squares.
+- Input range: (0, +infinity).
+- Search range: [ 1E-100, 1E100]
+-
+- DFD < --> Degrees of freedom of the denominator sum of squares.
+- Must be in range: (0, +infinity).
+- Input range: (0, +infinity).
+- Search range: [ 1E-100, 1E100]
+-
+- PNONC <-> The non-centrality parameter
+- Input range: [0,infinity)
+- Search range: [0,1E4]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.6.20 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to compute the cumulative
+- distribution function.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+- WARNING
+-
+- The computation time required for this routine is proportional
+- to the noncentrality parameter (PNONC). Very large values of
+- this parameter can consume immense computer resources. This is
+- why the search range is bounded by 10,000.
+-
+- WARNING
+-
+- The value of the cumulative noncentral F distribution is not
+- necessarily monotone in either degrees of freedom. There thus
+- may be two values that provide a given CDF value. This routine
+- assumes monotonicity and will find an arbitrary one of the two
+- values.
+-
+-***********************************************************************/
+-
+-/* {{{ proto float stats_cdf_noncentral_f(float par1, float par2, float par3, float par4, int which)
+- Calculates any one parameter of the Non-central F distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_noncentral_f)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double arg4;
+- double p;
+- double q;
+- double f;
+- double dfn;
+- double dfd;
+- double pnonc;
+- double bound;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddddl", &arg1, &arg2, &arg3, &arg4, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 5) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fifth parameter should be in the 1..5 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 5) {
+- pnonc = arg4;
+- } else {
+- dfd = arg4;
+- }
+-
+- if (which < 4) {
+- dfd = arg3;
+- } else {
+- dfn = arg3;
+- }
+-
+- if (which < 3) {
+- dfn = arg2;
+- } else {
+- f = arg2;
+- }
+-
+- if (which == 1) {
+- f = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdffnc((int *)&which, &p, &q, &f, &dfn, &dfd, &pnonc, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdffnc");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(f);
+- case 3: RETURN_DOUBLE(dfn);
+- case 4: RETURN_DOUBLE(dfd);
+- case 5: RETURN_DOUBLE(pnonc);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/************************************************************************
+- Cumulative Distribution Function Non-Central T distribution
+-
+- Function
+-
+- Calculates any one parameter of the noncentral t distribution give
+- values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which argument
+- values is to be calculated from the others.
+- Legal range: 1..3
+- iwhich = 1 : Calculate P and Q from T,DF,PNONC
+- iwhich = 2 : Calculate T from P,Q,DF,PNONC
+- iwhich = 3 : Calculate DF from P,Q,T
+- iwhich = 4 : Calculate PNONC from P,Q,DF,T
+-
+- P <--> The integral from -infinity to t of the noncentral t-den
+- Input range: (0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- T <--> Upper limit of integration of the noncentral t-density.
+- Input range: ( -infinity, +infinity).
+- Search range: [ -1E100, 1E100 ]
+-
+- DF <--> Degrees of freedom of the noncentral t-distribution.
+- Input range: (0 , +infinity).
+- Search range: [1e-100, 1E10]
+-
+- PNONC <--> Noncentrality parameter of the noncentral t-distributio
+- Input range: [-infinity , +infinity).
+- Search range: [-1e4, 1E4]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Upper tail of the cumulative noncentral t is calculated usin
+- formulae from page 532 of Johnson, Kotz, Balakrishnan, Coninuou
+- Univariate Distributions, Vol 2, 2nd Edition. Wiley (1995)
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+-************************************************************************/
+-
+-/* {{{ proto float stats_stat_noncentral_t(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the noncentral t distribution give values for the others. */
+-PHP_FUNCTION(stats_cdf_noncentral_t)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double pnonc;
+- double bound;
+- double p;
+- double q;
+- double t;
+- double df;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- pnonc = arg3;
+- } else {
+- df = arg3;
+- }
+- if (which < 3) {
+- df = arg2;
+- } else {
+- t = arg2;
+- }
+-
+- if (which == 1) {
+- t = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdftnc((int *)&which, &p, &q, &t, &df, &pnonc, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(t);
+- case 3: RETURN_DOUBLE(df);
+- case 4: RETURN_DOUBLE(pnonc);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/************************************************************************
+- Cumulative Distribution Function Negative BiNomial distribution
+-
+- Function
+-
+- Calculates any one parameter of the negative binomial
+- distribution given values for the others.
+-
+- The cumulative negative binomial distribution returns the
+- probability that there will be F or fewer failures before the
+- XNth success in binomial trials each of which has probability of
+- success PR.
+-
+- The individual term of the negative binomial is the probability of
+- S failures before XN successes and is
+- Choose( S, XN+S-1 ) * PR^(XN) * (1-PR)^S
+-
+- Arguments
+-
+- WHICH --> Integer indicating which of the next four argument
+- values is to be calculated from the others.
+- Legal range: 1..4
+- iwhich = 1 : Calculate P and Q from S,XN,PR and OMPR
+- iwhich = 2 : Calculate S from P,Q,XN,PR and OMPR
+- iwhich = 3 : Calculate XN from P,Q,S,PR and OMPR
+- iwhich = 4 : Calculate PR and OMPR from P,Q,S and XN
+-
+- P <--> The cumulation from 0 to S of the negative
+- binomial distribution.
+- Input range: [0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- S <--> The upper limit of cumulation of the binomial distribution.
+- There are F or fewer failures before the XNth success.
+- Input range: [0, +infinity).
+- Search range: [0, 1E100]
+-
+- XN <--> The number of successes.
+- Input range: [0, +infinity).
+- Search range: [0, 1E100]
+-
+- PR <--> The probability of success in each binomial trial.
+- Input range: [0,1].
+- Search range: [0,1].
+-
+- OMPR <--> 1-PR
+- Input range: [0,1].
+- Search range: [0,1]
+- PR + OMPR = 1.0
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+- 4 if PR + OMPR .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.5.26 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to reduce calculation of
+- the cumulative distribution function to that of an incomplete
+- beta.
+-
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+-************************************************************************/
+-
+-/* {{{ proto float stats_cdf_negative_binomial(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the negative binomial distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_negative_binomial)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double bound;
+- double sn;
+- double xn;
+- double pr;
+- double ompr;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- pr = arg3;
+- ompr = 1.0 - pr;
+- } else {
+- xn = arg3;
+- }
+-
+- if (which < 3) {
+- xn = arg2;
+- } else {
+- sn = arg2;
+- }
+-
+- if (which == 1) {
+- sn = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfnbn((int *)&which, &p, &q, &sn, &xn, &pr, &ompr, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error in cdfnbn");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(sn);
+- case 3: RETURN_DOUBLE(xn);
+- case 4: RETURN_DOUBLE(pr);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/**********************************************************************
+- Cumulative Distribution Function POIsson distribution
+-
+- Function
+-
+- Calculates any one parameter of the Poisson
+- distribution given values for the others.
+-
+- Arguments
+-
+- WHICH --> Integer indicating which argument
+- value is to be calculated from the others.
+- Legal range: 1..3
+- iwhich = 1 : Calculate P and Q from S and XLAM
+- iwhich = 2 : Calculate A from P,Q and XLAM
+- iwhich = 3 : Calculate XLAM from P,Q and S
+-
+- P <--> The cumulation from 0 to S of the poisson density.
+- Input range: [0,1].
+-
+- Q <--> 1-P.
+- Input range: (0, 1].
+- P + Q = 1.0.
+-
+- S <--> Upper limit of cumulation of the Poisson.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- XLAM <--> Mean of the Poisson distribution.
+- Input range: [0, +infinity).
+- Search range: [0,1E100]
+-
+- STATUS <-- 0 if calculation completed correctly
+- -I if input parameter number I is out of range
+- 1 if answer appears to be lower than lowest
+- search bound
+- 2 if answer appears to be higher than greatest
+- search bound
+- 3 if P + Q .ne. 1
+-
+- BOUND <-- Undefined if STATUS is 0
+-
+- Bound exceeded by parameter number I if STATUS
+- is negative.
+-
+- Lower search bound if STATUS is 1.
+-
+- Upper search bound if STATUS is 2.
+-
+- Method
+-
+- Formula 26.4.21 of Abramowitz and Stegun, Handbook of
+- Mathematical Functions (1966) is used to reduce the computation
+- of the cumulative distribution function to that of computing a
+- chi-square, hence an incomplete gamma function.
+-
+- Cumulative distribution function (P) is calculated directly.
+- Computation of other parameters involve a seach for a value that
+- produces the desired value of P. The search relies on the
+- monotinicity of P with the other parameter.
+-
+-**********************************************************************/
+-
+-/* {{{ proto float stats_cdf_poisson(float par1, float par2, float par3, int which)
+- Calculates any one parameter of the Poisson distribution given values for the others. */
+-PHP_FUNCTION(stats_cdf_poisson)
+-{
+- double arg1;
+- double arg2;
+- double p;
+- double q;
+- double x;
+- double xlam;
+- double bound;
+- long which;
+- int status = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddl", &arg1, &arg2, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 3) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 3 ) {
+- xlam = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- cdfpoi((int *)&which, &p, &q, &x, &xlam, &status, &bound);
+- if (status != 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Computation Error");
+- RETURN_FALSE;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(xlam);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-
+-static double laplace_quantile(double p)
+-{
+- if (p <= 0.5) {
+- return log(2.0*p);
+- } else {
+- return (-log(2.0*(1.0-p)));
+- }
+-}
+-
+-static double laplace_cdf(double x)
+-{
+- if (x <= 0) {
+- return (0.5*exp(x));
+- } else {
+- return (1.0 - 0.5*exp(-x));
+- }
+-}
+-
+-
+-/* {{{ proto float stats_cdf_laplace(float par1, float par2, float par3, int which)
+- Not documented */
+-PHP_FUNCTION(stats_cdf_laplace)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double x;
+- double t;
+- double mean;
+- double sd;
+- long which;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- sd = arg3;
+- } else {
+- mean = arg3;
+- }
+-
+- if (which < 3) {
+- mean = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- if (which == 1) {
+- t = (x - mean) / sd;
+- p = laplace_cdf(t);
+- } else {
+- t = laplace_quantile(p);
+- }
+-
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(mean + (sd * t));
+- case 3: RETURN_DOUBLE(x - (sd * t));
+- case 4: RETURN_DOUBLE((x - mean) / t);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-static double cauchy_quantile(double p)
+-{
+- return (tan(STATS_PI*(p-0.5)));
+-}
+-
+-static double cauchy_cdf (double x)
+-{
+- return (0.5+(atan(x)/STATS_PI));
+-}
+-
+-/* {{{ proto float stats_cdf_cauchy(float par1, float par2, float par3, int which)
+- Not documented */
+-PHP_FUNCTION(stats_cdf_cauchy)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double x;
+- double t;
+- double mean;
+- double sd;
+- long which;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- sd = arg3;
+- } else {
+- mean = arg3;
+- }
+-
+- if (which < 3) {
+- mean = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- if (which == 1) {
+- t = (x - mean) / sd;
+- p = cauchy_cdf(t);
+- } else {
+- t = cauchy_quantile(p);
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(mean + (sd * t));
+- case 3: RETURN_DOUBLE(x - (sd * t));
+- case 4: RETURN_DOUBLE((x - mean) / t);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-static double logistic_cdf(double x)
+-{
+- return (1.0/(1.0+exp(-x)));
+-}
+-
+-static double logistic_quantile (double p)
+-{
+- return (log(p/(1.0-p)));
+-}
+-
+-/* {{{ proto float stats_cdf_logistic(float par1, float par2, float par3, int which)
+- Not documented */
+-PHP_FUNCTION(stats_cdf_logistic)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double sd;
+- double p;
+- double q;
+- double x;
+- double t;
+- double mean;
+- long which;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- sd = arg3;
+- } else {
+- mean = arg3;
+- }
+-
+- if (which < 3) {
+- mean = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- if (which == 1) {
+- t = (x - mean) / sd;
+- p = logistic_cdf(t);
+- } else {
+- t = logistic_quantile(p);
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(mean + (sd * t));
+- case 3: RETURN_DOUBLE(x - (sd * t));
+- case 4: RETURN_DOUBLE((x - mean) / t);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_cdf_weibull(float par1, float par2, float par3, int which)
+- Not documented */
+-PHP_FUNCTION(stats_cdf_weibull)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double x;
+- double a;
+- double b;
+- long which;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- b = arg3;
+- } else {
+- a = arg3;
+- }
+-
+- if (which < 3) {
+- a = arg2;
+- } else {
+- x = arg2;
+- }
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- if (which == 1) {
+- p = 1 - exp(-pow(x / b, a));
+- } else {
+- x = b * pow(-log(1.0 - p), 1.0 / a);
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(p);
+- case 2: RETURN_DOUBLE(x);
+- case 3: RETURN_DOUBLE(log(-log(1.0 - p)) / log(x / b));
+- case 4: RETURN_DOUBLE(x / pow(-log(1.0 - p), 1.0 / a));
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_cdf_uniform(float par1, float par2, float par3, int which)
+- Not documented */
+-PHP_FUNCTION(stats_cdf_uniform)
+-{
+- double arg1;
+- double arg2;
+- double arg3;
+- double p;
+- double q;
+- double x;
+- double a;
+- double b;
+- long which;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dddl", &arg1, &arg2, &arg3, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 4) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Fourth parameter should be in the 1..4 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 4) {
+- b = arg3;
+- } else {
+- a = arg3;
+- }
+-
+- if (which < 3) {
+- a = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- if (which == 1) {
+- p = 1 - exp(-pow(x / b, a));
+- } else {
+- x = b * pow(-log(1.0 - p), 1.0 / a);
+- }
+-
+- switch (which) {
+- case 4: RETURN_DOUBLE((x - (1.0 - p) * a) / p);
+- case 3: RETURN_DOUBLE((x - p * b) / (1.0 - p));
+- case 2: RETURN_DOUBLE(a + p * (b - a));
+- case 1:
+- if (x < a) {
+- p = 0;
+- } else {
+- if (x > b) {
+- p = 1;
+- } else {
+- p = (x - a) / ( b - a);
+- }
+- }
+- RETURN_DOUBLE(p);
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-static double exponential_quantile(double p)
+-{
+- return -log(1.0-p);
+-}
+-
+-static double exponential_cdf(double x)
+-{
+- return (1.0 - exp(-x));
+-}
+-
+-/* {{{ proto float stats_cdf_exponential(float par1, float par2, int which)
+- Not documented */
+-PHP_FUNCTION(stats_cdf_exponential)
+-{
+- double arg1;
+- double arg2;
+- double p;
+- double q;
+- double x;
+- double scale;
+- long which;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddl", &arg1, &arg2, &which) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (which < 1 || which > 3) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Third parameter should be in the 1..3 range");
+- RETURN_FALSE;
+- }
+-
+- if (which < 3) {
+- scale = arg2;
+- } else {
+- x = arg2;
+- }
+-
+- if (which == 1) {
+- x = arg1;
+- } else {
+- p = arg1;
+- q = 1.0 - p;
+- }
+-
+- switch (which) {
+- case 1: RETURN_DOUBLE(exponential_cdf(x / scale));
+- case 2: RETURN_DOUBLE(scale * exponential_quantile(p));
+- case 3: RETURN_DOUBLE(x / exponential_quantile(p));
+- }
+- RETURN_FALSE; /* never here */
+-}
+-/* }}} */
+-
+-
+-/*********************/
+-/* RANDLIB functions */
+-/*********************/
+-
+-/* {{{ proto void stats_rand_setall(int iseed1, int iseed2)
+- Not documented */
+-PHP_FUNCTION(stats_rand_setall)
+-{
+- long iseed_1;
+- long iseed_2;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &iseed_1, &iseed_2) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- setall(iseed_1, iseed_2);
+-}
+-/* }}} */
+-
+-/* {{{ proto array stats_rand_get_seeds(void)
+- Not documented */
+-PHP_FUNCTION(stats_rand_getsd)
+-{
+- long iseed_1;
+- long iseed_2;
+-
+- if (ZEND_NUM_ARGS() != 0) {
+- WRONG_PARAM_COUNT;
+- }
+- getsd(&iseed_1, &iseed_2);
+-
+- array_init(return_value);
+- add_next_index_long(return_value, iseed_1);
+- add_next_index_long(return_value, iseed_2);
+-}
+-/* }}} */
+-
+-/* {{{ proto int stats_rand_gen_iuniform(int low, int high)
+- Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive) */
+-PHP_FUNCTION(stats_rand_gen_iuniform)
+-{
+- long low;
+- long high;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &low, &high) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (high - low > 2147483561L) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "high - low too large. low : %16ld high %16ld", low, high);
+- RETURN_FALSE;
+- }
+- if (low > high) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "low greater than high. low : %16ld high %16ld", low, high);
+- RETURN_FALSE;
+- }
+-
+- RETURN_LONG(ignuin(low, high));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_funiform(float low, float high)
+- Generates uniform float between low (exclusive) and high (exclusive) */
+-PHP_FUNCTION(stats_rand_gen_funiform)
+-{
+- double low;
+- double high;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &low, &high) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (low > high) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "low greater than high. low : %16.6E high : %16.6E", low, high);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(genunf(low, high));
+-}
+-/* }}} */
+-
+-/* {{{ proto int stats_rand_gen_int(void)
+- Generates random integer between 1 and 2147483562 */
+-PHP_FUNCTION(stats_rand_ignlgi)
+-{
+- if (ZEND_NUM_ARGS() != 0) {
+- WRONG_PARAM_COUNT;
+- }
+-
+- RETURN_LONG(ignlgi());
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_ranf(void)
+- Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator */
+-PHP_FUNCTION(stats_rand_ranf)
+-{
+- if (ZEND_NUM_ARGS() != 0) {
+- WRONG_PARAM_COUNT;
+- }
+-
+- RETURN_DOUBLE(ranf());
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_beta(float a, float b)
+- Generates beta random deviate. Returns a random deviate from the beta distribution with parameters A and B. The density of the beta is x^(a-1) * (1-x)^(b-1) / B(a,b) for 0<x<1. aa - first parameter of the beta distribution. bb - second parameter of the beta distribution. Method R. C. H. Cheng */
+-PHP_FUNCTION(stats_rand_gen_beta)
+-{
+- double a;
+- double b;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &a, &b) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (a < 1.0E-37 || b < 1.0E-37) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "'a' or 'b' lower than 1.0E-37. 'a' value : %16.6E 'b' value : %16.6E", a, b);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(genbet(a, b));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_chisquare(float df)
+- Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable. */
+-PHP_FUNCTION(stats_rand_gen_chisquare)
+-{
+- double df;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &df) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (df <= 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "df <= 0.0. df : %16.6E", df);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(genchi(df));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_exponential(float av)
+- Generates a single random deviate from an exponential distribution with mean "av" */
+-PHP_FUNCTION(stats_rand_gen_exponential)
+-{
+- double av;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &av) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (av < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "av < 0.0");
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(genexp(av));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_f(float dfn, float dfd)
+- Generates a random deviate from the F (variance ratio) distribution with "dfn" degrees of freedom in the numerator and "dfd" degrees of freedom in the denominator. Method : directly generates ratio of chisquare variates*/
+-PHP_FUNCTION(stats_rand_gen_f)
+-{
+- double dfn;
+- double dfd;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &dfn, &dfd) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (dfn < 0.0 || dfd < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Degrees of freedom nonpositive. DFN value:%16.6E DFD value:%16.6E", dfn, dfd);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(genf(dfn, dfd));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_gamma(float a, float r)
+- Generates random deviates from the gamma distribution whose density is (A**R)/Gamma(R) * X**(R-1) * Exp(-A*X). Parameters : a - location parameter of Gamma distribution (a > 0), r - shape parameter of Gamma distribution (r > 0) */
+-PHP_FUNCTION(stats_rand_gen_gamma)
+-{
+- double a;
+- double r;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &a, &r) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (!(a > 0.0 && r > 0.0)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "A or R nonpositive. A value : %16.6E , R value : %16.6E", a, r);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(gengam(a, r));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_noncenral_chisquare(float df, float xnonc)
+- Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0 */
+-PHP_FUNCTION(stats_rand_gen_noncentral_chisquare)
+-{
+- double df;
+- double xnonc;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &df, &xnonc) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (df < 1.0 || xnonc < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "df < 1 or xnonc < 0. df value : %16.6E xnonc value : %16.6E", df, xnonc);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(gennch(df, xnonc));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_noncentral_f(float dfn, float dfd, float xnonc)
+- Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central denominator chisquare variate. */
+-PHP_FUNCTION(stats_rand_gen_noncenral_f)
+-{
+- double dfn;
+- double dfd;
+- double xnonc;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &dfn, &dfd, &xnonc) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (dfn < 1.0 || dfd <= 0.0 || xnonc < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Either (1) Numerator df < 1.0 or (2) Denominator df <= 0.0 or (3) Noncentrality parameter < 0.0. dfn: %16.6E dfd: %16.6E xnonc: %16.6E", dfn, dfd, xnonc);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(gennf(dfn, dfd, xnonc));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_normal(float av, float sd)
+- Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF. */
+-PHP_FUNCTION(stats_rand_gen_normal)
+-{
+- double av;
+- double sd;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &av, &sd) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (sd < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "sd < 0.0 . sd : %16.6E", sd);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(gennor(av, sd));
+-}
+-/* }}} */
+-
+-/* {{{ proto array stats_rand_phrase_to_seeds(string phrase)
+- Uses a phrase (characted string) to generate two seeds for the RGN random number generator. Trailing blanks are eliminated before the seeds are generated. Generated seed values will fall in the range 1..2^30. */
+-PHP_FUNCTION(stats_rand_phrase_to_seeds)
+-{
+- zval **par1;
+- char *arg1 = NULL;
+- long seed_1;
+- long seed_2;
+-
+- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &par1) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+- convert_to_string_ex(par1);
+-
+- arg1 = estrndup(Z_STRVAL_PP(par1), Z_STRLEN_PP(par1));
+- phrtsd(arg1, &seed_1, &seed_2);
+- efree(arg1);
+-
+- array_init(return_value);
+- add_next_index_long(return_value, seed_1);
+- add_next_index_long(return_value, seed_2);
+-}
+-/* }}} */
+-
+-/* {{{ proto int stats_rand_gen_ibinomial(int n, float pp)
+- Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE */
+-PHP_FUNCTION(stats_rand_ibinomial)
+-{
+- long n;
+- double pp;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ld", &n, &pp) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if ((n < 0) || (pp < 0.0) || (pp > 1.0)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad values for the arguments. n : %ld pp : %16.6E", n, pp);
+- RETURN_FALSE;
+- }
+-
+- RETURN_LONG(ignbin(n, pp));
+-}
+-/* }}} */
+-
+-/* {{{ proto int stats_rand_gen_ibinomial_negative(int n, float p)
+- Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)). */
+-PHP_FUNCTION(stats_rand_ibinomial_negative)
+-{
+- long n;
+- double p;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ld", &n, &p) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (n <= 0L) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "n < 0. n : %ld", n);
+- RETURN_FALSE;
+- }
+- if (p < 0.0F || p > 1.0F) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "p is out of range. p : %16.E", p);
+- RETURN_FALSE;
+- }
+-
+- RETURN_LONG(ignnbn(n, p));
+-}
+-/* }}} */
+-
+-/* {{{ proto int stats_rand_gen_ipoisson(float mu)
+- Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0). */
+-PHP_FUNCTION(stats_rand_gen_ipoisson)
+-{
+- double mu;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &mu) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (mu < 0.0F) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "mu < 0.0 . mu : %16.6E", mu);
+- RETURN_FALSE;
+- }
+-
+- RETURN_LONG(ignpoi(mu));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_noncentral_t(float df, float xnonc)
+- Generates a single random deviate from a noncentral T distribution. xnonc - noncentrality parameter. df must be >= 0.0*/
+-PHP_FUNCTION(stats_rand_gen_noncentral_t)
+-{
+- double df;
+- double xnonc;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &df, &xnonc) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (df < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "df <= 0 . df : %16.6E", df);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(gennor(xnonc, 1) / sqrt(genchi(df) / df) );
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_rand_gen_t(float df)
+- Generates a single random deviate from a T distribution. df must be >= 0.0 */
+-PHP_FUNCTION(stats_rand_gen_t)
+-{
+- zval **arg1;
+- double df;
+-
+- if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+-
+- convert_to_double_ex(arg1);
+- df = Z_DVAL_PP(arg1);
+-
+- if (df < 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "df <= 0 . df : %16.6E", df);
+- RETURN_FALSE;
+- }
+-
+- RETURN_DOUBLE(gennor(0, 1) / sqrt(genchi(df) / df));
+-}
+-/* }}} */
+-
+-/***************************/
+-/* Start density functions */
+-/***************************/
+-
+-/* {{{ proto float stats_dens_normal(float x, float ave, float stdev)
+- Not documented */
+-PHP_FUNCTION(stats_dens_normal)
+-{
+- double stdev;
+- double ave;
+- double x;
+- double y;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddd", &x, &ave, &stdev) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (stdev == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
+- RETURN_FALSE;
+- }
+-
+- z = (x - ave) / stdev;
+- y = (1.0 / (stdev * sqrt(2.0 * STATS_PI))) * exp (-0.5 * z * z);
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_cauchy(float x, float ave, float stdev)
+- Not documented */
+-PHP_FUNCTION(stats_dens_cauchy)
+-{
+- double stdev;
+- double ave;
+- double x;
+- double y;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddd", &x, &ave, &stdev) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (stdev == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
+- RETURN_FALSE;
+- }
+-
+- z = (x - ave) / stdev;
+- y = 1.0 / (stdev*STATS_PI * (1.0 + (z * z)));
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_laplace(float x, float ave, float stdev)
+- Not documented */
+-PHP_FUNCTION(stats_dens_laplace)
+-{
+- double stdev;
+- double ave;
+- double x;
+- double y;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddd", &x, &ave, &stdev) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (stdev == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
+- RETURN_FALSE;
+- }
+-
+- z = fabs((x - ave) / stdev);
+- y = (1.0 / (2.0 * stdev)) * exp(- z);
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_logistic(float x, float ave, float stdev)
+- Not documented */
+-PHP_FUNCTION(stats_dens_logistic)
+-{
+- double stdev;
+- double ave;
+- double x;
+- double y;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddd", &x, &ave, &stdev) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (stdev == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "stdev is 0.0");
+- RETURN_FALSE;
+- }
+-
+- z = exp((x - ave) / stdev);
+- y = z / (stdev * pow(1 + z, 2.0));
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_beta(float x, float a, float b)
+- Not documented */
+-PHP_FUNCTION(stats_dens_beta)
+-{
+- double a;
+- double b;
+- double beta;
+- double x;
+- double y;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &a, &b) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- beta = 1.0 / exp(lgamma(a) + lgamma(b) - lgamma(a + b));
+- y = beta * pow(x, a - 1.0) * pow(1.0 - x, b - 1.0);
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_weibull(float x, float a, float b)
+- Not documented */
+-PHP_FUNCTION(stats_dens_weibull)
+-{
+- double a;
+- double b;
+- double x;
+- double y;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &a, &b) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (b == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "b is 0.0");
+- RETURN_FALSE;
+- }
+-
+- y = (a / b) * pow(x / b, a - 1.0) * exp(pow(- x / b, a));
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_den_uniform(float x, float a, float b)
+- Not documented */
+-PHP_FUNCTION(stats_dens_uniform)
+-{
+- double a;
+- double b;
+- double x;
+- double y;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddd", &x, &a, &b) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (a == b) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "b == a == %16.6E", a);
+- RETURN_FALSE;
+- }
+-
+- if ((x <= b) && (x >= a)) {
+- y = 1.0 / (b - a);
+- } else {
+- y = 0.0;
+- }
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_chisquare(float x, float dfr)
+- Not documented */
+-PHP_FUNCTION(stats_dens_chisquare)
+-{
+- double dfr;
+- double e;
+- double x;
+- double y;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "dd", &x, &dfr) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- e = dfr / 2.0;
+- z = ((e - 1.0) * log(x)) - ((x / 2.0) +(e * log(2.0)) + lgamma(e));
+- y = exp (z);
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_t(float x, float dfr)
+- Not documented */
+-PHP_FUNCTION(stats_dens_t)
+-{
+- double dfr;
+- double e;
+- double f;
+- double fac1;
+- double fac2;
+- double fac3;
+- double x;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &x, &dfr) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (dfr == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "dfr == 0.0");
+- RETURN_FALSE;
+- }
+-
+- e = dfr / 2.0;
+- f = e + 0.5;
+- fac1 = lgamma(f);
+- fac2 = f * log(1.0 + (x * x) / dfr);
+- fac3 = lgamma(e) + 0.5 * log(dfr * STATS_PI);
+-
+- RETURN_DOUBLE(exp( fac1 - (fac2 + fac3) ));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_gamma(float x, float shape, float scale)
+- Not documented */
+-PHP_FUNCTION(stats_dens_gamma)
+-{
+- double shape;
+- double scale;
+- double x;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &shape, &scale) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (scale == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "scale == 0.0");
+- RETURN_FALSE;
+- }
+-
+- z = ((shape - 1.0) * log(x)) -
+- (
+- (x / scale) + lgamma(shape) + (shape * log(scale))
+- )
+- ;
+-
+- RETURN_DOUBLE(exp(z));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_exponential(float x, float scale)
+- Not documented */
+-PHP_FUNCTION(stats_dens_exponential)
+-{
+- double scale;
+- double x;
+- double y;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &x, &scale) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if (scale == 0.0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "scale == 0.0");
+- RETURN_FALSE;
+- }
+-
+- if (x < 0) {
+- y = 0;
+- } else {
+- y = exp(-x / scale) / scale;
+- }
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_f(float x, float dfr1, float dfr2)
+- */
+-PHP_FUNCTION(stats_dens_f)
+-{
+- double dfr1;
+- double dfr2;
+- double efr1;
+- double efr2;
+- double fac1;
+- double fac2;
+- double fac3;
+- double fac4;
+- double x;
+- double z;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &dfr1, &dfr2) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- efr1 = dfr1 / 2.0;
+- efr2 = dfr2 / 2.0;
+- fac1 = (efr1 - 1.0) * log (x);
+- fac2 = (efr1 + efr2) * log (dfr2 + (dfr1 * x));
+- fac3 = (efr1 * log (dfr1)) + (efr2 * log (dfr2));
+- fac4 = lgamma (efr1) + lgamma (efr2) - lgamma (efr1 + efr2);
+-
+- z = (fac1 + fac3) - (fac2 + fac4);
+-
+- RETURN_DOUBLE(exp(z));
+-}
+-/* }}} */
+-
+-static double binom(double x, double n)
+-{
+- int i;
+- double di;
+- double s = 1.0;
+-
+- for (i = 0; i < x; ++i) {
+- di = (double) i;
+- s = (s * (n - di)) / (di + 1.0);
+- }
+-
+- return s;
+-}
+-
+-/* {{{ proto float stats_dens_pmf_binomial(float x, float n, float pi)
+- Not documented */
+-PHP_FUNCTION(stats_dens_pmf_binomial)
+-{
+- double pi;
+- double y;
+- double n;
+- double x;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+- "ddd", &x, &n, &pi) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if ((x == 0.0 && n == 0.0) || (pi == 0.0 && x == 0.0)
+- || ( (1.0 - pi) == 0.0 && (n - x) == 0) ) {
+-
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Params leading to pow(0, 0). x:%16.6E n:%16.6E pi:%16.6E", x, n, pi);
+- RETURN_FALSE;
+- }
+-
+- y = binom(x,n) * pow(pi,x) * pow((1.0 - pi), (n - x));
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_pmf_poisson(float x, float lb)
+- Not documented */
+-PHP_FUNCTION(stats_dens_pmf_poisson)
+-{
+- double lb;
+- double z;
+- double x;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dd", &x, &lb) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- z = (x * log(lb)) - (lb + lgamma(x + 1.0));
+-
+- RETURN_DOUBLE(exp(z));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_negative_binomial(float x, float n, float pi)
+- Not documented */
+-PHP_FUNCTION(stats_dens_pmf_negative_binomial)
+-{
+- double pi;
+- double y;
+- double n;
+- double x;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ddd", &x, &n, &pi) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if ((pi == 0.0 && n == 0.0) || ((1.0 - pi) == 0.0 && x == 0.0)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Params leading to pow(0, 0). x:%16.6E n:%16.6E pi:%16.6E", x, n, pi);
+- RETURN_FALSE;
+- }
+-
+- y = binom(x, n + x - 1.0) * pow(pi,n) * pow((1.0 - pi), x);
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_dens_pmf_hypergeometric(float n1, float n2, float N1, float N2)
+- */
+-PHP_FUNCTION(stats_dens_pmf_hypergeometric)
+-{
+- double y;
+- double N1;
+- double N2;
+- double n1;
+- double n2;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "dddd", &n1, &n2, &N1, &N2) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- if ((int)(n1 + n2) >= (int)(N1 + N2)) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "possible division by zero - n1+n2 >= N1+N2");
+- /* RETURN_FALSE; */
+- }
+-
+- y = binom(n1, N1) * binom (n2, N2)/binom(n1 + n2, N1 + N2);
+-
+- RETURN_DOUBLE(y);
+-}
+-/* }}} */
+-
+-/************************/
+-/* Statistics functions */
+-/************************/
+-
+-/* {{{ proto float stats_stat_powersum(array arr, float power)
+- Not documented */
+-PHP_FUNCTION(stats_stat_powersum)
+-{
+- zval **arg1, **arg2, **data; /* pointer to array entry */
+- HashPosition pos; /* hash iterator */
+- double power;
+- double sum = 0.0;
+-
+- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+-
+- convert_to_array_ex(arg1);
+- convert_to_double_ex(arg2);
+- power = Z_DVAL_PP(arg2);
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data, &pos) == SUCCESS) {
+- convert_to_double_ex(data);
+- if (Z_DVAL_PP(data) != 0 && power != 0) {
+- sum += pow (Z_DVAL_PP(data), power);
+- } else {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Both value and power are zero");
+- }
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos);
+- }
+-
+- RETURN_DOUBLE(sum);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_innerproduct(array arr1, array arr2)
+- */
+-PHP_FUNCTION(stats_stat_innerproduct)
+-{
+- zval **arg1, **arg2;
+- zval **data1, **data2; /* pointers to array entries */
+- HashPosition pos1; /* hash iterator */
+- HashPosition pos2; /* hash iterator */
+- double sum = 0.0;
+-
+-
+- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+- convert_to_array_ex(arg1);
+- convert_to_array_ex(arg2);
+-
+- if (zend_hash_num_elements(Z_ARRVAL_PP(arg1)) != zend_hash_num_elements(Z_ARRVAL_PP(arg2))) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unequal number of X and Y coordinates");
+- RETURN_FALSE;
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS
+- && zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
+- convert_to_double_ex(data1);
+- convert_to_double_ex(data2);
+- sum = Z_DVAL_PP(data1) * Z_DVAL_PP(data2);
+-
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
+- }
+-
+- RETURN_DOUBLE(sum);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_independent_t(array arr1, array arr2)
+- Not documented */
+-PHP_FUNCTION(stats_stat_independent_t)
+-{
+- zval **arg1, **arg2;
+- zval **data1, **data2; /* pointers to array entries */
+- HashPosition pos1; /* hash iterator */
+- HashPosition pos2; /* hash iterator */
+- int xnum = 0, ynum = 0;
+- double cur;
+- double sx = 0.0;
+- double sxx = 0.0;
+- double sy = 0.0;
+- double syy = 0.0;
+- double mx;
+- double vx;
+- double my;
+- double vy;
+- double sp;
+- double fc;
+- double ts;
+-
+- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+- convert_to_array_ex(arg1);
+- convert_to_array_ex(arg2);
+-
+- xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
+- ynum = zend_hash_num_elements(Z_ARRVAL_PP(arg2));
+- if ( xnum < 2 || ynum < 2) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Each argument should have more than 1 element");
+- RETURN_FALSE;
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS) {
+- convert_to_double_ex(data1);
+- cur = Z_DVAL_PP(data1);
+- sx += cur;
+- sxx += cur * cur;
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
+- convert_to_double_ex(data2);
+- cur = Z_DVAL_PP(data2);
+- sy += cur;
+- syy += cur * cur;
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
+- }
+-
+- mx = sx / xnum;
+- my = sy / ynum;
+- vx = (sxx - (xnum * mx * mx)) / (xnum - 1.0);
+- vy = (syy - (ynum * my * my)) / (ynum - 1.0);
+- sp = (((xnum - 1.0) * vx) + ((ynum - 1.0) * vy)) / (xnum + ynum - 2.0);
+- fc = (1.0 / xnum) + (1.0 / ynum);
+- ts = (mx - my) / sqrt(sp * fc);
+-
+- RETURN_DOUBLE(ts);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_paired_t(array arr1, array arr2)
+- Not documented */
+-PHP_FUNCTION(stats_stat_paired_t)
+-{
+- zval **arg1, **arg2, **data1, **data2; /* pointers to array entries */
+- HashPosition pos1; /* hash iterator */
+- HashPosition pos2; /* hash iterator */
+- int xnum = 0;
+- int ynum = 0;
+- double sd = 0.0;
+- double sdd = 0.0;
+- double md;
+- double td;
+- double ts;
+- double cur;
+-
+- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+- convert_to_array_ex(arg1);
+- convert_to_array_ex(arg2);
+-
+- xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
+- ynum = zend_hash_num_elements(Z_ARRVAL_PP(arg2));
+-
+- if (xnum != ynum) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unequal number of X and Y coordinates");
+- RETURN_FALSE;
+- }
+- if (xnum < 2) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "arr1 should have atleast 2 elements");
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS
+- &&
+- zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
+- convert_to_double_ex(data1);
+- convert_to_double_ex(data2);
+-
+- cur = Z_DVAL_PP(data1) - Z_DVAL_PP(data2);
+- sd += cur;
+- sdd += cur * cur;
+-
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
+- }
+-
+- md = sd / xnum;
+- td = sqrt((sdd - (xnum * md * md)) / (xnum - 1.0));
+- ts = sqrt((double) xnum) * (md / td);
+-
+- RETURN_DOUBLE(ts);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_percentile(float df, float xnonc)
+- Not documented */
+-PHP_FUNCTION(stats_stat_percentile)
+-{
+- zval **arg1, **arg2;
+- zval **data1; /* pointers to array entries */
+- HashPosition pos1; /* hash iterator */
+- long ilow;
+- long iupp;
+- int xnum = 0;
+- int cnt = -1;
+- double perc;
+- double low;
+- double upp;
+- double val = 0.0;
+-
+- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+-
+- convert_to_array_ex(arg1);
+- convert_to_double_ex(arg2);
+- perc = Z_DVAL_PP(arg2);
+-
+- xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
+-
+- if (zend_hash_sort(Z_ARRVAL_PP(arg1), zend_qsort, stats_array_data_compare, 1 TSRMLS_CC) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
+-
+- low = .01 * perc * (double)xnum;
+- upp = .01 * (100.0 - perc) * (double)xnum;
+- ilow = floor(low);
+- iupp = floor(upp);
+- if ((ilow + iupp) == xnum) {
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS) {
+- if (++cnt == ilow - 1 ) {
+- convert_to_double_ex(data1);
+- val = Z_DVAL_PP(data1);
+-
+- zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1);
+- convert_to_double_ex(data1);
+- val += Z_DVAL_PP(data1);
+- val = val / 2.0;
+- break;
+- }
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
+- }
+- } else {
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS) {
+- if (++cnt == ilow) {
+- convert_to_double_ex(data1);
+- val += Z_DVAL_PP(data1);
+- break;
+- }
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
+- }
+- }
+-
+- RETURN_DOUBLE(val);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_correlation(array arr1, array arr2)
+- Not documented */
+-PHP_FUNCTION(stats_stat_correlation)
+-{
+- zval **arg1, **arg2;
+- zval **data1, **data2; /* pointers to array entries */
+- HashPosition pos1; /* hash iterator */
+- HashPosition pos2; /* hash iterator */
+- int xnum = 0;
+- int ynum = 0;
+- double sx = 0.0;
+- double sy = 0.0;
+- double sxx = 0.0;
+- double syy = 0.0;
+- double sxy = 0.0;
+- double mx;
+- double my;
+- double vx;
+- double vy;
+- double cc;
+- double rr;
+-
+- if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
+- WRONG_PARAM_COUNT;
+- }
+-
+- convert_to_array_ex(arg1);
+- convert_to_array_ex(arg2);
+-
+- xnum = zend_hash_num_elements(Z_ARRVAL_PP(arg1));
+- ynum = zend_hash_num_elements(Z_ARRVAL_PP(arg2));
+-
+- if (xnum != ynum) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unequal number of X and Y coordinates");
+- RETURN_FALSE;
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg1), &pos1);
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(arg2), &pos2);
+-
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg1), (void **)&data1, &pos1) == SUCCESS
+- && zend_hash_get_current_data_ex(Z_ARRVAL_PP(arg2), (void **)&data2, &pos2) == SUCCESS) {
+-
+- convert_to_double_ex(data1);
+- convert_to_double_ex(data2);
+-
+- sx += Z_DVAL_PP(data1);
+- sxx += Z_DVAL_PP(data1) * Z_DVAL_PP(data1);
+- sy += Z_DVAL_PP(data2);
+- syy += Z_DVAL_PP(data2) * Z_DVAL_PP(data2);
+- sxy += Z_DVAL_PP(data1) * Z_DVAL_PP(data2);
+-
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg1), &pos1);
+- zend_hash_move_forward_ex(Z_ARRVAL_PP(arg2), &pos2);
+- }
+-
+- mx = sx / xnum;
+- my = sy / ynum;
+- vx = sxx - (xnum * mx * mx);
+- vy = syy - (ynum * my * my);
+- cc = sxy - (xnum * mx * my);
+- rr = cc / sqrt(vx * vy);
+-
+- RETURN_DOUBLE(rr);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_binomial_coef(int x, int n)
+- Not documented */
+-PHP_FUNCTION(stats_stat_binomial_coef)
+-{
+- int i;
+- int n;
+- int x;
+- double bc = 1.0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &x, &n) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- for (i = 0; i < x; ++i) {
+- bc = (bc * (n - i)) / (i + 1);
+- }
+-
+- RETURN_DOUBLE(bc);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_stat_gennch(int n)
+- Not documented */
+-PHP_FUNCTION(stats_stat_factorial)
+-{
+- int n;
+- int i;
+- double f = 1;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &n) == FAILURE) {
+- RETURN_FALSE;
+- }
+-
+- for (i = 1; i <= n; ++i) {
+- f *= i;
+- }
+-
+- RETURN_DOUBLE(f);
+-}
+-/* }}} */
+-
+-
+-/* {{{ php_population_variance
+-*/
+-static long double php_math_mean(zval *arr)
+-{
+- double sum = 0.0;
+- zval **entry;
+- HashPosition pos;
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+- convert_to_double_ex(entry);
+- sum += Z_DVAL_PP(entry);
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+- }
+- /*
+- we don't check whether the array has 0 elements. this is left to the caller - no need
+- to kill performance by checking on every level.
+- */
+- return sum / zend_hash_num_elements(Z_ARRVAL_P(arr));
+-}
+-/* }}} */
+-
+-
+-/* {{{ php_population_variance
+-*/
+-static long double php_population_variance(zval *arr, zend_bool sample)
+-{
+- double mean, vr = 0.0;
+- zval **entry;
+- HashPosition pos;
+- int elements_num;
+-
+- elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr));
+-
+- mean = php_math_mean(arr);
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+- double d;
+- convert_to_double_ex(entry);
+- d = Z_DVAL_PP(entry) - mean;
+- vr += d*d;
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+- }
+- if (sample) {
+- --elements_num;
+- }
+- return (vr / elements_num);
+-}
+-/* }}} */
+-
+-
+-/* {{{ proto float stats_variance(array a [, bool sample])
+- Returns the population variance */
+-PHP_FUNCTION(stats_variance)
+-{
+- zval *arr;
+- zend_bool sample = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|b", &arr, &sample) == FAILURE) {
+- return;
+- }
+- if (zend_hash_num_elements(Z_ARRVAL_P(arr)) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
+- RETURN_FALSE;
+- }
+- if (sample && zend_hash_num_elements(Z_ARRVAL_P(arr)) == 1) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has only 1 element");
+- RETURN_FALSE;
+- }
+- RETURN_DOUBLE(php_population_variance(arr, sample));
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_standard_deviation(array a[, bool sample = false])
+- Returns the standard deviation */
+-PHP_FUNCTION(stats_standard_deviation)
+-{
+- zval *arr;
+- zend_bool sample = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a|b", &arr, &sample) == FAILURE) {
+- return;
+- }
+- if (zend_hash_num_elements(Z_ARRVAL_P(arr)) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
+- RETURN_FALSE;
+- }
+- if (sample && zend_hash_num_elements(Z_ARRVAL_P(arr)) == 1) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has only 1 element");
+- RETURN_FALSE;
+- }
+- RETURN_DOUBLE(sqrt(php_population_variance(arr, sample)));
+-}
+-/* }}} */
+-
+-
+-/* {{{ proto float stats_absolute_deviation(array a)
+- Returns the absolute deviation of an array of values*/
+-PHP_FUNCTION(stats_absolute_deviation)
+-{
+- zval *arr;
+- double mean = 0.0, abs_dev = 0.0;
+- zval **entry;
+- HashPosition pos;
+- int elements_num;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
+- return;
+- }
+- if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
+- RETURN_FALSE;
+- }
+-
+- mean = php_math_mean(arr);
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+- convert_to_double_ex(entry);
+- abs_dev += fabs(Z_DVAL_PP(entry) - mean);
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+- }
+-
+- RETURN_DOUBLE(abs_dev / elements_num);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_harmonic_mean(array a)
+- Returns the harmonic mean of an array of values */
+-PHP_FUNCTION(stats_harmonic_mean)
+-{
+- zval *arr;
+- double sum = 0.0;
+- zval **entry;
+- HashPosition pos;
+- int elements_num;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
+- return;
+- }
+- if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
+- RETURN_FALSE;
+- }
+-
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+- convert_to_double_ex(entry);
+- if (Z_DVAL_PP(entry) == 0) {
+- RETURN_LONG(0);
+- }
+- sum += 1 / Z_DVAL_PP(entry);
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+- }
+-
+- RETURN_DOUBLE(elements_num / sum);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_skew(array a)
+- Computes the skewness of the data in the array */
+-PHP_FUNCTION(stats_skew)
+-{
+- zval *arr;
+- double mean, std_dev, skew = 0.0;
+- zval **entry;
+- HashPosition pos;
+- int elements_num, i = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
+- return;
+- }
+- if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
+- RETURN_FALSE;
+- }
+-
+- mean = php_math_mean(arr);
+- std_dev = sqrt(php_population_variance(arr, 0));
+-
+- /* the calculation of the skewness is protected of value "explosion". a bit more
+- FP operations performed but more accurateness.
+- */
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+- double tmp;
+- convert_to_double_ex(entry);
+- tmp = ((Z_DVAL_PP(entry) - mean) / std_dev);
+- skew += (tmp*tmp*tmp - skew) / (i + 1);
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+- ++i;
+- }
+-
+- RETURN_DOUBLE(skew);
+-}
+-/* }}} */
+-
+-/* {{{ proto float stats_kurtosis(array a)
+- Computes the kurtosis of the data in the array */
+-PHP_FUNCTION(stats_kurtosis)
+-{
+- zval *arr;
+- double mean, std_dev, avg = 0.0;
+- zval **entry;
+- HashPosition pos;
+- int elements_num, i = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
+- return;
+- }
+- if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr))) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The array has zero elements");
+- RETURN_FALSE;
+- }
+-
+- mean = php_math_mean(arr);
+- std_dev = sqrt(php_population_variance(arr, 0));
+-
+- /* the calculation of the kurtosis is protected of value "explosion". a bit more
+- FP operations performed but more accurateness.
+- */
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr), &pos);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr), (void **)&entry, &pos) == SUCCESS) {
+- double tmp;
+- convert_to_double_ex(entry);
+- tmp = ((Z_DVAL_PP(entry) - mean) / std_dev);
+- avg += (tmp*tmp*tmp*tmp - avg) / (i + 1);
+-
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr), &pos);
+- ++i;
+- }
+-
+- RETURN_DOUBLE(avg - 3);
+-}
+-/* }}} */
+-
+-
+-/* {{{ proto float stats_covariance(array a, array b)
+- Computes the covariance of two data sets */
+-PHP_FUNCTION(stats_covariance)
+-{
+- zval *arr_1, *arr_2;
+- double mean_1, mean_2, covar = 0.0;
+- zval **entry;
+- HashPosition pos_1, pos_2;
+- int elements_num, i = 0;
+-
+- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "aa", &arr_1, &arr_2) == FAILURE) {
+- return;
+- }
+- if ((elements_num = zend_hash_num_elements(Z_ARRVAL_P(arr_1))) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The first array has zero elements");
+- RETURN_FALSE;
+- }
+- if (zend_hash_num_elements(Z_ARRVAL_P(arr_2)) == 0) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The second array has zero elements");
+- RETURN_FALSE;
+- }
+- if (elements_num != zend_hash_num_elements(Z_ARRVAL_P(arr_2))) {
+- php_error_docref(NULL TSRMLS_CC, E_WARNING, "The datasets are not of the same size");
+- RETURN_FALSE;
+- }
+-
+- mean_1 = php_math_mean(arr_1);
+- mean_2 = php_math_mean(arr_2);
+- /* the calculation of the covariance is protected of value "explosion". a bit more
+- FP operations performed but more accurateness.
+- */
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr_1), &pos_1);
+- zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(arr_2), &pos_2);
+- while (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr_1), (void **)&entry, &pos_1) == SUCCESS) {
+- double tmp_1, tmp_2;
+- convert_to_double_ex(entry);
+- tmp_1 = Z_DVAL_PP(entry) - mean_1;
+-
+- if (zend_hash_get_current_data_ex(Z_ARRVAL_P(arr_2), (void **)&entry, &pos_2) != SUCCESS) {
+- break;
+- }
+- convert_to_double_ex(entry);
+- tmp_2 = Z_DVAL_PP(entry) - mean_2;
+-
+- covar += (tmp_1 * tmp_2 - covar) / (i + 1);
+-
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr_1), &pos_1);
+- zend_hash_move_forward_ex(Z_ARRVAL_P(arr_2), &pos_2);
+- ++i;
+- }
+-
+- RETURN_DOUBLE(covar);
+-}
+-/* }}} */
+-
+-
+-/*
+- * Local variables:
+- * tab-width: 4
+- * c-basic-offset: 4
+- * indent-tabs-mode: t
+- * End:
+- */
+diff -dPNur stats-1.0.2/.svn/all-wcprops trunk/.svn/all-wcprops
+diff -dPNur stats-1.0.2/.svn/entries trunk/.svn/entries
+diff -dPNur stats-1.0.2/.svn/prop-base/cdflib.h.svn-base trunk/.svn/prop-base/cdflib.h.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/com.c.svn-base trunk/.svn/prop-base/com.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/config.m4.svn-base trunk/.svn/prop-base/config.m4.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/config.w32.svn-base trunk/.svn/prop-base/config.w32.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/CREDITS.svn-base trunk/.svn/prop-base/CREDITS.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/dcdflib.c.svn-base trunk/.svn/prop-base/dcdflib.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/fd_e_lgamma_r.c.svn-base trunk/.svn/prop-base/fd_e_lgamma_r.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/fd_e_log.c.svn-base trunk/.svn/prop-base/fd_e_log.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/fd_k_cos.c.svn-base trunk/.svn/prop-base/fd_k_cos.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/fd_k_sin.c.svn-base trunk/.svn/prop-base/fd_k_sin.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/fdlibm.h.svn-base trunk/.svn/prop-base/fdlibm.h.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/fd_w_lgamma.c.svn-base trunk/.svn/prop-base/fd_w_lgamma.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/ipmpar.c.svn-base trunk/.svn/prop-base/ipmpar.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/linpack.c.svn-base trunk/.svn/prop-base/linpack.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/package.xml.svn-base trunk/.svn/prop-base/package.xml.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/php_stats.c.svn-base trunk/.svn/prop-base/php_stats.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/php_stats.h.svn-base trunk/.svn/prop-base/php_stats.h.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/randlib.c.svn-base trunk/.svn/prop-base/randlib.c.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/randlib.h.svn-base trunk/.svn/prop-base/randlib.h.svn-base
+diff -dPNur stats-1.0.2/.svn/prop-base/TODO.svn-base trunk/.svn/prop-base/TODO.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/cdflib.h.svn-base trunk/.svn/text-base/cdflib.h.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/com.c.svn-base trunk/.svn/text-base/com.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/config.m4.svn-base trunk/.svn/text-base/config.m4.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/config.w32.svn-base trunk/.svn/text-base/config.w32.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/CREDITS.svn-base trunk/.svn/text-base/CREDITS.svn-base
+\ No newline at end of file
+diff -dPNur stats-1.0.2/.svn/text-base/dcdflib.c.svn-base trunk/.svn/text-base/dcdflib.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/fd_e_lgamma_r.c.svn-base trunk/.svn/text-base/fd_e_lgamma_r.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/fd_e_log.c.svn-base trunk/.svn/text-base/fd_e_log.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/fd_k_cos.c.svn-base trunk/.svn/text-base/fd_k_cos.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/fd_k_sin.c.svn-base trunk/.svn/text-base/fd_k_sin.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/fdlibm.h.svn-base trunk/.svn/text-base/fdlibm.h.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/fd_w_lgamma.c.svn-base trunk/.svn/text-base/fd_w_lgamma.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/ipmpar.c.svn-base trunk/.svn/text-base/ipmpar.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/linpack.c.svn-base trunk/.svn/text-base/linpack.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/package.xml.svn-base trunk/.svn/text-base/package.xml.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/php_stats.c.svn-base trunk/.svn/text-base/php_stats.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/php_stats.h.svn-base trunk/.svn/text-base/php_stats.h.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/randlib.c.svn-base trunk/.svn/text-base/randlib.c.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/randlib.h.svn-base trunk/.svn/text-base/randlib.h.svn-base
+diff -dPNur stats-1.0.2/.svn/text-base/TODO.svn-base trunk/.svn/text-base/TODO.svn-base
+\ No newline at end of file
+diff -dPNur stats-1.0.2/tests/.svn/all-wcprops trunk/tests/.svn/all-wcprops
+diff -dPNur stats-1.0.2/tests/.svn/entries trunk/tests/.svn/entries
+diff -dPNur stats-1.0.2/tests/.svn/prop-base/common.php.svn-base trunk/tests/.svn/prop-base/common.php.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/prop-base/math_abs_dev.phpt.svn-base trunk/tests/.svn/prop-base/math_abs_dev.phpt.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/prop-base/math_covariance.phpt.svn-base trunk/tests/.svn/prop-base/math_covariance.phpt.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/prop-base/math_harmonic_mean.phpt.svn-base trunk/tests/.svn/prop-base/math_harmonic_mean.phpt.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/prop-base/math_skew_kurtosis.phpt.svn-base trunk/tests/.svn/prop-base/math_skew_kurtosis.phpt.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/prop-base/math_std_dev.phpt.svn-base trunk/tests/.svn/prop-base/math_std_dev.phpt.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/text-base/common.php.svn-base trunk/tests/.svn/text-base/common.php.svn-base
+diff -dPNur stats-1.0.2/tests/.svn/text-base/math_abs_dev.phpt.svn-base trunk/tests/.svn/text-base/math_abs_dev.phpt.svn-base
+\ No newline at end of file
+diff -dPNur stats-1.0.2/tests/.svn/text-base/math_covariance.phpt.svn-base trunk/tests/.svn/text-base/math_covariance.phpt.svn-base
+\ No newline at end of file
+diff -dPNur stats-1.0.2/tests/.svn/text-base/math_harmonic_mean.phpt.svn-base trunk/tests/.svn/text-base/math_harmonic_mean.phpt.svn-base
+\ No newline at end of file
+diff -dPNur stats-1.0.2/tests/.svn/text-base/math_skew_kurtosis.phpt.svn-base trunk/tests/.svn/text-base/math_skew_kurtosis.phpt.svn-base
+\ No newline at end of file
+diff -dPNur stats-1.0.2/tests/.svn/text-base/math_std_dev.phpt.svn-base trunk/tests/.svn/text-base/math_std_dev.phpt.svn-base
+\ No newline at end of file
diff --git a/dev-php/pecl-stats/pecl-stats-1.0.2.ebuild b/dev-php/pecl-stats/pecl-stats-1.0.2.ebuild
new file mode 100644
index 0000000..36a34fe
--- /dev/null
+++ b/dev-php/pecl-stats/pecl-stats-1.0.2.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-php/PECL-sqlite/Attic/PECL-sqlite-1.0.3.ebuild,v 1.7 2006/05/21 01:53:28 chtekk dead $
+
+EAPI=6
+
+PHP_EXT_ZENDEXT="no"
+PHP_EXT_INI="yes"
+PHP_EXT_PECL_PKG="stats"
+PHP_EXT_NAME="stats"
+USE_PHP="php5-6 php5-5 php5-4 php5-3"
+
+inherit php-ext-pecl-r3
+
+IUSE=""
+DESCRIPTION="PHP statistics package"
+HOMEPAGE="http://pecl.php.net/package/stats"
+SLOT="0"
+LICENSE="PHP"
+KEYWORDS="alpha amd64 ~ia64 ppc ~sparc x86"
+
+
+src_prepare() {
+ local slot
+ for slot in $(php_get_slots); do
+ php_init_slot_env ${slot}
+ epatch "${FILESDIR}"/stats-php54.diff
+ done
+
+ php-ext-source-r2_src_prepare
+}
diff --git a/dev-python/PyAutoGUI/Manifest b/dev-python/PyAutoGUI/Manifest
new file mode 100644
index 0000000..a586c87
--- /dev/null
+++ b/dev-python/PyAutoGUI/Manifest
@@ -0,0 +1 @@
+EBUILD PyAutoGUI-0.9.31-r1.ebuild 551 SHA256 b691ee708286ef6fbff11a4eb68e1d54c415c9d85d8dfff1e3ba8722f5cfa470 SHA512 2b9c51b043d9d02cbc495d64cb56d58542db3dd18f18cf6934a59b2200d30ef5391f3b0bb999d4e1c6d6debceb350072ad2a65c8a9ad15ddcc49953219fc6207 WHIRLPOOL 54cd728acde7b05500490e55850f88f1d00aa4a05dd834af589563ee24d4206a57d1973690eb291639536d97c5a508ee60d0739f5684ded96ec40c3c726df3a8
diff --git a/dev-python/PyAutoGUI/PyAutoGUI-0.9.31-r1.ebuild b/dev-python/PyAutoGUI/PyAutoGUI-0.9.31-r1.ebuild
new file mode 100644
index 0000000..01d4112
--- /dev/null
+++ b/dev-python/PyAutoGUI/PyAutoGUI-0.9.31-r1.ebuild
@@ -0,0 +1,21 @@
+# automatically generated by g-sorcery
+# please do not edit this file
+
+EAPI=5
+
+REALNAME="PyAutoGUI"
+REALVERSION="0.9.31"
+REPO_URI="http://pypi.python.org/packages/source/${REALNAME:0:1}/${REALNAME}/"
+SOURCEFILE="${REALNAME}-${REALVERSION}.zip"
+PYTHON_COMPAT=( python{2_7,2_7,2_7,3_3,3_4,3_5,3_3,3_3,3_4} )
+
+inherit gs-pypi
+
+DESCRIPTION="A cross-platform module for GUI automation for human beings. Control the keyboard and mouse from a Python script."
+
+HOMEPAGE="https://github.com/asweigart/pyautogui"
+LICENSE="BSD"
+
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
diff --git a/dev-python/PyMsgBox/Manifest b/dev-python/PyMsgBox/Manifest
new file mode 100644
index 0000000..7f2a663
--- /dev/null
+++ b/dev-python/PyMsgBox/Manifest
@@ -0,0 +1 @@
+EBUILD PyMsgBox-1.0.3-r1.ebuild 514 SHA256 689488cd70dbf026fbc2776cf436d8aefdcbc57caf7a3fb4540d556688b9763b SHA512 d98f5c8187e70b5ee9c71ed563d53f4806bb728c5fc4414799a364c8d4378968364224ad8b8a2db8649fcce96b42d9e6286f0270d9952547b2f47a0812de4bc4 WHIRLPOOL d7ab18bd5d558b080e6934e583dbd227a89b061596d9db335997e2f48a3fe3ae88f8213164138b7f9740149d6c019c126d2592082e9fa6a7c04142804e67afc0
diff --git a/dev-python/PyMsgBox/PyMsgBox-1.0.3-r1.ebuild b/dev-python/PyMsgBox/PyMsgBox-1.0.3-r1.ebuild
new file mode 100644
index 0000000..e369ba0
--- /dev/null
+++ b/dev-python/PyMsgBox/PyMsgBox-1.0.3-r1.ebuild
@@ -0,0 +1,21 @@
+# automatically generated by g-sorcery
+# please do not edit this file
+
+EAPI=5
+
+REALNAME="PyMsgBox"
+REALVERSION="1.0.3"
+REPO_URI="http://pypi.python.org/packages/source/${REALNAME:0:1}/${REALNAME}/"
+SOURCEFILE="${REALNAME}-${REALVERSION}.zip"
+PYTHON_COMPAT=( python{2_7,2_7,2_7,3_3,3_4,3_5,3_3,3_3,3_4} )
+
+inherit gs-pypi
+
+DESCRIPTION="A simple, cross-platform, pure Python module for JavaScript-like message boxes."
+
+HOMEPAGE="https://github.com/asweigart/PyMsgBox"
+LICENSE="BSD"
+
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
diff --git a/dev-python/evernote-sdk-python/Manifest b/dev-python/evernote-sdk-python/Manifest
new file mode 100644
index 0000000..a23c1ba
--- /dev/null
+++ b/dev-python/evernote-sdk-python/Manifest
@@ -0,0 +1 @@
+EBUILD evernote-sdk-python-9999.ebuild 635 SHA256 ae494260d5fe9374b327a4666f8d4b363d945ddd7387faee4ac9beb7f4cb9077 SHA512 bf814c40fd75a0c632299ef76b5c484f987c41257d5a75d3ead44e980c4ffd660bde1c0a9140d727c625e3411ff0bd31c6236185678957323f5e6c17bc7a370d WHIRLPOOL 0bc810720526466f17ff6635af195a39d7d459034a8d397ffb5ee0aadaac84ffadcf33934fc9e45340991ea47232b52edec564ce381ec1dd8cad7462f97609fa
diff --git a/dev-python/evernote-sdk-python/evernote-sdk-python-9999.ebuild b/dev-python/evernote-sdk-python/evernote-sdk-python-9999.ebuild
new file mode 100644
index 0000000..4fb0cab
--- /dev/null
+++ b/dev-python/evernote-sdk-python/evernote-sdk-python-9999.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=4
+
+inherit python distutils git-2
+
+DESCRIPTION="Evernote SDK for Python"
+HOMEPAGE="http://dev.evernote.com"
+
+EGIT_REPO_URI="git://github.com/evernote/evernote-sdk-python.git"
+EGIT_BRANCH="master"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+RDEPEND="
+ dev-libs/thrift[python]
+ dev-python/oauth2
+"
+
+pkg_setup() {
+ python_set_active_version 2
+ python_pkg_setup
+}
+
+src_prepare() {
+ rm -rf lib/thrift
+ python_convert_shebangs -r $(python_get_version) .
+}
+
+src_install() {
+ distutils_src_install
+}
diff --git a/dev-python/matplotlib/Manifest b/dev-python/matplotlib/Manifest
new file mode 100644
index 0000000..0db642b
--- /dev/null
+++ b/dev-python/matplotlib/Manifest
@@ -0,0 +1,12 @@
+AUX matplotlib-1.3.1-unbundle-agg.patch 976 SHA256 1c22a991be0d0cecf9e5a0c3ab74aeb8951844dc480635c9da814a8c6e5ee6da SHA512 2e5a9045b69fd7f84fe0540aae6bde26b34db4dae29b725dc811b054f16e671f64345d28473f83861b0cfc0b14d2dd833ef188b3ba44c955db46475668c96786 WHIRLPOOL 5a26d99451fbdb1218e12ec9d5ebe6bf23f43eb4acf4019af9fde4ecb3eb67127d446112868836cc4165d65a403cf825a630c822e1e6466516b6549849849642
+AUX matplotlib-1.3.1-unbundle-pycxx.patch 734 SHA256 ab33e8ba4879cd11c3e41394ae53566b2496c695328d9f498dd629124127fabf SHA512 4accb71a4b608c31637de354c2f6331dd69e98c352db059d0f1d3c0ade90b6fe11cdd3bfe799eabf7c52fa26e1fb81499064b15c07c34751ee6059c110956576 WHIRLPOOL 7b8c8ba9f93f282664b716358e57f61e18a022a80cdeea86d86dc8a907f1354ad8ddf8c3463ed8cfea10d0b1e0aeeacd58681b079cf2a931c9d24dc5b9f01497
+AUX matplotlib-1.4.3-backport-GH5291-2462.patch 4810 SHA256 6ba9d2c886524fd892b87c0e5b74c41f4d16fde0a40f4c70b195194febdafeef SHA512 06fb07f42d5a0e8c54e7f259bc0b8787a8caf25fa52c1d5a37a660c6e6df0fe6d93dc91367699d40d19b523c903c4be6a284403dc3eb93a4e68acc2e80329120 WHIRLPOOL 8a28cb05eb3848c38829c7a0c4c020d1c94f2f7d8059be02d341f2c0a3f568e6600e16eb9b1de3d9ea98a24c45469f708642679ddee9569535479afa7d06e388
+AUX matplotlib-1.4.3-cross-compile-1.patch 1779 SHA256 1910a0e3a5dca036e4c30d5bccbba7e0722fc02d1d867a32699fff4f8db248fb SHA512 6d2b57ae37df42b1d6c87501037f0dfe1ebf40dad9ea2bb35ff4b58cc1a3e580ad12add99c779966e764244d0bacf6ad922848bca568fc3329ead07c0b57826d WHIRLPOOL 57fa9a889bd4adff780b6bbd478cfa94f6fdb231004f2b05f6288ffb243ed2b8a9e497b85a11a5a34170d0560895c1d56a1d679949ce29dc6aa403e672d44574
+AUX matplotlib-1.4.3-cross-compile-2.patch 2066 SHA256 88513fb38363ae65aa56991de81e4e1f1b51e2465ebfe0dd41f0dfb1ba16dc9b SHA512 d547b79d2a6f2dcca5105093faf9bc15208b1d28737d17a65d4ad716d74029d1a575d0c83b684e139d203f7b58a34a161a8e3968bfe1515f47c754b29117a824 WHIRLPOOL 0cb8e3e4dd08f0aed733297641e8e4b16b361107d545921008116f1618a427ed486a91d930420f44ac9a50facca3d70cb565c76d2ea0cb3537e5270fd3e6c0b2
+AUX matplotlib-1.4.3-cross-compile-3.patch 2202 SHA256 2285ba7aefb3b06eb5cb16651d3870944d5a3c0ed7b39046a8b05dd0c14ae44e SHA512 5c1a7579a2cd4e97f56485e0300d9dcc7c8871e99bd93e03113e68b95996960ece039a41203775afc2c627f0a2483f038e0e693c73efdacfbb85d47ae855b7b1 WHIRLPOOL f27e6495720ed9db16f61a3aa9fca275aa3bd3ebb867c2c79e381a053a8412bf7a17422b6675d9fd75af5dfefbe58418ec8ffe5e8e096be655a10943829709ee
+AUX matplotlib-1.5.1-sphinx-1.4.3-backport.patch 2164 SHA256 d09217a603cd5126fdd1d6af7c7244617cd03013db6999642133f309cd4501c1 SHA512 60c6f8792fa9562d0390d905d3f99c46d3a20d4dd315c6a679c363ebb2445f2d5ae0e6c515de729b89ed1e3dfac63f3b20026b64069dd737406109250b00812a WHIRLPOOL fe5620ac15f1e67ad09995363ceba0f560bc290e1cdc635c94b492ded9ccd10721c1b183d064be03654b909344a0498ff6a17f7b02886252261d48f9573a321a
+AUX matplotlib-1.5.1-test-fix-backport-2.patch 938 SHA256 de443a07e3358fc643af6ad9601140ed532034ec60505c054eab2f34bd6b9b28 SHA512 b238d6d2915293045d2bbda6737fcfb8c1206e0f404b2151495e6a5ba14caeffcbbf5f26b9a62145b29200b25afbe6dd47c4889649699c8c2eb4b0ab1d610014 WHIRLPOOL 6dcd91f8876f993b4ffcf71e2d084e0c14e99991a161c212a4f73f274f63bd94cf269bfad819828a48a59de7dab31f289acfe23af484890daa2f4ce480a8640c
+AUX matplotlib-1.5.1-test-fix-backport.patch 4175 SHA256 5eb0d2b033a0d63921d73c3c3103cc55fe784642b2f440c93ae27c16f821e96b SHA512 fb1845da597fcedc268a037ff3ee2996d97d52c1f8c4ff75e3b035d977d8e02e427413f3bfd1e72e1a13e0e2044800237b0d160e1eb85779820f3c480dea472b WHIRLPOOL 43a501504e78c4d6e406975148003c9b8941641877e1a8ab7951087ddd52adfabaac8e4f9a8f78f577c9b0e491f73499dd4097943265888d349faa9e5ee212f1
+AUX matplotlib-1.5.3-freetype-spurious-failure.patch 1061 SHA256 fef22d55869d8a9cea9f49a6d57feb955929df2e58c9cb746947927dd2224e26 SHA512 3cae61f9f6fcad1f2c8f47d7489a4ab54406118deaa8993b2a82c65bac8d21dc733f8c46b7f59d4a1961c643035b0b95d0c906f9388865e5036b12ff5abbbc32 WHIRLPOOL 6f4c892264716888828acefc712a3d8f3fe1efad4aa2071c56a8a6b1c2ffaef430d0d76f70e15b4c74ab3c4b69a76f0642b1c455c05b91e8b42b4046c7ba6913
+DIST matplotlib-2.0.0.tar.gz 53161302 SHA256 36cf0985829c1ab2b8b1dae5e2272e53ae681bf33ab8bedceed4f0565af5f813 SHA512 516d4afff0929fd769ca3386b3ae2c1a242ad095d2f3fc5f291f5f37bb014452f01131657c701fc39964d268417c01875296ddb61d34befff0f1a586173850db WHIRLPOOL cb3ca1b7fdacf7e2248cd07269177420092dd2319202e3dda4f00480667a66047549b6cf8e9287e36141459a93af936a500eab1cce6538f50ba7b7d3fad1c5ed
+EBUILD matplotlib-2.0.0.ebuild 6408 SHA256 26797a2e710020a17fedd4481e40cff96a1044ea6045d8764eceb9775d79ba76 SHA512 8df4906c677072a02e0736b83740620df1062966fb69f652dd2326f29c3e493f4d9b40c311fd4b93414fcf2d66c410433b522cf749171006fe40329e799347ce WHIRLPOOL ff131b44ae7f8897c0a8b912ec1ce2583efe1df47c33b04e9e7664bc1c0d43c5a6fbb31c404540d4d5600c080b87ceecc60e3d9f670ca23daf901da5c8262531
diff --git a/dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-agg.patch b/dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-agg.patch
new file mode 100644
index 0000000..d5a4ae3
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-agg.patch
@@ -0,0 +1,26 @@
+--- setupext.py.orig 2013-08-02 09:39:43.914247832 +0200
++++ setupext.py 2013-08-02 09:40:14.785304342 +0200
+@@ -749,22 +749,7 @@
+ return str(e) + ' Using local copy.'
+
+ def add_flags(self, ext):
+- if self.found_external:
+- pkg_config.setup_extension(ext, 'libagg')
+- else:
+- ext.include_dirs.append('agg24/include')
+- agg_sources = [
+- 'agg_bezier_arc.cpp',
+- 'agg_curves.cpp',
+- 'agg_image_filters.cpp',
+- 'agg_trans_affine.cpp',
+- 'agg_vcgen_contour.cpp',
+- 'agg_vcgen_dash.cpp',
+- 'agg_vcgen_stroke.cpp',
+- 'agg_vpgen_segmentator.cpp'
+- ]
+- ext.sources.extend(
+- os.path.join('agg24', 'src', x) for x in agg_sources)
++ pkg_config.setup_extension(ext, 'libagg', default_include_dirs=["/usr/include/agg2"])
+
+
+ class FreeType(SetupPackage):
diff --git a/dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-pycxx.patch b/dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-pycxx.patch
new file mode 100644
index 0000000..c27922e
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.3.1-unbundle-pycxx.patch
@@ -0,0 +1,22 @@
+diff --git a/setupext.py b/setupext.py
+index 7b629b6..8131bb1 100644
+--- a/setupext.py
++++ b/setupext.py
+@@ -674,16 +674,9 @@ class CXX(SetupPackage):
+ name = 'pycxx'
+
+ def check(self):
+- if sys.version_info[0] >= 3:
+- # There is no version of PyCXX in the wild that will work
+- # with Python 3.x
+- self.__class__.found_external = False
+- return ("Official versions of PyCXX are not compatible with "
+- "Python 3.x. Using local copy")
+-
+ self.__class__.found_external = True
+ old_stdout = sys.stdout
+- sys.stdout = io.BytesIO()
++ #sys.stdout = io.BytesIO()
+ try:
+ import CXX
+ except ImportError:
diff --git a/dev-python/matplotlib/files/matplotlib-1.4.3-backport-GH5291-2462.patch b/dev-python/matplotlib/files/matplotlib-1.4.3-backport-GH5291-2462.patch
new file mode 100644
index 0000000..d6b2ae8
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.4.3-backport-GH5291-2462.patch
@@ -0,0 +1,126 @@
+commit f98c4846dc3c15b3d24aafb973764cb9b860d935
+Author: Thomas A Caswell <tcaswell@gmail.com>
+Date: Sat Jan 10 16:10:29 2015 -0500
+
+ MNT : removed deprecated method/kwargs from patheffects
+
+ Deprecated in #2462 / 84e0063bd37c629f129d36c548e8ce3a30692cae
+
+ attn @pelson had to known-fail a test which was using the
+ proxy renderer to verify that PathEffectRender was working
+ correctly.
+
+diff --git a/lib/matplotlib/patheffects.py b/lib/matplotlib/patheffects.py
+index 13f8ce0..19e1c4a 100644
+--- a/lib/matplotlib/patheffects.py
++++ b/lib/matplotlib/patheffects.py
+@@ -10,9 +10,7 @@ from __future__ import (absolute_import, division, print_function,
+ import six
+
+ from matplotlib.backend_bases import RendererBase
+-from matplotlib.backends.backend_mixed import MixedModeRenderer
+ import matplotlib.transforms as mtransforms
+-import matplotlib.cbook as cbook
+ from matplotlib.colors import colorConverter
+ import matplotlib.patches as mpatches
+
+@@ -42,12 +40,6 @@ class AbstractPathEffect(object):
+ return transform + self._offset_trans.clear().translate(offset_x,
+ offset_y)
+
+- def get_proxy_renderer(self, renderer):
+- """Return a PathEffectRenderer instance for this PathEffect."""
+- cbook.deprecated('v1.4', name='get_proxy_renderer',
+- alternative='PathEffectRenderer')
+- return PathEffectRenderer([self], renderer)
+-
+ def _update_gc(self, gc, new_gc_dict):
+ """
+ Update the given GraphicsCollection with the given
+@@ -219,9 +211,9 @@ class withStroke(Stroke):
+
+ class SimplePatchShadow(AbstractPathEffect):
+ """A simple shadow via a filled patch."""
+- def __init__(self, offset=(2,-2),
+- shadow_rgbFace=None, alpha=None, patch_alpha=None,
+- rho=0.3, offset_xy=None, **kwargs):
++ def __init__(self, offset=(2, -2),
++ shadow_rgbFace=None, alpha=None,
++ rho=0.3, **kwargs):
+ """
+ Parameters
+ ----------
+@@ -241,24 +233,12 @@ class SimplePatchShadow(AbstractPathEffect):
+ :meth:`AbstractPathEffect._update_gc`.
+
+ """
+- if offset_xy is not None:
+- cbook.deprecated('v1.4', 'The offset_xy keyword is deprecated. '
+- 'Use the offset keyword instead.')
+- offset = offset_xy
+ super(SimplePatchShadow, self).__init__(offset)
+
+ if shadow_rgbFace is None:
+ self._shadow_rgbFace = shadow_rgbFace
+ else:
+ self._shadow_rgbFace = colorConverter.to_rgba(shadow_rgbFace)
+- if patch_alpha is not None:
+- cbook.deprecated('v1.4', 'The patch_alpha keyword is deprecated. '
+- 'Use the alpha keyword instead. Transform your '
+- 'patch_alpha by alpha = 1 - patch_alpha')
+- if alpha is not None:
+- raise ValueError("Both alpha and patch_alpha were set. "
+- "Just use alpha.")
+- alpha = 1 - patch_alpha
+
+ if alpha is None:
+ alpha = 0.3
+diff --git a/lib/matplotlib/tests/test_patheffects.py b/lib/matplotlib/tests/test_patheffects.py
+index 8298ceb..5af71e5 100644
+--- a/lib/matplotlib/tests/test_patheffects.py
++++ b/lib/matplotlib/tests/test_patheffects.py
+@@ -5,7 +5,8 @@ import six
+
+ import numpy as np
+
+-from matplotlib.testing.decorators import image_comparison, cleanup
++from matplotlib.testing.decorators import (image_comparison, cleanup,
++ knownfailureif)
+ import matplotlib.pyplot as plt
+ import matplotlib.patheffects as path_effects
+
+@@ -84,19 +85,7 @@ def test_patheffect3():
+
+
+ @cleanup
+-def test_PathEffect_get_proxy():
+- pe = path_effects.AbstractPathEffect()
+- fig = plt.gcf()
+- renderer = fig.canvas.get_renderer()
+-
+- with mock.patch('matplotlib.cbook.deprecated') as dep:
+- proxy_renderer = pe.get_proxy_renderer(renderer)
+- assert_equal(proxy_renderer._renderer, renderer)
+- assert_equal(proxy_renderer._path_effects, [pe])
+- dep.assert_called()
+-
+-
+-@cleanup
++@knownfailureif(True)
+ def test_PathEffect_points_to_pixels():
+ fig = plt.figure(dpi=150)
+ p1, = plt.plot(range(10))
+@@ -116,11 +105,9 @@ def test_PathEffect_points_to_pixels():
+ pe_renderer.points_to_pixels(15))
+
+
+-def test_SimplePatchShadow_offset_xy():
+- with mock.patch('matplotlib.cbook.deprecated') as dep:
+- pe = path_effects.SimplePatchShadow(offset_xy=(4, 5))
++def test_SimplePatchShadow_offset():
++ pe = path_effects.SimplePatchShadow(offset=(4, 5))
+ assert_equal(pe._offset, (4, 5))
+- dep.assert_called()
+
+
+ @image_comparison(baseline_images=['collection'])
diff --git a/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-1.patch b/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-1.patch
new file mode 100644
index 0000000..0657314
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-1.patch
@@ -0,0 +1,50 @@
+https://github.com/matplotlib/matplotlib/pull/4430
+
+From 08d26a80859023963bc2ffb41a0b6aed942685a9 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@chromium.org>
+Date: Fri, 15 May 2015 03:36:45 -0400
+Subject: [PATCH 1/3] setupext: respect $PKG_CONFIG
+
+When cross-compiling, it is common to set the PKG_CONFIG env var to a
+custom pkg-config that knows about the target. Make sure we respect
+that just like the standard pkg-config tools suggest (pkg.m4). If it
+isn't set, we use the same default as today -- "pkg-config".
+---
+ setupext.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/setupext.py b/setupext.py
+index 80b2a6c..29cddf9 100755
+--- a/setupext.py
++++ b/setupext.py
+@@ -253,7 +253,8 @@ class PkgConfig(object):
+ self.has_pkgconfig = False
+ else:
+ self.set_pkgconfig_path()
+- status, output = getstatusoutput("pkg-config --help")
++ self.pkgconfig = os.environ.get('PKG_CONFIG', 'pkg-config')
++ status, output = getstatusoutput("%s --help" % self.pkgconfig)
+ self.has_pkgconfig = (status == 0)
+ if not self.has_pkgconfig:
+ print("IMPORTANT WARNING:")
+@@ -286,7 +287,7 @@ class PkgConfig(object):
+
+ executable = alt_exec
+ if self.has_pkgconfig:
+- executable = 'pkg-config {0}'.format(package)
++ executable = '%s %s' % (self.pkgconfig, package)
+
+ use_defaults = True
+
+@@ -330,7 +331,7 @@ class PkgConfig(object):
+ return None
+
+ status, output = getstatusoutput(
+- "pkg-config %s --modversion" % (package))
++ '%s %s --modversion' % (self.pkgconfig, package))
+ if status == 0:
+ return output
+ return None
+--
+2.4.0
+
diff --git a/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-2.patch b/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-2.patch
new file mode 100644
index 0000000..9580c70
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-2.patch
@@ -0,0 +1,54 @@
+https://github.com/matplotlib/matplotlib/pull/4430
+
+From 3761303016cab0542891374032eca87e74d585bf Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@chromium.org>
+Date: Fri, 15 May 2015 03:43:17 -0400
+Subject: [PATCH 2/3] setupext: do not mess with PKG_CONFIG_PATH
+
+The current code always sets PKG_CONFIG_PATH to build paths in / which
+breaks cross-compiling -- things like /usr/lib are for the build system
+(e.g. x86) and not for the target (e.g. arm). Since we're adding paths
+that are already the default for pkg-config, there's no point in trying
+to be smart here. Just punt the code.
+
+This basically reverts commit 101beb975d3a1218350f02bf68dc2a43ac8ff148.
+---
+ setupext.py | 15 ---------------
+ 1 file changed, 15 deletions(-)
+
+diff --git a/setupext.py b/setupext.py
+index 29cddf9..57d80e7 100755
+--- a/setupext.py
++++ b/setupext.py
+@@ -252,7 +252,6 @@ class PkgConfig(object):
+ if sys.platform == 'win32':
+ self.has_pkgconfig = False
+ else:
+- self.set_pkgconfig_path()
+ self.pkgconfig = os.environ.get('PKG_CONFIG', 'pkg-config')
+ status, output = getstatusoutput("%s --help" % self.pkgconfig)
+ self.has_pkgconfig = (status == 0)
+@@ -262,20 +261,6 @@ class PkgConfig(object):
+ " pkg-config is not installed.\n"
+ " matplotlib may not be able to find some of its dependencies")
+
+- def set_pkgconfig_path(self):
+- pkgconfig_path = sysconfig.get_config_var('LIBDIR')
+- if pkgconfig_path is None:
+- return
+-
+- pkgconfig_path = os.path.join(pkgconfig_path, 'pkgconfig')
+- if not os.path.isdir(pkgconfig_path):
+- return
+-
+- try:
+- os.environ['PKG_CONFIG_PATH'] += ':' + pkgconfig_path
+- except KeyError:
+- os.environ['PKG_CONFIG_PATH'] = pkgconfig_path
+-
+ def setup_extension(self, ext, package, default_include_dirs=[],
+ default_library_dirs=[], default_libraries=[],
+ alt_exec=None):
+--
+2.4.0
+
diff --git a/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-3.patch b/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-3.patch
new file mode 100644
index 0000000..21fdf12
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.4.3-cross-compile-3.patch
@@ -0,0 +1,58 @@
+https://github.com/matplotlib/matplotlib/pull/4430
+
+From d077e49be318c851f6bbd64708efeed78a3ece3f Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@chromium.org>
+Date: Fri, 15 May 2015 03:49:02 -0400
+Subject: [PATCH 3/3] setupext: do not hardcode system -I/-L paths
+
+The native compiler should already know the right paths to look for
+includes and libraries. Hardcoding a specific list of those paths
+breaks both cross-compiling and multilib. In the former, paths like
+/usr/include and /usr/lib are for x86 but when you want to build for
+arm, mixing them leads to bad failures. In the latter, paths like
+/usr/lib typically hold 32it libraries, but when you're building for
+64bit, you want the libs from /usr/lib64. This goes even further as
+there are other mixed ABIs like /usr/libx32 and /usr/lib32, neither
+of which are handled here.
+
+Instead, delete the code entirely and rely on the compiler being
+properly configured. If you want to use a misconfigured compiler,
+you can always set CFLAGS/CPPFLAGS/LDFLAGS to include the -I/-L
+that your system needs.
+---
+ setupext.py | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+diff --git a/setupext.py b/setupext.py
+index 57d80e7..7473e3a 100755
+--- a/setupext.py
++++ b/setupext.py
+@@ -216,9 +216,7 @@ sysconfig.customize_compiler = my_customize_compiler
+
+ def make_extension(name, files, *args, **kwargs):
+ """
+- Make a new extension. Automatically sets include_dirs and
+- library_dirs to the base directories appropriate for this
+- platform.
++ Make a new extension.
+
+ `name` is the name of the extension.
+
+@@ -228,14 +226,6 @@ def make_extension(name, files, *args, **kwargs):
+ `distutils.core.Extension` constructor.
+ """
+ ext = DelayedExtension(name, files, *args, **kwargs)
+- for dir in get_base_dirs():
+- include_dir = os.path.join(dir, 'include')
+- if os.path.exists(include_dir):
+- ext.include_dirs.append(include_dir)
+- for lib in ('lib', 'lib64'):
+- lib_dir = os.path.join(dir, lib)
+- if os.path.exists(lib_dir):
+- ext.library_dirs.append(lib_dir)
+ ext.include_dirs.append('.')
+
+ return ext
+--
+2.4.0
+
diff --git a/dev-python/matplotlib/files/matplotlib-1.5.1-sphinx-1.4.3-backport.patch b/dev-python/matplotlib/files/matplotlib-1.5.1-sphinx-1.4.3-backport.patch
new file mode 100644
index 0000000..19c111d
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.5.1-sphinx-1.4.3-backport.patch
@@ -0,0 +1,58 @@
+From b7dfa4fa7a69d091dac0ead295d28422c4e33b45 Mon Sep 17 00:00:00 2001
+From: Thomas A Caswell <tcaswell@gmail.com>
+Date: Sun, 24 Jan 2016 13:05:18 -0500
+Subject: [PATCH] Merge pull request #5872 from jenshnielsen/sphinx134
+
+DOC: Fix issue with Sphinx 1.3.4
+
+Discarded changes to .travis.yml from #5872
+---
+ lib/matplotlib/dviread.py | 2 +-
+ lib/matplotlib/patches.py | 18 ++++++++++++------
+ 2 files changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py
+index db6e976..1141f6a 100644
+--- a/lib/matplotlib/dviread.py
++++ b/lib/matplotlib/dviread.py
+@@ -841,7 +841,7 @@ def find_tex_file(filename, format=None):
+ """
+ Call :program:`kpsewhich` to find a file in the texmf tree. If
+ *format* is not None, it is used as the value for the
+- :option:`--format` option.
++ `--format` option.
+
+ Apparently most existing TeX distributions on Unix-like systems
+ use kpathsea. I hear MikTeX (a popular distribution on Windows)
+diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py
+index b8b7363..917eca7 100644
+--- a/lib/matplotlib/patches.py
++++ b/lib/matplotlib/patches.py
+@@ -2992,15 +2992,21 @@ class Bar(_Base):
+
+ def __init__(self, armA=0., armB=0., fraction=0.3, angle=None):
+ """
+- *armA* : minimum length of armA
++ Parameters
++ ----------
++ armA : float
++ minimum length of armA
+
+- *armB* : minimum length of armB
++ armB : float
++ minimum length of armB
+
+- *fraction* : a fraction of the distance between two points that
+- will be added to armA and armB.
++ fraction : float
++ a fraction of the distance between two points that
++ will be added to armA and armB.
+
+- *angle* : angle of the connecting line (if None, parallel to A
+- and B)
++ angle : float or None
++ angle of the connecting line (if None, parallel
++ to A and B)
+ """
+ self.armA = armA
+ self.armB = armB
diff --git a/dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport-2.patch b/dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport-2.patch
new file mode 100644
index 0000000..c850d09
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport-2.patch
@@ -0,0 +1,22 @@
+From c28e1b0aebe19b7db292eb7c1b6deba8af6754e0 Mon Sep 17 00:00:00 2001
+From: Jens Hedegaard Nielsen <jens.nielsen@ucl.ac.uk>
+Date: Wed, 13 Jan 2016 13:48:06 +0000
+Subject: [PATCH] Fix new pep8 issue in legend_demo5
+
+---
+ examples/pylab_examples/legend_demo5.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/examples/pylab_examples/legend_demo5.py b/examples/pylab_examples/legend_demo5.py
+index 699babe..5668966 100644
+--- a/examples/pylab_examples/legend_demo5.py
++++ b/examples/pylab_examples/legend_demo5.py
+@@ -41,7 +41,7 @@ def create_artists(self, legend, orig_handle,
+ lw = orig_handle.get_linewidths()[i]
+ except IndexError:
+ lw = orig_handle.get_linewidths()[0]
+- if dashes[0] != None:
++ if dashes[0] is not None:
+ legline.set_dashes(dashes[1])
+ legline.set_color(color)
+ legline.set_transform(trans)
diff --git a/dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport.patch b/dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport.patch
new file mode 100644
index 0000000..d031e5a
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.5.1-test-fix-backport.patch
@@ -0,0 +1,115 @@
+From 72cf5b80537157decc741d81db550e6cf82648f6 Mon Sep 17 00:00:00 2001
+From: Michael Droettboom <mdboom@gmail.com>
+Date: Mon, 11 Jan 2016 16:48:04 -0500
+Subject: [PATCH] Fix #5829. Update the baseline image.
+
+---
+ .../baseline_images/test_image/rasterize_10dpi.svg | 56 ++++++++++------------
+ 1 file changed, 26 insertions(+), 30 deletions(-)
+
+diff --git a/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg b/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg
+index 47e354d..1f73c8f 100644
+--- a/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg
++++ b/lib/matplotlib/tests/baseline_images/test_image/rasterize_10dpi.svg
+@@ -5,31 +5,29 @@
+ <svg height="72pt" version="1.1" viewBox="0 0 216 72" width="216pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <style type="text/css">
+-*{stroke-linecap:butt;stroke-linejoin:round;}
++*{stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:100000;}
+ </style>
+ </defs>
+ <g id="figure_1">
+ <g id="patch_1">
+- <path d="
+-M0 72
+-L216 72
+-L216 0
+-L0 0
++ <path d="M 0 72
++L 216 72
++L 216 0
++L 0 0
+ z
+ " style="fill:#ffffff;"/>
+ </g>
+ <g id="axes_1">
+ <g id="patch_2">
+- <path d="
+-M27 60.6176
+-L76.2353 60.6176
+-L76.2353 11.3824
+-L27 11.3824
++ <path d="M 27 60.617647
++L 76.235294 60.617647
++L 76.235294 11.382353
++L 27 11.382353
+ z
+ " style="fill:#ffffff;"/>
+ </g>
+- <g clip-path="url(#pc31db6f15f)">
+- <image height="50.4" id="image2c20c31ecf" width="57.6" x="27.0" xlink:href="data:image/png;base64,
++ <g clip-path="url(#p306f09a014)">
++ <image height="50.4" id="image207c5863ce" width="57.6" x="27.0" xlink:href="data:image/png;base64,
+ iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAABHNCSVQICAgIfAhkiAAAAIVJREFUCJmFzjkKwlAAhOEvKi5FMLU2HkEQwdbSU3knL+EBLMUFQayCUaMYF55FQEsH/mYYZiZiGkA3Ydj70UlAxR/Vhv09eLfPivipuOUe69QrjcvAZLwE99CShYPsnMgWiSI0QTSfdQNcjjWHTeNLnlXLhtGgnDju2KbEV+orTqX9/+QHCXAwPEkx7O0AAAAASUVORK5CYII=" y="10.2176470588"/>
+ </g>
+ <g id="matplotlib.axis_1"/>
+@@ -37,43 +35,41 @@ iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAYAAAA1WQxeAAAABHNCSVQICAgIfAhkiAAAAIVJREFUCJmF
+ </g>
+ <g id="axes_2">
+ <g id="patch_3">
+- <path d="
+-M86.0824 64.8
+-L135.318 64.8
+-L135.318 7.2
+-L86.0824 7.2
++ <path d="M 86.082353 64.8
++L 135.317647 64.8
++L 135.317647 7.2
++L 86.082353 7.2
+ z
+ " style="fill:#ffffff;"/>
+ </g>
+- <image height="64.8" id="image1d9f73e233" width="136.8" x="79.2" xlink:href="data:image/png;base64,
+-iVBORw0KGgoAAAANSUhEUgAAABMAAAAJCAYAAADQHRcxAAAABHNCSVQICAgIfAhkiAAAAHNJREFUKJG10kENwlAQBuH5OVQBImoBAzVQA1hABxoQUAUYqIWaqIRepqdHmoaE9AGbzGU3+U4blV/N6d0yoUnoE56HNPUV2IJ3cAYF3d4/VZArOBZgWw22RxZwALtvsAm8gecjyB57gBcwNUgpf3+N2lkBB3gBDVzLDTYAAAAASUVORK5CYII=" y="7.2"/>
++ <image height="43.2" id="image2e9ed63e7b" width="50.4" x="86.39999999999999" xlink:href="data:image/png;base64,
++iVBORw0KGgoAAAANSUhEUgAAAAcAAAAGCAYAAAAPDoR2AAAABHNCSVQICAgIfAhkiAAAAFVJREFUCJllzjEVwlAAxdDbBQUVgQUMYAADWKgONCAABRjAQk0ggSUdGPoPDFnyhjyVETrQhZ6jPNKN3tQXXem1i5F/+aEHncdxpYXmPaU7nWj6PbcBc+lWnSEOzhQAAAAASUVORK5CYII=" y="14.4"/>
+ <g id="matplotlib.axis_3"/>
+ <g id="matplotlib.axis_4"/>
+ </g>
+ <g id="axes_3">
+ <g id="patch_4">
+- <path d="
+-M145.165 64.8
+-L194.4 64.8
+-L194.4 7.2
+-L145.165 7.2
++ <path d="M 145.164706 64.8
++L 194.4 64.8
++L 194.4 7.2
++L 145.164706 7.2
+ z
+ " style="fill:#ffffff;"/>
+ </g>
+ <g id="line2d_1">
+- <path clip-path="url(#p19b1e86336)" d="
+-M145.165 45.6
+-L194.4 26.4" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:20.0;"/>
++ <path clip-path="url(#pef029be595)" d="M 145.164706 45.6
++L 194.4 26.4
++" style="fill:none;stroke:#0000ff;stroke-linecap:square;stroke-width:20.0;"/>
+ </g>
+ <g id="matplotlib.axis_5"/>
+ <g id="matplotlib.axis_6"/>
+ </g>
+ </g>
+ <defs>
+- <clipPath id="p19b1e86336">
++ <clipPath id="pef029be595">
+ <rect height="57.6" width="49.2352941176" x="145.164705882" y="7.2"/>
+ </clipPath>
+- <clipPath id="pc31db6f15f">
++ <clipPath id="p306f09a014">
+ <rect height="49.2352941176" width="49.2352941176" x="27.0" y="11.3823529412"/>
+ </clipPath>
+ </defs>
diff --git a/dev-python/matplotlib/files/matplotlib-1.5.3-freetype-spurious-failure.patch b/dev-python/matplotlib/files/matplotlib-1.5.3-freetype-spurious-failure.patch
new file mode 100644
index 0000000..bc6891a
--- /dev/null
+++ b/dev-python/matplotlib/files/matplotlib-1.5.3-freetype-spurious-failure.patch
@@ -0,0 +1,26 @@
+Increase the tolerance margin in order to pass tests caused by
+freetype producing unreproducible images across different versions.
+See also: https://github.com/matplotlib/matplotlib/issues/2667
+
+--- a/lib/matplotlib/tests/test_mathtext.py
++++ b/lib/matplotlib/tests/test_mathtext.py
+@@ -158,7 +158,7 @@
+ def make_set(basename, fontset, tests, extensions=None):
+ def make_test(filename, test):
+ @image_comparison(baseline_images=[filename], extensions=extensions,
+- tol=32)
++ tol=40)
+ def single_test():
+ matplotlib.rcParams['mathtext.fontset'] = fontset
+ fig = plt.figure(figsize=(5.25, 0.75))
+--- a/lib/matplotlib/tests/test_text.py
++++ b/lib/matplotlib/tests/test_text.py
+@@ -18,7 +18,7 @@
+ from matplotlib.backends.backend_agg import RendererAgg
+
+
+-@image_comparison(baseline_images=['font_styles'])
++@image_comparison(baseline_images=['font_styles'], tol=20)
+ def test_font_styles():
+ from matplotlib import _get_data_path
+ data_path = _get_data_path()
diff --git a/dev-python/matplotlib/matplotlib-2.0.0.ebuild b/dev-python/matplotlib/matplotlib-2.0.0.ebuild
new file mode 100644
index 0000000..2645263
--- /dev/null
+++ b/dev-python/matplotlib/matplotlib-2.0.0.ebuild
@@ -0,0 +1,263 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5} )
+PYTHON_REQ_USE='tk?,threads(+)'
+
+inherit distutils-r1 eutils flag-o-matic multiprocessing virtualx toolchain-funcs
+
+DESCRIPTION="Pure python plotting library with matlab like syntax"
+HOMEPAGE="http://matplotlib.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+SLOT="0"
+# Main license: matplotlib
+# Some modules: BSD
+# matplotlib/backends/qt4_editor: MIT
+# Fonts: BitstreamVera, OFL-1.1
+LICENSE="BitstreamVera BSD matplotlib MIT OFL-1.1"
+KEYWORDS="amd64 ~arm ~ppc64 x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+IUSE="cairo doc excel examples fltk gtk2 gtk3 latex pyside qt4 qt5 test tk wxwidgets"
+
+PY2_FLAGS="|| ( $(python_gen_useflags python2_7) )"
+REQUIRED_USE="
+ doc? ( ${PY2_FLAGS} )
+ excel? ( ${PY2_FLAGS} )
+ fltk? ( ${PY2_FLAGS} )
+ gtk2? ( ${PY2_FLAGS} )
+ wxwidgets? ( ${PY2_FLAGS} )
+ test? (
+ cairo fltk latex pyside qt5 qt4 tk wxwidgets
+ || ( gtk2 gtk3 )
+ )"
+
+# #456704 -- a lot of py2-only deps
+PY2_USEDEP=$(python_gen_usedep python2_7)
+COMMON_DEPEND="
+ dev-python/cycler[${PYTHON_USEDEP}]
+ >=dev-python/numpy-1.6[${PYTHON_USEDEP}]
+ dev-python/python-dateutil:0[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ >=dev-python/six-1.4[${PYTHON_USEDEP}]
+ media-fonts/stix-fonts
+ media-libs/freetype:2
+ media-libs/libpng:0
+ media-libs/qhull
+ cairo? ( dev-python/cairocffi[${PYTHON_USEDEP}] )
+ gtk2? (
+ dev-libs/glib:2=
+ x11-libs/gdk-pixbuf
+ x11-libs/gtk+:2
+ dev-python/pygtk[${PY2_USEDEP}] )
+ wxwidgets? ( >=dev-python/wxpython-2.8:*[${PY2_USEDEP}] )"
+
+# internal copy of pycxx highly patched
+# dev-python/pycxx
+
+DEPEND="${COMMON_DEPEND}
+ dev-python/versioneer[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ virtual/pkgconfig
+ doc? (
+ app-text/dvipng
+ dev-python/pillow[${PYTHON_USEDEP}]
+ dev-python/ipython[${PYTHON_USEDEP}]
+ dev-python/mock[${PY2_USEDEP}]
+ dev-python/numpydoc[${PYTHON_USEDEP}]
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/xlwt[${PYTHON_USEDEP}]
+ dev-texlive/texlive-latexextra
+ dev-texlive/texlive-fontsrecommended
+ dev-texlive/texlive-latexrecommended
+ media-gfx/graphviz[cairo]
+ )
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ >=dev-python/nose-0.11.1[${PYTHON_USEDEP}]
+ )"
+
+RDEPEND="${COMMON_DEPEND}
+ >=dev-python/pyparsing-1.5.6[${PYTHON_USEDEP}]
+ excel? ( dev-python/xlwt[${PYTHON_USEDEP}] )
+ fltk? ( dev-python/pyfltk[${PYTHON_USEDEP}] )
+ gtk3? (
+ dev-python/pygobject:3[${PYTHON_USEDEP}]
+ x11-libs/gtk+:3[introspection] )
+ latex? (
+ virtual/latex-base
+ app-text/ghostscript-gpl
+ app-text/dvipng
+ app-text/poppler[utils]
+ dev-texlive/texlive-fontsrecommended
+ dev-texlive/texlive-latexextra
+ dev-texlive/texlive-xetex
+ )
+ pyside? ( dev-python/pyside[X,${PYTHON_USEDEP}] )
+ qt4? ( dev-python/PyQt4[X,${PYTHON_USEDEP}] )
+ qt5? ( dev-python/PyQt5[gui,widgets,${PYTHON_USEDEP}] )
+ "
+
+# A few C++ source files are written to srcdir.
+# Other than that, the ebuild shall be fit for out-of-source build.
+DISTUTILS_IN_SOURCE_BUILD=1
+
+#PATCHES=( "${FILESDIR}/${PN}-1.5.3-freetype-spurious-failure.patch" )
+
+pkg_setup() {
+ unset DISPLAY # bug #278524
+ use doc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
+}
+
+use_setup() {
+ local uword="${2:-${1}}"
+ if use ${1}; then
+ echo "${uword} = True"
+ echo "${uword}agg = True"
+ else
+ echo "${uword} = False"
+ echo "${uword}agg = False"
+ fi
+}
+
+python_prepare_all() {
+# Generates test failures, but fedora does it
+# local PATCHES=(
+# "${FILESDIR}"/${P}-unbundle-pycxx.patch
+# "${FILESDIR}"/${P}-unbundle-agg.patch
+# )
+# rm -r agg24 CXX || die
+# rm -r agg24 || die
+
+# cat > lib/${PN}/externals/six.py <<-EOF
+# from __future__ import absolute_import
+# from six import *
+# EOF
+
+ sed \
+ -e 's/matplotlib.pyparsing_py[23]/pyparsing/g' \
+ -i lib/matplotlib/{mathtext,fontconfig_pattern}.py \
+ || die "sed pyparsing failed"
+
+ # suggested by upstream
+# sed \
+# -e '/tol/s:32:35:g' \
+# -i lib/matplotlib/tests/test_mathtext.py || die
+
+ sed \
+ -e "s:/usr/:${EPREFIX}/usr/:g" \
+ -i setupext.py || die
+
+ export XDG_RUNTIME_DIR="${T}/runtime-dir"
+ mkdir "${XDG_RUNTIME_DIR}" || die
+ chmod 0700 "${XDG_RUNTIME_DIR}" || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+ append-flags -fno-strict-aliasing
+ append-cppflags -DNDEBUG # or get old trying to do triangulation
+ tc-export PKG_CONFIG
+}
+
+python_configure() {
+ mkdir -p "${BUILD_DIR}" || die
+
+ # create setup.cfg (see setup.cfg.template for any changes).
+
+ # common switches.
+ cat > "${BUILD_DIR}"/setup.cfg <<- EOF || die
+ [directories]
+ basedirlist = "${EPREFIX}/usr"
+ [provide_packages]
+ pytz = False
+ dateutil = False
+ [gui_support]
+ agg = True
+ $(use_setup cairo)
+ $(use_setup pyside)
+ $(use_setup qt4)
+ $(use_setup qt5)
+ $(use_setup tk)
+ EOF
+
+ if use gtk3 && use cairo; then
+ echo "gtk3cairo = True" >> "${BUILD_DIR}"/setup.cfg || die
+ else
+ echo "gtk3cairo = False" >> "${BUILD_DIR}"/setup.cfg || die
+ fi
+
+ if $(python_is_python3); then
+ cat >> "${BUILD_DIR}"/setup.cfg <<- EOF || die
+ six = True
+ fltk = False
+ fltkagg = False
+ gtk = False
+ gtkagg = False
+ wx = False
+ wxagg = False
+ EOF
+ else
+ cat >> "${BUILD_DIR}"/setup.cfg <<-EOF || die
+ six = False
+ $(use_setup fltk)
+ $(use_setup gtk2 gtk)
+ $(use_setup gtk3)
+ $(use_setup wxwidgets wx)
+ EOF
+ fi
+}
+
+wrap_setup() {
+ local MPLSETUPCFG=${BUILD_DIR}/setup.cfg
+ export MPLSETUPCFG
+ unset DISPLAY
+
+ # Note: remove build... if switching to out-of-source build
+ "${@}" build --build-lib="${BUILD_DIR}"/build/lib
+}
+
+python_compile() {
+ wrap_setup distutils-r1_python_compile
+}
+
+python_compile_all() {
+ if use doc; then
+ cd doc || die
+
+ # necessary for in-source build
+ local -x PYTHONPATH="${BUILD_DIR}"/build/lib:${PYTHONPATH}
+
+ VARTEXFONTS="${T}"/fonts \
+ "${EPYTHON}" ./make.py --small html || die
+ fi
+}
+
+python_test() {
+ wrap_setup distutils_install_for_testing
+
+# virtx ${EPYTHON} tests.py \
+# --no-pep8 \
+# --no-network \
+# --verbose \
+# --processes=$(makeopts_jobs)
+
+ virtx "${EPYTHON}" -c "import sys, matplotlib as m; sys.exit(0 if m.test(verbosity=2) else 1)"
+}
+
+python_install() {
+ wrap_setup distutils-r1_python_install
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}
diff --git a/dev-python/py-oauth2/Manifest b/dev-python/py-oauth2/Manifest
new file mode 100644
index 0000000..8824a8e
--- /dev/null
+++ b/dev-python/py-oauth2/Manifest
@@ -0,0 +1,2 @@
+DIST py-oauth2-0.0.6.tar.gz 6150 SHA256 1b14810e01435d348d8f7892056a75fbd3578876fc392674ba62264c06702bf0 SHA512 7c8894fbb502ed751af83488414e0a9421b7b51dbb86f889fe4a4c5823788768c4cab98aea8feb4829235d1d190f7a8e8d81c1a987dec15705a2f712357d83b9 WHIRLPOOL 413e52a5ea995e2c876450db0b7f769d048f66a591835fdfe66e1f5ad86dbc9b4b2dcc521b9f2fb9af2c5256910189cccb2b70555da5a53c419ae083b7303d37
+EBUILD py-oauth2-0.0.6.ebuild 403 SHA256 6b1bc954e393db0d202f52d18eade6a218f8748537e30322e2d2ce43beaa1e0d SHA512 374e27bd2cf9e3ddf57ba7991bbf5b71f39abf12918a726f238fe0775e446c52139c4429c39e5c8698871b1ede93f9b19f72ca16ba89d8dad4184c0b7fa7c54a WHIRLPOOL 90d802c6262d5024b7347811ea7b31d6bf2d853231c8a2a6be93e91f56523f70037756989e62327e80767e62651a630aaf94140e542c564830eb1eb3c748e86e
diff --git a/dev-python/py-oauth2/py-oauth2-0.0.6.ebuild b/dev-python/py-oauth2/py-oauth2-0.0.6.ebuild
new file mode 100644
index 0000000..738e2e9
--- /dev/null
+++ b/dev-python/py-oauth2/py-oauth2-0.0.6.ebuild
@@ -0,0 +1,16 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+PYTHON_COMPAT=( python{2_{5,6,7},3_{1,2,3}})
+
+inherit distutils-r1
+
+DESCRIPTION="A Python wrapper for the OAuth 2.0 specification."
+HOMEPAGE="https://github.com/liluo/py-oauth2"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 x86"
diff --git a/dev-util/biew/Manifest b/dev-util/biew/Manifest
new file mode 100644
index 0000000..d268acc
--- /dev/null
+++ b/dev-util/biew/Manifest
@@ -0,0 +1,5 @@
+AUX biew-562-lvalue-casts.patch 5531 RMD160 fd994fa1c4104023b1644a5a8cb53adbafe4b7cf SHA1 b579bbfc6fb8e3a6d8e572e6dc5b16caf7597415 SHA256 1a9090cd036ee0c32d4e36a8db6fd10238e6011d0daf579041a3079912dad5c3
+DIST biew-610-src.tar.bz2 860517 RMD160 c728c8e165c2e16edcc4c25ddef063379b32049d SHA1 332b45580cdee134ee42c48bec652fcba96cd99a SHA256 2e85f03c908dd6ec832461fbfbc79169a33f4caccf48c8fe60cbd29f5fb06d17
+DIST biew562.tar.bz2 594367 RMD160 413f2c72a70056adbebd5e79d541201d6e3b27cb SHA1 44435c0815a59d38c9a6c74d09c0f495e71e23fe SHA256 82263fdd9f9854a9326889b8d4e138c0dba3f08460922d4683f659873313e46a
+EBUILD biew-5.6.2-r1.ebuild 1610 RMD160 97f1694e40d21b58b8cf5b9f6863c58947d99f8f SHA1 ffcf4b2ee462e6761c077da62d6a1cc9be2683a5 SHA256 20e1495142497964cfc2ed77abe8fc5407a598487b66330763d382f34bb1ac87
+EBUILD biew-6.1.0.ebuild 1450 RMD160 a12e08b72d92186911f360b64eb3a3412d3e995b SHA1 191919e6abe1246b70572f550d67fd6a913360f9 SHA256 b524e3659118795f8bc408a06e76e5ebc63aee56f44072e1aa843d8ceb7b7fb3
diff --git a/dev-util/biew/biew-5.6.2-r1.ebuild b/dev-util/biew/biew-5.6.2-r1.ebuild
new file mode 100644
index 0000000..34681c2
--- /dev/null
+++ b/dev-util/biew/biew-5.6.2-r1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/biew/biew-5.6.2.ebuild,v 1.6 2006/08/13 10:58:43 spock Exp $
+
+inherit flag-o-matic
+IUSE="slang ncurses"
+
+DESCRIPTION="A multiplatform portable viewer of binary files with built-in editor in binary, hexadecimal and disassembler modes."
+HOMEPAGE="http://biew.sourceforge.net/"
+SRC_URI="mirror://sourceforge/biew/${PN}${PV//./}.tar.bz2"
+
+SLOT="0"
+KEYWORDS="x86 amd64"
+LICENSE="GPL-2"
+
+DEPEND="ncurses? ( >=sys-libs/ncurses-5.3 )
+ slang? ( <sys-libs/slang-2.0.0 )"
+S="${WORKDIR}/${PN}-${PV//./}"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epatch ${FILESDIR}/biew-562-lvalue-casts.patch
+
+ sed -i "s/USE_MOUSE=.*/USE_MOUSE=y/" makefile
+ sed -i 's:/usr/local:/usr:' biewlib/sysdep/generic/unix/os_dep.c
+ sed -i "s/CFLAGS += -O2 -fomit-frame-pointer/CFLAGS +=/" makefile.inc
+ sed -i 's/bool/__bool/g' plugins/bin/ne.c
+# sed -i "s/TARGET_OS=.*/TARGET_OS=linux/" makefile
+
+ # disable inline assembly for non-x86 platforms
+ use x86 || sed -i "s/TARGET_PLATFORM=.*/TARGET_PLATFORM=generic/" makefile
+}
+
+src_compile() {
+ cd ${S}
+
+ local scrnlib
+
+ if use ncurses ; then
+ scrnlib="ncurses"
+ elif use slang ; then
+ scrnlib="slang"
+ else
+ scrnlib="vt100"
+ fi
+
+ filter-flags -fPIC
+
+ emake HOST_CFLAGS="${CFLAGS}" \
+ TARGET_SCREEN_LIB=${scrnlib} || die
+}
+
+src_install() {
+ dobin biew
+ dodoc doc/*.txt
+
+ insinto /usr/lib/biew
+ doins bin_rc/biew.hlp
+ doins bin_rc/skn/standard.skn
+
+ insinto /usr/lib/biew/skn
+ doins bin_rc/skn/*
+
+ insinto /usr/lib/biew/xlt
+ doins bin_rc/xlt/*
+}
diff --git a/dev-util/biew/biew-6.1.0.ebuild b/dev-util/biew/biew-6.1.0.ebuild
new file mode 100644
index 0000000..7c31eb0
--- /dev/null
+++ b/dev-util/biew/biew-6.1.0.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/biew/biew-6.1.0.ebuild,v 1.1 2010/02/21 09:46:24 patrick Exp $
+
+inherit eutils toolchain-funcs flag-o-matic
+
+DESCRIPTION="A portable viewer of binary files, hexadecimal and disassembler modes."
+HOMEPAGE="http://biew.sourceforge.net"
+SRC_URI="mirror://sourceforge/project/beye/biew/${PV}/${PN}-${PV//./}-src.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="gpm"
+
+DEPEND="gpm? ( sys-libs/gpm )"
+
+RDEPEND="gpm? (
+ x86? ( sys-libs/gpm )
+ amd64? ( app-emulation/emul-linux-x86-baselibs )
+ )"
+# biew build only compiles 32-bit binary on amd64, and 32-bit libgpm is in
+# app-emulation/emul-linux-x86-baselibs
+
+S=${WORKDIR}/${PN}-${PV//./}
+
+src_compile() {
+ local enable_gpm
+
+ if use gpm ; then
+ enable_gpm=yes
+ else
+ enable_gpm=no
+ fi
+ export _gpm=${enable_gpm}
+
+ append-flags -D_GNU_SOURCE
+
+ econf --cc="$(tc-getCC)" --ld="$(tc-getCC)" \
+ --ar="$(tc-getAR) -rcu" --ranlib="$(tc-getRANLIB)" \
+ --enable-debug
+ emake HOST_CFLAGS="${CFLAGS}" HOST_LDFLAGS="${LDFLAGS}" \
+ || die "make failed"
+ for i in doc/*.ru doc/file_id.diz doc/biew_ru.txt doc/biew_en.txt
+ do
+ if iconv -f cp866 -t utf-8 "$i" > "$i.conv"
+ then
+ mv "$i.conv" "$i"
+ fi
+ done
+}
+
+src_install() {
+ make install DESTDIR="${D}"
+ doman doc/biew.1
+ dodoc doc/*.txt doc/*.en doc/*.ru doc/file_id.diz
+}
diff --git a/dev-util/biew/files/biew-562-lvalue-casts.patch b/dev-util/biew/files/biew-562-lvalue-casts.patch
new file mode 100644
index 0000000..d3ade95
--- /dev/null
+++ b/dev-util/biew/files/biew-562-lvalue-casts.patch
@@ -0,0 +1,152 @@
+diff -Naurp biew-562-orig/biewlib/file_ini.c biew-562/biewlib/file_ini.c
+--- biew-562-orig/biewlib/file_ini.c 2006-08-12 21:56:49.000000000 +0200
++++ biew-562/biewlib/file_ini.c 2006-08-13 12:01:32.000000000 +0200
+@@ -1295,7 +1295,7 @@ static tBool __NEAR__ __FASTCALL__ __add
+ void __HUGE__ *found;
+ ini_cache __HUGE__ *it;
+ ini_cache ic;
+- (const char *)ic.item = section;
++ ic.item = section;
+ ic.flags = 0;
+ if(!(found =la_Find((linearArray *)opening->cache,&ic,__full_compare_cache)))
+ {
+@@ -1325,7 +1325,7 @@ static tBool __NEAR__ __FASTCALL__ __add
+ {
+ do_subsect:
+ it = (ini_cache __HUGE__ *)found;
+- (const char *)ic.item = subsection;
++ ic.item = subsection;
+ if(!(found=la_Find(it->v.leaf,&ic,__full_compare_cache)))
+ {
+ ic.item = PMalloc(strlen(subsection)+1);
+@@ -1354,7 +1354,7 @@ static tBool __NEAR__ __FASTCALL__ __add
+ {
+ do_item:
+ it = (ini_cache __HUGE__ *)found;
+- (const char *)ic.item = item;
++ ic.item = item;
+ ic.flags = IC_STRING;
+ if(!(found=la_Find(it->v.leaf,&ic,__full_compare_cache)))
+ {
+@@ -1589,15 +1589,15 @@ unsigned __FASTCALL__ iniReadProfileStri
+ ini_cache ic;
+ void __HUGE__ *found,__HUGE__ *foundi,__HUGE__ *foundv;
+ ini_cache __HUGE__ *fi;
+- (const char *)ic.item = section;
++ ic.item = section;
+ ic.flags = 0;
+ if((found=la_Find(ini->cache,&ic,__full_compare_cache))!=NULL)
+ {
+- (const char *)ic.item=subsection;
++ ic.item=subsection;
+ fi = (ini_cache __HUGE__ *)found;
+ if((foundi=la_Find(fi->v.leaf,&ic,__full_compare_cache))!=NULL)
+ {
+- (const char *)ic.item = _item;
++ ic.item = _item;
+ ic.flags = IC_STRING;
+ fi = (ini_cache __HUGE__ *)foundi;
+ if((foundv=la_Find(fi->v.leaf,&ic,__full_compare_cache))!=NULL)
+diff -Naurp biew-562-orig/biewlib/sysdep/ia16/cmn_ix86.c biew-562/biewlib/sysdep/ia16/cmn_ix86.c
+--- biew-562-orig/biewlib/sysdep/ia16/cmn_ix86.c 2006-08-12 21:56:49.000000000 +0200
++++ biew-562/biewlib/sysdep/ia16/cmn_ix86.c 2006-08-13 12:01:32.000000000 +0200
+@@ -47,7 +47,7 @@ static unsigned long __NEAR__ __FASTCALL
+ ctrl_arr = c_arr;
+ /* align pointer on 16-byte boundary */
+
+- if((tUInt32)ctrl_arr & 15) ((tUInt32)ctrl_arr) += 16-((tUInt32)ctrl_arr&15);
++ if((tUInt32)ctrl_arr & 15) ctrl_arr += 16-((tUInt32)ctrl_arr&15);
+
+ memset(ctrl_arr,0,sizeof(ctrl_arr));
+ if(time_interval)
+diff -Naurp biew-562-orig/biewlib/sysdep/ia32/aclib_template.c biew-562/biewlib/sysdep/ia32/aclib_template.c
+--- biew-562-orig/biewlib/sysdep/ia32/aclib_template.c 2006-08-12 21:56:49.000000000 +0200
++++ biew-562/biewlib/sysdep/ia32/aclib_template.c 2006-08-13 12:03:54.000000000 +0200
+@@ -159,8 +159,8 @@ static void * RENAME(fast_memcpy)(void *
+ "movntps %%xmm2, 32(%1)\n"
+ "movntps %%xmm3, 48(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+- ((const unsigned char *)from)+=64;
+- ((unsigned char *)to)+=64;
++ from += 64;
++ to += 64;
+ }
+ else
+ /*
+@@ -181,8 +181,8 @@ static void * RENAME(fast_memcpy)(void *
+ "movntps %%xmm2, 32(%1)\n"
+ "movntps %%xmm3, 48(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+- ((const unsigned char *)from)+=64;
+- ((unsigned char *)to)+=64;
++ from += 64;
++ to+=64;
+ }
+ #else
+ // Align destination at BLOCK_SIZE boundary
+@@ -209,8 +209,8 @@ static void * RENAME(fast_memcpy)(void *
+ MOVNTQ" %%mm6, 48(%1)\n"
+ MOVNTQ" %%mm7, 56(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+- ((const unsigned char *)from)+=64;
+- ((unsigned char *)to)+=64;
++ from+=64;
++ to+=64;
+ }
+
+ // Pure Assembly cuz gcc is a bit unpredictable ;)
+@@ -297,8 +297,8 @@ static void * RENAME(fast_memcpy)(void *
+ MOVNTQ" %%mm6, 48(%1)\n"
+ MOVNTQ" %%mm7, 56(%1)\n"
+ :: "r" (from), "r" (to) : "memory");
+- ((const unsigned char *)from)+=64;
+- ((unsigned char *)to)+=64;
++ from+=64;
++ to+=64;
+ }
+
+ #endif /* Have SSE */
+@@ -367,7 +367,7 @@ static void * RENAME(fast_memset)(void *
+ "movntps %%xmm0, 96(%0)\n"
+ "movntps %%xmm0, 112(%0)\n"
+ :: "r" (to) : "memory");
+- ((unsigned char *)to)+=128;
++ to+=128;
+ }
+ #else
+ __asm__ __volatile__(
+@@ -393,7 +393,7 @@ static void * RENAME(fast_memset)(void *
+ MOVNTQ" %%mm0, 112(%0)\n"
+ MOVNTQ" %%mm0, 120(%0)\n"
+ :: "r" (to) : "memory");
+- ((unsigned char *)to)+=128;
++ to+=128;
+ }
+ #endif /* Have SSE */
+ #ifdef HAVE_MMX2
+diff -Naurp biew-562-orig/biewlib/tw_class.c biew-562/biewlib/tw_class.c
+--- biew-562-orig/biewlib/tw_class.c 2006-08-12 21:56:50.000000000 +0200
++++ biew-562/biewlib/tw_class.c 2006-08-13 12:01:32.000000000 +0200
+@@ -71,6 +71,6 @@ void __FASTCALL__ twcDestroyClassSet(voi
+ TwClass * __FASTCALL__ twcFindClass(const char *name)
+ {
+ TwClass key;
+- (const char *)(key.name) = name;
++ key.name = name;
+ return (TwClass *)la_Find(class_set,&key, comp_class);
+ }
+diff -Naurp biew-562-orig/biewlib/twin.c biew-562/biewlib/twin.c
+--- biew-562-orig/biewlib/twin.c 2006-08-12 21:56:50.000000000 +0200
++++ biew-562/biewlib/twin.c 2006-08-13 12:01:32.000000000 +0200
+@@ -1891,9 +1891,9 @@ int __FASTCALL__ twPutS(const char *str)
+ strcpy(__nls,str);
+ __nls_OemToOsdep((unsigned char *)__nls,len);
+ }
+- else (const char *)__nls = str;
++ else __nls = str;
+ }
+- else (const char *)__nls = str;
++ else __nls = str;
+ __nls_ptr = __nls;
+ __oem_ptr = str;
+ vidx = active->cur_x + active->cur_y*active->wwidth;
diff --git a/dev-util/decuda/Manifest b/dev-util/decuda/Manifest
new file mode 100644
index 0000000..2b354a8
--- /dev/null
+++ b/dev-util/decuda/Manifest
@@ -0,0 +1,3 @@
+AUX decuda-ds-setup.patch 2640 RMD160 cd1391e1bf63ae32f310322abcb4a6f7c3ba841b SHA1 6d1e361107e8cf938c9d142ddca48cfb52318832 SHA256 39887d4299a86fb1d6fb03f269a992bc0fa5542b1774031c8a29937c978fc1ef
+DIST decuda-0.4.2.tar.gz 143178 RMD160 8c063341cf56b4e39020be0704e8a2fcbdabaff5 SHA1 8163b8d99c3e43c93b1fddf8a3361e003d8eb664 SHA256 23be8f37fb98e5df47b9c4e29f01ed06646edd764a661de98cc3e0e851bb7183
+EBUILD decuda-0.4.2.ebuild 730 RMD160 0556af6701c50161d518dacae5b703ce230d8d67 SHA1 339f8977552e8e687ee905bdab75f26f6cea5a59 SHA256 7a4c3a76390528133710f38603668592962af49b89ed4915e272013e1f633f0f
diff --git a/dev-util/decuda/decuda-0.4.2.ebuild b/dev-util/decuda/decuda-0.4.2.ebuild
new file mode 100644
index 0000000..91bc3bb
--- /dev/null
+++ b/dev-util/decuda/decuda-0.4.2.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/gpscorrelate/gpscorrelate-1.5.6.ebuild,v 1.3 2008/08/23 18:13:05 maekke Exp $
+
+inherit eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="Assembler/Disassembler for NVIDIA CUDA binary (.cubin) format"
+HOMEPAGE="http://www.cs.rug.nl/~wladimir/decuda/"
+SRC_URI="http://www.cs.rug.nl/~wladimir/decuda/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+DEPEND="dev-lang/python"
+
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${PN}-ds-setup.patch || die
+}
+
+src_install() {
+ python setup.py install --root="${D}" --no-compile
+ dobin cudasm decuda decudaraw
+}
diff --git a/dev-util/decuda/files/decuda-ds-setup.patch b/dev-util/decuda/files/decuda-ds-setup.patch
new file mode 100644
index 0000000..622bf5e
--- /dev/null
+++ b/dev-util/decuda/files/decuda-ds-setup.patch
@@ -0,0 +1,74 @@
+diff -dPNur decuda-0.4.2/decuda decuda-0.4.2-ds/decuda
+--- decuda-0.4.2/decuda 2007-12-02 18:57:04.000000000 +0100
++++ decuda-0.4.2-ds/decuda 2008-11-27 18:18:35.000000000 +0100
+@@ -3,11 +3,12 @@
+ # sm1_1 (G80) disassembler (decuda)
+ # Wladimir J. van der Laan <laanwj@gmail.com>, 2007
+
+-from CubinFile import *
++from Decuda.CubinFile import *
++from Decuda.Formatter import AnsiFormatter
+ from sys import stdout, stderr
+ import sys, getopt
+
+-from version import VERSION
++from Decuda.version import VERSION
+
+ def usage():
+ stdout.write("Decuda .cubin disassembler version %s\n" % VERSION)
+diff -dPNur decuda-0.4.2/decudaraw decuda-0.4.2-ds/decudaraw
+--- decuda-0.4.2/decudaraw 2007-12-02 14:22:57.000000000 +0100
++++ decuda-0.4.2-ds/decudaraw 2008-11-27 18:19:07.000000000 +0100
+@@ -2,8 +2,8 @@
+ # sm1_1 (G80) disassembler (decuda)
+ # Wladimir J. van der Laan <laanwj@gmail.com>, 2007
+
+-from Disass import *
+-from CubinFile import *
++from Decuda.Disass import *
++from Decuda.CubinFile import *
+ from sys import stdout, stderr
+ import sys, getopt
+ from array import array
+Files decuda-0.4.2/Util.pyc and decuda-0.4.2-ds/Util.pyc differ
+Files decuda-0.4.2/version.pyc and decuda-0.4.2-ds/version.pyc differ
+diff -dPNur decuda-0.4.2/setup.py decuda-0.4.2-ds/setup.py
+--- decuda-0.4.2/setup.py 1970-01-01 01:00:00.000000000 +0100
++++ decuda-0.4.2-ds/setup.py 2008-11-27 18:17:20.000000000 +0100
+@@ -0,0 +1,11 @@
++from distutils.core import setup
++
++setup (name='Decuda',
++ version='0.4.2',
++ description='Assembler and disassembler for the NVIDIA CUDA binary (.cubin) format',
++ author='Wladimir J. van der Laan',
++ author_email='laanwj@gmail.com',
++ url='http://www.cs.rug.nl/~wladimir/decuda/',
++ packages=['Decuda'],
++ package_dir={'Decuda': '.'},
++)
+diff -dPNur decuda-0.4.2/cudasm decuda-0.4.2-ds/cudasm
+--- decuda-0.4.2/cudasm 2007-12-02 18:57:04.000000000 +0100
++++ decuda-0.4.2-ds/cudasm 2008-11-27 18:19:37.000000000 +0100
+@@ -3,12 +3,12 @@
+ # sm1_1 (G80) disassembler (decuda)
+ # Wladimir J. van der Laan <laanwj@gmail.com>, 2007
+
+-from Assembler import *
+-from CubinFile import *
++from Decuda.Assembler import *
++from Decuda.CubinFile import *
+ from sys import stdout, stderr
+ import sys, getopt
+
+-from version import VERSION
++from Decuda.version import VERSION
+
+ def usage():
+ stdout.write("Cudasm .cubin assembler version %s\n" % VERSION)
+diff -dPNur decuda-0.4.2/__init__.py decuda-0.4.2-ds/__init__.py
+--- decuda-0.4.2/__init__.py 1970-01-01 01:00:00.000000000 +0100
++++ decuda-0.4.2-ds/__init__.py 2008-11-27 22:20:05.000000000 +0100
+@@ -0,0 +1 @@
++
+\ No newline at end of file
diff --git a/dev-util/mutrace/Manifest b/dev-util/mutrace/Manifest
new file mode 100644
index 0000000..e5e9960
--- /dev/null
+++ b/dev-util/mutrace/Manifest
@@ -0,0 +1,4 @@
+AUX mutrace-ds-compile.patch 502 SHA256 30e0932f32695ab67be398f4d78bc8c5016385a17a65eb6ce99cd2a64f03ddb4 SHA512 d0a9a72b1efff3468876f48b6f802406a3daedcbff0639308c5325250b39d3abd8d4767fbc3bcb5c641923b1acd5a4a613712eff90d5433b343b381c0a4f272b WHIRLPOOL ae2637b91574125b1691a5f12b8b7fe45c8e09f5105edacd057aa31905e7673ea9d3b1449bd976948070861fdf675773c8d285c68f0e43689e5ff90254f6f8e6
+AUX mutrace-ds-compile2.patch 414 SHA256 c6c1c6202f8218adadd35e5e0e57577cdfdd5cf1a63b1e25f1f38d141114f0dc SHA512 798e211cfc9b4139b5758ee9fc0b95ce84c4915a8f2803b62b8163b30635fbe2e669768c951b0bbea94683964d3e3023eb354336e46768cf706fa86e837847b5 WHIRLPOOL d723bfd7c65ae30c03432f718b8aefaa6b408a969053e2d50e8d767ef36e79ced026ed52e0e01cbb327d1b8fab9449d72c23a96aa627805dd722dcf9bd055e99
+DIST mutrace-0.2.tar.gz 358710 SHA256 38eb62b9c86443361b8222d7088a9dc1e8c1db6b2b01b47c4155234d230dbd23 SHA512 237ef478417a19d5967c80d285dcde68ee8ffce40af4967a3b055347272c66a6bbdfb55ed9bf36633fbaccc7c4fd9c2de09b705ab92b74eefc5e7a7170c0c545 WHIRLPOOL df7320740b0716956c1b2efda81c6a236ae4e54a219ff1f7a07ac456f9c7cc646ea678c01ef4f7b40a439d80cc0ee461dfa88da7400312d50a7f22cba5bbb5e5
+EBUILD mutrace-0.2-r1.ebuild 657 SHA256 974b1a08c15739c059b87167281c56bbdacd70188cf9911b78647072825cb695 SHA512 ef00320055b757949b394a6a7f8864ab5be493b6f2ed4b3f669e499efb53facb47266816c264f7c877e756c81baadfb017f6029312f9b9767f0ea180f75ef44a WHIRLPOOL a8eed0b44c1038b73f79f114ccd4d053e08c00b067ee024bb7ad44578b536e398fa9a9b39ef373dbc8bf32c1ff392ea16edc8564afb53dfdbf1395ae013fa1f6
diff --git a/dev-util/mutrace/files/mutrace-ds-compile.patch b/dev-util/mutrace/files/mutrace-ds-compile.patch
new file mode 100644
index 0000000..ada8a9c
--- /dev/null
+++ b/dev-util/mutrace/files/mutrace-ds-compile.patch
@@ -0,0 +1,12 @@
+diff -dPNur mutrace-0.2/backtrace-symbols.c mutrace-0.2-ds/backtrace-symbols.c
+--- mutrace-0.2/backtrace-symbols.c 2014-10-14 11:04:31.732216473 +0200
++++ mutrace-0.2-ds/backtrace-symbols.c 2014-10-14 11:03:18.000000000 +0200
+@@ -34,6 +34,8 @@
+ along with this program; if not, write to the Free Software
+ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
++#include "config.h"
++
+ #define fatal(a, b) exit(1)
+ #define bfd_fatal(a) exit(1)
+ #define bfd_nonfatal(a) exit(1)
diff --git a/dev-util/mutrace/files/mutrace-ds-compile2.patch b/dev-util/mutrace/files/mutrace-ds-compile2.patch
new file mode 100644
index 0000000..81928e9
--- /dev/null
+++ b/dev-util/mutrace/files/mutrace-ds-compile2.patch
@@ -0,0 +1,12 @@
+diff -dPNur mutrace-0.2-orig/backtrace-symbols.c mutrace-0.2/backtrace-symbols.c
+--- mutrace-0.2-orig/backtrace-symbols.c 2017-01-29 16:07:03.588096070 +0100
++++ mutrace-0.2/backtrace-symbols.c 2017-01-29 16:06:01.359944270 +0100
+@@ -52,7 +52,7 @@
+ #include <stdlib.h>
+ #include <execinfo.h>
+ #include <bfd.h>
+-#include <libiberty.h>
++#include <libiberty/libiberty.h>
+ #include <dlfcn.h>
+ #include <link.h>
+ #if 0
diff --git a/dev-util/mutrace/mutrace-0.2-r1.ebuild b/dev-util/mutrace/mutrace-0.2-r1.ebuild
new file mode 100644
index 0000000..30480a4
--- /dev/null
+++ b/dev-util/mutrace/mutrace-0.2-r1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/mutrace/mutrace-0.2.ebuild,v 1.2 2009/11/23 10:05:19 robbat2 Exp $
+
+EAPI="2"
+
+inherit eutils
+
+DESCRIPTION="mutrace is a mutex tracer/profiler"
+HOMEPAGE="http://0pointer.de/blog/projects/mutrace.html"
+SRC_URI="http://0pointer.de/public/${P}.tar.gz"
+
+LICENSE="GPL-2 LGPL-3"
+SLOT="0"
+KEYWORDS="~x86 ~amd64 ~arm"
+IUSE=""
+
+DEPEND="sys-devel/binutils"
+RDEPEND="${DEPEND}"
+
+DOCS="README GPL2 GPL3 LGPL3"
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-ds-compile.patch
+ epatch "${FILESDIR}"/${PN}-ds-compile2.patch
+} \ No newline at end of file
diff --git a/dev-util/nvidia-cuda-toolkit/Manifest b/dev-util/nvidia-cuda-toolkit/Manifest
new file mode 100644
index 0000000..70e97f3
--- /dev/null
+++ b/dev-util/nvidia-cuda-toolkit/Manifest
@@ -0,0 +1,3 @@
+AUX cuda-config 512 BLAKE2B fdd0c6f32c9fb49dd2d0864a36a882bed2d20e7e4890b239eb77620d8c8eb7ce280e2b1552e56a91d8e2925453ad3dd34a0159f4b0851b8f073d9ad0fbda5dc1 SHA512 a67f3e34a14ca1c13be8f3f8d345b6c7d881edeae52d737e9aafb9f9807f4dee08e016b8823cb60864961b59f2dd330eb8a1b372178c2451e253acc586ae889a
+EBUILD nvidia-cuda-toolkit-9-r1.ebuild 281 BLAKE2B a642548b9a1886210a68d7ef8bd77947e459b9137daccb08d5828031fc0b4bac917c3594c14f7d408c2d921363cb7786590ad7f8277bc103ec9185835d43ebed SHA512 bbe12344e117f4ea79120aafa11a85cf217e08f987e1228e18af0f9f6e0f68194c73a146e08ca193af4f3de08999b7c54ed754daf6ad32b80fddcc5ff7631d30
+EBUILD nvidia-cuda-toolkit-9.ebuild 225 BLAKE2B bdf5a84d21d4838c918139c249029f964da6a0cdcb1a475af631350d268999c8072ca15dcce63005f2a8b83e08d7eca646892cc207bca70f7b946cd9ae337992 SHA512 822c0fd651a525a38681f879094384cc46eed7fb08bedabcd1790358fc179bb84e71226b9a14a43800c45911baedb32d7bca1afefe20d111912508e565f0ae89
diff --git a/dev-util/nvidia-cuda-toolkit/files/cuda-config b/dev-util/nvidia-cuda-toolkit/files/cuda-config
new file mode 100755
index 0000000..14064d3
--- /dev/null
+++ b/dev-util/nvidia-cuda-toolkit/files/cuda-config
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+SUPPORT_GCC_VERSIONS_BY_CUDA="4.4 4.5 4.6 4.7 4.8 4.9 5.4 6.4 7.3"
+
+_print_help() {
+ cat <<- EOF
+ Usage:
+ $(basename $0) [options]
+
+ -s | --supported Returns by current CUDA supported gcc versions
+ -h | --help Shows this help
+EOF
+}
+
+case ${1} in
+ -s|--supported)
+ echo "${SUPPORT_GCC_VERSIONS_BY_CUDA}"
+ exit 0
+ ;;
+ -h|--help)
+ _print_help
+ exit -1
+ ;;
+ *)
+ _print_help
+ exit 1
+ ;;
+esac
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9-r1.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9-r1.ebuild
new file mode 100644
index 0000000..48578a3
--- /dev/null
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9-r1.ebuild
@@ -0,0 +1,15 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="NVIDIA CUDA Toolkit Override"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+
+
+src_install() {
+ dobin "${FILESDIR}/cuda-config"
+}
diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9.ebuild
new file mode 100644
index 0000000..22b66d8
--- /dev/null
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-9.ebuild
@@ -0,0 +1,10 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="NVIDIA CUDA Toolkit Override"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
diff --git a/dev-util/objconv/Manifest b/dev-util/objconv/Manifest
new file mode 100644
index 0000000..f65277e
--- /dev/null
+++ b/dev-util/objconv/Manifest
@@ -0,0 +1,2 @@
+DIST objconv.zip 703756 RMD160 0cdf618dd2610b5e6552a63422d362a904a66c48 SHA1 f5b4edfd25c06969241b26abd21edd1b2be19567 SHA256 9855fb155e48b9a979ff296d5c10d246da0d945a37962d8970f4d661cc8167b3
+EBUILD objconv-2.08.ebuild 885 RMD160 4b51698151c545a7c9fcf83041fd9c47e30657bb SHA1 50d9c2e525986cd1c3d3f9e67eb47c0296a25649 SHA256 4ed1b510ef75de5c9617e5ff5b100e46bd2e2557a7671b137854bf9939aeb339
diff --git a/dev-util/objconv/objconv-2.08.ebuild b/dev-util/objconv/objconv-2.08.ebuild
new file mode 100644
index 0000000..ce967c1
--- /dev/null
+++ b/dev-util/objconv/objconv-2.08.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="An Object File Converter"
+HOMEPAGE="http://www.agner.org/optimize#objconv"
+SRC_URI="http://www.agner.org/optimize/${PN}.zip"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE="doc"
+DEPEND="app-arch/unzip"
+RDEPEND="${DEPEND}"
+MY_SOURCE="source.zip"
+
+src_unpack() {
+ unpack ${PN}.zip
+ unpack ./${MY_SOURCE}
+}
+
+src_compile() {
+ SOURCES=$(ls *.cpp)
+ local x
+ for x in $SOURCES ; do
+ echo "Compiling $x..."
+ $(tc-getCXX ) ${CXXFLAGS} -c ${x} \
+ || die "Compile failed."
+ done
+ OBJS=$(ls *.o)
+ echo "Creating objconv..."
+ $(tc-getCXX ) ${CXXFLAGS} -o ${PN} $OBJS
+}
+
+src_install() {
+ dobin ${PN} || die "Install failed!"
+ if use doc ; then
+ dodoc objconv-instructions.pdf || die "Unable to install manual!"
+ fi
+}
diff --git a/dev-vcs/bzr-search/Manifest b/dev-vcs/bzr-search/Manifest
new file mode 100644
index 0000000..b964de0
--- /dev/null
+++ b/dev-vcs/bzr-search/Manifest
@@ -0,0 +1 @@
+EBUILD bzr-search-9999.ebuild 449 BLAKE2B 9ad4a304b7fd8633581a0e6819942eec58bb8b3a6d9e8797681c94bbb92199ee3af6b893a566848c82e61f89abfa3adbb1a2901febe3c45f62aed589cc877f13 SHA512 8b45a41972882ce48b53be892864e79c39c5ed849134820e8bc5adb9882a95feb9627c690b08cc604097d3497833cd7d417b60c795e7cdad39cc22b2b65d3c95
diff --git a/dev-vcs/bzr-search/bzr-search-9999.ebuild b/dev-vcs/bzr-search/bzr-search-9999.ebuild
new file mode 100644
index 0000000..7523263
--- /dev/null
+++ b/dev-vcs/bzr-search/bzr-search-9999.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 bzr
+
+DESCRIPTION="Generates indices of bzr revisions which can then be searched quickly"
+HOMEPAGE="https://launchpad.net/bzr-search"
+SRC_URI=""
+EBZR_REPO_URI="lp:bzr-search"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE=""
+
+DEPEND=">=dev-vcs/bzr-1.6"
+RDEPEND=""
diff --git a/dev-vcs/bzr-svn/bzr-svn-1.2.2.ebuild b/dev-vcs/bzr-svn/bzr-svn-1.2.2.ebuild
new file mode 100644
index 0000000..15cf0c0
--- /dev/null
+++ b/dev-vcs/bzr-svn/bzr-svn-1.2.2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-vcs/bzr-svn/bzr-svn-1.2.2.ebuild,v 1.3 2013/03/25 20:40:05 ago Exp $
+
+EAPI="3"
+PYTHON_DEPEND="2:2.5"
+PYTHON_USE_WITH="sqlite"
+SUPPORT_PYTHON_ABIS="1"
+RESTRICT_PYTHON_ABIS="2.4 3.*"
+
+inherit distutils
+
+MY_P=${P/_rc/~rc}
+
+DESCRIPTION="Bazaar plugin that adds support for foreign Subversion repositories."
+HOMEPAGE="http://bazaar-vcs.org/BzrForeignBranches/Subversion"
+SRC_URI="http://samba.org/~jelmer/bzr/${MY_P}.tar.gz"
+
+LICENSE="|| ( GPL-2 GPL-3 )"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="test"
+# As long as https://bugs.launchpad.net/bzr-svn/+bug/526485 is unfixed
+RESTRICT=test
+
+# Packager: check compatible bzr versions via
+# `grep bzr_compatible_versions info.py`, and minimum subvertpy version
+# via `grep subvertpy_minimum_version info.py`.
+
+CDEPEND=">=dev-vcs/bzr-2.5
+ >=dev-python/subvertpy-0.8.8"
+DEPEND="${CDEPEND}
+ test? ( !dev-vcs/bzr-rewrite )"
+RDEPEND="${CDEPEND}"
+
+S=${WORKDIR}/${MY_P}
+
+DOCS="AUTHORS FAQ HACKING NEWS README TODO mapping.txt specs/*"
diff --git a/dev-vcs/bzr-webdav/Manifest b/dev-vcs/bzr-webdav/Manifest
new file mode 100644
index 0000000..3f2e5ea
--- /dev/null
+++ b/dev-vcs/bzr-webdav/Manifest
@@ -0,0 +1,2 @@
+AUX bzr_webdav-ds-error400.patch 467 SHA256 7561f3881f48a9775f19c24465a5837c1378e88332a03452e5299ad95fd7d69f SHA512 50e7377c5ab9db374600687bc70b3e8eab4d9612f3fc418988af6853202667535a4dfad2ed2621b0859e55f9e616412e40bd07cd610d2cb34dc60e49be16acf5 WHIRLPOOL a9516cacd8c90e4c3c784cd1f366d7c6d93b34c6741728dd76ea35cc28884e4d401b8de5934cb36846f1f0cc4d1bac377db49761e755a8f81f9c9aa6e509e2e4
+EBUILD bzr-webdav-9999.ebuild 910 SHA256 8508719189ea3887dc326c7029bea19759945259853fc7b44eb9776874f61a6c SHA512 03e6d5e6a280dc41c0db58ef5d33d02d4c265f2d6306ad07c736178b64770ce145e94896c0f3e4d2a69a3d783b45c4edf99269f8e60441760348b435d3adc781 WHIRLPOOL 18e28de3468a769f98c2c9ebf0529d50e550251940680a65a5d9a83f2f59a1a42310e2ee515389e01fc8d4b866b9de8a1fc31ef613bab6bb0405387969a1c14e
diff --git a/dev-vcs/bzr-webdav/bzr-webdav-9999.ebuild b/dev-vcs/bzr-webdav/bzr-webdav-9999.ebuild
new file mode 100644
index 0000000..e192fde
--- /dev/null
+++ b/dev-vcs/bzr-webdav/bzr-webdav-9999.ebuild
@@ -0,0 +1,34 @@
+# Distributed under the terms of the GNU General Public License v2
+# Copyleft (c) Vadim Fint aka MockSoul <mocksoul@gmail.com>
+
+EAPI=6
+
+inherit eutils bzr
+
+DESCRIPTION="Implementation of WebDAV for bzr http transports. Allows write access to DAV-enabled web servers by registering http+webdav and https+webdav as protocols recognized by bzr"
+HOMEPAGE="https://launchpad.net/bzr.webdav"
+#EBZR_REPO_URI="lp:bzr.webdav"
+EBZR_REPO_URI="http://darksoft.org/bzr/mirrors/bzr.webdav"
+EBZR_BRANCH="trunk"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE=""
+DEPEND=">=dev-lang/python-2.4"
+RDEPEND="${DEPEND}"
+
+
+PATCHES=(
+ "${FILESDIR}"/bzr_webdav-ds-error400.patch
+)
+
+
+src_install() {
+ pylibdir="$(python -c 'from distutils.sysconfig import get_python_lib; print get_python_lib()')"
+ [ -n "${pylibdir}" ] && dodir "${pylibdir}"
+ plugdir=$pylibdir/bzrlib/plugins/webdav
+ dodir $plugdir
+ insinto $plugdir
+ doins *.py
+}
diff --git a/dev-vcs/bzr-webdav/files/bzr_webdav-ds-error400.patch b/dev-vcs/bzr-webdav/files/bzr_webdav-ds-error400.patch
new file mode 100644
index 0000000..9f4061a
--- /dev/null
+++ b/dev-vcs/bzr-webdav/files/bzr_webdav-ds-error400.patch
@@ -0,0 +1,12 @@
+--- webdav/webdav.py 2012-07-14 22:33:22.000000000 +0200
++++ empty-put-request-bug/webdav.py 2012-07-14 23:49:02.000000000 +0200
+@@ -798,6 +797,9 @@
+
+ def append_bytes(self, relpath, bytes, mode=None):
+ """See Transport.append_bytes"""
++ if not bytes:
++ return
++
+ if self._range_hint is not None:
+ # TODO: We reuse the _range_hint handled by bzr core,
+ # unless someone can show me a server implementing
diff --git a/eclass/g-sorcery.eclass b/eclass/g-sorcery.eclass
new file mode 100644
index 0000000..338dc83
--- /dev/null
+++ b/eclass/g-sorcery.eclass
@@ -0,0 +1,49 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+# automatically generated by g-sorcery
+# please do not edit this file
+#
+# Original Author: Jauhien Piatlicki <piatlicki@gmail.com>
+# Purpose: base routines for g-sorcery backends' eclasses
+#
+# Bugs to piatlicki@gmail.com
+#
+# @ECLASS: g-sorcery.eclass
+#
+# @ECLASS-VARIABLE: REPO_URI
+# @DESCRIPTION: address of a repository with sources
+#
+# @ECLASS-VARIABLE: DIGEST_SOURCES
+# @DESCRIPTION: whether manifest for sources exists
+#
+# @ECLASS-VARIABLE: SOURCEFILE
+# @DESCRIPTION: source file name
+#
+# @ECLASS-VARIABLE: GSORCERY_STORE_DIR
+# @DESCRIPTION: store location for downloaded sources
+GSORCERY_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}"
+#
+# @ECLASS-VARIABLE: GSORCERY_FETCH_CMD
+# @DESCRIPTION: fetch command
+GSORCERY_FETCH_CMD="wget"
+
+EXPORT_FUNCTIONS src_unpack
+
+g-sorcery_fetch() {
+ addwrite "${GSORCERY_STORE_DIR}"
+ pushd "${GSORCERY_STORE_DIR}" >/dev/null || die "can't chdir to ${GSORCERY_STORE_DIR}"
+ if [[ ! -f "${SOURCEFILE}" ]]; then
+ $GSORCERY_FETCH_CMD ${REPO_URI}${SOURCEFILE} || die
+ fi
+ popd >/dev/null || die
+}
+
+g-sorcery_src_unpack() {
+ if [[ x${DIGEST_SOURCES} = x ]]; then
+ g-sorcery_fetch
+ fi
+
+ cp ${GSORCERY_STORE_DIR}/${SOURCEFILE} . || die
+ unpack ./${SOURCEFILE}
+} \ No newline at end of file
diff --git a/eclass/gs-pypi.eclass b/eclass/gs-pypi.eclass
new file mode 100644
index 0000000..ddccd7c
--- /dev/null
+++ b/eclass/gs-pypi.eclass
@@ -0,0 +1,15 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+# automatically generated by gs-pypi
+# please do not edit this file
+#
+# Original Author: Jauhien Piatlicki <jauhien@gentoo.org>
+# Purpose: support installation of python packages from PyPI repo
+#
+# Bugs to jauhien@gentoo.org
+#
+# @ECLASS: gs-pypi.eclass
+#
+
+inherit distutils-r1 g-sorcery \ No newline at end of file
diff --git a/eclass/qt3.eclass b/eclass/qt3.eclass
new file mode 100644
index 0000000..20a6b00
--- /dev/null
+++ b/eclass/qt3.eclass
@@ -0,0 +1,7 @@
+# Copyright 2005-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/eclass/qt3.eclass,v 1.42 2010/03/26 19:40:38 yngwin Exp $
+
+# @DEAD
+# To be removed on 2012-03-26
+ewarn 'Please fix your ebuild to not inherit the deprecated qt3.eclass'
diff --git a/eclass/rusxmms-plugin.eclass b/eclass/rusxmms-plugin.eclass
new file mode 100644
index 0000000..cd16832
--- /dev/null
+++ b/eclass/rusxmms-plugin.eclass
@@ -0,0 +1,122 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+#
+# Jeremy Huddleston <eradicator@gentoo.org>
+
+# Usage:
+# This eclass is used to create ebuilds for xmms plugins which are contained
+# within the main xmms tarball. Usage:
+
+# PATCH_VER:
+# M4_VER:
+# GENTOO_URI:
+GENTOO_URI=${GENTOO_URI-"http://dside.dyndns.org/files/rusxmms"}
+# Set this variable if you want to use a gentoo specific patchset. This adds
+# ${GENTOO_URI}/xmms-${PV}-gentoo-patches-${PATCH_VER}.tar.bz2 to the SRC_URI
+
+# PLUGIN_PATH:
+# Set this variable to the plugin location you want to build.
+# Example:
+# PLUGIN_PATH="Input/mpg123"
+
+# SONAME:
+# Set this variable to the filename of the plugin that is copied over
+# Example:
+# SONAME="libmpg123.so"
+
+inherit eutils
+
+DESCRIPTION="Xmms Plugin: ${PN}"
+HOMEPAGE="http://www.xmms.org"
+LICENSE="GPL-2"
+
+SRC_URI="http://www.xmms.org/files/1.2.x/xmms-${PV}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa${RUSXMMS_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-${M4_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/xmms-${PV}-gentoo-patches-${PATCH_VER}.tar.bz2"
+
+# Set S to something which exists
+S="${WORKDIR}/xmms-${PV}"
+
+IUSE="${IUSE} rcc"
+RDEPEND="${RDEPEND+${RDEPEND}}${RDEPEND-${DEPEND}}"
+DEPEND="${DEPEND}
+ =sys-devel/automake-1.7*
+ sys-devel/autoconf
+ sys-devel/libtool
+ rcc? ( app-i18n/librcc )"
+
+
+rusxmms-plugin_src_unpack() {
+ if ! has_version '>=media-sound/xmms-1.2.10-r13'; then
+ ewarn "You don't have >=media-sound/xmms-1.2.10-r13, so we are using the SDK in"
+ ewarn "this package rather that the one installed on your system. It is recommended"
+ ewarn "that you cancel this emerge and grab >=media-sound/xmms-1.2.10-r13 first."
+ epause 5
+ fi
+
+ unpack ${A}
+
+ cd ${S}
+
+ if [[ ${PV} != *1.2.10* ]]; then
+ use rcc && ../RusXMMS2/apply.sh
+ fi
+
+ if [[ -n "${PATCH_VER}" ]]; then
+ EPATCH_SUFFIX="patch"
+ epatch ${WORKDIR}/patches
+ fi
+
+ cd ${S}/${PLUGIN_PATH}
+ sed -i -e "s:-I\$(top_srcdir)::g" \
+ -e "s:\$(top_builddir)/libxmms/libxmms.la:/usr/$(get_libdir)/libxmms.la:g" \
+ Makefile.am || die "Failed to edit Makefile.am"
+
+ cd ${S}
+
+ if [[ ${PV} == *1.2.10* ]]; then
+ use rcc && ../RusXMMS2/apply-gentoo.sh
+
+ export WANT_AUTOMAKE=1.7
+ export WANT_AUTOCONF=2.5
+ fi
+
+ libtoolize --force --copy || die "libtoolize --force --copy failed"
+
+ if [[ -n "${M4_VER}" ]]; then
+ rm acinclude.m4
+ aclocal -I ${WORKDIR}/m4 || die "aclocal failed"
+ else
+ aclocal || die "aclocal failed"
+ fi
+ autoheader || die "autoheader failed"
+ automake --gnu --add-missing --include-deps --force-missing --copy || die "automake failed"
+
+ cd ${S}/${PLUGIN_PATH}
+ if has_version '>=media-sound/xmms-1.2.10-r13'; then
+ sed -i -e "s:^DEFAULT_INCLUDES = .*$:DEFAULT_INCLUDES = -I. $(xmms-config --cflags):" \
+ Makefile.in || die "Failed to edit Makefile.in"
+ fi
+
+ cd ${S}
+ autoconf || die "autoconf failed"
+}
+
+rusxmms-plugin_src_compile() {
+ filter-flags -fforce-addr -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+
+ econf ${myconf}
+ cp config.h ${S}/${PLUGIN_PATH}
+
+ cd ${S}/${PLUGIN_PATH}
+ emake -j1 || die
+}
+
+rusxmms-plugin_src_install() {
+ cd ${S}/${PLUGIN_PATH}
+ make DESTDIR="${D}" install || die
+}
+
+EXPORT_FUNCTIONS src_unpack src_compile src_install
diff --git a/gnome-base/gnome-libs/Makefile.am b/gnome-base/gnome-libs/Makefile.am
new file mode 100644
index 0000000..8ed545f
--- /dev/null
+++ b/gnome-base/gnome-libs/Makefile.am
@@ -0,0 +1,61 @@
+## Process this file with automake to produce Makefile.in.
+
+# Actually the earliest release that should be OK should be 1.2e, I think.
+# Still, 1.3 is the first "released" automake that is OK.
+AUTOMAKE_OPTIONS = 1.3
+
+bin_SCRIPTS = gnome-config gnome-bug
+
+if COMPILE_TEST_GNOME
+test_gnome = test-gnome test-suite
+else
+test_gnome =
+endif
+
+SUBDIRS = po intl support macros \
+ tools \
+ images \
+ libart_lgpl \
+ libgnome libgnomeui zvt \
+ libgnorba idl $(test_gnome) devel-docs gnome-data man
+
+gnomeincludedir=$(includedir)/gnome-1.0
+gnomeinclude_HEADERS = gnome.h
+
+EXTRA_DIST = HACKING gnomeConf.sh.in gnome-bug.in gnome-config.in \
+ gnome-libs.spec.in
+
+dist-hook: gnome-libs.spec
+ cp gnome-libs.spec $(distdir)
+
+release:
+ $(MAKE) dist distdir=$(PACKAGE)$(VERSION)
+
+## Put `exec' in the name because this should be installed by
+## `install-exec', not `install-data'.
+confexecdir=$(libdir)
+confexec_DATA=gnomeConf.sh
+
+## to automatically rebuild aclocal.m4 if any of the macros in
+## `macros/' change
+@MAINT@include macros/macros.dep
+@MAINT@macros/macros.dep: macros/Makefile.am
+@MAINT@ cd macros && $(MAKE) macros.dep
+
+## We create gnomeConf.sh here and not from configure because we want
+## to get the paths expanded correctly. Macros like srcdir are given
+## the value NONE in configure if the user doesn't specify them (this
+## is an autoconf feature, not a bug).
+gnomeConf.sh: gnomeConf.sh.in Makefile
+## Use sed and then mv to avoid problems if the user interrupts.
+ sed -e 's^\@GNOME_LIBDIR\@^$(GNOME_LIBDIR)^g' \
+ -e 's^\@GNOME_INCLUDEDIR\@^$(GNOME_INCLUDEDIR)^g' \
+ -e 's^\@GNOME_LIBS\@^$(GNOME_LIBS)^g' \
+ -e 's^\@GNOMEUI_LIBS\@^$(GNOMEUI_LIBS)^g' \
+ -e 's^\@GTKXMHTML_LIBS\@^$(GTKXMHTML_LIBS)^g' \
+ -e 's^\@GTK_CFLAGS\@^$(GTK_CFLAGS)^g' \
+ -e 's^\@need_gnome_support\@^$(need_gnome_support)^g' \
+ < $(srcdir)/gnomeConf.sh.in > gnomeConf.tmp \
+ && mv gnomeConf.tmp gnomeConf.sh
+
+CLEANFILES=gnomeConf.sh
diff --git a/gnome-base/gnome-libs/Manifest b/gnome-base/gnome-libs/Manifest
new file mode 100644
index 0000000..206f923
--- /dev/null
+++ b/gnome-base/gnome-libs/Manifest
@@ -0,0 +1,15 @@
+AUX gnome-libs-1.4.2-ds-db.diff 1563 SHA256 d4cecb2ab24a676fad35e6e63c6c5c39fcf69d6385017cc15df7a16bd6531edd SHA512 aeb620455f766c7fb4806d1263c973e206449d0c241329700175bce80ae30d1fd8ba0d8e1737c8de6171d16104c75ed39516c70991aca12a3f1815b7cf69a30e WHIRLPOOL 25a141a168d9772ed115fb86af8241ee174b94c1568a0945354dfe2cf07849b49003bdf45a388e04ce09f8bdd89973f1e1bd9cf8a7c193c736a79176817931bc
+AUX gnome-libs-1.4.2-ds-gmodule.diff 686 SHA256 238a478d9d4de8f441d18d6b922182ffa82dbe1baec5ae91d34f29e599985e70 SHA512 c90539e1b6e13004812f6a24208bdc590eb61ceef5a04d1d3c9b2b35247755a86854f9713b8799161e1baae2826b0d2b63bcf27e38c6de2f422232c6e344287b WHIRLPOOL e73b3c00a9237d9debeae26efcd984f95d5246cfa0336cbe3d63628748213fc9ef340c4c6e175584046b4e278e75ea424ab69181c2d5ce6f555d3aff68bb3a23
+AUX gnome-libs-1.4.2-gcc4.patch 507 SHA256 1d8846adb3cc6db63827ea4b4d1bdce7ec70ed0fd486809394d8950001705e11 SHA512 9322592df7db1fa125a21a37037253b2935abb5b3efd059fb0fa45f9f9575b5e00d4f7e2efe09eaf78c4e6e14d64a6b7cfe71cdd3728c114d82812e57f230cf8 WHIRLPOOL 6796506692de4e30c68502a86306d64cafe237f2e81ec8ed70f2a8e7cbae2006c64741542d12b5e5784e4ec67a0177425a2e3690bb3069f1d952b2c737c60af4
+AUX gnome-libs-1.4.2-gtkdoc_fixes.patch 1089 SHA256 15f30b0682e8c6a498a91e3afc613863de23cfc92501b97905d13831bd7206b8 SHA512 4f5d927c3cf954d5fc2882dd396225d610c5bf7bacb3d0c70cd57a1d10720c29561d943defa46ae9324d611ebdb7b561f853fdbcc794763ac34a4903ae2bfca2 WHIRLPOOL cebcaad49f738df9dbeb3f037c8f08521b1b416a51408b7271678a9725d101c83a83f38d9acd32c44c9088439effa9c246fbffa0f86dbc6399315dc17293420e
+AUX gnome-libs-1.4.2-m4.patch 274 SHA256 73ccbcb399ff1e847cd493b06b32d6941d4465624e741fd0f964d6afa6a1b0c5 SHA512 0f34d7a5819a1bbed98f379d4f991c0ec815fb5df1b6e9ab80337804f0c244791847e2e8b68a1c2575dff648c23b5e1f229a64302b09c6c0af491a67bfa60d6a WHIRLPOOL e259e9875a240b23aee45af53454647e77cc4ba7e8f3b19268f5a0fa2b2259d2f3f5f7a8de666a3a43c9c30ed941ea134b1e07f76cfc95337024072c60caa3e3
+AUX gnome-libs-1.4.2-ppc64.patch 475 SHA256 2f733fec123753ff5b214ea3032d4fde18664d9fde1fd5bdb640de5c42109dad SHA512 245a5d9cfaa4d85010c70b59ff429b99f943b4168f94f43f5e8321d55851011282c9a99d53b3bcf52b66287923ad259ca4bd8740f9735b017046103154c06b24 WHIRLPOOL 5c64b5a0d2c5fe0acabd64f03255e822817a83ce1ccc2f687f5ed40fd4773cb8c42e06901824618e6180cd3c9ccfbbbc59d8a67f0e18c6ddb0172d306b295cb7
+AUX gnome-libs-ds-gnorba.patch 1517 SHA256 bf0c10f1ed3e354b574df39a4348dc5665afdcefd151df5ed7b38e9aaa2ffdbd SHA512 c6001418c4448dcf1e0907ae310cd5f6de59dcbb79fc633eff04e5e51542dad585dae44cf5b909c99cfa1b9eabd8905e3cc8ac27bbade487425135d2fb2ac221 WHIRLPOOL a2ceecbd5cf6b0062e5906f9735b0daa763144f83931b55e97e2685e37b950db955ef1f69a59291fc5be3be5db5f06fca7f996d903e57f7b212d82b2246fa533
+AUX gnome-png.diff 1103 SHA256 6103a005189a469bbeaa9a804a3af922f8ba6d1e0558c79884112660bd5aa175 SHA512 6333bf85e0bc810f1b81f7e36fcf81bf60b80bbd3071ffb5440aeba9a951399832deea690043e368ed2839677104331d14112cc68a8999b865679a056e6d03f5 WHIRLPOOL 3b7ac7ddad30d311576a078b6894c720caddef7a72f0c31e148bd3f15568635393f9bfb2f97ff767750a1ed1bf38b0d961e5a0976ae9a60b7a62fc0f4836a81f
+DIST gnome-libs-1.4.2.tar.bz2 2875219 SHA256 84a7ff35e69341d5c297b633b3d64c01e7844e3b428f8926e823638911788c28 SHA512 f145a3707c0777a0f864f37935819a8425be8d2f5622ef8f514282840032902c03a3a9ea6e9fc82a83f1302f6a400d74aefb3b6ba503f846c02e2ec699e5d3ef WHIRLPOOL 849d16427b79d6c8de709ac5c76430948d33688b13d12fef89b38841ec6baaed78113b14768cc4f3547be3ec3d7835f6e488103d3afe0f35da275fb474775f51
+EBUILD gnome-libs-1.4.2-r1.ebuild 2523 SHA256 42a5d96b2a6ef76a5a4ee6bb18cffc661aa019880a313559e81e5a757d200835 SHA512 9d294a9189541ca3b513c03ef454565608287424a751d8fde8ea1bf89e9dafd859fe6aff2f95bbce1cf5820328283b9766bc18737bdae94677f7a6cea2492f32 WHIRLPOOL ed00404b303e5fe365086580459b2d8d2b2b5f7d77f226f0d64da0d4d20b680129c6f50ccbd3f6a6c3eb50f10b79fe66d1e10a4ff30edacccc172ab133f3ba31
+EBUILD gnome-libs-1.4.2-r2.ebuild 2560 SHA256 62f836d970cbc195f3473b86cd15a4c5a5e389a84c2a25b2d354a9df15644d9e SHA512 575e7370c211d6d2c3044dc4559bef4d5604f0d7a70c45e91412fdb7ac47d70a4974e4f4cf695142d091bdbe042652c852a32543ef267e3040e6a1e4748e923c WHIRLPOOL 7d604e08c237b0089e4be06dcc3efdec06319f8b2aad44db8344ac821b9b7b2811ca07cea01a4906ddea396d0bd6584feafbe18ec2f93790f36d6b4e1d0cf1b7
+EBUILD gnome-libs-1.4.2-r3.ebuild 2550 SHA256 1c69ffef5186c9333ac18eb35e0c9f5993878214baada209d5be84f310fec000 SHA512 587860d5793236d80c312977069168d9c74d2474450e1b0c4bfd3d12d7ae9a81c7d34c070dcc3113a0e6aa1cb7a8e65dbb9cee37fa454de4f536f59fb691775f WHIRLPOOL 9c64970b048c8770674b79b1b6a3cac7538e8dd8450f2219e95501f57c174eb818dc42e4be49f814661f1f3855a36ab6d3d3dd8b0c56d4e1c7a6302c719f41a7
+EBUILD gnome-libs-1.4.2-r4.ebuild 2556 SHA256 46533f721cc284da6888cd93de859615a08d0c0bd8a9ce27234ec298d625c520 SHA512 4c575336e84249396134e6a2a27149071c0a560a8f8a27dd996cbe24b1b049e7a6bfe1b005a4d971fdf33443ff73452795a845910b7fcf6251c90e1b1603f510 WHIRLPOOL bd12a69f49ce7c547a7681c3cb75bc7b9de19ac61ee372d765750809f876308c22f358829247de51116aaf6b114be0e32daf4cd6da15696577e20a21ab95657c
+EBUILD gnome-libs-1.4.2.ebuild 2416 SHA256 e4d3b324b9ff15512a2b7ece2a22ab968d6bd95c2f3d92d392dd82af6803188b SHA512 97d2ccf397e513fd7bcb936c65c926e54e37e4ccde9ee983c966f66d55480193e123914fec2556ee0721b7c3406bcd885bf621d332050100572d70adb26c39be WHIRLPOOL 1a746d9db04ff086488a218b3116be7340b1bab6c0fc87c887e3c1aa8141460a6f6985ba752aeabd8a37a054108516d485e714b92f2530b0d90e101c3183462d
+MISC Makefile.am 1949 SHA256 05f15223ba9ecf8a3f6ed6fa9da4026d49d4afc1ba464d0210dc9398a3cb74b8 SHA512 d5f995bd6bf0b4066a205b0b9a081fb7fc91aee5e116e23f22ba0847b4c7f71612a883020e63591c70714fef92bed9fd8d9171574a2b8a41cef1e736c419ca72 WHIRLPOOL 20c82bdfbc0ceb5b5e7bae2b32bcaa9779183c5a1e83e633cf8a41356c684cdb8c8521d76ada72170e2ff5de0bcbc560e7b1f836c7a18f65f748851fef988d1e
diff --git a/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-db.diff b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-db.diff
new file mode 100644
index 0000000..0d37625
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-db.diff
@@ -0,0 +1,50 @@
+diff -dPNur gnome-libs-1.4.2/configure.in gnome-libs-1.4.2-ds/configure.in
+--- gnome-libs-1.4.2/configure.in 2012-01-15 00:48:44.000000000 +0100
++++ gnome-libs-1.4.2-ds/configure.in 2012-01-15 00:46:27.000000000 +0100
+@@ -305,43 +305,20 @@
+ dnl
+ DB_LIB=
+ AC_CHECK_FUNC(dbopen, [],
+-if test "$prefer_db1" = "yes"; then
+- AC_CHECK_LIB(db1, dbopen, DB_LIB="-ldb1",
+- AC_CHECK_LIB(db, dbopen, DB_LIB="-ldb",
+- AC_CHECK_LIB(db-3, __db185_open, DB_LIB="-ldb-3",
+- AC_CHECK_LIB(db-4, __db185_open, DB_LIB="-ldb-4",
+- AC_MSG_ERROR([Your db library is missing db 1.85 compatibility mode])
+- )
+- )
+- )
+- )
+-else
+ AC_CHECK_LIB(db, dbopen, DB_LIB="-ldb",
+- AC_CHECK_LIB(db1, dbopen, DB_LIB="-ldb1",
++# AC_CHECK_LIB(db1, dbopen, DB_LIB="-ldb1",
+ AC_CHECK_LIB(db-3, __db185_open, DB_LIB="-ldb-3",
+ AC_CHECK_LIB(db-4, __db185_open, DB_LIB="-ldb-4",
+ AC_MSG_ERROR([Your db library is missing db 1.85 compatibility mode])
+ )
+ )
+ )
+- )
+-fi
++# )
+ )
+
+ dnl look for db headers
+-if test "$prefer_db1" = "yes"; then
+- AC_CHECK_HEADERS(db_185.h db1/db.h)
+- if test "$ac_cv_header_db_185_h$ac_cv_header_db1_db_h" = nono; then
+- AC_MSG_ERROR([Berkeley db library required for Gnome])
+- fi
+- AC_DEFINE(PREFER_DB1)
+-else
+- AC_CHECK_HEADERS(db.h db_185.h db1/db.h)
++AC_CHECK_HEADERS(db.h db_185.h db1/db.h)
+
+- if test "$ac_cv_header_db_h$ac_cv_header_db_185_h$ac_cv_header_db1_db_h" = nonono; then
+- AC_MSG_ERROR([Berkeley db library required for Gnome])
+- fi
+-fi
+
+ dnl
+ dnl This is needed for the gnome-moz-remote program. It doesn't use GDK,
diff --git a/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-gmodule.diff b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-gmodule.diff
new file mode 100644
index 0000000..e237412
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ds-gmodule.diff
@@ -0,0 +1,18 @@
+diff -dPNur gnome-libs-1.4.2/configure.in gnome-libs-1.4.2-ds/configure.in
+--- gnome-libs-1.4.2/configure.in 2012-01-15 00:30:56.000000000 +0100
++++ gnome-libs-1.4.2-ds/configure.in 2012-01-15 00:27:53.000000000 +0100
+@@ -119,13 +119,7 @@
+ AC_CACHE_CHECK([for gmodule support], ac_cv_gmodule,[
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS `glib-config --libs gmodule`"
+- AC_TRY_RUN([
+-#include <gmodule.h>
+-
+-int main()
+-{
+- return g_module_supported() == 0;
+-}],ac_cv_gmodule=yes,ac_cv_gmodule=no,ac_cv_gmodule=yes)
++ ac_cv_gmodule=yes
+ LDFLAGS="$save_LDFLAGS"])
+ if test $ac_cv_gmodule = no; then
+ AC_MSG_ERROR([Dynamic linking is not available on this platform. Some apps,
diff --git a/gnome-base/gnome-libs/files/gnome-libs-1.4.2-gcc4.patch b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-gcc4.patch
new file mode 100644
index 0000000..e9d3625
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-gcc4.patch
@@ -0,0 +1,13 @@
+diff -urN ../tmp-orig/gnome-libs-1.4.2/gtk-xmhtml/XmHTMLI.h ./gtk-xmhtml/XmHTMLI.h
+--- src/gtk-xmhtml/XmHTMLI.h 1999-07-29 03:26:28.000000000 +0200
++++ new/gtk-xmhtml/XmHTMLI.h 2004-12-22 18:02:43.408331024 +0100
+@@ -1058,9 +1058,6 @@
+ #include "gtk-xmhtml-p.h"
+
+ void gtk_xmhtml_set_outline (GtkXmHTML *html, int flag);
+-void my_x_query_colors(GdkColormap *colormap,
+- GdkColor *colors,
+- gint ncolors);
+ void
+ gtk_xmhtml_set_colors (GtkXmHTML *html,
+ Pixel foreground,
diff --git a/gnome-base/gnome-libs/files/gnome-libs-1.4.2-gtkdoc_fixes.patch b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-gtkdoc_fixes.patch
new file mode 100644
index 0000000..b3d2517
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-gtkdoc_fixes.patch
@@ -0,0 +1,29 @@
+diff -NurB gnome-libs-1.4.2-orig/libart_lgpl/doc/libart.sgml gnome-libs-1.4.2/libart_lgpl/doc/libart.sgml
+--- gnome-libs-1.4.2-orig/libart_lgpl/doc/libart.sgml 2004-04-03 13:41:19.000000000 -0500
++++ gnome-libs-1.4.2/libart_lgpl/doc/libart.sgml 2004-04-03 13:47:44.000000000 -0500
+@@ -1,5 +1,4 @@
+ <!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
+-<!entity FDL SYSTEM "fdl.sgml">
+ <!entity art-construction-core SYSTEM "sgml/art_construction_core.sgml">
+ <!entity art-construction-extended SYSTEM "sgml/art_construction_extended.sgml">
+ <!entity art-construction-trans SYSTEM "sgml/art_construction_trans.sgml">
+@@ -848,7 +847,6 @@
+ </chapter>
+
+
+- &FDL;
+
+
+ </book>
+diff -NurB gnome-libs-1.4.2-orig/libart_lgpl/doc/tmpl/art_svp.sgml gnome-libs-1.4.2/libart_lgpl/doc/tmpl/art_svp.sgml
+--- gnome-libs-1.4.2-orig/libart_lgpl/doc/tmpl/art_svp.sgml 2004-04-03 13:41:19.000000000 -0500
++++ gnome-libs-1.4.2/libart_lgpl/doc/tmpl/art_svp.sgml 2004-04-03 13:48:03.000000000 -0500
+@@ -33,8 +33,6 @@
+ </figure>
+ </para>
+
+-<para>
+-
+ <!-- ##### SECTION See_Also ##### -->
+ <para>
+
diff --git a/gnome-base/gnome-libs/files/gnome-libs-1.4.2-m4.patch b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-m4.patch
new file mode 100644
index 0000000..348e9fd
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-m4.patch
@@ -0,0 +1,9 @@
+Fix aclocal warning:
+/usr/share/aclocal/libart.m4:11: warning: underquoted definition of AM_PATH_LIBART
+--- gnome-libs-1.4.2/libart_lgpl/libart.m4
++++ gnome-libs-1.4.2/libart_lgpl/libart.m4
+@@ -10,3 +10,3 @@
+ dnl
+-AC_DEFUN(AM_PATH_LIBART,
++AC_DEFUN([AM_PATH_LIBART],
+ [dnl
diff --git a/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ppc64.patch b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ppc64.patch
new file mode 100644
index 0000000..36ca703
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-1.4.2-ppc64.patch
@@ -0,0 +1,11 @@
+diff -ur gnome-libs-1.4.2-orig/configure.in gnome-libs-1.4.2/configure.in
+--- gnome-libs-1.4.2-orig/configure.in 2006-01-16 03:30:34.000000000 +0000
++++ gnome-libs-1.4.2/configure.in 2006-01-16 03:34:06.000000000 +0000
+@@ -304,7 +304,6 @@
+ AC_CHECK_FUNCS(strdup)
+ AC_CHECK_HEADERS(utime.h)
+ AC_FUNC_MMAP
+-AC_CHECK_TYPE(umode_t, int)
+
+ AC_ARG_ENABLE(prefer-db1, [ --enable-prefer-db1 Prefer Berkeley DB 1.x] [default=no]],[prefer_db1="$enableval"],[prefer_db1=no])
+ dnl
diff --git a/gnome-base/gnome-libs/files/gnome-libs-ds-gnorba.patch b/gnome-base/gnome-libs/files/gnome-libs-ds-gnorba.patch
new file mode 100644
index 0000000..43318f1
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-libs-ds-gnorba.patch
@@ -0,0 +1,47 @@
+diff -dPNur gnome-libs-1.4.2/configure.in gnome-libs-1.4.2-ds/configure.in
+--- gnome-libs-1.4.2/configure.in 2002-08-16 00:24:36.000000000 +0200
++++ gnome-libs-1.4.2-ds/configure.in 2012-11-17 09:09:13.000000000 +0100
+@@ -401,7 +371,7 @@
+ dnl
+ dnl ORBit checks
+ dnl
+-GNOME_ORBIT_CHECK
++#GNOME_ORBIT_CHECK
+
+ dnl
+ dnl test-gnome
+diff -dPNur gnome-libs-1.4.2/Makefile.am gnome-libs-1.4.2-ds/Makefile.am
+--- gnome-libs-1.4.2/Makefile.am 2001-09-19 21:03:19.000000000 +0200
++++ gnome-libs-1.4.2-ds/Makefile.am 2012-11-17 09:16:52.000000000 +0100
+@@ -16,8 +16,8 @@
+ tools \
+ images \
+ libart_lgpl \
+- libgnome libgnomeui gtk-xmhtml zvt \
+- libgnorba idl $(test_gnome) devel-docs gnome-data man
++ libgnome libgnomeui
++# zvt libgnorba idl $(test_gnome) devel-docs gnome-data man
+
+ gnomeincludedir=$(includedir)/gnome-1.0
+ gnomeinclude_HEADERS = gnome.h
+diff -dPNur gnome-libs-1.4.2/tools/convertrgb/loadpng.c gnome-libs-1.4.2-png/tools/convertrgb/loadpng.c
+--- gnome-libs-1.4.2/tools/convertrgb/loadpng.c 1998-09-25 17:33:59.000000000 +0200
++++ gnome-libs-1.4.2-png/tools/convertrgb/loadpng.c 2012-11-16 12:58:48.000000000 +0100
+@@ -29,7 +29,7 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++/* if (setjmp(png_ptr->jmpbuf))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -39,7 +39,7 @@
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+- }
++ }*/
+ png_init_io(png_ptr, f);
+ /* Read Header */
+ png_read_info(png_ptr, info_ptr);
diff --git a/gnome-base/gnome-libs/files/gnome-png.diff b/gnome-base/gnome-libs/files/gnome-png.diff
new file mode 100644
index 0000000..cf9cc2b
--- /dev/null
+++ b/gnome-base/gnome-libs/files/gnome-png.diff
@@ -0,0 +1,33 @@
+diff -dPNur gnome-libs-1.4.2/Makefile.am gnome-libs-1.4.2-png/Makefile.am
+--- gnome-libs-1.4.2/Makefile.am 2001-09-19 21:03:19.000000000 +0200
++++ gnome-libs-1.4.2-png/Makefile.am 2012-11-16 14:18:30.000000000 +0100
+@@ -16,7 +16,7 @@
+ tools \
+ images \
+ libart_lgpl \
+- libgnome libgnomeui gtk-xmhtml zvt \
++ libgnome libgnomeui zvt \
+ libgnorba idl $(test_gnome) devel-docs gnome-data man
+
+ gnomeincludedir=$(includedir)/gnome-1.0
+diff -dPNur gnome-libs-1.4.2/tools/convertrgb/loadpng.c gnome-libs-1.4.2-png/tools/convertrgb/loadpng.c
+--- gnome-libs-1.4.2/tools/convertrgb/loadpng.c 1998-09-25 17:33:59.000000000 +0200
++++ gnome-libs-1.4.2-png/tools/convertrgb/loadpng.c 2012-11-16 12:58:48.000000000 +0100
+@@ -29,7 +29,7 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++/* if (setjmp(png_ptr->jmpbuf))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -39,7 +39,7 @@
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+- }
++ }*/
+ png_init_io(png_ptr, f);
+ /* Read Header */
+ png_read_info(png_ptr, info_ptr);
diff --git a/gnome-base/gnome-libs/gnome-libs-1.4.2-r1.ebuild b/gnome-base/gnome-libs/gnome-libs-1.4.2-r1.ebuild
new file mode 100644
index 0000000..47c733a
--- /dev/null
+++ b/gnome-base/gnome-libs/gnome-libs-1.4.2-r1.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild,v 1.33 2006/07/05 05:36:12 vapier Exp $
+
+inherit eutils libtool multilib autotools flag-o-matic
+
+DESCRIPTION="GNOME Core Libraries"
+HOMEPAGE="http://www.gnome.org/"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/sources/${PN}/1.4/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="1"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="doc esd nls kde"
+
+RDEPEND=">=media-libs/imlib-1.9.10
+ esd? ( >=media-sound/esound-0.2.23 )
+ =gnome-base/orbit-0*
+ =x11-libs/gtk+-1.2*
+ =sys-devel/automake-1.4*
+ =sys-devel/autoconf-2.13*
+ <=sys-libs/db-2
+ doc? ( app-text/docbook-sgml
+ dev-util/gtk-doc )"
+DEPEND="${RDEPEND}
+ nls? ( >=sys-devel/gettext-0.10.40
+ >=dev-util/intltool-0.11 )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # Correct problems with documentation. See bug #44439.
+ epatch "${FILESDIR}"/${P}-gtkdoc_fixes.patch
+ # Fix compilation with GCC4 ; bug #94321
+ epatch "${FILESDIR}"/${P}-gcc4.patch
+ # Fix compilation with GCC4 on ppc64 ; bug #117750
+ epatch "${FILESDIR}"/${P}-ppc64.patch
+
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-gmodule.diff
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-db.diff
+
+ aclocal-1.4
+ automake-1.4
+ autoconf-2.13 || die
+}
+
+src_compile() {
+ append-flags -I/usr/include/db1
+
+ local myconf
+
+ use nls || myconf="${myconf} --disable-nls"
+ use kde && myconf="${myconf} --with-kde-datadir=/usr/share"
+ use doc || myconf="${myconf} --disable-gtk-doc"
+ use esd || export ESD_CONFIG=no
+
+ # libtoolize
+ elibtoolize
+
+ ./configure --host=${CHOST} \
+ --prefix=/usr \
+ --libdir=/usr/$(get_libdir) \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib \
+ --enable-prefer-db1 \
+ ${myconf} || die
+
+ # gnome-libs does not like parallel building, bug #117644
+ emake -j1 || die
+
+ # do the docs (maby add a use variable or put in seperate
+ # ebuild since it is mostly developer docs?)
+ if use doc ; then
+ cd "${S}"/devel-docs
+ emake || die
+ cd "${S}"
+ fi
+}
+
+src_install() {
+ make prefix="${D}"/usr \
+ libdir="${D}"/usr/$(get_libdir) \
+ mandir="${D}"/usr/share/man \
+ infodir="${D}"/usr/share/info \
+ sysconfdir="${D}"/etc \
+ localstatedir="${D}"/var/lib \
+ docdir="${D}"/usr/share/doc/${PF} \
+ HTML_DIR="${D}"/usr/share/gnome/html \
+ install || die
+
+ rm "${D}"/usr/share/gtkrc*
+
+ dodoc AUTHORS ChangeLog README NEWS HACKING
+}
diff --git a/gnome-base/gnome-libs/gnome-libs-1.4.2-r2.ebuild b/gnome-base/gnome-libs/gnome-libs-1.4.2-r2.ebuild
new file mode 100644
index 0000000..b16a0f3
--- /dev/null
+++ b/gnome-base/gnome-libs/gnome-libs-1.4.2-r2.ebuild
@@ -0,0 +1,98 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild,v 1.33 2006/07/05 05:36:12 vapier Exp $
+
+inherit eutils libtool multilib autotools flag-o-matic
+
+DESCRIPTION="GNOME Core Libraries"
+HOMEPAGE="http://www.gnome.org/"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/sources/${PN}/1.4/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="1"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="doc esd nls kde"
+
+RDEPEND=">=media-libs/imlib-1.9.10
+ esd? ( >=media-sound/esound-0.2.23 )
+ =gnome-base/orbit-0*
+ =x11-libs/gtk+-1.2*
+ =sys-devel/automake-1.4*
+ =sys-devel/autoconf-2.13*
+ <=sys-libs/db-2
+ doc? ( app-text/docbook-sgml
+ dev-util/gtk-doc )"
+DEPEND="${RDEPEND}
+ nls? ( >=sys-devel/gettext-0.10.40
+ >=dev-util/intltool-0.11 )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # Correct problems with documentation. See bug #44439.
+ epatch "${FILESDIR}"/${P}-gtkdoc_fixes.patch
+ # Fix compilation with GCC4 ; bug #94321
+ epatch "${FILESDIR}"/${P}-gcc4.patch
+ # Fix compilation with GCC4 on ppc64 ; bug #117750
+ epatch "${FILESDIR}"/${P}-ppc64.patch
+
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-gmodule.diff
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-db.diff
+ epatch "${FILESDIR}"/gnome-png.diff
+
+ aclocal-1.4
+ automake-1.4
+ autoconf-2.13 || die
+}
+
+src_compile() {
+ append-flags -I/usr/include/db1
+
+ local myconf
+
+ use nls || myconf="${myconf} --disable-nls"
+ use kde && myconf="${myconf} --with-kde-datadir=/usr/share"
+ use doc || myconf="${myconf} --disable-gtk-doc"
+ use esd || export ESD_CONFIG=no
+
+ # libtoolize
+ elibtoolize
+
+ ./configure --host=${CHOST} \
+ --prefix=/usr \
+ --libdir=/usr/$(get_libdir) \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib \
+ --enable-prefer-db1 \
+ ${myconf} || die
+
+ # gnome-libs does not like parallel building, bug #117644
+ emake -j1 || die
+
+ # do the docs (maby add a use variable or put in seperate
+ # ebuild since it is mostly developer docs?)
+ if use doc ; then
+ cd "${S}"/devel-docs
+ emake || die
+ cd "${S}"
+ fi
+}
+
+src_install() {
+ make prefix="${D}"/usr \
+ libdir="${D}"/usr/$(get_libdir) \
+ mandir="${D}"/usr/share/man \
+ infodir="${D}"/usr/share/info \
+ sysconfdir="${D}"/etc \
+ localstatedir="${D}"/var/lib \
+ docdir="${D}"/usr/share/doc/${PF} \
+ HTML_DIR="${D}"/usr/share/gnome/html \
+ install || die
+
+ rm "${D}"/usr/share/gtkrc*
+
+ dodoc AUTHORS ChangeLog README NEWS HACKING
+}
diff --git a/gnome-base/gnome-libs/gnome-libs-1.4.2-r3.ebuild b/gnome-base/gnome-libs/gnome-libs-1.4.2-r3.ebuild
new file mode 100644
index 0000000..5d9006e
--- /dev/null
+++ b/gnome-base/gnome-libs/gnome-libs-1.4.2-r3.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild,v 1.33 2006/07/05 05:36:12 vapier Exp $
+
+inherit eutils libtool multilib autotools flag-o-matic
+
+DESCRIPTION="GNOME Core Libraries"
+HOMEPAGE="http://www.gnome.org/"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/sources/${PN}/1.4/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="1"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="doc esd nls kde"
+
+RDEPEND=">=media-libs/imlib-1.9.10
+ esd? ( >=media-sound/esound-0.2.23 )
+ =x11-libs/gtk+-1.2*
+ =sys-devel/automake-1.4*
+ =sys-devel/autoconf-2.13*
+ <=sys-libs/db-2
+ doc? ( app-text/docbook-sgml
+ dev-util/gtk-doc )"
+DEPEND="${RDEPEND}
+ nls? ( >=sys-devel/gettext-0.10.40
+ >=dev-util/intltool-0.11 )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # Correct problems with documentation. See bug #44439.
+ epatch "${FILESDIR}"/${P}-gtkdoc_fixes.patch
+ # Fix compilation with GCC4 ; bug #94321
+ epatch "${FILESDIR}"/${P}-gcc4.patch
+ # Fix compilation with GCC4 on ppc64 ; bug #117750
+ epatch "${FILESDIR}"/${P}-ppc64.patch
+
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-gmodule.diff
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-db.diff
+ epatch "${FILESDIR}"/gnome-libs-ds-gnorba.patch
+
+ aclocal-1.4
+ automake-1.4
+ autoconf-2.13 || die
+}
+
+src_compile() {
+ append-flags -I/usr/include/db1
+
+ local myconf
+
+ use nls || myconf="${myconf} --disable-nls"
+ use kde && myconf="${myconf} --with-kde-datadir=/usr/share"
+ use doc || myconf="${myconf} --disable-gtk-doc"
+ use esd || export ESD_CONFIG=no
+
+ # libtoolize
+ elibtoolize
+
+ ./configure --host=${CHOST} \
+ --prefix=/usr \
+ --libdir=/usr/$(get_libdir) \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib \
+ --enable-prefer-db1 \
+ ${myconf} || die
+
+ # gnome-libs does not like parallel building, bug #117644
+ emake -j1 || die
+
+ # do the docs (maby add a use variable or put in seperate
+ # ebuild since it is mostly developer docs?)
+ if use doc ; then
+ cd "${S}"/devel-docs
+ emake || die
+ cd "${S}"
+ fi
+}
+
+src_install() {
+ make prefix="${D}"/usr \
+ libdir="${D}"/usr/$(get_libdir) \
+ mandir="${D}"/usr/share/man \
+ infodir="${D}"/usr/share/info \
+ sysconfdir="${D}"/etc \
+ localstatedir="${D}"/var/lib \
+ docdir="${D}"/usr/share/doc/${PF} \
+ HTML_DIR="${D}"/usr/share/gnome/html \
+ install || die
+
+ rm "${D}"/usr/share/gtkrc*
+
+ dodoc AUTHORS ChangeLog README NEWS HACKING
+}
diff --git a/gnome-base/gnome-libs/gnome-libs-1.4.2-r4.ebuild b/gnome-base/gnome-libs/gnome-libs-1.4.2-r4.ebuild
new file mode 100644
index 0000000..e35f3b4
--- /dev/null
+++ b/gnome-base/gnome-libs/gnome-libs-1.4.2-r4.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild,v 1.33 2006/07/05 05:36:12 vapier Exp $
+
+EAPI=5
+
+inherit eutils libtool multilib autotools flag-o-matic
+
+DESCRIPTION="GNOME Core Libraries"
+HOMEPAGE="http://www.gnome.org/"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/sources/${PN}/1.4/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="1"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="doc esd nls kde"
+
+RDEPEND=">=media-libs/imlib-1.9.10
+ esd? ( >=media-sound/esound-0.2.23 )
+ =x11-libs/gtk+-1.2*
+ =sys-devel/automake-1.4*
+ =sys-devel/autoconf-2.13*
+ sys-libs/db:3
+ doc? ( app-text/docbook-sgml
+ dev-util/gtk-doc )"
+DEPEND="${RDEPEND}
+ nls? ( >=sys-devel/gettext-0.10.40
+ >=dev-util/intltool-0.11 )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # Correct problems with documentation. See bug #44439.
+ epatch "${FILESDIR}"/${P}-gtkdoc_fixes.patch
+ # Fix compilation with GCC4 ; bug #94321
+ epatch "${FILESDIR}"/${P}-gcc4.patch
+ # Fix compilation with GCC4 on ppc64 ; bug #117750
+ epatch "${FILESDIR}"/${P}-ppc64.patch
+
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-gmodule.diff
+ epatch "${FILESDIR}"/gnome-libs-1.4.2-ds-db.diff
+ epatch "${FILESDIR}"/gnome-libs-ds-gnorba.patch
+
+ aclocal-1.4
+ automake-1.4
+ autoconf-2.13 || die
+}
+
+src_compile() {
+ append-flags -I/usr/include/db1
+
+ local myconf
+
+ use nls || myconf="${myconf} --disable-nls"
+ use kde && myconf="${myconf} --with-kde-datadir=/usr/share"
+ use doc || myconf="${myconf} --disable-gtk-doc"
+ use esd || export ESD_CONFIG=no
+
+ # libtoolize
+ elibtoolize
+
+ ./configure --host=${CHOST} \
+ --prefix=/usr \
+ --libdir=/usr/$(get_libdir) \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib \
+ --enable-prefer-db1 \
+ ${myconf} || die
+
+ # gnome-libs does not like parallel building, bug #117644
+ emake -j1 || die
+
+ # do the docs (maby add a use variable or put in seperate
+ # ebuild since it is mostly developer docs?)
+ if use doc ; then
+ cd "${S}"/devel-docs
+ emake || die
+ cd "${S}"
+ fi
+}
+
+src_install() {
+ make prefix="${D}"/usr \
+ libdir="${D}"/usr/$(get_libdir) \
+ mandir="${D}"/usr/share/man \
+ infodir="${D}"/usr/share/info \
+ sysconfdir="${D}"/etc \
+ localstatedir="${D}"/var/lib \
+ docdir="${D}"/usr/share/doc/${PF} \
+ HTML_DIR="${D}"/usr/share/gnome/html \
+ install || die
+
+ rm "${D}"/usr/share/gtkrc*
+
+ dodoc AUTHORS ChangeLog README NEWS HACKING
+}
diff --git a/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild b/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild
new file mode 100644
index 0000000..fdedaa1
--- /dev/null
+++ b/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild
@@ -0,0 +1,94 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/gnome-libs/gnome-libs-1.4.2.ebuild,v 1.33 2006/07/05 05:36:12 vapier Exp $
+
+inherit eutils libtool multilib autotools flag-o-matic
+
+DESCRIPTION="GNOME Core Libraries"
+HOMEPAGE="http://www.gnome.org/"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/sources/${PN}/1.4/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="1"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="doc esd nls kde"
+
+RDEPEND=">=media-libs/imlib-1.9.10
+ esd? ( >=media-sound/esound-0.2.23 )
+ =gnome-base/orbit-0*
+ =x11-libs/gtk+-1.2*
+ =sys-devel/automake-1.4*
+ =sys-devel/autoconf-2.13*
+ <=sys-libs/db-2
+ doc? ( app-text/docbook-sgml
+ dev-util/gtk-doc )"
+DEPEND="${RDEPEND}
+ nls? ( >=sys-devel/gettext-0.10.40
+ >=dev-util/intltool-0.11 )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # Correct problems with documentation. See bug #44439.
+ epatch "${FILESDIR}"/${P}-gtkdoc_fixes.patch
+ # Fix compilation with GCC4 ; bug #94321
+ epatch "${FILESDIR}"/${P}-gcc4.patch
+ # Fix compilation with GCC4 on ppc64 ; bug #117750
+ epatch "${FILESDIR}"/${P}-ppc64.patch
+
+ aclocal-1.4
+ automake-1.4
+ autoconf-2.13 || die
+}
+
+src_compile() {
+ append-flags -I/usr/include/db1
+
+ local myconf
+
+ use nls || myconf="${myconf} --disable-nls"
+ use kde && myconf="${myconf} --with-kde-datadir=/usr/share"
+ use doc || myconf="${myconf} --disable-gtk-doc"
+ use esd || export ESD_CONFIG=no
+
+ # libtoolize
+ elibtoolize
+
+ ./configure --host=${CHOST} \
+ --prefix=/usr \
+ --libdir=/usr/$(get_libdir) \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib \
+ --enable-prefer-db1 \
+ ${myconf} || die
+
+ # gnome-libs does not like parallel building, bug #117644
+ emake -j1 || die
+
+ # do the docs (maby add a use variable or put in seperate
+ # ebuild since it is mostly developer docs?)
+ if use doc ; then
+ cd "${S}"/devel-docs
+ emake || die
+ cd "${S}"
+ fi
+}
+
+src_install() {
+ make prefix="${D}"/usr \
+ libdir="${D}"/usr/$(get_libdir) \
+ mandir="${D}"/usr/share/man \
+ infodir="${D}"/usr/share/info \
+ sysconfdir="${D}"/etc \
+ localstatedir="${D}"/var/lib \
+ docdir="${D}"/usr/share/doc/${PF} \
+ HTML_DIR="${D}"/usr/share/gnome/html \
+ install || die
+
+ rm "${D}"/usr/share/gtkrc*
+
+ dodoc AUTHORS ChangeLog README NEWS HACKING
+}
diff --git a/gnome-base/libglade/Manifest b/gnome-base/libglade/Manifest
new file mode 100644
index 0000000..ba76f0c
--- /dev/null
+++ b/gnome-base/libglade/Manifest
@@ -0,0 +1,3 @@
+AUX libglade-ds-m4.diff 511 SHA256 f2831258927b23a914cf1e6c9dad3889838e7575d6be558e772916c69f61521a SHA512 abcf2e134b07691be9b8846f788cc05137aeb273ac335024994795ddeaa838134e09af4da02608cd1a1cde1615f89b2e4fd4ba1dbdeba0b1197dcd1331f01d00 WHIRLPOOL 68ed2e6893535cacbff287f7aa5666d17f5da5b2bfab43cc03b55d2d6d114a452379fa60da445d1672ca546dd8cb06c50e0d10f6736bea1a98e8181702cef8d0
+DIST libglade-0.17.tar.gz 418921 SHA256 d65a4909298e6ac33210f513b50d9ea8e0b201742566a218f31d4f685133a48c SHA512 2ea1ca4cad2323efedd0861eb27df132db7fcedb30c0caacdc9c093f53dc25dde050191e8bc4278b4f446d251b7b2c099e9e5afcb7e1674f871a9337ec180dc2 WHIRLPOOL a91eb231216d4b61ff327ed12a2414e0b0f158dd8174493c85af97e718cbf52ab3e0dae6af3fd444bca5134b2f290cc249f811e2badc0be6798bc58e564b6195
+EBUILD libglade-0.17-r7.ebuild 1690 SHA256 33cd06f694332a76797f4be4bda7474113dc7d2d3a0b945edd2d4535355257bc SHA512 48e83f9c2be52425aa328e60bcc4663d0d94a4124378c7659426da3e1844239196ef3566ac963ec2e94941a155cd7a96014a2d6ccb996f3d792be94aa4c239c9 WHIRLPOOL b0f8113080052ef6f62ed451bb7f05f47abcf251b0c30d982e4a1e3232efdf2f59046a258ec5ff15b79b862eb57075033b96a53a792a637bf735f6a7f0d02a26
diff --git a/gnome-base/libglade/files/libglade-ds-m4.diff b/gnome-base/libglade/files/libglade-ds-m4.diff
new file mode 100644
index 0000000..c611928
--- /dev/null
+++ b/gnome-base/libglade/files/libglade-ds-m4.diff
@@ -0,0 +1,12 @@
+diff -dPNur libglade-0.17/libglade.m4 libglade-0.17-ds/libglade.m4
+--- libglade-0.17/libglade.m4 2001-02-10 12:45:30.000000000 +0100
++++ libglade-0.17-ds/libglade.m4 2013-11-13 08:44:15.691640962 +0100
+@@ -4,7 +4,7 @@
+ dnl AM_PATH_LIBGLADE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]])
+ dnl Test to see if libglade is installed, and define LIBGLADE_CFLAGS, LIBS
+ dnl
+-AC_DEFUN(AM_PATH_LIBGLADE,
++AC_DEFUN([AM_PATH_LIBGLADE],
+ [dnl
+ dnl Get the cflags and libraries from the libglade-config script
+ dnl
diff --git a/gnome-base/libglade/libglade-0.17-r7.ebuild b/gnome-base/libglade/libglade-0.17-r7.ebuild
new file mode 100644
index 0000000..0f43528
--- /dev/null
+++ b/gnome-base/libglade/libglade-0.17-r7.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/gnome-base/libglade/libglade-0.17-r6.ebuild,v 1.31 2006/07/05 05:40:18 vapier Exp $
+
+#provide Xmake and Xemake
+
+#For the sake of virtualx compatibility (DS)
+EAPI=4
+
+inherit libtool virtualx gnome.org multilib
+
+DESCRIPTION="Allow programs to load their UIs from an XML description at runtime."
+HOMEPAGE="http://developer.gnome.org/doc/API/libglade/libglade.html"
+SRC_URI="ftp://ftp.gnome.org/pub/GNOME/sources/${PN}/${PV}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="nls bonobo"
+
+#please dont add gnome-libs as an optional DEPEND, as
+#it causes too many problems.
+RDEPEND=">=dev-libs/libxml-1.8.15
+ >=gnome-base/gnome-libs-1.4.1.2-r1
+ bonobo? ( >=gnome-base/bonobo-1.0.19-r1 )"
+
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ unpack ${P}.tar.gz || die "unpacking failed"
+ cd ${S}
+ epatch "${FILESDIR}"/${PN}-ds-m4.diff || die
+}
+
+src_compile() {
+ elibtoolize
+
+ local myconf=""
+
+ use bonobo && myconf="${myconf} --enable-bonobo"
+ use bonobo || myconf="${myconf} --disable-bonobo --disable-bonobotest"
+
+ use nls || myconf="${myconf} --disable-nls"
+
+ ./configure --host=${CHOST} \
+ --prefix=/usr \
+ --libdir=/usr/$(get_libdir) \
+ --sysconfdir=/etc \
+ --localstatedir=/var/lib \
+ --disable-gnomedb \
+ ${myconf} || die
+
+ Xemake || die
+}
+
+src_install() {
+ make prefix="${D}"/usr \
+ libdir="${D}"/usr/$(get_libdir) \
+ sysconfdir="${D}"/etc \
+ localstatedir="${D}"/var/lib \
+ install || die
+
+ dodoc AUTHORS ChangeLog NEWS
+ dodoc doc/*.txt
+}
diff --git a/mail-client/mailx/Manifest b/mail-client/mailx/Manifest
new file mode 100644
index 0000000..7ddfa9f
--- /dev/null
+++ b/mail-client/mailx/Manifest
@@ -0,0 +1,5 @@
+AUX mailx-8.1.2.20050715-offsetof.patch 1566 SHA256 be6bf29554e6f695492e2c9dd3a8e6d6e19a4e375982c7478941c61f992dfe4b SHA512 f6c865cfe32d75d2ce2cf3538822db3c22edc09038ba72f7e25001bfda9b4b2c320e03f91622b316a268cfbdc1f57780ffe199dd8da8c78fbcfe93daf9972aea WHIRLPOOL 3589532bf8a43f95c6ca3c94338e1227e3462754b748e9333a21ccd3b40ca1785befc770aa84bcd84f343701a5aa63009bf68f8d909fa08012745f7a87c32749
+AUX mailx-ds-rt.patch 474 SHA256 21c0c8ed9165b280947e63a7ec63ee318f45ed10936e0445d6dcebca9a2f850c SHA512 d4ea4c2ef44d1f6beff1e4f87219b4f2be5f648bc0736b639b44f3c0ee8325e8a3d494ae45180511f3a8e54709f2ff3bcb868b99cf8ecc215eaaab6c01c994dd WHIRLPOOL deb1a27ff02749370b170ce8b79f3b96e0e18738d26eac3ef5a885c897488a04fd2d48e27711220f5b51a8bd3277c5b44647d850618a4462dfd7e5661383f4e1
+DIST bsd-mailx_8.1.2-0.20160123cvs-4.debian.tar.xz 45768 SHA256 cae1e6a7a35a2d1601d71097a7e6e0b1690927de301e978ca724f848dca7014e SHA512 79d822b4e0e9796970e96f656814cf835fe522d2e33b79484257af50e631a264f6fae99e225d96fa37f50d7ce9f3b9e9577ddb361a27c6e59af8db4736250c19 WHIRLPOOL 87ec85771089308a64af7108b03d99b39b5bda05459d4fc9c7f9d3b8c72d9bf41ad787ad504932c3dc482547b3351d4a42a6de8329922d3cc1c09c44a453dcb0
+DIST bsd-mailx_8.1.2-0.20160123cvs.orig.tar.bz2 76715 SHA256 e4b7384d4ceb704491b6c319be8e18d53ef32321793b7fd6224b4718f4c6fbf1 SHA512 b66dd0fc5a150c0e1068b9aedda8425c73be7ac7e22d91f2c52de3f2d416016886f46dd54ec5024c0cd4c7e736aee7bdb68d9117f9b2b455fc42d05e1a677373 WHIRLPOOL 94a4db459b24ae0a39d69c2049138e82325d9c873c780a6d7d3322f5ca90fd2244e698baa478baadf9345605e760fb54878841f8b5288728e9a6d3fcb8ff73bc
+EBUILD mailx-8.1.2.20160123-r1.ebuild 1294 SHA256 a19dd46473f6b905754bc9294435b53e607871438cc72eac9e9eb19862f3574b SHA512 f02ab94cbe401baa1a499c3ff3d1194c312d6259937c6b6db91b5518593b91727f56238b324b8b6abbe7e50df33d08351523776dbaffe171b79d7ef20b7dc401 WHIRLPOOL 38ce7c7cad4d77bda9e43410e9938ae4c74d7998fa96e6724d2ba0632c8e2778290c941dd056008c5fd4946c7f6e57910aa8d31f177f2e70e987a2d214df8c88
diff --git a/mail-client/mailx/files/mailx-8.1.2.20050715-offsetof.patch b/mail-client/mailx/files/mailx-8.1.2.20050715-offsetof.patch
new file mode 100644
index 0000000..7af8128
--- /dev/null
+++ b/mail-client/mailx/files/mailx-8.1.2.20050715-offsetof.patch
@@ -0,0 +1,36 @@
+diff -r -u mailx-8.1.2-0.20050715cvs.orig.orig/def.h mailx-8.1.2-0.20050715cvs.orig/def.h
+--- mailx-8.1.2-0.20050715cvs.orig.orig/def.h 2003-10-14 21:50:20.000000000 +0900
++++ mailx-8.1.2-0.20050715cvs.orig/def.h 2010-03-31 10:29:37.000000000 +0900
+@@ -97,7 +97,7 @@
+ * Given a file address, determine the block number it represents.
+ */
+ #define blockof(off) ((int) ((off) / 4096))
+-#define offsetof(off) ((int) ((off) % 4096))
++#define offsetofmailx(off) ((int) ((off) % 4096))
+ #define positionof(block, offset) ((off_t)(block) * 4096 + (offset))
+
+ /*
+diff -r -u mailx-8.1.2-0.20050715cvs.orig.orig/edit.c mailx-8.1.2-0.20050715cvs.orig/edit.c
+--- mailx-8.1.2-0.20050715cvs.orig.orig/edit.c 2004-05-25 01:34:32.000000000 +0900
++++ mailx-8.1.2-0.20050715cvs.orig/edit.c 2010-03-31 10:41:28.000000000 +0900
+@@ -111,7 +111,7 @@
+ (void)fseek(otf, 0L, 2);
+ size = ftell(otf);
+ mp->m_block = blockof(size);
+- mp->m_offset = offsetof(size);
++ mp->m_offset = offsetofmailx(size);
+ mp->m_size = fsize(fp);
+ mp->m_lines = 0;
+ mp->m_flag |= MODIFY;
+diff -r -u mailx-8.1.2-0.20050715cvs.orig.orig/fio.c mailx-8.1.2-0.20050715cvs.orig/fio.c
+--- mailx-8.1.2-0.20050715cvs.orig.orig/fio.c 2004-05-25 01:34:32.000000000 +0900
++++ mailx-8.1.2-0.20050715cvs.orig/fio.c 2010-03-31 10:29:28.000000000 +0900
+@@ -139,7 +139,7 @@
+ this.m_size = 0;
+ this.m_lines = 0;
+ this.m_block = blockof(offset);
+- this.m_offset = offsetof(offset);
++ this.m_offset = offsetofmailx(offset);
+ inhead = 1;
+ } else if (linebuf[0] == 0) {
+ inhead = 0;
diff --git a/mail-client/mailx/files/mailx-ds-rt.patch b/mail-client/mailx/files/mailx-ds-rt.patch
new file mode 100644
index 0000000..07d49d7
--- /dev/null
+++ b/mail-client/mailx/files/mailx-ds-rt.patch
@@ -0,0 +1,12 @@
+diff -dPNur bsd-mailx-8.1.2-0.20160123cvs.orig/Makefile bsd-mailx-8.1.2-0.20160123cvs.orig-ds/Makefile
+--- bsd-mailx-8.1.2-0.20160123cvs.orig/Makefile 2018-04-10 22:47:18.000000000 +0000
++++ bsd-mailx-8.1.2-0.20160123cvs.orig-ds/Makefile 2018-04-10 22:49:25.000000000 +0000
+@@ -10,7 +10,7 @@
+ popen.c quit.c send.c strings.c temp.c tty.c vars.c
+
+ OBJS=$(SRCS:%.c=%.o)
+-LIBS=-llockfile -lbsd
++LIBS=-llockfile -lbsd -lrt
+
+ SFILES= mail.help mail.tildehelp
+ EFILES= mail.rc
diff --git a/mail-client/mailx/mailx-8.1.2.20160123-r1.ebuild b/mail-client/mailx/mailx-8.1.2.20160123-r1.ebuild
new file mode 100644
index 0000000..4e451d7
--- /dev/null
+++ b/mail-client/mailx/mailx-8.1.2.20160123-r1.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils
+
+DP="bsd-${PN}_${PV%.*}-0.${PV##*.}cvs"
+DPT="${DP}.orig.tar.bz2"
+DPP="${DP}-4.debian.tar.xz"
+
+DESCRIPTION="The $ mail program, which is used to send mail via shell scripts"
+HOMEPAGE="https://www.debian.org/"
+SRC_URI="http://http.debian.net/debian/pool/main/b/bsd-${PN}/${DPT}
+ http://http.debian.net/debian/pool/main/b/bsd-${PN}/${DPP}"
+
+S="${WORKDIR}/${DP/_/-}.orig"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ~ppc ~ppc64 ~s390 ~sh sparc x86 ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE=""
+
+DEPEND=">=net-libs/liblockfile-1.03
+ dev-libs/libbsd
+ virtual/mta
+ mail-client/mailx-support"
+
+RDEPEND="${DEPEND}
+ !mail-client/nail
+ !net-mail/mailutils"
+
+src_prepare() {
+ eapply "${WORKDIR}/debian/patches"
+ eapply "${FILESDIR}/${PN}-8.1.2.20050715-offsetof.patch"
+ eapply "${FILESDIR}/${PN}-ds-rt.patch"
+ eapply_user
+}
+
+src_compile() {
+ emake CC=$(tc-getCC) EXTRAFLAGS="${CFLAGS}"
+}
+
+src_install() {
+ dobin mail
+
+ doman mail.1
+
+ dosym mail /usr/bin/Mail
+ dosym mail /usr/bin/mailx
+ dosym mail.1 /usr/share/man/man1/Mail.1
+
+ insinto /usr/share/mailx/
+ doins misc/mail.help misc/mail.tildehelp
+ insinto /etc
+ doins misc/mail.rc
+}
diff --git a/media-fonts/ds-fonts/Manifest b/media-fonts/ds-fonts/Manifest
new file mode 100644
index 0000000..fc7b4c5
--- /dev/null
+++ b/media-fonts/ds-fonts/Manifest
@@ -0,0 +1,6 @@
+AUX aliases.tar.bz2 533 SHA256 2d5902763740b99c52e2fddf00782d25b10573c666d1b3a79ba59057846f08b5 SHA512 028ef8f60d5dabc8add600b82169b28fbe7aa2a59453323fa34a279ba547da10e2646d1d2cb007c32f811353dc629c895e9c325d0127970d55397a9969aae51f WHIRLPOOL 79c2f05f3c1127b0ac07f272bbbc76738045273ffdd717b6c7b62c02dc86863055cc51fb259704ab5b6b62b50960b084cc341a9e8337779314909e3c18704e13
+DIST ds-ttffonts.tar.bz2 4985872 SHA256 206b1604bed432dd96042d9b420410eea56476f7f1725a1c582c3b9bf4acbb7c SHA512 1972e1e6e9e931e98bd509374eb1f3fe922fac2bc318966728bb50d182602b9605b4b24d4bd2e34095662762e3c97a15b24f55fd2be502e3c25a0c19a014cf05 WHIRLPOOL e6188b0bfb07d3112e08c491daa25d6c4e0967e129b21fdaea422a79486cf242e1b2d3ea6f438af5852dd6471b260e99d6595d85bfa2a88fd6845b89c5f3da6e
+DIST ds-type1fonts.tar.bz2 3966546 SHA256 4032b6b6c964eac184da7665e5dfda4ada3bf1c25fa252376d4144bf8fd49882 SHA512 e992070edec1f5e1fcbc16ed4decd2adc786f130460e2d1cab016cee56cff95e132acc8f6575bc2557111dc1add96963b1d667538375ab0a00493c0a1f9a694f WHIRLPOOL ea640a5fa600a66eb14a893f37d66cfd164b4af73bd18a3f9ff0628814e0cf9062404e698ea23cb1cccf1324348d5b549a5625b1672d023cf592f20dcab93ebd
+DIST ds-xfonts.tar.bz2 3998317 SHA256 40d52e0f3ece5dad83961ff4ad7c51f692b7da98dc32cb099418dbcbe1f4d5e7 SHA512 f21fb6a3c3fc27664cd71e5db2e799e2e50d3bfff8278020d007d26062d7c3adf1cae3e9e42722fc05b53bc5800f6438fff7215cdfed33c9ff4749f380c315df WHIRLPOOL a972c42bc0d84c549ff4d76135f4724353d2839287746b099b26c28e85521e464c60976778b0de90f889775d03c3fbb7720acaafb741b846830bfc2751d4725c
+DIST uming.ttf.bz2 10845163 SHA256 34362c2ed6d08909abb5fdb54a9d2fa26bb5400c682f70dc0596001f05880d41 SHA512 2bc8c5ba1934fb20a3a91ae84203b4dc786f960ce9765305749e89843474d7d47419fed307396e423d38763cd48ff538c03c96d796afdf0be2275d7a3a29891d WHIRLPOOL 471e6f5a87a8e028da8ae079cd2cfd074ea0962f948db3675179d2c0b91637c7ed9057dcaf08695fea0308b6c211c896bd9deadd5e7748a39ed4371b0a410c88
+EBUILD ds-fonts-1.0-r2.ebuild 3126 SHA256 a9eee1deb22540f45c53f369120de73e2901a7267143ab0a3c0b212156983596 SHA512 b1671798d8bb5a29e3f20bf90285b42a8d16b28df1e3dfe334d189272bd1e54c54b861e2b37c264312f42732095c1748c7420029bff7160843a5146e283c6b29 WHIRLPOOL 3d268f99cc3cb53008df6b72592f83bf2d1a4e9d6c03caf144739053265f0fc79424da11a62d9157da31085c9116795673250f4ded6b9181122280af35100bdd
diff --git a/media-fonts/ds-fonts/ds-fonts-1.0-r2.ebuild b/media-fonts/ds-fonts/ds-fonts-1.0-r2.ebuild
new file mode 100644
index 0000000..1d2660e
--- /dev/null
+++ b/media-fonts/ds-fonts/ds-fonts-1.0-r2.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+EAPI=5
+inherit font eutils
+
+DESCRIPTION="DarkSoft Fonts (Bitmap,Type1,TrueType)"
+SLOT="0"
+SRC_URI="http://darksoft.org/files/darklin/ds-xfonts.tar.bz2
+ http://darksoft.org/files/darklin/ds-ttffonts.tar.bz2
+ http://darksoft.org/files/darklin/ds-type1fonts.tar.bz2
+ http://darksoft.org/files/darklin/uming.ttf.bz2"
+KEYWORDS="alpha amd64 ppc sparc x86"
+DEPEND="dev-lang/perl
+ x11-base/xorg-x11"
+
+# Old crap
+FONT_ROOT=/usr/share/fonts/DarkLin
+# This we need
+FONT_DIR=/usr/share/fonts/ds-fonts
+
+S="${WORKDIR}"
+
+src_unpack() {
+ einfo "Unpacking sources..."
+ unpack uming.ttf.bz2
+}
+
+src_install() {
+ GS_VER=`gs -v | perl -pe '$_ =~ m/([7-9]\.\d{1,3})(.\d{1,3})?/;print $1;s/.*\n//'`
+
+ mkdir -p ${D}/${FONT_ROOT}
+ tar xjf ${DISTDIR}/ds-xfonts.tar.bz2 -C ${D}/${FONT_ROOT}
+ tar xjf ${DISTDIR}/ds-ttffonts.tar.bz2 -C ${D}/${FONT_ROOT}
+ tar xjf ${DISTDIR}/ds-type1fonts.tar.bz2 -C ${D}/${FONT_ROOT}
+ tar xjf ${FILESDIR}/aliases.tar.bz2 -C ${D}/${FONT_ROOT}/Type1
+
+ chmod 0755 `find ${D}/${FONT_ROOT} -type d`
+ chmod 0644 `find ${D}/${FONT_ROOT} -type f`
+
+ for name in `find ${D}/${FONT_ROOT} -type f -name *.Z`; do
+ gunzip $name
+ (
+ cd `dirname $name`
+ gzip `basename $name .Z`
+ )
+ done
+
+ mkdir -p ${D}/${FONT_DIR} || die
+ mv *.ttf ${D}/${FONT_DIR} || die
+ chmod 0755 `find ${D}/${FONT_DIR} -type d` || die
+ chmod 0644 `find ${D}/${FONT_DIR} -type f` || die
+}
+
+
+rebuild_fontfiles() {
+ einfo "Refreshing fonts.scale and fonts.dir..."
+
+ (
+ cd ${FONT_ROOT}/TrueType/win
+ mkfontscale
+ mkfontdir
+ )
+
+ (
+ cd ${FONT_ROOT}/TrueType/misc
+ mkfontscale
+ mkfontdir
+ )
+
+ (
+ cd ${FONT_ROOT}/Russian
+ for name in `find . -type d`; do
+ (
+ cd $name || die
+ mkfontdir
+ )
+ done
+ )
+
+ (
+ cd ${FONT_DIR}
+ mkfontscale
+ mkfontdir
+ )
+}
+
+pkg_postinst() {
+ rebuild_fontfiles
+
+ einfo "In order to make X see the fonts, you need to add the"
+ einfo "following lines to the files section of your "
+ einfo "/etc/X11/XF86Config (or the XOrg equivalent):"
+ einfo " FontPath \"${FONT_ROOT}/TrueType/win:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/TrueType/misc:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Russian/misc:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Russian/100dpi:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Russian/75dpi:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Russian/AltIsoKoi:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Russian/Win:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Unicode:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Type1/All:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Type1/ER-KOI8:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Type1/ER-CP1251:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Type1/KOI8:unscaled\""
+ einfo " FontPath \"${FONT_ROOT}/Type1/Misc-KOI8:unscaled\""
+
+ einfo ""
+ einfo "In order to make them accessible to your current X"
+ einfo "session, run:"
+ einfo " xset fp+ ${FONT_DIR}"
+ einfo " xset fp rehash"
+}
diff --git a/media-fonts/ds-fonts/files/aliases.tar.bz2 b/media-fonts/ds-fonts/files/aliases.tar.bz2
new file mode 100644
index 0000000..9bbd1d3
--- /dev/null
+++ b/media-fonts/ds-fonts/files/aliases.tar.bz2
Binary files differ
diff --git a/media-gfx/zimg/.svn/all-wcprops b/media-gfx/zimg/.svn/all-wcprops
new file mode 100644
index 0000000..940fd00
--- /dev/null
+++ b/media-gfx/zimg/.svn/all-wcprops
@@ -0,0 +1,29 @@
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/proj/sunrise/!svn/ver/7013/reviewed/media-gfx/openscenegraph
+END
+metadata.xml
+K 25
+svn:wc:ra_dav:version-url
+V 78
+/svn/proj/sunrise/!svn/ver/6968/reviewed/media-gfx/openscenegraph/metadata.xml
+END
+openscenegraph-1.2.ebuild
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/svn/proj/sunrise/!svn/ver/7013/reviewed/media-gfx/openscenegraph/openscenegraph-1.2.ebuild
+END
+Manifest
+K 25
+svn:wc:ra_dav:version-url
+V 74
+/svn/proj/sunrise/!svn/ver/7013/reviewed/media-gfx/openscenegraph/Manifest
+END
+ChangeLog
+K 25
+svn:wc:ra_dav:version-url
+V 75
+/svn/proj/sunrise/!svn/ver/7013/reviewed/media-gfx/openscenegraph/ChangeLog
+END
diff --git a/media-gfx/zimg/.svn/entries b/media-gfx/zimg/.svn/entries
new file mode 100644
index 0000000..27444b7
--- /dev/null
+++ b/media-gfx/zimg/.svn/entries
@@ -0,0 +1,167 @@
+9
+
+dir
+7347
+http://overlays.gentoo.org/svn/proj/sunrise/reviewed/media-gfx/openscenegraph
+http://overlays.gentoo.org/svn/proj/sunrise
+
+
+
+2008-09-07T21:51:28.738463Z
+7013
+tommy
+
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+12608f7e-a915-0410-b2f3-ce240db1b126
+
+metadata.xml
+file
+
+
+
+
+2008-11-14T11:39:09.000000Z
+5e04c3097b78103c53975059b3d0f0b2
+2008-09-02T21:16:29.888843Z
+6968
+tommy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+591
+
+files
+dir
+
+openscenegraph-1.2.ebuild
+file
+
+
+
+
+2008-11-14T11:39:09.000000Z
+528d18ecda1fc7543f1f30069cfae36d
+2008-09-07T21:51:28.738463Z
+7013
+tommy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3414
+
+Manifest
+file
+
+
+
+
+2008-11-14T11:39:09.000000Z
+e86c9d33c80f794353a7d482ffd9daed
+2008-09-07T21:51:28.738463Z
+7013
+tommy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+981
+
+ChangeLog
+file
+
+
+
+
+2008-11-14T11:39:09.000000Z
+e55e636da136e4258430a69852176470
+2008-09-07T21:51:28.738463Z
+7013
+tommy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1181
+
diff --git a/media-gfx/zimg/.svn/format b/media-gfx/zimg/.svn/format
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/media-gfx/zimg/.svn/format
@@ -0,0 +1 @@
+9
diff --git a/media-gfx/zimg/.svn/text-base/ChangeLog.svn-base b/media-gfx/zimg/.svn/text-base/ChangeLog.svn-base
new file mode 100644
index 0000000..914fce6
--- /dev/null
+++ b/media-gfx/zimg/.svn/text-base/ChangeLog.svn-base
@@ -0,0 +1,31 @@
+# ChangeLog for media-gfx/openscenegraph
+# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+ 06 Sep 2008; Tiago Cunha (tcunha) <me@tiagocunha.org>
+ openscenegraph-1.2.ebuild:
+ Inherit multilib directly
+
+ 23 Aug 2008; Thomas Beierlein (TomJBE) <tb@forth-ev.de> metadata.xml:
+ Added local USE flag description wrt GLEP 56
+
+ 02 Nov 2006; Cedric Krier <ced@ced.homedns.org>
+ -openscenegraph-1.0.ebuild, -files/openscenegraph-1.0-build.patch,
+ -openscenegraph-1.1.ebuild, -files/openscenegraph-1.1-build.patch:
+ Clean old
+
+ 12 Oct 2006; Cedric Krier <ced@ced.homedns.org>
+ +openscenegraph-1.2.ebuild, +files/openscenegraph-1.2-build.patch:
+ Version bump
+
+ 12 Sep 2006; Cedric Krier <ced@ced.homedns.org>
+ +openscenegraph-1.0.ebuild, +files/openscenegraph-1.0-build.patch,
+ files/openscenegraph-1.1-build.patch:
+ fix linkage and add previous version for Magrathea
+
+ 11 Sep 2006; Cedric Krier <ced@ced.homedns.org>
+ +openscenegraph-1.1.ebuild, +files/openscenegraph-1.1-build.patch,
+ +metadata.xml:
+ New Ebuild for bug 91526 thanks to Takenori KUBO, Seemant Kulleen, Jakub
+ Moc, Tristan Heaven, Luca Barbato, Rene Meier, Geoff Leach
+
diff --git a/media-gfx/zimg/.svn/text-base/Manifest.svn-base b/media-gfx/zimg/.svn/text-base/Manifest.svn-base
new file mode 100644
index 0000000..b267c64
--- /dev/null
+++ b/media-gfx/zimg/.svn/text-base/Manifest.svn-base
@@ -0,0 +1,5 @@
+AUX openscenegraph-1.2-build.patch 3113 RMD160 b794d1338d8b5b268f881b7707e52b2152f518c9 SHA1 b4954c803f33fa12541148fb375bdc46050f6d6f SHA256 8b8e4664675d76c07ea54fb49a724d21474f8e9e8e339a288b899ad96b43bb19
+DIST OSG_OP_OT-1.2.zip 5286887 RMD160 b7a961ba2cc413a23049d64631bfbf2c9a5a04bc SHA1 89550da0e0cbaeba742deeae6eb29602854d9284 SHA256 3ccd899c83140a542313f9a659698af36ea30bb7cfddcd8962e25cf0fe7e1fb5
+EBUILD openscenegraph-1.2.ebuild 3414 RMD160 6ecec22e97a098a9bac4cac89669d97591ee0bb6 SHA1 20988cf156aad3a85000cbc6b956939cf8ff1c86 SHA256 3f07965da83c1e96de321e7f9cb5b8a9867c9e5a432909b9306c38d3fc8b2d91
+MISC ChangeLog 1181 RMD160 c5ce4df759bf368a1fa74a41c36093f0ef785429 SHA1 50e143f6f8db83134c3319d2795f9e8dddb87bec SHA256 1fc0342a5afeaa77deda06cd6aef5b823f07ef96e94e7e99e6ba2de0de40cfeb
+MISC metadata.xml 591 RMD160 3f8e5f89276fcad5f5a4e67e7bdfe1755831a6bf SHA1 a9782a183358369a349d736ebc6ba2d8a11a3230 SHA256 67133df5c5702c2b54f3efbb2e5e64815df96b8d5aa94f4843c518e4ce4583fe
diff --git a/media-gfx/zimg/.svn/text-base/metadata.xml.svn-base b/media-gfx/zimg/.svn/text-base/metadata.xml.svn-base
new file mode 100644
index 0000000..7f06975
--- /dev/null
+++ b/media-gfx/zimg/.svn/text-base/metadata.xml.svn-base
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>maintainer-wanted</herd>
+ <use>
+ <flag name='coin'>Compile <pkg>media-libs/coin</pkg> plugin</flag>
+ <flag name='gdal'>Compile <pkg>sci-libs/gdal</pkg> plugin</flag>
+ <flag name='introspection'>Compile osgIntrospection</flag>
+ <flag name='inventor'>Compile <pkg>media-libs/openinventor</pkg>
+ plugin</flag>
+ <flag name='jasper'>Compile <pkg>media-libs/jasper</pkg> plugin</flag>
+ <flag name='producer'>Compile osgProducer</flag>
+ </use>
+</pkgmetadata>
diff --git a/media-gfx/zimg/.svn/text-base/openscenegraph-1.2.ebuild.svn-base b/media-gfx/zimg/.svn/text-base/openscenegraph-1.2.ebuild.svn-base
new file mode 100644
index 0000000..5a662bd
--- /dev/null
+++ b/media-gfx/zimg/.svn/text-base/openscenegraph-1.2.ebuild.svn-base
@@ -0,0 +1,136 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils multilib toolchain-funcs
+
+MY_PN=OpenSceneGraph
+MY_PV=${PV/_rc/-rc}
+
+DESCRIPTION="Cross-platform, high performance 3D graphics toolkit"
+HOMEPAGE="http://www.openscenegraph.org/"
+SRC_URI="http://www.openscenegraph.org/downloads/snapshots/OSG_OP_OT-${MY_PV}.zip"
+
+LICENSE="OSGPL"
+SLOT="0"
+KEYWORDS="~x86"
+IUSE="doc examples introspection producer gdal jasper truetype xine jpeg gif tiff png coin inventor glut"
+
+RDEPEND=">=dev-libs/openproducer-1.0.2
+ >=dev-libs/openthreads-1.4.3
+ media-libs/mesa
+ virtual/opengl
+ x11-libs/libXi
+ x11-libs/libXmu
+ x11-libs/libX11
+ gdal? ( sci-libs/gdal )
+ jasper? ( media-libs/jasper )
+ truetype? ( media-libs/freetype )
+ xine? ( media-libs/xine-lib )
+ jpeg? ( media-libs/jpeg )
+ gif? ( media-libs/giflib )
+ tiff? ( media-libs/tiff )
+ png? ( media-libs/libpng
+ sys-libs/zlib )
+ coin? ( media-libs/coin )
+ inventor? ( media-libs/openinventor )
+ glut? ( virtual/glut )"
+DEPEND="${RDEPEND}
+ app-arch/unzip
+ doc? ( app-doc/doxygen )"
+
+S=${WORKDIR}/OSG_OP_OT-${MY_PV}/${MY_PN}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-build.patch
+}
+
+src_compile() {
+ local myconf
+
+ use introspection \
+ && myconf="${myconf} COMPILE_INTROSPECTION=yes" \
+ || myconf="${myconf} COMPILE_INTROSPECTION=no"
+
+ use producer \
+ && myconf="${myconf} PRODUCER_INSTALLED=yes" \
+ || myconf="${myconf} PRODUCER_INSTALLED=no"
+
+ use examples \
+ && myconf="${myconf} COMPILE_EXAMPLES=yes" \
+ || myconf="${myconf} COMPILE_EXAMPLES=no"
+
+ use gdal \
+ && myconf="${myconf} GDAL_INSTALLED=yes" \
+ || myconf="${myconf} GDAL_INSTALLED=no"
+
+ use jasper \
+ && myconf="${myconf} JASPER_INSTALLED=yes" \
+ || myconf="${myconf} JASPER_INSTALLED=no"
+
+ use truetype \
+ && myconf="${myconf} FREETYPE_INSTALLED=yes" \
+ || myconf="${myconf} FREETYPE_INSTALLED=no"
+
+ use xine \
+ && myconf="${myconf} XINE_INSTALLED=yes" \
+ || myconf="${myconf} XINE_INSTALLED=no"
+
+ myconf="${myconf} QUICKTIME_INSTALLED=no"
+
+ use jpeg \
+ && myconf="${myconf} LIBJPEG_INSTALLED=yes" \
+ || myconf="${myconf} LIBJPEG_INSTALLED=no"
+
+ use gif \
+ && myconf="${myconf} LIBUNGIF_INSTALLED=yes" \
+ || myconf="${myconf} LIBUNGIF_INSTALLED=no"
+
+ use tiff \
+ && myconf="${myconf} LIBTIFF_INSTALLED=yes" \
+ || myconf="${myconf} LIBTIFF_INSTALLED=no"
+
+ use png \
+ && myconf="${myconf} LIBPNG_INSTALLED=yes" \
+ || myconf="${myconf} LIBPNG_INSTALLED=no"
+
+ use coin \
+ && myconf="${myconf} COIN_INSTALLED=yes" \
+ || myconf="${myconf} COIN_INSTALLED=no"
+
+ use inventor \
+ && myconf="${myconf} INVENTOR_INSTALLED=yes" \
+ || myconf="${myconf} INVENTOR_INSTALLED=no"
+
+ myconf="${myconf} PERFORMER_INSTALLED=no"
+
+ use glut \
+ && myconf="${myconf} GLUT_INSTALLED=yes" \
+ || myconf="${myconf} GLUT_INSTALLED=no"
+
+ emake CXX=$(tc-getCXX) ${myconf} || die "emake failed"
+
+ if use doc; then
+ OSGHOME="${S}" doxygen doc/Doxyfiles/all_Doxyfile
+ fi
+}
+
+src_install() {
+ emake INST_LOCATION="${D}"/usr INST_EXAMPLES="${D}"/usr/bin \
+ INST_EXAMPLE_SRC="${D}"/usr/share/doc/${P}/examples \
+ INST_SRC="${D}"/usr/share/doc/${P}/src install \
+ || die "emake install failed"
+
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins Make/openscenegraph.pc
+
+ dodoc AUTHORS.txt ChangeLog NEWS.txt README.txt
+
+ if use doc; then
+ dodoc doc/ProgrammingGuide/ProgrammingGuide.odt
+ dohtml -r doc/doxygen/html
+ fi
+}
diff --git a/media-gfx/zimg/Manifest b/media-gfx/zimg/Manifest
new file mode 100644
index 0000000..682b37e
--- /dev/null
+++ b/media-gfx/zimg/Manifest
@@ -0,0 +1,2 @@
+DIST zimg-5.0.0.tar.gz 384858 RMD160 4ac14bde8ac1bf25014a6160c6425366405fd019 SHA1 f263e6629a7eadd0e32ac13e3380afd7238f944e SHA256 d992bbb7f24d4c4ad7f6fec2f4efa7dee77222ad086881a2082426e9bfb3e099
+EBUILD zimg-5.0.0.ebuild 513 RMD160 2ffc5d98cbb3b666f96ea3636856e782a9afda70 SHA1 73c200cda181530febc82752dfa7faed981a805a SHA256 141eb0df063d380a1441157a60060382bc92e7d62bde9ae60466c5e76d8b0e5c
diff --git a/media-gfx/zimg/zimg-5.0.0.ebuild b/media-gfx/zimg/zimg-5.0.0.ebuild
new file mode 100644
index 0000000..0775fba
--- /dev/null
+++ b/media-gfx/zimg/zimg-5.0.0.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils multilib toolchain-funcs
+
+DESCRIPTION="Generates images from arbitrary formatted two-dimensional ascii or binary data"
+HOMEPAGE="http://zimg.sourceforge.net//"
+SRC_URI="mirror://sourceforge/zimg/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+DEPEND="media-libs/gd"
+
+src_install() {
+ cd ${S}
+ dobin zimg
+ doman zimg.1
+ dodoc README COPYING AUTHORS
+}
diff --git a/media-libs/gdk-pixbuf/Manifest b/media-libs/gdk-pixbuf/Manifest
new file mode 100644
index 0000000..d9c5120
--- /dev/null
+++ b/media-libs/gdk-pixbuf/Manifest
@@ -0,0 +1,9 @@
+AUX gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch 1157 SHA256 d3196c1666f560997bc5cd5be4787156c64f92dc0fd8dada8ad3c16793b90970 SHA512 e4aa5edc91ae1319f062a518612f6776bc03beb6db5a6a0e7b9c22b94d5f6433b26040b6a2c27fcb91b4094da45dcf1fddb7cb702bac64952ee0899b5b005a6c WHIRLPOOL 255040e3941fdc0dc16d57ef2802d1c3b8610f7eec26d4d828d120121402731f53a4427430060b1d61aef5ff007ee5c16de50877c6111e58a489c40f2bb9bdac
+AUX gdk-pixbuf-0.22.0-bmp_secure.patch 557 SHA256 1bb9330c75e8ceb927620f03717d442185b84602b9ec67bb6940518aabdff5f8 SHA512 5d9ceab886f606bb9983ed6ab21a58edbade392ac7cb57ee77ad3a1e5e2fd192739d3a0ea3f30981d637a21fdda2de3747c9fd805335072516afa727ec6e32d3 WHIRLPOOL 14f6c01d013a78de367a66223ff264d0c369eff88138e4a88f8e2ed779e69994ea6bec8015fbdd7570a06c8d19318e80791b8c98a8c692fcf09d89d6ea8f1739
+AUX gdk-pixbuf-0.22.0-loaders.patch 3589 SHA256 310824874429c26b277c985b218e133ded4e94c51de389979875de38ddb57400 SHA512 ce20cc96c7e4d540eec9f2b53c424ed8e0aaf51ae4f58f4c521380b357bf69ccff89b0865fac8b792cca9a42892602af651ab5965edb569cad7b5ecee1ea36ae WHIRLPOOL cbcf25a12b614f276b350b042f3471aefcc09cd517e4710157fe9b707ecc37ff32c0468b5d51c1d594c9343e82d5568e966a544d751d3ef9d5bd734ad484f72c
+AUX gdk-pixbuf-0.22.0-m4.patch 276 SHA256 4a62476624319a09c000d01d45689167ea5cf1665e4c7e988032ffff11920132 SHA512 b22c73982d13a0a6200e48f436cdf1a34fe8882c70da8ce0bb86a0cc1e0f7887e25ceeb6affb57222a7158d05112fb711a8f1d34c05085b47750eed04a094901 WHIRLPOOL ad974a9ba450c62f00bbd84dff3c469b2033109adb0ca09f5e5c9eb5bff3ef7487bf555363bfab691079ba6528bf1c2eff13c5f05349214938099c0bacffa7d3
+AUX gdk-pixbuf-ds-png.diff 1309 SHA256 db45815b76f01f888581e4dfe5affb45febf370ec85e0a59e4ae079adff29137 SHA512 bfd483dd030de81a3ecb1de16a9ce0d666a9dcafee0243e4bcc9b68a632d4e4739d9b9a0ce4bc61ae5615f6c2b309f22c0d9132c3e5e85ce0768e3f9c15bbce8 WHIRLPOOL a29bc0eb96c8b5326e51a4b2984f03860f2090ff27936710d683ca8a16f3d49372777d1d42d57c9665e95d22cf6a539ab25ee86d5079112de603db2fabcff6ed
+DIST gdk-pixbuf-0.22.0.tar.bz2 398208 SHA256 411f2a1c27c3afadc5d034f2213d9f6c3a37f564eb5989cf6e8a53729280ae22 SHA512 69ebc3030f978283a3014dc6037304dd67daf912e6a1eda8d6853aa2ad10a226b310c82049ce78de3665dda363083b08eb3c7942f77a7cd0fc76282d8cfc5a95 WHIRLPOOL 403d1fe50d97683f86aacb0fcb3a9cf7bb7e22568bff04dc511da22c854e3edb615bd0c8ab95d3cef06541a3ae83de6f7f15b01d7b1274fc46626264fa2218ec
+EBUILD gdk-pixbuf-0.22.0-r5.ebuild 1779 SHA256 da124f65e28024d47ee693071b14ecdd4b86cd7b1f44dfa8b5c18014bf7a4859 SHA512 f8de7c177412af76aac602d4fca180414872a759af597365b5d3d90b104930e1748b293ddf69d0627f717e4d58e8c22a1190a4622cb4014ecdd4aea58015e08b WHIRLPOOL 178d1294600757d5ba3c9fcfe7f4c56b6bc5bec3f9ea347d2451f39bd9ebc5883233d708398e8f527b385d640c7dc176485788c767773aef168206f3f3465249
+EBUILD gdk-pixbuf-0.22.0-r6.ebuild 1835 SHA256 310b5d95375290f4b0b989f884decb38d147ed431bd4b2ffd4d6660e1d9e524f SHA512 77230088acb6c2bfc1f2f3c0ca457cf7a7813949441fb15b3b0b59c1dfb1fad4d78a2080d8cb0986a095458f8f9bde8b7f6c023e75e8b89f1d5dd2176e5724d9 WHIRLPOOL 38e05d2207138451733bc7027ffc08eeccc799c4f4a0b06a2d440825ce6021a40a6ea41b583cd466181a49167e6ae232df1dda9470a211f91259fc21c321bf6f
+EBUILD gdk-pixbuf-0.22.0-r7.ebuild 1834 SHA256 ef6eed63155a9dc0754f2443d96aa64dcda56fd64a9559db9988f92e2296bc92 SHA512 e49f66688f766566483fdf8d13ec15e746ac1b2c5d440357a6f7960d20265d7c6c34f37213a1743f5217d135b071066183fb54720f2f7b65f5dc0e96fd1e47a4 WHIRLPOOL 7cd04d85aeb782b47a3a926a2523fbbed5610f1048520fe0fd467f604cc018f2b847508f0591758bb64078e3f5bf46c0302d94698b71646894935edc69434df6
diff --git a/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch
new file mode 100644
index 0000000..ffb4378
--- /dev/null
+++ b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_reject_corrupt.patch
@@ -0,0 +1,48 @@
+--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-bmp.c 2002-09-27 23:12:40.000000000 +0200
++++ gdk-pixbuf-0.22.0.patched/gdk-pixbuf/io-bmp.c 2005-03-30 01:33:06.000000000 +0200
+@@ -31,8 +31,6 @@
+ #include "gdk-pixbuf-private.h"
+ #include "gdk-pixbuf-io.h"
+
+-
+-
+ #if 0
+ /* If these structures were unpacked, they would define the two headers of the
+ * BMP file. After them comes the palette, and then the image data.
+@@ -206,7 +204,7 @@
+
+ if (State == NULL)
+ return NULL;
+-
++
+ while (feof(f) == 0) {
+ length = fread(membuf, 1, sizeof (membuf), f);
+ if (length > 0)
+@@ -245,11 +243,26 @@
+ static gboolean
+ grow_buffer (struct bmp_progressive_state *State)
+ {
+- guchar *tmp = realloc (State->buff, State->BufferSize);
++ guchar *tmp;
++
++ if (State->BufferSize == 0) {
++#if 0
++ g_set_error (error,
++ GDK_PIXBUF_ERROR,
++ GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
++ _("BMP image has bogus header data"));
++#endif
++ State->read_state = READ_STATE_ERROR;
++ return FALSE;
++ }
++
++ tmp = realloc (State->buff, State->BufferSize);
++
+ if (!tmp) {
+ State->read_state = READ_STATE_ERROR;
+ return FALSE;
+ }
++
+ State->buff = tmp;
+ return TRUE;
+ }
diff --git a/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_secure.patch b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_secure.patch
new file mode 100644
index 0000000..29471f1
--- /dev/null
+++ b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-bmp_secure.patch
@@ -0,0 +1,19 @@
+Index: io-bmp.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gdk-pixbuf/io-bmp.c,v
+retrieving revision 1.41
+diff -u -p -r1.41 io-bmp.c
+--- gdk-pixbuf/io-bmp.c 13 Aug 2004 02:26:57 -0000 1.41
++++ gdk-pixbuf/io-bmp.c 20 Aug 2004 00:18:14 -0000
+@@ -876,8 +876,10 @@ DoCompressed(struct bmp_progressive_stat
+ guchar c;
+ gint idx;
+
+- if (context->compr.y >= context->Header.height)
++ if (context->compr.y >= context->Header.height) {
++ context->BufferDone = 0;
+ return TRUE;
++ }
+
+ y = context->compr.y;
+
diff --git a/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-loaders.patch b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-loaders.patch
new file mode 100644
index 0000000..0686538
--- /dev/null
+++ b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-loaders.patch
@@ -0,0 +1,134 @@
+diff -NurdB gdk-pixbuf-0.22.0/gdk-pixbuf/io-ico.c gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-ico.c
+--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-ico.c 2002-09-27 17:19:15.000000000 -0500
++++ gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-ico.c 2005-10-27 11:28:23.000000000 -0500
+@@ -330,6 +330,9 @@
+
+ State->HeaderSize+=I;
+
++ if (State->HeaderSize < 0)
++ return FALSE;
++
+ if (State->HeaderSize>State->BytesInHeaderBuf) {
+ guchar *tmp=realloc(State->HeaderBuf,State->HeaderSize);
+ if (!tmp)
+diff -NurdB gdk-pixbuf-0.22.0/gdk-pixbuf/io-xpm.c gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-xpm.c
+--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-xpm.c 2001-03-01 15:16:28.000000000 -0500
++++ gdk-pixbuf-0.22.0-patched/gdk-pixbuf/io-xpm.c 2005-10-27 11:29:14.000000000 -0500
+@@ -243,8 +243,8 @@
+ break;
+ else {
+ if (numnames > 0) {
+- space -= 1;
+- strcat (color, " ");
++ strncat (color, " ", space);
++ space -= MIN (space, 1);
+ }
+
+ strncat (color, temp, space);
+@@ -281,7 +281,8 @@
+ /* Fall through to the xpm_read_string. */
+
+ case op_body:
+- xpm_read_string (h->infile, &h->buffer, &h->buffer_size);
++ if(!xpm_read_string (h->infile, &h->buffer, &h->buffer_size))
++ return NULL;
+ return h->buffer;
+
+ default:
+@@ -317,13 +318,6 @@
+ return NULL;
+ }
+
+-/* Destroy notification function for the pixbuf */
+-static void
+-free_buffer (guchar *pixels, gpointer data)
+-{
+- free (pixels);
+-}
+-
+ static gboolean
+ xpm_color_parse (const char *spec, XColor *color)
+ {
+@@ -342,7 +336,8 @@
+ gchar pixel_str[32];
+ GHashTable *color_hash;
+ _XPMColor *colors, *color, *fallbackcolor;
+- guchar *pixels, *pixtmp;
++ guchar *pixtmp;
++ GdkPixbuf* pixbuf;
+
+ fallbackcolor = NULL;
+
+@@ -352,16 +347,33 @@
+ return NULL;
+ }
+ sscanf (buffer, "%d %d %d %d", &w, &h, &n_col, &cpp);
+- if (cpp >= 32) {
+- g_warning ("XPM has more than 31 chars per pixel.");
++ if (cpp <= 0 || cpp >= 32) {
++ g_warning ("XPM has invalid number of chars per pixel.");
+ return NULL;
+ }
++ if (n_col <= 0 ||
++ n_col >= G_MAXINT / (cpp + 1) ||
++ n_col >= G_MAXINT / sizeof (_XPMColor)) {
++ g_warning ("XPM file has invalid number of colors");
++ return NULL;
++ }
+
+ /* The hash is used for fast lookups of color from chars */
+ color_hash = g_hash_table_new (g_str_hash, g_str_equal);
+
+- name_buf = g_new (gchar, n_col * (cpp + 1));
+- colors = g_new (_XPMColor, n_col);
++ name_buf = g_new (gchar, n_col * (cpp + 1));
++ if (!name_buf) {
++ g_warning ("Cannot allocate memory for loading XPM image");
++ g_hash_table_destroy (color_hash);
++ return NULL;
++ }
++ colors = g_new (_XPMColor, n_col);
++ if (!colors) {
++ g_warning ("Cannot allocate memory for loading XPM image");
++ g_hash_table_destroy (color_hash);
++ g_free (name_buf);
++ return NULL;
++ }
+
+ for (cnt = 0; cnt < n_col; cnt++) {
+ gchar *color_name;
+@@ -397,12 +409,8 @@
+ fallbackcolor = color;
+ }
+
+- if (is_trans)
+- pixels = malloc (w * h * 4);
+- else
+- pixels = malloc (w * h * 3);
+-
+- if (!pixels) {
++ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, is_trans, 8, w, h);
++ if (!pixbuf) {
+ g_hash_table_destroy (color_hash);
+ g_free (colors);
+ g_free (name_buf);
+@@ -410,7 +418,7 @@
+ }
+
+ wbytes = w * cpp;
+- pixtmp = pixels;
++ pixtmp = pixbuf->pixels;
+
+ for (ycnt = 0; ycnt < h; ycnt++) {
+ buffer = (*get_buf) (op_body, handle);
+@@ -443,9 +451,7 @@
+ g_free (colors);
+ g_free (name_buf);
+
+- return gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB, is_trans, 8,
+- w, h, is_trans ? (w * 4) : (w * 3),
+- free_buffer, NULL);
++ return pixbuf;
+ }
+
+ /* Shared library entry point for file loading */
diff --git a/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-m4.patch b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-m4.patch
new file mode 100644
index 0000000..032976d
--- /dev/null
+++ b/media-libs/gdk-pixbuf/files/gdk-pixbuf-0.22.0-m4.patch
@@ -0,0 +1,9 @@
+Fix aclocal warning:
+/usr/share/aclocal/gdk-pixbuf.m4:12: warning: underquoted definition of AM_PATH_GDK_PIXBUF
+--- gdk-pixbuf-0.22.0/gdk-pixbuf.m4
++++ gdk-pixbuf-0.22.0/gdk-pixbuf.m4
+@@ -11,3 +11,3 @@
+ dnl
+-AC_DEFUN(AM_PATH_GDK_PIXBUF,
++AC_DEFUN([AM_PATH_GDK_PIXBUF],
+ [dnl
diff --git a/media-libs/gdk-pixbuf/files/gdk-pixbuf-ds-png.diff b/media-libs/gdk-pixbuf/files/gdk-pixbuf-ds-png.diff
new file mode 100644
index 0000000..39b4cb6
--- /dev/null
+++ b/media-libs/gdk-pixbuf/files/gdk-pixbuf-ds-png.diff
@@ -0,0 +1,47 @@
+diff -dPNur gdk-pixbuf-0.22.0/gdk-pixbuf/io-png.c gdk-pixbuf-0.22.0-png15/gdk-pixbuf/io-png.c
+--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-png.c 2001-01-24 21:59:23.000000000 +0100
++++ gdk-pixbuf-0.22.0-png15/gdk-pixbuf/io-png.c 2012-11-16 14:32:15.000000000 +0100
+@@ -174,11 +174,12 @@
+ png_destroy_read_struct (&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+-
++/*
+ if (setjmp (png_ptr->jmpbuf)) {
+ png_destroy_read_struct (&png_ptr, &info_ptr, &end_info);
+ return NULL;
+ }
++*/
+
+ png_init_io (png_ptr, f);
+ png_read_info (png_ptr, info_ptr);
+@@ -311,12 +312,12 @@
+ return NULL;
+ }
+
+- if (setjmp (lc->png_read_ptr->jmpbuf)) {
++/* if (setjmp (lc->png_read_ptr->jmpbuf)) {
+ if (lc->png_info_ptr)
+ png_destroy_read_struct(&lc->png_read_ptr, NULL, NULL);
+ g_free(lc);
+ return NULL;
+- }
++ }*/
+
+ /* Create the auxiliary context struct */
+
+@@ -366,11 +367,11 @@
+ lc->max_row_seen_in_chunk = -1;
+
+ /* Invokes our callbacks as needed */
+- if (setjmp (lc->png_read_ptr->jmpbuf)) {
++/* if (setjmp (lc->png_read_ptr->jmpbuf)) {
+ return FALSE;
+- } else {
++ } else {*/
+ png_process_data(lc->png_read_ptr, lc->png_info_ptr, buf, size);
+- }
++/* }*/
+
+ if (lc->fatal_error_occurred)
+ return FALSE;
diff --git a/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild b/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild
new file mode 100644
index 0000000..d488cb0
--- /dev/null
+++ b/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild,v 1.3 2005/11/20 06:36:49 hardave Exp $
+
+#For the sake of virtualx compatibility (DS)
+EAPI=2
+
+inherit virtualx libtool gnome.org eutils
+
+DESCRIPTION="GNOME Image Library"
+HOMEPAGE="http://www.gtk.org/"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="doc mmx"
+
+RDEPEND="media-libs/jpeg
+ media-libs/tiff
+ =x11-libs/gtk+-1.2*
+ <media-libs/libpng-1.5
+ amd64? ( sys-libs/db )
+ !amd64? ( <sys-libs/db-2 )
+ >=gnome-base/gnome-libs-1.4.1.2-r1"
+# We need gnome-libs here, else gnome support do not get compiled into
+# gdk-pixbuf (the GnomeCanvasPixbuf library )
+DEPEND="${RDEPEND}
+ doc? ( dev-util/gtk-doc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # security fix (#64230)
+ epatch "${FILESDIR}"/${P}-bmp_secure.patch
+ epatch "${FILESDIR}"/${P}-loaders.patch
+ # reject corrupt bmps (#64230)
+ epatch "${FILESDIR}"/${P}-bmp_reject_corrupt.patch
+
+ #update libtool, else we get the "relink bug"
+ elibtoolize
+}
+
+src_compile() {
+ local myconf=""
+ use mmx || myconf="${myconf} --disable-mmx"
+ econf \
+ --sysconfdir=/etc/X11/gdk-pixbuf \
+ $(use_enable doc gtk-doc) \
+ ${myconf} \
+ || die
+
+ #build needs to be able to
+ #connect to an X display.
+ Xemake || die
+}
+
+src_install() {
+ einstall \
+ sysconfdir=${D}/etc/X11/gdk-pixbuf \
+ localstatedir=${D}/var/lib || die
+
+ dosed -e "s:${D}::g" /usr/bin/gdk-pixbuf-config
+ #fix permissions on the loaders
+ chmod a+rx ${D}/usr/$(get_libdir)/gdk-pixbuf/loaders
+ chmod a+r ${D}/usr/$(get_libdir)/gdk-pixbuf/loaders/*
+
+ dodoc AUTHORS ChangeLog INSTALL README NEWS TODO
+}
diff --git a/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r6.ebuild b/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r6.ebuild
new file mode 100644
index 0000000..09a4598
--- /dev/null
+++ b/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r6.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild,v 1.3 2005/11/20 06:36:49 hardave Exp $
+
+#For the sake of virtualx compatibility (DS)
+EAPI=2
+
+inherit virtualx libtool gnome.org eutils
+
+DESCRIPTION="GNOME Image Library"
+HOMEPAGE="http://www.gtk.org/"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="doc mmx"
+
+RDEPEND="media-libs/jpeg
+ media-libs/tiff
+ =x11-libs/gtk+-1.2*
+ >=media-libs/libpng-1.5
+ amd64? ( sys-libs/db )
+ !amd64? ( <sys-libs/db-2 )
+ >=gnome-base/gnome-libs-1.4.1.2-r1"
+# We need gnome-libs here, else gnome support do not get compiled into
+# gdk-pixbuf (the GnomeCanvasPixbuf library )
+DEPEND="${RDEPEND}
+ doc? ( dev-util/gtk-doc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # security fix (#64230)
+ epatch "${FILESDIR}"/${P}-bmp_secure.patch
+ epatch "${FILESDIR}"/${P}-loaders.patch
+ # reject corrupt bmps (#64230)
+ epatch "${FILESDIR}"/${P}-bmp_reject_corrupt.patch
+#SDS
+ epatch "${FILESDIR}"/gdk-pixbuf-ds-png.diff
+#EDS
+
+ #update libtool, else we get the "relink bug"
+ elibtoolize
+}
+
+src_compile() {
+ local myconf=""
+ use mmx || myconf="${myconf} --disable-mmx"
+ econf \
+ --sysconfdir=/etc/X11/gdk-pixbuf \
+ $(use_enable doc gtk-doc) \
+ ${myconf} \
+ || die
+
+ #build needs to be able to
+ #connect to an X display.
+ Xemake || die
+}
+
+src_install() {
+ einstall \
+ sysconfdir=${D}/etc/X11/gdk-pixbuf \
+ localstatedir=${D}/var/lib || die
+
+ dosed -e "s:${D}::g" /usr/bin/gdk-pixbuf-config
+ #fix permissions on the loaders
+ chmod a+rx ${D}/usr/$(get_libdir)/gdk-pixbuf/loaders
+ chmod a+r ${D}/usr/$(get_libdir)/gdk-pixbuf/loaders/*
+
+ dodoc AUTHORS ChangeLog INSTALL README NEWS TODO
+}
diff --git a/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r7.ebuild b/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r7.ebuild
new file mode 100644
index 0000000..137f850
--- /dev/null
+++ b/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r7.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/gdk-pixbuf/gdk-pixbuf-0.22.0-r5.ebuild,v 1.3 2005/11/20 06:36:49 hardave Exp $
+
+#For the sake of virtualx compatibility (DS)
+EAPI=2
+
+inherit virtualx libtool gnome.org eutils
+
+DESCRIPTION="GNOME Image Library"
+HOMEPAGE="http://www.gtk.org/"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="doc mmx"
+
+RDEPEND="virtual/jpeg:0
+ media-libs/tiff
+ =x11-libs/gtk+-1.2*
+ >=media-libs/libpng-1.5
+ amd64? ( sys-libs/db )
+ !amd64? ( <sys-libs/db-2 )
+ >=gnome-base/gnome-libs-1.4.1.2-r1"
+# We need gnome-libs here, else gnome support do not get compiled into
+# gdk-pixbuf (the GnomeCanvasPixbuf library )
+DEPEND="${RDEPEND}
+ doc? ( dev-util/gtk-doc )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-m4.patch
+ # security fix (#64230)
+ epatch "${FILESDIR}"/${P}-bmp_secure.patch
+ epatch "${FILESDIR}"/${P}-loaders.patch
+ # reject corrupt bmps (#64230)
+ epatch "${FILESDIR}"/${P}-bmp_reject_corrupt.patch
+#SDS
+ epatch "${FILESDIR}"/gdk-pixbuf-ds-png.diff
+#EDS
+
+ #update libtool, else we get the "relink bug"
+ elibtoolize
+}
+
+src_compile() {
+ local myconf=""
+ use mmx || myconf="${myconf} --disable-mmx"
+ econf \
+ --sysconfdir=/etc/X11/gdk-pixbuf \
+ $(use_enable doc gtk-doc) \
+ ${myconf} \
+ || die
+
+ #build needs to be able to
+ #connect to an X display.
+ Xemake || die
+}
+
+src_install() {
+ einstall \
+ sysconfdir=${D}/etc/X11/gdk-pixbuf \
+ localstatedir=${D}/var/lib || die
+
+ dosed -e "s:${D}::g" /usr/bin/gdk-pixbuf-config
+ #fix permissions on the loaders
+ chmod a+rx ${D}/usr/$(get_libdir)/gdk-pixbuf/loaders
+ chmod a+r ${D}/usr/$(get_libdir)/gdk-pixbuf/loaders/*
+
+ dodoc AUTHORS ChangeLog INSTALL README NEWS TODO
+}
diff --git a/media-libs/id3lib/Manifest b/media-libs/id3lib/Manifest
new file mode 100644
index 0000000..615bfb9
--- /dev/null
+++ b/media-libs/id3lib/Manifest
@@ -0,0 +1,12 @@
+AUX 1.diff 717 RMD160 525c017d38a38a80feaed8ed37b84a8586ef0a81 SHA1 43e8e5a11c5890bf5dcfa1dcc983a9ada3ca3ee2 SHA256 9b90416204e0c83f9a919e3978239e58eceebe88ba22d5d365d32b0a8988cd27
+AUX id3lib-3.8.3-autoconf259.patch 1130 RMD160 bd5205973dfa31542935daa35ad04c6709c08b9d SHA1 6006f32d29461136ec029dda2ae7339fde6df1df SHA256 ffde572cb263cce4585292143a4396ebd12592ac34b398da19d1608f1c2374f9
+AUX id3lib-3.8.3-doxyinput.patch 977 RMD160 102b5cad0637776a26505d53d3722e549a7448d3 SHA1 b92df9fe9e7b0f124eba03d43a63b0da5b3718de SHA256 e7cd2eafe39229fee1195524872be3465d247590b7ead4a9cfa2178102a3d9ea
+AUX id3lib-3.8.3-gcc-4.3.patch 2971 RMD160 686fa49e1108684a652435afcc56fd062ed516a4 SHA1 d25b5e69e633e12f929e0d656b87f3f72b4b5849 SHA256 536f6bb5dddd48df3c7fc080c04f03a2053ab11429094f2f31d6e2d5f21a987e
+AUX id3lib-3.8.3-security.patch 1601 RMD160 165fcc3773343c36394207f833b9336859ec13f4 SHA1 e9a835fc14e8a83468206eba08ca4d5e0fc5e9c1 SHA256 aa5f4e12a0a625acd58199f3e2d8d6d39290480fea7767adbbc1f8379964e01c
+AUX id3lib-3.8.3-test_io.patch 281 RMD160 773e84752a84cd746def0ff4878f4b248d6611e6 SHA1 76f6bab888f1d47e75006f7bcb44df0205693d76 SHA256 cc124f8805bcb977a1673f0b04fff368dac1af70d78c21da6f0415ce067d7687
+AUX id3lib-3.8.3-unicode16.patch 1542 RMD160 1b60e40e5cb1f172e4020ba2b87a10b557521572 SHA1 f3644a7f637b65b46afdea04195c48cde03edcd7 SHA256 71c79002d9485965a3a93e87ecbd7fed8f89f64340433b7ccd263d21385ac969
+AUX id3lib-3.8.3-zlib.patch 833 RMD160 477f5e846ef7070bd3c10203bbaaa7eeaaedf6f2 SHA1 231721feb310f5ef6d820d1c1397e3605b5689cb SHA256 0b5531089422bda659deddcccf0562fcaa96529e74778065e35c848d6cf2a502
+AUX id3lib-ds-rcc.patch 4773 RMD160 b08e67f6d900e02a3de0e31ece6e6d15ace9c3e1 SHA1 67dfcfa4028d4ebd1a1f75c76b0861aa49db3296 SHA256 e9f54621938a9ea3657ca5a601141d4c7fb9adf4af23dea41eb61df9517ea3f8
+DIST id3lib-3.8.3.tar.gz 950726 RMD160 bfa2499ec649ed40815ad0a370c78eb1517952c4 SHA1 c92c880da41d1ec0b242745a901702ae87970838 SHA256 2749cc3c0cd7280b299518b1ddf5a5bcfe2d1100614519b68702230e26c7d079
+EBUILD id3lib-3.8.3-r5.ebuild 1312 RMD160 d643251d7f9d319931cecb64539761f976e79c30 SHA1 8d31263ea96c57fe3b93dc3ebfedf79ad5f09910 SHA256 633fb7d85cf94052f71f9ebe7d9012a6b9a1264470c40dc619a7bbd7098e9d9f
+EBUILD id3lib-3.8.3-r8.ebuild 1485 RMD160 c018b53e9a81bb8aa9cf9037f163f033f5108c28 SHA1 5eb6cf089c99cdb92efa0a084b428e36ecf32983 SHA256 864341b5f608079a51af2cd51de07dad4a0870ec56bf5146e0cdcf932dfd9a89
diff --git a/media-libs/id3lib/files/1.diff b/media-libs/id3lib/files/1.diff
new file mode 100644
index 0000000..7617737
--- /dev/null
+++ b/media-libs/id3lib/files/1.diff
@@ -0,0 +1,19 @@
+--- old 2008-09-17 11:32:53.000000000 +0200
++++ id3lib-ds-rcc.patch 2008-09-17 11:27:54.000000000 +0200
+@@ -93,9 +93,9 @@
+
+ libid3_la_LDFLAGS = \
+ + @LIBRCC_LIBS@ \
+- -lz \
+ -version-info $(LT_VERSION) \
+ -release $(LT_RELEASE) \
++ -export-dynamic
+ diff -dPNur id3lib-3.8.3-orig/src/rccpatch.cpp id3lib-3.8.3-new/src/rccpatch.cpp
+ --- id3lib-3.8.3-orig/src/rccpatch.cpp 1970-01-01 01:00:00.000000000 +0100
+ +++ id3lib-3.8.3-new/src/rccpatch.cpp 2005-07-19 22:10:47.000000000 +0200
+@@ -166,4 +166,4 @@
+ @@ -0,0 +1,3 @@
+ +void rccPatchFree();
+ +void rccPatchInit();
+-+char *rccPatchRecode(const char *str, size_t size_t, size_t *size_t);
+++char *rccPatchRecode(const char *str, size_t len, size_t *rlen);
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-autoconf259.patch b/media-libs/id3lib/files/id3lib-3.8.3-autoconf259.patch
new file mode 100644
index 0000000..16921e1
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-autoconf259.patch
@@ -0,0 +1,31 @@
+Index: id3lib-3.8.3/configure.in
+===================================================================
+--- id3lib-3.8.3.orig/configure.in
++++ id3lib-3.8.3/configure.in
+@@ -168,7 +168,7 @@ if test $has_iconv = 1; then
+ iconv_oldstyle=1, iconv_oldstyle=0)
+ if test $iconv_oldstyle = 1; then
+ AC_MSG_RESULT(const char **)
+- AC_DEFINE(ID3LIB_ICONV_OLDSTYLE)
++ AC_DEFINE(ID3LIB_ICONV_OLDSTYLE, [], [Unknown])
+ #we'll check out the need of
+ #typecast in the call of iconv_open
+ AC_MSG_CHECKING(whether to typecast in iconv)
+@@ -184,7 +184,7 @@ if test $has_iconv = 1; then
+ iconv_cast=0, iconv_cast=1)
+ if test $iconv_cast = 1; then
+ AC_MSG_RESULT(yes)
+- AC_DEFINE(ID3LIB_ICONV_CAST_OK)
++ AC_DEFINE(ID3LIB_ICONV_CAST_OK, [], [Unknown])
+ else
+ AC_MSG_RESULT(no)
+ fi
+@@ -206,7 +206,7 @@ if test $has_iconv = 1; then
+ iconv_cast=0, iconv_cast=1)
+ if test $iconv_cast = 1; then
+ AC_MSG_RESULT(yes)
+- AC_DEFINE(ID3LIB_ICONV_CAST_OK)
++ AC_DEFINE(ID3LIB_ICONV_CAST_OK, [], [Unknown])
+ else
+ AC_MSG_RESULT(no)
+ fi
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-doxyinput.patch b/media-libs/id3lib/files/id3lib-3.8.3-doxyinput.patch
new file mode 100644
index 0000000..b118f48
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-doxyinput.patch
@@ -0,0 +1,23 @@
+Index: id3lib-3.8.3/doc/Doxyfile
+===================================================================
+--- id3lib-3.8.3.orig/doc/Doxyfile
++++ id3lib-3.8.3/doc/Doxyfile
+@@ -262,17 +262,7 @@ WARN_FORMAT = "$file:$line: $
+ # with spaces.
+
+ INPUT = ../src \
+- ../include/id3/field.h \
+- ../include/id3/frame.h \
+- ../include/id3/globals.h \
+- ../include/id3/misc_support.h \
+- ../include/id3/reader.h \
+- ../include/id3/readers.h \
+- ../include/id3/sized_types.h \
+- ../include/id3/tag.h \
+- ../include/id3/tag.h \
+- ../include/id3/writer.h \
+- ../include/id3/writers.h
++ ../include/id3 \
+
+
+ # If the value of the INPUT tag contains directories, you can use the
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-gcc-4.3.patch b/media-libs/id3lib/files/id3lib-3.8.3-gcc-4.3.patch
new file mode 100644
index 0000000..090dc0b
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-gcc-4.3.patch
@@ -0,0 +1,82 @@
+diff -Naur id3lib-3.8.3-orig/configure.in id3lib-3.8.3/configure.in
+--- id3lib-3.8.3-orig/configure.in 2008-03-05 18:03:25.000000000 -0600
++++ id3lib-3.8.3/configure.in 2008-03-05 18:15:42.000000000 -0600
+@@ -227,7 +227,6 @@
+ )
+ AC_CHECK_HEADERS( \
+ string \
+- iomanip.h \
+ ,,AC_MSG_ERROR([Missing a vital header file for id3lib])
+ )
+
+diff -Naur id3lib-3.8.3-orig/include/id3/id3lib_strings.h id3lib-3.8.3/include/id3/id3lib_strings.h
+--- id3lib-3.8.3-orig/include/id3/id3lib_strings.h 2008-03-05 18:19:46.000000000 -0600
++++ id3lib-3.8.3/include/id3/id3lib_strings.h 2008-03-05 18:19:38.000000000 -0600
+@@ -30,6 +30,7 @@
+ #define _ID3LIB_STRINGS_H_
+
+ #include <string>
++#include <cstring>
+
+ #if (defined(__GNUC__) && (__GNUC__ >= 3) || (defined(_MSC_VER) && _MSC_VER > 1000))
+ namespace std
+diff -Naur id3lib-3.8.3-orig/include/id3/writers.h id3lib-3.8.3/include/id3/writers.h
+--- id3lib-3.8.3-orig/include/id3/writers.h 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/include/id3/writers.h 2008-03-05 18:23:05.000000000 -0600
+@@ -30,7 +30,7 @@
+
+ #include "id3/writer.h"
+ #include "id3/id3lib_streams.h"
+-//#include <string.h>
++#include <string.h>
+
+ class ID3_CPP_EXPORT ID3_OStreamWriter : public ID3_Writer
+ {
+diff -Naur id3lib-3.8.3-orig/examples/demo_convert.cpp id3lib-3.8.3/examples/demo_convert.cpp
+--- id3lib-3.8.3-orig/examples/demo_convert.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_convert.cpp 2008-03-05 18:26:50.000000000 -0600
+@@ -84,7 +84,7 @@
+ }
+ }
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ flags_t ulFlag = ID3TT_ALL;
+ gengetopt_args_info args;
+diff -Naur id3lib-3.8.3-orig/examples/demo_info.cpp id3lib-3.8.3/examples/demo_info.cpp
+--- id3lib-3.8.3-orig/examples/demo_info.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_info.cpp 2008-03-05 18:27:40.000000000 -0600
+@@ -309,7 +309,7 @@
+
+ #define DEBUG
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ ID3D_INIT_DOUT();
+
+diff -Naur id3lib-3.8.3-orig/examples/demo_tag.cpp id3lib-3.8.3/examples/demo_tag.cpp
+--- id3lib-3.8.3-orig/examples/demo_tag.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_tag.cpp 2008-03-05 18:31:20.000000000 -0600
+@@ -46,7 +46,7 @@
+ os << "v2";
+ }
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ int ulFlag = ID3TT_ID3;
+ ID3D_INIT_DOUT();
+diff -Naur id3lib-3.8.3-orig/examples/demo_copy.cpp id3lib-3.8.3/examples/demo_copy.cpp
+--- id3lib-3.8.3-orig/examples/demo_copy.cpp 2003-03-01 18:23:00.000000000 -0600
++++ id3lib-3.8.3/examples/demo_copy.cpp 2008-03-05 18:32:44.000000000 -0600
+@@ -81,7 +81,7 @@
+ }
+ }
+
+-int main( unsigned int argc, char * const argv[])
++int main( int argc, char * const argv[])
+ {
+ int ulFlag = ID3TT_ID3;
+ ID3D_INIT_DOUT();
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-security.patch b/media-libs/id3lib/files/id3lib-3.8.3-security.patch
new file mode 100644
index 0000000..e56d32c
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-security.patch
@@ -0,0 +1,50 @@
+diff -ur id3lib-3.8.3.orig/src/tag_file.cpp id3lib-3.8.3/src/tag_file.cpp
+--- id3lib-3.8.3.orig/src/tag_file.cpp 2003-03-02 02:23:00.000000000 +0200
++++ id3lib-3.8.3/src/tag_file.cpp 2007-08-20 19:40:16.000000000 +0300
+@@ -242,8 +242,8 @@
+ strcpy(sTempFile, filename.c_str());
+ strcat(sTempFile, sTmpSuffix.c_str());
+
+-#if ((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
+- // This section is for Windows folk && gcc 3.x folk
++#if !defined(HAVE_MKSTEMP)
++ // This section is for Windows folk
+ fstream tmpOut;
+ createFile(sTempFile, tmpOut);
+
+@@ -257,7 +257,7 @@
+ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+-#else //((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#else //!defined(HAVE_MKSTEMP)
+
+ // else we gotta make a temp file, copy the tag into it, copy the
+ // rest of the old file after the tag, delete the old file, rename
+@@ -270,7 +270,7 @@
+ //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file");
+ }
+
+- ofstream tmpOut(fd);
++ ofstream tmpOut(sTempFile);
+ if (!tmpOut)
+ {
+ tmpOut.close();
+@@ -285,14 +285,14 @@
+ uchar tmpBuffer[BUFSIZ];
+ while (file)
+ {
+- file.read(tmpBuffer, BUFSIZ);
++ file.read((char *)tmpBuffer, BUFSIZ);
+ size_t nBytes = file.gcount();
+- tmpOut.write(tmpBuffer, nBytes);
++ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+ close(fd); //closes the file
+
+-#endif ////((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#endif ////!defined(HAVE_MKSTEMP)
+
+ tmpOut.close();
+ file.close();
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-test_io.patch b/media-libs/id3lib/files/id3lib-3.8.3-test_io.patch
new file mode 100644
index 0000000..b4a0d24
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-test_io.patch
@@ -0,0 +1,10 @@
+--- id3lib-3.8.3/examples/test_io.cpp.orig 2004-09-21 23:40:48.398826320 +0200
++++ id3lib-3.8.3/examples/test_io.cpp 2004-09-21 23:40:55.408760648 +0200
+@@ -16,6 +16,7 @@
+ using std::cerr;
+
+ using namespace dami;
++using namespace std;
+
+ int
+ main(size_t argc, const char** argv)
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-unicode16.patch b/media-libs/id3lib/files/id3lib-3.8.3-unicode16.patch
new file mode 100644
index 0000000..b05d2cf
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-unicode16.patch
@@ -0,0 +1,39 @@
+diff -ruN id3lib-3.8.3.orig/ChangeLog id3lib-3.8.3/ChangeLog
+--- id3lib-3.8.3.orig/ChangeLog 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/ChangeLog 2006-02-22 00:33:59.946214472 +0100
+@@ -1,3 +1,8 @@
++2006-02-17 Jerome Couderc
++
++ * Patch from Spoon to fix UTF-16 writing bug
++ http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++
+ 2003-03-02 Sunday 17:38 Thijmen Klok <thijmen@id3lib.org>
+
+ * THANKS (1.20): added more people
+diff -ruN id3lib-3.8.3.orig/src/io_helpers.cpp id3lib-3.8.3/src/io_helpers.cpp
+--- id3lib-3.8.3.orig/src/io_helpers.cpp 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3/src/io_helpers.cpp 2006-02-22 00:35:02.926639992 +0100
+@@ -363,11 +363,22 @@
+ // Write the BOM: 0xFEFF
+ unicode_t BOM = 0xFEFF;
+ writer.writeChars((const unsigned char*) &BOM, 2);
++ // Patch from Spoon : 2004-08-25 14:17
++ // http://sourceforge.net/tracker/index.php?func=detail&aid=1016290&group_id=979&atid=300979
++ // Wrong code
++ //for (size_t i = 0; i < size; i += 2)
++ //{
++ // unicode_t ch = (data[i] << 8) | data[i+1];
++ // writer.writeChars((const unsigned char*) &ch, 2);
++ //}
++ // Right code
++ unsigned char *pdata = (unsigned char *) data.c_str();
+ for (size_t i = 0; i < size; i += 2)
+ {
+- unicode_t ch = (data[i] << 8) | data[i+1];
++ unicode_t ch = (pdata[i] << 8) | pdata[i+1];
+ writer.writeChars((const unsigned char*) &ch, 2);
+ }
++ // End patch
+ }
+ return writer.getCur() - beg;
+ }
diff --git a/media-libs/id3lib/files/id3lib-3.8.3-zlib.patch b/media-libs/id3lib/files/id3lib-3.8.3-zlib.patch
new file mode 100644
index 0000000..177320b
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-3.8.3-zlib.patch
@@ -0,0 +1,23 @@
+diff -Naur id3lib-3.8.3.orig/Makefile.am id3lib-3.8.3/Makefile.am
+--- id3lib-3.8.3.orig/Makefile.am 2003-03-01 16:23:00.000000000 -0800
++++ id3lib-3.8.3/Makefile.am 2004-09-12 19:05:39.564456828 -0700
+@@ -28,7 +28,7 @@
+ endif
+
+ SUBDIRS = . m4 $(zlib_subdir) doc include id3com src examples
+-DIST_SUBDIRS = . m4 zlib doc include id3com src examples prj libprj
++DIST_SUBDIRS = . m4 $(zlib_subdir) doc include id3com src examples prj libprj
+
+ INCLUDES = @ID3LIB_DEBUG_FLAGS@
+
+diff -Naur id3lib-3.8.3.orig/src/Makefile.am id3lib-3.8.3/src/Makefile.am
+--- id3lib-3.8.3.orig/src/Makefile.am 2003-03-01 16:23:00.000000000 -0800
++++ id3lib-3.8.3/src/Makefile.am 2004-09-12 19:08:30.814149521 -0700
+@@ -77,6 +77,7 @@
+ endif
+
+ libid3_la_LDFLAGS = \
++ -lz \
+ -version-info $(LT_VERSION) \
+ -release $(LT_RELEASE) \
+ -export-dynamic
diff --git a/media-libs/id3lib/files/id3lib-ds-rcc.patch b/media-libs/id3lib/files/id3lib-ds-rcc.patch
new file mode 100644
index 0000000..90f770d
--- /dev/null
+++ b/media-libs/id3lib/files/id3lib-ds-rcc.patch
@@ -0,0 +1,169 @@
+diff -dPNur id3lib-3.8.3-orig/configure.in id3lib-3.8.3-new/configure.in
+--- id3lib-3.8.3-orig/configure.in 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3-new/configure.in 2005-07-19 22:03:12.000000000 +0200
+@@ -217,6 +217,20 @@
+ LIBS="$LIBS $ICONV_LIB"
+ fi
+
++AC_CHECK_LIB(rcc, rccInit,[
++ AC_CHECK_HEADERS(librcc.h,[
++ LIBRCC_LIBS="-lrcc"
++ LIBRCC_INCLUDES="-DHAVE_LIBRCC"
++ ],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])
++AC_SUBST(LIBRCC_LIBS)
++AC_SUBST(LIBRCC_INCLUDES)
++
+ dnl Check for c++ features
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+@@ -315,5 +329,5 @@
+ src/Makefile \
+ examples/Makefile \
+ prj/Makefile \
+- libprj/Makefile
++ libprj/Makefile
+ )
+diff -dPNur id3lib-3.8.3-orig/src/field_string_ascii.cpp id3lib-3.8.3-new/src/field_string_ascii.cpp
+--- id3lib-3.8.3-orig/src/field_string_ascii.cpp 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3-new/src/field_string_ascii.cpp 2005-07-19 21:34:12.000000000 +0200
+@@ -27,6 +27,7 @@
+ #include "field_impl.h"
+ #include "id3/utils.h" // has <config.h> "id3/id3lib_streams.h" "id3/globals.h" "id3/id3lib_strings.h"
+ #include "io_helpers.h"
++#include "rccpatch.h"
+
+ using namespace dami;
+
+@@ -92,8 +93,15 @@
+ buffer != NULL && maxLength > 0)
+ {
+ String data = this->GetText();
++ char *recoded = rccPatchRecode(data.data(), (size_t)data.size(), (size_t*)&size);
++ if (recoded) {
++ size = dami::min(maxLength, size);
++ ::memcpy(buffer, recoded, size);
++ free(recoded);
++ } else {
+ size = dami::min(maxLength, data.size());
+ ::memcpy(buffer, data.data(), size);
++ }
+ if (size < maxLength)
+ {
+ buffer[size] = '\0';
+diff -dPNur id3lib-3.8.3-orig/src/Makefile.am id3lib-3.8.3-new/src/Makefile.am
+--- id3lib-3.8.3-orig/src/Makefile.am 2003-03-02 01:23:00.000000000 +0100
++++ id3lib-3.8.3-new/src/Makefile.am 2005-07-19 21:38:31.000000000 +0200
+@@ -17,7 +17,7 @@
+ zlib_include =
+ endif
+
+-INCLUDES = \
++INCLUDES = @LIBRCC_INCLUDES@ \
+ @ID3LIB_DEBUG_FLAGS@ -I$(top_srcdir)/include/id3 -I$(top_srcdir)/include $(zlib_include)
+
+ noinst_HEADERS = \
+@@ -31,7 +31,8 @@
+ header_tag.h \
+ mp3_header.h \
+ tag_impl.h \
+- spec.h
++ spec.h \
++ rccpatch.h
+
+ id3lib_sources = \
+ c_wrapper.cpp \
+@@ -66,7 +67,8 @@
+ tag_parse_v1.cpp \
+ tag_render.cpp \
+ utils.cpp \
+- writers.cpp
++ writers.cpp \
++ rccpatch.cpp
+
+ lib_LTLIBRARIES = libid3.la
+
+@@ -77,6 +79,7 @@
+ endif
+
+ libid3_la_LDFLAGS = \
++ @LIBRCC_LIBS@ \
+ -lz \
+ -version-info $(LT_VERSION) \
+ -release $(LT_RELEASE) \
+diff -dPNur id3lib-3.8.3-orig/src/rccpatch.cpp id3lib-3.8.3-new/src/rccpatch.cpp
+--- id3lib-3.8.3-orig/src/rccpatch.cpp 1970-01-01 01:00:00.000000000 +0100
++++ id3lib-3.8.3-new/src/rccpatch.cpp 2005-07-19 22:10:47.000000000 +0200
+@@ -0,0 +1,60 @@
++#include <stdlib.h>
++
++#include "../config.h"
++
++#ifdef HAVE_LIBRCC
++# include <librcc.h>
++#endif /* HAVE_LIBRCC */
++
++
++#ifdef HAVE_LIBRCC
++# define ID3_CLASS 0
++# define OUT_CLASS 1
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int rcc_initialized = 0;
++#endif /* HAVE_LIBRCC */
++
++
++void rccPatchFree() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++void rccPatchInit() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++#endif /* HAVE_LIBRCC */
++}
++
++static void rccPatchTryInit() {
++#ifdef HAVE_LIBRCC
++ if (!rcc_initialized) {
++ rccPatchInit();
++ if (rcc_initialized) atexit(rccPatchFree);
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++char *rccPatchRecode(const char *str, size_t len, size_t *rlen) {
++#ifdef HAVE_LIBRCC
++ char *res;
++ rccPatchTryInit();
++ return rccSizedRecode(NULL, ID3_CLASS, OUT_CLASS, str, len, rlen);
++#else
++ return NULL;
++#endif /* HAVE_LIBRCC */
++}
+diff -dPNur id3lib-3.8.3-orig/src/rccpatch.h id3lib-3.8.3-new/src/rccpatch.h
+--- id3lib-3.8.3-orig/src/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ id3lib-3.8.3-new/src/rccpatch.h 2005-07-19 21:34:51.000000000 +0200
+@@ -0,0 +1,3 @@
++void rccPatchFree();
++void rccPatchInit();
++char *rccPatchRecode(const char *str, size_t len, size_t *rlen);
diff --git a/media-libs/id3lib/id3lib-3.8.3-r5.ebuild b/media-libs/id3lib/id3lib-3.8.3-r5.ebuild
new file mode 100644
index 0000000..8ea2a33
--- /dev/null
+++ b/media-libs/id3lib/id3lib-3.8.3-r5.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+MY_P=${P/_/}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="Id3 library for C/C++"
+HOMEPAGE="http://id3lib.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86"
+IUSE="doc rcc"
+
+RDEPEND="sys-libs/zlib
+ rcc? ( app-i18n/librcc )"
+
+DEPEND="${RDEPEND}
+ sys-devel/autoconf
+ sys-devel/libtool"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/${P}-zlib.patch
+ epatch ${FILESDIR}/${P}-test_io.patch
+ use rcc && ( epatch ${FILESDIR}/id3lib-ds-rcc.patch || die )
+
+ export WANT_AUTOMAKE=1.6
+ export WANT_AUTOCONF=2.5
+
+ libtoolize --force --copy || die
+ aclocal || die
+ automake || die
+ autoconf || die
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die "Install failed"
+ dosym /usr/$(get_libdir)/libid3-3.8.so.3 /usr/$(get_libdir)/libid3-3.8.so.0.0.0
+ dosym /usr/$(get_libdir)/libid3-3.8.so.0.0.0 /usr/$(get_libdir)/libid3-3.8.so.0
+
+ dodoc AUTHORS ChangeLog HISTORY INSTALL README THANKS TODO
+
+ # some example programs to be placed in docs dir.
+ if use doc; then
+ cp -a examples ${D}/usr/share/doc/${PF}/examples
+ cd ${D}/usr/share/doc/${PF}/examples
+ make distclean
+ fi
+}
diff --git a/media-libs/id3lib/id3lib-3.8.3-r8.ebuild b/media-libs/id3lib/id3lib-3.8.3-r8.ebuild
new file mode 100644
index 0000000..ff6998a
--- /dev/null
+++ b/media-libs/id3lib/id3lib-3.8.3-r8.ebuild
@@ -0,0 +1,66 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/id3lib/id3lib-3.8.3-r7.ebuild,v 1.1 2008/07/29 15:04:05 yngwin Exp $
+
+WANT_AUTOCONF="latest"
+WANT_AUTOMAKE="latest"
+
+inherit eutils autotools
+
+MY_P=${P/_/}
+S="${WORKDIR}"/${MY_P}
+
+DESCRIPTION="Id3 library for C/C++"
+HOMEPAGE="http://id3lib.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd"
+IUSE="doc rcc"
+
+RESTRICT="test"
+
+RDEPEND="sys-libs/zlib
+ rcc? ( app-i18n/librcc )"
+
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-zlib.patch
+ epatch "${FILESDIR}"/${P}-test_io.patch
+ epatch "${FILESDIR}"/${P}-autoconf259.patch
+ epatch "${FILESDIR}"/${P}-doxyinput.patch
+ epatch "${FILESDIR}"/${P}-unicode16.patch
+ epatch "${FILESDIR}"/${P}-gcc-4.3.patch
+
+ # Security fix for bug 189610.
+ epatch "${FILESDIR}"/${P}-security.patch
+
+ use rcc && ( epatch "${FILESDIR}"/id3lib-ds-rcc.patch || die )
+
+ AT_M4DIR="${S}/m4" eautoreconf
+}
+
+src_compile() {
+ econf || die "econf failed."
+ emake || die "emake failed."
+
+ if use doc; then
+ cd doc/
+ doxygen Doxyfile || die "doxygen failed"
+ fi
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "Install failed"
+ dodoc AUTHORS ChangeLog HISTORY README THANKS TODO
+
+ if use doc; then
+ dohtml -r doc
+ fi
+}
diff --git a/media-libs/imlib/Manifest b/media-libs/imlib/Manifest
new file mode 100644
index 0000000..8ef9bf5
--- /dev/null
+++ b/media-libs/imlib/Manifest
@@ -0,0 +1,9 @@
+AUX imlib-1.9.15-asneeded.patch 1120 SHA256 60f8a3f9bee11c0987b663ec86d48f208d7d96f35463f9babdd43389f466ce94 SHA512 d0cb21e5b7ecb928d25a6afbedbd40e5e2374ea33a3d546efdd65b26c0877d001985710462604c71a507c30f345f7e1a316719208e2d06c4a740e640a9b07cb3 WHIRLPOOL fd8c373299dddab50acd04b232df4780d6fb90e8a095ca2d09e6f624bcaf994eb56746ad2aef52e7f7ca872d4c8560547c0b44634e68974a4203b980447e5762
+AUX imlib-1.9.15-bpp16-CVE-2007-3568.patch 457 SHA256 f0097c1db200b19a3e8f06d85765dd8b8f757dd0bc6fd9bafa0c31cd9c14d8ec SHA512 545936b5620fea74993a079db0555780d612d38865b56845330e36b7d04327fd93eb31b2d7841cd050c54ca450e305e923fb7d779c9c9948158041ec2734cf2b WHIRLPOOL 6ab4e66d57fca46c138600189a1184475cd3c2cf3af579dd569c15c979f404e1a48e90532ee8b2f2320f5f63f64eab28625c84c7096a74e9a07b98d00518fbcc
+AUX imlib-1.9.15-fix-rendering.patch 3263 SHA256 7f5f8967ec52658e776a0a60a3a3c93d367ccf877d92569a9313e78bbd510604 SHA512 4e94da8de3f18b711bdfcf4184dbc2220ef566aa61b72c6139e490e55051b3090dc5330929b218f6fab1764c8c2ee8acdd630a0c64010b56b4b4f1b8c55c3f89 WHIRLPOOL d25d7be59ad63e97a8f12baf41532d1da4ea0b8cb004074c681e08e5c8c473fa4b68d46285e5cf7361601bb99d42b523c1299ffe5bdd7c69b120d8559de48d03
+AUX imlib-1.9.15-libpng15.patch 3785 SHA256 0306f872438822888d436f9e151e4875ffa3ee1b261f7a092738ea87e4ca589b SHA512 e7a6d48ef04fbcfcab998e6968130796ab3da1fd9def14ab2ccc713e0956f1f2be3f3a8f680ded5f00cb7ac9ea31d2f94de04aaa039ec5b03cece71f36f14294 WHIRLPOOL 72bc3ce8fa6bb86cbac53e6a0e2a346bc8906cbcec6e43f2f29f56e47d8fc0a2e1c13dbd43e079e77e7c450e1b5d6bc43e10c1c369d597a7d19b5018384e26ff
+AUX imlib-1.9.15.patch 2253 SHA256 43dd12dae7913475f968f35a4fa4b1ef4670451e58c712cbd6e5460f20fc9197 SHA512 4de2fb6e28a6b9da3f474153ef618aad199d1fe6e365670d3d2070afa5b123597f108cac0972454dbcf38b8d84a9a6eb8f011d92a9d754248af41e3abd799b6d WHIRLPOOL d5417943c318d6d9371f5826ccaa6ccee9d84ac128db5ea46ae7a570e9a64fba2de7ff0fbc6a935026defc5ef0c0a45c62ca0459c0f1211c96cf1451cc653bb2
+AUX imlib-security.patch 13040 SHA256 d67a7faa2dba8d361cf25b6fc8125c1da92f25b612bffe909daacdeda577dd57 SHA512 a75537267e9e276920fbc0360cd4832f727c6c9857401889bdb1466f3088c98e5ea2ef84a94a5873a3c12dda0b9aed36a5e2039fece87e51154a3b773d97aa5c WHIRLPOOL 5f892847f9aa86896ecefc50d77575066a4ae1e573a9d631247a104a8d51d1f907cfb405a5d19f3a738912140900843c916661399e469b5f44c5ac5efdab6121
+DIST gtk-1-for-imlib.m4.bz2 2742 SHA256 e024d822d64819e23f7ad7c8283086ffd1e112b859b4669f1624dda1c56d8c47 SHA512 83708af1c7d7cf10960463b785bad096d77e985be5907dd59c73c2cb86c4b89fb5453a02ffddca1519185b91d205dbd96c4c4c1df4da4b67e64bad413cd8a40e WHIRLPOOL 5490f53e1559b9f505cd0ac4b8d0a9c74d8cb323daf4e048b4123725b1f1c12dae936595a0173cdb9d74e2377f6c8942d14e783977d91e6d920342bd5d2e724e
+DIST imlib-1.9.15.tar.bz2 683242 SHA256 4e6a270308a9ae16586bfc133c1a3dfb2e56f431edb66aaa3a80e36e5ed84ce0 SHA512 f50d9141b3c54b44921aa09c0a5ea848aefaa904efdd6da132dace42604671f8dbd3e4b71a596f054f0db4525ba2002864b5e5b21f8805cf1b5514b661ac254a WHIRLPOOL b9127c602a69eb52ab2bbe66733e8d35c8311a6decf569dd3d63dcff8d1d69ca8ed5572fac4ab795685beef46fb039a68325b70e697e7257d4ee92ad2c4edde2
+EBUILD imlib-1.9.15-r99.ebuild 1690 SHA256 7ba14afc388532d466802c01c8e3c94a125ab0436db2098c3902c47d6bfc687d SHA512 ffd39f9e7b41c9bbd9b8039f6a4a998090f000f4666a683d9589e2cd9739bbbea5c780254513d38d39767f6c637df1c98d5453bac55ecfb235139c6781f6c5f3 WHIRLPOOL 5fcda324cb359a0c0ec3f69424af1ccea63f75ab54b6934771802cbaab3a24339ef40f94aba6a8d9c9bb4cac3066b5c97ca6ee9a03ab1d851715d722cbd1ab7b
diff --git a/media-libs/imlib/files/imlib-1.9.15-asneeded.patch b/media-libs/imlib/files/imlib-1.9.15-asneeded.patch
new file mode 100644
index 0000000..3b7dd8a
--- /dev/null
+++ b/media-libs/imlib/files/imlib-1.9.15-asneeded.patch
@@ -0,0 +1,38 @@
+This code is broken with the newer libtool. Just dropping it is more or less
+safe as in any case if libtool does not supports shared libraries it'll issue
+an error...
+
+Adding include is necessary for gcc-4.3.
+
+--- configure.in 2008-07-16 09:18:35 +0000
++++ configure.in 2008-07-16 09:18:43 +0000
+@@ -61,6 +61,7 @@
+ AC_TRY_RUN([
+ #include <glib.h>
+ #include <gmodule.h>
++#include <stdlib.h>
+ main ()
+ {
+ if (g_module_supported ())
+@@ -74,21 +74,6 @@
+ CFLAGS="$oCFLAGS"
+ fi
+
+-dnl Now we check to see if our libtool supports shared lib deps
+-dnl (in a rather ugly way even)
+-builddir=`pwd`
+-if $dynworks; then
+- imlib_libtool_config="$builddir/libtool --config"
+- imlib_deplibs_check=`$imlib_libtool_config | \
+- grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
+- sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
+- if test "x$imlib_deplibs_check" = "xnone" || \
+- test "x$imlib_deplibs_check" = "xunknown" || \
+- test "x$imlib_deplibs_check" = "x"; then
+- dynworks=false
+- fi
+-fi
+-
+ if $dynworks; then
+ AC_DEFINE(USE_GMODULE, 1, [ ])
+ GMODULE_LIBS="`glib-config --libs gmodule`"
diff --git a/media-libs/imlib/files/imlib-1.9.15-bpp16-CVE-2007-3568.patch b/media-libs/imlib/files/imlib-1.9.15-bpp16-CVE-2007-3568.patch
new file mode 100644
index 0000000..94595ff
--- /dev/null
+++ b/media-libs/imlib/files/imlib-1.9.15-bpp16-CVE-2007-3568.patch
@@ -0,0 +1,11 @@
+--- Imlib/load.c.orig 2007-08-13 23:06:20.000000000 -0300
++++ Imlib/load.c 2007-08-13 23:06:51.000000000 -0300
+@@ -645,7 +645,7 @@
+ planes = (int)word;
+ fread(&word, 2, 1, file);
+ bpp = (int)word;
+- if (bpp != 1 && bpp != 4 && bpp != 8 && bpp && 16 && bpp != 24 && bpp != 32)
++ if (bpp != 1 && bpp != 4 && bpp != 8 && bpp != 16 && bpp != 24 && bpp != 32)
+ {
+ fprintf(stderr, "IMLIB ERROR: unknown bitdepth in file\n");
+ return NULL;
diff --git a/media-libs/imlib/files/imlib-1.9.15-fix-rendering.patch b/media-libs/imlib/files/imlib-1.9.15-fix-rendering.patch
new file mode 100644
index 0000000..6212ed3
--- /dev/null
+++ b/media-libs/imlib/files/imlib-1.9.15-fix-rendering.patch
@@ -0,0 +1,105 @@
+Michel Dänzer <daenzer AT debian.org>
+
+* The boolean value returned via the last parameter to XShmQueryVersion()
+ isn't honoured everywhere.
+* The init functions that take parameters allow the caller to enable shared
+ pixmaps when they aren't supported (or disabled by configuration files).
+
+
+These result in incorrect rendering when the MIT-SHM extension doesn't support
+shared pixmaps, e.g. using EXA with current versions of Xorg.
+
+http://bugs.gentoo.org/show_bug.cgi?id=197489
+
+diff -up -ru imlib-1.9.15.orig/gdk_imlib/misc.c imlib-1.9.15/gdk_imlib/misc.c
+--- imlib-1.9.15.orig/gdk_imlib/misc.c 2002-03-04 18:06:32.000000000 +0100
++++ imlib-1.9.15/gdk_imlib/misc.c 2007-10-28 14:00:04.000000000 +0100
+@@ -674,6 +674,10 @@ gdk_imlib_init_params(GdkImlibInitParams
+ visual = gdk_rgb_get_visual();
+ id->x.visual = GDK_VISUAL_XVISUAL(visual); /* the visual type */
+ id->x.depth = visual->depth; /* the depth of the screen in bpp */
++
++ id->x.shm = 0;
++ id->x.shmp = 0;
++ id->max_shm = 0;
+ #ifdef HAVE_SHM
+ if (XShmQueryExtension(id->x.disp))
+ {
+@@ -689,17 +693,14 @@ gdk_imlib_init_params(GdkImlibInitParams
+ id->x.last_xim = NULL;
+ id->x.last_sxim = NULL;
+ id->max_shm = 0x7fffffff;
+- if (XShmPixmapFormat(id->x.disp) == ZPixmap)
++ if ((XShmPixmapFormat(id->x.disp) == ZPixmap) &&
++ (pm == True))
+ id->x.shmp = 1;
+ }
+ }
+ }
+- else
+ #endif
+- {
+- id->x.shm = 0;
+- id->x.shmp = 0;
+- }
++
+ id->cache.on_image = 0;
+ id->cache.size_image = 0;
+ id->cache.num_image = 0;
+@@ -935,8 +936,8 @@ gdk_imlib_init_params(GdkImlibInitParams
+ }
+ if (p->flags & PARAMS_SHAREDPIXMAPS)
+ {
+- if (id->x.shm)
+- id->x.shmp = p->sharedpixmaps;
++ if (!p->sharedpixmaps)
++ id->x.shmp = 0;
+ }
+ if (p->flags & PARAMS_PALETTEOVERRIDE)
+ override = p->paletteoverride;
+diff -up -ru imlib-1.9.15.orig/Imlib/misc.c imlib-1.9.15/Imlib/misc.c
+--- imlib-1.9.15.orig/Imlib/misc.c 2004-09-21 02:22:59.000000000 +0200
++++ imlib-1.9.15/Imlib/misc.c 2007-10-28 14:00:23.000000000 +0100
+@@ -675,6 +675,10 @@ Imlib_init_with_params(Display * disp, I
+ id->x.root = DefaultRootWindow(disp); /* the root window id */
+ id->x.visual = DefaultVisual(disp, id->x.screen); /* the visual type */
+ id->x.depth = DefaultDepth(disp, id->x.screen); /* the depth of the screen in bpp */
++
++ id->x.shm = 0;
++ id->x.shmp = 0;
++ id->max_shm = 0;
+ #ifdef HAVE_SHM
+ if (XShmQueryExtension(id->x.disp))
+ {
+@@ -690,17 +694,14 @@ Imlib_init_with_params(Display * disp, I
+ id->x.last_xim = NULL;
+ id->x.last_sxim = NULL;
+ id->max_shm = 0x7fffffff;
+- if (XShmPixmapFormat(id->x.disp) == ZPixmap)
++ if ((XShmPixmapFormat(id->x.disp) == ZPixmap &&
++ (pm == True)))
+ id->x.shmp = 1;
+ }
+ }
+ }
+- else
+ #endif
+- {
+- id->x.shm = 0;
+- id->x.shmp = 0;
+- }
++
+ id->cache.on_image = 0;
+ id->cache.size_image = 0;
+ id->cache.num_image = 0;
+@@ -952,8 +953,8 @@ Imlib_init_with_params(Display * disp, I
+ }
+ if (p->flags & PARAMS_SHAREDPIXMAPS)
+ {
+- if (id->x.shm)
+- id->x.shmp = p->sharedpixmaps;
++ if (!p->sharedpixmaps)
++ id->x.shmp = 0;
+ }
+ if (p->flags & PARAMS_PALETTEOVERRIDE)
+ override = p->paletteoverride;
diff --git a/media-libs/imlib/files/imlib-1.9.15-libpng15.patch b/media-libs/imlib/files/imlib-1.9.15-libpng15.patch
new file mode 100644
index 0000000..7837cd4
--- /dev/null
+++ b/media-libs/imlib/files/imlib-1.9.15-libpng15.patch
@@ -0,0 +1,142 @@
+--- gdk_imlib/io-png.c
++++ gdk_imlib/io-png.c
+@@ -40,13 +40,13 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -275,13 +275,13 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -301,6 +301,9 @@
+ /* Setup Translators */
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
+ png_set_expand(png_ptr);
++ if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
++ png_set_expand(png_ptr);
++
+ png_set_strip_16(png_ptr);
+ png_set_packing(png_ptr);
+ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
+@@ -440,13 +443,13 @@
+ return NULL;
+ }
+
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -635,7 +638,7 @@
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return 0;
+ }
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ fclose(f);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+--- Imlib/load.c
++++ Imlib/load.c
+@@ -197,12 +197,12 @@
+ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return NULL;
+ }
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+@@ -260,7 +260,8 @@
+ png_read_image(png_ptr, lines);
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ ptr = data;
+- if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
++ if (color_type == PNG_COLOR_TYPE_GRAY
++ || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+ {
+ for (y = 0; y < *h; y++)
+ {
+@@ -285,6 +286,7 @@
+ }
+ }
+ }
++#if 0
+ else if (color_type == PNG_COLOR_TYPE_GRAY)
+ {
+ for (y = 0; y < *h; y++)
+@@ -300,6 +302,7 @@
+ }
+ }
+ }
++#endif
+ else
+ {
+ for (y = 0; y < *h; y++)
+--- Imlib/save.c
++++ Imlib/save.c
+@@ -342,7 +342,7 @@
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+ return 0;
+ }
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ fclose(f);
+ png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+--- Imlib/utils.c
++++ Imlib/utils.c
+@@ -1981,14 +1981,13 @@
+ png_destroy_read_struct(&png_ptr, NULL, NULL);
+ return NULL;
+ }
+-
+- if (setjmp(png_ptr->jmpbuf))
++ if (setjmp(png_jmpbuf(png_ptr)))
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
+ }
+
+- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)
++ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_RGB_ALPHA)
+ {
+ png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+ return NULL;
diff --git a/media-libs/imlib/files/imlib-1.9.15.patch b/media-libs/imlib/files/imlib-1.9.15.patch
new file mode 100644
index 0000000..c78aea9
--- /dev/null
+++ b/media-libs/imlib/files/imlib-1.9.15.patch
@@ -0,0 +1,70 @@
+diff -ur imlib-1.9.15.orig/configure.in imlib-1.9.15/configure.in
+--- imlib-1.9.15.orig/configure.in 2004-09-23 04:13:45.000000000 +0300
++++ imlib-1.9.15/configure.in 2007-02-05 23:43:18.000000000 +0200
+@@ -17,11 +17,26 @@
+ dnl incase it is broken for example.
+ AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]], echo $enable_shm, enable_shm="yes")
+
++AC_ARG_ENABLE(gdk, [ --enable-gdk enable gdk_imlib compilation [default=yes]],[
++ if test x$enableval = xyes; then
++ disable_gdk="no"
++ else
++ disable_gdk="yes"
++ fi],disable_gdk=no)
++
++if test x$disable_gdk = xno; then
++ AC_MSG_RESULT(no)
++
+ AM_PATH_GTK(1.2.1,[
+ GDK_IMLIB="gdk_imlib utils"],[
+ GDK_IMLIB=""
+ AC_MSG_WARN([*** gdk_imlib will not be built ***])])
+
++else
++ AC_MSG_RESULT(yes)
++ GDK_IMLIB=""
++fi
++
+ AC_MSG_CHECKING(whether to build gmodulized imlib)
+
+ AC_ARG_ENABLE(modules, [ --disable-modules Disables dynamic module loading],[
+diff -ur imlib-1.9.15.orig/imlib-config.in imlib-1.9.15/imlib-config.in
+--- imlib-1.9.15.orig/imlib-config.in 2004-08-27 19:03:11.000000000 +0300
++++ imlib-1.9.15/imlib-config.in 2007-02-05 23:46:34.000000000 +0200
+@@ -46,15 +46,9 @@
+ echo @VERSION@
+ ;;
+ --cflags)
+- if test @includedir@ != /usr/include ; then
+- includes=-I@includedir@
+- fi
+ echo $includes @X_CFLAGS@
+ ;;
+ --cflags-gdk)
+- if test @includedir@ != /usr/include ; then
+- includes=-I@includedir@
+- fi
+ echo `@GTK_CONFIG@ --cflags` $includes @X_CFLAGS@
+ ;;
+ --libs)
+diff -ur imlib-1.9.15.orig/imlib.m4 imlib-1.9.15/imlib.m4
+--- imlib-1.9.15.orig/imlib.m4 2004-08-27 19:03:11.000000000 +0300
++++ imlib-1.9.15/imlib.m4 2007-02-05 23:42:57.000000000 +0200
+@@ -6,7 +6,7 @@
+ dnl AM_PATH_IMLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+ dnl Test for IMLIB, and define IMLIB_CFLAGS and IMLIB_LIBS
+ dnl
+-AC_DEFUN(AM_PATH_IMLIB,
++AC_DEFUN([AM_PATH_IMLIB],
+ [dnl
+ dnl Get the cflags and libraries from the imlib-config script
+ dnl
+@@ -164,7 +164,7 @@
+ ])
+
+ # Check for gdk-imlib
+-AC_DEFUN(AM_PATH_GDK_IMLIB,
++AC_DEFUN([AM_PATH_GDK_IMLIB],
+ [dnl
+ dnl Get the cflags and libraries from the imlib-config script
+ dnl
diff --git a/media-libs/imlib/files/imlib-security.patch b/media-libs/imlib/files/imlib-security.patch
new file mode 100644
index 0000000..c820270
--- /dev/null
+++ b/media-libs/imlib/files/imlib-security.patch
@@ -0,0 +1,510 @@
+diff -urN imlib-1.9.13.orig/Imlib/load.c imlib-1.9.13/Imlib/load.c
+--- imlib-1.9.13.orig/Imlib/load.c Wed Mar 13 19:06:29 2002
++++ imlib-1.9.13/Imlib/load.c Thu Sep 16 17:21:01 2004
+@@ -4,6 +4,8 @@
+ #include "Imlib_private.h"
+ #include <setjmp.h>
+
++#define G_MAXINT ((int) 0x7fffffff)
++
+ /* Split the ID - damages input */
+
+ static char *
+@@ -41,13 +43,17 @@
+
+ /*
+ * Make sure we don't wrap on our memory allocations
++ * we check G_MAXINT/4 because rend.c malloc's w * h * bpp
++ * + 3 is safety margin
+ */
+
+ void * _imlib_malloc_image(unsigned int w, unsigned int h)
+ {
+- if( w > 32767 || h > 32767)
+- return NULL;
+- return malloc(w * h * 3);
++ if (w <= 0 || w > 32767 ||
++ h <= 0 || h > 32767 ||
++ h >= (G_MAXINT/4 - 1) / w)
++ return NULL;
++ return malloc(w * h * 3 + 3);
+ }
+
+ #ifdef HAVE_LIBJPEG
+@@ -360,7 +366,9 @@
+ npix = ww * hh;
+ *w = (int)ww;
+ *h = (int)hh;
+- if(ww > 32767 || hh > 32767)
++ if (ww <= 0 || ww > 32767 ||
++ hh <= 0 || hh > 32767 ||
++ hh >= (G_MAXINT/sizeof(uint32)) / ww)
+ {
+ TIFFClose(tif);
+ return NULL;
+@@ -463,7 +471,7 @@
+ }
+ *w = gif->Image.Width;
+ *h = gif->Image.Height;
+- if (*h > 32767 || *w > 32767)
++ if (*h <= 0 || *h > 32767 || *w <= 0 || *w > 32767)
+ {
+ return NULL;
+ }
+@@ -965,7 +973,12 @@
+ comment = 0;
+ quote = 0;
+ context = 0;
++ memset(lookup, 0, sizeof(lookup));
++
+ line = malloc(lsz);
++ if (!line)
++ return NULL;
++
+ while (!done)
+ {
+ pc = c;
+@@ -994,25 +1007,25 @@
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", w, h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM files wth colors > 32766 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM files with characters per pixel > 5 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (*w > 32767)
++ if (*w <= 0 || *w > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for file\n");
+ free(line);
+ return NULL;
+ }
+- if (*h > 32767)
++ if (*h <= 0 || *h > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for file\n");
+ free(line);
+@@ -1045,11 +1058,13 @@
+ {
+ int slen;
+ int hascolor, iscolor;
++ int space;
+
+ iscolor = 0;
+ hascolor = 0;
+ tok[0] = 0;
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ s[0] = 0;
+ len = strlen(line);
+ strncpy(cmap[j].str, line, cpp);
+@@ -1072,10 +1087,10 @@
+ {
+ if (k >= len)
+ {
+- if (col[0])
+- strcat(col, " ");
+- if (strlen(col) + strlen(s) < sizeof(col))
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strcat(col, " "), space -= 1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ if (col[0])
+ {
+@@ -1105,14 +1120,17 @@
+ }
+ }
+ }
+- strcpy(tok, s);
++ if (slen < sizeof(tok));
++ strcpy(tok, s);
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ }
+ else
+ {
+- if (col[0])
+- strcat(col, " ");
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strcat(col, " "), space -=1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ }
+ }
+@@ -1341,12 +1359,12 @@
+ sscanf(s, "%i %i", w, h);
+ a = *w;
+ b = *h;
+- if (a > 32767)
++ if (a <= 0 || a > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for file\n");
+ return NULL;
+ }
+- if (b > 32767)
++ if (b <= 0 || b > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for file\n");
+ return NULL;
+diff -urN imlib-1.9.13.orig/Imlib/utils.c imlib-1.9.13/Imlib/utils.c
+--- imlib-1.9.13.orig/Imlib/utils.c Mon Mar 4 17:45:28 2002
++++ imlib-1.9.13/Imlib/utils.c Thu Sep 16 17:21:15 2004
+@@ -1496,36 +1496,56 @@
+ context = 0;
+ ptr = NULL;
+ end = NULL;
++ memset(lookup, 0, sizeof(lookup));
+
+ while (!done)
+ {
+ line = data[count++];
++ if (!line)
++ break;
++ line = strdup(line);
++ if (!line)
++ break;
++ len = strlen(line);
++ for (i = 0; i < len; ++i)
++ {
++ c = line[i];
++ if (c < 32)
++ line[i] = 32;
++ else if (c > 127)
++ line[i] = 127;
++ }
++
+ if (context == 0)
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM data wth colors > 32766 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "IMLIB ERROR: XPM data with characters per pixel > 5 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (w > 32767)
++ if (w <= 0 || w > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image width > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (h > 32767)
++ if (h <= 0 || h > 32767)
+ {
+ fprintf(stderr, "IMLIB ERROR: Image height > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+ cmap = malloc(sizeof(struct _cmap) * ncolors);
+@@ -1533,6 +1553,7 @@
+ if (!cmap)
+ {
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->rgb_width = w;
+@@ -1542,6 +1563,7 @@
+ {
+ free(cmap);
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->alpha_data = NULL;
+@@ -1817,6 +1839,7 @@
+ }
+ if ((ptr) && ((ptr - im->rgb_data) >= w * h * 3))
+ done = 1;
++ free(line);
+ }
+ if (!transp)
+ {
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-gif.c imlib-1.9.13/gdk_imlib/io-gif.c
+--- imlib-1.9.13.orig/gdk_imlib/io-gif.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-gif.c Thu Sep 16 16:11:31 2004
+@@ -55,7 +55,7 @@
+ }
+ *w = gif->Image.Width;
+ *h = gif->Image.Height;
+- if(*h > 32767 || *w > 32767)
++ if(*h <= 0 || *h > 32767 || *w <= 0 || *w > 32767)
+ {
+ return NULL;
+ }
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-ppm.c imlib-1.9.13/gdk_imlib/io-ppm.c
+--- imlib-1.9.13.orig/gdk_imlib/io-ppm.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-ppm.c Thu Sep 16 16:13:13 2004
+@@ -53,12 +53,12 @@
+ sscanf(s, "%i %i", w, h);
+ a = *w;
+ b = *h;
+- if (a > 32767)
++ if (a <= 0 || a > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image width > 32767 pixels for file\n");
+ return NULL;
+ }
+- if (b > 32767)
++ if (b <= 0 || b > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image height > 32767 pixels for file\n");
+ return NULL;
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-tiff.c imlib-1.9.13/gdk_imlib/io-tiff.c
+--- imlib-1.9.13.orig/gdk_imlib/io-tiff.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-tiff.c Thu Sep 16 16:13:57 2004
+@@ -36,7 +36,9 @@
+ npix = ww * hh;
+ *w = (int)ww;
+ *h = (int)hh;
+- if(ww > 32767 || hh > 32767)
++ if (ww <= 0 || ww > 32767 ||
++ hh <= 0 || hh > 32767 ||
++ hh >= (G_MAXINT/sizeof(uint32)) / ww)
+ {
+ TIFFClose(tif);
+ return NULL;
+diff -urN imlib-1.9.13.orig/gdk_imlib/io-xpm.c imlib-1.9.13/gdk_imlib/io-xpm.c
+--- imlib-1.9.13.orig/gdk_imlib/io-xpm.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/io-xpm.c Thu Sep 16 17:08:24 2004
+@@ -40,8 +40,12 @@
+ context = 0;
+ i = j = 0;
+ cmap = NULL;
++ memset(lookup, 0, sizeof(lookup));
+
+ line = malloc(lsz);
++ if (!line)
++ return NULL;
++
+ while (!done)
+ {
+ pc = c;
+@@ -70,25 +74,25 @@
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", w, h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM files wth colors > 32766 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM files with characters per pixel > 5 not supported\n");
+ free(line);
+ return NULL;
+ }
+- if (*w > 32767)
++ if (*w <= 0 || *w > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image width > 32767 pixels for file\n");
+ free(line);
+ return NULL;
+ }
+- if (*h > 32767)
++ if (*h <= 0 || *h > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image height > 32767 pixels for file\n");
+ free(line);
+@@ -120,11 +124,13 @@
+ {
+ int slen;
+ int hascolor, iscolor;
++ int space;
+
+ hascolor = 0;
+ iscolor = 0;
+ tok[0] = 0;
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ s[0] = 0;
+ len = strlen(line);
+ strncpy(cmap[j].str, line, cpp);
+@@ -147,10 +153,10 @@
+ {
+ if (k >= len)
+ {
+- if (col[0])
+- strcat(col, " ");
+- if (strlen(col) + strlen(s) < sizeof(col))
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strncat(col, " ", space), space -= 1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ if (col[0])
+ {
+@@ -180,14 +186,17 @@
+ }
+ }
+ }
+- strcpy(tok, s);
++ if (slen < sizeof(tok))
++ strcpy(tok, s);
+ col[0] = 0;
++ space = sizeof(col) - 1;
+ }
+ else
+ {
+- if (col[0])
+- strcat(col, " ");
+- strcat(col, s);
++ if (col[0] && space > 0)
++ strcat(col, " "), space -= 1;
++ if (slen <= space)
++ strcat(col, s), space -= slen;
+ }
+ }
+ }
+diff -urN imlib-1.9.13.orig/gdk_imlib/misc.c imlib-1.9.13/gdk_imlib/misc.c
+--- imlib-1.9.13.orig/gdk_imlib/misc.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/misc.c Thu Sep 16 16:35:32 2004
+@@ -1355,11 +1355,16 @@
+
+ /*
+ * Make sure we don't wrap on our memory allocations
++ * we check G_MAX_INT/4 because rend.c malloc's w * h * bpp
++ * + 3 is safety margin
+ */
+
+ void *_gdk_malloc_image(unsigned int w, unsigned int h)
+ {
+- if( w > 32767 || h > 32767)
++ if (w <= 0 || w > 32767 ||
++ h <= 0 || h > 32767 ||
++ h >= (G_MAXINT/4 - 1) / w)
+ return NULL;
+- return malloc(w * h * 3);
++ return malloc(w * h * 3 + 3);
+ }
++
+diff -urN imlib-1.9.13.orig/gdk_imlib/utils.c imlib-1.9.13/gdk_imlib/utils.c
+--- imlib-1.9.13.orig/gdk_imlib/utils.c Mon Mar 4 17:26:51 2002
++++ imlib-1.9.13/gdk_imlib/utils.c Thu Sep 16 17:28:35 2004
+@@ -1236,36 +1236,56 @@
+ context = 0;
+ ptr = NULL;
+ end = NULL;
++ memset(lookup, 0, sizeof(lookup));
+
+ while (!done)
+ {
+ line = data[count++];
++ if (!line)
++ break;
++ line = strdup(line);
++ if (!line)
++ break;
++ len = strlen(line);
++ for (i = 0; i < len; ++i)
++ {
++ c = line[i];
++ if (c < 32)
++ line[i] = 32;
++ else if (c > 127)
++ line[i] = 127;
++ }
++
+ if (context == 0)
+ {
+ /* Header */
+ sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp);
+- if (ncolors > 32766)
++ if (ncolors <= 0 || ncolors > 32766)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM data wth colors > 32766 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (cpp > 5)
++ if (cpp <= 0 || cpp > 5)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: XPM data with characters per pixel > 5 not supported\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (w > 32767)
++ if (w <= 0 || w > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image width > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+- if (h > 32767)
++ if (h <= 0 || h > 32767)
+ {
+ fprintf(stderr, "gdk_imlib ERROR: Image height > 32767 pixels for data\n");
+ free(im);
++ free(line);
+ return NULL;
+ }
+ cmap = malloc(sizeof(struct _cmap) * ncolors);
+@@ -1273,6 +1293,7 @@
+ if (!cmap)
+ {
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->rgb_width = w;
+@@ -1282,6 +1303,7 @@
+ {
+ free(cmap);
+ free(im);
++ free(line);
+ return NULL;
+ }
+ im->alpha_data = NULL;
+@@ -1355,7 +1377,7 @@
+ strcpy(col + colptr, " ");
+ colptr++;
+ }
+- if (colptr + ls <= sizeof(col))
++ if (colptr + ls < sizeof(col))
+ {
+ strcpy(col + colptr, s);
+ colptr += ls;
+@@ -1558,6 +1580,7 @@
+ }
+ if ((ptr) && ((ptr - im->rgb_data) >= w * h * 3))
+ done = 1;
++ free(line);
+ }
+ if (!transp)
+ {
diff --git a/media-libs/imlib/imlib-1.9.15-r99.ebuild b/media-libs/imlib/imlib-1.9.15-r99.ebuild
new file mode 100644
index 0000000..940c65f
--- /dev/null
+++ b/media-libs/imlib/imlib-1.9.15-r99.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/imlib/imlib-1.9.15-r3.ebuild,v 1.7 2011/10/11 20:19:49 ssuominen Exp $
+
+EAPI=2
+inherit autotools eutils
+
+PVP=(${PV//[-\._]/ })
+DESCRIPTION="Image loading and rendering library"
+HOMEPAGE="http://ftp.acc.umu.se/pub/GNOME/sources/imlib/1.9/"
+SRC_URI="mirror://gnome/sources/${PN}/${PVP[0]}.${PVP[1]}/${P}.tar.bz2
+ mirror://gentoo/gtk-1-for-imlib.m4.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd"
+IUSE="doc static-libs"
+
+RDEPEND=">=media-libs/tiff-3.5.5
+ >=media-libs/giflib-4.1.0
+ >=media-libs/libpng-1.2.1
+ virtual/jpeg
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libXext"
+DEPEND="${RDEPEND}"
+
+src_prepare() {
+ # Fix aclocal underquoted definition warnings.
+ # Conditionalize gdk functions for bug 40453.
+ # Fix imlib-config for bug 3425.
+ epatch "${FILESDIR}"/${P}.patch
+ epatch "${FILESDIR}"/${PN}-security.patch #security #72681
+ epatch "${FILESDIR}"/${P}-bpp16-CVE-2007-3568.patch # security #201887
+ epatch "${FILESDIR}"/${P}-fix-rendering.patch #197489
+ epatch "${FILESDIR}"/${P}-asneeded.patch #207638
+ epatch "${FILESDIR}"/${P}-libpng15.patch #357167
+
+ mkdir m4 && cp "${WORKDIR}"/gtk-1-for-imlib.m4 m4
+
+ AT_M4DIR="m4" eautoreconf
+}
+
+src_configure() {
+ econf \
+ --sysconfdir=/etc/imlib \
+ $(use_enable static-libs static) \
+ --disable-gtktest
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+
+ dodoc AUTHORS ChangeLog README
+ use doc && dohtml doc/*
+
+ # Punt unused files
+ rm -f "${D}"/usr/lib*/pkgconfig/imlibgdk.pc
+ find "${D}" -name '*.la' -exec rm -f {} +
+}
diff --git a/media-libs/libaudclient/Manifest b/media-libs/libaudclient/Manifest
new file mode 100644
index 0000000..c42905f
--- /dev/null
+++ b/media-libs/libaudclient/Manifest
@@ -0,0 +1,2 @@
+DIST libaudclient_3.5~rc2.orig.tar.bz2 91995 SHA256 57b59936adee309308bebe6d37709ea7e833e53529164cca0720a337c17f175a SHA512 8dd8e14caca7dd7d0aeb1bb710c95c487bf9c05ddb8c21ae8291cb05974d9c5875f42fd11d4f10c2e045b9dfcede87f9e8322454b07f50a8927782240896e951 WHIRLPOOL 79d15af62c3503c290d53abe85a020e7cf5e0733ad6c07979ff77cb66eb056ae4c0cf93a46f8c9336897c91303ec962e7dae1406f56eb7dcac9abb1b62300699
+EBUILD libaudclient-3.5_rc2.ebuild 497 SHA256 abad4db5cf9db6324f1bba03b2bd993c7c095c780986f18f4025ae4956287bd3 SHA512 c50e6aaa75d88304c23c3d49a3403bfef5a1fee6311e25e297da6845e8241bfeaaa45e00728840d2ec9c1ea0443e25cc87d196624475537ffd0bebe20a8adb48 WHIRLPOOL 1743fa411bf176255bd173348f2375c91c0b3ab73033007157efb71b26aad95b1999c7e34c6ef69a906f8f4ff160b1750f8600980e69edc6e1e89f0cd75b33e9
diff --git a/media-libs/libaudclient/libaudclient-3.5_rc2.ebuild b/media-libs/libaudclient/libaudclient-3.5_rc2.ebuild
new file mode 100644
index 0000000..8cf7848
--- /dev/null
+++ b/media-libs/libaudclient/libaudclient-3.5_rc2.ebuild
@@ -0,0 +1,25 @@
+inherit eutils
+
+DESCRIPTION="Obsoleted Audacious library for wmauda"
+HOMEPAGE="http://packages.debian.org/sid/libaudclient2"
+SRC_URI="http://darksoft.org/files/darklin/${PN}_3.5~rc2.orig.tar.bz2"
+
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+DEPEND=""
+
+S="${WORKDIR}/${PN}-3.5-rc2"
+
+src_unpack() {
+ unpack "${PN}_3.5~rc2.orig.tar.bz2" || die "unpacking failed"
+}
+
+src_compile() {
+ econf || die "econf failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ einstall || die "install failed"
+}
diff --git a/media-libs/libid3tag/Manifest b/media-libs/libid3tag/Manifest
new file mode 100644
index 0000000..43abd1b
--- /dev/null
+++ b/media-libs/libid3tag/Manifest
@@ -0,0 +1,14 @@
+AUX 0.15.1b/libid3tag-0.15.1b-64bit-long.patch 567 RMD160 b045933419998fb569f5be661b03e7bc5d862003 SHA1 f9778590811a050384b9bf8827345b61999f0da3 SHA256 5f8b3d3419addf90977832b0a6e563acc2c8e243bb826ebb6d0ec573ec122e1b
+AUX 0.15.1b/libid3tag-0.15.1b-a_capella.patch 1365 RMD160 cc588ded6d7a1d69d91ca714854e29232954baaa SHA1 d2bd03350f13198a36a189cd1e9042aeed41a4e9 SHA256 07bb9a3fa3e0e7e74987725dc8eb29924e5177048d8d09e43bbd19b0e4ad09b8
+AUX 0.15.1b/libid3tag-0.15.1b-compat.patch 452 RMD160 e8a422004935e18c2217c9ac623d4895c17ad471 SHA1 8c179b10bf49385e4334aab141e4cf270cb02182 SHA256 88f486c3d263a4dd5bb556232dcfe2fba175b5124bcdd72aa6c30f562fc87d53
+AUX 0.15.1b/libid3tag-0.15.1b-file-write.patch 1344 RMD160 4f3179f4164559a64339ceaa522b6643d999332d SHA1 b7baae1c87f90aac64a4d17725b2eaad521e42af SHA256 eff855cabd8a51866a29246a1b257da64f46aab72d4b8e163e2a4c0d15165bf1
+AUX 0.15.1b/libid3tag-0.15.1b-fix_overflow.patch 324 RMD160 d6ecbbb97a76872791447102da61748b1ccdca7a SHA1 ed80bc74bd81caa225952f72a1a28d54300e43e3 SHA256 43ea3e0b324fb25802dae6410564c947ce1982243c781ef54b023f060c3b0ac4
+AUX 0.15.1b/libid3tag-0.15.1b-tag.patch 527 RMD160 5ec862828df4fe66e47047f135d2b52aba285a29 SHA1 b7ef9a41a31a37b8bb6d8e064b0c0ba618d3fa03 SHA256 ca7262ddad158ab0be804429d705f8c6a1bb120371dec593323fa4876c1b277f
+AUX 0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch 879 RMD160 c4b4ac0a7d013fe06075ae7ebb7b7a9f93805159 SHA1 093def535edb3d2f5be6b173eedf0f93a1c0314c SHA256 8b695c9c05e3885655b2e798326b804011615bc6c831cd55cdbacc456a6b9494
+AUX 0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch 753 RMD160 337a896343f79e83737048bd0e7f56bb5154eced SHA1 dcc01e31d5131c9be5a4dd7efe72b4fad46df9a5 SHA256 8d28c8cc163caebb4a7f927f2d80f317dfd6d8927e3235d19c006b3881f9447e
+AUX id3tag.pc 222 RMD160 f2ef95aaed166edc84d837854086ddbd45a7ff76 SHA1 db4be8657dc22311fa2ef63355261df26449a126 SHA256 46465c31b4e7e873f10f6e7ca3e642b55cb48a398a04dd3b0605d4fdd58d3c05
+AUX libid3tag-0.15.1b-ds-rcc.patch 7724 RMD160 0a0d3e46800c2f1652237290330adfae1e3d6d74 SHA1 6a72832d58579125f406857169f33bff1184241f SHA256 d975f85e5c5ebe52b272739f3b942738b4cc193ac2467aef054abc913bbbaee6
+DIST libid3tag-0.15.1b.tar.gz 338143 RMD160 31a69b8ad7684aefdb675acc8ebf89bd6f432095 SHA1 4d867e8a8436e73cd7762fe0e85958e35f1e4306 SHA256 63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151
+EBUILD libid3tag-0.15.1b-r1.ebuild 1183 RMD160 281f90e28bbdcae932665b366e6be97ec8d44376 SHA1 cbb985b15036c40ce78cb17918d28d0a02c2cbbd SHA256 fafa7c2f99b3adfecfb6440dccb536807f30b02c5a0ae3666b978365543ff80b
+EBUILD libid3tag-0.15.1b-r3.ebuild 1320 RMD160 d3d52658a2659f7c08346a9c8feb85e3fe403921 SHA1 0a9f460b27c9f70803ad105b2515a484e19547f8 SHA256 7d31b906c7dc9e0ce03dedb72a6ca106b8587dbd732e5c3f33d551f726472c13
+EBUILD libid3tag-0.15.1b-r4.ebuild 1354 RMD160 0e78b26192098715978c8d9bfbc7494d752f7acd SHA1 98617f2bb90fafc8353a77ae4ff5b024d5bf1070 SHA256 3ccf661153e1658f3188bd9e04baeed6d4e01ad01365476e39a4342a63e8510e
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch
new file mode 100644
index 0000000..852d9ef
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-64bit-long.patch
@@ -0,0 +1,24 @@
+--- id3tag.h.orig 2004-01-23 18:22:46.000000000 -0500
++++ id3tag.h 2008-05-04 19:46:33.000000000 -0400
+@@ -25,6 +25,8 @@
+ # ifndef LIBID3TAG_ID3TAG_H
+ # define LIBID3TAG_ID3TAG_H
+
++#include <stdint.h>
++
+ # ifdef __cplusplus
+ extern "C" {
+ # endif
+@@ -36,10 +38,10 @@
+ typedef unsigned char id3_byte_t;
+ typedef unsigned long id3_length_t;
+
+-typedef unsigned long id3_ucs4_t;
++typedef uint32_t id3_ucs4_t;
+
+ typedef unsigned char id3_latin1_t;
+-typedef unsigned short id3_utf16_t;
++typedef uint16_t id3_utf16_t;
+ typedef signed char id3_utf8_t;
+
+ struct id3_tag {
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch
new file mode 100644
index 0000000..a453080
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-a_capella.patch
@@ -0,0 +1,35 @@
+diff -urNad /home/debian/mad/libid3tag-0.15.1b/libid3tag-0.15.1b/genre.dat libid3tag-0.15.1b/genre.dat
+--- /home/debian/mad/libid3tag-0.15.1b/libid3tag-0.15.1b/genre.dat 2004-02-16 21:34:39.000000000 -0500
++++ libid3tag-0.15.1b/genre.dat 2004-09-06 09:50:33.000000000 -0400
+@@ -277,8 +277,8 @@
+ { 'P', 'u', 'n', 'k', ' ', 'R', 'o', 'c', 'k', 0 };
+ static id3_ucs4_t const genre_DRUM_SOLO[] =
+ { 'D', 'r', 'u', 'm', ' ', 'S', 'o', 'l', 'o', 0 };
+-static id3_ucs4_t const genre_A_CAPPELLA[] =
+- { 'A', ' ', 'C', 'a', 'p', 'p', 'e', 'l', 'l', 'a', 0 };
++static id3_ucs4_t const genre_A_CAPELLA[] =
++ { 'A', ' ', 'C', 'a', 'p', 'e', 'l', 'l', 'a', 0 };
+ static id3_ucs4_t const genre_EURO_HOUSE[] =
+ { 'E', 'u', 'r', 'o', '-', 'H', 'o', 'u', 's', 'e', 0 };
+ static id3_ucs4_t const genre_DANCE_HALL[] =
+@@ -452,7 +452,7 @@
+ genre_DUET,
+ genre_PUNK_ROCK,
+ genre_DRUM_SOLO,
+- genre_A_CAPPELLA,
++ genre_A_CAPELLA,
+ genre_EURO_HOUSE,
+ genre_DANCE_HALL,
+ genre_GOA,
+diff -urNad /home/debian/mad/libid3tag-0.15.1b/libid3tag-0.15.1b/genre.dat.in libid3tag-0.15.1b/genre.dat.in
+--- /home/debian/mad/libid3tag-0.15.1b/libid3tag-0.15.1b/genre.dat.in 2004-01-23 04:41:32.000000000 -0500
++++ libid3tag-0.15.1b/genre.dat.in 2004-09-06 09:50:33.000000000 -0400
+@@ -153,7 +153,7 @@
+ Duet
+ Punk Rock
+ Drum Solo
+-A Cappella
++A Capella
+ Euro-House
+ Dance Hall
+ Goa
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch
new file mode 100644
index 0000000..6ef1a22
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-compat.patch
@@ -0,0 +1,13 @@
+diff -ur libid3tag-0.15.1b/compat.gperf libid3tag-0.15.1b.fixed/compat.gperf
+--- libid3tag-0.15.1b/compat.gperf Fri Jan 23 01:41:32 2004
++++ libid3tag-0.15.1b.fixed/compat.gperf Thu Oct 19 12:21:10 2006
+@@ -237,6 +237,9 @@
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
+
++ if (string == 0)
++ continue;
++
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
+ continue;
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch
new file mode 100644
index 0000000..aa61d09
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-file-write.patch
@@ -0,0 +1,52 @@
+diff -ur -x '*.lo' -x '*.o' -x config.h -x config.log libid3tag-0.15.1b/file.c libid3tag-0.15.1b-fixed/file.c
+--- libid3tag-0.15.1b/file.c 2004-01-23 12:41:32.000000000 +0300
++++ libid3tag-0.15.1b-fixed/file.c 2005-05-24 23:34:08.000000000 +0400
+@@ -37,6 +37,10 @@
+ # include <assert.h>
+ # endif
+
++# ifdef HAVE_SYS_STAT_H
++# include <sys/stat.h>
++# endif
++
+ # include "id3tag.h"
+ # include "file.h"
+ # include "tag.h"
+@@ -575,6 +579,10 @@
+ int v2_write(struct id3_file *file,
+ id3_byte_t const *data, id3_length_t length)
+ {
++ struct stat st;
++ char *buffer;
++ id3_length_t datalen, offset;
++
+ assert(!data || length > 0);
+
+ if (data &&
+@@ -592,9 +600,25 @@
+ }
+
+ /* hard general case: rewrite entire file */
++ if (stat(file->path, &st) == -1)
++ return -1;
+
+- /* ... */
++ offset = file->tags ? file->tags[0].length : 0;
++ datalen = st.st_size - offset;
++ if ((buffer = (char *) malloc(datalen)) == NULL)
++ return -1;
+
++ if (fseek(file->iofile, offset, SEEK_SET) == -1 ||
++ fread(buffer, datalen, 1, file->iofile) != 1 ||
++ fseek(file->iofile, 0, SEEK_SET) == -1 ||
++ fwrite(data, length, 1, file->iofile) != 1 ||
++ fwrite(buffer, datalen, 1, file->iofile) != 1 ||
++ fflush(file->iofile) == EOF) {
++ free(buffer);
++ return -1;
++ }
++ free(buffer);
++
+ done:
+ return 0;
+ }
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch
new file mode 100644
index 0000000..26c54c5
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-fix_overflow.patch
@@ -0,0 +1,11 @@
+--- field.c.orig 2008-05-05 09:49:15.000000000 -0400
++++ field.c 2008-05-05 09:49:25.000000000 -0400
+@@ -291,7 +291,7 @@
+
+ end = *ptr + length;
+
+- while (end - *ptr > 0) {
++ while (end - *ptr > 0 && **ptr != '\0') {
+ ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0);
+ if (ucs4 == 0)
+ goto fail;
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch
new file mode 100644
index 0000000..2badfb3
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-tag.patch
@@ -0,0 +1,17 @@
+--- tag.c.orig Fri Apr 18 18:14:33 2003
++++ tag.c Mon Sep 26 22:29:24 2005
+@@ -714,9 +714,12 @@
+
+ frame = id3_tag_findframe(tag, ID3_FRAME_TRACK, 0);
+ if (frame) {
+- unsigned int track;
++ id3_ucs4_t const *string;
++ unsigned int track = 0;
+
+- track = id3_ucs4_getnumber(id3_field_getstrings(&frame->fields[1], 0));
++ string = id3_field_getstrings(&frame->fields[1], 0);
++ if (string)
++ track = id3_ucs4_getnumber(string);
+ if (track > 0 && track <= 0xff) {
+ ptr[-2] = 0;
+ ptr[-1] = track;
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch
new file mode 100644
index 0000000..7c70d00
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-unknown-encoding.patch
@@ -0,0 +1,27 @@
+diff -urNad libid3tag-0.15.1b~/compat.gperf libid3tag-0.15.1b/compat.gperf
+--- libid3tag-0.15.1b~/compat.gperf 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000
+@@ -236,6 +236,10 @@
+
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
++ if (!string)
++ {
++ continue;
++ }
+
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
+diff -urNad libid3tag-0.15.1b~/parse.c libid3tag-0.15.1b/parse.c
+--- libid3tag-0.15.1b~/parse.c 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000
+@@ -165,6 +165,9 @@
+ case ID3_FIELD_TEXTENCODING_UTF_8:
+ ucs4 = id3_utf8_deserialize(ptr, length);
+ break;
++ default:
++ /* FIXME: Unknown encoding! Print warning? */
++ return NULL;
+ }
+
+ if (ucs4 && !full) {
diff --git a/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch
new file mode 100644
index 0000000..72ed118
--- /dev/null
+++ b/media-libs/libid3tag/files/0.15.1b/libid3tag-0.15.1b-utf16.patchlibid3tag-0.15.1b-utf16.patch
@@ -0,0 +1,22 @@
+diff -urNad libid3tag-0.15.1b/utf16.c /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c
+--- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100
++++ /tmp/dpep.tKvO7a/libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100
+@@ -282,5 +282,18 @@
+
+ free(utf16);
+
++ if (end == *ptr && length % 2 != 0)
++ {
++ /* We were called with a bogus length. It should always
++ * be an even number. We can deal with this in a few ways:
++ * - Always give an error.
++ * - Try and parse as much as we can and
++ * - return an error if we're called again when we
++ * already tried to parse everything we can.
++ * - tell that we parsed it, which is what we do here.
++ */
++ (*ptr)++;
++ }
++
+ return ucs4;
+ }
diff --git a/media-libs/libid3tag/files/id3tag.pc b/media-libs/libid3tag/files/id3tag.pc
new file mode 100644
index 0000000..01678db
--- /dev/null
+++ b/media-libs/libid3tag/files/id3tag.pc
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: id3tag
+Description: ID3 tag reading library
+Requires:
+Version: 0.15.0b
+Libs: -L${libdir} -lid3tag -lz
+Cflags: -L${includedir}
diff --git a/media-libs/libid3tag/files/libid3tag-0.15.1b-ds-rcc.patch b/media-libs/libid3tag/files/libid3tag-0.15.1b-ds-rcc.patch
new file mode 100644
index 0000000..4641f3d
--- /dev/null
+++ b/media-libs/libid3tag/files/libid3tag-0.15.1b-ds-rcc.patch
@@ -0,0 +1,300 @@
+diff -dPNur libid3tag-0.15.1b/configure.ac libid3tag-0.15.1b-ds/configure.ac
+--- libid3tag-0.15.1b/configure.ac 2004-01-24 00:22:46.000000000 +0100
++++ libid3tag-0.15.1b-ds/configure.ac 2008-04-12 21:36:35.000000000 +0200
+@@ -145,6 +145,22 @@
+ *** environment variable to specify its installed location, e.g. -L<dir>.])
+ ])
+
++
++AC_CHECK_LIB(rcc, rccInit,[
++ AC_CHECK_HEADERS(librcc.h,[
++ LIBRCC_LIBS="-lrcc"
++ LIBRCC_INCLUDES="-DHAVE_LIBRCC"
++ ],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])
++AC_SUBST(LIBRCC_LIBS)
++AC_SUBST(LIBRCC_INCLUDES)
++
++
+ dnl handle --enable and --disable options
+
+ AC_CACHE_SAVE
+diff -dPNur libid3tag-0.15.1b/latin1.c libid3tag-0.15.1b-ds/latin1.c
+--- libid3tag-0.15.1b/latin1.c 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b-ds/latin1.c 2008-04-12 21:36:35.000000000 +0200
+@@ -31,6 +31,9 @@
+ # include "latin1.h"
+ # include "ucs4.h"
+
++# include "utf8.h"
++# include "rccpatch.h"
++
+ /*
+ * NAME: latin1->length()
+ * DESCRIPTION: return the number of ucs4 chars represented by a latin1 string
+@@ -172,6 +175,11 @@
+ id3_length_t size = 0;
+ id3_latin1_t latin1[1], *out;
+
++/*
++ Theoretically, we should add here a code for converting ucs4 to
++ recoded latin1 string. However, using non-standard latin1 tags
++ in ID3v.2 tags is completely idiotic. So, I'll not do that.
++*/
+ while (*ucs4) {
+ switch (id3_latin1_encodechar(out = latin1, *ucs4++)) {
+ case 1: size += id3_latin1_put(ptr, *out++);
+@@ -193,6 +201,7 @@
+ {
+ id3_byte_t const *end;
+ id3_latin1_t *latin1ptr, *latin1;
++ id3_utf8_t *utf8;
+ id3_ucs4_t *ucs4;
+
+ end = *ptr + length;
+@@ -207,6 +216,19 @@
+
+ *latin1ptr = 0;
+
++
++ utf8 = rccPatchLatin2UTF(latin1);
++ if (utf8) {
++ ucs4 = malloc((id3_utf8_length(utf8) + 1) * sizeof(*ucs4));
++ if (ucs4)
++ id3_utf8_decode(utf8, ucs4);
++ free(utf8);
++ free(latin1);
++
++
++ return ucs4;
++ }
++
+ ucs4 = malloc((id3_latin1_length(latin1) + 1) * sizeof(*ucs4));
+ if (ucs4)
+ id3_latin1_decode(latin1, ucs4);
+diff -dPNur libid3tag-0.15.1b/Makefile.am libid3tag-0.15.1b-ds/Makefile.am
+--- libid3tag-0.15.1b/Makefile.am 2004-02-17 03:11:28.000000000 +0100
++++ libid3tag-0.15.1b-ds/Makefile.am 2008-04-12 21:36:35.000000000 +0200
+@@ -81,6 +81,7 @@
+ libid3tag_la_SOURCES = version.c ucs4.c latin1.c utf16.c utf8.c \
+ parse.c render.c field.c frametype.c compat.c \
+ genre.c frame.c crc.c util.c tag.c file.c \
++ rccpatch.c rccpatch.h \
+ version.h ucs4.h latin1.h utf16.h utf8.h \
+ parse.h render.h field.h frametype.h compat.h \
+ genre.h frame.h crc.h util.h tag.h file.h \
+@@ -90,7 +91,8 @@
+ frametype.gperf compat.gperf genre.dat.in \
+ debug.c debug.h
+
+-libid3tag_la_LDFLAGS = -version-info $(version_info)
++INCLUDES = @LIBRCC_INCLUDES@
++libid3tag_la_LDFLAGS = -version-info $(version_info) @LIBRCC_LIBS@
+
+ BUILT_SOURCES = frametype.c compat.c genre.dat
+
+diff -dPNur libid3tag-0.15.1b/rccpatch.c libid3tag-0.15.1b-ds/rccpatch.c
+--- libid3tag-0.15.1b/rccpatch.c 1970-01-01 01:00:00.000000000 +0100
++++ libid3tag-0.15.1b-ds/rccpatch.c 2008-04-12 21:36:35.000000000 +0200
+@@ -0,0 +1,96 @@
++#include <stdlib.h>
++#include "rccpatch.h"
++
++#ifdef HAVE_LIBRCC
++# include <librcc.h>
++#endif /* HAVE_LIBRCC */
++
++
++#ifdef HAVE_LIBRCC
++# define ID3_CLASS 0
++# define ID3V2_CLASS 1
++# define UTF_CLASS 2
++# define OUT_CLASS 3
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "id3v2", RCC_CLASS_STANDARD, "id3", NULL, "ID3 v.2 Encoding", 0 },
++ { "utf", RCC_CLASS_KNOWN, "UTF-8", NULL, "Unicode Encoding", 0},
++ { "out", RCC_CLASS_TRANSLATE_LOCALE, "LC_CTYPE", NULL, "Output Encoding", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int rcc_initialized = 0;
++
++static rcc_context ctx = NULL;
++#endif /* HAVE_LIBRCC */
++
++
++void rccPatchFree() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++void rccPatchInit() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++#endif /* HAVE_LIBRCC */
++}
++
++void rccPatchSetContext(void *newctx) {
++#ifdef HAVE_LIBRCC
++ if (newctx) {
++ ctx = (rcc_context)newctx;
++ rcc_initialized = 1;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++static void rccPatchTryInit() {
++#ifdef HAVE_LIBRCC
++ if (!rcc_initialized) {
++ rccPatchInit();
++ if (rcc_initialized) atexit(rccPatchFree);
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++
++id3_utf8_t *rccPatchLatin2UTF(id3_latin1_t *str) {
++#ifdef HAVE_LIBRCC
++ rccPatchTryInit();
++
++ return rccRecode(ctx, ID3_CLASS, UTF_CLASS, str);
++#else
++ return NULL;
++#endif /* HAVE_LIBRCC */
++}
++
++id3_latin1_t *rccPatchUTF2Latin(id3_utf8_t *str) {
++#ifdef HAVE_LIBRCC
++ rccPatchTryInit();
++
++ return rccRecode(ctx, UTF_CLASS, ID3_CLASS, str);
++#else
++ return NULL;
++#endif /* HAVE_LIBRCC */
++}
++
++id3_latin1_t *rccPatchUTF2Out(id3_utf8_t *str) {
++#ifdef HAVE_LIBRCC
++ rccPatchTryInit();
++
++ return rccRecode(ctx, UTF_CLASS, OUT_CLASS, str);
++#else
++ return NULL;
++#endif /* HAVE_LIBRCC */
++}
++
+diff -dPNur libid3tag-0.15.1b/rccpatch.h libid3tag-0.15.1b-ds/rccpatch.h
+--- libid3tag-0.15.1b/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ libid3tag-0.15.1b-ds/rccpatch.h 2008-04-12 21:36:35.000000000 +0200
+@@ -0,0 +1,15 @@
++#ifndef _RCC_PATCH_H
++#define _RCC_PATCH_H
++
++#include "id3tag.h"
++
++void rccPatchFree();
++void rccPatchInit();
++void rccPatchSetContext(void *newctx);
++
++id3_utf8_t *rccPatchLatin2UTF(id3_latin1_t *str);
++id3_latin1_t *rccPatchUTF2Latin(id3_utf8_t *str);
++id3_latin1_t *rccPatchUTF2Out(id3_utf8_t *str);
++
++
++#endif /* _RCC_PATCH_H */
+diff -dPNur libid3tag-0.15.1b/tag.c libid3tag-0.15.1b-ds/tag.c
+--- libid3tag-0.15.1b/tag.c 2004-02-17 03:04:10.000000000 +0100
++++ libid3tag-0.15.1b-ds/tag.c 2008-04-12 21:37:12.000000000 +0200
+@@ -45,6 +45,9 @@
+ # include "field.h"
+ # include "util.h"
+
++# include "utf8.h"
++# include "rccpatch.h"
++
+ /*
+ * NAME: tag->new()
+ * DESCRIPTION: allocate and return a new, empty tag
+@@ -335,6 +338,8 @@
+ {
+ struct id3_frame *frame;
+ id3_ucs4_t ucs4[31];
++
++ id3_utf8_t *utf8;
+
+ if (text) {
+ trim(text);
+@@ -350,9 +355,15 @@
+ ID3_FIELD_TEXTENCODING_ISO_8859_1) == -1)
+ goto fail;
+
+- if (text)
++ if (text) {
++ utf8 = rccPatchLatin2UTF(text);
++ if (utf8) {
++ if (strlen(utf8) > 30) utf8[30] = 0;
++ id3_utf8_decode(utf8, ucs4);
++ free(utf8);
++ } else
+ id3_latin1_decode(text, ucs4);
+- else
++ } else
+ id3_ucs4_putnumber(ucs4, number);
+
+ if (strcmp(id, ID3_FRAME_COMMENT) == 0) {
+diff -dPNur libid3tag-0.15.1b/ucs4.c libid3tag-0.15.1b-ds/ucs4.c
+--- libid3tag-0.15.1b/ucs4.c 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b-ds/ucs4.c 2008-04-12 21:36:35.000000000 +0200
+@@ -33,6 +33,9 @@
+ # include "utf16.h"
+ # include "utf8.h"
+
++# include <string.h>
++# include "rccpatch.h"
++
+ id3_ucs4_t const id3_ucs4_empty[] = { 0 };
+
+ /*
+@@ -125,6 +128,27 @@
+ {
+ id3_latin1_t *latin1;
+
++
++ id3_latin1_t *ltmp;
++ id3_utf8_t *utf8;
++
++ utf8 = malloc(id3_ucs4_utf8size(ucs4) * sizeof(*utf8));
++ if (utf8) {
++ id3_utf8_encode(utf8, ucs4);
++ ltmp = rccPatchUTF2Out(utf8);
++ free(utf8);
++
++ if (ltmp) {
++ latin1 = malloc((1+strlen(ltmp))*sizeof(char));
++ if (latin1) {
++ memcpy(latin1, ltmp, (1+strlen(ltmp)));
++ free(ltmp);
++ return release(latin1);
++ }
++ free(ltmp);
++ }
++ }
++
+ latin1 = malloc(id3_ucs4_latin1size(ucs4) * sizeof(*latin1));
+ if (latin1)
+ id3_latin1_encode(latin1, ucs4);
diff --git a/media-libs/libid3tag/libid3tag-0.15.1b-r1.ebuild b/media-libs/libid3tag/libid3tag-0.15.1b-r1.ebuild
new file mode 100644
index 0000000..ef16925
--- /dev/null
+++ b/media-libs/libid3tag/libid3tag-0.15.1b-r1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/libid3tag/libid3tag-0.15.1b.ebuild,v 1.24 2006/10/04 17:34:19 grobian Exp $
+
+inherit eutils multilib
+
+DESCRIPTION="The MAD id3tag library"
+HOMEPAGE="http://www.underbit.com/products/mad/"
+SRC_URI="mirror://sourceforge/mad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86 ~x86-fbsd"
+IUSE="debug"
+
+DEPEND=">=sys-libs/zlib-1.1.3"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epunt_cxx #74489
+
+#SDS
+ epatch "${FILESDIR}"/libid3tag-0.15.1b-ds-rcc.patch
+ libtoolize --copy --force
+ aclocal
+ automake
+ autoconf
+#EDS
+}
+
+src_compile() {
+ econf $(use_enable debug debugging) || die "configure failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ make install DESTDIR="${D}" || die "make install failed"
+
+ dodoc CHANGES CREDITS README TODO VERSION
+
+ # This file must be updated with every version update
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins ${FILESDIR}/id3tag.pc
+ sed -i -e "s:libdir=\${exec_prefix}/lib:libdir=/usr/$(get_libdir):" \
+ ${D}/usr/$(get_libdir)/pkgconfig/id3tag.pc
+}
diff --git a/media-libs/libid3tag/libid3tag-0.15.1b-r3.ebuild b/media-libs/libid3tag/libid3tag-0.15.1b-r3.ebuild
new file mode 100644
index 0000000..87a041b
--- /dev/null
+++ b/media-libs/libid3tag/libid3tag-0.15.1b-r3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/libid3tag/libid3tag-0.15.1b-r2.ebuild,v 1.6 2008/05/07 18:46:14 corsair Exp $
+
+inherit eutils multilib
+
+DESCRIPTION="The MAD id3tag library"
+HOMEPAGE="http://www.underbit.com/products/mad/"
+SRC_URI="mirror://sourceforge/mad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~x86-fbsd"
+IUSE="debug"
+
+DEPEND="dev-util/gperf
+ sys-devel/libtool"
+
+RDEPEND="${DEPEND}
+ >=sys-libs/zlib-1.1.3"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epunt_cxx #74489
+
+ epatch "${FILESDIR}/${PV}"/*.patch
+
+#SDS
+ epatch "${FILESDIR}"/libid3tag-0.15.1b-ds-rcc.patch || die
+ libtoolize --copy --force
+ aclocal
+ automake
+ autoconf
+#EDS
+
+}
+
+src_compile() {
+ econf $(use_enable debug debugging) || die "configure failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ make install DESTDIR="${D}" || die "make install failed"
+
+ dodoc CHANGES CREDITS README TODO VERSION
+
+ # This file must be updated with every version update
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins "${FILESDIR}/id3tag.pc"
+ sed -i -e "s:libdir=\${exec_prefix}/lib:libdir=/usr/$(get_libdir):" \
+ -e "s:0.15.0b:${PV}:" \
+ "${D}/usr/$(get_libdir)/pkgconfig/id3tag.pc"
+}
diff --git a/media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild b/media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild
new file mode 100644
index 0000000..7a1dfa9
--- /dev/null
+++ b/media-libs/libid3tag/libid3tag-0.15.1b-r4.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/libid3tag/libid3tag-0.15.1b-r2.ebuild,v 1.6 2008/05/07 18:46:14 corsair Exp $
+
+inherit eutils multilib autotools
+
+DESCRIPTION="The MAD id3tag library"
+HOMEPAGE="http://www.underbit.com/products/mad/"
+SRC_URI="mirror://sourceforge/mad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~x86-fbsd"
+IUSE="debug"
+
+DEPEND="dev-util/gperf
+ sys-devel/libtool"
+
+RDEPEND="${DEPEND}
+ >=sys-libs/zlib-1.1.3"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epunt_cxx #74489
+
+ epatch "${FILESDIR}/${PV}"/*.patch
+
+#SDS
+ epatch "${FILESDIR}"/libid3tag-0.15.1b-ds-rcc.patch || die
+ eautoreconf || die
+# libtoolize --copy --force
+# aclocal
+# automake
+# autoconf
+#EDS
+
+}
+
+src_compile() {
+ econf $(use_enable debug debugging) || die "configure failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ make install DESTDIR="${D}" || die "make install failed"
+
+ dodoc CHANGES CREDITS README TODO VERSION
+
+ # This file must be updated with every version update
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins "${FILESDIR}/id3tag.pc"
+ sed -i -e "s:libdir=\${exec_prefix}/lib:libdir=/usr/$(get_libdir):" \
+ -e "s:0.15.0b:${PV}:" \
+ "${D}/usr/$(get_libdir)/pkgconfig/id3tag.pc"
+}
diff --git a/media-libs/mac/Manifest b/media-libs/mac/Manifest
new file mode 100644
index 0000000..d15855b
--- /dev/null
+++ b/media-libs/mac/Manifest
@@ -0,0 +1,7 @@
+AUX mac-3.99-u4-b5-s4-ds-fix.patch 600 RMD160 d5f9ba59fdca25213d1e09226f2e9a2d76f2c472 SHA1 456ed3d9ca86c76b0229c593e35d29fcec9afe85 SHA256 49b538c3cdf1b9955d8d77df03e7fdb09ef510f13ea81a60eae83ae3191e93c6
+AUX mac-3.99-u4-b5-s4-ds-gcc44.patch 1528 RMD160 c18e946581626d6f4446a590f8de721cfde83143 SHA1 777f4cfe380638abff85810aa4620281ec398a1e SHA256 e33426c49e3a1acd5c95771cb693d7b62ed20d50cc2b5713b8ab7fd2e6fb974d
+DIST mac-3.99-u4-b5-s4.tar.gz 427978 RMD160 986849a0f332e1d8f87f9954c34ecd90dbe4749c SHA1 fe706e1847b9c2f67f282c113d94305ac4e35bb2 SHA256 6270532925559bdc8dbc4ef4ca8befb5508c255a667e50382fc40b92a625544f
+DIST mac-3.99-u4-b5.tar.gz 421234 RMD160 34b5ba553f7ffa858249258dad9f64c60f0b6ac0 SHA1 f215c265c2cba719834c989498d5a8d2457b54de SHA256 d59ac5b1fa375a78eadbd5d9bb638ad0229185b42b562dbb04b0dab6475b6651
+EBUILD mac-3.99-r1.ebuild 875 RMD160 580f7ff0cf6cb87b6bd26800a10bc2bfdf92c28a SHA1 4141ede4d01712007bde23d5fae8201eb18b4997 SHA256 fa5830b87c76596567d410b80a56b1fa85495363e37c929870e8ca2b39573578
+EBUILD mac-3.99-r2.ebuild 937 RMD160 bdbdf7ab62d9150a52a3f795dda3ad849b84bee0 SHA1 cfe0b4abeeb26913e55b88257d9794e2d91356e6 SHA256 ec2df095b137e581b2f19b4617563927b0c13aa07fcf15dc957543d20941aeaa
+EBUILD mac-3.99.ebuild 812 RMD160 b8efc89ce4e9c817fec642bf69108ecee94cd7f5 SHA1 e74fefaee509f5b7d7377d9658dee68358683407 SHA256 67e57e0956f8f467580eea4d6f3c5b9165021b151cc285146a21aa838a7c786b
diff --git a/media-libs/mac/files/mac-3.99-u4-b5-s4-ds-fix.patch b/media-libs/mac/files/mac-3.99-u4-b5-s4-ds-fix.patch
new file mode 100644
index 0000000..aba0379
--- /dev/null
+++ b/media-libs/mac/files/mac-3.99-u4-b5-s4-ds-fix.patch
@@ -0,0 +1,12 @@
+diff -dPNur mac-3.99-u4-b5-s4/src/MACLib/APEDecompress.cpp mac-3.99-u4-b5-s4-new/src/MACLib/APEDecompress.cpp
+--- mac-3.99-u4-b5-s4/src/MACLib/APEDecompress.cpp 2006-06-01 11:00:58.000000000 +0200
++++ mac-3.99-u4-b5-s4-new/src/MACLib/APEDecompress.cpp 2008-04-12 17:39:39.000000000 +0200
+@@ -369,7 +369,7 @@
+ *****************************************************************************************/
+ intptr_t CAPEDecompress::GetInfo(APE_DECOMPRESS_FIELDS Field, intptr_t nParam1, intptr_t nParam2)
+ {
+- int nRetVal = 0;
++ intptr_t nRetVal = 0;
+ BOOL bHandled = TRUE;
+
+ switch (Field)
diff --git a/media-libs/mac/files/mac-3.99-u4-b5-s4-ds-gcc44.patch b/media-libs/mac/files/mac-3.99-u4-b5-s4-ds-gcc44.patch
new file mode 100644
index 0000000..5843f8b
--- /dev/null
+++ b/media-libs/mac/files/mac-3.99-u4-b5-s4-ds-gcc44.patch
@@ -0,0 +1,27 @@
+diff -dPNur mac-3.99-u4-b5-s4/src/MACLib/APELink.cpp mac-3.99-u4-b5-s4-new/src/MACLib/APELink.cpp
+--- mac-3.99-u4-b5-s4/src/MACLib/APELink.cpp 2006-06-01 11:00:57.000000000 +0200
++++ mac-3.99-u4-b5-s4-new/src/MACLib/APELink.cpp 2009-08-04 11:53:48.000000000 +0200
+@@ -63,10 +63,10 @@
+ if (pData != NULL)
+ {
+ // parse out the information
+- char * pHeader = strstr(pData, APE_LINK_HEADER);
+- char * pImageFile = strstr(pData, APE_LINK_IMAGE_FILE_TAG);
+- char * pStartBlock = strstr(pData, APE_LINK_START_BLOCK_TAG);
+- char * pFinishBlock = strstr(pData, APE_LINK_FINISH_BLOCK_TAG);
++ const char * pHeader = strstr(pData, APE_LINK_HEADER);
++ const char * pImageFile = strstr(pData, APE_LINK_IMAGE_FILE_TAG);
++ const char * pStartBlock = strstr(pData, APE_LINK_START_BLOCK_TAG);
++ const char * pFinishBlock = strstr(pData, APE_LINK_FINISH_BLOCK_TAG);
+
+ if (pHeader && pImageFile && pStartBlock && pFinishBlock)
+ {
+@@ -81,7 +81,7 @@
+
+ // get the path
+ char cImageFile[MAX_PATH + 1]; int nIndex = 0;
+- char * pImageCharacter = &pImageFile[strlen(APE_LINK_IMAGE_FILE_TAG)];
++ const char * pImageCharacter = &pImageFile[strlen(APE_LINK_IMAGE_FILE_TAG)];
+ while ((*pImageCharacter != 0) && (*pImageCharacter != '\r') && (*pImageCharacter != '\n'))
+ cImageFile[nIndex++] = *pImageCharacter++;
+ cImageFile[nIndex] = 0;
diff --git a/media-libs/mac/mac-3.99-r1.ebuild b/media-libs/mac/mac-3.99-r1.ebuild
new file mode 100644
index 0000000..4cc5a6c
--- /dev/null
+++ b/media-libs/mac/mac-3.99-r1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: current version of ebuild http://atrey.karlin.mff.cuni.cz/~sanda/mac/$
+
+inherit eutils
+
+MY_P=${PV}-u4-b5-s4
+MY_F=mac-${MY_P}
+DESCRIPTION="Monkey Audio Codec (MAC linux port)"
+HOMEPAGE="http://sourceforge.net/projects/mac-port/"
+SRC_URI="http://dside.dyndns.org/files/darklin/$MY_F.tar.gz"
+
+LICENSE="MAC"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=""
+
+src_unpack() {
+ unpack ${MY_F}.tar.gz || die "unpacking failed"
+ cd ${WORKDIR}
+ epatch "${FILESDIR}"/mac-3.99-u4-b5-s4-ds-fix.patch || die
+ mv ${MY_F} ${P}
+}
+
+src_compile() {
+ econf || die "econf failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ einstall || die "install failed"
+ dodoc AUTHORS README AUTHORS src/License.htm NEWS ChangeLog
+}
diff --git a/media-libs/mac/mac-3.99-r2.ebuild b/media-libs/mac/mac-3.99-r2.ebuild
new file mode 100644
index 0000000..d1200aa
--- /dev/null
+++ b/media-libs/mac/mac-3.99-r2.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: current version of ebuild http://atrey.karlin.mff.cuni.cz/~sanda/mac/$
+
+inherit eutils
+
+MY_P=${PV}-u4-b5-s4
+MY_F=mac-${MY_P}
+DESCRIPTION="Monkey Audio Codec (MAC linux port)"
+HOMEPAGE="http://sourceforge.net/projects/mac-port/"
+SRC_URI="http://dside.dyndns.org/files/darklin/$MY_F.tar.gz"
+
+LICENSE="MAC"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=""
+
+src_unpack() {
+ unpack ${MY_F}.tar.gz || die "unpacking failed"
+ cd ${WORKDIR}
+ epatch "${FILESDIR}"/mac-3.99-u4-b5-s4-ds-fix.patch || die
+ epatch "${FILESDIR}"/mac-3.99-u4-b5-s4-ds-gcc44.patch || die
+ mv ${MY_F} ${P}
+}
+
+src_compile() {
+ econf || die "econf failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ einstall || die "install failed"
+ dodoc AUTHORS README AUTHORS src/License.htm NEWS ChangeLog
+}
diff --git a/media-libs/mac/mac-3.99.ebuild b/media-libs/mac/mac-3.99.ebuild
new file mode 100644
index 0000000..d33a69e
--- /dev/null
+++ b/media-libs/mac/mac-3.99.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: current version of ebuild http://atrey.karlin.mff.cuni.cz/~sanda/mac/$
+
+inherit eutils
+
+MY_P=${PV}-u4-b5
+MY_F=mac-${MY_P}
+DESCRIPTION="Monkey Audio Codec (MAC linux port)"
+HOMEPAGE="http://sourceforge.net/projects/mac-port/"
+SRC_URI="http://dside.dyndns.org/files/darklin/$MY_F.tar.gz"
+
+LICENSE="MAC"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=""
+
+src_unpack() {
+ unpack ${MY_F}.tar.gz || die "unpacking failed"
+ cd ${WORKDIR}
+ mv ${MY_F} ${P}
+}
+
+src_compile() {
+ econf || die "econf failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ einstall || die "install failed"
+ dodoc AUTHORS README AUTHORS src/License.htm NEWS ChangeLog
+}
diff --git a/media-libs/nv-codec-headers/Manifest b/media-libs/nv-codec-headers/Manifest
new file mode 100644
index 0000000..b75f0ee
--- /dev/null
+++ b/media-libs/nv-codec-headers/Manifest
@@ -0,0 +1,2 @@
+DIST nv-codec-headers-9.0.18.1.tar.gz 58850 BLAKE2B 8e940ffb929f67c4e459cfd55113298527cf8430b94d20e9bb7148cf532dbed798138e63801f29d168d0b4b465c0eb6ef3c58596289063f461b7d5e8832ce7e8 SHA512 4306ee3c6e72e9e3172b28c5e6166ec3fb9dfdc32578aebda0588afc682f56286dd6f616284c9892907cd413f57770be3662572207a36d6ac65c75a03d381f6f
+EBUILD nv-codec-headers-9.0.18.1.ebuild 703 BLAKE2B 944e18e21756707bcc0eef24ff2898e576d1349c6031023ba056db13d2ec3dc6de3f92db4f4fe780e8e5bbb11577938d916c04fd8ba645c820ae91f51dcdcfad SHA512 e9dd681d1faf767fa7396679321310d7eeffd86a7e332a5188190961cd82995a59517fc5a482baee54a063e42b386692d424fe1cfd62264984bbcaa1db32f58b
diff --git a/media-libs/nv-codec-headers/nv-codec-headers-9.0.18.1.ebuild b/media-libs/nv-codec-headers/nv-codec-headers-9.0.18.1.ebuild
new file mode 100644
index 0000000..bee524e
--- /dev/null
+++ b/media-libs/nv-codec-headers/nv-codec-headers-9.0.18.1.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib-minimal
+
+DESCRIPTION="FFmpeg version of headers required to interface with Nvidias codec APIs"
+HOMEPAGE="https://git.videolan.org/?p=ffmpeg/nv-codec-headers.git"
+SRC_URI="https://github.com/FFmpeg/nv-codec-headers/releases/download/n${PV}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+
+S="${WORKDIR}/${PN}-n${PV}"
+
+src_prepare() {
+ multilib_copy_sources
+ default
+}
+
+multilib_src_compile() {
+ emake PREFIX="${EPREFIX}/usr" LIBDIR="$(get_libdir)"
+}
+
+multilib_src_install() {
+ emake PREFIX="${EPREFIX}/usr" LIBDIR="$(get_libdir)" DESTDIR="${D}" install
+}
diff --git a/media-libs/taglib/Manifest b/media-libs/taglib/Manifest
new file mode 100644
index 0000000..011a10b
--- /dev/null
+++ b/media-libs/taglib/Manifest
@@ -0,0 +1,10 @@
+AUX taglib-1.10-ds-rusxmms.patch 41838 BLAKE2B 9cdfdf376f08a916bfafd603fe1fb3fb89dd618cc08360cd4d35183e346acab23b24acd393e3249c9c08353e7afe988e4ec0d16bb452ba3ec45a91deb8b43dc6 SHA512 24be668fc9754bba3b39c22b842557176ddc1c964fd6493405838911dc8db6317f610a4ee4fc95a3404904f4512b41a0fee826f64ed9c1eda85192dea6880b64
+AUX taglib-1.6.1-install-examples.patch 581 BLAKE2B 65bc122295b1c28a59a56db7bb9894ee0b6ad6a74083bd5417cd098d5b87f47b4437684a556db311859f6439996451046328e2ada3c43ab3259d62b970e778ff SHA512 8af5b52b33c82f0d4961ad3ef0cd72844f84f442db2638ba0187ba808257e7d0602bc5f9c643252c7217d3119b1dd5a6fbf5f84a364f72c1d9154812b14e383b
+AUX taglib-1.9.1-abi-breakage.patch 3888 BLAKE2B 928c61111a3f45dfc6383bf53c3411cfb9ca6851401cd410231b97d4e7a60eb05616a8995e89d8b6e87cb48bf23a7a3cde2e8334ff4af7e529d44f2effecc0f6 SHA512 ec17447f97d83482fbf7fbafd99014344c638436fbadab2144a19679869603106e0f21cdfb738cf77743eb3230d244a81ed93d1bbf62efa1a8a3484d9e43e90b
+AUX taglib-1.9.1-bytevector-simpler.patch 3685 BLAKE2B 38018145649747dbf8ffa44dd6eadc86a162d0bedba5d7ab1603cab9cab938efec2015b53841ecdb83b67dc8bf620c19d0052bf82bd19cd3ff130f2ce593b53f SHA512 1d19d40766e8cb74cb60d5b13fb509c56ee1b0d10f622bfea954bbaf2c5a4908c81e026dc07e83764034647818eb875c71a505a6e1425c9d03820d8e0a3a4a11
+AUX taglib-1.9.1-ds-rusxmms-enforce.patch 844 BLAKE2B 3e6fb11c828f6e6860ababcf5206f18a1f6b787e61c707d9bbbd8937efda66185b2ed3aeade8731757093a71dc82a831a503ee97032b8b51a10a6343854becab SHA512 9f9d98d0778f3cde419d1afc91da122f5c75698ad5a7edc413c5ad3ed07fd894e024674c2ceb1a253ba6fbeae009cc66f6055a427258a48b39999b38a79d2883
+AUX taglib-1.9.1-ds-rusxmms.patch 21026 BLAKE2B 8d92aa3990dcae0c170d60746927e3c581ca2807e512d321f30bc6218667a652a64ef5395d657c6bc635ecc9b26a52865e9fbf09a69455c4f5826f8f48875f29 SHA512 7578e03a6d14c5f09cfd492ddd342f6ea36fd8819e59298f374aefb1be81ec7d2d07b3b8579be8580a3e49060e798f7b34d00324224ad73f8f22baf01a1d480b
+AUX taglib-1.9.1-missing-deletes.patch 1194 BLAKE2B 4559e86ea704f16d58e0e5e671c6f35f2062febfa7287a7abfef1eace5fc49f42db2a79d4895b4f7f05a5ec202dfee39876d18ca326d59aef3d47276bfdddf23 SHA512 1cc2796401dc1291b19245bd9a6bde9d77549d7ddab96b99b8e0f95c331a1ba7296f7107bd99f6f789cd04dd412d6e330db099ab49344c4dd1a10ccfef203fd1
+AUX taglib-1.9.1-order-big-endian.patch 884 BLAKE2B 9382802fe5bb4d2cf20a5a075ffeb5200b2cec5acfe33eb68031a80b7a1718c7578fe9f091f29be61a13bc7a3ec3ee87f1a54033ab271c56f3cf98de74e71263 SHA512 4f2c751f03e976da64fc1480e369443d724c420198600ae1a5e9e9cab3172289c73d15b66ec0c95165da30e52dff1d956314fd71fb067e10a11c350566671bd3
+DIST taglib-1.9.1.tar.gz 654074 BLAKE2B ce8384a9cc8ddfe93c0b24c695963ed43f70366931eb1f1748d5cb92eac08833154fbd5a05307154581854b4a59a414846a0e411722d56330d1bc51695d2be31 SHA512 17523b7ebdd089520289ae817b07f291be93fd0b9d3b2891eb4860a24e45943e94d25b99250c1ac477de5e51b08c39887ca13fdcc2dce17867eb60d1edb26154
+EBUILD taglib-1.9.1-r4.ebuild 2264 BLAKE2B 35ded2500e55ca37a3f84ca558222ac29ad6238fd58275e227f64e1a155aee393a3be5e74c8300a8e7182dbbb0ff36ad4d4536254375cdd4a22959acdf4c4964 SHA512 c1e08587ccec0cbe95624d12906f8cbb6f6eb1fdb9d248b8b3e951f58015ba30565d9b710395f434312cab09c44d532144e2abadc8cf3d03dbab2208d9066ae3
diff --git a/media-libs/taglib/files/taglib-1.10-ds-rusxmms.patch b/media-libs/taglib/files/taglib-1.10-ds-rusxmms.patch
new file mode 100644
index 0000000..584c237
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.10-ds-rusxmms.patch
@@ -0,0 +1,1339 @@
+diff -dPNur taglib-1.10/config.h.cmake taglib-1.10-ds/config.h.cmake
+--- taglib-1.10/config.h.cmake 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/config.h.cmake 2015-11-26 23:03:07.058061207 +0100
+@@ -25,4 +25,7 @@
+ /* Indicates whether debug messages are shown even in release mode */
+ #cmakedefine TRACE_IN_RELEASE 1
+
++/* Defined if you have LibRCC from RusXMMS project */
++#cmakedefine HAVE_LIBRCC 1
++
+ #cmakedefine TESTS_DIR "@TESTS_DIR@"
+diff -dPNur taglib-1.10/ConfigureChecks.cmake taglib-1.10-ds/ConfigureChecks.cmake
+--- taglib-1.10/ConfigureChecks.cmake 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/ConfigureChecks.cmake 2015-11-26 23:03:07.058061207 +0100
+@@ -201,6 +201,8 @@
+ endif()
+ endif()
+
++SET(HAVE_LIBRCC 1)
++
+ if(BUILD_TESTS)
+ find_package(CppUnit)
+ if(NOT CppUnit_FOUND)
+diff -dPNur taglib-1.10/examples/tagreader_c.c taglib-1.10-ds/examples/tagreader_c.c
+--- taglib-1.10/examples/tagreader_c.c 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/examples/tagreader_c.c 2015-11-26 23:03:07.059061228 +0100
+@@ -38,7 +38,7 @@
+ TagLib_Tag *tag;
+ const TagLib_AudioProperties *properties;
+
+- taglib_set_strings_unicode(FALSE);
++ //taglib_set_strings_unicode(FALSE);
+
+ for(i = 1; i < argc; i++) {
+ printf("******************** \"%s\" ********************\n", argv[i]);
+diff -dPNur taglib-1.10/examples/tagwriter.cpp taglib-1.10-ds/examples/tagwriter.cpp
+--- taglib-1.10/examples/tagwriter.cpp 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/examples/tagwriter.cpp 2015-11-26 23:03:07.059061228 +0100
+@@ -115,7 +115,7 @@
+ if(isArgument(argv[i]) && i + 1 < argc && !isArgument(argv[i + 1])) {
+
+ char field = argv[i][1];
+- TagLib::String value = argv[i + 1];
++ TagLib::String value(argv[i + 1], TagLib::String::Locale);
+
+ TagLib::List<TagLib::FileRef>::ConstIterator it;
+ for(it = fileList.begin(); it != fileList.end(); ++it) {
+diff -dPNur taglib-1.10/taglib/CMakeLists.txt taglib-1.10-ds/taglib/CMakeLists.txt
+--- taglib-1.10/taglib/CMakeLists.txt 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/CMakeLists.txt 2015-11-26 23:03:07.059061228 +0100
+@@ -38,6 +38,7 @@
+ audioproperties.h
+ taglib_export.h
+ ${CMAKE_CURRENT_BINARY_DIR}/../taglib_config.h
++ toolkit/rccpatch.h
+ toolkit/taglib.h
+ toolkit/tstring.h
+ toolkit/tlist.h
+@@ -291,6 +292,7 @@
+ )
+
+ set(toolkit_SRCS
++ toolkit/rccpatch.cpp
+ toolkit/tstring.cpp
+ toolkit/tstringlist.cpp
+ toolkit/tbytevector.cpp
+@@ -337,7 +339,7 @@
+ add_library(tag ${tag_LIB_SRCS} ${tag_HDRS})
+
+ if(ZLIB_FOUND)
+- target_link_libraries(tag ${ZLIB_LIBRARIES})
++ target_link_libraries(tag rcc ${ZLIB_LIBRARIES})
+ endif()
+
+ set_target_properties(tag PROPERTIES
+diff -dPNur taglib-1.10/taglib/mpeg/id3v1/id3v1tag.cpp taglib-1.10-ds/taglib/mpeg/id3v1/id3v1tag.cpp
+--- taglib-1.10/taglib/mpeg/id3v1/id3v1tag.cpp 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/mpeg/id3v1/id3v1tag.cpp 2015-11-26 23:03:07.059061228 +0100
+@@ -64,17 +64,18 @@
+
+ String ID3v1::StringHandler::parse(const ByteVector &data) const
+ {
+- return String(data, String::Latin1).stripWhiteSpace();
++ return String(data, String::Latin1ID3).stripWhiteSpace();
+ }
+
+ ByteVector ID3v1::StringHandler::render(const String &s) const
+ {
+ if(!s.isLatin1())
+ {
++ if (String::ID3WType(String::Latin1) == String::Latin1)
+ return ByteVector();
+ }
+
+- return s.data(String::Latin1);
++ return s.data(String::Latin1ID3);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -257,7 +258,7 @@
+ d->track = uchar(data[offset + 29]);
+ }
+ else
+- d->comment = data.mid(offset, 30);
++ d->comment = TagPrivate::stringHandler->parse(data.mid(offset, 30));
+
+ offset += 30;
+
+diff -dPNur taglib-1.10/taglib/mpeg/id3v2/frames/commentsframe.cpp taglib-1.10-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp
+--- taglib-1.10/taglib/mpeg/id3v2/frames/commentsframe.cpp 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp 2015-11-26 23:03:07.059061228 +0100
+@@ -150,10 +150,10 @@
+ return;
+ }
+
+- d->textEncoding = String::Type(data[0]);
++ d->textEncoding = String::ID3Type(data[0]);
+ d->language = data.mid(1, 3);
+
+- int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2;
++ int byteAlign = (d->textEncoding == String::Latin1 || d->textEncoding == String::Latin1ID3 || d->textEncoding == String::Latin1ID3V2 || d->textEncoding == String::UTF8) ? 1 : 2;
+
+ ByteVectorList l = ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2);
+
+@@ -173,11 +173,13 @@
+ ByteVector v;
+
+ String::Type encoding = d->textEncoding;
++
++ encoding = String::ID3WType(encoding);
+
+ encoding = checkTextEncoding(d->description, encoding);
+ encoding = checkTextEncoding(d->text, encoding);
+
+- v.append(char(encoding));
++ v.append(char(String::ID3RealType(encoding)));
+ v.append(d->language.size() == 3 ? d->language : "XXX");
+ v.append(d->description.data(encoding));
+ v.append(textDelimiter(encoding));
+diff -dPNur taglib-1.10/taglib/mpeg/id3v2/frames/textidentificationframe.cpp taglib-1.10-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
+--- taglib-1.10/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 2015-11-26 23:03:07.059061228 +0100
+@@ -187,12 +187,12 @@
+
+ // read the string data type (the first byte of the field data)
+
+- d->textEncoding = String::Type(data[0]);
++ d->textEncoding = String::ID3Type(data[0]);
+
+ // split the byte array into chunks based on the string type (two byte delimiter
+ // for unicode encodings)
+
+- int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2;
++ int byteAlign = (d->textEncoding == String::Latin1 || d->textEncoding == String::Latin1ID3 || d->textEncoding == String::Latin1ID3V2 || d->textEncoding == String::UTF8) ? 1 : 2;
+
+ // build a small counter to strip nulls off the end of the field
+
+@@ -223,11 +223,14 @@
+
+ ByteVector TextIdentificationFrame::renderFields() const
+ {
+- String::Type encoding = checkTextEncoding(d->fieldList, d->textEncoding);
++ String::Type encoding = d->textEncoding;
++
++ encoding = String::ID3WType(encoding);
++ encoding = checkTextEncoding(d->fieldList, encoding);
+
+ ByteVector v;
+
+- v.append(char(encoding));
++ v.append(char(String::ID3RealType(encoding)));
+
+ for(StringList::ConstIterator it = d->fieldList.begin(); it != d->fieldList.end(); it++) {
+
+diff -dPNur taglib-1.10/taglib/mpeg/id3v2/id3v2frame.cpp taglib-1.10-ds/taglib/mpeg/id3v2/id3v2frame.cpp
+--- taglib-1.10/taglib/mpeg/id3v2/id3v2frame.cpp 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/mpeg/id3v2/id3v2frame.cpp 2015-11-26 23:03:07.060061249 +0100
+@@ -339,7 +339,7 @@
+ if((encoding == String::UTF8 || encoding == String::UTF16BE) && version != 4)
+ return String::UTF16;
+
+- if(encoding != String::Latin1)
++ if((encoding != String::Latin1)&&(encoding != String::Latin1ID3V2))
+ return encoding;
+
+ for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) {
+diff -dPNur taglib-1.10/taglib/toolkit/rccpatch.cpp taglib-1.10-ds/taglib/toolkit/rccpatch.cpp
+--- taglib-1.10/taglib/toolkit/rccpatch.cpp 1970-01-01 01:00:00.000000000 +0100
++++ taglib-1.10-ds/taglib/toolkit/rccpatch.cpp 2015-11-26 23:03:07.060061249 +0100
+@@ -0,0 +1,237 @@
++#include <stdlib.h>
++
++#include <string>
++#include "tstring.h"
++#include "tbytevector.h"
++
++//#define RCC_DEBUG
++
++
++#ifndef HAVE_LIBRCC
++# include <config.h>
++#endif
++
++#ifdef HAVE_LIBRCC
++# ifdef RCC_DEBUG
++# include <stdio.h>
++# endif /* RCC_DEBUG */
++# include <librcc.h>
++# include <string.h>
++#endif /* HAVE_LIBRCC */
++
++
++#ifdef HAVE_LIBRCC
++# define ID3_CLASS 0
++# define ID3V2_CLASS 1
++# define UTF_CLASS 2
++# define OUT_CLASS 3
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "id3v2", RCC_CLASS_STANDARD, "id3", NULL, "ID3 v.2 Encoding", 0 },
++ { "utf", RCC_CLASS_KNOWN, "UTF-8", NULL, "Unicode Encoding", 0},
++ { "out", RCC_CLASS_TRANSLATE_LOCALE, "LC_CTYPE", NULL, "Output Encoding", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int rcc_initialized = 0;
++
++static rcc_context ctx = NULL;
++#endif /* HAVE_LIBRCC */
++
++
++void rccTaglibPatchFree() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++void rccTaglibPatchInit() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++#endif /* HAVE_LIBRCC */
++}
++
++void rccTaglibPatchSetContext(void *newctx) {
++#ifdef HAVE_LIBRCC
++ if (newctx) {
++ ctx = (rcc_context)newctx;
++ rcc_initialized = 1;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++static void rccTaglibPatchTryInit() {
++#ifdef HAVE_LIBRCC
++ if (!rcc_initialized) {
++ rccTaglibPatchInit();
++ if (rcc_initialized) atexit(rccTaglibPatchFree);
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++
++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, UTF_CLASS, OUT_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" Output: %s - %s\n", s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++
++ if (res) v.setData(res, rlen);
++ else v.setData("", 0);
++ //v.setData(s.c_str(), s.length());
++
++ return v;
++#else
++ v.setData("", 0);
++
++ return v;
++#endif /* HAVE_LIBRCC */
++}
++
++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool v2 = false) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, UTF_CLASS, v2?ID3V2_CLASS:ID3_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" OutputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++
++ if (res) v.setData(res, rlen);
++ else v.setData("", 0);
++ //v.setData(s.c_str(), s.length());
++
++ return v;
++#else
++ v.setData("", 0);
++
++ return v;
++#endif /* HAVE_LIBRCC */
++}
++
++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, OUT_CLASS, UTF_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" Input: %s - %s\n", s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++
++ if (res) v.setData(res, rlen);
++ else
++#endif /* HAVE_LIBRCC */
++ v.setData("", 0);
++
++ return v;
++}
++
++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 = false) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, v2?ID3V2_CLASS:ID3_CLASS, UTF_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" InputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++ if (res) v.setData(res, rlen + 1);
++ else
++#endif /* HAVE_LIBRCC */
++ v.setData("", 0);
++
++ return v;
++}
++
++TagLib::String::Type rccTaglibPatchGetLocaleType() {
++#ifdef HAVE_LIBRCC
++ size_t len;
++ char charset[32];
++
++ rccTaglibPatchTryInit();
++ if (!rccLocaleGetCharset(charset, NULL, 31)) {
++ if (!strncmp(charset, "UTF", 3)) {
++ len = strlen(charset);
++
++ if (charset[len-1]=='8') return TagLib::String::UTF8;
++ if (!strcmp(charset+(len-2),"16")) return TagLib::String::UTF16;
++ if (!strcmp(charset+(len-4),"16LE")) return TagLib::String::UTF16LE;
++ if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
++ }
++ return TagLib::String::Latin1;
++ }
++#endif /* HAVE_LIBRCC */
++ return TagLib::String::UTF8;
++}
++
++TagLib::String::Type rccTaglibPatchGetID3Type() {
++#ifdef HAVE_LIBRCC
++ size_t len;
++ const char *charset;
++
++ rccTaglibPatchTryInit();
++
++ charset = rccGetCurrentCharsetName(ctx, ID3V2_CLASS);
++ if (charset) {
++ if (!strncmp(charset, "UTF", 3)) {
++ len = strlen(charset);
++
++ if (charset[len-1]=='8') return TagLib::String::UTF8;
++ if (!strcmp(charset+(len-2),"16")) return TagLib::String::UTF16;
++ if (!strcmp(charset+(len-4),"16LE")) return TagLib::String::UTF16LE;
++ if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
++ }
++ return TagLib::String::Latin1ID3V2;
++ } else {
++ // Error or no-language configured: If Latin1ID3V2 is returned we normally will use the default unicode encoding unless Latin1 is selected by taglib
++ return TagLib::String::Latin1ID3V2;
++ }
++#endif /* HAVE_LIBRCC */
++ return TagLib::String::Latin1;
++}
+diff -dPNur taglib-1.10/taglib/toolkit/rccpatch.h taglib-1.10-ds/taglib/toolkit/rccpatch.h
+--- taglib-1.10/taglib/toolkit/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ taglib-1.10-ds/taglib/toolkit/rccpatch.h 2015-11-26 23:03:07.060061249 +0100
+@@ -0,0 +1,20 @@
++#ifndef _RCC_PATCH_H
++#define _RCC_PATCH_H
++
++#include <string.h>
++#include "tstring.h"
++#include "tbytevector.h"
++
++void rccTaglibPatchFree();
++void rccTaglibPatchInit();
++void rccTaglibPatchSetContext(void *newctx);
++
++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s);
++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s);
++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool v2 = false);
++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 = false);
++
++TagLib::String::Type rccTaglibPatchGetLocaleType();
++TagLib::String::Type rccTaglibPatchGetID3Type();
++
++#endif /* _RCC_PATCH_H */
+diff -dPNur taglib-1.10/taglib/toolkit/tstring.cpp taglib-1.10-ds/taglib/toolkit/tstring.cpp
+--- taglib-1.10/taglib/toolkit/tstring.cpp 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/toolkit/tstring.cpp 2015-11-26 23:10:01.286853654 +0100
+@@ -29,6 +29,7 @@
+ #include <config.h>
+ #endif
+
++#include "rccpatch.h"
+ #include "tstring.h"
+ #include "tdebug.h"
+ #include "tstringlist.h"
+@@ -167,8 +168,11 @@
+ String::String(const std::string &s, Type t)
+ : d(new StringPrivate())
+ {
+- if(t == Latin1)
+- copyFromLatin1(s.c_str(), s.length());
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
++ copyFromLatin1(&s[0], s.length(), true, t);
+ else if(t == String::UTF8)
+ copyFromUTF8(s.c_str(), s.length());
+ else {
+@@ -215,8 +219,11 @@
+ String::String(const char *s, Type t)
+ : d(new StringPrivate())
+ {
+- if(t == Latin1)
+- copyFromLatin1(s, ::strlen(s));
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
++ copyFromLatin1(s, ::strlen(s), true, t);
+ else if(t == String::UTF8)
+ copyFromUTF8(s, ::strlen(s));
+ else {
+@@ -237,7 +244,10 @@
+ String::String(char c, Type t)
+ : d(new StringPrivate(1, static_cast<uchar>(c)))
+ {
+- if(t != Latin1 && t != UTF8) {
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t != Latin1 && t != Latin1ID3 && t != Latin1ID3V2 && t != UTF8) {
+ debug("String::String() -- char should not contain UTF16.");
+ }
+ }
+@@ -248,8 +258,11 @@
+ if(v.isEmpty())
+ return;
+
+- if(t == Latin1)
+- copyFromLatin1(v.data(), v.size());
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
++ copyFromLatin1(v.data(), v.size(), true, t);
+ else if(t == UTF8)
+ copyFromUTF8(v.data(), v.size());
+ else
+@@ -396,8 +409,38 @@
+
+ ByteVector String::data(Type t) const
+ {
+- switch(t)
+- {
++ ByteVector v;
++
++ if (t == Locale) {
++ // The source is either Unicode or real Latin1 (if rcc is bypassed)
++ std::string s = to8Bit(true);
++
++ // In case of UTF8 locale, this probably will return NULL (no recoding needed), but we will take UTF8 path in the next swtich
++ v = rccTaglibPatchRecodeOutput(s);
++ if (v.size()) return v;
++
++ t = rccTaglibPatchGetLocaleType();
++ }
++
++ switch(t) {
++ case Latin1ID3:
++ case Latin1ID3V2:
++ {
++ std::string s = to8Bit(true);
++ if (t == Latin1ID3) v = rccTaglibPatchRecodeOutputID3(s, false);
++ else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeOutputID3(s, true);
++ if (v.size())
++ return v;
++
++ // we don't know if we got NULL because rcc is disabled (error) or UTF8 output is required
++ if ((t == Latin1ID3V2)&&(rccTaglibPatchGetID3Type() == UTF8)) {
++ v.setData(s.c_str(), s.length());
++ } else {
++ for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++)
++ v.append(char(*it));
++ }
++ return v;
++ }
+ case Latin1:
+ {
+ ByteVector v(size(), 0);
+@@ -738,12 +781,30 @@
+ // private members
+ ////////////////////////////////////////////////////////////////////////////////
+
+-void String::copyFromLatin1(const char *s, size_t length)
++void String::copyFromLatin1(const char *s, size_t length, bool prepare, Type t)
+ {
+ d->data.resize(length);
+
+ for(size_t i = 0; i < length; ++i)
+ d->data[i] = static_cast<uchar>(s[i]);
++
++ // librcc conversation
++ if (prepare) {
++ std::string s = to8Bit(false);
++ ByteVector v;
++
++ if (t == Latin1ID3) v = rccTaglibPatchRecodeInputID3(s, false);
++ else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeInputID3(s, true);
++ else /* Latin1 converted from Locale */ v = rccTaglibPatchRecodeInput(s);
++
++ if (v.size()) {
++ copyFromUTF8(v.data(), v.size());
++ } else {
++ // We don't know if we got UTF-8 encoded string or either rcc is disable or something is failed,
++ // since standard applications are really expecting here Latin1, it is safe to just check if we have violations of UTF8
++ //if (Unicode::isLegalUTF8(s)) t = UTF8;
++ }
++ }
+ }
+
+ void String::copyFromUTF8(const char *s, size_t length)
+@@ -859,7 +920,33 @@
+
+ std::ostream &operator<<(std::ostream &s, const TagLib::String &str)
+ {
+- s << str.to8Bit();
++ TagLib::ByteVector bv = str.data(TagLib::String::Locale);
++ s << bv;
+ return s;
+ }
+
++TagLib::String::Type TagLib::String::ID3Type(int i)
++{
++ if(i == Latin1)
++ return Latin1ID3V2;
++ return Type(i);
++};
++
++TagLib::String::Type TagLib::String::ID3WType(Type type)
++{
++ Type rcc_type = rccTaglibPatchGetID3Type();
++ if((rcc_type == Latin1ID3)||(rcc_type == Latin1ID3V2)||(rcc_type == Latin1)) {
++ if(type == Latin1) return
++ rcc_type;
++ return type;
++ }
++
++ return rcc_type;
++};
++
++TagLib::String::Type TagLib::String::ID3RealType(Type type)
++{
++ if((type == Latin1ID3) || (type == Latin1ID3V2))
++ return Latin1;
++ return type;
++}
+diff -dPNur taglib-1.10/taglib/toolkit/tstring.h taglib-1.10-ds/taglib/toolkit/tstring.h
+--- taglib-1.10/taglib/toolkit/tstring.h 2015-11-11 22:41:59.000000000 +0100
++++ taglib-1.10-ds/taglib/toolkit/tstring.h 2015-11-26 23:03:07.061061271 +0100
+@@ -96,6 +96,18 @@
+ */
+ enum Type {
+ /*!
++ * Determine using current locale settings
++ */
++ Locale = -1,
++ /*!
++ * Latin1 for ID3 tags.
++ */
++ Latin1ID3 = 65,
++ /*!
++ * Latin1 for ID3v2 tags.
++ */
++ Latin1ID3V2 = 66,
++ /*!
+ * IS08859-1, or <i>Latin1</i> encoding. 8 bit characters.
+ */
+ Latin1 = 0,
+@@ -117,6 +129,10 @@
+ */
+ UTF16LE = 4
+ };
++
++ static Type ID3Type(int i);
++ static Type ID3WType(Type type);
++ static Type ID3RealType(Type type);
+
+ /*!
+ * Constructs an empty String.
+@@ -519,7 +535,7 @@
+ * Converts a \e Latin-1 string into \e UTF-16(without BOM/CPU byte order)
+ * and copies it to the internal buffer.
+ */
+- void copyFromLatin1(const char *s, size_t length);
++ void copyFromLatin1(const char *s, size_t length, bool prepare = false, Type t = Latin1);
+
+ /*!
+ * Converts a \e UTF-8 string into \e UTF-16(without BOM/CPU byte order)
+diff -dPNur taglib-1.10/taglib-1.10-ds-rusxmms.patch taglib-1.10-ds/taglib-1.10-ds-rusxmms.patch
+--- taglib-1.10/taglib-1.10-ds-rusxmms.patch 1970-01-01 01:00:00.000000000 +0100
++++ taglib-1.10-ds/taglib-1.10-ds-rusxmms.patch 2015-11-14 15:40:37.000000000 +0100
+@@ -0,0 +1,669 @@
++diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
++index 88980ea..e4f44d3 100644
++--- a/ConfigureChecks.cmake
+++++ b/ConfigureChecks.cmake
++@@ -201,6 +201,8 @@ if(NOT ZLIB_SOURCE)
++ endif()
++ endif()
++
+++SET(HAVE_LIBRCC 1)
+++
++ if(BUILD_TESTS)
++ find_package(CppUnit)
++ if(NOT CppUnit_FOUND)
++diff --git a/config.h.cmake b/config.h.cmake
++index ee0e67a..2abd49c 100644
++--- a/config.h.cmake
+++++ b/config.h.cmake
++@@ -25,4 +25,7 @@
++ /* Indicates whether debug messages are shown even in release mode */
++ #cmakedefine TRACE_IN_RELEASE 1
++
+++/* Defined if you have LibRCC from RusXMMS project */
+++#cmakedefine HAVE_LIBRCC 1
+++
++ #cmakedefine TESTS_DIR "@TESTS_DIR@"
++diff --git a/examples/tagreader_c.c b/examples/tagreader_c.c
++index 0436992..e0f17d8 100644
++--- a/examples/tagreader_c.c
+++++ b/examples/tagreader_c.c
++@@ -38,7 +38,7 @@ int main(int argc, char *argv[])
++ TagLib_Tag *tag;
++ const TagLib_AudioProperties *properties;
++
++- taglib_set_strings_unicode(FALSE);
+++ //taglib_set_strings_unicode(FALSE);
++
++ for(i = 1; i < argc; i++) {
++ printf("******************** \"%s\" ********************\n", argv[i]);
++diff --git a/examples/tagwriter.cpp b/examples/tagwriter.cpp
++index ed8b0d7..6a7a263 100644
++--- a/examples/tagwriter.cpp
+++++ b/examples/tagwriter.cpp
++@@ -115,7 +115,7 @@ int main(int argc, char *argv[])
++ if(isArgument(argv[i]) && i + 1 < argc && !isArgument(argv[i + 1])) {
++
++ char field = argv[i][1];
++- TagLib::String value = argv[i + 1];
+++ TagLib::String value(argv[i + 1], TagLib::String::Locale);
++
++ TagLib::List<TagLib::FileRef>::ConstIterator it;
++ for(it = fileList.begin(); it != fileList.end(); ++it) {
++diff --git a/taglib/CMakeLists.txt b/taglib/CMakeLists.txt
++index 73c1a2f..cd7ea22 100644
++--- a/taglib/CMakeLists.txt
+++++ b/taglib/CMakeLists.txt
++@@ -38,6 +38,7 @@ set(tag_HDRS
++ audioproperties.h
++ taglib_export.h
++ ${CMAKE_CURRENT_BINARY_DIR}/../taglib_config.h
+++ toolkit/rccpatch.h
++ toolkit/taglib.h
++ toolkit/tstring.h
++ toolkit/tlist.h
++@@ -291,6 +292,7 @@ set(xm_SRCS
++ )
++
++ set(toolkit_SRCS
+++ toolkit/rccpatch.cpp
++ toolkit/tstring.cpp
++ toolkit/tstringlist.cpp
++ toolkit/tbytevector.cpp
++@@ -337,7 +339,7 @@ set(tag_LIB_SRCS
++ add_library(tag ${tag_LIB_SRCS} ${tag_HDRS})
++
++ if(ZLIB_FOUND)
++- target_link_libraries(tag ${ZLIB_LIBRARIES})
+++ target_link_libraries(tag rcc ${ZLIB_LIBRARIES})
++ endif()
++
++ set_target_properties(tag PROPERTIES
++diff --git a/taglib/mpeg/id3v1/id3v1tag.cpp b/taglib/mpeg/id3v1/id3v1tag.cpp
++index 9fc8cfd..5352acc 100644
++--- a/taglib/mpeg/id3v1/id3v1tag.cpp
+++++ b/taglib/mpeg/id3v1/id3v1tag.cpp
++@@ -64,17 +64,18 @@ StringHandler::StringHandler()
++
++ String ID3v1::StringHandler::parse(const ByteVector &data) const
++ {
++- return String(data, String::Latin1).stripWhiteSpace();
+++ return String(data, String::Latin1ID3).stripWhiteSpace();
++ }
++
++ ByteVector ID3v1::StringHandler::render(const String &s) const
++ {
++ if(!s.isLatin1())
++ {
+++ if (String::ID3WType(String::Latin1) == String::Latin1)
++ return ByteVector();
++ }
++
++- return s.data(String::Latin1);
+++ return s.data(String::Latin1ID3);
++ }
++
++ ////////////////////////////////////////////////////////////////////////////////
++@@ -257,7 +258,7 @@ void ID3v1::Tag::parse(const ByteVector &data)
++ d->track = uchar(data[offset + 29]);
++ }
++ else
++- d->comment = data.mid(offset, 30);
+++ d->comment = TagPrivate::stringHandler->parse(data.mid(offset, 30));
++
++ offset += 30;
++
++diff --git a/taglib/mpeg/id3v2/frames/commentsframe.cpp b/taglib/mpeg/id3v2/frames/commentsframe.cpp
++index deaa9d9..c0aba2b 100644
++--- a/taglib/mpeg/id3v2/frames/commentsframe.cpp
+++++ b/taglib/mpeg/id3v2/frames/commentsframe.cpp
++@@ -150,10 +150,10 @@ void CommentsFrame::parseFields(const ByteVector &data)
++ return;
++ }
++
++- d->textEncoding = String::Type(data[0]);
+++ d->textEncoding = String::ID3Type(data[0]);
++ d->language = data.mid(1, 3);
++
++- int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2;
+++ int byteAlign = (d->textEncoding == String::Latin1 || d->textEncoding == String::Latin1ID3 || d->textEncoding == String::Latin1ID3V2 || d->textEncoding == String::UTF8) ? 1 : 2;
++
++ ByteVectorList l = ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2);
++
++@@ -173,11 +173,13 @@ ByteVector CommentsFrame::renderFields() const
++ ByteVector v;
++
++ String::Type encoding = d->textEncoding;
+++
+++ encoding = String::ID3WType(encoding);
++
++ encoding = checkTextEncoding(d->description, encoding);
++ encoding = checkTextEncoding(d->text, encoding);
++
++- v.append(char(encoding));
+++ v.append(char(String::ID3RealType(encoding)));
++ v.append(d->language.size() == 3 ? d->language : "XXX");
++ v.append(d->description.data(encoding));
++ v.append(textDelimiter(encoding));
++diff --git a/taglib/mpeg/id3v2/frames/textidentificationframe.cpp b/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
++index b77dd54..a4a7277 100644
++--- a/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
+++++ b/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
++@@ -187,12 +187,12 @@ void TextIdentificationFrame::parseFields(const ByteVector &data)
++
++ // read the string data type (the first byte of the field data)
++
++- d->textEncoding = String::Type(data[0]);
+++ d->textEncoding = String::ID3Type(data[0]);
++
++ // split the byte array into chunks based on the string type (two byte delimiter
++ // for unicode encodings)
++
++- int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2;
+++ int byteAlign = (d->textEncoding == String::Latin1 || d->textEncoding == String::Latin1ID3 || d->textEncoding == String::Latin1ID3V2 || d->textEncoding == String::UTF8) ? 1 : 2;
++
++ // build a small counter to strip nulls off the end of the field
++
++@@ -223,11 +223,14 @@ void TextIdentificationFrame::parseFields(const ByteVector &data)
++
++ ByteVector TextIdentificationFrame::renderFields() const
++ {
++- String::Type encoding = checkTextEncoding(d->fieldList, d->textEncoding);
+++ String::Type encoding = d->textEncoding;
+++
+++ encoding = String::ID3WType(encoding);
+++ encoding = checkTextEncoding(d->fieldList, encoding);
++
++ ByteVector v;
++
++- v.append(char(encoding));
+++ v.append(char(String::ID3RealType(encoding)));
++
++ for(StringList::ConstIterator it = d->fieldList.begin(); it != d->fieldList.end(); it++) {
++
++diff --git a/taglib/mpeg/id3v2/id3v2frame.cpp b/taglib/mpeg/id3v2/id3v2frame.cpp
++index bee5375..fea5ab3 100644
++--- a/taglib/mpeg/id3v2/id3v2frame.cpp
+++++ b/taglib/mpeg/id3v2/id3v2frame.cpp
++@@ -339,7 +339,7 @@ String::Type Frame::checkEncoding(const StringList &fields, String::Type encodin
++ if((encoding == String::UTF8 || encoding == String::UTF16BE) && version != 4)
++ return String::UTF16;
++
++- if(encoding != String::Latin1)
+++ if((encoding != String::Latin1)&&(encoding != String::Latin1ID3V2))
++ return encoding;
++
++ for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) {
++diff --git a/taglib/toolkit/rccpatch.cpp b/taglib/toolkit/rccpatch.cpp
++new file mode 100644
++index 0000000..af99323
++--- /dev/null
+++++ b/taglib/toolkit/rccpatch.cpp
++@@ -0,0 +1,237 @@
+++#include <stdlib.h>
+++
+++#include <string>
+++#include "tstring.h"
+++#include "tbytevector.h"
+++
+++//#define RCC_DEBUG
+++
+++
+++#ifndef HAVE_LIBRCC
+++# include <config.h>
+++#endif
+++
+++#ifdef HAVE_LIBRCC
+++# ifdef RCC_DEBUG
+++# include <stdio.h>
+++# endif /* RCC_DEBUG */
+++# include <librcc.h>
+++# include <string.h>
+++#endif /* HAVE_LIBRCC */
+++
+++
+++#ifdef HAVE_LIBRCC
+++# define ID3_CLASS 0
+++# define ID3V2_CLASS 1
+++# define UTF_CLASS 2
+++# define OUT_CLASS 3
+++static rcc_class classes[] = {
+++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
+++ { "id3v2", RCC_CLASS_STANDARD, "id3", NULL, "ID3 v.2 Encoding", 0 },
+++ { "utf", RCC_CLASS_KNOWN, "UTF-8", NULL, "Unicode Encoding", 0},
+++ { "out", RCC_CLASS_TRANSLATE_LOCALE, "LC_CTYPE", NULL, "Output Encoding", 0 },
+++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
+++};
+++
+++static int rcc_initialized = 0;
+++
+++static rcc_context ctx = NULL;
+++#endif /* HAVE_LIBRCC */
+++
+++
+++void rccTaglibPatchFree() {
+++#ifdef HAVE_LIBRCC
+++ if (rcc_initialized) {
+++ rccFree();
+++ rcc_initialized = 0;
+++ }
+++#endif /* HAVE_LIBRCC */
+++}
+++
+++void rccTaglibPatchInit() {
+++#ifdef HAVE_LIBRCC
+++ if (rcc_initialized) return;
+++ rccInit();
+++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
+++ rccLoad(NULL, "xmms");
+++ rccInitDb4(NULL, NULL, 0);
+++ rcc_initialized = 1;
+++#endif /* HAVE_LIBRCC */
+++}
+++
+++void rccTaglibPatchSetContext(void *newctx) {
+++#ifdef HAVE_LIBRCC
+++ if (newctx) {
+++ ctx = (rcc_context)newctx;
+++ rcc_initialized = 1;
+++ }
+++#endif /* HAVE_LIBRCC */
+++}
+++
+++static void rccTaglibPatchTryInit() {
+++#ifdef HAVE_LIBRCC
+++ if (!rcc_initialized) {
+++ rccTaglibPatchInit();
+++ if (rcc_initialized) atexit(rccTaglibPatchFree);
+++ }
+++#endif /* HAVE_LIBRCC */
+++}
+++
+++
+++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s) {
+++ TagLib::ByteVector v;
+++#ifdef HAVE_LIBRCC
+++ size_t rlen;
+++ char *res;
+++
+++ rccTaglibPatchTryInit();
+++
+++ res = rccSizedRecode(ctx, UTF_CLASS, OUT_CLASS, s.c_str(), s.length(), &rlen);
+++#ifdef RCC_DEBUG
+++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
+++ if (*c > 127) {
+++ printf(" Output: %s - %s\n", s.c_str(), res?res:"null");
+++ break;
+++ }
+++ }
+++#endif /* RCC_DEBUG */
+++
+++ if (res) v.setData(res, rlen);
+++ else v.setData("", 0);
+++ //v.setData(s.c_str(), s.length());
+++
+++ return v;
+++#else
+++ v.setData("", 0);
+++
+++ return v;
+++#endif /* HAVE_LIBRCC */
+++}
+++
+++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool v2 = false) {
+++ TagLib::ByteVector v;
+++#ifdef HAVE_LIBRCC
+++ size_t rlen;
+++ char *res;
+++
+++ rccTaglibPatchTryInit();
+++
+++ res = rccSizedRecode(ctx, UTF_CLASS, v2?ID3V2_CLASS:ID3_CLASS, s.c_str(), s.length(), &rlen);
+++#ifdef RCC_DEBUG
+++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
+++ if (*c > 127) {
+++ printf(" OutputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
+++ break;
+++ }
+++ }
+++#endif /* RCC_DEBUG */
+++
+++ if (res) v.setData(res, rlen);
+++ else v.setData("", 0);
+++ //v.setData(s.c_str(), s.length());
+++
+++ return v;
+++#else
+++ v.setData("", 0);
+++
+++ return v;
+++#endif /* HAVE_LIBRCC */
+++}
+++
+++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s) {
+++ TagLib::ByteVector v;
+++#ifdef HAVE_LIBRCC
+++ size_t rlen;
+++ char *res;
+++
+++ rccTaglibPatchTryInit();
+++
+++ res = rccSizedRecode(ctx, OUT_CLASS, UTF_CLASS, s.c_str(), s.length(), &rlen);
+++#ifdef RCC_DEBUG
+++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
+++ if (*c > 127) {
+++ printf(" Input: %s - %s\n", s.c_str(), res?res:"null");
+++ break;
+++ }
+++ }
+++#endif /* RCC_DEBUG */
+++
+++ if (res) v.setData(res, rlen);
+++ else
+++#endif /* HAVE_LIBRCC */
+++ v.setData("", 0);
+++
+++ return v;
+++}
+++
+++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 = false) {
+++ TagLib::ByteVector v;
+++#ifdef HAVE_LIBRCC
+++ size_t rlen;
+++ char *res;
+++
+++ rccTaglibPatchTryInit();
+++
+++ res = rccSizedRecode(ctx, v2?ID3V2_CLASS:ID3_CLASS, UTF_CLASS, s.c_str(), s.length(), &rlen);
+++#ifdef RCC_DEBUG
+++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
+++ if (*c > 127) {
+++ printf(" InputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
+++ break;
+++ }
+++ }
+++#endif /* RCC_DEBUG */
+++ if (res) v.setData(res, rlen + 1);
+++ else
+++#endif /* HAVE_LIBRCC */
+++ v.setData("", 0);
+++
+++ return v;
+++}
+++
+++TagLib::String::Type rccTaglibPatchGetLocaleType() {
+++#ifdef HAVE_LIBRCC
+++ size_t len;
+++ char charset[32];
+++
+++ rccTaglibPatchTryInit();
+++ if (!rccLocaleGetCharset(charset, NULL, 31)) {
+++ if (!strncmp(charset, "UTF", 3)) {
+++ len = strlen(charset);
+++
+++ if (charset[len-1]=='8') return TagLib::String::UTF8;
+++ if (!strcmp(charset+(len-2),"16")) return TagLib::String::UTF16;
+++ if (!strcmp(charset+(len-4),"16LE")) return TagLib::String::UTF16LE;
+++ if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
+++ }
+++ return TagLib::String::Latin1;
+++ }
+++#endif /* HAVE_LIBRCC */
+++ return TagLib::String::UTF8;
+++}
+++
+++TagLib::String::Type rccTaglibPatchGetID3Type() {
+++#ifdef HAVE_LIBRCC
+++ size_t len;
+++ const char *charset;
+++
+++ rccTaglibPatchTryInit();
+++
+++ charset = rccGetCurrentCharsetName(ctx, ID3V2_CLASS);
+++ if (charset) {
+++ if (!strncmp(charset, "UTF", 3)) {
+++ len = strlen(charset);
+++
+++ if (charset[len-1]=='8') return TagLib::String::UTF8;
+++ if (!strcmp(charset+(len-2),"16")) return TagLib::String::UTF16;
+++ if (!strcmp(charset+(len-4),"16LE")) return TagLib::String::UTF16LE;
+++ if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
+++ }
+++ return TagLib::String::Latin1ID3V2;
+++ } else {
+++ // Error or no-language configured: If Latin1ID3V2 is returned we normally will use the default unicode encoding unless Latin1 is selected by taglib
+++ return TagLib::String::Latin1ID3V2;
+++ }
+++#endif /* HAVE_LIBRCC */
+++ return TagLib::String::Latin1;
+++}
++diff --git a/taglib/toolkit/rccpatch.h b/taglib/toolkit/rccpatch.h
++new file mode 100644
++index 0000000..31f4410
++--- /dev/null
+++++ b/taglib/toolkit/rccpatch.h
++@@ -0,0 +1,20 @@
+++#ifndef _RCC_PATCH_H
+++#define _RCC_PATCH_H
+++
+++#include <string.h>
+++#include "tstring.h"
+++#include "tbytevector.h"
+++
+++void rccTaglibPatchFree();
+++void rccTaglibPatchInit();
+++void rccTaglibPatchSetContext(void *newctx);
+++
+++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s);
+++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s);
+++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool v2 = false);
+++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 = false);
+++
+++TagLib::String::Type rccTaglibPatchGetLocaleType();
+++TagLib::String::Type rccTaglibPatchGetID3Type();
+++
+++#endif /* _RCC_PATCH_H */
++diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp
++index 258e1fc..70ff160 100644
++--- a/taglib/toolkit/tstring.cpp
+++++ b/taglib/toolkit/tstring.cpp
++@@ -29,6 +29,7 @@
++ #include <config.h>
++ #endif
++
+++#include "rccpatch.h"
++ #include "tstring.h"
++ #include "tdebug.h"
++ #include "tstringlist.h"
++@@ -167,8 +168,11 @@ String::String(const String &s)
++ String::String(const std::string &s, Type t)
++ : d(new StringPrivate())
++ {
++- if(t == Latin1)
++- copyFromLatin1(s.c_str(), s.length());
+++ if(t == Locale)
+++ t = rccTaglibPatchGetLocaleType();
+++
+++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
+++ copyFromLatin1(&s[0], s.length(), true, t);
++ else if(t == String::UTF8)
++ copyFromUTF8(s.c_str(), s.length());
++ else {
++@@ -215,8 +219,11 @@ String::String(const wchar_t *s, Type t)
++ String::String(const char *s, Type t)
++ : d(new StringPrivate())
++ {
++- if(t == Latin1)
++- copyFromLatin1(s, ::strlen(s));
+++ if(t == Locale)
+++ t = rccTaglibPatchGetLocaleType();
+++
+++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
+++ copyFromLatin1(s, ::strlen(s), true, t);
++ else if(t == String::UTF8)
++ copyFromUTF8(s, ::strlen(s));
++ else {
++@@ -248,8 +255,11 @@ String::String(const ByteVector &v, Type t)
++ if(v.isEmpty())
++ return;
++
++- if(t == Latin1)
++- copyFromLatin1(v.data(), v.size());
+++ if(t == Locale)
+++ t = rccTaglibPatchGetLocaleType();
+++
+++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
+++ copyFromLatin1(v.data(), v.size(), true, t);
++ else if(t == UTF8)
++ copyFromUTF8(v.data(), v.size());
++ else
++@@ -396,8 +406,38 @@ bool String::isNull() const
++
++ ByteVector String::data(Type t) const
++ {
++- switch(t)
++- {
+++ ByteVector v;
+++
+++ if (t == Locale) {
+++ // The source is either Unicode or real Latin1 (if rcc is bypassed)
+++ std::string s = to8Bit(true);
+++
+++ // In case of UTF8 locale, this probably will return NULL (no recoding needed), but we will take UTF8 path in the next swtich
+++ v = rccTaglibPatchRecodeOutput(s);
+++ if (v.size()) return v;
+++
+++ t = rccTaglibPatchGetLocaleType();
+++ }
+++
+++ switch(t) {
+++ case Latin1ID3:
+++ case Latin1ID3V2:
+++ {
+++ std::string s = to8Bit(true);
+++ if (t == Latin1ID3) v = rccTaglibPatchRecodeOutputID3(s, false);
+++ else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeOutputID3(s, true);
+++ if (v.size())
+++ return v;
+++
+++ // we don't know if we got NULL because rcc is disabled (error) or UTF8 output is required
+++ if ((t == Latin1ID3V2)&&(rccTaglibPatchGetID3Type() == UTF8)) {
+++ v.setData(s.c_str(), s.length());
+++ } else {
+++ for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++)
+++ v.append(char(*it));
+++ }
+++ return v;
+++ }
++ case Latin1:
++ {
++ ByteVector v(size(), 0);
++@@ -738,12 +778,30 @@ void String::detach()
++ // private members
++ ////////////////////////////////////////////////////////////////////////////////
++
++-void String::copyFromLatin1(const char *s, size_t length)
+++void String::copyFromLatin1(const char *s, size_t length, bool prepare, Type t)
++ {
++ d->data.resize(length);
++
++ for(size_t i = 0; i < length; ++i)
++ d->data[i] = static_cast<uchar>(s[i]);
+++
+++ // librcc conversation
+++ if (prepare) {
+++ std::string s = to8Bit(false);
+++ ByteVector v;
+++
+++ if (t == Latin1ID3) v = rccTaglibPatchRecodeInputID3(s, false);
+++ else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeInputID3(s, true);
+++ else /* Latin1 converted from Locale */ v = rccTaglibPatchRecodeInput(s);
+++
+++ if (v.size()) {
+++ copyFromUTF8(v.data(), v.size());
+++ } else {
+++ // We don't know if we got UTF-8 encoded string or either rcc is disable or something is failed,
+++ // since standard applications are really expecting here Latin1, it is safe to just check if we have violations of UTF8
+++ //if (Unicode::isLegalUTF8(s)) t = UTF8;
+++ }
+++ }
++ }
++
++ void String::copyFromUTF8(const char *s, size_t length)
++@@ -859,7 +917,33 @@ const TagLib::String operator+(const TagLib::String &s1, const char *s2)
++
++ std::ostream &operator<<(std::ostream &s, const TagLib::String &str)
++ {
++- s << str.to8Bit();
+++ TagLib::ByteVector bv = str.data(TagLib::String::Locale);
+++ s << bv;
++ return s;
++ }
++
+++TagLib::String::Type TagLib::String::ID3Type(int i)
+++{
+++ if(i == Latin1)
+++ return Latin1ID3V2;
+++ return Type(i);
+++};
+++
+++TagLib::String::Type TagLib::String::ID3WType(Type type)
+++{
+++ Type rcc_type = rccTaglibPatchGetID3Type();
+++ if((rcc_type == Latin1ID3)||(rcc_type == Latin1ID3V2)||(rcc_type == Latin1)) {
+++ if(type == Latin1) return
+++ rcc_type;
+++ return type;
+++ }
+++
+++ return rcc_type;
+++};
+++
+++TagLib::String::Type TagLib::String::ID3RealType(Type type)
+++{
+++ if((type == Latin1ID3) || (type == Latin1ID3V2))
+++ return Latin1;
+++ return type;
+++}
++diff --git a/taglib/toolkit/tstring.h b/taglib/toolkit/tstring.h
++index 8b73988..8efca25 100644
++--- a/taglib/toolkit/tstring.h
+++++ b/taglib/toolkit/tstring.h
++@@ -96,6 +96,18 @@ namespace TagLib {
++ */
++ enum Type {
++ /*!
+++ * Determine using current locale settings
+++ */
+++ Locale = -1,
+++ /*!
+++ * Latin1 for ID3 tags.
+++ */
+++ Latin1ID3 = 65,
+++ /*!
+++ * Latin1 for ID3v2 tags.
+++ */
+++ Latin1ID3V2 = 66,
+++ /*!
++ * IS08859-1, or <i>Latin1</i> encoding. 8 bit characters.
++ */
++ Latin1 = 0,
++@@ -117,6 +129,10 @@ namespace TagLib {
++ */
++ UTF16LE = 4
++ };
+++
+++ static Type ID3Type(int i);
+++ static Type ID3WType(Type type);
+++ static Type ID3RealType(Type type);
++
++ /*!
++ * Constructs an empty String.
++@@ -519,7 +535,7 @@ namespace TagLib {
++ * Converts a \e Latin-1 string into \e UTF-16(without BOM/CPU byte order)
++ * and copies it to the internal buffer.
++ */
++- void copyFromLatin1(const char *s, size_t length);
+++ void copyFromLatin1(const char *s, size_t length, bool prepare = false, Type t = Latin1);
++
++ /*!
++ * Converts a \e UTF-8 string into \e UTF-16(without BOM/CPU byte order)
diff --git a/media-libs/taglib/files/taglib-1.6.1-install-examples.patch b/media-libs/taglib/files/taglib-1.6.1-install-examples.patch
new file mode 100644
index 0000000..f537681
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.6.1-install-examples.patch
@@ -0,0 +1,16 @@
+diff -purN taglib-1.6.1.orig/examples/CMakeLists.txt taglib-1.6.1/examples/CMakeLists.txt
+--- taglib-1.6.1.orig/examples/CMakeLists.txt 2009-09-09 14:16:38.000000000 -0400
++++ taglib-1.6.1/examples/CMakeLists.txt 2009-12-14 18:47:33.405385063 -0500
+@@ -45,6 +45,12 @@ ADD_EXECUTABLE(strip-id3v1 strip-id3v1.c
+
+ TARGET_LINK_LIBRARIES(strip-id3v1 tag )
+
++INSTALL(TARGETS
++ tagreader tagreader_c tagwriter framelist strip-id3v1
++ LIBRARY DESTINATION ${LIB_INSTALL_DIR}
++ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
++ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
++)
+
+ endif(BUILD_EXAMPLES)
+
diff --git a/media-libs/taglib/files/taglib-1.9.1-abi-breakage.patch b/media-libs/taglib/files/taglib-1.9.1-abi-breakage.patch
new file mode 100644
index 0000000..930439f
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.9.1-abi-breakage.patch
@@ -0,0 +1,107 @@
+From 3bf30af66c8fd77a88d9379a0956ddb2fc70dc20 Mon Sep 17 00:00:00 2001
+From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
+Date: Wed, 6 Nov 2013 17:01:21 +0900
+Subject: [PATCH 2/6] Fixed ABI breakage in TagLib::String
+
+---
+ taglib/toolkit/tstring.cpp | 20 ++++++++++++++++++--
+ taglib/toolkit/tstring.h | 12 ++++++++++--
+ tests/test_string.cpp | 14 ++++++++++++++
+ 3 files changed, 42 insertions(+), 4 deletions(-)
+
+diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp
+index 75a9833..fb6e947 100644
+--- a/taglib/toolkit/tstring.cpp
++++ b/taglib/toolkit/tstring.cpp
+@@ -209,8 +209,16 @@ String::String(const std::string &s, Type t)
+ String::String(const wstring &s, Type t)
+ : d(new StringPrivate())
+ {
+- if(t == UTF16 || t == UTF16BE || t == UTF16LE)
++ if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
++ // This looks ugly but needed for the compatibility with TagLib1.8.
++ // Should be removed in TabLib2.0.
++ if (t == UTF16BE)
++ t = WCharByteOrder;
++ else if (t == UTF16LE)
++ t = (WCharByteOrder == UTF16LE ? UTF16BE : UTF16LE);
++
+ copyFromUTF16(s.c_str(), s.length(), t);
++ }
+ else {
+ debug("String::String() -- A TagLib::wstring should not contain Latin1 or UTF-8.");
+ }
+@@ -219,8 +227,16 @@ String::String(const wstring &s, Type t)
+ String::String(const wchar_t *s, Type t)
+ : d(new StringPrivate())
+ {
+- if(t == UTF16 || t == UTF16BE || t == UTF16LE)
++ if(t == UTF16 || t == UTF16BE || t == UTF16LE) {
++ // This looks ugly but needed for the compatibility with TagLib1.8.
++ // Should be removed in TabLib2.0.
++ if (t == UTF16BE)
++ t = WCharByteOrder;
++ else if (t == UTF16LE)
++ t = (WCharByteOrder == UTF16LE ? UTF16BE : UTF16LE);
++
+ copyFromUTF16(s, ::wcslen(s), t);
++ }
+ else {
+ debug("String::String() -- A const wchar_t * should not contain Latin1 or UTF-8.");
+ }
+diff --git a/taglib/toolkit/tstring.h b/taglib/toolkit/tstring.h
+index 57945be..605b9c2 100644
+--- a/taglib/toolkit/tstring.h
++++ b/taglib/toolkit/tstring.h
+@@ -134,13 +134,21 @@ namespace TagLib {
+
+ /*!
+ * Makes a deep copy of the data in \a s.
++ *
++ * /note If \a t is UTF16LE, the byte order of \a s will be swapped regardless
++ * of the CPU byte order. If UTF16BE, it will not be swapped. This behavior
++ * will be changed in TagLib2.0.
+ */
+- String(const wstring &s, Type t = WCharByteOrder);
++ String(const wstring &s, Type t = UTF16BE);
+
+ /*!
+ * Makes a deep copy of the data in \a s.
++ *
++ * /note If \a t is UTF16LE, the byte order of \a s will be swapped regardless
++ * of the CPU byte order. If UTF16BE, it will not be swapped. This behavior
++ * will be changed in TagLib2.0.
+ */
+- String(const wchar_t *s, Type t = WCharByteOrder);
++ String(const wchar_t *s, Type t = UTF16BE);
+
+ /*!
+ * Makes a deep copy of the data in \a c.
+diff --git a/tests/test_string.cpp b/tests/test_string.cpp
+index a815a0b..9a574b3 100644
+--- a/tests/test_string.cpp
++++ b/tests/test_string.cpp
+@@ -75,6 +75,20 @@ public:
+ String unicode3(L"\u65E5\u672C\u8A9E");
+ CPPUNIT_ASSERT(*(unicode3.toCWString() + 1) == L'\u672C');
+
++ String unicode4(L"\u65e5\u672c\u8a9e", String::UTF16BE);
++ CPPUNIT_ASSERT(unicode4[1] == L'\u672c');
++
++ String unicode5(L"\u65e5\u672c\u8a9e", String::UTF16LE);
++ CPPUNIT_ASSERT(unicode5[1] == L'\u2c67');
++
++ wstring stduni = L"\u65e5\u672c\u8a9e";
++
++ String unicode6(stduni, String::UTF16BE);
++ CPPUNIT_ASSERT(unicode6[1] == L'\u672c');
++
++ String unicode7(stduni, String::UTF16LE);
++ CPPUNIT_ASSERT(unicode7[1] == L'\u2c67');
++
+ CPPUNIT_ASSERT(strcmp(String::number(0).toCString(), "0") == 0);
+ CPPUNIT_ASSERT(strcmp(String::number(12345678).toCString(), "12345678") == 0);
+ CPPUNIT_ASSERT(strcmp(String::number(-12345678).toCString(), "-12345678") == 0);
+--
+1.8.4.2
+
diff --git a/media-libs/taglib/files/taglib-1.9.1-bytevector-simpler.patch b/media-libs/taglib/files/taglib-1.9.1-bytevector-simpler.patch
new file mode 100644
index 0000000..0b134ec
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.9.1-bytevector-simpler.patch
@@ -0,0 +1,131 @@
+From 4a7d31c87bf41c1de21cb725176d5b34c2a95720 Mon Sep 17 00:00:00 2001
+From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
+Date: Thu, 14 Nov 2013 14:05:32 +0900
+Subject: [PATCH 3/6] Rewrote ByteVector::replace() simpler
+
+---
+ taglib/toolkit/tbytevector.cpp | 77 +++++++++++++++---------------------------
+ tests/test_bytevector.cpp | 5 +++
+ 2 files changed, 33 insertions(+), 49 deletions(-)
+
+diff --git a/taglib/toolkit/tbytevector.cpp b/taglib/toolkit/tbytevector.cpp
+index b658246..566a20f 100644
+--- a/taglib/toolkit/tbytevector.cpp
++++ b/taglib/toolkit/tbytevector.cpp
+@@ -31,6 +31,7 @@
+ #include <iostream>
+ #include <cstdio>
+ #include <cstring>
++#include <cstddef>
+
+ #include <tstring.h>
+ #include <tdebug.h>
+@@ -508,62 +509,40 @@ ByteVector &ByteVector::replace(const ByteVector &pattern, const ByteVector &wit
+ if(pattern.size() == 0 || pattern.size() > size())
+ return *this;
+
+- const uint withSize = with.size();
+- const uint patternSize = pattern.size();
+- int offset = 0;
++ const size_t withSize = with.size();
++ const size_t patternSize = pattern.size();
++ const ptrdiff_t diff = withSize - patternSize;
++
++ size_t offset = 0;
++ while (true)
++ {
++ offset = find(pattern, offset);
++ if(offset == static_cast<size_t>(-1)) // Use npos in taglib2.
++ break;
+
+- if(withSize == patternSize) {
+- // I think this case might be common enough to optimize it
+ detach();
+- offset = find(pattern);
+- while(offset >= 0) {
+- ::memcpy(data() + offset, with.data(), withSize);
+- offset = find(pattern, offset + withSize);
+- }
+- return *this;
+- }
+
+- // calculate new size:
+- uint newSize = 0;
+- for(;;) {
+- int next = find(pattern, offset);
+- if(next < 0) {
+- if(offset == 0)
+- // pattern not found, do nothing:
+- return *this;
+- newSize += size() - offset;
+- break;
++ if(diff < 0) {
++ ::memmove(
++ data() + offset + withSize,
++ data() + offset + patternSize,
++ size() - offset - patternSize);
++ resize(size() + diff);
+ }
+- newSize += (next - offset) + withSize;
+- offset = next + patternSize;
+- }
+-
+- // new private data of appropriate size:
+- ByteVectorPrivate *newData = new ByteVectorPrivate(newSize, 0);
+- char *target = DATA(newData);
+- const char *source = data();
+-
+- // copy modified data into new private data:
+- offset = 0;
+- for(;;) {
+- int next = find(pattern, offset);
+- if(next < 0) {
+- ::memcpy(target, source + offset, size() - offset);
+- break;
++ else if(diff > 0) {
++ resize(size() + diff);
++ ::memmove(
++ data() + offset + withSize,
++ data() + offset + patternSize,
++ size() - diff - offset - patternSize);
+ }
+- int chunkSize = next - offset;
+- ::memcpy(target, source + offset, chunkSize);
+- target += chunkSize;
+- ::memcpy(target, with.data(), withSize);
+- target += withSize;
+- offset += chunkSize + patternSize;
+- }
+
+- // replace private data:
+- if(d->deref())
+- delete d;
++ ::memcpy(data() + offset, with.data(), with.size());
+
+- d = newData;
++ offset += withSize;
++ if(offset > size() - patternSize)
++ break;
++ }
+
+ return *this;
+ }
+diff --git a/tests/test_bytevector.cpp b/tests/test_bytevector.cpp
+index 9efd23a..eca74f8 100644
+--- a/tests/test_bytevector.cpp
++++ b/tests/test_bytevector.cpp
+@@ -239,6 +239,11 @@ public:
+ a.replace(ByteVector("ab"), ByteVector());
+ CPPUNIT_ASSERT_EQUAL(ByteVector("cdf"), a);
+ }
++ {
++ ByteVector a("abcdabf");
++ a.replace(ByteVector("bf"), ByteVector("x"));
++ CPPUNIT_ASSERT_EQUAL(ByteVector("abcdax"), a);
++ }
+ }
+
+ };
+--
+1.8.4.2
+
diff --git a/media-libs/taglib/files/taglib-1.9.1-ds-rusxmms-enforce.patch b/media-libs/taglib/files/taglib-1.9.1-ds-rusxmms-enforce.patch
new file mode 100644
index 0000000..e980b7a
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.9.1-ds-rusxmms-enforce.patch
@@ -0,0 +1,20 @@
+--- taglib-1.9.1/taglib/mpeg/id3v1/id3v1tag.h 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-taurus/taglib/mpeg/id3v1/id3v1tag.h 2013-11-12 00:24:31.206495291 +0100
+@@ -68,7 +68,7 @@
+ * Decode a string from \a data. The default implementation assumes that
+ * \a data is an ISO-8859-1 (Latin1) character array.
+ */
+- virtual String parse(const ByteVector &data) const;
++ String parse(const ByteVector &data) const;
+
+ /*!
+ * Encode a ByteVector with the data from \a s. The default implementation
+@@ -79,7 +79,7 @@
+ * instead do not write an ID3v1 tag in the case that the data is not
+ * ISO-8859-1.
+ */
+- virtual ByteVector render(const String &s) const;
++ ByteVector render(const String &s) const;
+ };
+
+ //! The main class in the ID3v1 implementation
diff --git a/media-libs/taglib/files/taglib-1.9.1-ds-rusxmms.patch b/media-libs/taglib/files/taglib-1.9.1-ds-rusxmms.patch
new file mode 100644
index 0000000..b64b5b5
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.9.1-ds-rusxmms.patch
@@ -0,0 +1,676 @@
+diff -dPNur taglib-1.9.1/config.h.cmake taglib-1.9.1-ds/config.h.cmake
+--- taglib-1.9.1/config.h.cmake 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/config.h.cmake 2013-11-11 13:43:48.500304915 +0100
+@@ -31,6 +31,9 @@
+ /* Defined if you have libz */
+ #cmakedefine HAVE_ZLIB 1
+
++/* Defined if you have LibRCC from RusXMMS project */
++#cmakedefine HAVE_LIBRCC 1
++
+ /* Indicates whether debug messages are shown even in release mode */
+ #cmakedefine TRACE_IN_RELEASE 1
+
+diff -dPNur taglib-1.9.1/ConfigureChecks.cmake taglib-1.9.1-ds/ConfigureChecks.cmake
+--- taglib-1.9.1/ConfigureChecks.cmake 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/ConfigureChecks.cmake 2013-11-11 13:42:53.017126134 +0100
+@@ -216,6 +216,7 @@
+ set(HAVE_ZLIB 0)
+ endif()
+
++SET(HAVE_LIBRCC 1)
+
+ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
+
+diff -dPNur taglib-1.9.1/examples/tagreader_c.c taglib-1.9.1-ds/examples/tagreader_c.c
+--- taglib-1.9.1/examples/tagreader_c.c 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/examples/tagreader_c.c 2013-11-11 13:42:53.017126134 +0100
+@@ -38,7 +38,7 @@
+ TagLib_Tag *tag;
+ const TagLib_AudioProperties *properties;
+
+- taglib_set_strings_unicode(FALSE);
++// taglib_set_strings_unicode(FALSE);
+
+ for(i = 1; i < argc; i++) {
+ printf("******************** \"%s\" ********************\n", argv[i]);
+diff -dPNur taglib-1.9.1/examples/tagwriter.cpp taglib-1.9.1-ds/examples/tagwriter.cpp
+--- taglib-1.9.1/examples/tagwriter.cpp 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/examples/tagwriter.cpp 2013-11-11 13:42:53.028126368 +0100
+@@ -92,7 +92,7 @@
+ if(isArgument(argv[i]) && i + 1 < argc && !isArgument(argv[i + 1])) {
+
+ char field = argv[i][1];
+- TagLib::String value = argv[i + 1];
++ TagLib::String value(argv[i + 1], TagLib::String::Locale);
+
+ TagLib::List<TagLib::FileRef>::Iterator it;
+ for(it = fileList.begin(); it != fileList.end(); ++it) {
+diff -dPNur taglib-1.9.1/taglib/CMakeLists.txt taglib-1.9.1-ds/taglib/CMakeLists.txt
+--- taglib-1.9.1/taglib/CMakeLists.txt 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/CMakeLists.txt 2013-11-11 13:42:53.042126665 +0100
+@@ -36,6 +36,7 @@
+ audioproperties.h
+ taglib_export.h
+ ${CMAKE_BINARY_DIR}/taglib_config.h
++ toolkit/rccpatch.h
+ toolkit/taglib.h
+ toolkit/tstring.h
+ toolkit/tlist.h
+@@ -281,6 +282,7 @@
+ )
+
+ set(toolkit_SRCS
++ toolkit/rccpatch.cpp
+ toolkit/tstring.cpp
+ toolkit/tstringlist.cpp
+ toolkit/tbytevector.cpp
+@@ -310,7 +312,7 @@
+ add_library(tag ${tag_LIB_SRCS} ${tag_HDRS})
+
+ if(ZLIB_FOUND)
+- target_link_libraries(tag ${ZLIB_LIBRARIES})
++ target_link_libraries(tag rcc ${ZLIB_LIBRARIES})
+ endif()
+
+ set_target_properties(tag PROPERTIES
+diff -dPNur taglib-1.9.1/taglib/mpeg/id3v1/id3v1tag.cpp taglib-1.9.1-ds/taglib/mpeg/id3v1/id3v1tag.cpp
+--- taglib-1.9.1/taglib/mpeg/id3v1/id3v1tag.cpp 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/mpeg/id3v1/id3v1tag.cpp 2013-11-11 13:42:53.043126686 +0100
+@@ -64,17 +64,18 @@
+
+ String ID3v1::StringHandler::parse(const ByteVector &data) const
+ {
+- return String(data, String::Latin1).stripWhiteSpace();
++ return String(data, String::Latin1ID3).stripWhiteSpace();
+ }
+
+ ByteVector ID3v1::StringHandler::render(const String &s) const
+ {
+ if(!s.isLatin1())
+ {
++ if (String::ID3WType(String::Latin1) == String::Latin1)
+ return ByteVector();
+ }
+
+- return s.data(String::Latin1);
++ return s.data(String::Latin1ID3);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+@@ -257,7 +258,7 @@
+ d->track = uchar(data[offset + 29]);
+ }
+ else
+- d->comment = data.mid(offset, 30);
++ d->comment = TagPrivate::stringHandler->parse(data.mid(offset, 30));
+
+ offset += 30;
+
+diff -dPNur taglib-1.9.1/taglib/mpeg/id3v2/frames/commentsframe.cpp taglib-1.9.1-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp
+--- taglib-1.9.1/taglib/mpeg/id3v2/frames/commentsframe.cpp 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/mpeg/id3v2/frames/commentsframe.cpp 2013-11-11 13:42:53.043126686 +0100
+@@ -150,10 +150,10 @@
+ return;
+ }
+
+- d->textEncoding = String::Type(data[0]);
++ d->textEncoding = String::ID3Type(data[0]);
+ d->language = data.mid(1, 3);
+
+- int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2;
++ int byteAlign = (d->textEncoding == String::Latin1 || d->textEncoding == String::Latin1ID3 || d->textEncoding == String::Latin1ID3V2 || d->textEncoding == String::UTF8) ? 1 : 2;
+
+ ByteVectorList l = ByteVectorList::split(data.mid(4), textDelimiter(d->textEncoding), byteAlign, 2);
+
+@@ -174,10 +174,12 @@
+
+ String::Type encoding = d->textEncoding;
+
++ encoding = String::ID3WType(encoding);
++
+ encoding = checkTextEncoding(d->description, encoding);
+ encoding = checkTextEncoding(d->text, encoding);
+
+- v.append(char(encoding));
++ v.append(char(String::ID3RealType(encoding)));
+ v.append(d->language.size() == 3 ? d->language : "XXX");
+ v.append(d->description.data(encoding));
+ v.append(textDelimiter(encoding));
+diff -dPNur taglib-1.9.1/taglib/mpeg/id3v2/frames/textidentificationframe.cpp taglib-1.9.1-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp
+--- taglib-1.9.1/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/mpeg/id3v2/frames/textidentificationframe.cpp 2013-11-11 13:42:53.044126708 +0100
+@@ -187,12 +187,12 @@
+
+ // read the string data type (the first byte of the field data)
+
+- d->textEncoding = String::Type(data[0]);
++ d->textEncoding = String::ID3Type(data[0]);
+
+ // split the byte array into chunks based on the string type (two byte delimiter
+ // for unicode encodings)
+
+- int byteAlign = d->textEncoding == String::Latin1 || d->textEncoding == String::UTF8 ? 1 : 2;
++ int byteAlign = (d->textEncoding == String::Latin1 || d->textEncoding == String::Latin1ID3 || d->textEncoding == String::Latin1ID3V2 || d->textEncoding == String::UTF8) ? 1 : 2;
+
+ // build a small counter to strip nulls off the end of the field
+
+@@ -223,11 +223,14 @@
+
+ ByteVector TextIdentificationFrame::renderFields() const
+ {
+- String::Type encoding = checkTextEncoding(d->fieldList, d->textEncoding);
++ String::Type encoding = d->textEncoding;
++
++ encoding = String::ID3WType(encoding);
++ encoding = checkTextEncoding(d->fieldList, encoding);
+
+ ByteVector v;
+
+- v.append(char(encoding));
++ v.append(char(String::ID3RealType(encoding)));
+
+ for(StringList::ConstIterator it = d->fieldList.begin(); it != d->fieldList.end(); it++) {
+
+diff -dPNur taglib-1.9.1/taglib/mpeg/id3v2/id3v2frame.cpp taglib-1.9.1-ds/taglib/mpeg/id3v2/id3v2frame.cpp
+--- taglib-1.9.1/taglib/mpeg/id3v2/id3v2frame.cpp 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/mpeg/id3v2/id3v2frame.cpp 2013-11-11 13:42:53.045126729 +0100
+@@ -302,7 +302,7 @@
+ if((encoding == String::UTF8 || encoding == String::UTF16BE) && version != 4)
+ return String::UTF16;
+
+- if(encoding != String::Latin1)
++ if((encoding != String::Latin1)&&(encoding != String::Latin1ID3V2))
+ return encoding;
+
+ for(StringList::ConstIterator it = fields.begin(); it != fields.end(); ++it) {
+diff -dPNur taglib-1.9.1/taglib/toolkit/rccpatch.cpp taglib-1.9.1-ds/taglib/toolkit/rccpatch.cpp
+--- taglib-1.9.1/taglib/toolkit/rccpatch.cpp 1970-01-01 01:00:00.000000000 +0100
++++ taglib-1.9.1-ds/taglib/toolkit/rccpatch.cpp 2013-11-11 13:42:53.045126729 +0100
+@@ -0,0 +1,237 @@
++#include <stdlib.h>
++
++#include <string>
++#include "tstring.h"
++#include "tbytevector.h"
++
++//#define RCC_DEBUG
++
++
++#ifndef HAVE_LIBRCC
++# include <config.h>
++#endif
++
++#ifdef HAVE_LIBRCC
++# ifdef RCC_DEBUG
++# include <stdio.h>
++# endif /* RCC_DEBUG */
++# include <librcc.h>
++# include <string.h>
++#endif /* HAVE_LIBRCC */
++
++
++#ifdef HAVE_LIBRCC
++# define ID3_CLASS 0
++# define ID3V2_CLASS 1
++# define UTF_CLASS 2
++# define OUT_CLASS 3
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "id3v2", RCC_CLASS_STANDARD, "id3", NULL, "ID3 v.2 Encoding", 0 },
++ { "utf", RCC_CLASS_KNOWN, "UTF-8", NULL, "Unicode Encoding", 0},
++ { "out", RCC_CLASS_TRANSLATE_LOCALE, "LC_CTYPE", NULL, "Output Encoding", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int rcc_initialized = 0;
++
++static rcc_context ctx = NULL;
++#endif /* HAVE_LIBRCC */
++
++
++void rccTaglibPatchFree() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++void rccTaglibPatchInit() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++#endif /* HAVE_LIBRCC */
++}
++
++void rccTaglibPatchSetContext(void *newctx) {
++#ifdef HAVE_LIBRCC
++ if (newctx) {
++ ctx = (rcc_context)newctx;
++ rcc_initialized = 1;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++static void rccTaglibPatchTryInit() {
++#ifdef HAVE_LIBRCC
++ if (!rcc_initialized) {
++ rccTaglibPatchInit();
++ if (rcc_initialized) atexit(rccTaglibPatchFree);
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++
++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, UTF_CLASS, OUT_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" Output: %s - %s\n", s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++
++ if (res) v.setData(res, rlen);
++ else v.setData("", 0);
++ //v.setData(s.c_str(), s.length());
++
++ return v;
++#else
++ v.setData("", 0);
++
++ return v;
++#endif /* HAVE_LIBRCC */
++}
++
++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool v2 = false) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, UTF_CLASS, v2?ID3V2_CLASS:ID3_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" OutputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++
++ if (res) v.setData(res, rlen);
++ else v.setData("", 0);
++ //v.setData(s.c_str(), s.length());
++
++ return v;
++#else
++ v.setData("", 0);
++
++ return v;
++#endif /* HAVE_LIBRCC */
++}
++
++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, OUT_CLASS, UTF_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" Input: %s - %s\n", s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++
++ if (res) v.setData(res, rlen);
++ else
++#endif /* HAVE_LIBRCC */
++ v.setData("", 0);
++
++ return v;
++}
++
++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 = false) {
++ TagLib::ByteVector v;
++#ifdef HAVE_LIBRCC
++ size_t rlen;
++ char *res;
++
++ rccTaglibPatchTryInit();
++
++ res = rccSizedRecode(ctx, v2?ID3V2_CLASS:ID3_CLASS, UTF_CLASS, s.c_str(), s.length(), &rlen);
++#ifdef RCC_DEBUG
++ for (const unsigned char *c = (const unsigned char*)s.c_str(); *c; c++) {
++ if (*c > 127) {
++ printf(" InputID3(%i): %s - %s\n", v2, s.c_str(), res?res:"null");
++ break;
++ }
++ }
++#endif /* RCC_DEBUG */
++ if (res) v.setData(res, rlen + 1);
++ else
++#endif /* HAVE_LIBRCC */
++ v.setData("", 0);
++
++ return v;
++}
++
++TagLib::String::Type rccTaglibPatchGetLocaleType() {
++#ifdef HAVE_LIBRCC
++ size_t len;
++ char charset[32];
++
++ rccTaglibPatchTryInit();
++ if (!rccLocaleGetCharset(charset, NULL, 31)) {
++ if (!strncmp(charset, "UTF", 3)) {
++ len = strlen(charset);
++
++ if (charset[len-1]=='8') return TagLib::String::UTF8;
++ if (!strcmp(charset+(len-2),"16")) return TagLib::String::UTF16;
++ if (!strcmp(charset+(len-4),"16LE")) return TagLib::String::UTF16LE;
++ if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
++ }
++ return TagLib::String::Latin1;
++ }
++#endif /* HAVE_LIBRCC */
++ return TagLib::String::UTF8;
++}
++
++TagLib::String::Type rccTaglibPatchGetID3Type() {
++#ifdef HAVE_LIBRCC
++ size_t len;
++ const char *charset;
++
++ rccTaglibPatchTryInit();
++
++ charset = rccGetCurrentCharsetName(ctx, ID3V2_CLASS);
++ if (charset) {
++ if (!strncmp(charset, "UTF", 3)) {
++ len = strlen(charset);
++
++ if (charset[len-1]=='8') return TagLib::String::UTF8;
++ if (!strcmp(charset+(len-2),"16")) return TagLib::String::UTF16;
++ if (!strcmp(charset+(len-4),"16LE")) return TagLib::String::UTF16LE;
++ if (!strcmp(charset+(len-4),"16BE")) return TagLib::String::UTF16BE;
++ }
++ return TagLib::String::Latin1ID3V2;
++ } else {
++ // Error or no-language configured: If Latin1ID3V2 is returned we normally will use the default unicode encoding unless Latin1 is selected by taglib
++ return TagLib::String::Latin1ID3V2;
++ }
++#endif /* HAVE_LIBRCC */
++ return TagLib::String::Latin1;
++}
+diff -dPNur taglib-1.9.1/taglib/toolkit/rccpatch.h taglib-1.9.1-ds/taglib/toolkit/rccpatch.h
+--- taglib-1.9.1/taglib/toolkit/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ taglib-1.9.1-ds/taglib/toolkit/rccpatch.h 2013-11-11 13:42:53.045126729 +0100
+@@ -0,0 +1,20 @@
++#ifndef _RCC_PATCH_H
++#define _RCC_PATCH_H
++
++#include <string.h>
++#include "tstring.h"
++#include "tbytevector.h"
++
++void rccTaglibPatchFree();
++void rccTaglibPatchInit();
++void rccTaglibPatchSetContext(void *newctx);
++
++TagLib::ByteVector rccTaglibPatchRecodeOutput(const std::string &s);
++TagLib::ByteVector rccTaglibPatchRecodeInput(const std::string &s);
++TagLib::ByteVector rccTaglibPatchRecodeOutputID3(const std::string &s, bool v2 = false);
++TagLib::ByteVector rccTaglibPatchRecodeInputID3(const std::string &s, bool v2 = false);
++
++TagLib::String::Type rccTaglibPatchGetLocaleType();
++TagLib::String::Type rccTaglibPatchGetID3Type();
++
++#endif /* _RCC_PATCH_H */
+diff -dPNur taglib-1.9.1/taglib/toolkit/tstring.cpp taglib-1.9.1-ds/taglib/toolkit/tstring.cpp
+--- taglib-1.9.1/taglib/toolkit/tstring.cpp 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/toolkit/tstring.cpp 2013-11-11 13:42:53.046126750 +0100
+@@ -29,6 +29,7 @@
+ #include <config.h>
+ #endif
+
++#include "rccpatch.h"
+ #include "tstring.h"
+ #include "tdebug.h"
+ #include "tstringlist.h"
+@@ -197,8 +198,11 @@
+ String::String(const std::string &s, Type t)
+ : d(new StringPrivate())
+ {
+- if(t == Latin1)
+- copyFromLatin1(&s[0], s.length());
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
++ copyFromLatin1(&s[0], s.length(), true, t);
+ else if(t == String::UTF8)
+ copyFromUTF8(&s[0], s.length());
+ else {
+@@ -229,8 +233,11 @@
+ String::String(const char *s, Type t)
+ : d(new StringPrivate())
+ {
+- if(t == Latin1)
+- copyFromLatin1(s, ::strlen(s));
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
++ copyFromLatin1(s, ::strlen(s), true, t);
+ else if(t == String::UTF8)
+ copyFromUTF8(s, ::strlen(s));
+ else {
+@@ -251,7 +258,10 @@
+ String::String(char c, Type t)
+ : d(new StringPrivate(1, static_cast<uchar>(c)))
+ {
+- if(t != Latin1 && t != UTF8) {
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t != Latin1 && t != Latin1ID3 && t != Latin1ID3V2 && t != UTF8) {
+ debug("String::String() -- A char should not contain UTF16.");
+ }
+ }
+@@ -262,8 +272,11 @@
+ if(v.isEmpty())
+ return;
+
+- if(t == Latin1)
+- copyFromLatin1(v.data(), v.size());
++ if(t == Locale)
++ t = rccTaglibPatchGetLocaleType();
++
++ if(t == Latin1 || t == Latin1ID3 || t == Latin1ID3V2)
++ copyFromLatin1(v.data(), v.size(), true, t);
+ else if(t == UTF8)
+ copyFromUTF8(v.data(), v.size());
+ else
+@@ -428,16 +441,46 @@
+
+ ByteVector String::data(Type t) const
+ {
+- switch(t)
+- {
++ ByteVector v;
++
++ if (t == Locale) {
++ // The source is either Unicode or real Latin1 (if rcc is bypassed)
++ std::string s = to8Bit(true);
++
++ // In case of UTF8 locale, this probably will return NULL (no recoding needed), but we will take UTF8 path in the next swtich
++ v = rccTaglibPatchRecodeOutput(s);
++ if (v.size()) return v;
++
++ t = rccTaglibPatchGetLocaleType();
++ }
++
++ switch(t) {
++ case Latin1ID3:
++ case Latin1ID3V2:
++ {
++ std::string s = to8Bit(true);
++ if (t == Latin1ID3) v = rccTaglibPatchRecodeOutputID3(s, false);
++ else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeOutputID3(s, true);
++ if (v.size())
++ return v;
++
++ // we don't know if we got NULL because rcc is disabled (error) or UTF8 output is required
++ if ((t == Latin1ID3V2)&&(rccTaglibPatchGetID3Type() == UTF8)) {
++ v.setData(s.c_str(), s.length());
++ } else {
++ for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++)
++ v.append(char(*it));
++ }
++ return v;
++ }
+ case Latin1:
+ {
+ ByteVector v(size(), 0);
+ char *p = v.data();
+-
++
+ for(wstring::const_iterator it = d->data.begin(); it != d->data.end(); it++)
+ *p++ = static_cast<char>(*it);
+-
++
+ return v;
+ }
+ case UTF8:
+@@ -763,12 +806,29 @@
+ // private members
+ ////////////////////////////////////////////////////////////////////////////////
+
+-void String::copyFromLatin1(const char *s, size_t length)
++void String::copyFromLatin1(const char *s, size_t length, bool prepare, Type t)
+ {
+ d->data.resize(length);
+-
+ for(size_t i = 0; i < length; ++i)
+ d->data[i] = static_cast<uchar>(s[i]);
++
++ // librcc conversation
++ if (prepare) {
++ std::string s = to8Bit(false);
++ ByteVector v;
++
++ if (t == Latin1ID3) v = rccTaglibPatchRecodeInputID3(s, false);
++ else if (t == Latin1ID3V2) v = rccTaglibPatchRecodeInputID3(s, true);
++ else /* Latin1 converted from Locale */ v = rccTaglibPatchRecodeInput(s);
++
++ if (v.size()) {
++ copyFromUTF8(v.data(), v.size());
++ } else {
++ // We don't know if we got UTF-8 encoded string or either rcc is disable or something is failed,
++ // since standard applications are really expecting here Latin1, it is safe to just check if we have violations of UTF8
++ //if (Unicode::isLegalUTF8(s)) t = UTF8;
++ }
++ }
+ }
+
+ void String::copyFromUTF8(const char *s, size_t length)
+@@ -874,7 +934,33 @@
+
+ std::ostream &operator<<(std::ostream &s, const TagLib::String &str)
+ {
+- s << str.to8Bit();
++ TagLib::ByteVector bv = str.data(TagLib::String::Locale);
++ s << bv;
+ return s;
+ }
+
++TagLib::String::Type TagLib::String::ID3Type(int i)
++{
++ if(i == Latin1)
++ return Latin1ID3V2;
++ return Type(i);
++};
++
++TagLib::String::Type TagLib::String::ID3WType(Type type)
++{
++ Type rcc_type = rccTaglibPatchGetID3Type();
++ if((rcc_type == Latin1ID3)||(rcc_type == Latin1ID3V2)||(rcc_type == Latin1)) {
++ if(type == Latin1) return
++ rcc_type;
++ return type;
++ }
++
++ return rcc_type;
++};
++
++TagLib::String::Type TagLib::String::ID3RealType(Type type)
++{
++ if((type == Latin1ID3) || (type == Latin1ID3V2))
++ return Latin1;
++ return type;
++}
+diff -dPNur taglib-1.9.1/taglib/toolkit/tstring.h taglib-1.9.1-ds/taglib/toolkit/tstring.h
+--- taglib-1.9.1/taglib/toolkit/tstring.h 2013-10-08 17:50:01.000000000 +0200
++++ taglib-1.9.1-ds/taglib/toolkit/tstring.h 2013-11-11 13:42:53.047126771 +0100
+@@ -90,6 +90,18 @@
+ */
+ enum Type {
+ /*!
++ * Determine using current locale settings
++ */
++ Locale = -1,
++ /*!
++ * Latin1 for ID3 tags.
++ */
++ Latin1ID3 = 65,
++ /*!
++ * Latin1 for ID3v2 tags.
++ */
++ Latin1ID3V2 = 66,
++ /*!
+ * IS08859-1, or <i>Latin1</i> encoding. 8 bit characters.
+ */
+ Latin1 = 0,
+@@ -112,6 +124,10 @@
+ UTF16LE = 4
+ };
+
++ static Type ID3Type(int i);
++ static Type ID3WType(Type type);
++ static Type ID3RealType(Type type);
++
+ /*!
+ * Constructs an empty String.
+ */
+@@ -479,7 +495,7 @@
+ * Converts a \e Latin-1 string into \e UTF-16(without BOM/CPU byte order)
+ * and copies it to the internal buffer.
+ */
+- void copyFromLatin1(const char *s, size_t length);
++ void copyFromLatin1(const char *s, size_t length, bool prepare = false, Type t = Latin1);
+
+ /*!
+ * Converts a \e UTF-8 string into \e UTF-16(without BOM/CPU byte order)
diff --git a/media-libs/taglib/files/taglib-1.9.1-missing-deletes.patch b/media-libs/taglib/files/taglib-1.9.1-missing-deletes.patch
new file mode 100644
index 0000000..9cdbdcf
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.9.1-missing-deletes.patch
@@ -0,0 +1,48 @@
+From c14a3b5c3d0831f7c113d0cf95840c4671d9ebd4 Mon Sep 17 00:00:00 2001
+From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
+Date: Tue, 13 May 2014 20:07:02 +0900
+Subject: [PATCH] Added some missing deletes to test_flac.cpp.
+
+---
+ tests/test_flac.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/tests/test_flac.cpp b/tests/test_flac.cpp
+index caec715..364fb11 100644
+--- a/tests/test_flac.cpp
++++ b/tests/test_flac.cpp
+@@ -91,6 +91,7 @@ public:
+ newpic->setData("JPEG data");
+ f->addPicture(newpic);
+ f->save();
++ delete f;
+
+ f = new FLAC::File(newname.c_str());
+ lst = f->pictureList();
+@@ -138,6 +139,7 @@ public:
+ f->removePictures();
+ f->addPicture(newpic);
+ f->save();
++ delete f;
+
+ f = new FLAC::File(newname.c_str());
+ lst = f->pictureList();
+@@ -165,6 +167,7 @@ public:
+
+ f->removePictures();
+ f->save();
++ delete f;
+
+ f = new FLAC::File(newname.c_str());
+ lst = f->pictureList();
+@@ -185,6 +188,7 @@ public:
+ tag->setTitle("NEW TITLE 2");
+ f->save();
+ CPPUNIT_ASSERT_EQUAL(String("NEW TITLE 2"), tag->title());
++ delete f;
+
+ f = new FLAC::File(newname.c_str());
+ tag = f->tag();
+--
+1.9.0
+
diff --git a/media-libs/taglib/files/taglib-1.9.1-order-big-endian.patch b/media-libs/taglib/files/taglib-1.9.1-order-big-endian.patch
new file mode 100644
index 0000000..86d5201
--- /dev/null
+++ b/media-libs/taglib/files/taglib-1.9.1-order-big-endian.patch
@@ -0,0 +1,33 @@
+From db3e961d1098d5efe57364f540f68a5996dc83c2 Mon Sep 17 00:00:00 2001
+From: Tsuda Kageyu <tsuda.kageyu@gmail.com>
+Date: Tue, 13 May 2014 18:22:16 +0900
+Subject: [PATCH] Fixed a wrong byte order handling on big-endian machines.
+
+---
+ taglib/toolkit/tstring.cpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp
+index 603455a..1ec083b 100644
+--- a/taglib/toolkit/tstring.cpp
++++ b/taglib/toolkit/tstring.cpp
+@@ -47,10 +47,14 @@
+
+ namespace
+ {
+-
+ inline unsigned short combine(unsigned char c1, unsigned char c2)
+ {
+- return (c1 << 8) | c2;
++ using namespace TagLib::Utils;
++
++ if(SystemByteOrder == LittleEndian)
++ return (c1 << 8) | c2;
++ else
++ return (c2 << 8) | c1;
+ }
+
+ void UTF16toUTF8(const wchar_t *src, size_t srcLength, char *dst, size_t dstLength)
+--
+1.9.0
+
diff --git a/media-libs/taglib/taglib-1.9.1-r4.ebuild b/media-libs/taglib/taglib-1.9.1-r4.ebuild
new file mode 100644
index 0000000..c41e0ad
--- /dev/null
+++ b/media-libs/taglib/taglib-1.9.1-r4.ebuild
@@ -0,0 +1,83 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/taglib/taglib-1.9.1-r2.ebuild,v 1.11 2014/08/27 09:05:26 ssuominen Exp $
+
+EAPI=6
+
+inherit cmake-multilib
+
+DESCRIPTION="A library for reading and editing audio meta data"
+HOMEPAGE="http://developer.kde.org/~wheeler/taglib.html"
+SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1 MPL-1.1"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-solaris"
+SLOT="0"
+
+#SDS
+IUSE="+asf debug examples +mp4 test rcc"
+
+RDEPEND=">=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]"
+DEPEND="${RDEPEND}
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+ test? ( >=dev-util/cppunit-1.13.2[${MULTILIB_USEDEP}] )
+ rcc? ( app-i18n/librcc )
+"
+#EDS
+
+RDEPEND="${RDEPEND}
+ abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r2
+ !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.6.1-install-examples.patch
+ "${FILESDIR}"/${P}-missing-deletes.patch
+ "${FILESDIR}"/${P}-order-big-endian.patch
+ "${FILESDIR}"/${P}-abi-breakage.patch
+ "${FILESDIR}"/${P}-bytevector-simpler.patch
+)
+
+
+DOCS=( AUTHORS NEWS )
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/taglib-config
+)
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ use rcc && (
+ epatch "${FILESDIR}"/taglib-1.9.1-ds-rusxmms.patch || die
+ epatch "${FILESDIR}"/taglib-1.9.1-ds-rusxmms-enforce.patch || die
+ )
+}
+
+
+multilib_src_configure() {
+ mycmakeargs=(
+ $(multilib_is_native_abi && cmake-utils_use_build examples)
+ $(cmake-utils_use_build test TESTS)
+ $(cmake-utils_use_with asf)
+ $(cmake-utils_use_with mp4)
+ )
+
+ cmake-utils_src_configure
+}
+
+multilib_src_test() {
+ # ctest does not work
+ emake -C "${BUILD_DIR}" check
+}
+
+pkg_postinst() {
+ if ! use asf; then
+ elog "You've chosen to disable the asf use flag, thus taglib won't include"
+ elog "support for Microsoft's 'advanced systems format' media container"
+ fi
+ if ! use mp4; then
+ elog "You've chosen to disable the mp4 use flag, thus taglib won't include"
+ elog "support for the MPEG-4 part 14 / MP4 media container"
+ fi
+}
diff --git a/media-libs/win32codecs/Manifest b/media-libs/win32codecs/Manifest
new file mode 100644
index 0000000..e178399
--- /dev/null
+++ b/media-libs/win32codecs/Manifest
@@ -0,0 +1,2 @@
+DIST all-20071007.tar.bz2 13864479 SHA256 7aae7fc658d7a9a1766002435fd75436fead9c2d45eac3d67588c313cde0d8da SHA512 b2ca67a8c7d87a9a62a78fce2c4bcba2a33604afdecf68275035107caea5421c03853dfbd642c915c3374fcfdb477fcb41fab051158e2aaaf61f091ada9229a2 WHIRLPOOL 50b4e2a08f6630d72ae684fd69c45929fcc37df0c442cef431ce09e7220f074f2d86b94ee6c675b0d3b8c6c15bd4983264c2c3063544cf466a3cc96239c44b07
+EBUILD win32codecs-20071007-r5.ebuild 1574 SHA256 b004ef71fba5009c6af0b9e3805172caa2c16ccd59314f410471dd374c9a36ac SHA512 9b7bcc5a3306341d748b47d6ef45c2533243834a7d8c83a2de387cb3bafd7f1c17170bea1a6f2c036c925fff5d179191cddcf453df7d4dd48b5016b6bc5593c4 WHIRLPOOL 693c7cc6656162afe9e1f46ef94dcf8e1880f956ddd31615f8c8447c75820a52343babdce8dae3a36922cdea359b0ab6fde8c17f85163264fde9629100fead82
diff --git a/media-libs/win32codecs/win32codecs-20071007-r5.ebuild b/media-libs/win32codecs/win32codecs-20071007-r5.ebuild
new file mode 100644
index 0000000..b00d51a
--- /dev/null
+++ b/media-libs/win32codecs/win32codecs-20071007-r5.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/win32codecs/win32codecs-20071007-r4.ebuild,v 1.6 2013/05/03 15:35:03 ulm Exp $
+
+inherit multilib
+
+DESCRIPTION="Windows 32-bit binary codecs for video and audio playback support"
+SRC_URI="mirror://mplayer/releases/codecs/all-${PV}.tar.bz2"
+HOMEPAGE="http://www.mplayerhq.hu/"
+LICENSE="as-is"
+SLOT="0"
+KEYWORDS="-* amd64 x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~x86-linux"
+IUSE="real"
+
+RDEPEND="real? ( =virtual/libstdc++-3.3* )"
+
+S="${WORKDIR}/all-${PV}"
+
+RESTRICT="mirror strip binchecks"
+
+pkg_setup() {
+ # This is a binary x86 package => ABI=x86
+ # Please keep this in future versions
+ # Daniel Gryniewicz <dang@gentoo.org>
+ has_multilib_profile && ABI="x86"
+}
+
+src_install() {
+ use prefix || EPREFIX=
+
+ insinto /usr/$(get_libdir)/win32
+ doins *.dll *.ax *.xa *.acm *.vwp *.drv *.DLL || die "Failed to install win32 codecs"
+
+ if use real
+ then
+ insinto /usr/$(get_libdir)/real
+ doins *so.6.0 || die "Failed to install realplayer codecs"
+
+ # copy newly introduced codecs from realplayer10
+ # see the ChangeLog online
+ doins *.so || die "Failed to install realplayer10 codecs"
+
+ # fix bug #80321
+ local x
+ for x in *so.6.0 *.so; do
+ dosym ../real/$x /usr/$(get_libdir)/win32 || die "Failed to make symlink to $x"
+ done
+ fi
+
+ dodoc README
+
+ cat > "${T}/50${PN}" <<EOF
+SEARCH_DIRS_MASK="${EPREFIX}/usr/$(get_libdir)/real ${EPREFIX}/usr/$(get_libdir)/win32"
+EOF
+ insinto /etc/revdep-rebuild
+ doins "${T}/50${PN}"
+}
diff --git a/media-plugins/eq-xmms/Manifest b/media-plugins/eq-xmms/Manifest
new file mode 100644
index 0000000..cdda268
--- /dev/null
+++ b/media-plugins/eq-xmms/Manifest
@@ -0,0 +1,3 @@
+AUX eq-xmms-0.7-amd64_support.patch 1363 RMD160 665e434867da613e400b27c8bc518a99b08922df SHA1 27191438bc3b77a1c05ca723b7eb2e5856f4ce7c SHA256 2ed37439d5ad47daaaf8bd8da34619921420f92a28f7f96efe8bc9784a0965f9
+DIST eq-xmms-0.7.tar.gz 632130 RMD160 4befac780189d9eeceb3c54e840f8367ed31d8dc SHA1 8c4e19fe4a7b55bd975644d4fe493ec6698315ea SHA256 158a51c7ffe89ce5d8c8f25ee8f3ac65efb1ad2d1ba91262824b3def2e0a7dc2
+EBUILD eq-xmms-0.7.ebuild 1105 RMD160 9a7d1edc4bf8101053700d8c94b37639a5b50be0 SHA1 f5f3df35b3d8de5aa2eee58b21fbabed4df7609d SHA256 42bc0fa15a21b33ee7c62345255f7715f88a909c3bec9b927da7adf3698e8b5f
diff --git a/media-plugins/eq-xmms/eq-xmms-0.7.ebuild b/media-plugins/eq-xmms/eq-xmms-0.7.ebuild
new file mode 100644
index 0000000..6de487b
--- /dev/null
+++ b/media-plugins/eq-xmms/eq-xmms-0.7.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/eq-xmms/eq-xmms-0.7.ebuild,v 1.1 2006/01/16 17:42:39 voxus Exp $
+
+IUSE="sse-filters"
+
+inherit eutils autotools
+
+DESCRIPTION="EQU is a realtime graphical equalizer effect plugin that will equalize almost everything that you play through XMMS, not just the MP3s"
+HOMEPAGE="http://equ.sourceforge.net/"
+SRC_URI="mirror://sourceforge/equ/${P}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64 ~sparc ~ppc"
+
+RDEPEND="media-sound/xmms"
+DEPEND="${RDEPEND}
+ >=sys-devel/automake-1.7"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/${P}-amd64_support.patch
+ eautoreconf
+}
+
+src_compile() {
+ local myconf
+
+ use sse-filters && {
+ myconf="--enable-sse-filters"
+
+ use amd64 && myconf="${myconf} --enable-sse2"
+ }
+
+ econf ${myconf} || die "econf failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" libdir=`xmms-config --effect-plugin-dir` install || die
+
+ dodoc AUTHORS BUGS ChangeLog NEWS README README.BSD SKINS TODO
+}
diff --git a/media-plugins/eq-xmms/files/eq-xmms-0.7-amd64_support.patch b/media-plugins/eq-xmms/files/eq-xmms-0.7-amd64_support.patch
new file mode 100644
index 0000000..7c1fd65
--- /dev/null
+++ b/media-plugins/eq-xmms/files/eq-xmms-0.7-amd64_support.patch
@@ -0,0 +1,45 @@
+--- configure.in 2006-01-16 20:04:58.268962424 +0300
++++ configure.in 2006-01-16 20:07:43.681815848 +0300
+@@ -155,6 +155,9 @@
+ XF_CFLAGS="$XF_CFLAGS -DBENCHMARK"
+ fi
+ ;;
++ x86_64-*-*)
++ autodetect=no
++ ARCH_DEFINES="-DARCH_X86_64 -march=k8"
+ esac
+ ;;
+ *)
+--- src/iir.c 2006-01-16 20:01:23.000000000 +0300
++++ src/iir.c 2006-01-16 20:09:50.580524312 +0300
+@@ -60,7 +60,7 @@
+ clean_history();
+ }
+
+-#ifdef ARCH_X86
++#if defined(ARCH_X86) || defined(ARCH_X86_64)
+ /* Round function provided by Frank Klemm which saves around 100K
+ * CPU cycles in my PIII for each call to the IIR function with 4K samples
+ */
+--- src/iir_fpu.c 2006-01-15 03:26:32.000000000 +0300
++++ src/iir_fpu.c 2006-01-16 20:10:22.492672928 +0300
+@@ -163,7 +163,7 @@
+ #ifdef ARCH_PPC
+ tempgint = round_ppc(out[channel]);
+ #else
+-#ifdef ARCH_X86
++#if defined(ARCH_X86) || defined(ARCH_X86_64)
+ tempgint = round_trick(out[channel]);
+ #else
+ tempgint = (int)out[channel];
+--- src/iir.h 2006-01-15 03:26:32.000000000 +0300
++++ src/iir.h 2006-01-16 20:15:35.987014544 +0300
+@@ -58,7 +58,7 @@
+
+ __inline__ int iir(gpointer * d, gint length, gint srate, gint nch);
+
+-#ifdef ARCH_X86
++#if defined(ARCH_X86) || defined(ARCH_X86_64)
+ __inline__ int round_trick(float floatvalue_to_round);
+ #endif
+ #ifdef ARCH_PPC
diff --git a/media-plugins/xmmplayer/Manifest b/media-plugins/xmmplayer/Manifest
new file mode 100644
index 0000000..3c58be8
--- /dev/null
+++ b/media-plugins/xmmplayer/Manifest
@@ -0,0 +1,2 @@
+DIST xmmplayer-0.3.3.tar.gz 315346 RMD160 8c74c5f89522106c3a7c10b677d40ad67b630fb5 SHA1 68b7580fa17ee296ee57cb3d074117c003dfd93c SHA256 760e86d27924e3251e23c3cf9e50ff868191a45a3205dbe41b0311c0a421752e
+EBUILD xmmplayer-0.3.3.ebuild 758 RMD160 fb47e75cb399f587b7df978a23c395711b01642a SHA1 ca112e13628212a3aa204892b450f2393aa61beb SHA256 f2f2f6f7a2f44634274f11cbb2f19e36ec04b0c60162a9f66825dcce08ecd13a
diff --git a/media-plugins/xmmplayer/xmmplayer-0.3.3.ebuild b/media-plugins/xmmplayer/xmmplayer-0.3.3.ebuild
new file mode 100644
index 0000000..4c694fb
--- /dev/null
+++ b/media-plugins/xmmplayer/xmmplayer-0.3.3.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmmplayer/xmmplayer-0.3.3.ebuild,v 1.7 2005/09/14 05:26:33 agriffis Exp $
+
+IUSE=""
+
+DESCRIPTION="XMMPlayer is an input plugin for XMMS"
+HOMEPAGE="http://thegraveyard.org/xmmplayer.php"
+SRC_URI="http://thegraveyard.org/files/${P}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="alpha amd64 ~ppc ~sparc x86"
+
+DEPEND="media-sound/xmms
+ media-video/mplayer"
+
+src_install() {
+ make DESTDIR=${D} libdir=`xmms-config --input-plugin-dir` install || die
+ dodoc AUTHORS README
+}
+
+pkg_postinst() {
+ einfo "*** WARNING: XMMS will play all mplayer supported file"
+ einfo "once the mplayer input plugin is configured"
+}
diff --git a/media-plugins/xmms-alsa/Manifest b/media-plugins/xmms-alsa/Manifest
new file mode 100644
index 0000000..675ead9
--- /dev/null
+++ b/media-plugins/xmms-alsa/Manifest
@@ -0,0 +1,12 @@
+DIST RusXMMS2-csa35.tar.bz2 128165 RMD160 047782f64bfbcc8119d584f9f3dc9680d324519a SHA1 9c167e33b36e6e35917dd7eca9435f3408d6a9c9 SHA256 3bb63e9ce6fd2bca289ebfbde13c7dd3c0b0ca734e676b647acac1ef293312b4
+DIST RusXMMS2-csa41.tar.bz2 96642 RMD160 7ead4de64156b20682e90f8fc4c85112cf9b2cdc SHA1 034b2264a17977f614c91809bc4ee9ee7c07ecaf SHA256 e64df1956502e48c09ca60262efb7f1953a76d82a70c801e4797ca81e130e8d0
+DIST RusXMMS2-csa43.tar.bz2 104507 RMD160 4f609b588e5cdef4b4190c09f11c85a3f590913d SHA1 51a73494ebee0676a7a8f04dc1fc190d9c742b57 SHA256 b2c0ac09a481b2d77c6e4750a19497f550d93eb961839df3db5ce5da714e6caf
+DIST xmms-1.2.10-gentoo-m4-1.1.tar.bz2 26978 RMD160 63ce094969f33205420f9823a970eb3faabf2e3e SHA1 4ef6fb75370861201161adf8f65ec5db735516f4 SHA256 e253fb2a515d3c7881617172f14fccad6a42cea660b8eaaeef9657114288e46f
+DIST xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 545931 RMD160 6d376e2edadc1ac69a704575dd04775364c9ed1f SHA1 1a5a2ae2b744d5e1ae1ba72d3cb0bb078963aae0 SHA256 b9a8633fe22af156ca1af65ac35d369242ce8016619d87647ba8389b8d52ba96
+DIST xmms-1.2.10.tar.bz2 2418265 RMD160 0360cbb8c326b3325bd8ebb3343c69a9788d7084 SHA1 a3c3d3756d5263183c27b3c50a7f5404cba8bfaf SHA256 ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a
+DIST xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 16946 RMD160 49e3cd7eaac251c086cff3976e5be6e75bd33938 SHA1 29977700765aaf5ed860e3cccbb958f61f574f34 SHA256 fdfec6f54b65a8a17d4f6342cadc8c9b1f503f1d0672761c1bab963da6a86a91
+DIST xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 16739 RMD160 d45430baccccad600b3f0a37e4fd0b40e8d8bfca SHA1 9e0eb1b39e4c7385112637412ada7bc186e1b3b9 SHA256 9aebef51507f49b25f771ed380c652950a1f04e9105fb7029ef3a1889ea19abd
+DIST xmms-1.2.11.tar.bz2 2581032 RMD160 466a624572574c56595ef34f42c43d0b74857b0a SHA1 9d1eae4baab25fd35c9ddfb49321ca60222f672d SHA256 7ec15c56632b6c82e61ccddeaefd372359af2f005708a58cdf3951c574b20390
+EBUILD xmms-alsa-1.2.10-r3.ebuild 504 RMD160 3376141e1a6b49cc75ec87e62df3d987fad93e50 SHA1 6379db1476205d4997b97689ccd9094c0b17e5bb SHA256 aea371637a7bec6bd4a9f0ad9880f77a215d62de76f23210355f364306c05eb8
+EBUILD xmms-alsa-1.2.11-r2.ebuild 506 RMD160 e796568a73f615d38e2532587b8bd473dc70f81f SHA1 33fa88fa419ee6e2cd7ddeead947230855ae33b3 SHA256 656fb1272fe7ea5d8f0f6cf118c478d23363ede2caece68c799e93ae9348a858
+EBUILD xmms-alsa-1.2.11.ebuild 504 RMD160 f9d8b8b6bd50f9eb819a4caae75378fe92701a70 SHA1 c8b9dded75e105bc0eb254e5bfc47229800140a6 SHA256 c072ab9fce326434bda4893a6d4cd34fd2f873754365cc7ac7ce26ffeb926496
diff --git a/media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild b/media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild
new file mode 100644
index 0000000..ecbd25d
--- /dev/null
+++ b/media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild,v 1.4 2006/07/05 06:10:22 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.2.6"
+RUSXMMS_VER="35"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10
+ media-libs/alsa-lib"
+
+PLUGIN_PATH="Output/alsa"
+
+myconf="--enable-alsa"
diff --git a/media-plugins/xmms-alsa/xmms-alsa-1.2.11-r2.ebuild b/media-plugins/xmms-alsa/xmms-alsa-1.2.11-r2.ebuild
new file mode 100644
index 0000000..171c5de
--- /dev/null
+++ b/media-plugins/xmms-alsa/xmms-alsa-1.2.11-r2.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild,v 1.4 2006/07/05 06:10:22 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0.1"
+RUSXMMS_VER="43"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10
+ media-libs/alsa-lib"
+
+PLUGIN_PATH="Output/alsa"
+
+myconf="--enable-alsa"
diff --git a/media-plugins/xmms-alsa/xmms-alsa-1.2.11.ebuild b/media-plugins/xmms-alsa/xmms-alsa-1.2.11.ebuild
new file mode 100644
index 0000000..35b82c5
--- /dev/null
+++ b/media-plugins/xmms-alsa/xmms-alsa-1.2.11.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-alsa/xmms-alsa-1.2.10-r3.ebuild,v 1.4 2006/07/05 06:10:22 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0"
+RUSXMMS_VER="41"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10
+ media-libs/alsa-lib"
+
+PLUGIN_PATH="Output/alsa"
+
+myconf="--enable-alsa"
diff --git a/media-plugins/xmms-arts/Manifest b/media-plugins/xmms-arts/Manifest
new file mode 100644
index 0000000..3e4b89c
--- /dev/null
+++ b/media-plugins/xmms-arts/Manifest
@@ -0,0 +1,3 @@
+AUX xmms-arts-0.7.1-eintr.patch 377 RMD160 7196d846df614fc8a9b222c208a4460d215d1fd4 SHA1 ea8e025c6365612fcb2d4229674e4280900e4c90 SHA256 fd0f6e3ec925494cc0c8603008bffebf60584416516864a53b6b2984e0dbb177
+DIST arts_output-0.7.1.tar.gz 236839 RMD160 3784f2ef5f99c61123477ce03ee6bcb1ffdf3214 SHA1 026b7b0be459cfff75557c04e54425c4d21dacaf SHA256 912295b0509ed1befc4de8cf2c9e47ed0318963dabe244579452a2296660db96
+EBUILD xmms-arts-0.7.1-r2.ebuild 832 RMD160 64e2168b5a130965df7e96d151e4406681c0064b SHA1 6777fb5078c8e950f46ca794df7751fb28976e03 SHA256 62b212b585e505754130f2b0790396334821f67c7f4a214e38f1cc7829d3fc41
diff --git a/media-plugins/xmms-arts/files/xmms-arts-0.7.1-eintr.patch b/media-plugins/xmms-arts/files/xmms-arts-0.7.1-eintr.patch
new file mode 100644
index 0000000..96a28d5
--- /dev/null
+++ b/media-plugins/xmms-arts/files/xmms-arts-0.7.1-eintr.patch
@@ -0,0 +1,15 @@
+--- audio.c.old 2005-01-09 13:32:09.629042808 +0100
++++ audio.c 2005-01-09 13:32:59.646439008 +0100
+@@ -86,8 +86,12 @@
+ timeout.tv_sec = 10;
+ timeout.tv_usec = 0;
+
++again:
+ sr = select(fd + 1, &rdfs, NULL, NULL, &timeout);
+ if (sr < 0) {
++ if(errno==EINTR) {
++ goto again;
++ }
+ g_message("wait_for_helper(): select failed: %s",
+ strerror(errno));
+ return -1;
diff --git a/media-plugins/xmms-arts/xmms-arts-0.7.1-r2.ebuild b/media-plugins/xmms-arts/xmms-arts-0.7.1-r2.ebuild
new file mode 100644
index 0000000..9556a0f
--- /dev/null
+++ b/media-plugins/xmms-arts/xmms-arts-0.7.1-r2.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-arts/xmms-arts-0.7.1-r2.ebuild,v 1.14 2006/08/28 18:29:29 jer Exp $
+
+inherit eutils
+
+MY_P=arts_output-${PV}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="This output plugin allows xmms to work with arts, KDE's sound system"
+HOMEPAGE="http://www.xmms.org/plugins.php"
+SRC_URI="http://havardk.xmms.org/plugins/arts_output/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 hppa ia64 ppc ppc64 sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.7
+ kde-base/arts"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epatch ${FILESDIR}/${P}-eintr.patch
+}
+
+src_install() {
+ make DESTDIR=${D} libdir=`xmms-config --output-plugin-dir` install || die
+
+ dodoc AUTHORS ChangeLog NEWS README
+}
diff --git a/media-plugins/xmms-crossfade/ChangeLog b/media-plugins/xmms-crossfade/ChangeLog
new file mode 100644
index 0000000..ae7917e
--- /dev/null
+++ b/media-plugins/xmms-crossfade/ChangeLog
@@ -0,0 +1,123 @@
+# ChangeLog for media-plugins/xmms-crossfade
+# Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-crossfade/ChangeLog,v 1.26 2006/09/24 09:05:58 hansmi Exp $
+
+ 24 Sep 2006; Michael Hanselmann <hansmi@gentoo.org>
+ xmms-crossfade-0.3.11.ebuild:
+ Stable on ppc.
+
+ 07 Sep 2006; Gustavo Zacarias <gustavoz@gentoo.org>
+ xmms-crossfade-0.3.11.ebuild:
+ Stable on sparc
+
+ 06 Sep 2006; Joshua Jackson <tsunam@gentoo.org>
+ xmms-crossfade-0.3.11.ebuild:
+ Stable x86; bug #146451
+
+ 06 Sep 2006; Luis Medinas <metalgod@gentoo.org>
+ xmms-crossfade-0.3.11.ebuild:
+ Stable on amd64. Bug #146451.
+
+*xmms-crossfade-0.3.11 (26 Jul 2006)
+
+ 26 Jul 2006; Luis Medinas <metalgod@gentoo.org>
+ +xmms-crossfade-0.3.11.ebuild:
+ Version Bump.
+
+*xmms-crossfade-0.3.10 (06 Dec 2005)
+
+ 06 Dec 2005; Luis Medinas <metalgod@gentoo.org>
+ +xmms-crossfade-0.3.10.ebuild:
+ Version Bump. Drop gcc4 patches since the upstream fix those issues.
+
+*xmms-crossfade-0.3.9 (02 Dec 2005)
+
+ 02 Dec 2005; Luis Medinas <metalgod@gentoo.org>
+ +files/xmms-crossfade-0.3.9-gcc4.patch, +xmms-crossfade-0.3.9.ebuild:
+ Version Bump. Added a patch to fix build on gcc4 made by me.
+
+ 30 Oct 2005; Luis Medinas <metalgod@gentoo.org>
+ xmms-crossfade-0.3.8.ebuild:
+ Added info about arts output plugin on the ebuild to warn users about how to
+ use it. Thanks to Ricardo Cordeiro <Ricardo.Cordeiro@iscte.pt>.
+
+ 17 Jun 2005; Michael Hanselmann <hansmi@gentoo.org>
+ xmms-crossfade-0.3.8.ebuild:
+ Stable on ppc.
+
+ 11 Nov 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ xmms-crossfade-0.3.8.ebuild:
+ Stable amd64, sparc, x86.
+
+*xmms-crossfade-0.3.8 (24 Sep 2004)
+
+ 24 Sep 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ -xmms-crossfade-0.3.6.ebuild, +xmms-crossfade-0.3.8.ebuild:
+ Version bump. See bug #65205.
+
+*xmms-crossfade-0.3.6 (24 Sep 2004)
+
+ 24 Sep 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ -xmms-crossfade-0.2.9.ebuild, -xmms-crossfade-0.3.1.ebuild,
+ -xmms-crossfade-0.3.2.ebuild, +xmms-crossfade-0.3.6.ebuild:
+ Version bump. Removing old versions. Directly into stable on amd64 as it
+ fixes problems with --libdir installing the plugin to an incorrect location
+ in previous versions.
+
+ 16 Aug 2004; <frank@gentoo.org> :
+ Version bump to 0.3.5. Closes bug #59780.
+
+ 03 Jul 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ xmms-crossfade-0.3.4.ebuild:
+ Stable sparc.
+
+ 21 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ xmms-crossfade-0.3.2.ebuild:
+ Removed explicit S=
+
+ 20 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ xmms-crossfade-0.2.9.ebuild, xmms-crossfade-0.3.1.ebuild,
+ xmms-crossfade-0.3.2.ebuild:
+ Added IUSE.
+
+ 14 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ xmms-crossfade-0.3.4.ebuild:
+ Stable x86.
+
+ 04 Apr 2004; Lars Weiler <pylon@gentoo.org> xmms-crossfade-0.3.4.ebuild:
+ stable on ppc
+
+ 15 Feb 2004; David Holm <dholm@gentoo.org> xmms-crossfade-0.3.4.ebuild:
+ Added to ~ppc.
+
+*xmms-crossfade-0.3.4 (16 Oct 2003)
+
+ 16 Oct 2003; Nick Hadaway <raker@gentoo.org> xmms-crossfade-0.3.4.ebuild:
+ Version bump. Minor cosmetic changes to the ebuild.
+
+ 29 Aug 2003; root <root@gentoo.org> xmms-crossfade-0.3.2.ebuild:
+ Add ~sparc to keywords, closes #27521.
+
+*xmms-crossfade-0.3.2 (12 May 2003)
+
+ 12 May 2003; Martin Holzer <mholzer@gentoo.org> xmms-crossfade-0.3.2.ebuild:
+ Version bumped. Closes #20521.
+
+*xmms-crossfade-0.3.1 (31 Mar 2003)
+
+ 31 Mar 2003; Martin Holzer <mholzer@gentoo.org> xmms-crossfade-0.3.1.ebuild:
+ Version bumped.
+
+*xmms-crossfade-0.2.9 (1 Feb 2002)
+
+ 30 Aug 2002; Seemant Kulleen <seemant@gentoo.org> * :
+
+ Relocated to media-plugins
+
+ 1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
+
+ Added initial ChangeLog which should be updated whenever the package is
+ updated in any way. This changelog is targetted to users. This means that the
+ comments should well explained and written in clean English. The details about
+ writing correct changelogs are explained in the skel.ChangeLog file which you
+ can find in the root directory of the portage repository.
diff --git a/media-plugins/xmms-crossfade/Manifest b/media-plugins/xmms-crossfade/Manifest
new file mode 100644
index 0000000..58bca5d
--- /dev/null
+++ b/media-plugins/xmms-crossfade/Manifest
@@ -0,0 +1,4 @@
+DIST xmms-crossfade-0.3.11.tar.gz 494334 RMD160 a42b319fc8cdfb8cce4d011c5d3818efd8b34bd7 SHA1 e9f2f92a30910afe08570e6af69ed14ed24b1ac5 SHA256 2229fc32e96293e213d8a5d60a7f95225dfc25cec4be8a4a9702cac5defcb33b
+EBUILD xmms-crossfade-0.3.11.ebuild 968 RMD160 d7801a64d24bc97e651414df50ddcbba1849a079 SHA1 15fccfbddf1fffd930667a1fa30bdca594530f42 SHA256 21d6a4216249717453c03c39beb6ea3d1aef53f83be6d62115db56e1fc0f8a24
+MISC ChangeLog 4117 RMD160 ca4273fb5c278ab749ed9aa1ae4a870cfc663477 SHA1 6ae2035f7ec50031c3cb14a86bb4b0142c3ef219 SHA256 5d049c1f440dbe5ee406c4db375617e0115ae8323848d9cf1c1a1fe6a5b11736
+MISC metadata.xml 158 RMD160 6842e2189a50bd8a98e84802c38180ac1421c00e SHA1 703cea5a2109d41f7c87993c1f01d418a4c85174 SHA256 dfb5b47e6836db39fb187301dfcff1c2605e91d13d21db160806a563d8c75f9b
diff --git a/media-plugins/xmms-crossfade/metadata.xml b/media-plugins/xmms-crossfade/metadata.xml
new file mode 100644
index 0000000..e1774e3
--- /dev/null
+++ b/media-plugins/xmms-crossfade/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>sound</herd>
+</pkgmetadata>
diff --git a/media-plugins/xmms-crossfade/xmms-crossfade-0.3.11.ebuild b/media-plugins/xmms-crossfade/xmms-crossfade-0.3.11.ebuild
new file mode 100644
index 0000000..e984174
--- /dev/null
+++ b/media-plugins/xmms-crossfade/xmms-crossfade-0.3.11.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-crossfade/xmms-crossfade-0.3.11.ebuild,v 1.5 2006/09/24 09:05:58 hansmi Exp $
+
+inherit eutils
+
+IUSE=""
+
+DESCRIPTION="XMMS Plugin for crossfading, and continuous output."
+HOMEPAGE="http://www.eisenlohr.org/${PN}/index.html"
+SRC_URI="http://www.eisenlohr.org/${PN}/${P}.tar.gz"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 ppc sparc x86"
+
+DEPEND="media-sound/xmms"
+
+src_compile() {
+ econf --libdir=`xmms-config --output-plugin-dir` || die
+ emake || die
+}
+
+src_install () {
+ make DESTDIR="${D}" install || die
+ dodoc AUTHORS ChangeLog README TODO
+}
+pkg_postinst () {
+ ewarn "If you're using the ARTS output plugin, set the 'Limit OP buffer"
+ ewarn "usage' to 400ms in the 'Advanced' tab of XMMS-crossfade's"
+ ewarn "configuration dialog. This will eliminate the worst"
+ ewarn "of the distorted/skipped output."
+}
diff --git a/media-plugins/xmms-flac/Manifest b/media-plugins/xmms-flac/Manifest
new file mode 100644
index 0000000..1777a74
--- /dev/null
+++ b/media-plugins/xmms-flac/Manifest
@@ -0,0 +1,6 @@
+AUX flac-1.2.1-asm.patch 2844 RMD160 7e2f1dbdf1dbe7c019089f5359f794123cb388f9 SHA1 9cf5708bcc181b66632868e95e23a84b0a1644af SHA256 b9a6d2011b9902924372316f3544e94cb066fe202e256b9696bf6cd6ee8a490b
+AUX flac-1.2.1-asneeded.patch 840 RMD160 42570f0d4c8bb6ff2f188e81952ac774fa9cfd0d SHA1 a87abf76cbc9db5cf65d6282cdfcf3b5cfcd329c SHA256 cb112fcc85fa57fb68e9fb0d1f735225132fb25b3cd41bb08febfc2d2154bb63
+AUX flac-1.2.1-cflags.patch 435 RMD160 49cb14f8c107fada76252a67e6ef693dcc0f82b1 SHA1 5698376e901679398b6dac850d8015b1386f1983 SHA256 cc9397825c966839edcd4a30406ff3590a21c825d4e1cb043bd35145a608bc21
+AUX xmms-flac-ds-gcc4.patch 425 RMD160 699534306928d800c9be88c30731a076f1c26099 SHA1 95a6ebfad9e306712f9918e80594b2476a3b42ee SHA256 f23edbb110b9ce5481fe27723ee6244117b1236c113f257c0f2f6da79ca3f62d
+DIST flac-1.2.1.tar.gz 2009217 RMD160 bd3223c848054f0a75d11200b30f903bdd375bfc SHA1 bd54354900181b59db3089347cc84ad81e410b38 SHA256 9635a44bceb478bbf2ee8a785cf6986fba525afb5fad1fd4bba73cf71f2d3edf
+EBUILD xmms-flac-1.2.1-r2.ebuild 1699 RMD160 2930a015964555afd108e3eb66f7f2901970e630 SHA1 cc4a6bb348513a685562d39d9318a923be9e7855 SHA256 44a6ec8ed299d75a0837b4b8875fd3f29500d89ba28974fa81b62da0225b95ba
diff --git a/media-plugins/xmms-flac/files/flac-1.2.1-asm.patch b/media-plugins/xmms-flac/files/flac-1.2.1-asm.patch
new file mode 100644
index 0000000..cc832ee
--- /dev/null
+++ b/media-plugins/xmms-flac/files/flac-1.2.1-asm.patch
@@ -0,0 +1,80 @@
+diff -urp flac-1.2.1-old/src/libFLAC/ia32/bitreader_asm.nasm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm
+--- flac-1.2.1-old/src/libFLAC/ia32/bitreader_asm.nasm 2007-03-30 02:54:53.000000000 +0200
++++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm 2007-09-27 21:39:45.000000000 +0200
+@@ -140,8 +140,13 @@ cident FLAC__bitreader_read_rice_signed_
+ %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
+ mov edi, _FLAC__crc16_table
+ %else
++%ifdef OBJ_FORMAT_elf
++ mov edi, [esp + 16] ; saved ebx (GOT base)
++ lea edi, [edi + FLAC__crc16_table wrt ..gotoff]
++%else
+ mov edi, FLAC__crc16_table
+ %endif
++%endif
+ ;; eax (ax) crc a.k.a. br->read_crc
+ ;; ebx (bl) intermediate result index into FLAC__crc16_table[]
+ ;; ecx br->crc16_align
+@@ -216,8 +221,13 @@ cident FLAC__bitreader_read_rice_signed_
+ %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
+ mov edi, _FLAC__crc16_table
+ %else
++%ifdef OBJ_FORMAT_elf
++ mov edi, [esp + 16] ; saved ebx (GOT base)
++ lea edi, [edi + FLAC__crc16_table wrt ..gotoff]
++%else
+ mov edi, FLAC__crc16_table
+ %endif
++%endif
+ ;; eax (ax) crc a.k.a. br->read_crc
+ ;; ebx (bl) intermediate result index into FLAC__crc16_table[]
+ ;; ecx br->crc16_align
+@@ -315,8 +325,13 @@ cident FLAC__bitreader_read_rice_signed_
+ %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
+ call _bitreader_read_from_client_
+ %else
++%ifdef OBJ_FORMAT_elf
++ mov ebx, [esp + 20] ; saved ebx (GOT base)
++ call bitreader_read_from_client_ wrt ..plt
++%else
+ call bitreader_read_from_client_
+ %endif
++%endif
+ pop edx ; /* discard, unused */
+ pop ecx ; /* restore */
+ mov esi, [ebp + 16] ; cwords = br->consumed_words;
+@@ -362,13 +377,20 @@ cident FLAC__bitreader_read_rice_signed_
+ mov [ebp + 16], esi ; br->consumed_words = cwords;
+ mov [ebp + 20], ecx ; br->consumed_bits = cbits;
+ push ecx ; /* save */
++ push ebx ; /* save */
+ push ebp ; /* push br argument */
+ %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
+ call _bitreader_read_from_client_
+ %else
++%ifdef OBJ_FORMAT_elf
++ mov ebx, [esp + 24] ; saved ebx (GOT base)
++ call bitreader_read_from_client_ wrt ..plt
++%else
+ call bitreader_read_from_client_
+ %endif
++%endif
+ pop edx ; /* discard, unused */
++ pop ebx ; /* restore */
+ pop ecx ; /* restore */
+ mov esi, [ebp + 16] ; cwords = br->consumed_words;
+ ; ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
+@@ -437,8 +459,13 @@ cident FLAC__bitreader_read_rice_signed_
+ %ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
+ mov edi, _FLAC__crc16_table
+ %else
++%ifdef OBJ_FORMAT_elf
++ mov edi, [esp + 24] ; saved ebx (GOT base)
++ lea edi, [edi + FLAC__crc16_table wrt ..gotoff]
++%else
+ mov edi, FLAC__crc16_table
+ %endif
++%endif
+ ;; eax (ax) crc a.k.a. br->read_crc
+ ;; ebx (bl) intermediate result index into FLAC__crc16_table[]
+ ;; ecx br->crc16_align
diff --git a/media-plugins/xmms-flac/files/flac-1.2.1-asneeded.patch b/media-plugins/xmms-flac/files/flac-1.2.1-asneeded.patch
new file mode 100644
index 0000000..0d6ffb9
--- /dev/null
+++ b/media-plugins/xmms-flac/files/flac-1.2.1-asneeded.patch
@@ -0,0 +1,22 @@
+diff -ur flac-1.2.1.orig/src/flac/Makefile.am flac-1.2.1/src/flac/Makefile.am
+--- flac-1.2.1.orig/src/flac/Makefile.am 2007-09-11 20:56:51.000000000 +0300
++++ flac-1.2.1/src/flac/Makefile.am 2007-09-20 19:38:09.000000000 +0300
+@@ -53,6 +53,6 @@
+ $(top_builddir)/src/share/utf8/libutf8.la \
+ $(top_builddir)/src/libFLAC/libFLAC.la \
+ @OGG_LIBS@ \
+- @LIBICONV@ \
++ @LTLIBICONV@ \
+ @MINGW_WINSOCK_LIBS@ \
+ -lm
+diff -ur flac-1.2.1.orig/src/metaflac/Makefile.am flac-1.2.1/src/metaflac/Makefile.am
+--- flac-1.2.1.orig/src/metaflac/Makefile.am 2007-09-11 20:59:25.000000000 +0300
++++ flac-1.2.1/src/metaflac/Makefile.am 2007-09-20 19:38:25.000000000 +0300
+@@ -49,6 +49,6 @@
+ $(top_builddir)/src/share/utf8/libutf8.la \
+ $(top_builddir)/src/libFLAC/libFLAC.la \
+ @OGG_LIBS@ \
+- @LIBICONV@ \
++ @LTLIBICONV@ \
+ @MINGW_WINSOCK_LIBS@ \
+ -lm
diff --git a/media-plugins/xmms-flac/files/flac-1.2.1-cflags.patch b/media-plugins/xmms-flac/files/flac-1.2.1-cflags.patch
new file mode 100644
index 0000000..3910604
--- /dev/null
+++ b/media-plugins/xmms-flac/files/flac-1.2.1-cflags.patch
@@ -0,0 +1,12 @@
+diff -ur flac-1.2.1.orig/configure.in flac-1.2.1/configure.in
+--- flac-1.2.1.orig/configure.in 2007-09-13 18:48:42.000000000 +0300
++++ flac-1.2.1/configure.in 2007-09-20 19:26:05.000000000 +0300
+@@ -301,7 +301,7 @@
+ CPPFLAGS="-DNDEBUG $CPPFLAGS"
+ if test "x$GCC" = xyes; then
+ CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS"
+- CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS"
++ CFLAGS="$CFLAGS"
+ fi
+ fi
+
diff --git a/media-plugins/xmms-flac/files/xmms-flac-ds-gcc4.patch b/media-plugins/xmms-flac/files/xmms-flac-ds-gcc4.patch
new file mode 100644
index 0000000..0507c95
--- /dev/null
+++ b/media-plugins/xmms-flac/files/xmms-flac-ds-gcc4.patch
@@ -0,0 +1,11 @@
+diff -dPNur flac-1.2.1-orig/examples/cpp/encode/file/main.cpp flac-1.2.1/examples/cpp/encode/file/main.cpp
+--- flac-1.2.1-orig/examples/cpp/encode/file/main.cpp 2007-09-13 17:58:03.000000000 +0200
++++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2011-02-08 17:30:56.000000000 +0100
+@@ -30,6 +30,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "FLAC++/metadata.h"
+ #include "FLAC++/encoder.h"
+
diff --git a/media-plugins/xmms-flac/xmms-flac-1.2.1-r2.ebuild b/media-plugins/xmms-flac/xmms-flac-1.2.1-r2.ebuild
new file mode 100644
index 0000000..90899cf
--- /dev/null
+++ b/media-plugins/xmms-flac/xmms-flac-1.2.1-r2.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/flac/flac-1.2.1-r1.ebuild,v 1.10 2007/11/01 19:07:17 armin76 Exp $
+
+inherit autotools eutils
+
+DESCRIPTION="free lossless audio encoder and decoder plugin for xmms"
+HOMEPAGE="http://flac.sourceforge.net"
+SRC_URI="mirror://sourceforge/flac/flac-${PV}.tar.gz"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~x86-fbsd"
+IUSE="3dnow altivec debug doc ogg sse"
+
+RDEPEND="ogg? ( >=media-libs/libogg-1.1.3 )"
+DEPEND="${RDEPEND}
+ x86? ( dev-lang/nasm )
+ sys-apps/gawk
+ sys-devel/gettext
+ dev-util/pkgconfig
+ media-libs/flac
+ media-sound/xmms"
+
+S="${WORKDIR}/flac-${PV}"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # Stop using upstream CFLAGS. Fix building with
+ # ldflag asneeded on non glibc systems. Fix
+ # broken asm causing text relocations.
+ epatch "${FILESDIR}"/flac-${PV}-asneeded.patch || die
+ epatch "${FILESDIR}"/flac-${PV}-cflags.patch || die
+ epatch "${FILESDIR}"/flac-${PV}-asm.patch || die
+ epatch "${FILESDIR}"/xmms-flac-ds-gcc4.patch || die
+
+ #AT_M4DIR="m4" eautoreconf
+ ./autogen.sh
+}
+
+src_compile() {
+ econf $(use_enable ogg) \
+ $(use_enable sse) \
+ $(use_enable 3dnow) \
+ $(use_enable altivec) \
+ $(use_enable debug) \
+ --disable-doxygen-docs \
+ --disable-dependency-tracking \
+ --enable-xmms-plugin
+
+ emake || die "emake failed."
+}
+
+src_install() {
+ mkdir -p "${D}/usr/lib/xmms/Input"
+ install -c -m 755 src/plugin_xmms/.libs/libxmms-flac.so "${D}/usr/lib/xmms/Input" || die
+ install -c -m 755 src/plugin_xmms/.libs/libxmms-flac.la "${D}/usr/lib/xmms/Input" || die
+}
diff --git a/media-plugins/xmms-jack/Manifest b/media-plugins/xmms-jack/Manifest
new file mode 100644
index 0000000..4f54c23
--- /dev/null
+++ b/media-plugins/xmms-jack/Manifest
@@ -0,0 +1,2 @@
+DIST xmms-jack-0.17.tar.gz 527149 RMD160 c08ebbda0669a2104d9d02a1cbf5d9f1529dc36c SHA1 9df8b5b12aa6a3eb7c2185dac0da6044cd9c7c91 SHA256 2fbf6205fdfe08d01e57cd31c11efb677acb43e0fb50a8ffe2f2430720c5c176
+EBUILD xmms-jack-0.17.ebuild 1046 RMD160 355c43d5940e8a2ea9588d0e437c73c6418ed310 SHA1 95944d6ba9e8058e1da4c9218c00093357c79b5b SHA256 5940deb93794a8c36aa4a564ad166801c6fce0f33b10236b30ea50d5c0ff8dad
diff --git a/media-plugins/xmms-jack/xmms-jack-0.17.ebuild b/media-plugins/xmms-jack/xmms-jack-0.17.ebuild
new file mode 100644
index 0000000..fdebf5d
--- /dev/null
+++ b/media-plugins/xmms-jack/xmms-jack-0.17.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-jack/xmms-jack-0.17.ebuild,v 1.2 2006/07/05 06:13:05 vapier Exp $
+
+inherit eutils libtool autotools
+
+DESCRIPTION="a jack audio output plugin for XMMS"
+HOMEPAGE="http://xmms-jack.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+RDEPEND="media-sound/xmms
+ >=media-libs/bio2jack-0.7
+ media-libs/libsamplerate
+ media-sound/jack-audio-connection-kit"
+DEPEND="${RDEPEND}
+ =sys-devel/automake-1.8*
+ >=sys-devel/autoconf-2.59"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ #quick endianess fix
+ sed -i -e "s:FMT_S16_LE:FMT_S16_NE:g" jack.c
+ export WANT_AUTOMAKE=1.8
+ export WANT_AUTOCONF=2.5
+ eautoreconf
+ elibtoolize
+}
+
+src_compile() {
+ econf --disable-static || die
+ emake || die
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die
+ dodoc AUTHORS ChangeLog NEWS README
+}
diff --git a/media-plugins/xmms-lirc/Manifest b/media-plugins/xmms-lirc/Manifest
new file mode 100644
index 0000000..22662a9
--- /dev/null
+++ b/media-plugins/xmms-lirc/Manifest
@@ -0,0 +1,2 @@
+DIST lirc-xmms-plugin-1.4.tar.gz 205687 RMD160 dadca43af8d5b1eb40b656755004ab47371dd6b5 SHA1 a4300a96c04aba1b9de4e3cfc582f1e304bc3688 SHA256 61720049d1afe7a8a66489e9865d8e4964b83bd94c2e319c6407f92e94deadcb
+EBUILD xmms-lirc-1.4.ebuild 855 RMD160 5fdb717219d0b0b6aa373a896ae619b7a7cc5140 SHA1 16f9162f584c45c2289f898e0d2793ddcd83f840 SHA256 463a2385afb3744f37e69be3d270a17cf0b12580e0048e90510c3f15553d0416
diff --git a/media-plugins/xmms-lirc/xmms-lirc-1.4.ebuild b/media-plugins/xmms-lirc/xmms-lirc-1.4.ebuild
new file mode 100644
index 0000000..e48f2cf
--- /dev/null
+++ b/media-plugins/xmms-lirc/xmms-lirc-1.4.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-lirc/xmms-lirc-1.4.ebuild,v 1.13 2005/04/08 17:41:38 hansmi Exp $
+
+IUSE=""
+
+MY_P=${P/xmms-lirc/lirc-xmms-plugin}
+S="${WORKDIR}/${MY_P}"
+
+DESCRIPTION="LIRC plugin for xmms to control xmms with your favorite remote control."
+HOMEPAGE="http://www.lirc.org"
+SRC_URI="mirror://sourceforge/lirc/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ppc x86 ppc64"
+
+DEPEND="media-sound/xmms
+ app-misc/lirc"
+
+src_install () {
+ make DESTDIR="${D}" install || die
+ dodoc AUTHORS ChangeLog lircrc NEWS README
+}
+
+pkg_postinst () {
+ einfo
+ einfo "You have to edit your .lircrc. You can find an example file at"
+ einfo "/usr/share/doc/${PF}."
+ einfo "And take a look at the README there."
+ einfo
+}
diff --git a/media-plugins/xmms-mac/Manifest b/media-plugins/xmms-mac/Manifest
new file mode 100644
index 0000000..ecd375e
--- /dev/null
+++ b/media-plugins/xmms-mac/Manifest
@@ -0,0 +1,3 @@
+AUX xmms-mac-ds-gcc44.patch 504 RMD160 911bb61420583350fae135854445fab4f2cb5d09 SHA1 af32898920817aa6d8cc1ea39a0ba0894049bc23 SHA256 e067fea7d2fe2901a8f0adc590ad307a9ef9a580867a087bb4435f1934e98abe
+DIST xmms-mac-0.3.1.tar.gz 299783 RMD160 a7b22cdf0a8196480016f02314a0f60dfcab9984 SHA1 68a75ca93d76fa7deffceac4994b3c2c54518159 SHA256 c1c12231dd6d679dc458bca2e18b65dfb9d4fad1427ca6569e1cbeeb9650ab02
+EBUILD xmms-mac-0.3.1-r2.ebuild 860 RMD160 fffbf05bf29acbd7bf9fef7ae4d9db14ef3153ab SHA1 ebb05f7eb15c5eae0e58b5018a371c64f78943bf SHA256 3deb910452936219f67895550d02739d04f51eabb2f51f209a9219fc9650a8f1
diff --git a/media-plugins/xmms-mac/files/xmms-mac-ds-gcc44.patch b/media-plugins/xmms-mac/files/xmms-mac-ds-gcc44.patch
new file mode 100644
index 0000000..66580e8
--- /dev/null
+++ b/media-plugins/xmms-mac/files/xmms-mac-ds-gcc44.patch
@@ -0,0 +1,18 @@
+diff -dPNur xmms-mac-0.3.1-orig/src/mac.cpp xmms-mac-0.3.1/src/mac.cpp
+--- xmms-mac-0.3.1-orig/src/mac.cpp 2005-04-15 11:05:46.000000000 +0200
++++ xmms-mac-0.3.1/src/mac.cpp 2011-02-08 17:24:17.000000000 +0100
+@@ -45,12 +45,12 @@
+
+ static char *get_file_extname(const char *filename)
+ {
+- char *ext = strrchr(filename, '.');
++ const char *ext = strrchr(filename, '.');
+
+ if (ext != NULL)
+ ++ext;
+
+- return ext;
++ return (char*)ext;
+ }
+
+ static char *get_tag_info(CAPETag *tag, wchar_t *fieldname)
diff --git a/media-plugins/xmms-mac/xmms-mac-0.3.1-r2.ebuild b/media-plugins/xmms-mac/xmms-mac-0.3.1-r2.ebuild
new file mode 100644
index 0000000..83f5122
--- /dev/null
+++ b/media-plugins/xmms-mac/xmms-mac-0.3.1-r2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: current version of ebuild http://atrey.karlin.mff.cuni.cz/~sanda/mac/$
+inherit eutils
+
+IUSE=""
+
+DESCRIPTION="Plugin to listen ape files (monkey audio codec) files on xmms"
+HOMEPAGE="http://sourceforge.net/projects/mac-port/"
+SRC_URI="http://dside.dyndns.org/files/darklin/${P}.tar.gz"
+
+SLOT="0"
+KEYWORDS="x86 amd64"
+LICENSE="MAC"
+
+DEPEND="media-sound/xmms media-libs/mac"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/xmms-mac-ds-gcc44.patch || die
+}
+
+src_compile () {
+ econf --with-prefix=`xmms-config --prefix` --with-exec-prefix=`xmms-config --exec-prefix`|| die 'Configure failed'
+ emake || die "Error compiling"
+}
+
+src_install()
+{
+ einstall DESTDIR="${D}" || die
+ dodoc AUTHORS BUGS ChangeLog NEWS README TODO COPYING
+}
diff --git a/media-plugins/xmms-mad/Manifest b/media-plugins/xmms-mad/Manifest
new file mode 100644
index 0000000..0562d46
--- /dev/null
+++ b/media-plugins/xmms-mad/Manifest
@@ -0,0 +1,4 @@
+AUX xmms-mad-0.8-mp3-header.patch 1547 RMD160 832fb7bced8ba9f92fe37d9ba50ed5c994d356cd SHA1 a0dd37e3df23daf981a5b63c796fcab7539f7332 SHA256 89e7b29bf258cc0fbc44a7d6b0a171c20c763bb3586fedd67cc13c604b10a129
+AUX xmms-mad-0.8-song_change.patch 472 RMD160 c3a09b76ad064fd5d508719eb0eb1cb719b39922 SHA1 d34c0ee09839ead27f203d9fe0c349de55d35a34 SHA256 bdf10fe9b4bbcfe8b612e29068df7a46b9f2c7361261370d8dac881968bcee51
+DIST xmms-mad-0.8.tar.gz 315069 RMD160 19fe42c13c24ad6f55af066435c3faee7c2f8ff6 SHA1 4de4fa9d6db919968276f9a185b0cb3c96c1e097 SHA256 85774ead2c2d31a3c211ab24fdd03844bc624078abe47bbb92d28844061f3822
+EBUILD xmms-mad-0.8-r2.ebuild 879 RMD160 d22bd873040a31ead60f4dc2ea7774f744a9eaa3 SHA1 61db9b2ff5373f521c610a1ebe44c2f16f7a794d SHA256 a53c5ff71653fc03c7d386ab007a7e189455254dcefef5666728ff9622801a15
diff --git a/media-plugins/xmms-mad/files/xmms-mad-0.8-mp3-header.patch b/media-plugins/xmms-mad/files/xmms-mad-0.8-mp3-header.patch
new file mode 100644
index 0000000..bea8e11
--- /dev/null
+++ b/media-plugins/xmms-mad/files/xmms-mad-0.8-mp3-header.patch
@@ -0,0 +1,47 @@
+diff -urp xmms-mad-0.8-org/src/xmms-mad.c xmms-mad-0.8/src/xmms-mad.c
+--- xmms-mad-0.8-org/src/xmms-mad.c 2005-12-04 23:18:21.000000000 +0200
++++ xmms-mad-0.8/src/xmms-mad.c 2005-12-04 23:34:53.000000000 +0200
+@@ -76,6 +76,31 @@ xmmsmad_set_eq (int on, float preamp, fl
+ //printf("set_eq\n");
+ }
+
++
++/* Following mp3 header check has been copied from XMMS mp3 input plugin. */
++static int mpg123_head_check(unsigned char *buffer)
++{
++ unsigned int head = (buffer[0] << 24) + (buffer[1] << 16) + (buffer[2] << 8) + buffer[3];
++ if ((head & 0xffe00000) != 0xffe00000)
++ return FALSE;
++ if (!((head >> 17) & 3))
++ return FALSE;
++ if (((head >> 12) & 0xf) == 0xf)
++ return FALSE;
++ if (!((head >> 12) & 0xf))
++ return FALSE;
++ if (((head >> 10) & 0x3) == 0x3)
++ return FALSE;
++ if (((head >> 19) & 1) == 1 &&
++ ((head >> 17) & 3) == 3 &&
++ ((head >> 16) & 1) == 1)
++ return FALSE;
++ if ((head & 0xffff0000) == 0xfffe0000)
++ return FALSE;
++ return TRUE;
++}
++
++
+ static int
+ xmmsmad_is_our_file (char *filename)
+ {
+@@ -96,9 +121,8 @@ xmmsmad_is_our_file (char *filename)
+ fin = open (filename, O_RDONLY);
+ if (fin >= 0 && read (fin, check, 4) == 4)
+ {
+- /* If first two bytes are a sync header or three bytes are "ID3" */
+- if ( (check[0] == 0xff && (check[1] & 0x70) == 0x70)
+- || memcmp (check, "ID3", 3) == 0)
++ /* If first 4 bytes are a sync header or three bytes are "ID3" */
++ if (mpg123_head_check(check) || memcmp (check, "ID3", 3) == 0)
+ {
+ rtn = 1;
+ }
diff --git a/media-plugins/xmms-mad/files/xmms-mad-0.8-song_change.patch b/media-plugins/xmms-mad/files/xmms-mad-0.8-song_change.patch
new file mode 100644
index 0000000..b38fc24
--- /dev/null
+++ b/media-plugins/xmms-mad/files/xmms-mad-0.8-song_change.patch
@@ -0,0 +1,12 @@
+diff -urN xmms-mad-0.8.orig/src/decoder.c xmms-mad-0.8/src/decoder.c
+--- xmms-mad-0.8.orig/src/decoder.c 2006-04-03 22:07:29.000000000 -0400
++++ xmms-mad-0.8/src/decoder.c 2006-04-03 22:33:46.000000000 -0400
+@@ -493,7 +493,7 @@
+ {
+ mad_plugin.output->buffer_free ();
+ mad_plugin.output->buffer_free ();
+- while (mad_plugin.output->buffer_playing ())
++ while (mad_plugin.output->buffer_playing () && !info->stop)
+ usleep (10000);
+ }
+
diff --git a/media-plugins/xmms-mad/xmms-mad-0.8-r2.ebuild b/media-plugins/xmms-mad/xmms-mad-0.8-r2.ebuild
new file mode 100644
index 0000000..336dfe7
--- /dev/null
+++ b/media-plugins/xmms-mad/xmms-mad-0.8-r2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-mad/xmms-mad-0.8-r2.ebuild,v 1.2 2006/07/05 06:09:38 vapier Exp $
+
+inherit eutils
+
+DESCRIPTION="A XMMS plugin for MAD"
+HOMEPAGE="http://xmms-mad.sourceforge.net/"
+SRC_URI="mirror://sourceforge/xmms-mad/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 -mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+RDEPEND="media-sound/xmms
+ media-libs/libid3tag
+ media-libs/libmad"
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-mp3-header.patch
+ epatch "${FILESDIR}"/${P}-song_change.patch
+ touch configure
+}
+
+src_install() {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe src/.libs/libxmmsmad.so || die
+ dodoc AUTHORS ChangeLog NEWS README
+}
diff --git a/media-plugins/xmms-mikmod/Manifest b/media-plugins/xmms-mikmod/Manifest
new file mode 100644
index 0000000..22bcf33
--- /dev/null
+++ b/media-plugins/xmms-mikmod/Manifest
@@ -0,0 +1,12 @@
+DIST RusXMMS2-csa35.tar.bz2 128165 RMD160 047782f64bfbcc8119d584f9f3dc9680d324519a SHA1 9c167e33b36e6e35917dd7eca9435f3408d6a9c9 SHA256 3bb63e9ce6fd2bca289ebfbde13c7dd3c0b0ca734e676b647acac1ef293312b4
+DIST RusXMMS2-csa41.tar.bz2 96642 RMD160 7ead4de64156b20682e90f8fc4c85112cf9b2cdc SHA1 034b2264a17977f614c91809bc4ee9ee7c07ecaf SHA256 e64df1956502e48c09ca60262efb7f1953a76d82a70c801e4797ca81e130e8d0
+DIST RusXMMS2-csa43.tar.bz2 104507 RMD160 4f609b588e5cdef4b4190c09f11c85a3f590913d SHA1 51a73494ebee0676a7a8f04dc1fc190d9c742b57 SHA256 b2c0ac09a481b2d77c6e4750a19497f550d93eb961839df3db5ce5da714e6caf
+DIST xmms-1.2.10-gentoo-m4-1.1.tar.bz2 26978 RMD160 63ce094969f33205420f9823a970eb3faabf2e3e SHA1 4ef6fb75370861201161adf8f65ec5db735516f4 SHA256 e253fb2a515d3c7881617172f14fccad6a42cea660b8eaaeef9657114288e46f
+DIST xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 545931 RMD160 6d376e2edadc1ac69a704575dd04775364c9ed1f SHA1 1a5a2ae2b744d5e1ae1ba72d3cb0bb078963aae0 SHA256 b9a8633fe22af156ca1af65ac35d369242ce8016619d87647ba8389b8d52ba96
+DIST xmms-1.2.10.tar.bz2 2418265 RMD160 0360cbb8c326b3325bd8ebb3343c69a9788d7084 SHA1 a3c3d3756d5263183c27b3c50a7f5404cba8bfaf SHA256 ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a
+DIST xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 16946 RMD160 49e3cd7eaac251c086cff3976e5be6e75bd33938 SHA1 29977700765aaf5ed860e3cccbb958f61f574f34 SHA256 fdfec6f54b65a8a17d4f6342cadc8c9b1f503f1d0672761c1bab963da6a86a91
+DIST xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 16739 RMD160 d45430baccccad600b3f0a37e4fd0b40e8d8bfca SHA1 9e0eb1b39e4c7385112637412ada7bc186e1b3b9 SHA256 9aebef51507f49b25f771ed380c652950a1f04e9105fb7029ef3a1889ea19abd
+DIST xmms-1.2.11.tar.bz2 2581032 RMD160 466a624572574c56595ef34f42c43d0b74857b0a SHA1 9d1eae4baab25fd35c9ddfb49321ca60222f672d SHA256 7ec15c56632b6c82e61ccddeaefd372359af2f005708a58cdf3951c574b20390
+EBUILD xmms-mikmod-1.2.10.ebuild 526 RMD160 f64f64c6f7c0ea3fcddee84fdb016bb95c45840c SHA1 2b9d75ecb6bde5585cb7000d585e59190d3d2693 SHA256 6653714a38bb4058212e3f790c68411baadcb0c884036a67bed6fc92103b5fb8
+EBUILD xmms-mikmod-1.2.11-r2.ebuild 528 RMD160 fccaa367bce6a6ae611b861d865e207f5c877c85 SHA1 33db715b5fee0447579afe49db0fb98e9d1faed9 SHA256 c6506fd283a5be7a74d44d9e4d4bcd41ada84f28cb18d3565c34dedde9c4d6ae
+EBUILD xmms-mikmod-1.2.11.ebuild 526 RMD160 301875c7750fee7758fb535e2b1c21d7c1c0a819 SHA1 e93c84dea516aded6118a63b4403b07f631d4c7e SHA256 382d64bd2d89f5a4dec805445d7e5af37a99c9ac92d75e2805069b0f3e4a41f6
diff --git a/media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild b/media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild
new file mode 100644
index 0000000..f077af9
--- /dev/null
+++ b/media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild,v 1.9 2006/07/05 06:07:56 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.2.6"
+RUSXMMS_VER="35"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10
+ >=media-libs/libmikmod-3.1.10"
+
+PLUGIN_PATH="Input/mikmod"
+
+myconf="--enable-mikmod --with-libmikmod"
diff --git a/media-plugins/xmms-mikmod/xmms-mikmod-1.2.11-r2.ebuild b/media-plugins/xmms-mikmod/xmms-mikmod-1.2.11-r2.ebuild
new file mode 100644
index 0000000..ca297b8
--- /dev/null
+++ b/media-plugins/xmms-mikmod/xmms-mikmod-1.2.11-r2.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild,v 1.9 2006/07/05 06:07:56 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0.1"
+RUSXMMS_VER="43"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10
+ >=media-libs/libmikmod-3.1.10"
+
+PLUGIN_PATH="Input/mikmod"
+
+myconf="--enable-mikmod --with-libmikmod"
diff --git a/media-plugins/xmms-mikmod/xmms-mikmod-1.2.11.ebuild b/media-plugins/xmms-mikmod/xmms-mikmod-1.2.11.ebuild
new file mode 100644
index 0000000..e677ac0
--- /dev/null
+++ b/media-plugins/xmms-mikmod/xmms-mikmod-1.2.11.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-mikmod/xmms-mikmod-1.2.10.ebuild,v 1.9 2006/07/05 06:07:56 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0"
+RUSXMMS_VER="41"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10
+ >=media-libs/libmikmod-3.1.10"
+
+PLUGIN_PATH="Input/mikmod"
+
+myconf="--enable-mikmod --with-libmikmod"
diff --git a/media-plugins/xmms-mpg123/Manifest b/media-plugins/xmms-mpg123/Manifest
new file mode 100644
index 0000000..3ce8862
--- /dev/null
+++ b/media-plugins/xmms-mpg123/Manifest
@@ -0,0 +1,13 @@
+AUX xmms-ds-id3v2fix.patch 498 RMD160 4b8d43659126cbf1de0fd7d03eb6f3b4dac07bfb SHA1 09461c2e8c3a0259953c10f24d854beec5ff303a SHA256 4f87ed0a7cd660b0526f52fab90e37c31ea3566cf5f3d46bea3d8a2a559eecfa
+DIST RusXMMS2-csa35.tar.bz2 128165 RMD160 047782f64bfbcc8119d584f9f3dc9680d324519a SHA1 9c167e33b36e6e35917dd7eca9435f3408d6a9c9 SHA256 3bb63e9ce6fd2bca289ebfbde13c7dd3c0b0ca734e676b647acac1ef293312b4
+DIST RusXMMS2-csa41.tar.bz2 96642 RMD160 7ead4de64156b20682e90f8fc4c85112cf9b2cdc SHA1 034b2264a17977f614c91809bc4ee9ee7c07ecaf SHA256 e64df1956502e48c09ca60262efb7f1953a76d82a70c801e4797ca81e130e8d0
+DIST RusXMMS2-csa43.tar.bz2 104507 RMD160 4f609b588e5cdef4b4190c09f11c85a3f590913d SHA1 51a73494ebee0676a7a8f04dc1fc190d9c742b57 SHA256 b2c0ac09a481b2d77c6e4750a19497f550d93eb961839df3db5ce5da714e6caf
+DIST xmms-1.2.10-gentoo-m4-1.1.tar.bz2 26978 RMD160 63ce094969f33205420f9823a970eb3faabf2e3e SHA1 4ef6fb75370861201161adf8f65ec5db735516f4 SHA256 e253fb2a515d3c7881617172f14fccad6a42cea660b8eaaeef9657114288e46f
+DIST xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 545931 RMD160 6d376e2edadc1ac69a704575dd04775364c9ed1f SHA1 1a5a2ae2b744d5e1ae1ba72d3cb0bb078963aae0 SHA256 b9a8633fe22af156ca1af65ac35d369242ce8016619d87647ba8389b8d52ba96
+DIST xmms-1.2.10.tar.bz2 2418265 RMD160 0360cbb8c326b3325bd8ebb3343c69a9788d7084 SHA1 a3c3d3756d5263183c27b3c50a7f5404cba8bfaf SHA256 ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a
+DIST xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 16946 RMD160 49e3cd7eaac251c086cff3976e5be6e75bd33938 SHA1 29977700765aaf5ed860e3cccbb958f61f574f34 SHA256 fdfec6f54b65a8a17d4f6342cadc8c9b1f503f1d0672761c1bab963da6a86a91
+DIST xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 16739 RMD160 d45430baccccad600b3f0a37e4fd0b40e8d8bfca SHA1 9e0eb1b39e4c7385112637412ada7bc186e1b3b9 SHA256 9aebef51507f49b25f771ed380c652950a1f04e9105fb7029ef3a1889ea19abd
+DIST xmms-1.2.11.tar.bz2 2581032 RMD160 466a624572574c56595ef34f42c43d0b74857b0a SHA1 9d1eae4baab25fd35c9ddfb49321ca60222f672d SHA256 7ec15c56632b6c82e61ccddeaefd372359af2f005708a58cdf3951c574b20390
+EBUILD xmms-mpg123-1.2.10-r6.ebuild 648 RMD160 c3a637779006339b63cced3fadbcb7dbb46aa767 SHA1 f872dca531c5741698b9662cdec779ebf6208712 SHA256 04097a509f767a4cdc1be9fe9139cd52fbb1f8049589b78f6eea2c831851fca9
+EBUILD xmms-mpg123-1.2.11-r2.ebuild 650 RMD160 1d79503756915cb72a261666443727c323f782de SHA1 02119d3a7eb0dc90fe04d8481b29f33bd3ed67c9 SHA256 0ba864151c24e2855160c91f4aba26e85c47a4a8c838963e53295d42f46e8e71
+EBUILD xmms-mpg123-1.2.11.ebuild 648 RMD160 5e560fad13c2fe06dfafc27afa0ed70ed595faf1 SHA1 e68796f0b225154d16ad0cb670a418b694bb3ec1 SHA256 ea1f0ac3163909daa15152b2015414fb48fc2795d690c8cfc09e5dedc62d156b
diff --git a/media-plugins/xmms-mpg123/files/xmms-ds-id3v2fix.patch b/media-plugins/xmms-mpg123/files/xmms-ds-id3v2fix.patch
new file mode 100644
index 0000000..483ba57
--- /dev/null
+++ b/media-plugins/xmms-mpg123/files/xmms-ds-id3v2fix.patch
@@ -0,0 +1,12 @@
+diff -dPNur xmms-1.2.10/Input/mpg123/id3_frame_content.c xmms-1.2.10-new/Input/mpg123/id3_frame_content.c
+--- xmms-1.2.10/Input/mpg123/id3_frame_content.c 2006-11-23 10:09:31.000000000 +0400
++++ xmms-1.2.10-new/Input/mpg123/id3_frame_content.c 2006-11-23 10:10:28.000000000 +0400
+@@ -48,6 +48,8 @@
+ text_beg = text = id3_string_decode(ID3_TEXT_FRAME_ENCODING(frame),
+ ID3_TEXT_FRAME_PTR(frame));
+
++ if (!text_beg) return NULL;
++
+ /*
+ * If content is just plain text, return it.
+ */
diff --git a/media-plugins/xmms-mpg123/xmms-mpg123-1.2.10-r6.ebuild b/media-plugins/xmms-mpg123/xmms-mpg123-1.2.10-r6.ebuild
new file mode 100644
index 0000000..6069426
--- /dev/null
+++ b/media-plugins/xmms-mpg123/xmms-mpg123-1.2.10-r6.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="ipv6 ssl mmx 3dnow"
+
+DEPEND=">=media-sound/xmms-1.2.10-r12
+ ssl? ( dev-libs/openssl )"
+
+PLUGIN_PATH="Input/mpg123"
+
+M4_VER="1.1"
+PATCH_VER="2.2.6"
+RUSXMMS_VER="35"
+inherit rusxmms-plugin
+
+src_compile() {
+ myconf="${myconf} --enable-mpg123 $(use_enable ipv6) $(use_enable ssl)"
+
+ if use x86 && ! has_pic && { use mmx || use 3dnow; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ rusxmms-plugin_src_compile
+}
diff --git a/media-plugins/xmms-mpg123/xmms-mpg123-1.2.11-r2.ebuild b/media-plugins/xmms-mpg123/xmms-mpg123-1.2.11-r2.ebuild
new file mode 100644
index 0000000..e0ba109
--- /dev/null
+++ b/media-plugins/xmms-mpg123/xmms-mpg123-1.2.11-r2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="ipv6 ssl mmx 3dnow"
+
+DEPEND=">=media-sound/xmms-1.2.10-r12
+ ssl? ( dev-libs/openssl )"
+
+PLUGIN_PATH="Input/mpg123"
+
+M4_VER="1.1"
+PATCH_VER="2.3.0.1"
+RUSXMMS_VER="43"
+inherit rusxmms-plugin
+
+src_compile() {
+ myconf="${myconf} --enable-mpg123 $(use_enable ipv6) $(use_enable ssl)"
+
+ if use x86 && ! has_pic && { use mmx || use 3dnow; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ rusxmms-plugin_src_compile
+}
diff --git a/media-plugins/xmms-mpg123/xmms-mpg123-1.2.11.ebuild b/media-plugins/xmms-mpg123/xmms-mpg123-1.2.11.ebuild
new file mode 100644
index 0000000..0bc98a5
--- /dev/null
+++ b/media-plugins/xmms-mpg123/xmms-mpg123-1.2.11.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86"
+IUSE="ipv6 ssl mmx 3dnow"
+
+DEPEND=">=media-sound/xmms-1.2.10-r12
+ ssl? ( dev-libs/openssl )"
+
+PLUGIN_PATH="Input/mpg123"
+
+M4_VER="1.1"
+PATCH_VER="2.3.0"
+RUSXMMS_VER="41"
+inherit rusxmms-plugin
+
+src_compile() {
+ myconf="${myconf} --enable-mpg123 $(use_enable ipv6) $(use_enable ssl)"
+
+ if use x86 && ! has_pic && { use mmx || use 3dnow; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ rusxmms-plugin_src_compile
+}
diff --git a/media-plugins/xmms-oss/Manifest b/media-plugins/xmms-oss/Manifest
new file mode 100644
index 0000000..2ec23b8
--- /dev/null
+++ b/media-plugins/xmms-oss/Manifest
@@ -0,0 +1,12 @@
+DIST RusXMMS2-csa35.tar.bz2 128165 RMD160 047782f64bfbcc8119d584f9f3dc9680d324519a SHA1 9c167e33b36e6e35917dd7eca9435f3408d6a9c9 SHA256 3bb63e9ce6fd2bca289ebfbde13c7dd3c0b0ca734e676b647acac1ef293312b4
+DIST RusXMMS2-csa41.tar.bz2 96642 RMD160 7ead4de64156b20682e90f8fc4c85112cf9b2cdc SHA1 034b2264a17977f614c91809bc4ee9ee7c07ecaf SHA256 e64df1956502e48c09ca60262efb7f1953a76d82a70c801e4797ca81e130e8d0
+DIST RusXMMS2-csa43.tar.bz2 104507 RMD160 4f609b588e5cdef4b4190c09f11c85a3f590913d SHA1 51a73494ebee0676a7a8f04dc1fc190d9c742b57 SHA256 b2c0ac09a481b2d77c6e4750a19497f550d93eb961839df3db5ce5da714e6caf
+DIST xmms-1.2.10-gentoo-m4-1.1.tar.bz2 26978 RMD160 63ce094969f33205420f9823a970eb3faabf2e3e SHA1 4ef6fb75370861201161adf8f65ec5db735516f4 SHA256 e253fb2a515d3c7881617172f14fccad6a42cea660b8eaaeef9657114288e46f
+DIST xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 545931 RMD160 6d376e2edadc1ac69a704575dd04775364c9ed1f SHA1 1a5a2ae2b744d5e1ae1ba72d3cb0bb078963aae0 SHA256 b9a8633fe22af156ca1af65ac35d369242ce8016619d87647ba8389b8d52ba96
+DIST xmms-1.2.10.tar.bz2 2418265 RMD160 0360cbb8c326b3325bd8ebb3343c69a9788d7084 SHA1 a3c3d3756d5263183c27b3c50a7f5404cba8bfaf SHA256 ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a
+DIST xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 16946 RMD160 49e3cd7eaac251c086cff3976e5be6e75bd33938 SHA1 29977700765aaf5ed860e3cccbb958f61f574f34 SHA256 fdfec6f54b65a8a17d4f6342cadc8c9b1f503f1d0672761c1bab963da6a86a91
+DIST xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 16739 RMD160 d45430baccccad600b3f0a37e4fd0b40e8d8bfca SHA1 9e0eb1b39e4c7385112637412ada7bc186e1b3b9 SHA256 9aebef51507f49b25f771ed380c652950a1f04e9105fb7029ef3a1889ea19abd
+DIST xmms-1.2.11.tar.bz2 2581032 RMD160 466a624572574c56595ef34f42c43d0b74857b0a SHA1 9d1eae4baab25fd35c9ddfb49321ca60222f672d SHA256 7ec15c56632b6c82e61ccddeaefd372359af2f005708a58cdf3951c574b20390
+EBUILD xmms-oss-1.2.10-r2.ebuild 479 RMD160 53dd20b6016ce460c89f1841f384e4f96c95d02a SHA1 2d0950c291b160ceb10a5d58239a7685c1f75261 SHA256 f2c2cad07c897216810d2b010af128607908d7cf6b928b408af6892c4bade677
+EBUILD xmms-oss-1.2.11-r2.ebuild 481 RMD160 35a16ae600c33f1a6c52eb4839e78b91838c9789 SHA1 ac31a20afe33dc25d097db41d6d3393764ee1215 SHA256 c85ac2c727b1b7398119fd126acb0470b513dc093f9e4ff22061bbe8327e9d86
+EBUILD xmms-oss-1.2.11.ebuild 479 RMD160 10bd8d0b70d308f4f4a055375d2b2c4341b9a212 SHA1 4683e3012543e4084e1ec710cfb3bbbe9db977e9 SHA256 a528aed8f86477a82dc88fb620d42c68afdfbcfe7f6f4bb22a57fa97f108b20f
diff --git a/media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild b/media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild
new file mode 100644
index 0000000..7fd1068
--- /dev/null
+++ b/media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild,v 1.2 2006/07/05 06:10:56 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.2.6"
+RUSXMMS_VER="35"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10"
+
+PLUGIN_PATH="Output/OSS"
+
+myconf="--enable-oss"
diff --git a/media-plugins/xmms-oss/xmms-oss-1.2.11-r2.ebuild b/media-plugins/xmms-oss/xmms-oss-1.2.11-r2.ebuild
new file mode 100644
index 0000000..0449d7c
--- /dev/null
+++ b/media-plugins/xmms-oss/xmms-oss-1.2.11-r2.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild,v 1.2 2006/07/05 06:10:56 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0.1"
+RUSXMMS_VER="43"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10"
+
+PLUGIN_PATH="Output/OSS"
+
+myconf="--enable-oss"
diff --git a/media-plugins/xmms-oss/xmms-oss-1.2.11.ebuild b/media-plugins/xmms-oss/xmms-oss-1.2.11.ebuild
new file mode 100644
index 0000000..e91706f
--- /dev/null
+++ b/media-plugins/xmms-oss/xmms-oss-1.2.11.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-oss/xmms-oss-1.2.10-r2.ebuild,v 1.2 2006/07/05 06:10:56 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0"
+RUSXMMS_VER="41"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+DEPEND=">=media-sound/xmms-1.2.10"
+
+PLUGIN_PATH="Output/OSS"
+
+myconf="--enable-oss"
diff --git a/media-plugins/xmms-pulse/Manifest b/media-plugins/xmms-pulse/Manifest
new file mode 100644
index 0000000..966df85
--- /dev/null
+++ b/media-plugins/xmms-pulse/Manifest
@@ -0,0 +1,2 @@
+DIST xmms-pulse-0.9.4.tar.gz 329661 RMD160 f050f043c0215d2fedf0673c9c9fea8aff9a0a27 SHA1 0ffbde03452b5f90d22f72b7a6a88a696cda5ca6 SHA256 962caae8be68a02e99d01988848d937f811c1ce2db223d75c62b37da40733194
+EBUILD xmms-pulse-0.9.4.ebuild 739 RMD160 4e6624eddf63814bb18f0c338a0a012ca30a2e3a SHA1 a39928a3f2ed981789b014d92914049f70462227 SHA256 a82eebd2a31f5663621709419c504a9cc3af0bf2d125f072e9ac5dcdd7cfe32e
diff --git a/media-plugins/xmms-pulse/xmms-pulse-0.9.4.ebuild b/media-plugins/xmms-pulse/xmms-pulse-0.9.4.ebuild
new file mode 100644
index 0000000..8c971e8
--- /dev/null
+++ b/media-plugins/xmms-pulse/xmms-pulse-0.9.4.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-mad/xmms-mad-0.8-r2.ebuild,v 1.2 2006/07/05 06:09:38 vapier Exp $
+
+inherit eutils
+
+DESCRIPTION="A XMMS plugin for MAD"
+HOMEPAGE="http://xmms-mad.sourceforge.net/"
+SRC_URI="http://0pointer.de/lennart/projects/xmms-pulse/xmms-pulse-0.9.4.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 -mips ~ppc ~ppc64 ~sh ~sparc x86"
+IUSE=""
+
+RDEPEND="media-sound/xmms
+ media-sound/pulseaudio"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+}
+
+src_install() {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe src/.libs/libxmms-pulse.so || die
+ dodoc ChangeLog NEWS README
+}
diff --git a/media-plugins/xmms-rva/ChangeLog b/media-plugins/xmms-rva/ChangeLog
new file mode 100644
index 0000000..e88e06e
--- /dev/null
+++ b/media-plugins/xmms-rva/ChangeLog
@@ -0,0 +1,108 @@
+# ChangeLog for media-sound/normalize
+# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/normalize/ChangeLog,v 1.28 2007/10/15 14:39:12 corsair Exp $
+
+ 15 Oct 2007; Markus Rothe <corsair@gentoo.org> normalize-0.7.7.ebuild:
+ Stable on ppc64
+
+ 13 Aug 2007; Tobias Scherbaum <dertobi123@gentoo.org>
+ normalize-0.7.7.ebuild:
+ ppc. stable
+
+ 12 Jul 2007; Gustavo Zacarias <gustavoz@gentoo.org>
+ normalize-0.7.7.ebuild:
+ Stable on sparc
+
+ 13 May 2007; Steve Dibb <beandog@gentoo.org> normalize-0.7.7.ebuild:
+ amd64 stable
+
+ 24 Apr 2007; Timothy Redaelli <drizzt@gentoo.org> normalize-0.7.7.ebuild:
+ Add ~x86-fbsd keyword and a fix for tests under BSD userland.
+
+ 24 Apr 2007; Raúl Porcel <armin76@gentoo.org> normalize-0.7.7.ebuild:
+ x86 stable
+
+ 26 Nov 2006; Alexis Ballier <aballier@gentoo.org> -normalize-0.7.4.ebuild,
+ -normalize-0.7.6-r1.ebuild:
+ Removing old versions
+
+ 26 Nov 2006; Alexis Ballier <aballier@gentoo.org> normalize-0.7.4.ebuild,
+ normalize-0.7.6-r1.ebuild, normalize-0.7.6-r2.ebuild:
+ Updating homepage
+
+ 13 Nov 2006; Diego Pettenò <flameeyes@gentoo.org> normalize-0.7.4.ebuild,
+ normalize-0.7.6-r1.ebuild, normalize-0.7.6-r2.ebuild:
+ Remove xmms useflag.
+
+*normalize-0.7.7 (12 Nov 2006)
+
+ 12 Nov 2006; Alexis Ballier <aballier@gentoo.org> +normalize-0.7.7.ebuild:
+ Version bump, thanks to Stefan Nickl <snickl@snickl.freaks.de>, bug #129208
+
+ 11 Feb 2006; Markus Rothe <corsair@gentoo.org> normalize-0.7.6-r2.ebuild:
+ Stable on ppc64
+
+ 05 Feb 2005; Michael Hanselmann <hansmi@gentoo.org>
+ normalize-0.7.6-r2.ebuild:
+ Stable on ppc.
+
+ 25 Nov 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ normalize-0.7.6-r2.ebuild:
+ Added nls USE flag and fixed mad dependency. Closes bug #72187.
+
+ 01 Sep 2004; Tom Gall <tgall@gentoo.org> normalize-0.7.6-r2.ebuild:
+ stable on ppc64, bug #61787
+
+ 03 May 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ normalize-0.7.4.ebuild, normalize-0.7.6-r1.ebuild,
+ normalize-0.7.6-r2.ebuild:
+ Changing mad dep to madplay.
+
+ 28 Apr 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ normalize-0.7.6-r2.ebuild:
+ Stable x86.
+
+*normalize-0.7.6-r2 (28 Mar 2004)
+
+ 28 Mar 2004; Jeremy Huddleston <eradicator@gentoo.org>
+ normalize-0.7.6-r2.ebuild, normalize-0.7.6.ebuild:
+ Fixed USE flag support. Closes bug #45944.
+
+ 14 Mar 2004; Jason Wever <weeve@gentoo.org> normalize-0.7.6-r1.ebuild:
+ Stable on sparc.
+
+ 28 Jan 2004; Brad House <brad_mssw@gentoo.org> normalize-0.7.6-r1.ebuild:
+ mark stable on amd64
+
+ 05 Dec 2003; Jason Wever <weeve@gentoo.org> normalize-0.7.6-r1.ebuild:
+ Added ~sparc keyword.
+
+ 19 Jul 2003; Nick Hadaway <raker@gentoo.org> normalize-0.7.6-r1.ebuild:
+ Added mad use variable and marked stable for x86.
+
+*normalize-0.7.6-r1 (17 Jul 2003)
+
+ 17 Jul 2003; Nick Hadaway <raker@gentoo.org> normalize-0.7.6-r1.ebuild:
+ Now depends on media-libs/{libmad,libid3tag} instead of
+ media-sound/mad
+
+ 07 Jul 2003; Caleb Tennis <caleb@gentoo.org> normalize-0.7.6.ebuild:
+ Made it stable x86
+
+*normalize-0.7.6 (05 Nov 2002)
+
+ 05 Nov 2002; Daniel Ahlberg <aliz@gentoo.org> :
+ Version bump.
+
+*normalize-0.7.4 (5 May 2002)
+ 14 Aug 2002; Pieter Van den Abeele <pvdabeel@gentoo.org> :
+
+ Added ppc keyword
+
+ 5 May 2002; Bardur Arantsson <bardur-gta@odense.kollegienet.dk> ChangeLog :
+
+ Added initial ChangeLog which should be updated whenever the package is
+ updated in any way. This changelog is targetted to users. This means that the
+ comments should well explained and written in clean English. The details about
+ writing correct changelogs are explained in the skel.ChangeLog file which you
+ can find in the root directory of the portage repository.
diff --git a/media-plugins/xmms-rva/Manifest b/media-plugins/xmms-rva/Manifest
new file mode 100644
index 0000000..e81a1bd
--- /dev/null
+++ b/media-plugins/xmms-rva/Manifest
@@ -0,0 +1,4 @@
+DIST normalize-0.7.7.tar.bz2 388777 RMD160 cfb47808816da4196b7d87033921716bf13f212d SHA1 1d84a9e1cd50b24ebb99428452604dd1fb78be9d SHA256 ef9d8558515cc942518981d3db8fa2490fba6d6b5b74e0a3b75336fbc66c6bd8
+EBUILD xmms-rva-0.7.7.ebuild 1141 RMD160 8ebe220c56bd59beea1a26347341842315a96604 SHA1 32f5208032d72057d19a16d0a28dcc0216e27a7b SHA256 703a563f77d1623f956e6f811530c2a1c97bce91dd7a1ddee5449d269f53f737
+MISC ChangeLog 3729 RMD160 f98e9b27e85addacc7fa285b64897e95a8b055f9 SHA1 f767466dad85d0af01da1b01c8e7415df71b2d31 SHA256 2dacdef4d18372623967dc3f27d40328af4b516002bc97add6e73c1a8a99b341
+MISC metadata.xml 158 RMD160 6842e2189a50bd8a98e84802c38180ac1421c00e SHA1 703cea5a2109d41f7c87993c1f01d418a4c85174 SHA256 dfb5b47e6836db39fb187301dfcff1c2605e91d13d21db160806a563d8c75f9b
diff --git a/media-plugins/xmms-rva/metadata.xml b/media-plugins/xmms-rva/metadata.xml
new file mode 100644
index 0000000..e1774e3
--- /dev/null
+++ b/media-plugins/xmms-rva/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>sound</herd>
+</pkgmetadata>
diff --git a/media-plugins/xmms-rva/xmms-rva-0.7.7.ebuild b/media-plugins/xmms-rva/xmms-rva-0.7.7.ebuild
new file mode 100644
index 0000000..741b510
--- /dev/null
+++ b/media-plugins/xmms-rva/xmms-rva-0.7.7.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/normalize/normalize-0.7.7.ebuild,v 1.8 2007/10/15 14:39:12 corsair Exp $
+
+DESCRIPTION="Audio file volume normalizer plugin for XMMS"
+HOMEPAGE="http://normalize.nongnu.org/"
+SRC_URI="http://savannah.nongnu.org/download/normalize/normalize-${PV}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ppc ppc64 sparc x86 ~x86-fbsd"
+IUSE="mad audiofile nls userland_BSD"
+
+RDEPEND="mad? ( media-libs/libmad )
+ audiofile? ( >=media-libs/audiofile-0.2.3-r1 )
+ media-sound/xmms"
+DEPEND="${RDEPEND}
+ nls? ( dev-util/intltool )"
+
+S="${WORKDIR}/normalize-${PV}"
+
+src_unpack() {
+ unpack ${A}
+ use userland_BSD && sed -i -e 's/md5sum/md5/' "${S}"/test/*.sh
+}
+
+src_compile() {
+ econf \
+ $(use_enable nls) \
+ $(use_with mad) \
+ $(use_with audiofile) \
+ || die
+
+ emake || die "emake failed"
+}
+
+src_install() {
+ mkdir -p "${D}/usr/lib/xmms/Effect"
+ install -c -m 755 xmms-rva/.libs/librva.so "${D}/usr/lib/xmms/Effect"
+ install -c -m 755 xmms-rva/.libs/librva.la "${D}/usr/lib/xmms/Effect"
+}
diff --git a/media-plugins/xmms-sndfile/Manifest b/media-plugins/xmms-sndfile/Manifest
new file mode 100644
index 0000000..0e00802
--- /dev/null
+++ b/media-plugins/xmms-sndfile/Manifest
@@ -0,0 +1,2 @@
+DIST xmms_sndfile-1.2.tar.gz 226848 RMD160 e3a3233b8a72056360c0d605cd8d6f4dc7cbb7ad SHA1 3d0d38eefa8a421a53c49c51ca22f56fc944d59f SHA256 6e48faac8cc7714849a7115a717c56d2aa5c6eefc0cd6069f7adb7b4e8948a9f
+EBUILD xmms-sndfile-1.2.ebuild 777 RMD160 38315c9e2f207a49af8fcd742a6f91d0cf1e630a SHA1 815161356b31b7d59a5bf4f41f7f9ae09df23adc SHA256 34ee41437cd3a0fdfb9de6c1bd182013aba463ec61991fc061006736b4f55f97
diff --git a/media-plugins/xmms-sndfile/xmms-sndfile-1.2.ebuild b/media-plugins/xmms-sndfile/xmms-sndfile-1.2.ebuild
new file mode 100644
index 0000000..6c2a585
--- /dev/null
+++ b/media-plugins/xmms-sndfile/xmms-sndfile-1.2.ebuild
@@ -0,0 +1,25 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-sndfile/xmms-sndfile-1.2.ebuild,v 1.16 2006/07/05 06:08:34 vapier Exp $
+
+MY_PN=${PN/-/_}
+MY_P=${MY_PN}-${PV}
+S=${WORKDIR}/${MY_P}
+DESCRIPTION="a libsndfile plugin for XMMS"
+HOMEPAGE="http://www.mega-nerd.com/xmms_sndfile/"
+SRC_URI="http://www.mega-nerd.com/xmms_sndfile/${MY_P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE=""
+
+RDEPEND="media-libs/libsndfile
+ media-sound/xmms"
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+src_install() {
+ make DESTDIR="${D}" libdir="$(xmms-config --input-plugin-dir)" install || die
+ dodoc AUTHORS NEWS README ChangeLog TODO
+}
diff --git a/media-plugins/xmms-vorbis/Manifest b/media-plugins/xmms-vorbis/Manifest
new file mode 100644
index 0000000..03f2824
--- /dev/null
+++ b/media-plugins/xmms-vorbis/Manifest
@@ -0,0 +1,12 @@
+DIST RusXMMS2-csa35.tar.bz2 128165 RMD160 047782f64bfbcc8119d584f9f3dc9680d324519a SHA1 9c167e33b36e6e35917dd7eca9435f3408d6a9c9 SHA256 3bb63e9ce6fd2bca289ebfbde13c7dd3c0b0ca734e676b647acac1ef293312b4
+DIST RusXMMS2-csa41.tar.bz2 96642 RMD160 7ead4de64156b20682e90f8fc4c85112cf9b2cdc SHA1 034b2264a17977f614c91809bc4ee9ee7c07ecaf SHA256 e64df1956502e48c09ca60262efb7f1953a76d82a70c801e4797ca81e130e8d0
+DIST RusXMMS2-csa43.tar.bz2 104507 RMD160 4f609b588e5cdef4b4190c09f11c85a3f590913d SHA1 51a73494ebee0676a7a8f04dc1fc190d9c742b57 SHA256 b2c0ac09a481b2d77c6e4750a19497f550d93eb961839df3db5ce5da714e6caf
+DIST xmms-1.2.10-gentoo-m4-1.1.tar.bz2 26978 RMD160 63ce094969f33205420f9823a970eb3faabf2e3e SHA1 4ef6fb75370861201161adf8f65ec5db735516f4 SHA256 e253fb2a515d3c7881617172f14fccad6a42cea660b8eaaeef9657114288e46f
+DIST xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 545931 RMD160 6d376e2edadc1ac69a704575dd04775364c9ed1f SHA1 1a5a2ae2b744d5e1ae1ba72d3cb0bb078963aae0 SHA256 b9a8633fe22af156ca1af65ac35d369242ce8016619d87647ba8389b8d52ba96
+DIST xmms-1.2.10.tar.bz2 2418265 RMD160 0360cbb8c326b3325bd8ebb3343c69a9788d7084 SHA1 a3c3d3756d5263183c27b3c50a7f5404cba8bfaf SHA256 ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a
+DIST xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 16946 RMD160 49e3cd7eaac251c086cff3976e5be6e75bd33938 SHA1 29977700765aaf5ed860e3cccbb958f61f574f34 SHA256 fdfec6f54b65a8a17d4f6342cadc8c9b1f503f1d0672761c1bab963da6a86a91
+DIST xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 16739 RMD160 d45430baccccad600b3f0a37e4fd0b40e8d8bfca SHA1 9e0eb1b39e4c7385112637412ada7bc186e1b3b9 SHA256 9aebef51507f49b25f771ed380c652950a1f04e9105fb7029ef3a1889ea19abd
+DIST xmms-1.2.11.tar.bz2 2581032 RMD160 466a624572574c56595ef34f42c43d0b74857b0a SHA1 9d1eae4baab25fd35c9ddfb49321ca60222f672d SHA256 7ec15c56632b6c82e61ccddeaefd372359af2f005708a58cdf3951c574b20390
+EBUILD xmms-vorbis-1.2.10-r1.ebuild 637 RMD160 668b0440e901dc6837f0251c46fb11d420d9a76c SHA1 3b6d933fbe09f02e4b6591433fc3be0a317c8217 SHA256 c8a597be074dd85cae250874de2e82bb9d94ea431da1f94ee0c3e0db8168532a
+EBUILD xmms-vorbis-1.2.11-r2.ebuild 639 RMD160 be947b953a856f70ab412b7a0e5334e0a3622495 SHA1 d332e52079417bb0f0c619824ddd649e21d427f1 SHA256 b1f17434a2d44efe630bc0f91306560289fe4b436e6328e849a1af30c693175c
+EBUILD xmms-vorbis-1.2.11.ebuild 637 RMD160 eb8911ad2526aa7d9b67ef77782a63bf2ae21673 SHA1 a93e93f625fb2c8f89edb4d2b1a894320e8bea5b SHA256 4e4bc353824ed9624e5b3fbb1844b62f21fe972def11734ade0485ba43c8d67d
diff --git a/media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild b/media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild
new file mode 100644
index 0000000..477ad2b
--- /dev/null
+++ b/media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild,v 1.13 2006/07/05 06:11:25 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.2.6"
+RUSXMMS_VER="35"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="ipv6 ssl"
+
+DEPEND=">=media-sound/xmms-1.2.10-r12
+ media-libs/libvorbis
+ ssl? ( dev-libs/openssl )"
+
+PLUGIN_PATH="Input/vorbis"
+
+src_compile() {
+ myconf="${myconf} --enable-vorbis $(use_enable ipv6) $(use_enable ssl)"
+ rusxmms-plugin_src_compile
+}
diff --git a/media-plugins/xmms-vorbis/xmms-vorbis-1.2.11-r2.ebuild b/media-plugins/xmms-vorbis/xmms-vorbis-1.2.11-r2.ebuild
new file mode 100644
index 0000000..d4e4463
--- /dev/null
+++ b/media-plugins/xmms-vorbis/xmms-vorbis-1.2.11-r2.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild,v 1.13 2006/07/05 06:11:25 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0.1"
+RUSXMMS_VER="43"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="ipv6 ssl"
+
+DEPEND=">=media-sound/xmms-1.2.10-r12
+ media-libs/libvorbis
+ ssl? ( dev-libs/openssl )"
+
+PLUGIN_PATH="Input/vorbis"
+
+src_compile() {
+ myconf="${myconf} --enable-vorbis $(use_enable ipv6) $(use_enable ssl)"
+ rusxmms-plugin_src_compile
+}
diff --git a/media-plugins/xmms-vorbis/xmms-vorbis-1.2.11.ebuild b/media-plugins/xmms-vorbis/xmms-vorbis-1.2.11.ebuild
new file mode 100644
index 0000000..7fbc228
--- /dev/null
+++ b/media-plugins/xmms-vorbis/xmms-vorbis-1.2.11.ebuild
@@ -0,0 +1,23 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-vorbis/xmms-vorbis-1.2.10-r1.ebuild,v 1.13 2006/07/05 06:11:25 vapier Exp $
+
+M4_VER="1.1"
+PATCH_VER="2.3.0"
+RUSXMMS_VER="41"
+inherit rusxmms-plugin
+
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86"
+IUSE="ipv6 ssl"
+
+DEPEND=">=media-sound/xmms-1.2.10-r12
+ media-libs/libvorbis
+ ssl? ( dev-libs/openssl )"
+
+PLUGIN_PATH="Input/vorbis"
+
+src_compile() {
+ myconf="${myconf} --enable-vorbis $(use_enable ipv6) $(use_enable ssl)"
+ rusxmms-plugin_src_compile
+}
diff --git a/media-plugins/xmms-wavpack/Manifest b/media-plugins/xmms-wavpack/Manifest
new file mode 100644
index 0000000..b8343e2
--- /dev/null
+++ b/media-plugins/xmms-wavpack/Manifest
@@ -0,0 +1,2 @@
+DIST xmms-wavpack-1.0.3.tar.bz2 228330 RMD160 48e6059407e2849650b01d77783443a0fe760297 SHA1 3f45695b5921dc60f8c91f9c73585bd93504bd47 SHA256 5f8b7c27e1f45590a210ca43dbeea6ef0ce091b185a70cd23ad86875214d30ba
+EBUILD xmms-wavpack-1.0.3.ebuild 538 RMD160 ab37d693aa9bfa6819e18d0e25c734f9a541cef4 SHA1 0ad50e176cb6fda5159fd01fd52188fad22bcb72 SHA256 38239b1bc3f9f15858af7497a75bd1537884ecb38f2d023d7e7c66c3ccf4684c
diff --git a/media-plugins/xmms-wavpack/xmms-wavpack-1.0.3.ebuild b/media-plugins/xmms-wavpack/xmms-wavpack-1.0.3.ebuild
new file mode 100644
index 0000000..f76509a
--- /dev/null
+++ b/media-plugins/xmms-wavpack/xmms-wavpack-1.0.3.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: current version of ebuild http://atrey.karlin.mff.cuni.cz/~sanda/mac/$
+
+IUSE=""
+
+DESCRIPTION="Plugin to listen WavPack (wv) files using xmms"
+HOMEPAGE="http://www.wavpack.com"
+SRC_URI="http://www.wavpack.com/${P}.tar.bz2"
+
+SLOT="0"
+KEYWORDS="x86 amd64"
+LICENSE="GPL"
+
+DEPEND="media-sound/xmms >=media-sound/wavpack-4.40"
+
+src_install() {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe src/.libs/libwavpack.so || die
+}
diff --git a/media-plugins/xmms-wma/Manifest b/media-plugins/xmms-wma/Manifest
new file mode 100644
index 0000000..838690b
--- /dev/null
+++ b/media-plugins/xmms-wma/Manifest
@@ -0,0 +1,10 @@
+AUX xmms-wma-ds-ffmpeg.patch 5513 SHA256 55c237964f680bcfb5fe3b3f8a05410162328dfc77ba42af184745b813dffcf8 SHA512 f788b87ae76bc3262bba494b8def1e46e6fa094e221502ec32dd0e257629534f754c9b360778a7e1eb46e76225f18a363c0082ef65d28dd6af3846b1d1302db1 WHIRLPOOL 863e01d96fcbc733daa535ba5e6ba8309a6aeb55e9a363dfd3697d9592884ad8bd302bbb24bdfbd2e23f1c2cdffada06430e95d84df7be817d8891e9768f9141
+AUX xmms-wma-ds-ffmpeg0.10.patch 11445 SHA256 52434b819de3c3a521f48c8debe043e0d36aa5068c8fd4a02f94942e2d6eed32 SHA512 e2ced39d21e3efaea1de25c4c2430d686c9e6e0af21ad5dd4be04d4b38298bbae33155e69fbbc1304b6e01d4fa72cc1da577161798d13782f2ce564e5983a87c WHIRLPOOL 4b78156916d0680c5777a70bdf3a1164a6d5b3506272e2330a92f70e728c0e0311da1018d104b0426b4a887c2a024a6b759af8ed4b9b74bbbc1038828d4a3ae9
+AUX xmms-wma-ds-ffmpeg20081014.patch 5967 SHA256 b49b2147aebc510836260f1c8ef2f6aebe4312b1de380fd5bca82ff860ec7eb7 SHA512 c694c2ee179dbf9f52319ce480ed8dd02d9db87080e5f4dcde9cbac297ab672f91c3f1361a5c0d1b02c23c7c9ec150316e249bc78860f0a5859dbbe52e36a18e WHIRLPOOL 7416211e79eff19703223d4aa94875aa81bd5468e3e1b1155507d6abaa88ccf011d008bca5e92de8895071ecf23b15c7d51395ba05177875b0e3dcbb9a1dd887
+AUX xmms-wma-ds-fifo_init.patch 1041 SHA256 18deaa25c857559360a1c8b79015d56ea5ad5bfaf9670285ea108af78fd77d09 SHA512 1f877f72ee25ca3f29b0bbbb3f2edb7301341f0ecfce8ace9c921214a27118869e5971f65f9ecabaa0a6e7af1360a632b09378b7a076b7a9b53b110412121b8a WHIRLPOOL 683426d914eab0be18ce658b7ff3f53454eb1b6ece9ffe62d6d2bb8b7dad28f8c290d2db54574814af6a60fcf3a4121e0fe9499fe83e865de723192055730100
+AUX xmms-wma-ds-rcc.patch 2772 SHA256 e5cf2f4dd6b3353378c63b7176d13444bb42183f234b87d2a18d81e559b13e38 SHA512 bba9c02b7632d5977606ae069c2b039032342e81efe242c71420e55c3875b4af55295ff370b25cb87ca22efcbe0f260316b776647c8b21dbd897c39688d2ab19 WHIRLPOOL b7ada528a7da6182764d56a71e1978d8f4d5073681bbf3c7fb6562fd051e619c28c8288095e256095a6a2997b108f3e57b93058d8ae268c70131a2b571ad2f7f
+DIST xmms-wma-1.0.5.tar.bz2 146687 SHA256 61ab13363e52707b02b422589bfdbdf49c08ad398c2237c2000c8a4c9181b183 SHA512 9a1c649e0c36ecd6ff1bdb4462c0a8609785cc92355da642933993520814cd5868443e77aa06fbdb84161166864649ca77507a79428ac1c613f1620dff264f99 WHIRLPOOL d5c6eceee0d19bdd84b4d93526544afd992c9e425e2f9e395cb517015a75f98718144bedad7c32fd83f99f33ec15fe79932919a225f3df5c626c6708323b1cbd
+EBUILD xmms-wma-1.0.5-r1.ebuild 891 SHA256 8c7176da3a4b9d97e1c87c865d788fba4ac7cb4a3e92bdf51f4491171d64f059 SHA512 41a3965694e3ded80b9ce443d81e1983a6f3c2aaf316810922627c649543777d21fac8ca17995b52ba0bd920d56861187213a7c94eb1d73bb9f3b360c67013f1 WHIRLPOOL b49dd6632c4718ca7ec26f500b01a9072b3b837dd8b770301bc9c4cd96c90e87ba236c078c643320caae48a641ff95124c1b60dfbf0a5ddf27c8431c3e72b5c8
+EBUILD xmms-wma-1.0.5-r2.ebuild 901 SHA256 beb4b9efef5d26cea15b719641dfad5d73bfaea1cb7f1b803f36818a61d9f117 SHA512 62607136782ccc149b7f528f632e34cc5a56a9e4d3c39efd516347ed1c9a1b1bdd0524920bcd51659c215d342bdbb19760255d6d87fa2bef1cbb6604143d9fa6 WHIRLPOOL 14fc2db33bdf47fcb0504f6b654bee21d4fb7cd3270c489206a0d9542476d475177e59b677ddd0eb67c670af750e50dc8e5bad99f285907d522bf3707a5da061
+EBUILD xmms-wma-1.0.5-r3.ebuild 953 SHA256 c38e4539311b0701d45c4e92e6cb71831b351e6a7fe4be106ef949a96e2e8639 SHA512 1ad9ae94779248c2bf4841d25517b7a21b4d54e3c609a558bf0aaf4cad1c8ddbd6aeabab076181ab8e4cef17d4ec17c7dde67513c07e6ce92b21776a93917aff WHIRLPOOL 90e9e614454d5e9d3b9825847e4b36612d3e9d38a62ced263a7ed60bbc107190dc4cc48b1185b8640965fe17ac35804b91a4feb19488f485ef79cd7b8d4b42fa
+EBUILD xmms-wma-1.0.5-r4.ebuild 817 SHA256 26b6870653e0bc4c7e3891f7853c573d1f7b1b0e007c6276dde6829760b2fa0b SHA512 ba0ec81755d23e5f5230b5f3e6a557f3f5bba9d15d34dcf47192f17ecf0b922eab6262c0e45fc9e0f960a065b1b7a9a090dbf4f586ea69f2b83e3e44080166d7 WHIRLPOOL 33f3b4440384d058bb0a60c320b4beed782e0605118489da38390f0406df365e8e3a511973e1ffd82dca167f013b351ac5804bf4c104c1e90a641b45f440f201
diff --git a/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg.patch b/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg.patch
new file mode 100644
index 0000000..3ad7ced
--- /dev/null
+++ b/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg.patch
@@ -0,0 +1,193 @@
+diff -dPNur xmms-wma-1.0.5/Makefile xmms-wma-1.0.5-new/Makefile
+--- xmms-wma-1.0.5/Makefile 2004-03-03 15:47:58.000000000 +0100
++++ xmms-wma-1.0.5-new/Makefile 2007-04-21 22:51:51.000000000 +0200
+@@ -11,7 +11,7 @@
+ export DEPS := $(SOURCES:%.c=$(DEPDIR)/%.d)
+
+ all:
+- @cd ffmpeg-strip-wma; make; cd ..
++ #@cd ffmpeg-strip-wma; make; cd ..
+ @$(MAKE) --no-print-directory -f Makefile.inc
+ @strip $(PLUGIN_FILE)
+ @echo "The plug-in has been compiled. Run one of the following:"
+@@ -40,5 +40,5 @@
+ @echo "The plug-in has been uninstalled."
+
+ clean:
+- cd ffmpeg-strip-wma; make clean; cd ..
++ #cd ffmpeg-strip-wma; make clean; cd ..
+ rm -f $(OBJECTS) $(DEPS)
+diff -dPNur xmms-wma-1.0.5/Makefile.inc xmms-wma-1.0.5-new/Makefile.inc
+--- xmms-wma-1.0.5/Makefile.inc 2005-09-05 14:48:20.000000000 +0200
++++ xmms-wma-1.0.5-new/Makefile.inc 2007-04-21 22:51:51.000000000 +0200
+@@ -1,16 +1,18 @@
+ CC := gcc
+-CFLAGS := -O2 -ffast-math -fomit-frame-pointer -fPIC
+-#CFLAGS := -Wall -g -O3
+-CFLAGS += -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+-CFLAGS += -I ffmpeg-strip-wma
+-CFLAGS += `xmms-config --cflags`
+-LIBS := `xmms-config --libs` -L ffmpeg-strip-wma -lffwma
++MYCFLAGS := $(CFLAGS) -fPIC
++#MYCFLAGS := -Wall -g -O3
++MYCFLAGS += -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -fPIC
++#MYCFLAGS += -I ffmpeg-strip-wma
++MYCFLAGS += `xmms-config --cflags`
++MYCFLAGS += -I/usr/include/ffmpeg
++#LIBS := `xmms-config --libs` -L ffmpeg-strip-wma -lffwma
++LIBS := `xmms-config --libs` -lavcodec -lavformat
+
+ $(PLUGIN_FILE): $(OBJECTS)
+ $(CC) -o $@ $^ $(LIBS) -shared
+
+ $(OBJDIR)/%.o: %.c
+- $(CC) -c -o $@ $(CFLAGS) $<
++ $(CC) -c -o $@ $(MYCFLAGS) $<
+
+ $(DEPDIR)/%.d: %.c
+ $(CC) -MM $(CFLAGS) $< | sed "s/^$*\.o:/$(OBJDIR)\/$*\.o $(DEPDIR)\/$*\.d:/" > $@
+diff -dPNur xmms-wma-1.0.5/xmms-wma.c xmms-wma-1.0.5-new/xmms-wma.c
+--- xmms-wma-1.0.5/xmms-wma.c 2005-09-05 22:19:00.000000000 +0200
++++ xmms-wma-1.0.5-new/xmms-wma.c 2007-04-22 00:47:20.000000000 +0200
+@@ -42,8 +42,9 @@
+ #undef HAVE_AV_CONFIG_H
+ #endif
+
+-#include "avcodec.h"
+-#include "avformat.h"
++#include "ffmpeg/avcodec.h"
++#include "ffmpeg/avformat.h"
++#include "ffmpeg/fifo.h"
+ #include "iir.h"
+
+ #define ABOUT_TXT "Copyright (C) 2004,2005 Mokrushin I.V. aka McMCC (mcmcc@mail.ru).\n \
+@@ -190,8 +191,6 @@
+
+ static void wma_init(void)
+ {
+- avcodec_init();
+- avcodec_register_all();
+ av_register_all();
+ init_iir();
+ }
+@@ -200,9 +199,14 @@
+ {
+ gchar *ext;
+ ext = strrchr(filename, '.');
+- if(ext)
++ if(ext) {
+ if(!strcasecmp(ext, ".wma"))
+ return 1;
++ if(!strcasecmp(ext, ".m4a"))
++ return 1;
++ if(!strcasecmp(ext, ".aac"))
++ return 1;
++ }
+ return 0;
+ }
+
+@@ -337,20 +341,21 @@
+ return;
+ #endif
+
+- av_find_stream_info(in);
+- (*len_real) = get_song_time(in);
+- (*title_real) = get_song_title(in, filename);
++ if (!av_find_stream_info(in)) {
++ (*len_real) = get_song_time(in);
++ (*title_real) = get_song_title(in, filename);
++ }
+ av_close_input_file(in);
+ }
+
+ static void wma_playbuff(int out_size)
+ {
+- FifoBuffer f;
++ AVFifoBuffer f;
+ int sst_buff;
+
+- fifo_init(&f, out_size*2);
+- fifo_write(&f, wma_outbuf, out_size, &f.wptr);
+- while(!fifo_read(&f, wma_s_outbuf, wma_st_buff, &f.rptr) && wma_decode)
++ av_fifo_init(&f, out_size*2);
++ av_fifo_write(&f, wma_outbuf, out_size);
++ while(!av_fifo_read(&f, wma_s_outbuf, wma_st_buff) && wma_decode)
+ {
+ if(wma_eq_on)
+ sst_buff = iir((gpointer)&wma_s_outbuf, wma_st_buff);
+@@ -364,7 +369,7 @@
+ wma_ip.output->write_audio((short *)wma_s_outbuf, sst_buff);
+ memset(wma_s_outbuf, 0, sst_buff);
+ }
+- fifo_free(&f);
++ av_fifo_free(&f);
+ return;
+ }
+
+@@ -373,18 +378,29 @@
+ uint8_t *inbuf_ptr;
+ int out_size, size, len;
+ AVPacket pkt;
++ int64_t seek_target;
+
+ pthread_mutex_lock(&wma_mutex);
+ while(wma_decode){
+-
+ if(wma_seekpos != -1)
+ {
+- av_seek_frame(ic, wma_idx, wma_seekpos * 1000000LL);
++ if (wma_idx>=0) {
++ seek_target = av_rescale_q(wma_seekpos * 1000000LL, AV_TIME_BASE_Q, ic->streams[wma_idx]->time_base);
++ } else {
++ seek_target = wma_seekpos * 1000000LL;
++ }
++ av_seek_frame(ic, wma_idx, seek_target, AVSEEK_FLAG_BACKWARD);
+ wma_ip.output->flush(wma_seekpos * 1000);
+ wma_seekpos = -1;
+ }
+
+- if(av_read_frame(ic, &pkt) < 0) break;
++ if(av_read_frame(ic, &pkt) < 0) {
++ /*if (url_ferror(&ic->pb) == 0) {
++ usleep(100000);
++ continue;
++ }*/
++ break;
++ }
+
+ size = pkt.size;
+ inbuf_ptr = pkt.data;
+@@ -427,10 +443,13 @@
+ #endif
+
+ for(wma_idx = 0; wma_idx < ic->nb_streams; wma_idx++) {
+- c = &ic->streams[wma_idx]->codec;
++ c = ic->streams[wma_idx]->codec;
+ if(c->codec_type == CODEC_TYPE_AUDIO) break;
+ }
+
++ if(!c || c->codec_type != CODEC_TYPE_AUDIO)
++ return;
++
+ av_find_stream_info(ic);
+
+ codec = avcodec_find_decoder(c->codec_id);
+@@ -459,7 +478,8 @@
+ {
+ wma_decode = 0;
+ if(wma_pause) wma_do_pause(0);
+- pthread_join(wma_decode_thread, NULL);
++ if(wma_decode_thread)
++ pthread_join(wma_decode_thread, NULL);
+ wma_ip.output->close_audio();
+ }
+
+@@ -482,7 +502,7 @@
+ #endif
+
+ for(i = 0; i < in->nb_streams; i++) {
+- s = &in->streams[i]->codec;
++ s = in->streams[i]->codec;
+ if(s->codec_type == CODEC_TYPE_AUDIO) break;
+ }
+
diff --git a/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg0.10.patch b/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg0.10.patch
new file mode 100644
index 0000000..922eb9a
--- /dev/null
+++ b/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg0.10.patch
@@ -0,0 +1,411 @@
+diff -dPNur xmms-wma-1.0.5/Makefile xmms-wma-1.0.5-ds/Makefile
+--- xmms-wma-1.0.5/Makefile 2004-03-03 15:47:58.000000000 +0100
++++ xmms-wma-1.0.5-ds/Makefile 2012-11-17 08:49:25.000000000 +0100
+@@ -11,7 +11,7 @@
+ export DEPS := $(SOURCES:%.c=$(DEPDIR)/%.d)
+
+ all:
+- @cd ffmpeg-strip-wma; make; cd ..
++ #@cd ffmpeg-strip-wma; make; cd ..
+ @$(MAKE) --no-print-directory -f Makefile.inc
+ @strip $(PLUGIN_FILE)
+ @echo "The plug-in has been compiled. Run one of the following:"
+@@ -40,5 +40,5 @@
+ @echo "The plug-in has been uninstalled."
+
+ clean:
+- cd ffmpeg-strip-wma; make clean; cd ..
++ #cd ffmpeg-strip-wma; make clean; cd ..
+ rm -f $(OBJECTS) $(DEPS)
+diff -dPNur xmms-wma-1.0.5/Makefile.inc xmms-wma-1.0.5-ds/Makefile.inc
+--- xmms-wma-1.0.5/Makefile.inc 2005-09-05 14:48:20.000000000 +0200
++++ xmms-wma-1.0.5-ds/Makefile.inc 2012-11-17 08:49:25.000000000 +0100
+@@ -1,16 +1,18 @@
+ CC := gcc
+-CFLAGS := -O2 -ffast-math -fomit-frame-pointer -fPIC
+-#CFLAGS := -Wall -g -O3
+-CFLAGS += -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+-CFLAGS += -I ffmpeg-strip-wma
+-CFLAGS += `xmms-config --cflags`
+-LIBS := `xmms-config --libs` -L ffmpeg-strip-wma -lffwma
++MYCFLAGS := $(CFLAGS) -fPIC
++#MYCFLAGS := -Wall -g -O3
++MYCFLAGS += -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -fPIC
++#MYCFLAGS += -I ffmpeg-strip-wma
++MYCFLAGS += `xmms-config --cflags`
++MYCFLAGS += -I/usr/include/ffmpeg
++#LIBS := `xmms-config --libs` -L ffmpeg-strip-wma -lffwma
++LIBS := `xmms-config --libs` -lavcodec -lavformat
+
+ $(PLUGIN_FILE): $(OBJECTS)
+ $(CC) -o $@ $^ $(LIBS) -shared
+
+ $(OBJDIR)/%.o: %.c
+- $(CC) -c -o $@ $(CFLAGS) $<
++ $(CC) -c -o $@ $(MYCFLAGS) $<
+
+ $(DEPDIR)/%.d: %.c
+ $(CC) -MM $(CFLAGS) $< | sed "s/^$*\.o:/$(OBJDIR)\/$*\.o $(DEPDIR)\/$*\.d:/" > $@
+diff -dPNur xmms-wma-1.0.5/xmms-wma.c xmms-wma-1.0.5-ds/xmms-wma.c
+--- xmms-wma-1.0.5/xmms-wma.c 2005-09-05 22:19:00.000000000 +0200
++++ xmms-wma-1.0.5-ds/xmms-wma.c 2012-11-17 08:40:11.000000000 +0100
+@@ -36,14 +36,16 @@
+ #include <xmms/configfile.h>
+ #include <xmms/util.h>
+ #include <xmms/titlestring.h>
++#include <libxmms/rcc.h>
+ #endif
+
+ #ifdef HAVE_AV_CONFIG_H
+ #undef HAVE_AV_CONFIG_H
+ #endif
+
+-#include "avcodec.h"
+-#include "avformat.h"
++#include "libavcodec/avcodec.h"
++#include "libavformat/avformat.h"
++#include "libavutil/fifo.h"
+ #include "iir.h"
+
+ #define ABOUT_TXT "Copyright (C) 2004,2005 Mokrushin I.V. aka McMCC (mcmcc@mail.ru).\n \
+@@ -190,8 +192,6 @@
+
+ static void wma_init(void)
+ {
+- avcodec_init();
+- avcodec_register_all();
+ av_register_all();
+ init_iir();
+ }
+@@ -200,9 +200,14 @@
+ {
+ gchar *ext;
+ ext = strrchr(filename, '.');
+- if(ext)
++ if(ext) {
+ if(!strcasecmp(ext, ".wma"))
+ return 1;
++ if(!strcasecmp(ext, ".m4a"))
++ return 1;
++ if(!strcasecmp(ext, ".aac"))
++ return 1;
++ }
+ return 0;
+ }
+
+@@ -262,12 +267,24 @@
+ return splitname;
+ }
+
+-static char* w_getstr(char* str)
++static char* w_getstr(AVFormatContext *in, char* str)
+ {
+- if(str && strlen(str) > 0) return str;
++ AVDictionaryEntry *entry = av_dict_get(in->metadata, str, NULL, 0);
++ if (!entry) return NULL;
++
++
++ if(entry && strlen(entry->value) > 0) {
++ return entry->value;
++ }
+ return NULL;
+ }
+
++static int w_getnum(AVFormatContext *in, char* str) {
++ char *res = w_getstr(in, str);
++ if (res) return atoi(res);
++ return 0;
++}
++
+ static gchar *get_song_title(AVFormatContext *in, gchar * filename)
+ {
+ gchar *ret = NULL;
+@@ -279,17 +296,14 @@
+ XMMS_NEW_TITLEINPUT(input);
+ #endif
+
+- if((in->title[0] != '\0') || (in->author[0] != '\0') || (in->album[0] != '\0') ||
+- (in->comment[0] != '\0') || (in->genre[0] != '\0') || (in->year != 0) || (in->track != 0))
+- {
+- input->performer = w_getstr(in->author);
+- input->album_name = w_getstr(in->album);
+- input->track_name = w_getstr(in->title);
+- input->year = in->year;
+- input->track_number = in->track;
+- input->genre = w_getstr(in->genre);
+- input->comment = w_getstr(in->comment);
+- }
++ input->performer = w_getstr(in, "artist");
++ input->album_name = w_getstr(in, "album");
++ input->track_name = w_getstr(in, "title");
++ input->year = 0;//in->year;
++ input->track_number = w_getnum(in, "track");
++ input->genre = w_getstr(in, "genre");
++ input->comment = w_getstr(in, "comment");
++
+ #ifdef BMP
+ input->file_name = g_path_get_basename(filename);
+ input->file_path = g_path_get_dirname(filename);
+@@ -298,7 +312,7 @@
+ input->file_path = filename;
+ #endif
+ input->file_ext = extname(filename);
+- ret = xmms_get_titlestring(xmms_get_gentitle_format(), input);
++ ret = xmms_charset_get_titlestring(xmms_get_gentitle_format(), input, XMMS_RCC_UTF8);
+ if(input) g_free(input);
+
+ if(!ret)
+@@ -337,21 +351,23 @@
+ return;
+ #endif
+
+- av_find_stream_info(in);
+- (*len_real) = get_song_time(in);
+- (*title_real) = get_song_title(in, filename);
++ if (!av_find_stream_info(in)) {
++ (*len_real) = get_song_time(in);
++ (*title_real) = get_song_title(in, filename);
++ }
+ av_close_input_file(in);
+ }
+-
+ static void wma_playbuff(int out_size)
+ {
+- FifoBuffer f;
++ AVFifoBuffer *f;
+ int sst_buff;
+-
+- fifo_init(&f, out_size*2);
+- fifo_write(&f, wma_outbuf, out_size, &f.wptr);
+- while(!fifo_read(&f, wma_s_outbuf, wma_st_buff, &f.rptr) && wma_decode)
+- {
++
++ f = av_fifo_alloc(out_size*2);
++ av_fifo_generic_write(f, wma_outbuf, out_size, NULL);
++
++ while ((av_fifo_size(f) > 0) && wma_decode) {
++ if (av_fifo_generic_read(f, wma_s_outbuf, wma_st_buff, NULL)) break;
++
+ if(wma_eq_on)
+ sst_buff = iir((gpointer)&wma_s_outbuf, wma_st_buff);
+ else
+@@ -364,7 +380,7 @@
+ wma_ip.output->write_audio((short *)wma_s_outbuf, sst_buff);
+ memset(wma_s_outbuf, 0, sst_buff);
+ }
+- fifo_free(&f);
++ av_fifo_free(f);
+ return;
+ }
+
+@@ -373,18 +389,29 @@
+ uint8_t *inbuf_ptr;
+ int out_size, size, len;
+ AVPacket pkt;
++ int64_t seek_target;
+
+ pthread_mutex_lock(&wma_mutex);
+ while(wma_decode){
+-
+ if(wma_seekpos != -1)
+ {
+- av_seek_frame(ic, wma_idx, wma_seekpos * 1000000LL);
++ if (wma_idx>=0) {
++ seek_target = av_rescale_q(wma_seekpos * 1000000LL, AV_TIME_BASE_Q, ic->streams[wma_idx]->time_base);
++ } else {
++ seek_target = wma_seekpos * 1000000LL;
++ }
++ av_seek_frame(ic, wma_idx, seek_target, AVSEEK_FLAG_BACKWARD);
+ wma_ip.output->flush(wma_seekpos * 1000);
+ wma_seekpos = -1;
+ }
+
+- if(av_read_frame(ic, &pkt) < 0) break;
++ if(av_read_frame(ic, &pkt) < 0) {
++ /*if (url_ferror(&ic->pb) == 0) {
++ usleep(100000);
++ continue;
++ }*/
++ break;
++ }
+
+ size = pkt.size;
+ inbuf_ptr = pkt.data;
+@@ -392,8 +419,9 @@
+ if(size == 0) break;
+
+ while(size > 0){
+- len = avcodec_decode_audio(c, (short *)wma_outbuf, &out_size,
+- inbuf_ptr, size);
++ out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
++
++ len = avcodec_decode_audio3(c, (short *)wma_outbuf, &out_size, &pkt);
+ if(len < 0) break;
+
+ if(out_size <= 0) continue;
+@@ -427,10 +455,13 @@
+ #endif
+
+ for(wma_idx = 0; wma_idx < ic->nb_streams; wma_idx++) {
+- c = &ic->streams[wma_idx]->codec;
+- if(c->codec_type == CODEC_TYPE_AUDIO) break;
++ c = ic->streams[wma_idx]->codec;
++ if(c->codec_type == AVMEDIA_TYPE_AUDIO) break;
+ }
+
++ if(!c || c->codec_type != AVMEDIA_TYPE_AUDIO)
++ return;
++
+ av_find_stream_info(ic);
+
+ codec = avcodec_find_decoder(c->codec_id);
+@@ -459,7 +490,8 @@
+ {
+ wma_decode = 0;
+ if(wma_pause) wma_do_pause(0);
+- pthread_join(wma_decode_thread, NULL);
++ if(wma_decode_thread)
++ pthread_join(wma_decode_thread, NULL);
+ wma_ip.output->close_audio();
+ }
+
+@@ -468,6 +500,8 @@
+ char *title;
+ char *tmp;
+ char *message;
++ char *recoded;
++ char *msg;
+ AVFormatContext *in = NULL;
+ AVCodecContext *s = NULL;
+ AVCodec *codec;
+@@ -482,8 +516,8 @@
+ #endif
+
+ for(i = 0; i < in->nb_streams; i++) {
+- s = &in->streams[i]->codec;
+- if(s->codec_type == CODEC_TYPE_AUDIO) break;
++ s = in->streams[i]->codec;
++ if(s->codec_type == AVMEDIA_TYPE_AUDIO) break;
+ }
+
+ av_find_stream_info(in);
+@@ -498,6 +532,11 @@
+
+ strcpy(message, "\n\n\n");
+ strcat(message, "File Name: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_FS, XMMS_RCC_OUT, slashkill(filename));
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, slashkill(filename));
+ strcat(message, "\n\n");
+ strcat(message, "Audio Info:\n");
+@@ -535,56 +574,85 @@
+ }
+ strcat(message, "\n");
+ strcat(message, "Text Info:\n");
+- if (in->title[0] != '\0')
++ msg = w_getstr(in, "title");
++ if (msg)
+ {
+ strcat(message, "Title: ");
+- strcat(message, in->title);
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, msg);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
++ strcat(message, msg);
+ strcat(message, "\n");
+- }
+- if (in->author[0] != '\0')
++ }
++ msg = w_getstr(in, "artist");
++ if (msg)
+ {
+ strcat(message, "Author: ");
+- strcat(message, in->author);
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, msg);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+- if (in->album[0] != '\0')
++ msg = w_getstr(in, "album");
++ if (msg)
+ {
+ strcat(message, "Album: ");
+- strcat(message, in->album);
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, msg);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+- if (in->year != 0)
++ msg = w_getstr(in, "date");
++ if (msg)
+ {
+- strcat(message, "Year: ");
+- sprintf(tmp, "%d", in->year);
+- strcat(message, tmp);
+- memset(tmp, 0, 256);
++ strcat(message, "Date: ");
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+- if (in->track != 0)
++ msg = w_getstr(in, "track");
++ if (msg)
+ {
+ strcat(message, "Track: ");
+- sprintf(tmp, "%d", in->track);
+- strcat(message, tmp);
+- memset(tmp, 0, 256);
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+- if (in->genre[0] != '\0')
++ msg = w_getstr(in, "genre");
++ if (msg)
+ {
+ strcat(message, "Genre: ");
+- strcat(message, in->genre);
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+- if (in->comment[0] != '\0')
++ msg = w_getstr(in, "comment");
++ if (msg)
+ {
+ strcat(message, "Comments: ");
+- strcat(message, in->comment);
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, msg);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+- if (in->copyright[0] != '\0')
++ msg = w_getstr(in, "copyright");
++ if (msg)
+ {
+ strcat(message, "Copyright: ");
+- strcat(message, in->copyright);
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, msg);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
++ strcat(message, msg);
+ strcat(message, "\n");
+ }
+ strcat(message, "\n\n");
diff --git a/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg20081014.patch b/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg20081014.patch
new file mode 100644
index 0000000..23c0b1a
--- /dev/null
+++ b/media-plugins/xmms-wma/files/xmms-wma-ds-ffmpeg20081014.patch
@@ -0,0 +1,209 @@
+diff -dPNur xmms-wma-1.0.5/Makefile xmms-wma-1.0.5-ds/Makefile
+--- xmms-wma-1.0.5/Makefile 2004-03-03 15:47:58.000000000 +0100
++++ xmms-wma-1.0.5-ds/Makefile 2008-11-27 01:33:03.000000000 +0100
+@@ -11,7 +11,7 @@
+ export DEPS := $(SOURCES:%.c=$(DEPDIR)/%.d)
+
+ all:
+- @cd ffmpeg-strip-wma; make; cd ..
++ #@cd ffmpeg-strip-wma; make; cd ..
+ @$(MAKE) --no-print-directory -f Makefile.inc
+ @strip $(PLUGIN_FILE)
+ @echo "The plug-in has been compiled. Run one of the following:"
+@@ -40,5 +40,5 @@
+ @echo "The plug-in has been uninstalled."
+
+ clean:
+- cd ffmpeg-strip-wma; make clean; cd ..
++ #cd ffmpeg-strip-wma; make clean; cd ..
+ rm -f $(OBJECTS) $(DEPS)
+diff -dPNur xmms-wma-1.0.5/Makefile.inc xmms-wma-1.0.5-ds/Makefile.inc
+--- xmms-wma-1.0.5/Makefile.inc 2005-09-05 14:48:20.000000000 +0200
++++ xmms-wma-1.0.5-ds/Makefile.inc 2008-11-27 01:35:01.000000000 +0100
+@@ -1,16 +1,18 @@
+ CC := gcc
+-CFLAGS := -O2 -ffast-math -fomit-frame-pointer -fPIC
+-#CFLAGS := -Wall -g -O3
+-CFLAGS += -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE
+-CFLAGS += -I ffmpeg-strip-wma
+-CFLAGS += `xmms-config --cflags`
+-LIBS := `xmms-config --libs` -L ffmpeg-strip-wma -lffwma
++MYCFLAGS := $(CFLAGS) -fPIC
++#MYCFLAGS := -Wall -g -O3
++MYCFLAGS += -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -fPIC
++#MYCFLAGS += -I ffmpeg-strip-wma
++MYCFLAGS += `xmms-config --cflags`
++MYCFLAGS += -I/usr/include/ffmpeg
++#LIBS := `xmms-config --libs` -L ffmpeg-strip-wma -lffwma
++LIBS := `xmms-config --libs` -lavcodec -lavformat
+
+ $(PLUGIN_FILE): $(OBJECTS)
+ $(CC) -o $@ $^ $(LIBS) -shared
+
+ $(OBJDIR)/%.o: %.c
+- $(CC) -c -o $@ $(CFLAGS) $<
++ $(CC) -c -o $@ $(MYCFLAGS) $<
+
+ $(DEPDIR)/%.d: %.c
+ $(CC) -MM $(CFLAGS) $< | sed "s/^$*\.o:/$(OBJDIR)\/$*\.o $(DEPDIR)\/$*\.d:/" > $@
+diff -dPNur xmms-wma-1.0.5/xmms-wma.c xmms-wma-1.0.5-ds/xmms-wma.c
+--- xmms-wma-1.0.5/xmms-wma.c 2008-11-27 02:58:02.000000000 +0100
++++ xmms-wma-1.0.5-ds/xmms-wma.c 2008-11-27 02:54:38.000000000 +0100
+@@ -43,8 +43,9 @@
+ #undef HAVE_AV_CONFIG_H
+ #endif
+
+-#include "avcodec.h"
+-#include "avformat.h"
++#include "libavcodec/avcodec.h"
++#include "libavformat/avformat.h"
++#include "libavutil/fifo.h"
+ #include "iir.h"
+
+ #define ABOUT_TXT "Copyright (C) 2004,2005 Mokrushin I.V. aka McMCC (mcmcc@mail.ru).\n \
+@@ -191,8 +192,6 @@
+
+ static void wma_init(void)
+ {
+- avcodec_init();
+- avcodec_register_all();
+ av_register_all();
+ init_iir();
+ }
+@@ -201,9 +200,14 @@
+ {
+ gchar *ext;
+ ext = strrchr(filename, '.');
+- if(ext)
++ if(ext) {
+ if(!strcasecmp(ext, ".wma"))
+ return 1;
++ if(!strcasecmp(ext, ".m4a"))
++ return 1;
++ if(!strcasecmp(ext, ".aac"))
++ return 1;
++ }
+ return 0;
+ }
+
+@@ -338,21 +342,23 @@
+ return;
+ #endif
+
+- av_find_stream_info(in);
+- (*len_real) = get_song_time(in);
+- (*title_real) = get_song_title(in, filename);
++ if (!av_find_stream_info(in)) {
++ (*len_real) = get_song_time(in);
++ (*title_real) = get_song_title(in, filename);
++ }
+ av_close_input_file(in);
+ }
+-
+ static void wma_playbuff(int out_size)
+ {
+- FifoBuffer f;
++ AVFifoBuffer f;
+ int sst_buff;
+-
+- fifo_init(&f, out_size*2);
+- fifo_write(&f, wma_outbuf, out_size, &f.wptr);
+- while(!fifo_read(&f, wma_s_outbuf, wma_st_buff, &f.rptr) && wma_decode)
+- {
++
++ av_fifo_init(&f, out_size*2);
++ av_fifo_generic_write(&f, wma_outbuf, out_size, NULL);
++
++ while ((av_fifo_size(&f) > 0) && wma_decode) {
++ if (av_fifo_read(&f, wma_s_outbuf, wma_st_buff)) break;
++
+ if(wma_eq_on)
+ sst_buff = iir((gpointer)&wma_s_outbuf, wma_st_buff);
+ else
+@@ -365,7 +371,7 @@
+ wma_ip.output->write_audio((short *)wma_s_outbuf, sst_buff);
+ memset(wma_s_outbuf, 0, sst_buff);
+ }
+- fifo_free(&f);
++ av_fifo_free(&f);
+ return;
+ }
+
+@@ -374,18 +380,29 @@
+ uint8_t *inbuf_ptr;
+ int out_size, size, len;
+ AVPacket pkt;
++ int64_t seek_target;
+
+ pthread_mutex_lock(&wma_mutex);
+ while(wma_decode){
+-
+ if(wma_seekpos != -1)
+ {
+- av_seek_frame(ic, wma_idx, wma_seekpos * 1000000LL);
++ if (wma_idx>=0) {
++ seek_target = av_rescale_q(wma_seekpos * 1000000LL, AV_TIME_BASE_Q, ic->streams[wma_idx]->time_base);
++ } else {
++ seek_target = wma_seekpos * 1000000LL;
++ }
++ av_seek_frame(ic, wma_idx, seek_target, AVSEEK_FLAG_BACKWARD);
+ wma_ip.output->flush(wma_seekpos * 1000);
+ wma_seekpos = -1;
+ }
+
+- if(av_read_frame(ic, &pkt) < 0) break;
++ if(av_read_frame(ic, &pkt) < 0) {
++ /*if (url_ferror(&ic->pb) == 0) {
++ usleep(100000);
++ continue;
++ }*/
++ break;
++ }
+
+ size = pkt.size;
+ inbuf_ptr = pkt.data;
+@@ -393,7 +410,9 @@
+ if(size == 0) break;
+
+ while(size > 0){
+- len = avcodec_decode_audio(c, (short *)wma_outbuf, &out_size,
++ out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
++
++ len = avcodec_decode_audio2(c, (short *)wma_outbuf, &out_size,
+ inbuf_ptr, size);
+ if(len < 0) break;
+
+@@ -428,10 +447,13 @@
+ #endif
+
+ for(wma_idx = 0; wma_idx < ic->nb_streams; wma_idx++) {
+- c = &ic->streams[wma_idx]->codec;
++ c = ic->streams[wma_idx]->codec;
+ if(c->codec_type == CODEC_TYPE_AUDIO) break;
+ }
+
++ if(!c || c->codec_type != CODEC_TYPE_AUDIO)
++ return;
++
+ av_find_stream_info(ic);
+
+ codec = avcodec_find_decoder(c->codec_id);
+@@ -460,7 +482,8 @@
+ {
+ wma_decode = 0;
+ if(wma_pause) wma_do_pause(0);
+- pthread_join(wma_decode_thread, NULL);
++ if(wma_decode_thread)
++ pthread_join(wma_decode_thread, NULL);
+ wma_ip.output->close_audio();
+ }
+
+@@ -484,7 +507,7 @@
+ #endif
+
+ for(i = 0; i < in->nb_streams; i++) {
+- s = &in->streams[i]->codec;
++ s = in->streams[i]->codec;
+ if(s->codec_type == CODEC_TYPE_AUDIO) break;
+ }
+
diff --git a/media-plugins/xmms-wma/files/xmms-wma-ds-fifo_init.patch b/media-plugins/xmms-wma/files/xmms-wma-ds-fifo_init.patch
new file mode 100644
index 0000000..b2e1d82
--- /dev/null
+++ b/media-plugins/xmms-wma/files/xmms-wma-ds-fifo_init.patch
@@ -0,0 +1,32 @@
+diff -dPNur xmms-wma-1.0.5/xmms-wma.c xmms-wma-1.0.5-ds/xmms-wma.c
+--- xmms-wma-1.0.5/xmms-wma.c 2010-02-07 15:46:56.000000000 +0100
++++ xmms-wma-1.0.5-ds/xmms-wma.c 2010-02-07 15:58:23.000000000 +0100
+@@ -350,14 +350,14 @@
+ }
+ static void wma_playbuff(int out_size)
+ {
+- AVFifoBuffer f;
++ AVFifoBuffer *f;
+ int sst_buff;
+
+- av_fifo_init(&f, out_size*2);
+- av_fifo_generic_write(&f, wma_outbuf, out_size, NULL);
++ f = av_fifo_alloc(out_size*2);
++ av_fifo_generic_write(f, wma_outbuf, out_size, NULL);
+
+- while ((av_fifo_size(&f) > 0) && wma_decode) {
+- if (av_fifo_read(&f, wma_s_outbuf, wma_st_buff)) break;
++ while ((av_fifo_size(f) > 0) && wma_decode) {
++ if (av_fifo_generic_read(f, wma_s_outbuf, wma_st_buff, NULL)) break;
+
+ if(wma_eq_on)
+ sst_buff = iir((gpointer)&wma_s_outbuf, wma_st_buff);
+@@ -371,7 +371,7 @@
+ wma_ip.output->write_audio((short *)wma_s_outbuf, sst_buff);
+ memset(wma_s_outbuf, 0, sst_buff);
+ }
+- av_fifo_free(&f);
++ av_fifo_free(f);
+ return;
+ }
+
diff --git a/media-plugins/xmms-wma/files/xmms-wma-ds-rcc.patch b/media-plugins/xmms-wma/files/xmms-wma-ds-rcc.patch
new file mode 100644
index 0000000..fcdc82a
--- /dev/null
+++ b/media-plugins/xmms-wma/files/xmms-wma-ds-rcc.patch
@@ -0,0 +1,98 @@
+diff -dPNur xmms-wma-1.0.5-new/xmms-wma.c xmms-wma-1.0.5-new-rcc/xmms-wma.c
+--- xmms-wma-1.0.5-new/xmms-wma.c 2007-04-22 00:47:20.000000000 +0200
++++ xmms-wma-1.0.5-new-rcc/xmms-wma.c 2007-04-22 01:13:08.000000000 +0200
+@@ -36,6 +36,7 @@
+ #include <xmms/configfile.h>
+ #include <xmms/util.h>
+ #include <xmms/titlestring.h>
++#include <libxmms/rcc.h>
+ #endif
+
+ #ifdef HAVE_AV_CONFIG_H
+@@ -302,7 +303,7 @@
+ input->file_path = filename;
+ #endif
+ input->file_ext = extname(filename);
+- ret = xmms_get_titlestring(xmms_get_gentitle_format(), input);
++ ret = xmms_charset_get_titlestring(xmms_get_gentitle_format(), input, XMMS_RCC_UTF8);
+ if(input) g_free(input);
+
+ if(!ret)
+@@ -488,6 +489,7 @@
+ char *title;
+ char *tmp;
+ char *message;
++ char *recoded;
+ AVFormatContext *in = NULL;
+ AVCodecContext *s = NULL;
+ AVCodec *codec;
+@@ -518,6 +520,11 @@
+
+ strcpy(message, "\n\n\n");
+ strcat(message, "File Name: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_FS, XMMS_RCC_OUT, slashkill(filename));
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, slashkill(filename));
+ strcat(message, "\n\n");
+ strcat(message, "Audio Info:\n");
+@@ -558,18 +565,33 @@
+ if (in->title[0] != '\0')
+ {
+ strcat(message, "Title: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, in->title);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, in->title);
+ strcat(message, "\n");
+ }
+ if (in->author[0] != '\0')
+ {
+ strcat(message, "Author: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, in->author);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, in->author);
+ strcat(message, "\n");
+ }
+ if (in->album[0] != '\0')
+ {
+ strcat(message, "Album: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, in->album);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, in->album);
+ strcat(message, "\n");
+ }
+@@ -598,12 +620,23 @@
+ if (in->comment[0] != '\0')
+ {
+ strcat(message, "Comments: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, in->comment);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, in->comment);
+ strcat(message, "\n");
+ }
+ if (in->copyright[0] != '\0')
+ {
+ strcat(message, "Copyright: ");
++ strcat(message, "Comments: ");
++ recoded = xmms_rcc_recode(XMMS_RCC_UTF8, XMMS_RCC_OUT, in->copyright);
++ if (recoded) {
++ strcat(message, recoded);
++ free(recoded);
++ } else
+ strcat(message, in->copyright);
+ strcat(message, "\n");
+ }
diff --git a/media-plugins/xmms-wma/xmms-wma-1.0.5-r1.ebuild b/media-plugins/xmms-wma/xmms-wma-1.0.5-r1.ebuild
new file mode 100644
index 0000000..1eb20f1
--- /dev/null
+++ b/media-plugins/xmms-wma/xmms-wma-1.0.5-r1.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-wma/xmms-wma-1.0.5.ebuild,v 1.1 2005/10/24 00:46:58 metalgod Exp $
+
+IUSE=""
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="XMMS plugin to play wma"
+HOMEPAGE="http://mcmcc.bat.ru/xmms-wma/"
+SRC_URI="http://mcmcc.bat.ru/xmms-wma/${P}.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+
+#~sparc: 1.0.4: Plays a little staticy, x86/adm64 is clear...
+
+KEYWORDS="amd64 ~ppc ~sparc x86"
+
+DEPEND="media-sound/xmms
+ >=media-video/ffmpeg-0.4.9_p20070129"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+# Patches for system ffmpeg, broken
+ epatch ${FILESDIR}/${PN}-ds-ffmpeg.patch || die
+ epatch ${FILESDIR}/${PN}-ds-rcc.patch || die
+}
+
+src_compile () {
+ emake CC="$(tc-getCC)" || die
+}
+
+src_install () {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe libwma.so
+}
diff --git a/media-plugins/xmms-wma/xmms-wma-1.0.5-r2.ebuild b/media-plugins/xmms-wma/xmms-wma-1.0.5-r2.ebuild
new file mode 100644
index 0000000..a03e1b7
--- /dev/null
+++ b/media-plugins/xmms-wma/xmms-wma-1.0.5-r2.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-wma/xmms-wma-1.0.5.ebuild,v 1.1 2005/10/24 00:46:58 metalgod Exp $
+
+IUSE=""
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="XMMS plugin to play wma"
+HOMEPAGE="http://mcmcc.bat.ru/xmms-wma/"
+SRC_URI="http://mcmcc.bat.ru/xmms-wma/${P}.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+
+#~sparc: 1.0.4: Plays a little staticy, x86/adm64 is clear...
+
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+
+DEPEND="media-sound/xmms
+ >=media-video/ffmpeg-0.4.9_p20081014"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+# Patches for system ffmpeg, broken
+ epatch ${FILESDIR}/${PN}-ds-ffmpeg20081014.patch || die
+ epatch ${FILESDIR}/${PN}-ds-rcc.patch || die
+}
+
+src_compile () {
+ emake CC="$(tc-getCC)" || die
+}
+
+src_install () {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe libwma.so
+}
diff --git a/media-plugins/xmms-wma/xmms-wma-1.0.5-r3.ebuild b/media-plugins/xmms-wma/xmms-wma-1.0.5-r3.ebuild
new file mode 100644
index 0000000..471a0e9
--- /dev/null
+++ b/media-plugins/xmms-wma/xmms-wma-1.0.5-r3.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-wma/xmms-wma-1.0.5.ebuild,v 1.1 2005/10/24 00:46:58 metalgod Exp $
+
+IUSE=""
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="XMMS plugin to play wma"
+HOMEPAGE="http://mcmcc.bat.ru/xmms-wma/"
+SRC_URI="http://mcmcc.bat.ru/xmms-wma/${P}.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+
+#~sparc: 1.0.4: Plays a little staticy, x86/adm64 is clear...
+
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+
+DEPEND="media-sound/xmms
+ >=media-video/ffmpeg-0.4.9_p20081014"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+# Patches for system ffmpeg, broken
+ epatch ${FILESDIR}/${PN}-ds-ffmpeg20081014.patch || die
+ epatch ${FILESDIR}/${PN}-ds-rcc.patch || die
+ epatch ${FILESDIR}/${PN}-ds-fifo_init.patch || die
+}
+
+src_compile () {
+ emake CC="$(tc-getCC)" || die
+}
+
+src_install () {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe libwma.so
+}
diff --git a/media-plugins/xmms-wma/xmms-wma-1.0.5-r4.ebuild b/media-plugins/xmms-wma/xmms-wma-1.0.5-r4.ebuild
new file mode 100644
index 0000000..08c63ca
--- /dev/null
+++ b/media-plugins/xmms-wma/xmms-wma-1.0.5-r4.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-plugins/xmms-wma/xmms-wma-1.0.5.ebuild,v 1.1 2005/10/24 00:46:58 metalgod Exp $
+
+IUSE=""
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="XMMS plugin to play wma"
+HOMEPAGE="http://mcmcc.bat.ru/xmms-wma/"
+SRC_URI="http://mcmcc.bat.ru/xmms-wma/${P}.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+
+#~sparc: 1.0.4: Plays a little staticy, x86/adm64 is clear...
+
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+
+DEPEND="media-sound/xmms
+ >=media-video/ffmpeg-0.4.9_p20081014"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch "${FILESDIR}"/${PN}-ds-ffmpeg0.10.patch || die
+}
+
+src_compile () {
+ emake CC="$(tc-getCC)" || die
+}
+
+src_install () {
+ exeinto `xmms-config --input-plugin-dir`
+ doexe libwma.so
+}
diff --git a/media-sound/grip/Manifest b/media-sound/grip/Manifest
new file mode 100644
index 0000000..bc31edc
--- /dev/null
+++ b/media-sound/grip/Manifest
@@ -0,0 +1,3 @@
+AUX grip-ds-editnext.patch 706 RMD160 5c6d83fa4146de3d7ba8b302a5bb9a2b59a4c8c0 SHA1 5a3f29dbc0cd0780e22c9d3fd58a6aa22403e125 SHA256 9f1a77b36eb7528e8b3cb5a7bb67df4654528e3b868a2e383179da85a28f8478
+DIST grip-3.3.1.tar.gz 812562 RMD160 ec523457b06505e6ec98605badcacd5085599676 SHA1 58ef51fbddf981a189f8b5b39774e3bd6862127d SHA256 d46394a1062ed066f9c633b010fd1059e63d9ed791bbb7a85bc6567cf0fd66fd
+EBUILD grip-3.3.1-r1.ebuild 1247 RMD160 956328b62e21b58fd5218b55096a2f939b61685e SHA1 a566d1f75d6678ede2a20f68c0eb978a4aa6f176 SHA256 864e869c68ae280d94367ad0009d1b769bccbd4f462c8e92a32bb31a2b5c4c30
diff --git a/media-sound/grip/files/grip-ds-editnext.patch b/media-sound/grip/files/grip-ds-editnext.patch
new file mode 100644
index 0000000..b14ea15
--- /dev/null
+++ b/media-sound/grip/files/grip-ds-editnext.patch
@@ -0,0 +1,12 @@
+diff -dPNur grip-3.3.0/src/discedit.c grip-3.3.0-new/src/discedit.c
+--- grip-3.3.0/src/discedit.c 2005-01-29 19:27:43.000000000 +0000
++++ grip-3.3.0-new/src/discedit.c 2005-11-05 10:51:06.000000000 +0000
+@@ -201,6 +201,8 @@
+ uinfo->track_artist_edit_entry=gtk_entry_new_with_max_length(256);
+ gtk_signal_connect(GTK_OBJECT(uinfo->track_artist_edit_entry),"changed",
+ GTK_SIGNAL_FUNC(TrackEditChanged),(gpointer)ginfo);
++ gtk_signal_connect(GTK_OBJECT(uinfo->track_artist_edit_entry),"activate",
++ GTK_SIGNAL_FUNC(EditNextTrack),(gpointer)ginfo);
+ gtk_box_pack_start(GTK_BOX(hbox),uinfo->track_artist_edit_entry,
+ TRUE,TRUE,0);
+ gtk_widget_show(uinfo->track_artist_edit_entry);
diff --git a/media-sound/grip/grip-3.3.1-r1.ebuild b/media-sound/grip/grip-3.3.1-r1.ebuild
new file mode 100644
index 0000000..8ae7b40
--- /dev/null
+++ b/media-sound/grip/grip-3.3.1-r1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/grip/grip-3.3.1.ebuild,v 1.1 2005/10/09 22:18:25 chainsaw Exp $
+
+inherit gnuconfig flag-o-matic eutils
+
+IUSE="nls oggvorbis"
+
+DESCRIPTION="GTK+ based Audio CD Player/Ripper."
+HOMEPAGE="http://www.nostatic.org/grip"
+SRC_URI="mirror://sourceforge/grip/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86"
+
+RDEPEND=">=x11-libs/gtk+-2.2
+ x11-libs/vte
+ =sys-libs/db-1*
+ media-sound/lame
+ media-sound/cdparanoia
+ >=media-libs/id3lib-3.8.3
+ >=gnome-base/libgnomeui-2.2.0
+ >=gnome-base/orbit-2
+ gnome-base/libghttp
+ net-misc/curl
+ oggvorbis? ( media-sound/vorbis-tools )"
+
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+
+ EPATCH_OPTS="-p1" epatch ${FILESDIR}/grip-ds-editnext.patch
+
+ gnuconfig_update
+}
+
+src_compile() {
+ # Bug #69536
+ use x86 && append-flags "-mno-sse"
+
+ econf \
+ --disable-dependency-tracking \
+ $(use_enable nls) || die "./configure failed"
+ emake || die "emake failed"
+}
+
+src_install () {
+ make DESTDIR="${D}" install || die "make install failed"
+ dodoc AUTHORS CREDITS ChangeLog README TODO
+}
diff --git a/media-sound/lossless2lossy/Manifest b/media-sound/lossless2lossy/Manifest
new file mode 100644
index 0000000..151194f
--- /dev/null
+++ b/media-sound/lossless2lossy/Manifest
@@ -0,0 +1,2 @@
+DIST lossless2lossy-v1.21.gz 5182 RMD160 9ca38517752a4ee0ca8146101d879fa71fe1e7a1 SHA1 1b482686f91649b50a54e105c82aec6f654e6195 SHA256 be15276db2087702dcc5875955f350f81301e89f540d01a95850dc1cd38ced10
+EBUILD lossless2lossy-1.21.ebuild 759 RMD160 8139bf9d4e6d6a12ded7e02e83ac3f284243f12a SHA1 523ed2bf2874330a9d646204b7ffb0342e85b289 SHA256 59cc936666810593378f400f4e87b55255f88380a0d639e9f84a00f67ff858fb
diff --git a/media-sound/lossless2lossy/lossless2lossy-1.21.ebuild b/media-sound/lossless2lossy/lossless2lossy-1.21.ebuild
new file mode 100644
index 0000000..1eea710
--- /dev/null
+++ b/media-sound/lossless2lossy/lossless2lossy-1.21.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+DESCRIPTION="A conversion script for mass converting your music collection from one format to another"
+HOMEPAGE="http://lossless2lossy.sourceforge.net/"
+SRC_URI="http://downloads.sourceforge.net/${PN}/${PN}-v${PV}.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~sparc"
+IUSE="ape flac mp3 vorbis wavpack"
+
+RDEPEND="ape? ( media-libs/mac )
+ flac? ( media-libs/flac )
+ mp3? ( media-sound/lame )
+ vorbis? ( media-libs/libvorbis )
+ wavpack? ( media-sound/wavpack )
+ media-sound/id3v2"
+
+S="${WORKDIR}"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S} || die
+ mv lossless2lossy-v${PV} lossless2lossy
+}
+
+src_install() {
+ dobin lossless2lossy || die
+}
diff --git a/media-sound/mpg123/Manifest b/media-sound/mpg123/Manifest
new file mode 100644
index 0000000..396cf95
--- /dev/null
+++ b/media-sound/mpg123/Manifest
@@ -0,0 +1,14 @@
+AUX mpg123-ds-rcc.patch 4428 RMD160 ca864c06b5c154899a315f3425e00622af530113 SHA1 564ab8a296024c022eeaf8fd65d74124d2bc16aa SHA256 0eadb0941c3476a105df3a96bbfd772e3519e5036f5d52dc643f1b60cf225fc7
+AUX mpg123-ds-rcc1121.patch 7769 RMD160 60bbc6022aed1ba4f323b4c4e8eb4af0f78d2e12 SHA1 9cb83f78c78575edce5ccf4ac711cb6ccea7b98a SHA256 fe815c3943788d86c846e308bd774cbddba9ad87b2b8553d98a1572627027405
+AUX mpg123-ds-rcc173.patch 8774 RMD160 624a8f5affec6f2cdc2c64a60a4d881f92af4913 SHA1 37fc97eacfcfdba235b0515ef78d3b85f6dd4ec3 SHA256 61b9067ae997a7b165a102022d4e21c18f1b71b3ab8a8e257190fbcefe7d1632
+AUX mpg123-ds-rcc65.patch 7283 RMD160 bcaf3129939c5220a2cafcff1ad2fe6eb4ff44f5 SHA1 c0385e96d8d28546e16adef89c367e05db3c60b8 SHA256 c6b9dc95fba1edb33a9a772814877222da9587af8366f65312f6e7835152f5ed
+AUX mpg123-osx.diff 11227 RMD160 572614f922a288d68f56b66a20d3a9264c92c895 SHA1 11d7c7df1624f35bb17a7d044c21f4924eb316e7 SHA256 2941998aeb4c77d9c7633c6fcf01d37cb1b019f1b3d4dabadfceb152f97d11b8
+DIST mpg123-0.59s-gentoo-1.5.tar.bz2 7207 RMD160 75bc91d354e665c424afa1a3beab202f7a60441c SHA1 9631911b2a8c6331e494a1e26d03516b19634c62 SHA256 2c2495ce9bd029b01d94c4c4ca930653d174d4a3e6d11488e2e669692835b116
+DIST mpg123-0.65.tar.bz2 529154 RMD160 f28f79425a41cd71d9cca7e817fd3c010f71ab30 SHA1 984a1ce7f0705a15ce3afb9538615cc82cd1ea7c SHA256 091f0b29e630530b42c4a06671d14a7a9acc0b0cadad90edcf1983e798691e0b
+DIST mpg123-1.12.2.tar.bz2 809645 RMD160 cae7d4fe52026f671f402a46d7b8d778c78b6ac7 SHA1 7cb9bcb51366ea6f4b11d0e160c2d42a2c153212 SHA256 e05f1027ffa7879493c0959a1ad5936d31b06461c2f8ebed729f6aea5ed71ef7
+DIST mpg123-1.7.3.tar.bz2 1152707 RMD160 5ae91f57aa666336ed1b2c23d3b769e027a8e917 SHA1 9f0d288783da5539e67ca91ac12097ef088d5af3 SHA256 b8935a8f481d49b07d39fe0d3aa2eecbf7f631002b64d29e099de1b5be86e9da
+DIST mpg123-pre0.59s.tar.gz 244899 RMD160 fdc6ba57c67dc890ef5d2f3a05ff9c520ccf407f SHA1 7e521785dc3a9015f4228f0a118bf36856884b67 SHA256 ba0c1db18ffc7ed2250d6718a23a62e0e98d77bbeedb83ca3993f6421b31256a
+EBUILD mpg123-0.59s-r11.ebuild 3288 RMD160 a97e59422df5e42582a5eaa4e7f6910334104669 SHA1 585db0ec7d4492897ca470e4a9323482d5106ed7 SHA256 816ae3c155fc82cb1f24186f6358951abc50764e945badabe60b1ed5bb149daf
+EBUILD mpg123-0.65-r1.ebuild 2089 RMD160 742b952cb0ce59f00d86001f52611a77711ab65c SHA1 3b46c96c94dd379fd07a07153af539e3c5ff23b0 SHA256 bb7e656469f61bb0ad7335be0a0cc70d392f02023622549b5b7580304f4761dc
+EBUILD mpg123-1.12.2-r2.ebuild 1960 RMD160 c28c7209483567a5d6aa59f0668e03f80a5e4afb SHA1 53d04f5f9b1911bb5a60b34f4521622407147643 SHA256 da5e6f475a3b155678b7d710902dec64ee8ddee745c4ea07e4fcbfc9c02c9eb9
+EBUILD mpg123-1.7.3-r1.ebuild 2003 RMD160 ded77977950978acc6e4a5f9bda9c5444b9d02e6 SHA1 3640eaa98c7f04aeff43deefe2ac84a931f85c03 SHA256 b3166158eb9a1bd54619ac88399d434bce97efa5599981a2e02641e9d7416b61
diff --git a/media-sound/mpg123/files/mpg123-ds-rcc.patch b/media-sound/mpg123/files/mpg123-ds-rcc.patch
new file mode 100644
index 0000000..620457b
--- /dev/null
+++ b/media-sound/mpg123/files/mpg123-ds-rcc.patch
@@ -0,0 +1,150 @@
+diff -dPNur mpg123/Makefile mpg123-new/Makefile
+--- mpg123/Makefile 2005-07-26 05:50:35.000000000 +0000
++++ mpg123-new/Makefile 2005-07-26 05:52:38.000000000 +0000
+@@ -789,12 +789,12 @@
+ mpg123-make:
+ @ $(MAKE) CFLAGS='$(CFLAGS)' BINNAME=mpg123 mpg123
+
+-mpg123: mpg123.o common.o $(OBJECTS) decode_2to1.o decode_4to1.o \
++mpg123: mpg123.o common.o rccpatch.o $(OBJECTS) decode_2to1.o decode_4to1.o \
+ tabinit.o audio.o layer1.o layer2.o layer3.o buffer.o \
+ getlopt.o httpget.o xfermem.o equalizer.o \
+ decode_ntom.o Makefile wav.o readers.o \
+ control_generic.o vbrhead.o playlist.o getbits.o
+- $(CC) $(CFLAGS) $(LDFLAGS) mpg123.o tabinit.o common.o layer1.o \
++ $(CC) $(CFLAGS) $(LDFLAGS) -lrcc rccpatch.o mpg123.o tabinit.o common.o layer1.o \
+ layer2.o layer3.o audio.o buffer.o decode_2to1.o equalizer.o \
+ decode_4to1.o getlopt.o httpget.o xfermem.o decode_ntom.o \
+ wav.o readers.o control_generic.o vbrhead.o playlist.o getbits.o \
+diff -dPNur mpg123/common.c mpg123-new/common.c
+--- mpg123/common.c 2005-07-26 05:50:37.000000000 +0000
++++ mpg123-new/common.c 2005-07-26 05:54:32.000000000 +0000
+@@ -22,6 +22,7 @@
+ #endif
+ #endif
+
++#include "rccpatch.h"
+ #include "mpg123.h"
+ #include "genre.h"
+ #include "common.h"
+@@ -666,6 +667,8 @@
+ char comment[31]={0,};
+ char genre[31]={0,};
+
++ char *ctitle, *cartist, *calbum, *ccomment;
++
+ if(param.quiet)
+ return;
+
+@@ -675,15 +678,25 @@
+ strncpy(year,tag->year,4);
+ strncpy(comment,tag->comment,30);
+
++ ctitle = rccPatchRecode(title);
++ cartist = rccPatchRecode(artist);
++ calbum = rccPatchRecode(album);
++ ccomment = rccPatchRecode(comment);
++
+ if ( tag->genre < sizeof(genre_table)/sizeof(*genre_table) ) {
+ strncpy(genre, genre_table[tag->genre], 30);
+ } else {
+ strncpy(genre,"Unknown",30);
+ }
+-
+- fprintf(stderr,"Title : %-30s Artist: %s\n",title,artist);
+- fprintf(stderr,"Album : %-30s Year : %4s\n",album,year);
+- fprintf(stderr,"Comment: %-30s Genre : %s\n",comment,genre);
++
++ fprintf(stderr,"Title : %-30s Artist: %s\n",ctitle?ctitle:title,cartist?cartist:artist);
++ fprintf(stderr,"Album : %-30s Year : %4s\n",calbum?calbum:album,year);
++ fprintf(stderr,"Comment: %-30s Genre : %s\n",ccomment?ccomment:comment,genre);
++
++ if (ctitle) free(ctitle);
++ if (cartist) free(cartist);
++ if (calbum) free(calbum);
++ if (ccomment) free(ccomment);
+ }
+
+ #if 0
+diff -dPNur mpg123/mpg123.c mpg123-new/mpg123.c
+--- mpg123/mpg123.c 2001-01-18 14:00:35.000000000 +0000
++++ mpg123-new/mpg123.c 2005-07-26 05:51:08.000000000 +0000
+@@ -33,6 +33,8 @@
+ #include "term.h"
+ #include "playlist.h"
+
++#include "rccpatch.h"
++
+ #include "version.h"
+
+ static void usage(char *dummy);
+@@ -890,6 +892,8 @@
+ term_init();
+ }
+ #endif
++
++ rccPatchInit();
+
+ leftFrames = numframes;
+ for(frameNum=0;read_frame(rd,fr) && leftFrames && !intflag;frameNum++) {
+@@ -1006,6 +1010,8 @@
+ }
+ }
+ }
++ rccPatchFree();
++
+ #ifndef NOXFERMEM
+ if (buffermem && param.usebuffer) {
+ buffer_end();
+diff -dPNur mpg123/rccpatch.c mpg123-new/rccpatch.c
+--- mpg123/rccpatch.c 1970-01-01 00:00:00.000000000 +0000
++++ mpg123-new/rccpatch.c 2005-07-26 05:51:08.000000000 +0000
+@@ -0,0 +1,40 @@
++#include <librcc.h>
++
++#define ID3_CLASS 0
++#define OUT_CLASS 1
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
++ { NULL }
++};
++
++static int rcc_initialized = 0;
++
++void rccPatchFree() {
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++}
++
++void rccPatchInit() {
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++}
++
++static void rccPatchTryInit() {
++ if (!rcc_initialized) {
++ rccPatchInit();
++ if (rcc_initialized) atexit(rccPatchFree);
++ }
++}
++
++char *rccPatchRecode(const char *str) {
++ char *res;
++ rccPatchTryInit();
++ return rccRecode(NULL, ID3_CLASS, OUT_CLASS, str);
++}
+diff -dPNur mpg123/rccpatch.h mpg123-new/rccpatch.h
+--- mpg123/rccpatch.h 1970-01-01 00:00:00.000000000 +0000
++++ mpg123-new/rccpatch.h 2005-07-26 05:51:08.000000000 +0000
+@@ -0,0 +1,4 @@
++void rccPatchFree();
++void rccPatchInit();
++char *rccPatchRecode(const char *str);
++
diff --git a/media-sound/mpg123/files/mpg123-ds-rcc1121.patch b/media-sound/mpg123/files/mpg123-ds-rcc1121.patch
new file mode 100644
index 0000000..1335795
--- /dev/null
+++ b/media-sound/mpg123/files/mpg123-ds-rcc1121.patch
@@ -0,0 +1,247 @@
+diff -dPNur mpg123-1.12.1/configure.ac mpg123-1.12.1-new/configure.ac
+--- mpg123-1.12.1/configure.ac 2010-03-31 10:27:37.000000000 +0200
++++ mpg123-1.12.1-new/configure.ac 2010-07-07 23:44:57.000000000 +0200
+@@ -998,6 +998,21 @@
+ AC_CHECK_LIB([m], [sqrt])
+ AC_CHECK_LIB([mx], [powf])
+
++# LibRCC
++AC_CHECK_LIB(rcc, rccInit,[
++ AC_CHECK_HEADERS(librcc.h,[
++ LIBRCC_LIBS="-lrcc"
++ LIBRCC_INCLUDES="-DHAVE_LIBRCC"
++ ],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])
++AC_SUBST(LIBRCC_LIBS)
++AC_SUBST(LIBRCC_INCLUDES)
++
+ # attempt to make the signal stuff work... also with GENERIC - later
+ #if test x"$ac_cv_header_sys_signal_h" = xyes; then
+ # AC_CHECK_FUNCS( sigemptyset sigaddset sigprocmask sigaction )
+diff -dPNur mpg123-1.12.1/src/libmpg123/id3.c mpg123-1.12.1-new/src/libmpg123/id3.c
+--- mpg123-1.12.1/src/libmpg123/id3.c 2010-03-31 10:27:35.000000000 +0200
++++ mpg123-1.12.1-new/src/libmpg123/id3.c 2010-07-07 23:51:50.000000000 +0200
+@@ -9,6 +9,8 @@
+ #include "mpg123lib_intern.h"
+ #include "id3.h"
+ #include "debug.h"
++#include "rccpatch.h"
++
+
+ #ifndef NO_ID3V2 /* Only the main parsing routine will always be there. */
+
+@@ -829,6 +831,15 @@
+ size_t length = l;
+ size_t i;
+ unsigned char *p;
++ char *ctitle;
++
++ ctitle = mpg123_rcc_recode(s, l, &i);
++ if (ctitle) {
++ convert_utf8(sb, ctitle, i, 0);
++ free(ctitle);
++ return;
++ }
++
+ /* determine real length, a latin1 character can at most take 2 in UTF8 */
+ for(i=0; i<l; ++i)
+ if(s[i] >= 0x80) ++length;
+diff -dPNur mpg123-1.12.1/src/libmpg123/Makefile.am mpg123-1.12.1-new/src/libmpg123/Makefile.am
+--- mpg123-1.12.1/src/libmpg123/Makefile.am 2010-03-31 10:27:35.000000000 +0200
++++ mpg123-1.12.1-new/src/libmpg123/Makefile.am 2010-07-07 23:44:57.000000000 +0200
+@@ -29,6 +29,8 @@
+ libmpg123_la_DEPENDENCIES = @DECODER_LOBJ@ @LFS_LOBJ@
+
+ libmpg123_la_SOURCES = \
++ rccpatch.c \
++ rccpatch.h \
+ compat.c \
+ compat.h \
+ parse.c \
+diff -dPNur mpg123-1.12.1/src/libmpg123/rccpatch.c mpg123-1.12.1-new/src/libmpg123/rccpatch.c
+--- mpg123-1.12.1/src/libmpg123/rccpatch.c 1970-01-01 01:00:00.000000000 +0100
++++ mpg123-1.12.1-new/src/libmpg123/rccpatch.c 2010-07-07 23:55:59.000000000 +0200
+@@ -0,0 +1,76 @@
++#include <string.h>
++#include <librcc.h>
++#include "mpg123.h"
++
++#define ID3_CLASS 0
++#define UTF_CLASS 1
++#define OUT_CLASS 2
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "utf", RCC_CLASS_KNOWN, "UTF-8", NULL, "Unicode Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
++ { NULL }
++};
++
++static int rcc_initialized = 0;
++
++void mpg123_rcc_free() {
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++}
++
++void mpg123_rcc_init() {
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++}
++
++static void mpg123_rcc_try_init() {
++ if (!rcc_initialized) {
++ mpg123_rcc_init();
++ if (rcc_initialized) atexit(mpg123_rcc_free);
++ }
++}
++
++
++char *mpg123_rcc_recode(const char *str, size_t len, size_t *rlen) {
++ char *res;
++ mpg123_rcc_try_init();
++ return rccSizedRecode(NULL, ID3_CLASS, UTF_CLASS, str, len, rlen);
++}
++
++static void mpg123_rcc_recode_string(mpg123_string *str, rcc_class_id from, rcc_class_id to) {
++ size_t size;
++ char *res;
++
++ if ((!str)||(str->fill<2)) return;
++
++ mpg123_rcc_try_init();
++
++ res = rccSizedRecode(NULL, from, to, str->p, str->fill - 1, &size);
++ if (res) {
++ if (size+1>str->size) {
++ if (!mpg123_resize_string(str, size + 1)) {
++ // allocation failed
++ free(res);
++ return;
++ }
++ }
++ strncpy(str->p, res, size + 1);
++ str->fill = size + 1;
++ free(res);
++ }
++}
++
++void mpg123_rcc_recode_utf_string(mpg123_string *str) {
++ mpg123_rcc_recode_string(str, UTF_CLASS, OUT_CLASS);
++}
++
++void mpg123_rcc_recode_latin_string(mpg123_string *str) {
++ mpg123_rcc_recode_string(str, ID3_CLASS, OUT_CLASS);
++}
+diff -dPNur mpg123-1.12.1/src/libmpg123/rccpatch.h mpg123-1.12.1-new/src/libmpg123/rccpatch.h
+--- mpg123-1.12.1/src/libmpg123/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ mpg123-1.12.1-new/src/libmpg123/rccpatch.h 2010-07-07 23:44:57.000000000 +0200
+@@ -0,0 +1,5 @@
++void mpg123_rcc_free();
++void mpg123_rcc_init();
++char *mpg123_rcc_recode(const char *str, size_t len, size_t *rlen);
++void mpg123_rcc_recode_utf_string(mpg123_string *str);
++void mpg123_rcc_recode_latin_string(mpg123_string *str);
+diff -dPNur mpg123-1.12.1/src/Makefile.am mpg123-1.12.1-new/src/Makefile.am
+--- mpg123-1.12.1/src/Makefile.am 2010-03-31 10:27:36.000000000 +0200
++++ mpg123-1.12.1-new/src/Makefile.am 2010-07-07 23:46:10.000000000 +0200
+@@ -5,10 +5,10 @@
+ ## initially written by Nicholas J. Humfrey
+
+ AM_CPPFLAGS = -DPKGLIBDIR="\"$(pkglibdir)\""
+-mpg123_LDADD = $(LIBLTDL) libmpg123/libmpg123.la @MODULE_OBJ@ @OUTPUT_OBJ@ @OUTPUT_LIBS@
++mpg123_LDADD = $(LIBLTDL) libmpg123/libmpg123.la @MODULE_OBJ@ @OUTPUT_OBJ@ @OUTPUT_LIBS@ @LIBRCC_LIBS@
+ mpg123_LDFLAGS = @EXEC_LT_LDFLAGS@ @OUTPUT_LDFLAGS@
+ # Just mpg123_INCLUDES has no effect on build! Trying that before reverting to AM_CPPFLAGS.
+-INCLUDES = $(LTDLINCL) -I$(top_builddir)/src/libmpg123 -I$(top_srcdir)/src/libmpg123
++INCLUDES = $(LTDLINCL) -I$(top_builddir)/src/libmpg123 -I$(top_srcdir)/src/libmpg123 @LIBRCC_INCLUDES@
+ # libltdl is not mentioned here... it's not that trivial
+ mpg123_DEPENDENCIES = @OUTPUT_OBJ@ @MODULE_OBJ@ libmpg123/libmpg123.la
+
+diff -dPNur mpg123-1.12.1/src/metaprint.c mpg123-1.12.1-new/src/metaprint.c
+--- mpg123-1.12.1/src/metaprint.c 2010-03-31 10:27:36.000000000 +0200
++++ mpg123-1.12.1-new/src/metaprint.c 2010-07-07 23:54:21.000000000 +0200
+@@ -17,7 +17,11 @@
+ if(source == NULL) return;
+
+ if(utf8env) mpg123_copy_string(source, dest);
+- else utf8_ascii(dest, source);
++ else {
++ mpg123_copy_string(source, dest);
++ mpg123_rcc_recode_utf_string(dest);
++// utf8_ascii(dest, source);
++ }
+ }
+
+ /* print tags... limiting the UTF-8 to ASCII */
+@@ -53,6 +57,7 @@
+ strncpy(tag[TITLE].p,v1->title,30);
+ tag[TITLE].p[30] = 0;
+ tag[TITLE].fill = strlen(tag[TITLE].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[TITLE]);
+ }
+ }
+ if(!tag[ARTIST].fill)
+@@ -62,6 +67,7 @@
+ strncpy(tag[ARTIST].p,v1->artist,30);
+ tag[ARTIST].p[30] = 0;
+ tag[ARTIST].fill = strlen(tag[ARTIST].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[ARTIST]);
+ }
+ }
+ if(!tag[ALBUM].fill)
+@@ -71,6 +77,7 @@
+ strncpy(tag[ALBUM].p,v1->album,30);
+ tag[ALBUM].p[30] = 0;
+ tag[ALBUM].fill = strlen(tag[ALBUM].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[ALBUM]);
+ }
+ }
+ if(!tag[COMMENT].fill)
+@@ -80,6 +87,7 @@
+ strncpy(tag[COMMENT].p,v1->comment,30);
+ tag[COMMENT].p[30] = 0;
+ tag[COMMENT].fill = strlen(tag[COMMENT].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[COMMENT]);
+ }
+ }
+ if(!tag[YEAR].fill)
+diff -dPNur mpg123-1.12.1/src/mpg123.c mpg123-1.12.1-new/src/mpg123.c
+--- mpg123-1.12.1/src/mpg123.c 2010-03-31 10:27:36.000000000 +0200
++++ mpg123-1.12.1-new/src/mpg123.c 2010-07-07 23:52:58.000000000 +0200
+@@ -10,6 +10,7 @@
+ #include "mpg123app.h"
+ #include "mpg123.h"
+ #include "local.h"
++#include "rccpatch.h"
+
+ #ifdef HAVE_SYS_WAIT_H
+ #include <sys/wait.h>
+@@ -973,6 +974,8 @@
+ if(param.term_ctrl)
+ term_init();
+ #endif
++
++ mpg123_rcc_init();
+ while ((fname = get_next_file()))
+ {
+ char *dirname, *filename;
+@@ -1132,6 +1135,8 @@
+ #endif
+ }
+ } /* end of loop over input files */
++ mpg123_rcc_free();
++
+ /* Ensure we played everything. */
+ if(param.smooth && param.usebuffer)
+ {
diff --git a/media-sound/mpg123/files/mpg123-ds-rcc173.patch b/media-sound/mpg123/files/mpg123-ds-rcc173.patch
new file mode 100644
index 0000000..ae814ff
--- /dev/null
+++ b/media-sound/mpg123/files/mpg123-ds-rcc173.patch
@@ -0,0 +1,271 @@
+diff -dPNur mpg123-1.7.3/configure.ac mpg123-1.7.3-rusxmms/configure.ac
+--- mpg123-1.7.3/configure.ac 2009-04-27 09:02:40.000000000 +0200
++++ mpg123-1.7.3-rusxmms/configure.ac 2009-06-13 23:22:17.000000000 +0200
+@@ -759,6 +759,21 @@
+ AC_CHECK_LIB([m], [sqrt])
+ AC_CHECK_LIB([mx], [powf])
+
++# LibRCC
++AC_CHECK_LIB(rcc, rccInit,[
++ AC_CHECK_HEADERS(librcc.h,[
++ LIBRCC_LIBS="-lrcc"
++ LIBRCC_INCLUDES="-DHAVE_LIBRCC"
++ ],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])
++AC_SUBST(LIBRCC_LIBS)
++AC_SUBST(LIBRCC_INCLUDES)
++
+ # attempt to make the signal stuff work... also with GENERIC - later
+ #if test x"$ac_cv_header_sys_signal_h" = xyes; then
+ # AC_CHECK_FUNCS( sigemptyset sigaddset sigprocmask sigaction )
+diff -dPNur mpg123-1.7.3/src/libmpg123/id3.c mpg123-1.7.3-rusxmms/src/libmpg123/id3.c
+--- mpg123-1.7.3/src/libmpg123/id3.c 2009-04-27 09:02:12.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/libmpg123/id3.c 2009-06-14 00:34:23.000000000 +0200
+@@ -9,6 +9,8 @@
+ #include "mpg123lib_intern.h"
+ #include "id3.h"
+ #include "debug.h"
++#include "rccpatch.h"
++
+
+ #ifndef NO_ID3V2 /* Only the main parsing routine will always be there. */
+
+@@ -774,6 +776,15 @@
+ size_t length = l;
+ size_t i;
+ unsigned char *p;
++ char *ctitle;
++
++ ctitle = mpg123_rcc_recode(s, l, &i);
++ if (ctitle) {
++ convert_utf8(sb, ctitle, i);
++ free(ctitle);
++ return;
++ }
++
+ /* determine real length, a latin1 character can at most take 2 in UTF8 */
+ for(i=0; i<l; ++i)
+ if(s[i] >= 0x80) ++length;
+diff -dPNur mpg123-1.7.3/src/libmpg123/libmpg123.sym mpg123-1.7.3-rusxmms/src/libmpg123/libmpg123.sym
+--- mpg123-1.7.3/src/libmpg123/libmpg123.sym 2009-04-27 09:07:20.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/libmpg123/libmpg123.sym 2009-06-14 01:53:25.000000000 +0200
+@@ -74,3 +74,8 @@
+ mpg123_position
+ mpg123_length
+ mpg123_set_filesize
++mpg123_rcc_free
++mpg123_rcc_init
++mpg123_rcc_recode
++mpg123_rcc_recode_utf_string
++mpg123_rcc_recode_latin_string
+diff -dPNur mpg123-1.7.3/src/libmpg123/libmpg123.sym.in mpg123-1.7.3-rusxmms/src/libmpg123/libmpg123.sym.in
+--- mpg123-1.7.3/src/libmpg123/libmpg123.sym.in 2009-04-27 09:02:12.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/libmpg123/libmpg123.sym.in 2009-06-14 01:51:45.000000000 +0200
+@@ -74,3 +74,8 @@
+ mpg123_position@LARGEFILE_SUFFIX@
+ mpg123_length@LARGEFILE_SUFFIX@
+ mpg123_set_filesize@LARGEFILE_SUFFIX@
++mpg123_rcc_free
++mpg123_rcc_init
++mpg123_rcc_recode
++mpg123_rcc_recode_utf_string
++mpg123_rcc_recode_latin_string
+diff -dPNur mpg123-1.7.3/src/libmpg123/Makefile.am mpg123-1.7.3-rusxmms/src/libmpg123/Makefile.am
+--- mpg123-1.7.3/src/libmpg123/Makefile.am 2009-04-27 09:02:12.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/libmpg123/Makefile.am 2009-06-14 00:10:34.000000000 +0200
+@@ -31,6 +31,8 @@
+ libmpg123_la_DEPENDENCIES = @DECODER_LOBJ@ libmpg123.sym
+
+ libmpg123_la_SOURCES = \
++ rccpatch.c \
++ rccpatch.h \
+ compat.c \
+ compat.h \
+ parse.c \
+diff -dPNur mpg123-1.7.3/src/libmpg123/rccpatch.c mpg123-1.7.3-rusxmms/src/libmpg123/rccpatch.c
+--- mpg123-1.7.3/src/libmpg123/rccpatch.c 1970-01-01 01:00:00.000000000 +0100
++++ mpg123-1.7.3-rusxmms/src/libmpg123/rccpatch.c 2009-06-14 01:54:37.000000000 +0200
+@@ -0,0 +1,76 @@
++#include <string.h>
++#include <librcc.h>
++#include "mpg123.h"
++
++#define ID3_CLASS 0
++#define UTF_CLASS 1
++#define OUT_CLASS 2
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "utf", RCC_CLASS_KNOWN, "UTF-8", NULL, "Unicode Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
++ { NULL }
++};
++
++static int rcc_initialized = 0;
++
++void mpg123_rcc_free() {
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++}
++
++void mpg123_rcc_init() {
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++}
++
++static void mpg123_rcc_try_init() {
++ if (!rcc_initialized) {
++ mpg123_rcc_init();
++ if (rcc_initialized) atexit(mpg123_rcc_free);
++ }
++}
++
++
++char *mpg123_rcc_recode(const char *str, size_t len, size_t *rlen) {
++ char *res;
++ mpg123_rcc_try_init();
++ return rccSizedRecode(NULL, ID3_CLASS, UTF_CLASS, str, len, rlen);
++}
++
++static void mpg123_rcc_recode_string(mpg123_string *str, rcc_class_id from, rcc_class_id to) {
++ size_t size;
++ char *res;
++
++ if ((!str)||(str->fill<2)) return;
++
++ mpg123_rcc_try_init();
++
++ res = rccSizedRecode(NULL, from, to, str->p, str->fill - 1, &size);
++ if (res) {
++ if (size+1>str->size) {
++ if (!mpg123_resize_string(str, size + 1)) {
++ // allocation failed
++ free(res);
++ return;
++ }
++ }
++ strncpy(str->p, res, size + 1);
++ str->fill = size + 1;
++ free(res);
++ }
++}
++
++void mpg123_rcc_recode_utf_string(mpg123_string *str) {
++ mpg123_rcc_recode_string(str, UTF_CLASS, OUT_CLASS);
++}
++
++void mpg123_rcc_recode_latin_string(mpg123_string *str) {
++ mpg123_rcc_recode_string(str, ID3_CLASS, OUT_CLASS);
++}
+diff -dPNur mpg123-1.7.3/src/libmpg123/rccpatch.h mpg123-1.7.3-rusxmms/src/libmpg123/rccpatch.h
+--- mpg123-1.7.3/src/libmpg123/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ mpg123-1.7.3-rusxmms/src/libmpg123/rccpatch.h 2009-06-14 01:51:21.000000000 +0200
+@@ -0,0 +1,5 @@
++void mpg123_rcc_free();
++void mpg123_rcc_init();
++char *mpg123_rcc_recode(const char *str, size_t len, size_t *rlen);
++void mpg123_rcc_recode_utf_string(mpg123_string *str);
++void mpg123_rcc_recode_latin_string(mpg123_string *str);
+diff -dPNur mpg123-1.7.3/src/Makefile.am mpg123-1.7.3-rusxmms/src/Makefile.am
+--- mpg123-1.7.3/src/Makefile.am 2009-04-27 09:02:12.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/Makefile.am 2009-06-14 00:10:22.000000000 +0200
+@@ -5,10 +5,10 @@
+ ## initially written by Nicholas J. Humfrey
+
+ AM_CPPFLAGS = -DPKGLIBDIR="\"$(pkglibdir)\""
+-mpg123_LDADD = $(LIBLTDL) libmpg123/libmpg123.la @MODULE_OBJ@ @OUTPUT_OBJ@ @OUTPUT_LIBS@
++mpg123_LDADD = $(LIBLTDL) libmpg123/libmpg123.la @MODULE_OBJ@ @OUTPUT_OBJ@ @OUTPUT_LIBS@ @LIBRCC_LIBS@
+ mpg123_LDFLAGS = @LT_LDFLAGS@ @OUTPUT_LDFLAGS@
+ # Just mpg123_INCLUDES has no effect on build! Trying that before reverting to AM_CPPFLAGS.
+-INCLUDES = $(LTDLINCL) -I$(top_builddir)/src/libmpg123 -I$(top_srcdir)/src/libmpg123
++INCLUDES = $(LTDLINCL) -I$(top_builddir)/src/libmpg123 -I$(top_srcdir)/src/libmpg123 @LIBRCC_INCLUDES@
+ # libltdl is not mentioned here... it's not that trivial
+ mpg123_DEPENDENCIES = @OUTPUT_OBJ@ @MODULE_OBJ@ libmpg123/libmpg123.la
+
+diff -dPNur mpg123-1.7.3/src/metaprint.c mpg123-1.7.3-rusxmms/src/metaprint.c
+--- mpg123-1.7.3/src/metaprint.c 2009-04-27 09:02:12.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/metaprint.c 2009-06-14 01:59:09.000000000 +0200
+@@ -17,7 +17,11 @@
+ if(source == NULL) return;
+
+ if(utf8env) mpg123_copy_string(source, dest);
+- else utf8_ascii(dest, source);
++ else {
++ mpg123_copy_string(source, dest);
++ mpg123_rcc_recode_utf_string(dest);
++// utf8_ascii(dest, source);
++ }
+ }
+
+ /* print tags... limiting the UTF-8 to ASCII */
+@@ -53,6 +57,7 @@
+ strncpy(tag[TITLE].p,v1->title,30);
+ tag[TITLE].p[30] = 0;
+ tag[TITLE].fill = strlen(tag[TITLE].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[TITLE]);
+ }
+ }
+ if(!tag[ARTIST].fill)
+@@ -62,6 +67,7 @@
+ strncpy(tag[ARTIST].p,v1->artist,30);
+ tag[ARTIST].p[30] = 0;
+ tag[ARTIST].fill = strlen(tag[ARTIST].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[ARTIST]);
+ }
+ }
+ if(!tag[ALBUM].fill)
+@@ -71,6 +77,7 @@
+ strncpy(tag[ALBUM].p,v1->album,30);
+ tag[ALBUM].p[30] = 0;
+ tag[ALBUM].fill = strlen(tag[ALBUM].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[ALBUM]);
+ }
+ }
+ if(!tag[COMMENT].fill)
+@@ -80,6 +87,7 @@
+ strncpy(tag[COMMENT].p,v1->comment,30);
+ tag[COMMENT].p[30] = 0;
+ tag[COMMENT].fill = strlen(tag[COMMENT].p) + 1;
++ mpg123_rcc_recode_latin_string(&tag[COMMENT]);
+ }
+ }
+ if(!tag[YEAR].fill)
+diff -dPNur mpg123-1.7.3/src/mpg123.c mpg123-1.7.3-rusxmms/src/mpg123.c
+--- mpg123-1.7.3/src/mpg123.c 2009-04-27 09:02:12.000000000 +0200
++++ mpg123-1.7.3-rusxmms/src/mpg123.c 2009-06-14 00:35:14.000000000 +0200
+@@ -10,6 +10,7 @@
+ #include "mpg123app.h"
+ #include "mpg123.h"
+ #include "local.h"
++#include "rccpatch.h"
+
+ #ifdef HAVE_SYS_WAIT_H
+ #include <sys/wait.h>
+@@ -893,6 +894,8 @@
+ if(param.term_ctrl)
+ term_init();
+ #endif
++
++ mpg123_rcc_init();
+ while ((fname = get_next_file()))
+ {
+ char *dirname, *filename;
+@@ -1038,6 +1041,8 @@
+ #endif
+ }
+ } /* end of loop over input files */
++ mpg123_rcc_free();
++
+ /* Ensure we played everything. */
+ if(param.smooth && param.usebuffer)
+ {
diff --git a/media-sound/mpg123/files/mpg123-ds-rcc65.patch b/media-sound/mpg123/files/mpg123-ds-rcc65.patch
new file mode 100644
index 0000000..41a4d33
--- /dev/null
+++ b/media-sound/mpg123/files/mpg123-ds-rcc65.patch
@@ -0,0 +1,240 @@
+diff -dPNur mpg123-0.65/configure.ac mpg123-0.65-new/configure.ac
+--- mpg123-0.65/configure.ac 2007-02-07 10:24:33.000000000 +0100
++++ mpg123-0.65-new/configure.ac 2007-04-15 13:36:52.000000000 +0200
+@@ -137,6 +137,21 @@
+ AC_CHECK_LIB([m], [sqrt])
+ AC_CHECK_LIB([mx], [powf])
+
++# LibRCC
++AC_CHECK_LIB(rcc, rccInit,[
++ AC_CHECK_HEADERS(librcc.h,[
++ LIBRCC_LIBS="-lrcc"
++ LIBRCC_INCLUDES="-DHAVE_LIBRCC"
++ ],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])
++AC_SUBST(LIBRCC_LIBS)
++AC_SUBST(LIBRCC_INCLUDES)
++
+ # Check for JACK
+ PKG_CHECK_MODULES(JACK, jack, HAVE_JACK=yes, HAVE_JACK=no)
+
+diff -dPNur mpg123-0.65/src/id3.c mpg123-0.65-new/src/id3.c
+--- mpg123-0.65/src/id3.c 2007-02-07 10:24:33.000000000 +0100
++++ mpg123-0.65-new/src/id3.c 2007-04-15 13:26:06.000000000 +0200
+@@ -6,6 +6,7 @@
+ #include "stringbuf.h"
+ #include "genre.h"
+ #include "id3.h"
++#include "rccpatch.h"
+
+ struct taginfo
+ {
+@@ -499,6 +500,8 @@
+ void print_id3_tag(unsigned char *id3v1buf)
+ {
+ char genre_from_v1 = 0;
++ char *ctitle, *cartist, *calbum, *ccomment;
++
+ if(!(id3.version || id3v1buf)) return;
+ if(id3v1buf != NULL)
+ {
+@@ -688,17 +691,26 @@
+ free_stringbuf(&tmp);
+ }
+
++ if (id3.title.fill) ctitle = rccPatchRecode(id3.title.p);
++ else ctitle = NULL;
++ if (id3.artist.fill) cartist = rccPatchRecode(id3.artist.p);
++ else cartist = NULL;
++ if (id3.album.fill) calbum = rccPatchRecode(id3.album.p);
++ else calbum = NULL;
++ if (id3.comment.fill) ccomment = rccPatchRecode(id3.comment.p);
++ else ccomment = NULL;
++
+ if(param.long_id3)
+ {
+ fprintf(stderr,"\n");
+ /* print id3v2 */
+ /* dammed, I use pointers as bool again! It's so convenient... */
+- fprintf(stderr,"\tTitle: %s\n", id3.title.fill ? id3.title.p : "");
+- fprintf(stderr,"\tArtist: %s\n", id3.artist.fill ? id3.artist.p : "");
+- fprintf(stderr,"\tAlbum: %s\n", id3.album.fill ? id3.album.p : "");
++ fprintf(stderr,"\tTitle: %s\n", ctitle?ctitle:(id3.title.fill ? id3.title.p : ""));
++ fprintf(stderr,"\tArtist: %s\n", cartist?cartist:(id3.artist.fill ? id3.artist.p : ""));
++ fprintf(stderr,"\tAlbum: %s\n", calbum?calbum:(id3.album.fill ? id3.album.p : ""));
+ fprintf(stderr,"\tYear: %s\n", id3.year.fill ? id3.year.p : "");
+ fprintf(stderr,"\tGenre: %s\n", id3.genre.fill ? id3.genre.p : "");
+- fprintf(stderr,"\tComment: %s\n", id3.comment.fill ? id3.comment.p : "");
++ fprintf(stderr,"\tComment: %s\n", ccomment?ccomment:(id3.comment.fill ? id3.comment.p : ""));
+ fprintf(stderr,"\n");
+ }
+ else
+@@ -708,23 +720,23 @@
+ /* one _could_ circumvent the strlen calls... */
+ if(id3.title.fill && id3.artist.fill && strlen(id3.title.p) <= 30 && strlen(id3.title.p) <= 30)
+ {
+- fprintf(stderr,"Title: %-30s Artist: %s\n",id3.title.p,id3.artist.p);
++ fprintf(stderr,"Title: %-30s Artist: %s\n",ctitle?ctitle:id3.title.p,cartist?cartist:id3.artist.p);
+ }
+ else
+ {
+- if(id3.title.fill) fprintf(stderr,"Title: %s\n", id3.title.p);
+- if(id3.artist.fill) fprintf(stderr,"Artist: %s\n", id3.artist.p);
++ if(id3.title.fill) fprintf(stderr,"Title: %s\n", ctitle?ctitle:id3.title.p);
++ if(id3.artist.fill) fprintf(stderr,"Artist: %s\n", cartist?cartist:id3.artist.p);
+ }
+ if (id3.comment.fill && id3.album.fill && strlen(id3.comment.p) <= 30 && strlen(id3.album.p) <= 30)
+ {
+- fprintf(stderr,"Comment: %-30s Album: %s\n",id3.comment.p,id3.album.p);
++ fprintf(stderr,"Comment: %-30s Album: %s\n",ccomment?ccomment:id3.comment.p,calbum?calbum:id3.album.p);
+ }
+ else
+ {
+ if (id3.comment.fill)
+- fprintf(stderr,"Comment: %s\n", id3.comment.p);
++ fprintf(stderr,"Comment: %s\n", ccomment?ccomment:id3.comment.p);
+ if (id3.album.fill)
+- fprintf(stderr,"Album: %s\n", id3.album.p);
++ fprintf(stderr,"Album: %s\n", calbum?calbum:id3.album.p);
+ }
+ if (id3.year.fill && id3.genre.fill && strlen(id3.year.p) <= 30 && strlen(id3.genre.p) <= 30)
+ {
+@@ -738,6 +750,11 @@
+ fprintf(stderr,"Genre: %s\n", id3.genre.p);
+ }
+ }
++
++ if (ctitle) free(ctitle);
++ if (cartist) free(cartist);
++ if (calbum) free(calbum);
++ if (ccomment) free(ccomment);
+ }
+
+ /*
+diff -dPNur mpg123-0.65/src/Makefile.am mpg123-0.65-new/src/Makefile.am
+--- mpg123-0.65/src/Makefile.am 2007-02-07 10:24:33.000000000 +0100
++++ mpg123-0.65-new/src/Makefile.am 2007-04-15 13:38:44.000000000 +0200
+@@ -4,8 +4,8 @@
+ ## see COPYING and AUTHORS files in distribution or http://mpg123.de
+ ## initially written by Nicholas J. Humfrey
+
+-AM_CFLAGS = @AUDIO_CFLAGS@
+-AM_LDFLAGS = @AUDIO_LIBS@
++AM_CFLAGS = @AUDIO_CFLAGS@ @LIBRCC_INCLUDES@
++AM_LDFLAGS = @AUDIO_LIBS@ @LIBRCC_LIBS@
+ mpg123_LDADD = @AUDIO_OBJ@ @CPU_TYPE_LIB@
+ mpg123_DEPENDENCIES = @AUDIO_OBJ@ @CPU_TYPE_LIB@
+
+@@ -14,6 +14,8 @@
+
+ bin_PROGRAMS = mpg123
+ mpg123_SOURCES = \
++ rccpatch.c \
++ rccpatch.h \
+ audio.c \
+ audio.h \
+ buffer.c \
+diff -dPNur mpg123-0.65/src/mpg123.c mpg123-0.65-new/src/mpg123.c
+--- mpg123-0.65/src/mpg123.c 2007-02-07 10:24:33.000000000 +0100
++++ mpg123-0.65-new/src/mpg123.c 2007-04-15 13:30:42.000000000 +0200
+@@ -35,6 +35,7 @@
+ #include "layer3.h"
+ #endif
+ #include "playlist.h"
++#include "rccpatch.h"
+ #include "id3.h"
+ #include "icy.h"
+
+@@ -814,15 +815,18 @@
+
+ if(param.remote) {
+ int ret;
++ rccPatchInit();
+ init_id3();
+ init_icy();
+ ret = control_generic(&fr);
+ clear_icy();
+ exit_id3();
++ rccPatchFree();
+ safe_exit(ret);
+ }
+ #endif
+
++ rccPatchInit();
+ init_icy();
+ init_id3(); /* prepare id3 memory */
+ while ((fname = get_next_file())) {
+@@ -851,7 +855,7 @@
+ }
+ }
+ #endif
+-
++
+ }
+
+ #if !defined(WIN32) && !defined(GENERIC)
+@@ -1031,6 +1035,7 @@
+ } /* end of loop over input files */
+ clear_icy();
+ exit_id3(); /* free id3 memory */
++ rccPatchFree();
+ #ifndef NOXFERMEM
+ if (param.usebuffer) {
+ buffer_end();
+diff -dPNur mpg123-0.65/src/rccpatch.c mpg123-0.65-new/src/rccpatch.c
+--- mpg123-0.65/src/rccpatch.c 1970-01-01 01:00:00.000000000 +0100
++++ mpg123-0.65-new/src/rccpatch.c 2007-04-15 13:13:09.000000000 +0200
+@@ -0,0 +1,40 @@
++#include <librcc.h>
++
++#define ID3_CLASS 0
++#define OUT_CLASS 1
++static rcc_class classes[] = {
++ { "id3", RCC_CLASS_STANDARD, NULL, NULL, "ID3 Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
++ { NULL }
++};
++
++static int rcc_initialized = 0;
++
++void rccPatchFree() {
++ if (rcc_initialized) {
++ rccFree();
++ rcc_initialized = 0;
++ }
++}
++
++void rccPatchInit() {
++ if (rcc_initialized) return;
++ rccInit();
++ rccInitDefaultContext(NULL, 0, 0, classes, 0);
++ rccLoad(NULL, "xmms");
++ rccInitDb4(NULL, NULL, 0);
++ rcc_initialized = 1;
++}
++
++static void rccPatchTryInit() {
++ if (!rcc_initialized) {
++ rccPatchInit();
++ if (rcc_initialized) atexit(rccPatchFree);
++ }
++}
++
++char *rccPatchRecode(const char *str) {
++ char *res;
++ rccPatchTryInit();
++ return rccRecode(NULL, ID3_CLASS, OUT_CLASS, str);
++}
+diff -dPNur mpg123-0.65/src/rccpatch.h mpg123-0.65-new/src/rccpatch.h
+--- mpg123-0.65/src/rccpatch.h 1970-01-01 01:00:00.000000000 +0100
++++ mpg123-0.65-new/src/rccpatch.h 2007-04-15 13:13:09.000000000 +0200
+@@ -0,0 +1,4 @@
++void rccPatchFree();
++void rccPatchInit();
++char *rccPatchRecode(const char *str);
++
diff --git a/media-sound/mpg123/files/mpg123-osx.diff b/media-sound/mpg123/files/mpg123-osx.diff
new file mode 100644
index 0000000..a58fffd
--- /dev/null
+++ b/media-sound/mpg123/files/mpg123-osx.diff
@@ -0,0 +1,394 @@
+diff -Naur mpg123-orig/Makefile mpg123/Makefile
+--- mpg123-orig/Makefile Sun Apr 10 13:35:56 2005
++++ mpg123/Makefile Sun Apr 10 13:40:03 2005
+@@ -54,6 +54,7 @@
+ @echo "make netbsd NetBSD"
+ @echo "make openbsd OpenBSD"
+ @echo "make mint MiNT on Atari"
++ @echo "make macos MacOSX
+ @echo "make generic try this one if your system isn't listed above"
+ @echo ""
+ @echo "Please read the file INSTALL for additional information."
+@@ -149,6 +150,16 @@
+ @echo "Please read the file INSTALL for additional information."
+ @echo ""
+
++macos-help:
++ @echo ""
++ @echo "There are several Mac OS X flavours. Choose one:"
++ @echo ""
++ @echo "make macos"
++ @echo "make macos-esd"
++ @echo ""
++ @echo "Please read the file INSTALL for additional information."
++ @echo ""
++
+ linux-devel:
+ $(MAKE) OBJECTS='decode_i386.o dct64_i386.o audio_oss.o' \
+ LDFLAGS= \
+@@ -759,6 +770,24 @@
+ -DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP -DOSS \
+ -DDONT_CATCH_SIGNALS -DNAS' \
+ mpg123-make
++
++macos:
++ $(MAKE) CC=cc LDFLAGS='$(LDFLAGS)' AUDIO_LIB='-framework CoreAudio' \
++ OBJECTS='decode.o dct64.o audio_macosx.o term.o' \
++ CFLAGS='$(CFLAGS) -DINET6 -DTERM_CONTROL -DMAC_OS_X -Wall -O2 -DPPC_ENDIAN' \
++ mpg123-make
++
++macos-generic:
++ $(MAKE) CC=cc LDFLAGS='$(LDFLAGS)' AUDIO_LIB='-framework CoreAudio' \
++ OBJECTS='decode.o dct64.o audio_macosx.o term.o' \
++ CFLAGS='$(CFLAGS) -DINET6 -DTERM_CONTROL -DMAC_OS_X -Wall -O2 -DPPC_ENDIAN' \
++ mpg123-make
++
++macos-esd:
++ $(MAKE) CC=cc LDFLAGS='$(LDFLAGS)' AUDIO_LIB='-lesd -laudiofile' \
++ OBJECTS='decode.o dct64.o audio_esd.o' \
++ CFLAGS='$(CFLAGS) -O -DDARWIN -Wall -O2 -DPPC_ENDIAN -DUSE_ESD' \
++ mpg123-make
+
+ mint:
+ $(MAKE) LDFLAGS= \
+diff -Naur mpg123-orig/audio_macosx.c mpg123/audio_macosx.c
+--- mpg123-orig/audio_macosx.c Wed Dec 31 19:00:00 1969
++++ mpg123/audio_macosx.c Sun Apr 10 13:47:14 2005
+@@ -0,0 +1,337 @@
++/*- This is a 80 chars line, to have pretty formatted comments ---------------*/
++
++/* audio_macosx.c, originally written by Guillaume Outters
++ * to contact the author, please mail to: guillaume.outters@free.fr
++ *
++ * This file is some quick pre-alpha patch to allow me to have some music for my
++ * long working days, and it does it well. But it surely isn't a final version;
++ * as Mac OS X requires at least a G3, I'm not sure it will be useful to
++ * implement downsampling.
++ *
++ * Mac OS X audio works by asking you to fill its buffer, and, to complicate a
++ * bit, you must provide it with floats. In order not to patch too much mpg123,
++ * we'll accept signed short (mpg123 "approved" format) and transform them into
++ * floats as soon as received. Let's say this way calculations are faster.
++ *
++ * As we don't have some /dev/audio device with blocking write, we'll have to
++ * stop mpg123 before it does too much work, while we are waiting our dump proc
++ * to be called. I wanted to use semaphores, but they still need an
++ * implementation from Apple before I can do anything. So we'll block using a
++ * sleep and wake up on SIGUSR2.
++ * Version 0.2: now I use named semaphores (which are implemented AND work).
++ * Preprocessor flag MOSX_USES_SEM (defined at the beginning of this file)
++ * enables this behaviour.
++ *
++ * In order always to have a ready buffer to be dumped when the routine gets
++ * called, we have a "buffer loop" of NUMBER_BUFFERS buffers. mpg123 fills it
++ * on one extremity ('to'), playProc reads it on another point ('from'). 'to'
++ * blocks when it arrives on 'from' (having filled the whole circle of buffers)
++ * and 'from' blocks when no data is available. As soon as it has emptied a
++ * buffer, if mpg123 is sleeping, it awakes it quite brutaly (SIGUSR2) to tell
++ * it to fill the buffer. */
++
++#ifndef MOSX_USES_SEM
++#define MOSX_USES_SEM 1 /* Semaphores or sleep()/kill()? I would say semaphores, but this is just my advice, after all */
++#endif
++#ifndef MOSX_SEM_V2
++#define MOSX_SEM_V2 1
++#endif
++
++#include "mpg123.h"
++#include <CoreAudio/AudioHardware.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <errno.h>
++#if MOSX_USES_SEM
++#include <semaphore.h>
++#endif
++
++struct aBuffer
++{
++ float * buffer;
++ long size;
++
++ float * ptr; /* Where in the buffer are we? */
++ long remaining;
++
++ struct aBuffer * next;
++};
++typedef struct aBuffer aBuffer;
++
++struct anEnv
++{
++ long size;
++ short * debut;
++ short * ptr;
++ AudioDeviceID device;
++ char play;
++
++ /* Intermediate buffers */
++
++ #if MOSX_USES_SEM
++ sem_t * semaphore;
++ #else
++ char wait; /* mpg123 is waiting (due to the semaphore) to show the world its power; let's free him! */
++ pid_t pid;
++ #endif
++ aBuffer * from; /* Current buffers */
++ aBuffer * to;
++};
++
++static struct anEnv env;
++
++#define ENV ((struct anEnv *)inClientData)
++#define NUMBER_BUFFERS 16 /* Tried with 3 buffers, but then any little window move is sufficient to stop the sound. Here we have 1.5 seconds music buffered */
++
++void destroyBuffers()
++{
++ aBuffer * ptr;
++ aBuffer * ptr2;
++
++ ptr = env.to->next;
++ env.to->next = NULL;
++ while(ptr)
++ {
++ ptr2 = ptr->next;
++ if(ptr->buffer) free(ptr->buffer);
++ free(ptr);
++ ptr = ptr2;
++ }
++}
++
++void initBuffers()
++{
++ long m;
++ aBuffer ** ptrptr;
++
++ ptrptr = &env.to;
++ for(m = 0; m < NUMBER_BUFFERS; m++)
++ {
++ *ptrptr = malloc(sizeof(aBuffer));
++ (*ptrptr)->size = 0;
++ (*ptrptr)->remaining = 0;
++ (*ptrptr)->buffer = NULL;
++ ptrptr = &(*ptrptr)->next;
++ #if MOSX_USES_SEM
++ sem_post(env.semaphore); /* This buffer is ready for filling (of course, it is empty!) */
++ #endif
++ }
++ *ptrptr = env.from = env.to;
++}
++
++int fillBuffer(aBuffer * b, short * source, long size)
++{
++ float * dest;
++
++ if(b->remaining) /* Non empty buffer, must still be playing */
++ return(-1);
++ if(b->size != size) /* Hey! What's that? Coudn't this buffer size be fixed once (well, perhaps we just didn't allocate it yet) */
++ {
++ if(b->buffer) free(b->buffer);
++ b->buffer = malloc(size * sizeof(float));
++ b->size = size;
++ }
++
++ dest = b->buffer;
++ while(size--)
++ //*dest++ = ((*source++) + 32768) / 65536.0;
++ *dest++ = (*source++) / 32768.0;
++
++ b->ptr = b->buffer;
++ b->remaining = b->size; /* Do this at last; we shouldn't show the buffer is full before it is effectively */
++
++ #ifdef DEBUG_MOSX
++ printf("."); fflush(stdout);
++ #endif
++
++ return(0);
++}
++
++OSStatus playProc(AudioDeviceID inDevice, const AudioTimeStamp * inNow, const AudioBufferList * inInputData, const AudioTimeStamp * inInputTime, AudioBufferList * outOutputData, const AudioTimeStamp * inOutputTime, void * inClientData)
++{
++ long m, n, o;
++ float * dest;
++
++ for(o = 0; o < outOutputData->mNumberBuffers; o++)
++ {
++ m = outOutputData->mBuffers[o].mDataByteSize / sizeof(float); /* What we have to fill */
++ dest = outOutputData->mBuffers[o].mData;
++
++ while(m > 0)
++ {
++ if( (n = ENV->from->remaining) <= 0 ) /* No more bytes in the current read buffer! */
++ {
++ while( (n = ENV->from->remaining) <= 0)
++ usleep(2000); /* Let's wait a bit for the results... */
++ }
++
++ /* We dump what we can */
++
++ if(n > m) n = m; /* In fact, just the necessary should be sufficient (I think) */
++
++ memcpy(dest, ENV->from->ptr, n * sizeof(float));
++
++ /* Let's remember all done work */
++
++ m -= n;
++ ENV->from->ptr += n;
++ if( (ENV->from->remaining -= n) <= 0) /* ... and tell mpg123 there's a buffer to fill */
++ {
++ #if MOSX_USES_SEM
++ sem_post(ENV->semaphore);
++ #else
++ if(ENV->wait)
++ {
++ kill(ENV->pid, SIGUSR2);
++ ENV->wait = 0;
++ }
++ #endif
++ ENV->from = ENV->from->next;
++ }
++ }
++ }
++
++ return (0);
++}
++
++#if ! MOSX_USES_SEM
++void start(int n)
++{
++ signal(SIGUSR2, start);
++}
++#endif
++
++int audio_open(struct audio_info_struct *ai)
++{
++ long size;
++ AudioStreamBasicDescription format;
++ #if MOSX_USES_SEM
++ char s[10];
++ long m;
++ #endif
++ /*float vol;
++ OSStatus e;*/
++
++ /* Where did that default audio output go? */
++
++ size = sizeof(env.device);
++ if(AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, &size, &env.device)) return(-1);
++
++ /* Hmmm, let's choose PCM format */
++
++ size = sizeof(format);
++ if(AudioDeviceGetProperty(env.device, 0, 0, kAudioDevicePropertyStreamFormat, &size, &format)) return(-1);
++ if(format.mFormatID != kAudioFormatLinearPCM) return(-1);
++
++ /* Let's test volume, which doesn't seem to work (but this is only an alpha, remember?) */
++
++ /*vol = 0.5;
++ size = sizeof(vol);
++ if(e = AudioDeviceSetProperty(env.device, NULL, 0, 0, 'volm', size, &vol)) { printf("Didn't your mother ever tell you not to hear music so loudly?\n"); return(-1); } */
++
++ /* Let's init our environment */
++
++ env.size = 0;
++ env.debut = NULL;
++ env.ptr = NULL;
++ env.play = 0;
++
++ #if MOSX_USES_SEM
++ strcpy(s, "/mpg123-0000");
++ do
++ {
++ for(m = 10;; m--)
++ if( (s[m]++) <= '9')
++ break;
++ else
++ s[m] = '0';
++ } while( (env.semaphore = sem_open(s, O_CREAT | O_EXCL, 0644, 0)) == (sem_t *)SEM_FAILED);
++ #else
++ env.pid = getpid();
++ env.wait = 0;
++ signal(SIGUSR2, start);
++ #endif
++
++ initBuffers();
++
++ /* And prepare audio launching */
++
++ if(AudioDeviceAddIOProc(env.device, playProc, &env)) return(-1);
++
++ return(0);
++}
++
++int audio_reset_parameters(struct audio_info_struct *ai)
++{
++ return 0;
++}
++
++int audio_rate_best_match(struct audio_info_struct *ai)
++{
++ return 0;
++}
++
++int audio_set_rate(struct audio_info_struct *ai)
++{
++ return 0;
++}
++
++int audio_set_channels(struct audio_info_struct *ai)
++{
++ return 0;
++}
++
++int audio_set_format(struct audio_info_struct *ai)
++{
++ return 0;
++}
++
++int audio_get_formats(struct audio_info_struct *ai)
++{
++ return AUDIO_FORMAT_SIGNED_16;
++}
++
++int audio_play_samples(struct audio_info_struct *ai,unsigned char *buf,int len)
++{
++ /* We have to calm down mpg123, else he wouldn't hesitate to drop us another buffer (which would be the same, in fact) */
++
++ #if MOSX_USES_SEM && MOSX_SEM_V2 /* Suddenly, I have some kind of doubt: HOW COULD IT WORK??? */
++ while(sem_wait(env.semaphore)){} /* We just have to wait a buffer fill request */
++ fillBuffer(env.to, (short *)buf, len / sizeof(short));
++ #else
++ while(fillBuffer(env.to, (short *)buf, len / sizeof(short)) < 0) /* While the next buffer to write is not empty, we wait a bit... */
++ {
++ #ifdef DEBUG_MOSX
++ printf("|"); fflush(stdout);
++ #endif
++ #if MOSX_USES_SEM
++ sem_wait(env.semaphore); /* This is a bug. I should wait for the semaphore once per empty buffer (and not each time fillBuffers() returns -1). See MOSX_SEM_V2; this was a too quickly modified part when I implemented MOSX_USES_SEM. */
++ #else
++ env.wait = 1;
++ sleep(3600); /* This should be sufficient, shouldn't it? */
++ #endif
++ }
++ #endif
++ env.to = env.to->next;
++
++ /* And we lauch action if not already done */
++
++ if(!env.play)
++ {
++ if(AudioDeviceStart(env.device, playProc)) return(-1);
++ env.play = 1;
++ }
++
++ return len;
++}
++
++int audio_close(struct audio_info_struct *ai)
++{
++ AudioDeviceStop(env.device, playProc); /* No matter the error code, we want to close it (by brute force if necessary) */
++ AudioDeviceRemoveIOProc(env.device, playProc);
++ destroyBuffers();
++ #if MOSX_USES_SEM
++ sem_close(env.semaphore);
++ #endif
++ return 0;
++}
diff --git a/media-sound/mpg123/mpg123-0.59s-r11.ebuild b/media-sound/mpg123/mpg123-0.59s-r11.ebuild
new file mode 100644
index 0000000..2f2297c
--- /dev/null
+++ b/media-sound/mpg123/mpg123-0.59s-r11.ebuild
@@ -0,0 +1,143 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/mpg123/mpg123-0.59s-r9.ebuild,v 1.9 2005/06/27 03:27:55 j4rg0n Exp $
+
+inherit eutils
+
+PATCH_VER=1.5
+S="${WORKDIR}/${PN}"
+
+DESCRIPTION="Real Time mp3 player"
+HOMEPAGE="http://www.mpg123.de/"
+SRC_URI="http://www.mpg123.de/mpg123/${PN}-pre${PV}.tar.gz
+ http://dev.gentoo.org/~eradicator/${PN}/${P}-gentoo-${PATCH_VER}.tar.bz2"
+
+LICENSE="as-is"
+SLOT="0"
+KEYWORDS="alpha amd64 hppa ia64 mips ppc ppc-macos ppc64 sparc x86"
+IUSE="mmx 3dnow esd nas oss rcc"
+
+RDEPEND="virtual/libc
+ esd? ( media-sound/esound )
+ nas? ( media-libs/nas )
+ rcc? ( app-i18n/librcc )"
+
+# alsa-1 b0rks and it's not a simple fix
+# alsa? ( media-libs/alsa-lib )"
+
+DEPEND="${RDEPEND}
+ >=sys-apps/sed-4"
+
+PROVIDE="virtual/mpg123"
+
+PATCHDIR="${WORKDIR}/patches"
+
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+
+ EPATCH_SUFFIX="patch"
+ epatch ${PATCHDIR}
+
+ if use ppc-macos;
+ then
+ einfo "Patching for OSX build"
+ epatch ${FILESDIR}/${PN}-osx.diff
+ fi
+
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-rcc.patch || die )
+ aclocal
+ automake
+ autoconf
+
+ sed -i "s:${PV}-mh4:${PVR}:" version.h
+}
+
+src_compile() {
+ mkdir gentoo-bin
+
+ # The last one in $styles is the default
+ local styles
+
+ use nas && styles="${styles} -nas"
+ use oss && styles="${styles} -generic"
+ atype="linux"
+
+ case $ARCH in
+ ppc64)
+ use esd && styles="${styles} -ppc64-esd"
+ use oss && styles="${styles} -ppc64"
+
+ [ -z "${styles}" ] && styles="-ppc64"
+ ;;
+ ppc)
+ if use ppc-macos; then
+ [ -z "${styles}" ] && styles="macos"
+ atype=""
+ else
+ use esd && styles="${styles} -ppc-esd"
+ use oss && styles="${styles} -ppc"
+
+ [ -z "${styles}" ] && styles="-ppc"
+ fi
+ ;;
+ x86)
+ use esd && styles="${styles} -esd"
+ use esd && use 3dnow && styles="${styles} -3dnow-esd"
+ use oss && styles="${styles} -i486"
+ use oss && use mmx && styles="${styles} -mmx"
+ use oss && use 3dnow && styles="${styles} -3dnow"
+ # use alsa && styles="${styles} -alsa"
+ # use alsa && use 3dnow && styles="${styles} -3dnow-alsa"
+
+ [ -z "${styles}" ] && styles="-generic"
+ ;;
+ sparc*)
+ use esd && styles="${styles} -sparc-esd"
+ styles="${styles} -sparc -generic"
+ ;;
+ amd64)
+ use esd && styles="${styles} -x86_64-esd"
+ use oss && styles="${styles} -x86_64"
+ # use alsa && styles="${styles} -x86_64-alsa"
+
+ [ -z "${styles}" ] && styles="-x86_64"
+ ;;
+ alpha)
+ use esd && styles="${styles} -alpha-esd"
+ use oss && styles="${styles} -alpha"
+ # use alsa && styles="${styles} -alpha-alsa"
+
+ [ -z "${styles}" ] && styles="-generic"
+ ;;
+ mips|hppa|ia64)
+ # use alsa && styles="${styles} -mips-alsa"
+
+ [ -z "${styles}" ] && styles="-generic"
+ ;;
+ *)
+ eerror "No support has been added for your architecture."
+ exit 1
+ ;;
+ esac
+
+ for style in ${styles};
+ do
+ make clean ${atype}${style} CFLAGS="${CFLAGS}" || die
+ mv mpg123 gentoo-bin/mpg123${style}
+ [ -L "gentoo-bin/mpg123" ] && rm gentoo-bin/mpg123
+ ln -s mpg123${style} gentoo-bin/mpg123
+ done
+}
+
+src_install() {
+ dodir /usr
+ if use ppc-macos; then
+ cp -R gentoo-bin ${D}/usr/bin
+ else
+ cp -dR gentoo-bin ${D}/usr/bin
+ fi
+ doman mpg123.1
+ dodoc BENCHMARKING BUGS CHANGES COPYING JUKEBOX README* TODO
+}
diff --git a/media-sound/mpg123/mpg123-0.65-r1.ebuild b/media-sound/mpg123/mpg123-0.65-r1.ebuild
new file mode 100644
index 0000000..c19c1dd
--- /dev/null
+++ b/media-sound/mpg123/mpg123-0.65-r1.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/mpg123/mpg123-0.65.ebuild,v 1.2 2007/03/02 12:47:10 genstef Exp $
+
+inherit eutils
+
+DESCRIPTION="Real Time mp3 player"
+HOMEPAGE="http://www.mpg123.de/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+
+KEYWORDS="~alpha amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86"
+#SDS
+IUSE="mmx 3dnow alsa oss sdl esd nas jack portaudio rcc"
+
+RDEPEND="alsa? ( media-libs/alsa-lib )
+ sdl? ( !alsa? ( !oss? ( media-libs/libsdl ) ) )
+ esd? ( !alsa? ( !oss? ( !sdl? ( media-sound/esound ) ) ) )
+ nas? ( !alsa? ( !oss? ( !sdl? ( !esd? ( media-libs/nas ) ) ) ) )
+ jack? ( !alsa? ( !oss? ( !sdl? ( !esd? ( !nas? ( media-sound/jack-audio-connection-kit ) ) ) ) ) )
+ portaudio? ( !alsa? ( !oss? ( !sdl? ( !esd? ( !nas? ( !jack? ( media-libs/portaudio ) ) ) ) ) ) )
+ rcc? ( app-i18n/librcc )
+"
+#EDS
+
+DEPEND="${RDEPEND}"
+
+PROVIDE="virtual/mpg123"
+
+#SDS
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-rcc65.patch || die )
+ aclocal
+ automake
+ autoconf
+}
+#EDS
+
+src_compile() {
+ local audiodev
+ if use alsa; then
+ audiodev="alsa"
+ elif use oss; then
+ audiodev="oss"
+ elif use sdl; then
+ audiodev="sdl"
+ elif use esd; then
+ audiodev="esd"
+ elif use nas; then
+ audiodev="nas"
+ elif use jack; then
+ audiodev="jack"
+ elif use portaudio; then
+ audiodev="portaudio"
+ elif use ppc-macos; then
+ audiodev="macosx";
+ else audiodev="dummy"
+ fi
+
+ if use 3dnow; then
+ myconf="--with-cpu=3dnow"
+ elif use mmx; then
+ myconf="--with-cpu=mmx"
+ fi
+
+ einfo "Compiling with ${audiodev} audio output."
+ einfo "If that is not what you want, then select exactly ONE"
+ einfo "of the following USE flags:"
+ einfo "alsa oss sdl esd nas jack portaudio"
+ einfo "and recompile ${PN}."
+ epause 5
+
+ econf \
+ --with-optimization=0 \
+ --with-audio=$audiodev \
+ ${myconf} || die "econf failed"
+
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+}
diff --git a/media-sound/mpg123/mpg123-1.12.2-r2.ebuild b/media-sound/mpg123/mpg123-1.12.2-r2.ebuild
new file mode 100644
index 0000000..284dcdc
--- /dev/null
+++ b/media-sound/mpg123/mpg123-1.12.2-r2.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/mpg123/mpg123-1.12.2.ebuild,v 1.1 2010/06/21 11:25:41 chainsaw Exp $
+
+EAPI=2
+#SDS
+inherit toolchain-funcs eutils
+#EDS
+
+DESCRIPTION="a realtime MPEG 1.0/2.0/2.5 audio player for layers 1, 2 and 3"
+HOMEPAGE="http://www.mpg123.org/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2
+ http://www.mpg123.org/download/${P}.tar.bz2"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd"
+#SDS
+IUSE="3dnow 3dnowext alsa altivec ipv6 jack mmx nas oss portaudio pulseaudio sdl sse rcc"
+
+RDEPEND="alsa? ( media-libs/alsa-lib )
+ jack? ( media-sound/jack-audio-connection-kit )
+ nas? ( media-libs/nas )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-sound/pulseaudio )
+ sdl? ( media-libs/libsdl )
+ sys-devel/libtool
+ rcc? ( app-i18n/librcc )"
+#EDS
+
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+#SDS
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-rcc1121.patch || die )
+ rm -f Makefile.in aclocal.m4
+ libtoolize --copy --force
+ aclocal
+ automake
+ autoconf
+}
+#EDS
+
+src_configure() {
+ local _audio=dummy
+ local _output=dummy
+ local _cpu=generic_fpu
+
+ for flag in nas portaudio sdl oss jack alsa pulseaudio; do
+ if use ${flag}; then
+ _audio="${_audio} ${flag/pulseaudio/pulse}"
+ _output=${flag/pulseaudio/pulse}
+ fi
+ done
+
+ use altivec && _cpu=altivec
+
+ if [[ $(tc-arch) == amd64 ]]; then
+ use sse && _cpu=x86-64
+ else
+ use mmx && _cpu=mmx
+ use 3dnow && _cpu=3dnow
+ use sse && _cpu=x86
+ use 3dnowext && _cpu=x86
+ fi
+
+ econf \
+ --disable-dependency-tracking \
+ --with-optimization=0 \
+ --with-audio="${_audio}" \
+ --with-default-audio=${_output} \
+ --with-cpu=${_cpu} \
+ --enable-network \
+ $(use_enable ipv6)
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+ dodoc AUTHORS ChangeLog NEWS* README
+}
diff --git a/media-sound/mpg123/mpg123-1.7.3-r1.ebuild b/media-sound/mpg123/mpg123-1.7.3-r1.ebuild
new file mode 100644
index 0000000..e85df9f
--- /dev/null
+++ b/media-sound/mpg123/mpg123-1.7.3-r1.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/mpg123/mpg123-1.7.3.ebuild,v 1.10 2009/06/09 18:53:40 armin76 Exp $
+
+EAPI=2
+
+#SDS
+inherit eutils
+#EDS
+
+DESCRIPTION="a realtime MPEG 1.0/2.0/2.5 audio player for layers 1, 2 and 3."
+HOMEPAGE="http://www.mpg123.org"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-fbsd"
+
+#SDS
+IUSE="3dnow 3dnowext alsa altivec ipv6 jack mmx nas +network oss portaudio pulseaudio sdl sse rcc"
+
+RDEPEND="alsa? ( media-libs/alsa-lib )
+ jack? ( media-sound/jack-audio-connection-kit )
+ nas? ( media-libs/nas )
+ portaudio? ( media-libs/portaudio )
+ pulseaudio? ( media-sound/pulseaudio )
+ sdl? ( media-libs/libsdl )
+ rcc? ( app-i18n/librcc )"
+#EDS
+
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig"
+
+#SDS
+src_unpack() {
+ unpack ${A}
+
+ cd ${S}
+
+ use rcc && ( epatch ${FILESDIR}/${PN}-ds-rcc173.patch || die )
+ aclocal
+ automake
+ autoconf
+}
+#EDS
+
+src_prepare() {
+ sed -i -e 's:-faltivec::' configure || die "sed failed"
+}
+
+src_configure() {
+ local myaudio
+
+ use alsa && myaudio="${myaudio} alsa"
+ use jack && myaudio="${myaudio} jack"
+ use nas && myaudio="${myaudio} nas"
+ use oss && myaudio="${myaudio} oss"
+ use portaudio && myaudio="${myaudio} portaudio"
+ use pulseaudio && myaudio="${myaudio} pulse"
+ use sdl && myaudio="${myaudio} sdl"
+
+ local mycpu
+
+ if use altivec; then
+ mycpu="--with-cpu=altivec"
+ elif use 3dnowext; then
+ mycpu="--with-cpu=3dnowext"
+ elif use 3dnow; then
+ mycpu="--with-cpu=3dnow"
+ elif use sse; then
+ mycpu="--with-cpu=sse"
+ elif use mmx; then
+ mycpu="--with-cpu=mmx"
+ fi
+
+ econf \
+ --disable-dependency-tracking \
+ --with-optimization=0 ${mycpu} \
+ --with-audio="${myaudio}" \
+ $(use_enable network) \
+ $(use_enable ipv6)
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "emake install failed"
+ dodoc AUTHORS ChangeLog NEWS* README
+}
diff --git a/media-sound/xmms/Manifest b/media-sound/xmms/Manifest
new file mode 100644
index 0000000..2f3db2b
--- /dev/null
+++ b/media-sound/xmms/Manifest
@@ -0,0 +1,18 @@
+AUX xmms-1.2.10-gcc41.patch 312 SHA256 957f9680476e6d37e115de164951e80ed8f2f3de2adaf048cb19962908f911de SHA512 b629eab9848443668369e645f6a375e9fe7c63a4b1e97a0cc33998855bd17eccb5c7e9fcb1d12a2e512044d5c8635236a7bb1bcd6a72e335694c702441d6ee0e WHIRLPOOL 70c426e2fe333e5260a1177e8fd7423b43996c883f86569d0a08ef028782a30da0473a46722f242edff1e8fa9ded848d7f86dd2aa37bf17a139e9cc8dbcb5d74
+AUX xmms-1.2.10-locale_fix.patch 377 SHA256 a19abd607515ad70429ab57ca1ac67afdfec9205617afcdd233585224b68c79f SHA512 5f8e85fee08fe59757a7141c454b2c2c5795760a5313a148aa0a518ab136e861e7c12a89a127e488904b97cba767b73303d1b58ee35db94706547109c2971039 WHIRLPOOL 8be2815a6b3ef0176a6238f0cc88bfe0ad1215c9e25a75c97d61196c240f03337837aa2a695330079ecf9c09aa39fd54e8ff1c9fc8032e61dfad347d763fa5bf
+AUX xmms-ds-gentoofix.patch 1103 SHA256 52c1b407f12624afc9d69885c7decf24a6cd41434ddaad6886a808c27c0fd97c SHA512 d734cd28a15a1dcfc58e1c19b3b4e474db0e13e99253d2a93c265c552419b445ec653d2a16742e734e3c3c42469c7e4c5de6f24c2056c66839744c8833ee3ae5 WHIRLPOOL d4719d2dd9a1e04cdf618f527664cb8056e29805fcd6ab5935d96e1f94d4a750921433bac56e81679840a264bcebcd48fe6c1aee40f4c717a225ba8dfdaa111c
+DIST RusXMMS2-csa35.tar.bz2 128165 SHA256 3bb63e9ce6fd2bca289ebfbde13c7dd3c0b0ca734e676b647acac1ef293312b4 SHA512 0358ad80bf6ea8f6763c5cb8abf0879acd13863845acbb7738b617e88376b239cc76cf398d214cb44b8af346b2cde07f4447d2b6c07d37a821dc41de326a0edc WHIRLPOOL bde9d2cc33e36e03ad50f763282a199c5b6170127e1b0225b30be01a509cbf339f170547b9c4b60666b80be4365f0b348ae0e8e8ff45e32be7481e295acd7754
+DIST RusXMMS2-csa41.tar.bz2 96642 SHA256 e64df1956502e48c09ca60262efb7f1953a76d82a70c801e4797ca81e130e8d0 SHA512 8c589a6f6907b66bdd24ce7b61e1c7a2e4ccf025db325854320483246d44f90d0f0339c3fc96668a5da91e475b6770e419d6a1ffe51021f279fadcadc5dd1cfd WHIRLPOOL baa5ea277c0d5f02741ef3cd9cc5d7e674bd899556b296e386b216df5b247856ba899a16058e34c4921e552f421f8c5eeae0ede4b2a3ad95176064844a8f7358
+DIST RusXMMS2-csa43.tar.bz2 104507 SHA256 b2c0ac09a481b2d77c6e4750a19497f550d93eb961839df3db5ce5da714e6caf SHA512 80a8aea5cb587889c8569f633ba44e8b7d5586ac5dfd296c7ef23162739278d38c1cce2e7b7868f0a3cd2601444e99d11c80afcf9712867b7f9ce3ffb173380b WHIRLPOOL 45c9d119264b999cf54157b97347ca8d350b0caa3f3c6cc54718bc848ae732a0f0d317ada03fc8ca3001166e5723906ba6edc607ed3b6d3a85fcea0b8d2f9b33
+DIST gentoo_ice-xmms-0.2.tar.bz2 51839 SHA256 d1be63368b76f4a8b1d5b0e955cd7a77177f56a7f0b828c6603d8fd2836422b1 SHA512 e863a8f86073007c47ce8c20739aae4bff22e22a7ddc11556b12ae6ebb68654cec7310fdc9d05f2c47f81cf2591fe601b2eb12a2fd911c0a6118c9f3cc524f05 WHIRLPOOL b7a4409629a860021477f34f8886c40c005ea2ec34373d80e6a696323866e54f361e38c76b1ac536775ae5912308f11416e613dec791f21473f01a2fad35bcfd
+DIST gnomexmms.xpm 7979 SHA256 6cb7f07ffe47d51bf4483a57812b7c8cb7e35ca5be9d8f0c33512646097f1a71 SHA512 130f437b6b4eb1a717e79674ad84d753fa44ebb3a8bb65881c721851662dea74ba522d40c62fd4eb2b52b83237c2cef1682a62904f7c575e028283242a50e200 WHIRLPOOL c4f99a00324e6796b73f84a1546c27ac948fe4316b8c8bf0f5b0c655513d83796f1eff3b40559942d71a06358cf94b443b3ea5e598d35ba2653fd17dd08ab9c4
+DIST xmms-1.2.10-gentoo-m4-1.1.tar.bz2 26978 SHA256 e253fb2a515d3c7881617172f14fccad6a42cea660b8eaaeef9657114288e46f SHA512 d44d5a00e56a6eeab08ab60d438d156c36ab33bda0192d2d3e2316a791c10f55b9d50f0d9474b492f8dc9b055c7791260ad12b11ad6ca80fbc480ae44380f974 WHIRLPOOL 4c4b2df45ce445740ad7289a62b414fb51e6660d606f061a008665a8d0287761f1db7f05556e33e65da46dd3cb407ad3b7c2536c9c505acc9141eaed3b1d1a77
+DIST xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 545931 SHA256 b9a8633fe22af156ca1af65ac35d369242ce8016619d87647ba8389b8d52ba96 SHA512 4407f46216450aae5f92a4e39ef529c17da6281777536273f18e08c56c8b17ba8d85c5e86f2aa0ef5d1aa1561b57ed1817a821bbc325b6fdc29b889881b101e1 WHIRLPOOL 198a99bb090f8c3ee9ca87b0663a6add063ddc3ce333c879d0e928ccfd2aa0d338a2e7ce1419439b75ef5b7ba6727ac36067cc3101683ab50c589c82797d1455
+DIST xmms-1.2.10.tar.bz2 2418265 SHA256 ff9eabae2074043294a19ec7beaf0959bd076f6cd60558264faeec08f4a0eb6a SHA512 19f1daf2e76e4884acb5b70cf72dd6754376b398ff4bf5a52a4f1585cdb8c83514fabf6fef8855c35251b917806491330ea84b9d750c4e469e4b7b346d9b1129 WHIRLPOOL 6a4d98fb53c44aef2d3a6baadf6a38fe1d189a6978e7310fcbd1cf604b366346f366f99d390be7afe2368370a01e8db4e0196dfc9a187e82ee8a7a7b8be774bb
+DIST xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 16946 SHA256 fdfec6f54b65a8a17d4f6342cadc8c9b1f503f1d0672761c1bab963da6a86a91 SHA512 af6ba4a9a9cbde31e7c514f7f436411e5503f007b94b7313589d41c917d734595577416d60f3dcc5d91ccb9005ddde920dc1de04c346afef656e82953c4cb52f WHIRLPOOL ea65b53d969909a9c45a689204168837fdcc1dca4d68f7c2ac10029bb6edabce05eabbceb8373b4ba62026a7bae81cbdee3c27627dbb251478c4dd5274145bd7
+DIST xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 16739 SHA256 9aebef51507f49b25f771ed380c652950a1f04e9105fb7029ef3a1889ea19abd SHA512 2f9ae356197d23a5566fe436d616c27e1097e66630f4c2bba3fa28f7c1054b6ac17497a078a048383036df37bd60b3baa1be4d9e156a304cf53bfa7724972a2f WHIRLPOOL 0059af320fcfec62a65727023cb705f93a7bc6145c9373edb8723876c74245bf0bb796a6d58e3243c153315f52a911c1d9b09b1a4baa533971ba62a8974d3d82
+DIST xmms-1.2.11.tar.bz2 2581032 SHA256 7ec15c56632b6c82e61ccddeaefd372359af2f005708a58cdf3951c574b20390 SHA512 cc813f5e060b890aabc9d73f427daa94c474e2858390d336eba1d48bd082aeb295ce508d08d01067fe6341d0888af0dc6de185c54d0d2ee8519c915d7b849b94 WHIRLPOOL 58107054683e8cde21edfb9f1152fa35d21812999a179ad70326e2e87b60c8f64144d96e9be6ea5602a1b570ba40a18082b9ac8fd92422879abcf2df95dd1665
+EBUILD xmms-1.2.10-r24.ebuild 5165 SHA256 eaec93099b4084bc9183ccadf97a14ea30016438dd6aeb5c564d93ad4506c52d SHA512 6815569a6a6f3717e2f7ade38fa4b442f27b6a34512b2fe2a656971d6a96948a2bc5b305cfc4789cecb39dae41cd3206cf11412c519a2a4710354ef63a36ced4 WHIRLPOOL e19565aacc427775ab2ac4d795a143e9ec9e82e684d95a03ce3451caa2b3fc46ebd1907f89a7265fd98d97f007cb62625976755699ecb1f13bab17f73b1b504a
+EBUILD xmms-1.2.11-r2.ebuild 4951 SHA256 07ee239d32d1aabcdae7e25ef7b42cfa62915c42182908a1bac7c92eb28b0479 SHA512 85a3ae6b0d9d42ccf8cc25a39c8e6aa3f7b1b301d539d1418bd797e708b69740caa42ae4fa30ef0b2c6a544dd5ea93a6bdc4825c029b8ec396c2e59b47120d1d WHIRLPOOL 1e12c7a9d8bd79e3e085e52a1aada3ff73f5392d796328bc7b499b9ab38348c4d05c0c123acd6a84059f149937367a46c59ed28b68057497a8f4e9ce4b2b9bea
+EBUILD xmms-1.2.11-r3.ebuild 4913 SHA256 f7dfaab8631b1320e453b3bb35250e3c21c4b3cf9c814508ac909a6f8c65009d SHA512 ec1d6de3bee9306f136acad41bbaf228554461e9a151129d9d2800780143e908cb8da7905e809d5549e901c7ad7317cd15c77ae1f91bbe3e718ddbe85b9c3d9e WHIRLPOOL bb40479b96a586966d9b8fec30292964cf97152094dc528ca8422869e65d9839be2ceaf554edcd2e0a1cc13e43657afa3dfcbfac8ffc0b237019ece588789aca
+EBUILD xmms-1.2.11.ebuild 4949 SHA256 c0b66b7f8e1dcf9b818806f5b88c3fd4f41aa28fcedff3ce1e8c210ab57578ac SHA512 31eaafde1d15671917c7641478e9cbed2ffb97ef2346221c9215150589db648b97b7e308162f079ba0ef3816653fbe8203a75f6bd6700dc2c10f8f6818e5d870 WHIRLPOOL ae76d3b3e3f8bfe7651b2a8f159b6cf8847ab6770c3a0b90c4144e8dad90b4875fc086ba1f42e72d5848867a172f28c12a6bf9d96401f6f6ea0dc6d414f5ff6a
diff --git a/media-sound/xmms/files/xmms-1.2.10-gcc41.patch b/media-sound/xmms/files/xmms-1.2.10-gcc41.patch
new file mode 100644
index 0000000..0041851
--- /dev/null
+++ b/media-sound/xmms/files/xmms-1.2.10-gcc41.patch
@@ -0,0 +1,10 @@
+--- xmms-1.2.10.orig/Output/esd/esdout.h 2005-11-22 19:53:38.000000000 +0600
++++ xmms-1.2.10/Output/esd/esdout.h 2005-11-22 19:56:04.197329014 +0600
+@@ -58,6 +58,7 @@
+ ESDConfig;
+
+ extern ESDConfig esd_cfg;
++extern void esdout_reset_playerid(void);
+
+ void esdout_init(void);
+ void esdout_about(void);
diff --git a/media-sound/xmms/files/xmms-1.2.10-locale_fix.patch b/media-sound/xmms/files/xmms-1.2.10-locale_fix.patch
new file mode 100644
index 0000000..cfb1cd1
--- /dev/null
+++ b/media-sound/xmms/files/xmms-1.2.10-locale_fix.patch
@@ -0,0 +1,11 @@
+diff -ruN xmms-1.2.10.orig/xmms/playlist.c xmms-1.2.10/xmms/playlist.c
+--- xmms-1.2.10.orig/xmms/playlist.c 2005-11-25 05:14:47.000000000 +0600
++++ xmms-1.2.10/xmms/playlist.c 2005-11-25 05:18:59.894581237 +0600
+@@ -23,6 +23,7 @@
+ #include "libxmms/rcc.h"
+ #include <sys/stat.h>
+ #include <unistd.h>
++#include <locale.h>
+
+ GList *playlist = NULL;
+ GList *shuffle_list = NULL;
diff --git a/media-sound/xmms/files/xmms-ds-gentoofix.patch b/media-sound/xmms/files/xmms-ds-gentoofix.patch
new file mode 100644
index 0000000..7a1ee35
--- /dev/null
+++ b/media-sound/xmms/files/xmms-ds-gentoofix.patch
@@ -0,0 +1,36 @@
+diff -dPNur xmms-1.2.10-gentoo/xmms/main.c xmms-1.2.10-new/xmms/main.c
+--- xmms-1.2.10-gentoo/xmms/main.c 2005-12-29 02:48:54.000000000 +0000
++++ xmms-1.2.10-new/xmms/main.c 2005-12-29 02:51:06.000000000 +0000
+@@ -3017,6 +3017,8 @@
+
+ }
+
++static sig_atomic_t exit_flag = 0;
++
+ gint idle_func(gpointer data)
+ {
+ gint time, t, length;
+@@ -3026,6 +3028,8 @@
+
+ static GTimer *pause_timer = NULL;
+
++ if (exit_flag) mainwin_quit_cb();
++
+ if (get_input_playing())
+ {
+ GDK_THREADS_ENTER();
+@@ -3393,13 +3397,7 @@
+ /* Try to exit nicely when receiving a nice exit signal */
+ void sigterm_handler(int sig)
+ {
+- /* Original author of patch said that you should not use mainwin_quit_cb(),
+- * but his way deadlock xmms, and it anyhow just calls ctrlsocket stuff with
+- * with CMD_QUIT, which anyhow calls mainwin_quit_cb() in turn. This is not
+- * entirely clean, but works.
+- * <azarah@gentoo.org> (19 Jan 2003)
+- xmms_remote_quit(ctrlsocket_get_session_id()); */
+- mainwin_quit_cb();
++ exit_flag = 1;
+ }
+
+ static gboolean pposition_configure(GtkWidget *w, GdkEventConfigure *event, gpointer data)
diff --git a/media-sound/xmms/xmms-1.2.10-r24.ebuild b/media-sound/xmms/xmms-1.2.10-r24.ebuild
new file mode 100644
index 0000000..2572491
--- /dev/null
+++ b/media-sound/xmms/xmms-1.2.10-r24.ebuild
@@ -0,0 +1,183 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit flag-o-matic eutils libtool gnuconfig
+
+PATCH_VER="2.2.6"
+M4_VER="1.1"
+
+PATCHDIR="${WORKDIR}/patches"
+
+DESCRIPTION="X MultiMedia System"
+HOMEPAGE="http://www.xmms.org/"
+SRC_URI="http://www.xmms.org/files/1.2.x/${P}.tar.bz2
+ mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${P}-gentoo-m4-${M4_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${P}-gentoo-patches-${PATCH_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm
+ http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86"
+IUSE="nls esd mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc"
+
+DEPEND="=x11-libs/gtk+-1.2*
+ rcc? ( app-i18n/librcc )"
+
+RDEPEND="${DEPEND}
+ directfb? ( dev-libs/DirectFB )
+ app-arch/unzip"
+
+#We want these things in DEPEND only
+DEPEND="${DEPEND}
+ >=sys-devel/automake-1.7
+ >=sys-devel/autoconf-2.5
+ sys-devel/libtool
+ nls? ( dev-util/intltool
+ dev-lang/perl
+ sys-devel/gettext )"
+
+# USE flags pull in xmms plugins
+PDEPEND="lirc? ( media-plugins/xmms-lirc )
+
+ flac? ( media-libs/flac )
+ mikmod? ( media-plugins/xmms-mikmod )
+ mp3? ( >=media-plugins/xmms-mpg123-1.2.10-r5 )
+ vorbis? ( >=media-plugins/xmms-vorbis-1.2.10-r1 )
+ sndfile? ( media-plugins/xmms-sndfile )
+
+ alsa? ( media-plugins/xmms-alsa )
+ arts? ( media-plugins/xmms-arts )
+ jack? ( media-plugins/xmms-jack )
+ esd? ( media-plugins/xmms-esd )
+ oss? ( media-plugins/xmms-oss )"
+
+src_unpack() {
+ if ! has_version '>=sys-devel/gettext-0.14.1'; then
+ eerror "Sorry, you seem to have USE=-nls with an old version of gettext"
+ eerror "on your system. Unfortunately, that will cause xmms to fail emerging."
+ eerror "Please either remove gettext or upgrade to version 0.14.1."
+ fi
+
+ unpack ${A}
+ cd ${S}
+
+ EPATCH_SUFFIX="patch"
+ epatch ${PATCHDIR}
+
+#SDS
+ use rcc && ../RusXMMS2/apply-gentoo.sh
+
+ # Fixes buggy Gentoo patch
+ epatch ${FILESDIR}/xmms-ds-gentoofix.patch
+
+ # Fixes compilation with gcc 4.1 (By Amax)
+ epatch ${FILESDIR}/xmms-1.2.10-gcc41.patch
+ epatch ${FILESDIR}/xmms-1.2.10-locale_fix.patch
+#EDS
+
+
+ export WANT_AUTOMAKE=1.7
+ export WANT_AUTOCONF=2.5
+
+ sed -i 's:Output Input Effect General Visualization::' Makefile.am
+
+ for dir in . libxmms; do
+ cd ${S}/${dir}
+ rm acinclude.m4
+ libtoolize --force --copy || die "libtoolize --force --copy failed"
+ [ ! -f ltmain.sh ] && ln -s ../ltmain.sh
+ aclocal -I ${WORKDIR}/m4 || die "aclocal failed"
+ autoheader || die "autoheader failed"
+ automake --gnu --add-missing --include-deps --force-missing --copy || die "automake failed"
+ autoconf || die "autoconf failed"
+ done
+
+ if use nls; then
+ cd ${S}/po
+ cp ${FILESDIR}/po-update.pl update.pl
+ perl update.pl --pot
+ fi
+
+ cd ${S}
+ gnuconfig_update
+}
+
+src_compile() {
+ export EGREP="grep -E"
+ filter-flags -fforce-addr -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+
+ local myconf=""
+
+ if use !amd64 && { use 3dnow || use mmx; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ # Please see Bug 58092 for details
+ use ppc64 && replace-flags "-O[2-9]" "-O1"
+
+ econf `use_enable nls` ${myconf} || die
+
+ # For some reason, gmake doesn't export this for libtool's consumption
+ emake -j1 || die
+}
+
+src_install() {
+ export EGREP="grep -E"
+ make DESTDIR="${D}" install || die
+
+ dodoc AUTHORS ChangeLog FAQ NEWS README TODO
+ newdoc ${PATCHDIR}/README README.patches
+ newdoc ${PATCHDIR}/ChangeLog ChangeLog.patches
+
+ keepdir /usr/share/xmms/Skins
+ insinto /usr/share/pixmaps/
+ newins ${DISTDIR}/gnomexmms.xpm xmms.xpm
+ doins xmms/xmms_logo.xpm
+ insinto /usr/share/pixmaps/mini
+ doins xmms/xmms_mini.xpm
+
+ insinto /etc/X11/wmconfig
+ donewins xmms/xmms.wmconfig xmms
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/xmms.desktop
+
+ # Add the sexy Gentoo Ice skin
+ insinto /usr/share/xmms/Skins/gentoo_ice
+ doins ${WORKDIR}/gentoo_ice/*
+ docinto gentoo_ice
+ dodoc ${WORKDIR}/README
+
+ insinto /usr/include/xmms/libxmms
+ doins ${S}/libxmms/*.h
+
+ insinto /usr/include/xmms
+ doins ${S}/xmms/i18n.h
+}
+
+pkg_postinst() {
+ einfo "media-sound/xmms now just provides the xmms binary and libxmms."
+ einfo "All plugins that were packaged with xmms are now provided by other"
+ einfo "packages in media-plugins. Some of these are automatically pulled in"
+ einfo "based on USE flags. Others you will need to emerge manually. The"
+ einfo "following is a list of packages which were previously provided by"
+ einfo "media-sound/xmms that are not automatically emerged:"
+ einfo "media-plugins/xmms-blur-scope"
+ einfo "media-plugins/xmms-cdaudio"
+ einfo "media-plugins/xmms-disk-writer"
+ einfo "media-plugins/xmms-echo"
+ einfo "media-plugins/xmms-ir"
+ einfo "media-plugins/xmms-joystick"
+ einfo "media-plugins/xmms-opengl-spectrum"
+ einfo "media-plugins/xmms-sanalyzer"
+ einfo "media-plugins/xmms-song-change"
+ einfo "media-plugins/xmms-stereo"
+ einfo "media-plugins/xmms-tonegen"
+ einfo "media-plugins/xmms-voice"
+ einfo "media-plugins/xmms-wav"
+}
diff --git a/media-sound/xmms/xmms-1.2.11-r2.ebuild b/media-sound/xmms/xmms-1.2.11-r2.ebuild
new file mode 100644
index 0000000..d208d50
--- /dev/null
+++ b/media-sound/xmms/xmms-1.2.11-r2.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit flag-o-matic eutils libtool gnuconfig
+
+PATCH_VER="2.3.0.1"
+M4_VER="1.1"
+
+PATCHDIR="${WORKDIR}/patches"
+
+DESCRIPTION="X MultiMedia System"
+HOMEPAGE="http://www.xmms.org/"
+SRC_URI="http://www.xmms.org/files/1.2.x/${P}.tar.bz2
+ mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${PN}-1.2.10-gentoo-m4-${M4_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${P}-gentoo-patches-${PATCH_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm
+ http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86"
+IUSE="nls esd mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc"
+
+DEPEND="=x11-libs/gtk+-1.2*
+ rcc? ( app-i18n/librcc )"
+
+RDEPEND="${DEPEND}
+ directfb? ( dev-libs/DirectFB )
+ app-arch/unzip"
+
+#We want these things in DEPEND only
+DEPEND="${DEPEND}
+ >=sys-devel/automake-1.7
+ >=sys-devel/autoconf-2.5
+ sys-devel/libtool
+ nls? ( dev-util/intltool
+ dev-lang/perl
+ sys-devel/gettext )"
+
+# USE flags pull in xmms plugins
+PDEPEND="lirc? ( media-plugins/xmms-lirc )
+
+ flac? ( media-libs/flac )
+ mikmod? ( media-plugins/xmms-mikmod )
+ mp3? ( >=media-plugins/xmms-mpg123-1.2.11 )
+ vorbis? ( >=media-plugins/xmms-vorbis-1.2.11 )
+ sndfile? ( media-plugins/xmms-sndfile )
+
+ alsa? ( media-plugins/xmms-alsa )
+ esd? ( media-plugins/xmms-esd )
+ arts? ( media-plugins/xmms-arts )
+ jack? ( media-plugins/xmms-jack )
+ oss? ( media-plugins/xmms-oss )"
+
+src_unpack() {
+ if ! has_version '>=sys-devel/gettext-0.14.1'; then
+ eerror "Sorry, you seem to have USE=-nls with an old version of gettext"
+ eerror "on your system. Unfortunately, that will cause xmms to fail emerging."
+ eerror "Please either remove gettext or upgrade to version 0.14.1."
+ fi
+
+ unpack ${A}
+ cd ${S}
+
+#SDS
+ use rcc && ../RusXMMS2/apply.sh
+#EDS
+
+ EPATCH_SUFFIX="patch"
+ epatch ${PATCHDIR}
+
+
+# export WANT_AUTOMAKE=1.7
+# export WANT_AUTOCONF=2.5
+
+ sed -i 's:Output Input Effect General Visualization::' Makefile.am
+
+ for dir in . libxmms; do
+ cd ${S}/${dir}
+ rm acinclude.m4
+ libtoolize --force --copy || die "libtoolize --force --copy failed"
+ [ ! -f ltmain.sh ] && ln -s ../ltmain.sh
+ aclocal -I ${WORKDIR}/m4 || die "aclocal failed"
+ autoheader || die "autoheader failed"
+ automake --gnu --add-missing --include-deps --force-missing --copy || die "automake failed"
+ autoconf || die "autoconf failed"
+ done
+
+ if use nls; then
+ cd ${S}/po
+ cp ${FILESDIR}/po-update.pl update.pl
+ perl update.pl --pot
+ fi
+
+ cd ${S}
+ gnuconfig_update
+}
+
+src_compile() {
+ export EGREP="grep -E"
+ filter-flags -fforce-addr -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+
+ local myconf=""
+
+ if use !amd64 && { use 3dnow || use mmx; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ # Please see Bug 58092 for details
+ use ppc64 && replace-flags "-O[2-9]" "-O1"
+
+ econf `use_enable nls` ${myconf} || die
+
+ # For some reason, gmake doesn't export this for libtool's consumption
+ emake -j1 || die
+}
+
+src_install() {
+ export EGREP="grep -E"
+ make DESTDIR="${D}" install || die
+
+ dodoc AUTHORS ChangeLog FAQ NEWS README TODO
+ newdoc ${PATCHDIR}/README README.patches
+ newdoc ${PATCHDIR}/ChangeLog ChangeLog.patches
+
+ keepdir /usr/share/xmms/Skins
+ insinto /usr/share/pixmaps/
+ newins ${DISTDIR}/gnomexmms.xpm xmms.xpm
+ doins xmms/xmms_logo.xpm
+ insinto /usr/share/pixmaps/mini
+ doins xmms/xmms_mini.xpm
+
+ insinto /etc/X11/wmconfig
+ donewins xmms/xmms.wmconfig xmms
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/xmms.desktop
+
+ # Add the sexy Gentoo Ice skin
+ insinto /usr/share/xmms/Skins/gentoo_ice
+ doins ${WORKDIR}/gentoo_ice/*
+ docinto gentoo_ice
+ dodoc ${WORKDIR}/README
+
+ insinto /usr/include/xmms/libxmms
+ doins ${S}/libxmms/*.h
+
+ insinto /usr/include/xmms
+ doins ${S}/xmms/i18n.h
+}
+
+pkg_postinst() {
+ einfo "media-sound/xmms now just provides the xmms binary and libxmms."
+ einfo "All plugins that were packaged with xmms are now provided by other"
+ einfo "packages in media-plugins. Some of these are automatically pulled in"
+ einfo "based on USE flags. Others you will need to emerge manually. The"
+ einfo "following is a list of packages which were previously provided by"
+ einfo "media-sound/xmms that are not automatically emerged:"
+ einfo "media-plugins/xmms-blur-scope"
+ einfo "media-plugins/xmms-cdaudio"
+ einfo "media-plugins/xmms-disk-writer"
+ einfo "media-plugins/xmms-echo"
+ einfo "media-plugins/xmms-ir"
+ einfo "media-plugins/xmms-joystick"
+ einfo "media-plugins/xmms-opengl-spectrum"
+ einfo "media-plugins/xmms-sanalyzer"
+ einfo "media-plugins/xmms-song-change"
+ einfo "media-plugins/xmms-stereo"
+ einfo "media-plugins/xmms-tonegen"
+ einfo "media-plugins/xmms-voice"
+ einfo "media-plugins/xmms-wav"
+}
diff --git a/media-sound/xmms/xmms-1.2.11-r3.ebuild b/media-sound/xmms/xmms-1.2.11-r3.ebuild
new file mode 100644
index 0000000..f0d38eb
--- /dev/null
+++ b/media-sound/xmms/xmms-1.2.11-r3.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit flag-o-matic eutils libtool gnuconfig
+
+PATCH_VER="2.3.0.1"
+M4_VER="1.1"
+
+PATCHDIR="${WORKDIR}/patches"
+
+DESCRIPTION="X MultiMedia System"
+HOMEPAGE="http://www.xmms.org/"
+SRC_URI="http://www.xmms.org/files/1.2.x/${P}.tar.bz2
+ mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${PN}-1.2.10-gentoo-m4-${M4_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${P}-gentoo-patches-${PATCH_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm
+ http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86"
+IUSE="nls mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc"
+
+DEPEND="=x11-libs/gtk+-1.2*
+ rcc? ( app-i18n/librcc )"
+
+RDEPEND="${DEPEND}
+ directfb? ( dev-libs/DirectFB )
+ app-arch/unzip"
+
+#We want these things in DEPEND only
+DEPEND="${DEPEND}
+ >=sys-devel/automake-1.7
+ >=sys-devel/autoconf-2.5
+ sys-devel/libtool
+ nls? ( dev-util/intltool
+ dev-lang/perl
+ sys-devel/gettext )"
+
+# USE flags pull in xmms plugins
+PDEPEND="lirc? ( media-plugins/xmms-lirc )
+
+ flac? ( media-libs/flac )
+ mikmod? ( media-plugins/xmms-mikmod )
+ mp3? ( >=media-plugins/xmms-mpg123-1.2.11 )
+ vorbis? ( >=media-plugins/xmms-vorbis-1.2.11 )
+ sndfile? ( media-plugins/xmms-sndfile )
+
+ alsa? ( media-plugins/xmms-alsa )
+ arts? ( media-plugins/xmms-arts )
+ jack? ( media-plugins/xmms-jack )
+ oss? ( media-plugins/xmms-oss )"
+
+src_unpack() {
+ if ! has_version '>=sys-devel/gettext-0.14.1'; then
+ eerror "Sorry, you seem to have USE=-nls with an old version of gettext"
+ eerror "on your system. Unfortunately, that will cause xmms to fail emerging."
+ eerror "Please either remove gettext or upgrade to version 0.14.1."
+ fi
+
+ unpack ${A}
+ cd ${S}
+
+#SDS
+ use rcc && ../RusXMMS2/apply.sh
+#EDS
+
+ EPATCH_SUFFIX="patch"
+ epatch ${PATCHDIR}
+
+
+# export WANT_AUTOMAKE=1.7
+# export WANT_AUTOCONF=2.5
+
+ sed -i 's:Output Input Effect General Visualization::' Makefile.am
+
+ for dir in . libxmms; do
+ cd ${S}/${dir}
+ rm acinclude.m4
+ libtoolize --force --copy || die "libtoolize --force --copy failed"
+ [ ! -f ltmain.sh ] && ln -s ../ltmain.sh
+ aclocal -I ${WORKDIR}/m4 || die "aclocal failed"
+ autoheader || die "autoheader failed"
+ automake --gnu --add-missing --include-deps --force-missing --copy || die "automake failed"
+ autoconf || die "autoconf failed"
+ done
+
+ if use nls; then
+ cd ${S}/po
+ cp ${FILESDIR}/po-update.pl update.pl
+ perl update.pl --pot
+ fi
+
+ cd ${S}
+ gnuconfig_update
+}
+
+src_compile() {
+ export EGREP="grep -E"
+ filter-flags -fforce-addr -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+
+ local myconf=""
+
+ if use !amd64 && { use 3dnow || use mmx; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ # Please see Bug 58092 for details
+ use ppc64 && replace-flags "-O[2-9]" "-O1"
+
+ econf `use_enable nls` ${myconf} || die
+
+ # For some reason, gmake doesn't export this for libtool's consumption
+ emake -j1 || die
+}
+
+src_install() {
+ export EGREP="grep -E"
+ make DESTDIR="${D}" install || die
+
+ dodoc AUTHORS ChangeLog FAQ NEWS README TODO
+ newdoc ${PATCHDIR}/README README.patches
+ newdoc ${PATCHDIR}/ChangeLog ChangeLog.patches
+
+ keepdir /usr/share/xmms/Skins
+ insinto /usr/share/pixmaps/
+ newins ${DISTDIR}/gnomexmms.xpm xmms.xpm
+ doins xmms/xmms_logo.xpm
+ insinto /usr/share/pixmaps/mini
+ doins xmms/xmms_mini.xpm
+
+ insinto /etc/X11/wmconfig
+ donewins xmms/xmms.wmconfig xmms
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/xmms.desktop
+
+ # Add the sexy Gentoo Ice skin
+ insinto /usr/share/xmms/Skins/gentoo_ice
+ doins ${WORKDIR}/gentoo_ice/*
+ docinto gentoo_ice
+ dodoc ${WORKDIR}/README
+
+ insinto /usr/include/xmms/libxmms
+ doins ${S}/libxmms/*.h
+
+ insinto /usr/include/xmms
+ doins ${S}/xmms/i18n.h
+}
+
+pkg_postinst() {
+ einfo "media-sound/xmms now just provides the xmms binary and libxmms."
+ einfo "All plugins that were packaged with xmms are now provided by other"
+ einfo "packages in media-plugins. Some of these are automatically pulled in"
+ einfo "based on USE flags. Others you will need to emerge manually. The"
+ einfo "following is a list of packages which were previously provided by"
+ einfo "media-sound/xmms that are not automatically emerged:"
+ einfo "media-plugins/xmms-blur-scope"
+ einfo "media-plugins/xmms-cdaudio"
+ einfo "media-plugins/xmms-disk-writer"
+ einfo "media-plugins/xmms-echo"
+ einfo "media-plugins/xmms-ir"
+ einfo "media-plugins/xmms-joystick"
+ einfo "media-plugins/xmms-opengl-spectrum"
+ einfo "media-plugins/xmms-sanalyzer"
+ einfo "media-plugins/xmms-song-change"
+ einfo "media-plugins/xmms-stereo"
+ einfo "media-plugins/xmms-tonegen"
+ einfo "media-plugins/xmms-voice"
+ einfo "media-plugins/xmms-wav"
+}
diff --git a/media-sound/xmms/xmms-1.2.11.ebuild b/media-sound/xmms/xmms-1.2.11.ebuild
new file mode 100644
index 0000000..2b09178
--- /dev/null
+++ b/media-sound/xmms/xmms-1.2.11.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit flag-o-matic eutils libtool gnuconfig
+
+PATCH_VER="2.3.0"
+M4_VER="1.1"
+
+PATCHDIR="${WORKDIR}/patches"
+
+DESCRIPTION="X MultiMedia System"
+HOMEPAGE="http://www.xmms.org/"
+SRC_URI="http://www.xmms.org/files/1.2.x/${P}.tar.bz2
+ mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${PN}-1.2.10-gentoo-m4-${M4_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/${P}-gentoo-patches-${PATCH_VER}.tar.bz2
+ http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm
+ http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86"
+IUSE="nls esd mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc"
+
+DEPEND="=x11-libs/gtk+-1.2*
+ rcc? ( app-i18n/librcc )"
+
+RDEPEND="${DEPEND}
+ directfb? ( dev-libs/DirectFB )
+ app-arch/unzip"
+
+#We want these things in DEPEND only
+DEPEND="${DEPEND}
+ >=sys-devel/automake-1.7
+ >=sys-devel/autoconf-2.5
+ sys-devel/libtool
+ nls? ( dev-util/intltool
+ dev-lang/perl
+ sys-devel/gettext )"
+
+# USE flags pull in xmms plugins
+PDEPEND="lirc? ( media-plugins/xmms-lirc )
+
+ flac? ( media-libs/flac )
+ mikmod? ( media-plugins/xmms-mikmod )
+ mp3? ( >=media-plugins/xmms-mpg123-1.2.11 )
+ vorbis? ( >=media-plugins/xmms-vorbis-1.2.11 )
+ sndfile? ( media-plugins/xmms-sndfile )
+
+ alsa? ( media-plugins/xmms-alsa )
+ arts? ( media-plugins/xmms-arts )
+ jack? ( media-plugins/xmms-jack )
+ esd? ( media-plugins/xmms-esd )
+ oss? ( media-plugins/xmms-oss )"
+
+src_unpack() {
+ if ! has_version '>=sys-devel/gettext-0.14.1'; then
+ eerror "Sorry, you seem to have USE=-nls with an old version of gettext"
+ eerror "on your system. Unfortunately, that will cause xmms to fail emerging."
+ eerror "Please either remove gettext or upgrade to version 0.14.1."
+ fi
+
+ unpack ${A}
+ cd ${S}
+
+#SDS
+ use rcc && ../RusXMMS2/apply.sh
+#EDS
+
+ EPATCH_SUFFIX="patch"
+ epatch ${PATCHDIR}
+
+
+# export WANT_AUTOMAKE=1.7
+# export WANT_AUTOCONF=2.5
+
+ sed -i 's:Output Input Effect General Visualization::' Makefile.am
+
+ for dir in . libxmms; do
+ cd ${S}/${dir}
+ rm acinclude.m4
+ libtoolize --force --copy || die "libtoolize --force --copy failed"
+ [ ! -f ltmain.sh ] && ln -s ../ltmain.sh
+ aclocal -I ${WORKDIR}/m4 || die "aclocal failed"
+ autoheader || die "autoheader failed"
+ automake --gnu --add-missing --include-deps --force-missing --copy || die "automake failed"
+ autoconf || die "autoconf failed"
+ done
+
+ if use nls; then
+ cd ${S}/po
+ cp ${FILESDIR}/po-update.pl update.pl
+ perl update.pl --pot
+ fi
+
+ cd ${S}
+ gnuconfig_update
+}
+
+src_compile() {
+ export EGREP="grep -E"
+ filter-flags -fforce-addr -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+
+ local myconf=""
+
+ if use !amd64 && { use 3dnow || use mmx; }; then
+ myconf="${myconf} --enable-simd"
+ else
+ myconf="${myconf} --disable-simd"
+ fi
+
+ # Please see Bug 58092 for details
+ use ppc64 && replace-flags "-O[2-9]" "-O1"
+
+ econf `use_enable nls` ${myconf} || die
+
+ # For some reason, gmake doesn't export this for libtool's consumption
+ emake -j1 || die
+}
+
+src_install() {
+ export EGREP="grep -E"
+ make DESTDIR="${D}" install || die
+
+ dodoc AUTHORS ChangeLog FAQ NEWS README TODO
+ newdoc ${PATCHDIR}/README README.patches
+ newdoc ${PATCHDIR}/ChangeLog ChangeLog.patches
+
+ keepdir /usr/share/xmms/Skins
+ insinto /usr/share/pixmaps/
+ newins ${DISTDIR}/gnomexmms.xpm xmms.xpm
+ doins xmms/xmms_logo.xpm
+ insinto /usr/share/pixmaps/mini
+ doins xmms/xmms_mini.xpm
+
+ insinto /etc/X11/wmconfig
+ donewins xmms/xmms.wmconfig xmms
+
+ insinto /usr/share/applications
+ doins ${FILESDIR}/xmms.desktop
+
+ # Add the sexy Gentoo Ice skin
+ insinto /usr/share/xmms/Skins/gentoo_ice
+ doins ${WORKDIR}/gentoo_ice/*
+ docinto gentoo_ice
+ dodoc ${WORKDIR}/README
+
+ insinto /usr/include/xmms/libxmms
+ doins ${S}/libxmms/*.h
+
+ insinto /usr/include/xmms
+ doins ${S}/xmms/i18n.h
+}
+
+pkg_postinst() {
+ einfo "media-sound/xmms now just provides the xmms binary and libxmms."
+ einfo "All plugins that were packaged with xmms are now provided by other"
+ einfo "packages in media-plugins. Some of these are automatically pulled in"
+ einfo "based on USE flags. Others you will need to emerge manually. The"
+ einfo "following is a list of packages which were previously provided by"
+ einfo "media-sound/xmms that are not automatically emerged:"
+ einfo "media-plugins/xmms-blur-scope"
+ einfo "media-plugins/xmms-cdaudio"
+ einfo "media-plugins/xmms-disk-writer"
+ einfo "media-plugins/xmms-echo"
+ einfo "media-plugins/xmms-ir"
+ einfo "media-plugins/xmms-joystick"
+ einfo "media-plugins/xmms-opengl-spectrum"
+ einfo "media-plugins/xmms-sanalyzer"
+ einfo "media-plugins/xmms-song-change"
+ einfo "media-plugins/xmms-stereo"
+ einfo "media-plugins/xmms-tonegen"
+ einfo "media-plugins/xmms-voice"
+ einfo "media-plugins/xmms-wav"
+}
diff --git a/media-sound/xmmsctrl/Manifest b/media-sound/xmmsctrl/Manifest
new file mode 100644
index 0000000..022ad4c
--- /dev/null
+++ b/media-sound/xmmsctrl/Manifest
@@ -0,0 +1,4 @@
+AUX xmmsctrl-1.8-jump.patch 457 RMD160 6e8ff2fd4823e031131e131ad7219cb32e6bada1 SHA1 37017f2442f0cee82221d16705e682619b398e5e SHA256 d567b8049c644fa2b9d46fbdccff284c5634c5f06df1de7ebd716a9579c7e23f
+AUX xmmsctrl.bash-completion 1055 RMD160 78eea48e425d0a96dea344bf97dc1fa8afd15d23 SHA1 0a5b5c5bcd2a67dc6602d60cb770ce3ca0b191f6 SHA256 ad42a545a330b4fb7d486f55b2630383ccb634b75706fcf92874fc658a99aca1
+DIST xmmsctrl-1.9.tar.gz 14336 RMD160 e878e512530fe03c956926dd0d20727ba18e9f8a SHA1 771500abf504077c85f4052f0977a607244f82e1 SHA256 26ba9a4b9e6dbc7839b8a6fc234774fa2a9cc4e887e947cd6681d3d42674b2cb
+EBUILD xmmsctrl-1.9.ebuild 806 RMD160 d20939dc5da8e80851e5b81ec1b50bf0845dfef8 SHA1 5c3f1b19b140c0501119e4bb14befc8fb641d81d SHA256 475f9d7e67ce46eb275c406a91d861be0ef07eb4432f1ba7aa4e6fed4859630f
diff --git a/media-sound/xmmsctrl/files/xmmsctrl-1.8-jump.patch b/media-sound/xmmsctrl/files/xmmsctrl-1.8-jump.patch
new file mode 100644
index 0000000..0dc0db2
--- /dev/null
+++ b/media-sound/xmmsctrl/files/xmmsctrl-1.8-jump.patch
@@ -0,0 +1,15 @@
+diff -Naur xmmsctrl-1.8.orig/xmmsctrl.c xmmsctrl-1.8/xmmsctrl.c
+--- xmmsctrl-1.8.orig/xmmsctrl.c 2004-04-02 04:55:06.000000000 -0800
++++ xmmsctrl-1.8/xmmsctrl.c 2004-11-04 15:18:37.487096112 -0800
+@@ -135,6 +135,11 @@
+ "print this help message."
+ },
+ {
++ "jump" ,
++ xmms_remote_show_jump_box ,
++ "open the xmms jump to file box"
++ },
++ {
+ "next" ,
+ xmms_remote_playlist_next ,
+ "xmms next song command, go to the next song."
diff --git a/media-sound/xmmsctrl/files/xmmsctrl.bash-completion b/media-sound/xmmsctrl/files/xmmsctrl.bash-completion
new file mode 100644
index 0000000..1568d3c
--- /dev/null
+++ b/media-sound/xmmsctrl/files/xmmsctrl.bash-completion
@@ -0,0 +1,38 @@
+# $Header: /var/cvsroot/gentoo-x86/media-sound/xmmsctrl/files/xmmsctrl.bash-completion,v 1.1 2004/11/04 23:22:33 eradicator Exp $
+# xmmsctrl completion
+
+_xmmsctrl()
+{
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="launch not cur eject getlength getpos gettime getvol help jump \
+ next pause play playlist playfiles pref prev previous remove repeat \
+ shuffle stop title quit --help equalizer main play_list paused playing \
+ is_equalizer is_main is_play_list is_stream running session dir time \
+ track vol"
+
+ if [ ${COMP_CWORD} -eq 1 ] ; then
+ COMPREPLY=($(compgen -W "${opts}" -- "${cur}"))
+ return 0
+ fi
+
+ case "${prev}" in
+ equalizer|main|play_list)
+ COMPREPLY=($(compgen -W "0 1" -- "${cur}"))
+ ;;
+ dir)
+ COMPREPLY=($(compgen -A directory -- "${cur}"))
+ ;;
+ not)
+ COMPREPLY=($(compgen -W "${opts/not}" -- "${cur}"))
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+}
+complete -F _xmmsctrl xmmsctrl
+
+# vim: set ft=sh tw=80 sw=4 et :
diff --git a/media-sound/xmmsctrl/xmmsctrl-1.9.ebuild b/media-sound/xmmsctrl/xmmsctrl-1.9.ebuild
new file mode 100644
index 0000000..246197c
--- /dev/null
+++ b/media-sound/xmmsctrl/xmmsctrl-1.9.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-sound/xmmsctrl/xmmsctrl-1.9.ebuild,v 1.1 2005/10/16 21:28:13 metalgod Exp $
+
+IUSE=""
+
+inherit eutils bash-completion
+
+DESCRIPTION="A small program to control xmms from a shell script."
+SRC_URI="http://www.cs.aau.dk/~adavid/utils/${P}.tar.gz"
+HOMEPAGE="http://www.cs.aau.dk/~adavid/utils/"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~alpha amd64 ~hppa ~ppc ~sparc x86"
+
+DEPEND="media-sound/xmms"
+
+src_unpack() {
+ unpack ${A} || die
+ cd ${S}
+ epatch ${FILESDIR}/${PN}-1.8-jump.patch
+}
+
+src_compile() {
+ emake || die
+}
+
+src_install () {
+ dobin xmmsctrl
+ dodoc README HELP
+
+ docinto samples
+ dodoc samples/*
+
+ dobashcompletion ${FILESDIR}/${PN}.bash-completion ${PN}
+}
diff --git a/media-video/nvidia-settings/Manifest b/media-video/nvidia-settings/Manifest
new file mode 100644
index 0000000..d88eb70
--- /dev/null
+++ b/media-video/nvidia-settings/Manifest
@@ -0,0 +1,2 @@
+DIST nvidia-settings-355.11.tar.bz2 1570699 SHA256 999ebc9e12ca1a6b6195d439f08aac0b9420f8117e42cac62dccd2872dabb74b SHA512 7565e3d809c5f27ec9ca092a6369cf89ca7571e0cb1b1285c50192cc1cc763e95316d9c71d06ed2333077b97946318e825c6d672f48549b58bd41faa673fb49c WHIRLPOOL 700a0c70fe63d4379d4ccb9dc7aa4350fbdc8b0c67d0a2d13c117d06b81fdf3fc7f1a690f9293b20f03a1876494d63ad5d4ec2536573f726d23cdbfa49c36c4e
+EBUILD nvidia-settings-355.11.ebuild 1716 SHA256 4452704c0b8cf91a8a019bea26c238fecb1527b7679c43940577a3b7974c6fe4 SHA512 488faaef4b4e95612a2b45bdb67e853c692b6f3096f1e3fe89ac7cc8e1b251a3a7f456be0f480e8796b7b74303aa13cea434ba4d2061438f95c71c6d4a5f3d97 WHIRLPOOL fc19f5c979f3ec117adf49a1f8e57b753cef0869e12684692b9cf9f7a753a6dc3571c7b22a715cfadc4b683f5c1c09cff1a7ad9cf022a812384eee0c830f06ca
diff --git a/media-video/nvidia-settings/nvidia-settings-355.11.ebuild b/media-video/nvidia-settings/nvidia-settings-355.11.ebuild
new file mode 100644
index 0000000..1b42b06
--- /dev/null
+++ b/media-video/nvidia-settings/nvidia-settings-355.11.ebuild
@@ -0,0 +1,79 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils multilib toolchain-funcs
+
+DESCRIPTION="NVIDIA Linux X11 Settings Utility"
+HOMEPAGE="http://www.nvidia.com/"
+SRC_URI="ftp://download.nvidia.com/XFree86/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="-* amd64 x86 ~x86-fbsd"
+IUSE="examples gtk3"
+
+COMMON_DEPEND="x11-libs/gtk+:2
+ gtk3? ( x11-libs/gtk+:3 )
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXxf86vm
+ x11-libs/gdk-pixbuf[X]
+ media-libs/mesa
+ x11-libs/pango[X]
+ x11-libs/libXv
+ x11-libs/libXrandr
+ dev-libs/glib:2
+ dev-libs/jansson
+ x11-libs/cairo
+ >=x11-libs/libvdpau-1.0"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ x11-proto/xproto"
+
+src_compile() {
+ einfo "Building libXNVCtrl..."
+ emake -C src/ \
+ CC="$(tc-getCC)" \
+ AR="$(tc-getAR)" \
+ RANLIB="$(tc-getRANLIB)" \
+ build-xnvctrl
+
+ einfo "Building nvidia-settings..."
+ emake -C src/ \
+ CC="$(tc-getCC)" \
+ LD="$(tc-getLD)" \
+ STRIP_CMD="$(type -P true)" \
+ NV_VERBOSE=1 \
+ NV_USE_BUNDLED_LIBJANSSON=0 \
+ NVML_AVAILABLE=0 \
+ GTK3_AVAILABLE=$(usex gtk3 1 0)
+}
+
+src_install() {
+ emake -C src/ DESTDIR="${D}" PREFIX=/usr NV_USE_BUNDLED_LIBJANSSON=0 GTK3_AVAILABLE=$(usex gtk3 1 0) install
+
+ insinto /usr/$(get_libdir)
+ doins src/libXNVCtrl/libXNVCtrl.a
+
+ insinto /usr/include/NVCtrl
+ doins src/libXNVCtrl/*.h
+
+# doicon doc/${PN}.png # Installed through nvidia-drivers
+ make_desktop_entry ${PN} "NVIDIA X Server Settings" ${PN} Settings
+
+ # bug 412569 - Installed through nvidia-drivers
+# rm -rf "${D}"/usr/share/man
+
+ dodoc doc/*.txt
+
+ if use examples; then
+ docinto examples/
+ dodoc samples/*.c
+ dodoc samples/README
+ fi
+}
diff --git a/metadata/layout.conf b/metadata/layout.conf
new file mode 100644
index 0000000..d43e61c
--- /dev/null
+++ b/metadata/layout.conf
@@ -0,0 +1 @@
+masters = gentoo
diff --git a/metadata/md5-cache/app-admin/vlogger-1.3 b/metadata/md5-cache/app-admin/vlogger-1.3
new file mode 100644
index 0000000..ec76ce3
--- /dev/null
+++ b/metadata/md5-cache/app-admin/vlogger-1.3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install postinst
+DESCRIPTION=Virtual web logfile rotater/parser, similar to cronolog and httplog
+HOMEPAGE=http://n0rp.chemlab.org/vlogger/
+IUSE=dbi
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-perl/TimeDate dbi? ( dev-perl/DBI )
+SLOT=0
+SRC_URI=http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
+_md5_=8743da9167cd8662e7e3c87d108909dd
diff --git a/metadata/md5-cache/app-arch/p7zip-4.27-r1 b/metadata/md5-cache/app-arch/p7zip-4.27-r1
new file mode 100644
index 0000000..5b5e7f3
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.27-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Port of 7-Zip archiver for Unix
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=static doc
+KEYWORDS=amd64 ~ppc x86
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.27_src.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=72e9a16e88acb8da065703041cf37b1a
diff --git a/metadata/md5-cache/app-arch/p7zip-4.30-r1 b/metadata/md5-cache/app-arch/p7zip-4.30-r1
new file mode 100644
index 0000000..e47ae43
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.30-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Port of 7-Zip archiver for Unix
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=static doc
+KEYWORDS=amd64 ~hppa ~ppc x86
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.30_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db73fa434e058534c56beaa581c3b268
diff --git a/metadata/md5-cache/app-arch/p7zip-4.42-r1 b/metadata/md5-cache/app-arch/p7zip-4.42-r1
new file mode 100644
index 0000000..e6c9b4b
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.42-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Port of 7-Zip archiver for Unix
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=static doc
+KEYWORDS=amd64 ~hppa ~ppc x86
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.42_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4b813174ef20da003fd6435e0df08f2d
diff --git a/metadata/md5-cache/app-arch/p7zip-4.44-r1 b/metadata/md5-cache/app-arch/p7zip-4.44-r1
new file mode 100644
index 0000000..96d7ba5
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.44-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Port of 7-Zip archiver for Unix
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=static doc
+KEYWORDS=~alpha amd64 hppa ~ia64 ~ppc ~ppc-macos ~ppc64 sparc x86 ~x86-fbsd
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.44_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4fbcac43f5f239515b2d90108817b148
diff --git a/metadata/md5-cache/app-arch/p7zip-4.44-r2 b/metadata/md5-cache/app-arch/p7zip-4.44-r2
new file mode 100644
index 0000000..3e3a51d
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.44-r2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Port of 7-Zip archiver for Unix
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=static doc
+KEYWORDS=~alpha amd64 hppa ~ia64 ~ppc ~ppc-macos ~ppc64 sparc x86 ~x86-fbsd
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.44_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=53fc41d4e778d5bb0b5f5b0bd75cf2b4
diff --git a/metadata/md5-cache/app-arch/p7zip-4.57-r1 b/metadata/md5-cache/app-arch/p7zip-4.57-r1
new file mode 100644
index 0000000..268514e
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.57-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=rcc? ( app-i18n/librcc )
+DESCRIPTION=Port of 7-Zip archiver for Unix
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=static doc rcc
+KEYWORDS=~alpha amd64 hppa ~ia64 ppc ppc64 sparc x86 ~x86-fbsd
+LICENSE=LGPL-2.1
+RDEPEND=rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.57_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=b0a7f9b51118e69d60d0747987da8c8f
diff --git a/metadata/md5-cache/app-arch/p7zip-4.65-r2 b/metadata/md5-cache/app-arch/p7zip-4.65-r2
new file mode 100644
index 0000000..6902987
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-4.65-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install prepare setup test
+DEPEND=kde? ( x11-libs/wxGTK:2.8[X,-odbc] || ( kde-base/konqueror kde-base/kdebase-meta kde-base/kdebase ) ) wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] ) rcc? ( app-i18n/librcc )
+DESCRIPTION=Port of 7-Zip archiver for Unix
+EAPI=2
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=doc kde rar static wxwidgets rcc
+KEYWORDS=~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86 ~x86-fbsd
+LICENSE=LGPL-2.1 rar? ( unRAR )
+RDEPEND=kde? ( x11-libs/wxGTK:2.8[X,-odbc] || ( kde-base/konqueror kde-base/kdebase-meta kde-base/kdebase ) ) wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_4.65_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=df599a892e94703865ebd9b936528a76
diff --git a/metadata/md5-cache/app-arch/p7zip-9.13-r2 b/metadata/md5-cache/app-arch/p7zip-9.13-r2
new file mode 100644
index 0000000..66f8eb6
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-9.13-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install prepare setup test
+DEPEND=kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/konqueror ) wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] ) rcc? ( app-i18n/librcc )
+DESCRIPTION=Port of 7-Zip archiver for Unix
+EAPI=2
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=doc kde rar static wxwidgets rcc
+KEYWORDS=~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos
+LICENSE=LGPL-2.1 rar? ( unRAR )
+RDEPEND=kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/konqueror ) wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_9.13_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=b7bc8fffef332d4392f953f01d31114c
diff --git a/metadata/md5-cache/app-arch/p7zip-9.13-r3 b/metadata/md5-cache/app-arch/p7zip-9.13-r3
new file mode 100644
index 0000000..4f8a079
--- /dev/null
+++ b/metadata/md5-cache/app-arch/p7zip-9.13-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install prepare setup test
+DEPEND=kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/konqueror ) wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] ) rcc? ( app-i18n/librcc )
+DESCRIPTION=Port of 7-Zip archiver for Unix
+EAPI=2
+HOMEPAGE=http://p7zip.sourceforge.net/
+IUSE=doc kde rar static wxwidgets rcc
+KEYWORDS=~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos
+LICENSE=LGPL-2.1 rar? ( unRAR )
+RDEPEND=kde? ( x11-libs/wxGTK:2.8[X,-odbc] kde-base/konqueror ) wxwidgets? ( x11-libs/wxGTK:2.8[X,-odbc] )
+SLOT=0
+SRC_URI=mirror://sourceforge/p7zip/p7zip_9.13_src_all.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=a91a4a3045fd488b5f98b8c53452bb7a
diff --git a/metadata/md5-cache/app-arch/ruszip-2.32-r1 b/metadata/md5-cache/app-arch/ruszip-2.32-r1
new file mode 100644
index 0000000..33d665d
--- /dev/null
+++ b/metadata/md5-cache/app-arch/ruszip-2.32-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Info ZIP (encryption support) with CP866 recoding
+HOMEPAGE=http://www.info-zip.org/
+IUSE=crypt
+KEYWORDS=alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=Info-ZIP
+SLOT=0
+SRC_URI=ftp://ftp.info-zip.org/pub/infozip/src/zip232.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e96f2c0b2fcbe5204b87d3a89d729b77
diff --git a/metadata/md5-cache/app-arch/unrar-3.4.3-r1 b/metadata/md5-cache/app-arch/unrar-3.4.3-r1
new file mode 100644
index 0000000..554a71b
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unrar-3.4.3-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=!app-arch/unrar-gpl
+DESCRIPTION=Uncompress rar files
+HOMEPAGE=http://www.rarlab.com/rar_add.htm
+KEYWORDS=alpha amd64 hppa ppc ppc64 ppc-macos sparc x86
+LICENSE=unRAR
+RDEPEND=!app-arch/unrar-gpl
+SLOT=0
+SRC_URI=http://www.rarlab.com/rar/unrarsrc-3.4.3.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a3e1353633fcd30a9ec0f8c78d0ce750
diff --git a/metadata/md5-cache/app-arch/unrar-3.5.4-r2 b/metadata/md5-cache/app-arch/unrar-3.5.4-r2
new file mode 100644
index 0000000..68cce71
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unrar-3.5.4-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DEPEND=!app-arch/unrar-gpl
+DESCRIPTION=Uncompress rar files
+HOMEPAGE=http://www.rarlab.com/rar_add.htm
+KEYWORDS=~alpha amd64 ~hppa ~ppc ~ppc-macos ~ppc64 ~sparc x86
+LICENSE=unRAR
+RDEPEND=!app-arch/unrar-gpl
+SLOT=0
+SRC_URI=http://www.rarlab.com/rar/unrarsrc-3.5.4.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9a90101d9c2ea2aed3061fa2ade7e274
diff --git a/metadata/md5-cache/app-arch/unrar-3.6.5-r1 b/metadata/md5-cache/app-arch/unrar-3.6.5-r1
new file mode 100644
index 0000000..4884b19
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unrar-3.6.5-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DEPEND=!app-arch/unrar-gpl
+DESCRIPTION=Uncompress rar files
+HOMEPAGE=http://www.rarlab.com/rar_add.htm
+KEYWORDS=~alpha amd64 ~hppa ~ppc ~ppc-macos ~ppc64 ~sparc x86 ~x86-fbsd
+LICENSE=unRAR
+RDEPEND=!app-arch/unrar-gpl
+SLOT=0
+SRC_URI=http://www.rarlab.com/rar/unrarsrc-3.6.5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c56e0798b3ccf2a754d4ba317ce0df77
diff --git a/metadata/md5-cache/app-arch/unrar-3.7.3-r1 b/metadata/md5-cache/app-arch/unrar-3.7.3-r1
new file mode 100644
index 0000000..031c954
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unrar-3.7.3-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DEPEND=!app-arch/unrar-gpl
+DESCRIPTION=Uncompress rar files
+HOMEPAGE=http://www.rarlab.com/rar_add.htm
+KEYWORDS=alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=unRAR
+RDEPEND=!app-arch/unrar-gpl
+SLOT=0
+SRC_URI=http://www.rarlab.com/rar/unrarsrc-3.7.3.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=b64aa27dfb0ce0aed229716b9cc6bfbd
diff --git a/metadata/md5-cache/app-arch/unzip-5.52-r3 b/metadata/md5-cache/app-arch/unzip-5.52-r3
new file mode 100644
index 0000000..879545f
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unzip-5.52-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=rcc? ( app-i18n/librcc )
+DESCRIPTION=Unzipper for pkzip-compressed files
+HOMEPAGE=ftp://ftp.info-zip.org/pub/infozip/UnZip.html
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86
+LICENSE=Info-ZIP
+RDEPEND=rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=ftp://ftp.info-zip.org/pub/infozip/src/unzip552.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a285f2664f3d3907915a740a0127c3e6
diff --git a/metadata/md5-cache/app-arch/unzip-5.52-r4 b/metadata/md5-cache/app-arch/unzip-5.52-r4
new file mode 100644
index 0000000..61f6249
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unzip-5.52-r4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=rcc? ( app-i18n/librcc )
+DESCRIPTION=unzipper for pkzip-compressed files
+HOMEPAGE=http://www.info-zip.org/
+IUSE=rcc
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc ~sparc-fbsd x86 ~x86-fbsd
+LICENSE=Info-ZIP
+RDEPEND=rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://gentoo/unzip552.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=94b01e7b6bbb27b3a318834d68134f82
diff --git a/metadata/md5-cache/app-arch/unzip-5.52-r5 b/metadata/md5-cache/app-arch/unzip-5.52-r5
new file mode 100644
index 0000000..57bc2ad
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unzip-5.52-r5
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=unzipper for pkzip-compressed files
+HOMEPAGE=http://www.info-zip.org/
+IUSE=rcc
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc ~sparc-fbsd x86 ~x86-fbsd
+LICENSE=Info-ZIP
+PDEPEND=rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://gentoo/unzip552.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8a67653307c6a2601fb69cc235edba56
diff --git a/metadata/md5-cache/app-arch/unzip-5.52-r6 b/metadata/md5-cache/app-arch/unzip-5.52-r6
new file mode 100644
index 0000000..f3c5683
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unzip-5.52-r6
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=unzipper for pkzip-compressed files
+HOMEPAGE=http://www.info-zip.org/
+IUSE=rcc
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc ~sparc-fbsd x86 ~x86-fbsd
+LICENSE=Info-ZIP
+PDEPEND=rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://gentoo/unzip552.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4e82c1929cb694bcd5ffeefbba2d3783
diff --git a/metadata/md5-cache/app-arch/unzip-6.0-r3 b/metadata/md5-cache/app-arch/unzip-6.0-r3
new file mode 100644
index 0000000..d2334eb
--- /dev/null
+++ b/metadata/md5-cache/app-arch/unzip-6.0-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=bzip2? ( app-arch/bzip2 )
+DESCRIPTION=unzipper for pkzip-compressed files
+HOMEPAGE=http://www.info-zip.org/
+IUSE=bzip2 unicode rcc
+KEYWORDS=~alpha amd64 arm hppa ~ia64 m68k ~ppc ppc64 s390 sh ~sparc x86
+LICENSE=Info-ZIP
+PDEPEND=rcc? ( app-i18n/librcc )
+RDEPEND=bzip2? ( app-arch/bzip2 )
+SLOT=0
+SRC_URI=mirror://sourceforge/infozip/unzip60.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=21b21d5a12765c2312d05d6371432ad0
diff --git a/metadata/md5-cache/app-cdr/nero-2.1.0.1 b/metadata/md5-cache/app-cdr/nero-2.1.0.1
new file mode 100644
index 0000000..fe73804
--- /dev/null
+++ b/metadata/md5-cache/app-cdr/nero-2.1.0.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=>=app-arch/rpm2targz-9.0.0.3g
+DESCRIPTION=Nero Burning ROM for Linux
+HOMEPAGE=http://nerolinux.nero.com/
+IUSE=mp3 ogg shorten sox vorbis
+KEYWORDS=~amd64 ~x86
+LICENSE=Nero
+RDEPEND=virtual/libc || ( x11-libs/libX11 virtual/x11 ) =x11-libs/gtk+-1.2* amd64? ( >=app-emulation/emul-linux-x86-gtklibs-2.0 ) mp3? ( media-sound/mpg123 media-sound/lame media-sound/mp3info ) ogg? ( media-sound/oggtst ) shorten? ( media-sound/shorten media-sound/shntool ) sox? ( media-sound/sox ) vorbis? ( media-sound/vorbis-tools )
+RESTRICT=nostrip nomirror
+SLOT=0
+SRC_URI=http://httpdl1.de.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl2.de.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl3.de.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl4.de.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl5.de.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl6.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp1.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp2.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp2.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp3.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp4.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp5.de.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp6.de.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl1.us.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl2.us.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl3.us.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl4.us.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl5.us.nero.com/nerolinux-2.1.0.1-x86.rpm http://httpdl6.us.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp1.us.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp2.us.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp3.us.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp4.us.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp5.us.nero.com/nerolinux-2.1.0.1-x86.rpm ftp://ftp6.us.nero.com/nerolinux-2.1.0.1-x86.rpm
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rpm b94b54b44f14d6bee3e966c8f5c86fba toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8c5c5f536794a05768e7c7e3f0449875
diff --git a/metadata/md5-cache/app-cdr/nero-2.1.0.4b b/metadata/md5-cache/app-cdr/nero-2.1.0.4b
new file mode 100644
index 0000000..47982a5
--- /dev/null
+++ b/metadata/md5-cache/app-cdr/nero-2.1.0.4b
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=>=app-arch/rpm2targz-9.0.0.3g
+DESCRIPTION=Nero Burning ROM for Linux
+HOMEPAGE=http://nerolinux.nero.com/
+IUSE=mp3 ogg shorten sox vorbis
+KEYWORDS=amd64 x86
+LICENSE=Nero
+RDEPEND=sys-libs/glibc || ( x11-libs/libX11 virtual/x11 ) =x11-libs/gtk+-1.2* amd64? ( >=app-emulation/emul-linux-x86-gtklibs-2.0 ) mp3? ( media-sound/mpg123 media-sound/lame media-sound/mp3info ) ogg? ( media-sound/oggtst ) shorten? ( media-sound/shorten media-sound/shntool ) sox? ( media-sound/sox ) vorbis? ( media-sound/vorbis-tools )
+RESTRICT=nostrip nomirror
+SLOT=0
+SRC_URI=ftp://ftp.nero.com/nerolinux-2.1.0.4b-x86.rpm http://httpdl3.de.nero.com/nerolinux-2.1.0.4b-x86.rpm http://httpdl4.de.nero.com/nerolinux-2.1.0.4b-x86.rpm http://httpdl5.de.nero.com/nerolinux-2.1.0.4b-x86.rpm http://httpdl6.de.nero.com/nerolinux-2.1.0.4b-x86.rpm ftp://ftp3.de.nero.com/nerolinux-2.1.0.4b-x86.rpm ftp://ftp4.de.nero.com/nerolinux-2.1.0.4b-x86.rpm ftp://ftp5.de.nero.com/nerolinux-2.1.0.4b-x86.rpm ftp://ftp6.de.nero.com/nerolinux-2.1.0.4b-x86.rpm
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rpm b94b54b44f14d6bee3e966c8f5c86fba toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e26e9482f10b394ad3d691b9a6b85294
diff --git a/metadata/md5-cache/app-dicts/libtranslate-0.99-r4 b/metadata/md5-cache/app-dicts/libtranslate-0.99-r4
new file mode 100644
index 0000000..4f78c1a
--- /dev/null
+++ b/metadata/md5-cache/app-dicts/libtranslate-0.99-r4
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DEPEND=>=dev-libs/glib-2.4.0 >=net-libs/libsoup-2.2.0 >=dev-libs/libxml2-2.0 app-text/talkfilters dev-perl/XML-Parser
+DESCRIPTION=Library for translating text and web pages between natural languages.
+HOMEPAGE=http://www.nongnu.org/libtranslate
+KEYWORDS=x86 amd64
+LICENSE=BSD
+RDEPEND=>=dev-libs/glib-2.4.0 >=net-libs/libsoup-2.2.0 >=dev-libs/libxml2-2.0 app-text/talkfilters dev-perl/XML-Parser
+SLOT=0
+SRC_URI=http://savannah.nongnu.org/download/libtranslate/libtranslate-0.99.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=ffe7bfb6c63e5277be66e4199fde261e
diff --git a/metadata/md5-cache/app-dicts/libtranslate-0.99-r6 b/metadata/md5-cache/app-dicts/libtranslate-0.99-r6
new file mode 100644
index 0000000..bca8393
--- /dev/null
+++ b/metadata/md5-cache/app-dicts/libtranslate-0.99-r6
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=dev-libs/glib-2.4.0 dev-util/intltool >=net-libs/libsoup-2.4.0 >=dev-libs/libxml2-2.0 app-text/talkfilters dev-perl/XML-Parser
+DESCRIPTION=Library for translating text and web pages between natural languages.
+HOMEPAGE=http://www.nongnu.org/libtranslate
+KEYWORDS=x86 amd64
+LICENSE=BSD
+RDEPEND=>=dev-libs/glib-2.4.0 dev-util/intltool >=net-libs/libsoup-2.4.0 >=dev-libs/libxml2-2.0 app-text/talkfilters dev-perl/XML-Parser
+SLOT=0
+SRC_URI=http://savannah.nongnu.org/download/libtranslate/libtranslate-0.99.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8c86c6713693b5643cd9160598e1d6a9
diff --git a/metadata/md5-cache/app-dicts/slowo-1.0 b/metadata/md5-cache/app-dicts/slowo-1.0
new file mode 100644
index 0000000..0b522d1
--- /dev/null
+++ b/metadata/md5-cache/app-dicts/slowo-1.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst
+DEPEND=sys-libs/ncurses X? ( x11-base/xorg-x11 )
+DESCRIPTION=Slowo Dictionary
+IUSE=X
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=sys-libs/ncurses X? ( x11-base/xorg-x11 )
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/slowo.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=eb4ac0745e6351883b2318a85039b346
diff --git a/metadata/md5-cache/app-dicts/stardict-3.0.1-r3 b/metadata/md5-cache/app-dicts/stardict-3.0.1-r3
new file mode 100644
index 0000000..3ef762b
--- /dev/null
+++ b/metadata/md5-cache/app-dicts/stardict-3.0.1-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst postrm preinst setup unpack
+DEPEND=gnome? ( >=gnome-base/libbonobo-2.2.0 >=gnome-base/libgnome-2.2.0 >=gnome-base/libgnomeui-2.2.0 >=gnome-base/gconf-2 >=gnome-base/orbit-2.6 app-text/scrollkeeper ) spell? ( app-text/enchant ) gucharmap? ( >=gnome-extra/gucharmap-1.4.0 ) >=sys-libs/zlib-1.1.4 >=x11-libs/gtk+-2.12 >=dev-util/intltool-0.22 dev-util/pkgconfig >=sys-apps/sed-4 || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=A GNOME2 international dictionary supporting fuzzy and glob style matching
+HOMEPAGE=http://stardict.sourceforge.net/
+IUSE=festival espeak gnome gucharmap qqwry pronounce spell debug
+KEYWORDS=amd64 ppc ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=gnome? ( >=gnome-base/libbonobo-2.2.0 >=gnome-base/libgnome-2.2.0 >=gnome-base/libgnomeui-2.2.0 >=gnome-base/gconf-2 >=gnome-base/orbit-2.6 app-text/scrollkeeper ) spell? ( app-text/enchant ) gucharmap? ( >=gnome-extra/gucharmap-1.4.0 ) >=sys-libs/zlib-1.1.4 >=x11-libs/gtk+-2.12 espeak? ( >=app-accessibility/espeak-1.29 ) festival? ( =app-accessibility/festival-1.96_beta )
+RESTRICT=test
+SLOT=0
+SRC_URI=mirror://sourceforge/stardict/stardict-3.0.1.tar.bz2 qqwry? ( mirror://sourceforge/stardict/QQWry.Dat.bz2 ) pronounce? ( mirror://sourceforge/stardict/WyabdcRealPeopleTTS.tar.bz2 )
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 fdo-mime 0acfe1a88fd8751a1d5dc671168219fa gnome.org 8fef8f967214f56e08fa92d61163d891 gnome2 7976d3f4d0c0816c67033d3dcd4d9472 gnome2-utils 794d2847b4af390a1e020924876c8297 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=d0613e76c0b05167e8aa6fad0aa72b32
diff --git a/metadata/md5-cache/app-emulation/qemu-1.3.0 b/metadata/md5-cache/app-emulation/qemu-1.3.0
new file mode 100644
index 0000000..f358692
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/qemu-1.3.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=configure install postinst prepare pretend setup
+DEPEND=!static? ( >=dev-libs/glib-2.0 sys-apps/pciutils sys-libs/zlib aio? ( dev-libs/libaio ) caps? ( sys-libs/libcap-ng ) curl? ( >=net-misc/curl-7.15.4 ) fdt? ( >=sys-apps/dtc-1.2.0 ) jpeg? ( virtual/jpeg ) ncurses? ( sys-libs/ncurses ) png? ( media-libs/libpng ) rbd? ( sys-cluster/ceph ) sasl? ( dev-libs/cyrus-sasl ) sdl? ( >=media-libs/libsdl-1.2.11 ) seccomp? ( >=sys-libs/libseccomp-1.0.0 ) spice? ( >=app-emulation/spice-0.9.0 ) tls? ( net-libs/gnutls ) uuid? ( >=sys-apps/util-linux-2.16.0 ) vde? ( net-misc/vde ) xattr? ( sys-apps/attr ) xfs? ( sys-fs/xfsprogs ) ) !app-emulation/kqemu sys-firmware/ipxe >=sys-firmware/seabios-1.7.0 sys-firmware/sgabios sys-firmware/vgabios alsa? ( >=media-libs/alsa-lib-1.0.13 ) bluetooth? ( net-wireless/bluez ) brltty? ( app-accessibility/brltty ) opengl? ( virtual/opengl ) pulseaudio? ( media-sound/pulseaudio ) python? ( =dev-lang/python-2*[ncurses] ) sdl? ( media-libs/libsdl[X] ) smartcard? ( dev-libs/nss ) spice? ( >=app-emulation/spice-protocol-0.12.0 ) systemtap? ( dev-util/systemtap ) usbredir? ( >=sys-apps/usbredir-0.3.4 x86? ( <sys-apps/usbredir-0.5 ) ) virtfs? ( sys-libs/libcap ) xen? ( app-emulation/xen-tools ) virtual/pkgconfig doc? ( app-text/texi2html ) kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 ) static? ( >=dev-libs/glib-2.0[static-libs(+)] sys-apps/pciutils[static-libs(+)] sys-libs/zlib[static-libs(+)] aio? ( dev-libs/libaio[static-libs(+)] ) caps? ( sys-libs/libcap-ng[static-libs(+)] ) curl? ( >=net-misc/curl-7.15.4[static-libs(+)] ) fdt? ( >=sys-apps/dtc-1.2.0[static-libs(+)] ) jpeg? ( virtual/jpeg[static-libs(+)] ) ncurses? ( sys-libs/ncurses[static-libs(+)] ) png? ( media-libs/libpng[static-libs(+)] ) rbd? ( sys-cluster/ceph[static-libs(+)] ) sasl? ( dev-libs/cyrus-sasl[static-libs(+)] ) sdl? ( >=media-libs/libsdl-1.2.11[static-libs(+)] ) seccomp? ( >=sys-libs/libseccomp-1.0.0[static-libs(+)] ) spice? ( >=app-emulation/spice-0.9.0[static-libs(+)] ) tls? ( net-libs/gnutls[static-libs(+)] ) uuid? ( >=sys-apps/util-linux-2.16.0[static-libs(+)] ) vde? ( net-misc/vde[static-libs(+)] ) xattr? ( sys-apps/attr[static-libs(+)] ) xfs? ( sys-fs/xfsprogs[static-libs(+)] ) ) =dev-lang/python-2*
+DESCRIPTION=QEMU + Kernel-based Virtual Machine userland tools
+EAPI=4
+HOMEPAGE=http://www.linux-kvm.org
+IUSE=+aio alsa bluetooth brltty +caps +curl debug doc fdt +jpeg kernel_linux kernel_FreeBSD mixemu ncurses opengl +png pulseaudio python rbd sasl +seccomp sdl smartcard spice static systemtap tci +threads tls usbredir +uuid vde +vhost-net virtfs +vnc xattr xen xfs qemu_softmmu_targets_i386 qemu_softmmu_targets_x86_64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_cris qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mipsel qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_s390x qemu_softmmu_targets_lm32 qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_ppcemb qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb qemu_user_targets_i386 qemu_user_targets_x86_64 qemu_user_targets_alpha qemu_user_targets_arm qemu_user_targets_cris qemu_user_targets_m68k qemu_user_targets_microblaze qemu_user_targets_microblazeel qemu_user_targets_mips qemu_user_targets_mipsel qemu_user_targets_ppc qemu_user_targets_ppc64 qemu_user_targets_sh4 qemu_user_targets_sh4eb qemu_user_targets_sparc qemu_user_targets_sparc64 qemu_user_targets_s390x qemu_user_targets_armeb qemu_user_targets_ppc64abi32 qemu_user_targets_sparc32plus qemu_user_targets_unicore32
+KEYWORDS=amd64 ~ppc ~ppc64 x86 ~x86-fbsd
+LICENSE=GPL-2 LGPL-2 BSD-2
+RDEPEND=!static? ( >=dev-libs/glib-2.0 sys-apps/pciutils sys-libs/zlib aio? ( dev-libs/libaio ) caps? ( sys-libs/libcap-ng ) curl? ( >=net-misc/curl-7.15.4 ) fdt? ( >=sys-apps/dtc-1.2.0 ) jpeg? ( virtual/jpeg ) ncurses? ( sys-libs/ncurses ) png? ( media-libs/libpng ) rbd? ( sys-cluster/ceph ) sasl? ( dev-libs/cyrus-sasl ) sdl? ( >=media-libs/libsdl-1.2.11 ) seccomp? ( >=sys-libs/libseccomp-1.0.0 ) spice? ( >=app-emulation/spice-0.9.0 ) tls? ( net-libs/gnutls ) uuid? ( >=sys-apps/util-linux-2.16.0 ) vde? ( net-misc/vde ) xattr? ( sys-apps/attr ) xfs? ( sys-fs/xfsprogs ) ) !app-emulation/kqemu sys-firmware/ipxe >=sys-firmware/seabios-1.7.0 sys-firmware/sgabios sys-firmware/vgabios alsa? ( >=media-libs/alsa-lib-1.0.13 ) bluetooth? ( net-wireless/bluez ) brltty? ( app-accessibility/brltty ) opengl? ( virtual/opengl ) pulseaudio? ( media-sound/pulseaudio ) python? ( =dev-lang/python-2*[ncurses] ) sdl? ( media-libs/libsdl[X] ) smartcard? ( dev-libs/nss ) spice? ( >=app-emulation/spice-protocol-0.12.0 ) systemtap? ( dev-util/systemtap ) usbredir? ( >=sys-apps/usbredir-0.3.4 x86? ( <sys-apps/usbredir-0.5 ) ) virtfs? ( sys-libs/libcap ) xen? ( app-emulation/xen-tools ) =dev-lang/python-2*
+REQUIRED_USE=|| ( qemu_softmmu_targets_i386 qemu_softmmu_targets_x86_64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_cris qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mipsel qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_s390x qemu_softmmu_targets_lm32 qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_ppcemb qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb ) static? ( !alsa !pulseaudio !bluetooth ) virtfs? ( xattr )
+SLOT=0
+SRC_URI=http://wiki.qemu.org/download/qemu-1.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de linux-info dd8fdcccc30f117673b4cba4ed4f74a7 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=51e1f658736dc2fce7bfdb17a7c78572
diff --git a/metadata/md5-cache/app-emulation/qemu-1.5.0 b/metadata/md5-cache/app-emulation/qemu-1.5.0
new file mode 100644
index 0000000..d653274
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/qemu-1.5.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare pretend setup test
+DEPEND=!static-softmmu? ( >=dev-libs/glib-2.0 sys-apps/pciutils sys-libs/zlib >=x11-libs/pixman-0.28.0 aio? ( dev-libs/libaio ) caps? ( sys-libs/libcap-ng ) curl? ( >=net-misc/curl-7.15.4 ) fdt? ( >=sys-apps/dtc-1.2.0 ) jpeg? ( virtual/jpeg ) ncurses? ( sys-libs/ncurses ) png? ( media-libs/libpng ) rbd? ( sys-cluster/ceph ) sasl? ( dev-libs/cyrus-sasl ) sdl? ( >=media-libs/libsdl-1.2.11 ) seccomp? ( >=sys-libs/libseccomp-1.0.1 ) spice? ( >=app-emulation/spice-0.12.0 ) tls? ( net-libs/gnutls ) uuid? ( >=sys-apps/util-linux-2.16.0 ) vde? ( net-misc/vde ) xattr? ( sys-apps/attr ) xfs? ( sys-fs/xfsprogs ) ) !app-emulation/kqemu qemu_softmmu_targets_i386? ( sys-firmware/ipxe ~sys-firmware/seabios-1.7.2.1 ~sys-firmware/sgabios-0.1_pre8 ~sys-firmware/vgabios-0.7a ) qemu_softmmu_targets_x86_64? ( sys-firmware/ipxe ~sys-firmware/seabios-1.7.2.1 ~sys-firmware/sgabios-0.1_pre8 ~sys-firmware/vgabios-0.7a ) alsa? ( >=media-libs/alsa-lib-1.0.13 ) bluetooth? ( net-wireless/bluez ) accessibility? ( app-accessibility/brltty ) iscsi? ( net-libs/libiscsi ) opengl? ( virtual/opengl ) pulseaudio? ( media-sound/pulseaudio ) python? ( python_targets_python2_5? ( dev-lang/python:2.5[ncurses,readline] ) python_targets_python2_6? ( dev-lang/python:2.6[ncurses,readline] ) python_targets_python2_7? ( dev-lang/python:2.7[ncurses,readline] ) dev-python/python-exec[python_targets_python2_5(-)?,python_targets_python2_6(-)?,python_targets_python2_7(-)?,-python_single_target_python2_5(-),-python_single_target_python2_6(-),-python_single_target_python2_7(-)] ) sdl? ( media-libs/libsdl[X] ) selinux? ( sec-policy/selinux-qemu ) smartcard? ( dev-libs/nss !app-emulation/libcacard ) spice? ( >=app-emulation/spice-protocol-0.12.3 ) systemtap? ( dev-util/systemtap ) usbredir? ( >=sys-apps/usbredir-0.6 ) virtfs? ( sys-libs/libcap ) xen? ( app-emulation/xen-tools ) app-text/texi2html =dev-lang/python-2* virtual/pkgconfig kernel_linux? ( >=sys-kernel/linux-headers-2.6.35 ) static-softmmu? ( >=dev-libs/glib-2.0[static-libs(+)] sys-apps/pciutils[static-libs(+)] sys-libs/zlib[static-libs(+)] >=x11-libs/pixman-0.28.0[static-libs(+)] aio? ( dev-libs/libaio[static-libs(+)] ) caps? ( sys-libs/libcap-ng[static-libs(+)] ) curl? ( >=net-misc/curl-7.15.4[static-libs(+)] ) fdt? ( >=sys-apps/dtc-1.2.0[static-libs(+)] ) jpeg? ( virtual/jpeg[static-libs(+)] ) ncurses? ( sys-libs/ncurses[static-libs(+)] ) png? ( media-libs/libpng[static-libs(+)] ) rbd? ( sys-cluster/ceph[static-libs(+)] ) sasl? ( dev-libs/cyrus-sasl[static-libs(+)] ) sdl? ( >=media-libs/libsdl-1.2.11[static-libs(+)] ) seccomp? ( >=sys-libs/libseccomp-1.0.1[static-libs(+)] ) spice? ( >=app-emulation/spice-0.12.0[static-libs(+)] ) tls? ( net-libs/gnutls[static-libs(+)] ) uuid? ( >=sys-apps/util-linux-2.16.0[static-libs(+)] ) vde? ( net-misc/vde[static-libs(+)] ) xattr? ( sys-apps/attr[static-libs(+)] ) xfs? ( sys-fs/xfsprogs[static-libs(+)] ) ) test? ( dev-libs/glib[utils] sys-devel/bc ) virtual/pkgconfig filecaps? ( sys-libs/libcap )
+DESCRIPTION=QEMU + Kernel-based Virtual Machine userland tools
+EAPI=5
+HOMEPAGE=http://www.qemu.org http://www.linux-kvm.org
+IUSE=accessibility +aio alsa bluetooth +caps +curl debug fdt iscsi +jpeg kernel_linux kernel_FreeBSD mixemu ncurses opengl +png pulseaudio python rbd sasl +seccomp sdl selinux smartcard spice static static-softmmu static-user systemtap tci test +threads tls usbredir +uuid vde +vhost-net virtfs +vnc xattr xen xfs qemu_softmmu_targets_i386 qemu_softmmu_targets_x86_64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_cris qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mipsel qemu_softmmu_targets_or32 qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_s390x qemu_softmmu_targets_unicore32 qemu_softmmu_targets_lm32 qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_ppcemb qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb qemu_user_targets_i386 qemu_user_targets_x86_64 qemu_user_targets_alpha qemu_user_targets_arm qemu_user_targets_cris qemu_user_targets_m68k qemu_user_targets_microblaze qemu_user_targets_microblazeel qemu_user_targets_mips qemu_user_targets_mipsel qemu_user_targets_or32 qemu_user_targets_ppc qemu_user_targets_ppc64 qemu_user_targets_sh4 qemu_user_targets_sh4eb qemu_user_targets_sparc qemu_user_targets_sparc64 qemu_user_targets_s390x qemu_user_targets_unicore32 qemu_user_targets_armeb qemu_user_targets_ppc64abi32 qemu_user_targets_sparc32plus python_targets_python2_5 python_targets_python2_6 python_targets_python2_7 +filecaps
+KEYWORDS=amd64 ~ppc ~ppc64 x86 ~x86-fbsd
+LICENSE=GPL-2 LGPL-2 BSD-2
+RDEPEND=!static-softmmu? ( >=dev-libs/glib-2.0 sys-apps/pciutils sys-libs/zlib >=x11-libs/pixman-0.28.0 aio? ( dev-libs/libaio ) caps? ( sys-libs/libcap-ng ) curl? ( >=net-misc/curl-7.15.4 ) fdt? ( >=sys-apps/dtc-1.2.0 ) jpeg? ( virtual/jpeg ) ncurses? ( sys-libs/ncurses ) png? ( media-libs/libpng ) rbd? ( sys-cluster/ceph ) sasl? ( dev-libs/cyrus-sasl ) sdl? ( >=media-libs/libsdl-1.2.11 ) seccomp? ( >=sys-libs/libseccomp-1.0.1 ) spice? ( >=app-emulation/spice-0.12.0 ) tls? ( net-libs/gnutls ) uuid? ( >=sys-apps/util-linux-2.16.0 ) vde? ( net-misc/vde ) xattr? ( sys-apps/attr ) xfs? ( sys-fs/xfsprogs ) ) !app-emulation/kqemu qemu_softmmu_targets_i386? ( sys-firmware/ipxe ~sys-firmware/seabios-1.7.2.1 ~sys-firmware/sgabios-0.1_pre8 ~sys-firmware/vgabios-0.7a ) qemu_softmmu_targets_x86_64? ( sys-firmware/ipxe ~sys-firmware/seabios-1.7.2.1 ~sys-firmware/sgabios-0.1_pre8 ~sys-firmware/vgabios-0.7a ) alsa? ( >=media-libs/alsa-lib-1.0.13 ) bluetooth? ( net-wireless/bluez ) accessibility? ( app-accessibility/brltty ) iscsi? ( net-libs/libiscsi ) opengl? ( virtual/opengl ) pulseaudio? ( media-sound/pulseaudio ) python? ( python_targets_python2_5? ( dev-lang/python:2.5[ncurses,readline] ) python_targets_python2_6? ( dev-lang/python:2.6[ncurses,readline] ) python_targets_python2_7? ( dev-lang/python:2.7[ncurses,readline] ) dev-python/python-exec[python_targets_python2_5(-)?,python_targets_python2_6(-)?,python_targets_python2_7(-)?,-python_single_target_python2_5(-),-python_single_target_python2_6(-),-python_single_target_python2_7(-)] ) sdl? ( media-libs/libsdl[X] ) selinux? ( sec-policy/selinux-qemu ) smartcard? ( dev-libs/nss !app-emulation/libcacard ) spice? ( >=app-emulation/spice-protocol-0.12.3 ) systemtap? ( dev-util/systemtap ) usbredir? ( >=sys-apps/usbredir-0.6 ) virtfs? ( sys-libs/libcap ) xen? ( app-emulation/xen-tools )
+REQUIRED_USE=|| ( qemu_softmmu_targets_i386 qemu_softmmu_targets_x86_64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_cris qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mipsel qemu_softmmu_targets_or32 qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_s390x qemu_softmmu_targets_unicore32 qemu_softmmu_targets_lm32 qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_ppcemb qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb ) python? ( || ( python_targets_python2_5 python_targets_python2_6 python_targets_python2_7 ) ) static? ( static-softmmu static-user ) static-softmmu? ( !alsa !pulseaudio !bluetooth !opengl ) virtfs? ( xattr )
+SLOT=0
+SRC_URI=http://wiki.qemu-project.org/download/qemu-1.5.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 fcaps 832d0c7d930e7df835c19b5d0a5f6f4b flag-o-matic d900015de4e092f26d8c0a18b6bd60de linux-info dd8fdcccc30f117673b4cba4ed4f74a7 multibuild c2f33b0eedd7bcfd5bc226baa8da7837 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 python-r1 c6b8362c67424d5095da2c9634cd25c9 python-utils-r1 e3288ba49a9a4406c283001e4d284aad toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f udev a9a8d051efb42bfe884c1db82ce161de user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=89de84f54bab616ecf4ecbb96a42f2aa
diff --git a/metadata/md5-cache/app-emulation/qemulator-0.5-r1 b/metadata/md5-cache/app-emulation/qemulator-0.5-r1
new file mode 100644
index 0000000..71e93fb
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/qemulator-0.5-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install unpack
+DESCRIPTION=a gtk/glade front-end for Qemu
+HOMEPAGE=http://qemulator.createweb.de/
+KEYWORDS=~x86 ~amd64 ~ppc
+LICENSE=GPL-2
+RDEPEND=>=dev-python/pygtk-2.8.6 >=app-emulation/qemu-0.8.1
+SLOT=0
+SRC_URI=http://qemulator.createweb.de/plugins/downloads/dodownload.php?file=Qemulator-0.5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=197629a6db23bdd876aa59f30bc7961a
diff --git a/metadata/md5-cache/app-emulation/vmware-dsp-1.3-r1 b/metadata/md5-cache/app-emulation/vmware-dsp-1.3-r1
new file mode 100644
index 0000000..5c69c2a
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/vmware-dsp-1.3-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=Allows you to use VMware Workstation with ESD and ARTS.
+HOMEPAGE=http://ftp.cvut.cz/vmware/
+IUSE=arts esd
+KEYWORDS=-* amd64 x86
+LICENSE=LGPL-2
+RDEPEND=sys-libs/glibc amd64? ( app-emulation/emul-linux-x86-soundlibs esd? ( media-sound/esound ) arts? ( kde-base/arts ) ) x86? ( esd? ( media-sound/esound ) arts? ( kde-base/arts ) )
+SLOT=0
+SRC_URI=http://platan.vc.cvut.cz/ftp/pub/vmware/vmwaredsp-1.3.tar.gz http://ftp.cvut.cz/vmware/vmwaredsp-1.3.tar.gz http://ftp.cvut.cz/vmware/obsolete/vmwaredsp-1.3.tar.gz http://knihovny.cvut.cz/ftp/pub/vmware/vmwaredsp-1.3.tar.gz http://knihovny.cvut.cz/ftp/pub/vmware/obsolete/vmwaredsp-1.3.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=6bf620ce8912304154c8346f3faf1163
diff --git a/metadata/md5-cache/app-i18n/gtk1-utf8-1.0 b/metadata/md5-cache/app-i18n/gtk1-utf8-1.0
new file mode 100644
index 0000000..83b75d5
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/gtk1-utf8-1.0
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install postinst
+DEPEND=>=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font
+DESCRIPTION=Fix for GTK1+ && ru_RU.UTF8
+HOMEPAGE=http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7c84385144e898cd8890033050403a87
diff --git a/metadata/md5-cache/app-i18n/gtk1-utf8-1.1 b/metadata/md5-cache/app-i18n/gtk1-utf8-1.1
new file mode 100644
index 0000000..e434a9f
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/gtk1-utf8-1.1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install postinst
+DEPEND=>=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font
+DESCRIPTION=Fix for GTK1+ && ru_RU.UTF8
+HOMEPAGE=http://wiki.fantoo.ru/index.php/HOWTO_GTK1_with_UTF8
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=x11-libs/gtk+-1.2.10-r11 x11-base/xorg-x11 media-fonts/terminus-font
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8f900b87b284d78e1dabfeb7958dbd05
diff --git a/metadata/md5-cache/app-i18n/libguess-0.2.0 b/metadata/md5-cache/app-i18n/libguess-0.2.0
new file mode 100644
index 0000000..f7693a1
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/libguess-0.2.0
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=LibGuess is Encoding Detection Library for Japanese, Chinese, Korean and Thai Languages
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.honeyplanet.jp/libguess-0.2.0-d7.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8288e3037e6551b3ca0b875dfaa3d4ed
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.10 b/metadata/md5-cache/app-i18n/librcc-0.2.10
new file mode 100644
index 0000000..2797d94
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.10
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.10.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4fa68054eb9b623b761bb2e6d3f10563
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.3-r4 b/metadata/md5-cache/app-i18n/librcc-0.2.3-r4
new file mode 100644
index 0000000..275a4cc
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.3-r4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.3.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9fc046854d908efddf503c5eda3ee7e6
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.5-r1 b/metadata/md5-cache/app-i18n/librcc-0.2.5-r1
new file mode 100644
index 0000000..ed385b2
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.5-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=065d57eb9a00c77264bc990bebfb88d6
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.6 b/metadata/md5-cache/app-i18n/librcc-0.2.6
new file mode 100644
index 0000000..a36800f
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.6
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=065d57eb9a00c77264bc990bebfb88d6
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.8 b/metadata/md5-cache/app-i18n/librcc-0.2.8
new file mode 100644
index 0000000..3c94ce6
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.8
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.8.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4b15013c6b8dcad30098969732cbffee
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.8-r1 b/metadata/md5-cache/app-i18n/librcc-0.2.8-r1
new file mode 100644
index 0000000..d7671dd
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.8-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.8.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a8641f6983732c19e7bc3b7505dc14f5
diff --git a/metadata/md5-cache/app-i18n/librcc-0.2.9 b/metadata/md5-cache/app-i18n/librcc-0.2.9
new file mode 100644
index 0000000..9f093c5
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcc-0.2.9
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+DESCRIPTION=LibRCC is Russian Encoding Conversion Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-i18n/librcd app-i18n/libguess dev-libs/libxml2 sys-libs/db app-i18n/enca app-text/aspell app-dicts/libtranslate
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcc-0.2.9.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4fa68054eb9b623b761bb2e6d3f10563
diff --git a/metadata/md5-cache/app-i18n/librcd-0.1.10 b/metadata/md5-cache/app-i18n/librcd-0.1.10
new file mode 100644
index 0000000..b267697
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcd-0.1.10
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=LibRCD is Russian Encoding Detection Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcd-0.1.10.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=354f45602bc3cead2ce0a4f6851bf961
diff --git a/metadata/md5-cache/app-i18n/librcd-0.1.11-r1 b/metadata/md5-cache/app-i18n/librcd-0.1.11-r1
new file mode 100644
index 0000000..82a7f50
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcd-0.1.11-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=LibRCD is Russian Encoding Detection Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcd-0.1.11.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=85c3e536698f14b23515b5aeaf56cc2d
diff --git a/metadata/md5-cache/app-i18n/librcd-0.1.8-r2 b/metadata/md5-cache/app-i18n/librcd-0.1.8-r2
new file mode 100644
index 0000000..344dd60
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/librcd-0.1.8-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=LibRCD is Russian Encoding Detection Library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/librcd-0.1.8.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=354f45602bc3cead2ce0a4f6851bf961
diff --git a/metadata/md5-cache/app-i18n/rcctools-0.1.1 b/metadata/md5-cache/app-i18n/rcctools-0.1.1
new file mode 100644
index 0000000..c4105a1
--- /dev/null
+++ b/metadata/md5-cache/app-i18n/rcctools-0.1.1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Command line interface to LibRCC
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/rusxmms/rcctools-0.1.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c502154b2a60b74975d730d36007251b
diff --git a/metadata/md5-cache/app-misc/ds-scripts-1.0 b/metadata/md5-cache/app-misc/ds-scripts-1.0
new file mode 100644
index 0000000..3c8ca64
--- /dev/null
+++ b/metadata/md5-cache/app-misc/ds-scripts-1.0
@@ -0,0 +1,7 @@
+DEFINED_PHASES=install unpack
+DEPEND=dev-lang/perl
+DESCRIPTION=DarkSoft Scripts
+KEYWORDS=alpha amd64 ppc sparc x86
+RDEPEND=dev-lang/perl
+SLOT=0
+_md5_=b77cb9aa89b31ee838328245cce94f64
diff --git a/metadata/md5-cache/app-misc/ds-scripts-1.0-r1 b/metadata/md5-cache/app-misc/ds-scripts-1.0-r1
new file mode 100644
index 0000000..66656f7
--- /dev/null
+++ b/metadata/md5-cache/app-misc/ds-scripts-1.0-r1
@@ -0,0 +1,7 @@
+DEFINED_PHASES=install unpack
+DEPEND=dev-lang/perl
+DESCRIPTION=DarkSoft Scripts
+KEYWORDS=alpha amd64 ppc sparc x86
+RDEPEND=dev-lang/perl
+SLOT=0
+_md5_=fab8be1625e03bba5aeee92544326146
diff --git a/metadata/md5-cache/app-misc/gcaldaemon-1.0_beta16 b/metadata/md5-cache/app-misc/gcaldaemon-1.0_beta16
new file mode 100644
index 0000000..ab81b2d
--- /dev/null
+++ b/metadata/md5-cache/app-misc/gcaldaemon-1.0_beta16
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install
+DEPEND=>=virtual/jre-1.5
+DESCRIPTION=Java program that offers two-way synchronization between Google Calendar and various iCalendar compatible calendar applications.
+HOMEPAGE=http://gcaldaemon.sourceforge.net/
+IUSE=doc
+KEYWORDS=amd64 x86
+LICENSE=Apache-2.0
+RDEPEND=>=virtual/jre-1.5
+SLOT=0
+SRC_URI=mirror://sourceforge/gcaldaemon/gcaldaemon-linux-1.0-beta16.zip
+_md5_=0a74ad116162327a773e878c8cabd45e
diff --git a/metadata/md5-cache/app-misc/lcdproc-0.4.5-r1 b/metadata/md5-cache/app-misc/lcdproc-0.4.5-r1
new file mode 100644
index 0000000..1589d40
--- /dev/null
+++ b/metadata/md5-cache/app-misc/lcdproc-0.4.5-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-apps/baselayout-1.6.4 >=sys-apps/sed-4 doc? ( >=app-text/docbook-sgml-utils-0.6.11-r2 ) ncurses? ( >=sys-libs/ncurses-5.3 ) svga? ( >=media-libs/svgalib-1.4.3 )
+DESCRIPTION=Client/Server suite to drive all kinds of LCD (-like) devices
+HOMEPAGE=http://lcdproc.org/
+IUSE=doc ncurses samba svga
+KEYWORDS=x86 amd64 ~sparc ppc
+LICENSE=GPL-2
+RDEPEND=>=sys-apps/baselayout-1.6.4 >=sys-apps/sed-4 doc? ( >=app-text/docbook-sgml-utils-0.6.11-r2 ) ncurses? ( >=sys-libs/ncurses-5.3 ) svga? ( >=media-libs/svgalib-1.4.3 )
+SLOT=0
+SRC_URI=mirror://sourceforge/lcdproc/lcdproc-0.4.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=abb82884ed99b82e5e96c36dd3280359
diff --git a/metadata/md5-cache/app-misc/mc-4.6.1-r10 b/metadata/md5-cache/app-misc/mc-4.6.1-r10
new file mode 100644
index 0000000..fabdb69
--- /dev/null
+++ b/metadata/md5-cache/app-misc/mc-4.6.1-r10
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) dev-util/pkgconfig
+DESCRIPTION=GNU Midnight Commander cli-based file manager
+HOMEPAGE=http://www.ibiblio.org/mc/
+IUSE=7zip X gpm ncurses nls pam samba slang unicode
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) )
+SLOT=0
+SRC_URI=http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz mirror://gentoo/mc-4.6.1-utf8-r2.patch.bz2 7zip? ( http://sgh-punk.narod.ru/files/u7z/u7z-4.29.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c87c54a86974e2ffd4206fd0a33daa68
diff --git a/metadata/md5-cache/app-misc/mc-4.6.1-r11 b/metadata/md5-cache/app-misc/mc-4.6.1-r11
new file mode 100644
index 0000000..9f16640
--- /dev/null
+++ b/metadata/md5-cache/app-misc/mc-4.6.1-r11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install setup unpack
+DEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) dev-util/pkgconfig
+DESCRIPTION=GNU Midnight Commander cli-based file manager
+HOMEPAGE=http://www.ibiblio.org/mc/
+IUSE=7zip X gpm ncurses nls pam samba slang unicode pcre
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) )
+SLOT=4.6
+SRC_URI=http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz mirror://gentoo/mc-4.6.1-utf8-r2.patch.bz2 7zip? ( http://sgh-punk.narod.ru/files/u7z/u7z-4.29.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=70be1e5f534e58d744d7c900e10a0fe6
diff --git a/metadata/md5-cache/app-misc/mc-4.6.1-r7 b/metadata/md5-cache/app-misc/mc-4.6.1-r7
new file mode 100644
index 0000000..20271dd
--- /dev/null
+++ b/metadata/md5-cache/app-misc/mc-4.6.1-r7
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( ~sys-libs/slang-1.4.9 ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) dev-util/pkgconfig
+DESCRIPTION=GNU Midnight Commander cli-based file manager
+HOMEPAGE=http://www.ibiblio.org/mc/
+IUSE=7zip X gpm ncurses nls pam samba slang unicode
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( ~sys-libs/slang-1.4.9 ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) )
+SLOT=0
+SRC_URI=http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz mirror://gentoo/mc-4.6.1-utf8-r2.patch.bz2 7zip? ( http://sgh-punk.narod.ru/files/u7z/u7z-4.29.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=981b005e47fe6aeb31ee4a48fd845446
diff --git a/metadata/md5-cache/app-misc/mc-4.6.1-r8 b/metadata/md5-cache/app-misc/mc-4.6.1-r8
new file mode 100644
index 0000000..e35ca92
--- /dev/null
+++ b/metadata/md5-cache/app-misc/mc-4.6.1-r8
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) dev-util/pkgconfig
+DESCRIPTION=GNU Midnight Commander cli-based file manager
+HOMEPAGE=http://www.ibiblio.org/mc/
+IUSE=7zip X gpm ncurses nls pam samba slang unicode
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) )
+SLOT=0
+SRC_URI=http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz mirror://gentoo/mc-4.6.1-utf8-r2.patch.bz2 7zip? ( http://sgh-punk.narod.ru/files/u7z/u7z-4.29.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=665ec822736bb7b106115d54b759a392
diff --git a/metadata/md5-cache/app-misc/mc-4.6.1-r9 b/metadata/md5-cache/app-misc/mc-4.6.1-r9
new file mode 100644
index 0000000..c312573
--- /dev/null
+++ b/metadata/md5-cache/app-misc/mc-4.6.1-r9
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) dev-util/pkgconfig
+DESCRIPTION=GNU Midnight Commander cli-based file manager
+HOMEPAGE=http://www.ibiblio.org/mc/
+IUSE=7zip X gpm ncurses nls pam samba slang unicode
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=kernel_linux? ( >=sys-fs/e2fsprogs-1.19 ) ncurses? ( >=sys-libs/ncurses-5.2-r5 ) =dev-libs/glib-2* pam? ( >=sys-libs/pam-0.72 ) gpm? ( >=sys-libs/gpm-1.19.3 ) slang? ( sys-libs/slang ) samba? ( >=net-fs/samba-3.0.0 ) X? ( x11-libs/libX11 x11-libs/libICE x11-libs/libXau x11-libs/libXdmcp x11-libs/libSM ) x86? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) ppc? ( 7zip? ( >=app-arch/p7zip-4.16 ) ) amd64? ( 7zip? ( >=app-arch/p7zip-4.16 ) )
+SLOT=0
+SRC_URI=http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.1.tar.gz mirror://gentoo/mc-4.6.1-utf8-r2.patch.bz2 7zip? ( http://sgh-punk.narod.ru/files/u7z/u7z-4.29.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f2725ac6ee04730d425bbcbeb198e1f7
diff --git a/metadata/md5-cache/app-misc/mumpot-0.5 b/metadata/md5-cache/app-misc/mumpot-0.5
new file mode 100644
index 0000000..1e4b21c
--- /dev/null
+++ b/metadata/md5-cache/app-misc/mumpot-0.5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 >=x11-libs/gtk+-2 media-libs/libpng media-libs/jpeg app-arch/bzip2 net-wireless/bluez-libs curl? ( net-misc/curl ) nls? ( sys-devel/gettext )
+DESCRIPTION=OSM map viewing, routing and simple editing program
+HOMEPAGE=http://www.mumpot.org/
+IUSE=nls curl
+KEYWORDS=x86 amd64
+LICENSE=GPL-3
+RDEPEND=dev-libs/libxml2 >=x11-libs/gtk+-2 media-libs/libpng media-libs/jpeg app-arch/bzip2 net-wireless/bluez-libs curl? ( net-misc/curl ) nls? ( sys-devel/gettext )
+SLOT=0
+SRC_URI=http://www.mumpot.org/download/mumpot-0.5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e330a9730f0c42d2ecf007e2eedf9507
diff --git a/metadata/md5-cache/app-misc/navit-0.0.4 b/metadata/md5-cache/app-misc/navit-0.0.4
new file mode 100644
index 0000000..4ca6da7
--- /dev/null
+++ b/metadata/md5-cache/app-misc/navit-0.0.4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/glib:2 garmin? ( dev-libs/libgarmin ) gtk? ( x11-libs/gtk+:2 x11-misc/xkbd ) sdl? ( media-libs/libsdl media-libs/sdl-image >=dev-games/cegui-0.5 media-libs/quesoglc ) python? ( dev-lang/python ) dbus? ( sys-apps/dbus ) gps? ( sci-geosciences/gpsd ) speechd? ( app-accessibility/speechd ) dev-util/pkgconfig
+DESCRIPTION=An open-source car navigation system with a routing engine.
+EAPI=1
+HOMEPAGE=http://www.navit-project.org
+IUSE=dbus garmin gps gtk nls python sdl speechd
+KEYWORDS=~amd64
+LICENSE=LGPL-2
+RDEPEND=dev-libs/glib:2 garmin? ( dev-libs/libgarmin ) gtk? ( x11-libs/gtk+:2 x11-misc/xkbd ) sdl? ( media-libs/libsdl media-libs/sdl-image >=dev-games/cegui-0.5 media-libs/quesoglc ) python? ( dev-lang/python ) dbus? ( sys-apps/dbus ) gps? ( sci-geosciences/gpsd ) speechd? ( app-accessibility/speechd )
+SLOT=0
+SRC_URI=mirror://sourceforge/roadnav/navit-0.0.4.tar.gz
+_md5_=40ad9dd40cd38d46c4d499297fb18ad6
diff --git a/metadata/md5-cache/app-misc/navit-9999-r1 b/metadata/md5-cache/app-misc/navit-9999-r1
new file mode 100644
index 0000000..9fc6187
--- /dev/null
+++ b/metadata/md5-cache/app-misc/navit-9999-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install preinst unpack
+DEPEND=dev-libs/glib:2 garmin? ( dev-libs/libgarmin ) gtk? ( x11-libs/gtk+:2 x11-misc/xkbd ) sdl? ( media-libs/libsdl media-libs/sdl-image >=dev-games/cegui-0.5 media-libs/quesoglc ) python? ( dev-lang/python ) dbus? ( sys-apps/dbus ) gps? ( sci-geosciences/gpsd ) speechd? ( app-accessibility/speechd ) dev-util/pkgconfig dev-vcs/subversion net-misc/rsync
+DESCRIPTION=An open-source car navigation system with a routing engine.
+EAPI=1
+HOMEPAGE=http://www.navit-project.org
+IUSE=dbus garmin gps gtk nls python sdl speechd
+KEYWORDS=~amd64
+LICENSE=LGPL-2
+RDEPEND=dev-libs/glib:2 garmin? ( dev-libs/libgarmin ) gtk? ( x11-libs/gtk+:2 x11-misc/xkbd ) sdl? ( media-libs/libsdl media-libs/sdl-image >=dev-games/cegui-0.5 media-libs/quesoglc ) python? ( dev-lang/python ) dbus? ( sys-apps/dbus ) gps? ( sci-geosciences/gpsd ) speechd? ( app-accessibility/speechd )
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 subversion e80e84db0fc102c2959858102060bec9 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=505108163aea4e1f9db84c5fbb37f70b
diff --git a/metadata/md5-cache/app-misc/roadnav-0.19 b/metadata/md5-cache/app-misc/roadnav-0.19
new file mode 100644
index 0000000..101a610
--- /dev/null
+++ b/metadata/md5-cache/app-misc/roadnav-0.19
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup
+DEPEND==x11-libs/wxGTK-2.6* ~dev-libs/libroadnav-0.19 festival? ( app-accessibility/festival ) flite? ( app-accessibility/flite ) gps? ( sci-geosciences/gpsd )
+DESCRIPTION=Roadnav is a street map application with routing and GPS support
+HOMEPAGE=http://roadnav.sourceforge.net
+IUSE=gps festival flite openstreetmap scripting
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND==x11-libs/wxGTK-2.6* ~dev-libs/libroadnav-0.19 festival? ( app-accessibility/festival ) flite? ( app-accessibility/flite ) gps? ( sci-geosciences/gpsd )
+SLOT=0
+SRC_URI=mirror://sourceforge/roadnav/roadnav-0.19.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=a1b2923dd6f7803b0517a9c2eb5b220d
diff --git a/metadata/md5-cache/app-misc/roadnav-0.20_alpha b/metadata/md5-cache/app-misc/roadnav-0.20_alpha
new file mode 100644
index 0000000..3b07aab
--- /dev/null
+++ b/metadata/md5-cache/app-misc/roadnav-0.20_alpha
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup
+DEPEND==x11-libs/wxGTK-2.6* ~dev-libs/libroadnav-0.20_alpha festival? ( app-accessibility/festival ) flite? ( app-accessibility/flite ) gps? ( sci-geosciences/gpsd )
+DESCRIPTION=Roadnav is a street map application with routing and GPS support
+HOMEPAGE=http://roadnav.sourceforge.net
+IUSE=gps festival flite openstreetmap scripting
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND==x11-libs/wxGTK-2.6* ~dev-libs/libroadnav-0.20_alpha festival? ( app-accessibility/festival ) flite? ( app-accessibility/flite ) gps? ( sci-geosciences/gpsd )
+SLOT=0
+SRC_URI=mirror://sourceforge/roadnav/roadnav-0.20alpha.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=f43d5b92afc7d47818956f8aa2efb97a
diff --git a/metadata/md5-cache/app-misc/sshsleeper-0.1 b/metadata/md5-cache/app-misc/sshsleeper-0.1
new file mode 100644
index 0000000..4196d3b
--- /dev/null
+++ b/metadata/md5-cache/app-misc/sshsleeper-0.1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install postinst
+DESCRIPTION=just a sleep app to be used for ssh backdoors
+HOMEPAGE=http://dside.dyndns.org/
+KEYWORDS=x86 amd64
+LICENSE=GPL
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3a52cafa03326fbc0d7d780c47daea6e
diff --git a/metadata/md5-cache/app-misc/tangogps-0.9.3 b/metadata/md5-cache/app-misc/tangogps-0.9.3
new file mode 100644
index 0000000..6db665f
--- /dev/null
+++ b/metadata/md5-cache/app-misc/tangogps-0.9.3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install
+DEPEND=sys-devel/gettext x11-libs/gtk+ sys-apps/dbus gnome-base/gconf net-misc/curl >=sci-geosciences/gpsd-2.34
+DESCRIPTION=tangoGPS is a lightweight and fast mapping application.
+HOMEPAGE=http://www.tangogps.org/
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.tangogps.org/downloads/tangogps-0.9.3.tar.gz
+_md5_=ec066715b518711842e801df4d819231
diff --git a/metadata/md5-cache/app-text/a2ps-4.13c-r4 b/metadata/md5-cache/app-text/a2ps-4.13c-r4
new file mode 100644
index 0000000..378290a
--- /dev/null
+++ b/metadata/md5-cache/app-text/a2ps-4.13c-r4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-devel/automake-1.6 >=sys-devel/autoconf-2.57 >=dev-util/gperf-2.7.2 || ( >=dev-util/yacc-1.9.1 sys-devel/bison ) virtual/ghostscript >=app-text/psutils-1.17 tetex? ( virtual/tetex ) sys-devel/gnuconfig
+DESCRIPTION=Any to PostScript filter
+HOMEPAGE=http://www.inf.enst.fr/~demaille/a2ps/
+IUSE=nls tetex cjk vanilla
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc-macos ~ppc64 ~sparc x86
+LICENSE=GPL-2
+RDEPEND=virtual/ghostscript >=app-text/psutils-1.17 tetex? ( virtual/tetex ) nls? ( sys-devel/gettext )
+SLOT=0
+SRC_URI=mirror://gentoo/a2ps-4.13c.tar.gz cjk? ( http://dev.gentoo.org/~usata/distfiles/a2ps-4.13c-ja_nls.patch.gz )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnuconfig ee02e61d6c68cee478e2e69214b7caef multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d038508e2e4cf9b9ea4aa3023f18b4ce
diff --git a/metadata/md5-cache/app-text/a2ps-4.13c-r6 b/metadata/md5-cache/app-text/a2ps-4.13c-r6
new file mode 100644
index 0000000..482f492
--- /dev/null
+++ b/metadata/md5-cache/app-text/a2ps-4.13c-r6
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=dev-util/gperf-2.7.2 || ( >=dev-util/yacc-1.9.1 sys-devel/bison ) virtual/ghostscript >=app-text/psutils-1.17 tetex? ( virtual/tetex ) nls? ( sys-devel/gettext ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Any to PostScript filter
+HOMEPAGE=http://www.inf.enst.fr/~demaille/a2ps/
+IUSE=nls tetex cjk vanilla
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ~ppc-macos ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=virtual/ghostscript || ( sys-apps/mktemp sys-freebsd/freebsd-ubin ) >=app-text/psutils-1.17 tetex? ( virtual/tetex ) nls? ( virtual/libintl )
+SLOT=0
+SRC_URI=mirror://gentoo/a2ps-4.13c.tar.gz cjk? ( http://dev.gentoo.org/~usata/distfiles/a2ps-4.13c-ja_nls.patch.gz )
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a45b7c82d8ca72c3b44cc7ea6c1ff91c
diff --git a/metadata/md5-cache/app-text/mpage-2.5.4-r1 b/metadata/md5-cache/app-text/mpage-2.5.4-r1
new file mode 100644
index 0000000..5b1f212
--- /dev/null
+++ b/metadata/md5-cache/app-text/mpage-2.5.4-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=virtual/libc
+DESCRIPTION=Many to one page printing utility
+HOMEPAGE=http://www.mesa.nl/
+KEYWORDS=x86 ~sparc amd64 ~ppc
+LICENSE=freedist
+RDEPEND=virtual/libc
+SLOT=0
+SRC_URI=http://www.mesa.nl/pub/mpage/mpage-2.5.4.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f4603f48baa65e13f33490d3da874bf9
diff --git a/metadata/md5-cache/dev-db/freetds-0.82-r1 b/metadata/md5-cache/dev-db/freetds-0.82-r1
new file mode 100644
index 0000000..7239489
--- /dev/null
+++ b/metadata/md5-cache/dev-db/freetds-0.82-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=odbc? ( dev-db/unixODBC )
+DESCRIPTION=Tabular Datastream Library.
+HOMEPAGE=http://www.freetds.org/
+IUSE=odbc mssql
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=odbc? ( dev-db/unixODBC )
+RESTRICT=test
+SLOT=0
+SRC_URI=http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=87e4abd695a733d569f0c6d91a28cfde
diff --git a/metadata/md5-cache/dev-db/freetds-0.82-r2 b/metadata/md5-cache/dev-db/freetds-0.82-r2
new file mode 100644
index 0000000..1794376
--- /dev/null
+++ b/metadata/md5-cache/dev-db/freetds-0.82-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=odbc? ( dev-db/unixODBC )
+DESCRIPTION=Tabular Datastream Library.
+HOMEPAGE=http://www.freetds.org/
+IUSE=odbc mssql
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=odbc? ( dev-db/unixODBC )
+RESTRICT=test
+SLOT=0
+SRC_URI=http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2620639cb06ddcbc85855c4168940b11
diff --git a/metadata/md5-cache/dev-db/freetds-0.82-r3 b/metadata/md5-cache/dev-db/freetds-0.82-r3
new file mode 100644
index 0000000..dadd886
--- /dev/null
+++ b/metadata/md5-cache/dev-db/freetds-0.82-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=odbc? ( dev-db/unixODBC )
+DESCRIPTION=Tabular Datastream Library.
+HOMEPAGE=http://www.freetds.org/
+IUSE=odbc mssql
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=odbc? ( dev-db/unixODBC )
+RESTRICT=test
+SLOT=0
+SRC_URI=http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=6fb1d30cd35ab6e154008a627289d7ef
diff --git a/metadata/md5-cache/dev-db/freetds-0.82-r4 b/metadata/md5-cache/dev-db/freetds-0.82-r4
new file mode 100644
index 0000000..aa57a56
--- /dev/null
+++ b/metadata/md5-cache/dev-db/freetds-0.82-r4
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=odbc? ( dev-db/unixODBC )
+DESCRIPTION=Tabular Datastream Library.
+HOMEPAGE=http://www.freetds.org/
+IUSE=odbc mssql
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=odbc? ( dev-db/unixODBC )
+RESTRICT=test
+SLOT=0
+SRC_URI=http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=5922a67fa5fd712702d7e03591867c96
diff --git a/metadata/md5-cache/dev-db/freetds-0.82-r5 b/metadata/md5-cache/dev-db/freetds-0.82-r5
new file mode 100644
index 0000000..cbcce4f
--- /dev/null
+++ b/metadata/md5-cache/dev-db/freetds-0.82-r5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=odbc? ( dev-db/unixODBC )
+DESCRIPTION=Tabular Datastream Library.
+HOMEPAGE=http://www.freetds.org/
+IUSE=odbc mssql
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=odbc? ( dev-db/unixODBC )
+RESTRICT=test
+SLOT=0
+SRC_URI=http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.82.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e25a9054a106486f97c5b5840f71e0e7
diff --git a/metadata/md5-cache/dev-db/oracle-instantclient-basic-11.2.0.2-r1 b/metadata/md5-cache/dev-db/oracle-instantclient-basic-11.2.0.2-r1
new file mode 100644
index 0000000..f0c742a
--- /dev/null
+++ b/metadata/md5-cache/dev-db/oracle-instantclient-basic-11.2.0.2-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install nofetch postinst setup unpack
+DEPEND=app-arch/unzip
+DESCRIPTION=Oracle 11g client installation for Linux with SDK
+HOMEPAGE=http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
+KEYWORDS=-* x86 amd64
+LICENSE=OTN
+RDEPEND=dev-libs/libaio
+RESTRICT=fetch
+SLOT=0
+SRC_URI=x86? ( instantclient-basic-linux32-11.2.0.2.0.zip instantclient-sdk-linux32-11.2.0.2.0.zip ) amd64? ( instantclient-basic-linux-x86-64-11.2.0.2.0.zip instantclient-sdk-linux-x86-64-11.2.0.2.0.zip )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3ef9388769b14bfcf4c3acf805afebd6
diff --git a/metadata/md5-cache/dev-lang/php-5.3.5-r2 b/metadata/md5-cache/dev-lang/php-5.3.5-r2
new file mode 100644
index 0000000..d0e5bc3
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/php-5.3.5-r2
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=!dev-lang/php:5 >=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-7.9[unicode] adabas? ( >=dev-db/unixODBC-1.8.13 ) apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) birdstep? ( >=dev-db/unixODBC-1.8.13 ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( !gd-external? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) db2? ( >=dev-db/unixODBC-1.8.13 ) dbmaker? ( >=dev-db/unixODBC-1.8.13 ) empress? ( >=dev-db/unixODBC-1.8.13 ) empress-bcs? ( >=dev-db/unixODBC-1.8.13 ) enchant? ( app-text/enchant ) esoob? ( >=dev-db/unixODBC-1.8.13 ) exif? ( !gd? ( !gd-external? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) ) firebird? ( dev-db/firebird ) fpm? ( >=dev-libs/libevent-1.4.12 ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gd-external? ( media-libs/gd ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( !oci8? ( >=net-nds/openldap-1.2.11 ) ) ldap-sasl? ( !oci8? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sapdb? ( >=dev-db/unixODBC-1.8.13 ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) solid? ( >=dev-db/unixODBC-1.8.13 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( =dev-db/sqlite-2* pdo? ( =dev-db/sqlite-3* ) ) sqlite3? ( =dev-db/sqlite-3* ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( !gd-external? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 apache2? ( =www-servers/apache-2* ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The PHP language runtime engine: CLI, CGI, FPM/FastCGI, Apache2 and embed SAPIs.
+EAPI=2
+HOMEPAGE=http://php.net/
+IUSE=kolab +cli cgi fpm embed apache2 threads adabas bcmath berkdb birdstep bzip2 calendar cdb cjk crypt +ctype curl curlwrappers db2 dbmaker debug doc empress empress-bcs enchant esoob exif frontbase +fileinfo +filter firebird flatfile ftp gd gd-external gdbm gmp +hash +iconv imap inifile interbase intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash mssql mysql mysqlnd mysqli nls oci8 oci8-instant-client odbc pcntl pdo +phar pic +posix postgres qdbm readline recode sapdb +session sharedext sharedmem +simplexml snmp soap sockets solid spell sqlite sqlite3 ssl sybase-ct sysvipc tidy +tokenizer truetype unicode wddx xml xmlreader xmlwriter xmlrpc xpm xsl zip zlib suhosin apache2
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc x86
+LICENSE=PHP-3
+PDEPEND=doc? ( app-doc/php-docs ) suhosin? ( dev-php5/suhosin )
+PROVIDE=virtual/php
+RDEPEND=!dev-lang/php:5 >=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-7.9[unicode] adabas? ( >=dev-db/unixODBC-1.8.13 ) apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) birdstep? ( >=dev-db/unixODBC-1.8.13 ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( !gd-external? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) db2? ( >=dev-db/unixODBC-1.8.13 ) dbmaker? ( >=dev-db/unixODBC-1.8.13 ) empress? ( >=dev-db/unixODBC-1.8.13 ) empress-bcs? ( >=dev-db/unixODBC-1.8.13 ) enchant? ( app-text/enchant ) esoob? ( >=dev-db/unixODBC-1.8.13 ) exif? ( !gd? ( !gd-external? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) ) firebird? ( dev-db/firebird ) fpm? ( >=dev-libs/libevent-1.4.12 ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gd-external? ( media-libs/gd ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( !oci8? ( >=net-nds/openldap-1.2.11 ) ) ldap-sasl? ( !oci8? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sapdb? ( >=dev-db/unixODBC-1.8.13 ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) solid? ( >=dev-db/unixODBC-1.8.13 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( =dev-db/sqlite-2* pdo? ( =dev-db/sqlite-3* ) ) sqlite3? ( =dev-db/sqlite-3* ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( !gd-external? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta truetype? ( || ( =dev-lang/php-5.3.5-r2[gd] =dev-lang/php-5.3.5-r2[gd-external] ) ) cjk? ( || ( =dev-lang/php-5.3.5-r2[gd] =dev-lang/php-5.3.5-r2[gd-external] ) ) exif? ( || ( =dev-lang/php-5.3.5-r2[gd] =dev-lang/php-5.3.5-r2[gd-external] ) ) xpm? ( =dev-lang/php-5.3.5-r2[gd] ) gd? ( =dev-lang/php-5.3.5-r2[zlib,-gd-external] ) gd-external? ( =dev-lang/php-5.3.5-r2[-gd] ) simplexml? ( =dev-lang/php-5.3.5-r2[xml] ) soap? ( =dev-lang/php-5.3.5-r2[xml] ) wddx? ( =dev-lang/php-5.3.5-r2[xml] ) xmlrpc? ( || ( =dev-lang/php-5.3.5-r2[xml] =dev-lang/php-5.3.5-r2[iconv] ) ) xmlreader? ( =dev-lang/php-5.3.5-r2[xml] ) xsl? ( =dev-lang/php-5.3.5-r2[xml] ) ldap-sasl? ( =dev-lang/php-5.3.5-r2[ldap,-oci8] ) adabas? ( =dev-lang/php-5.3.5-r2[odbc] ) birdstep? ( =dev-lang/php-5.3.5-r2[odbc] ) dbmaker? ( =dev-lang/php-5.3.5-r2[odbc] ) empress-bcs? ( =dev-lang/php-5.3.5-r2[empress] ) empress? ( =dev-lang/php-5.3.5-r2[odbc] ) esoob? ( =dev-lang/php-5.3.5-r2[odbc] ) db2? ( =dev-lang/php-5.3.5-r2[odbc] ) sapdb? ( =dev-lang/php-5.3.5-r2[odbc] ) solid? ( =dev-lang/php-5.3.5-r2[odbc] ) kolab? ( =dev-lang/php-5.3.5-r2[imap] ) mhash? ( =dev-lang/php-5.3.5-r2[hash] ) phar? ( =dev-lang/php-5.3.5-r2[hash] ) mysqlnd? ( || ( =dev-lang/php-5.3.5-r2[mysql] =dev-lang/php-5.3.5-r2[mysqli] =dev-lang/php-5.3.5-r2[pdo] ) ) oci8? ( =dev-lang/php-5.3.5-r2[-oci8-instant-client,-ldap-sasl] ) oci8-instant-client? ( =dev-lang/php-5.3.5-r2[-oci8] ) qdbm? ( =dev-lang/php-5.3.5-r2[-gdbm] ) readline? ( =dev-lang/php-5.3.5-r2[-libedit] ) recode? ( =dev-lang/php-5.3.5-r2[-imap,-mysql,-mysqli] ) firebird? ( =dev-lang/php-5.3.5-r2[-interbase] ) sharedmem? ( =dev-lang/php-5.3.5-r2[-threads] ) !cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( =dev-lang/php-5.3.5-r2[cli] ) ) ) ) ) enchant? ( !dev-php5/pecl-enchant ) fileinfo? ( !<dev-php5/pecl-fileinfo-1.0.4-r2 ) filter? ( !dev-php5/pecl-filter ) json? ( !dev-php5/pecl-json ) phar? ( !dev-php5/pecl-phar ) zip? ( !dev-php5/pecl-zip ) suhosin? ( =dev-lang/php-5.3*[unicode] ) apache2? ( =www-servers/apache-2* )
+SLOT=5.3
+SRC_URI=http://www.php.net/distributions/php-5.3.5.tar.bz2 mirror://gentoo/php-patchset-5.3.5-r1.tar.bz2 suhosin? ( http://download.suhosin.org/suhosin-patch-5.3.4-0.9.10.patch.gz )
+_eclasses_=apache-module 5c4c90da2d68c2dc8391666824f1293c autotools 16761a2f972abd686713e5967ff3c754 db-use 1c719875d6599536f956fafea9e1f404 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 php-common-r1 d75b670948f5cd85e8b1c0fccd11838b phpconfutils e108303831029e5b8a9d24b991b1d62a toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=4c06f1f37daa00eea92aae6a302bcbeb
diff --git a/metadata/md5-cache/dev-lang/php-5.3.9-r1 b/metadata/md5-cache/dev-lang/php-5.3.9-r1
new file mode 100644
index 0000000..9f7a123
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/php-5.3.9-r1
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=!dev-lang/php:5 >=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-8.12[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( =dev-db/sqlite-2* pdo? ( >=dev-db/sqlite-3.7.7.1 ) ) sqlite3? ( >=dev-db/sqlite-3.7.7.1 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta enchant? ( !dev-php5/pecl-enchant ) fileinfo? ( !<dev-php5/pecl-fileinfo-1.0.4-r2 ) filter? ( !dev-php5/pecl-filter ) json? ( !dev-php5/pecl-json ) phar? ( !dev-php5/pecl-phar ) zip? ( !dev-php5/pecl-zip ) sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 apache2? ( =www-servers/apache-2* ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The PHP language runtime engine: CLI, CGI, FPM/FastCGI, Apache2 and embed SAPIs.
+EAPI=4
+HOMEPAGE=http://php.net/
+IUSE=kolab embed +cli cgi fpm apache2 threads bcmath berkdb bzip2 calendar cdb cjk crypt +ctype curl curlwrappers debug doc enchant exif frontbase +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash mssql mysql mysqlnd mysqli nls oci8-instant-client odbc pcntl pdo +phar pic +posix postgres qdbm readline recode +session sharedmem +simplexml snmp soap sockets spell sqlite sqlite3 ssl sybase-ct sysvipc tidy +tokenizer truetype unicode wddx +xml xmlreader xmlwriter xmlrpc xpm xsl zip zlib suhosin apache2
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc x86
+LICENSE=PHP-3
+PDEPEND=doc? ( app-doc/php-docs )
+RDEPEND=!dev-lang/php:5 >=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-8.12[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( =dev-db/sqlite-2* pdo? ( >=dev-db/sqlite-3.7.7.1 ) ) sqlite3? ( >=dev-db/sqlite-3.7.7.1 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta enchant? ( !dev-php5/pecl-enchant ) fileinfo? ( !<dev-php5/pecl-fileinfo-1.0.4-r2 ) filter? ( !dev-php5/pecl-filter ) json? ( !dev-php5/pecl-json ) phar? ( !dev-php5/pecl-phar ) zip? ( !dev-php5/pecl-zip ) apache2? ( =www-servers/apache-2* )
+REQUIRED_USE=truetype? ( gd ) cjk? ( gd ) exif? ( gd ) xpm? ( gd ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xsl? ( xml ) ldap-sasl? ( ldap ) kolab? ( imap ) mhash? ( hash ) phar? ( hash ) mysqlnd? ( || ( mysql mysqli pdo ) ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysql !mysqli ) sharedmem? ( !threads ) !cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )
+SLOT=5.3
+SRC_URI=http://www.php.net/distributions/php-5.3.9.tar.bz2 http://olemarkus.org/~olemarkus/gentoo/php-patchset-5.3.9-r0.tar.bz2 suhosin? ( http://olemarkus.org/~olemarkus/gentoo/suhosin-patch-5.3.9-0.9.10-gentoo.patch.gz )
+_eclasses_=apache-module 5c4c90da2d68c2dc8391666824f1293c autotools 16761a2f972abd686713e5967ff3c754 db-use 1c719875d6599536f956fafea9e1f404 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=982b61def6161eada646307529a073f6
diff --git a/metadata/md5-cache/dev-lang/php-5.4.15-r1 b/metadata/md5-cache/dev-lang/php-5.4.15-r1
new file mode 100644
index 0000000..b51cc19
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/php-5.4.15-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst prepare prerm setup test
+DEPEND=>=app-admin/eselect-php-0.7.0[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 apache2? ( =www-servers/apache-2* ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The PHP language runtime engine: CLI, CGI, FPM/FastCGI, Apache2 and embed SAPIs.
+EAPI=5
+HOMEPAGE=http://php.net/
+IUSE=embed +cli cgi fpm apache2 threads bcmath berkdb bzip2 calendar cdb cjk crypt +ctype curl curlwrappers debug enchant exif frontbase +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash mssql mysql mysqlnd mysqli nls oci8-instant-client odbc pcntl pdo +phar +posix postgres qdbm readline recode selinux +session sharedmem +simplexml snmp soap sockets spell sqlite ssl sybase-ct sysvipc tidy +tokenizer truetype unicode wddx +xml xmlreader xmlwriter xmlrpc xpm xslt zip zlib apache2
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~amd64-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
+LICENSE=PHP-3
+RDEPEND=>=app-admin/eselect-php-0.7.0[apache2?,fpm?] >=dev-libs/libpcre-8.32[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu:= ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng:0= sys-libs/zlib ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) ) apache2? ( =www-servers/apache-2* )
+REQUIRED_USE=truetype? ( gd ) cjk? ( gd ) exif? ( gd ) xpm? ( gd ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xslt? ( xml ) ldap-sasl? ( ldap ) mhash? ( hash ) phar? ( hash ) mysqlnd? ( || ( mysql mysqli pdo ) ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysql !mysqli ) sharedmem? ( !threads ) !cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )
+SLOT=5.4
+SRC_URI=http://www.php.net/distributions/php-5.4.15.tar.bz2 http://dev.gentoo.org/~olemarkus/php/php-patchset-5.4-r2.tar.bz2
+_eclasses_=apache-module 5c4c90da2d68c2dc8391666824f1293c autotools 16761a2f972abd686713e5967ff3c754 db-use 1c719875d6599536f956fafea9e1f404 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=acf97e21154d0c7175c13839d409fbc5
diff --git a/metadata/md5-cache/dev-lang/php-5.4.7-r1 b/metadata/md5-cache/dev-lang/php-5.4.7-r1
new file mode 100644
index 0000000..0e9204b
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/php-5.4.7-r1
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare prerm setup test
+DEPEND=>=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-8.12[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite3? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 apache2? ( =www-servers/apache-2* ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The PHP language runtime engine: CLI, CGI, FPM/FastCGI, Apache2 and embed SAPIs.
+EAPI=4
+HOMEPAGE=http://php.net/
+IUSE=kolab embed +cli cgi fpm apache2 threads bcmath berkdb bzip2 calendar cdb cjk crypt +ctype curl curlwrappers debug doc enchant exif frontbase +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash mssql mysql mysqlnd mysqli nls oci8-instant-client odbc pcntl pdo +phar pic +posix postgres qdbm readline recode selinux +session sharedmem +simplexml snmp soap sockets spell sqlite3 ssl sybase-ct sysvipc tidy +tokenizer truetype unicode wddx +xml xmlreader xmlwriter xmlrpc xpm xsl zip zlib apache2
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~amd64-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
+LICENSE=PHP-3
+PDEPEND=doc? ( app-doc/php-docs )
+RDEPEND=>=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-8.12[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite3? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) ) apache2? ( =www-servers/apache-2* )
+REQUIRED_USE=truetype? ( gd ) cjk? ( gd ) exif? ( gd ) xpm? ( gd ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xsl? ( xml ) ldap-sasl? ( ldap ) kolab? ( imap ) mhash? ( hash ) phar? ( hash ) mysqlnd? ( || ( mysql mysqli pdo ) ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysql !mysqli ) sharedmem? ( !threads ) !cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )
+SLOT=5.4
+SRC_URI=http://www.php.net/distributions/php-5.4.7.tar.bz2 http://dev.gentoo.org/~olemarkus/php/php-patchset-5.4-2.tar.bz2
+_eclasses_=apache-module 5c4c90da2d68c2dc8391666824f1293c autotools 16761a2f972abd686713e5967ff3c754 db-use 1c719875d6599536f956fafea9e1f404 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=b295b068f6d8559452f5a1924dad7574
diff --git a/metadata/md5-cache/dev-lang/php-5.4.8-r1 b/metadata/md5-cache/dev-lang/php-5.4.8-r1
new file mode 100644
index 0000000..0e24ea9
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/php-5.4.8-r1
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare prerm setup test
+DEPEND=>=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-8.12[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite3? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta sys-devel/flex >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 apache2? ( =www-servers/apache-2* ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The PHP language runtime engine: CLI, CGI, FPM/FastCGI, Apache2 and embed SAPIs.
+EAPI=4
+HOMEPAGE=http://php.net/
+IUSE=kolab embed +cli cgi fpm apache2 threads bcmath berkdb bzip2 calendar cdb cjk crypt +ctype curl curlwrappers debug doc enchant exif frontbase +fileinfo +filter firebird flatfile ftp gd gdbm gmp +hash +iconv imap inifile intl iodbc ipv6 +json kerberos ldap ldap-sasl libedit mhash mssql mysql mysqlnd mysqli nls oci8-instant-client odbc pcntl pdo +phar pic +posix postgres qdbm readline recode selinux +session sharedmem +simplexml snmp soap sockets spell sqlite3 ssl sybase-ct sysvipc tidy +tokenizer truetype unicode wddx +xml xmlreader xmlwriter xmlrpc xpm xsl zip zlib apache2
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~amd64-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos
+LICENSE=PHP-3
+PDEPEND=doc? ( app-doc/php-docs )
+RDEPEND=>=app-admin/eselect-php-0.6.2 >=dev-libs/libpcre-8.12[unicode] apache2? ( www-servers/apache[threads=] ) berkdb? ( =sys-libs/db-4* ) bzip2? ( app-arch/bzip2 ) cdb? ( || ( dev-db/cdb dev-db/tinycdb ) ) cjk? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) crypt? ( >=dev-libs/libmcrypt-2.4 ) curl? ( >=net-misc/curl-7.10.5 ) enchant? ( app-text/enchant ) exif? ( !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) firebird? ( dev-db/firebird ) gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) gdbm? ( >=sys-libs/gdbm-1.8.0 ) gmp? ( >=dev-libs/gmp-4.1.2 ) iconv? ( virtual/libiconv ) imap? ( virtual/imap-c-client[ssl=] ) intl? ( dev-libs/icu ) iodbc? ( dev-db/libiodbc ) kerberos? ( virtual/krb5 ) kolab? ( >=net-libs/c-client-2004g-r1 ) ldap? ( >=net-nds/openldap-1.2.11 ) ldap-sasl? ( dev-libs/cyrus-sasl >=net-nds/openldap-1.2.11 ) libedit? ( || ( sys-freebsd/freebsd-lib dev-libs/libedit ) ) mssql? ( dev-db/freetds[mssql] ) !mysqlnd? ( mysql? ( virtual/mysql ) mysqli? ( >=virtual/mysql-4.1 ) ) nls? ( sys-devel/gettext ) oci8-instant-client? ( dev-db/oracle-instantclient-basic ) odbc? ( >=dev-db/unixODBC-1.8.13 ) postgres? ( dev-db/postgresql-base ) qdbm? ( dev-db/qdbm ) readline? ( sys-libs/readline ) recode? ( app-text/recode ) sharedmem? ( dev-libs/mm ) simplexml? ( >=dev-libs/libxml2-2.6.8 ) snmp? ( >=net-analyzer/net-snmp-5.2 ) soap? ( >=dev-libs/libxml2-2.6.8 ) spell? ( >=app-text/aspell-0.50 ) sqlite3? ( >=dev-db/sqlite-3.7.6.3 ) ssl? ( >=dev-libs/openssl-0.9.7 ) sybase-ct? ( dev-db/freetds ) tidy? ( app-text/htmltidy ) truetype? ( =media-libs/freetype-2* >=media-libs/t1lib-5.0.0 !gd? ( virtual/jpeg media-libs/libpng sys-libs/zlib ) ) unicode? ( dev-libs/oniguruma ) wddx? ( >=dev-libs/libxml2-2.6.8 ) xml? ( >=dev-libs/libxml2-2.6.8 ) xmlrpc? ( >=dev-libs/libxml2-2.6.8 virtual/libiconv ) xmlreader? ( >=dev-libs/libxml2-2.6.8 ) xmlwriter? ( >=dev-libs/libxml2-2.6.8 ) xpm? ( x11-libs/libXpm virtual/jpeg media-libs/libpng sys-libs/zlib ) xsl? ( dev-libs/libxslt >=dev-libs/libxml2-2.6.8 ) zip? ( sys-libs/zlib ) zlib? ( sys-libs/zlib ) virtual/mta fpm? ( selinux? ( sec-policy/selinux-phpfpm ) ) apache2? ( =www-servers/apache-2* )
+REQUIRED_USE=truetype? ( gd ) cjk? ( gd ) exif? ( gd ) xpm? ( gd ) gd? ( zlib ) simplexml? ( xml ) soap? ( xml ) wddx? ( xml ) xmlrpc? ( || ( xml iconv ) ) xmlreader? ( xml ) xsl? ( xml ) ldap-sasl? ( ldap ) kolab? ( imap ) mhash? ( hash ) phar? ( hash ) mysqlnd? ( || ( mysql mysqli pdo ) ) qdbm? ( !gdbm ) readline? ( !libedit ) recode? ( !imap !mysql !mysqli ) sharedmem? ( !threads ) !cli? ( !cgi? ( !fpm? ( !apache2? ( !embed? ( cli ) ) ) ) )
+SLOT=5.4
+SRC_URI=http://www.php.net/distributions/php-5.4.8.tar.bz2 http://dev.gentoo.org/~olemarkus/php/php-patchset-5.4-2.tar.bz2
+_eclasses_=apache-module 5c4c90da2d68c2dc8391666824f1293c autotools 16761a2f972abd686713e5967ff3c754 db-use 1c719875d6599536f956fafea9e1f404 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=c4ed6a03028c7fadf4c07f3963bb9ead
diff --git a/metadata/md5-cache/dev-libs/axis2c-0.96 b/metadata/md5-cache/dev-libs/axis2c-0.96
new file mode 100644
index 0000000..ebb3921
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/axis2c-0.96
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DEPEND=doc? ( app-doc/doxygen )
+DESCRIPTION=Axis2/C is a SOAP engine written in a portable subset of C++.
+HOMEPAGE=http://ws.apache.org/axis2/c/index.html
+KEYWORDS=amd64 x86
+LICENSE=Apache-2.0
+RDEPEND=doc? ( app-doc/doxygen )
+SLOT=0
+SRC_URI=http://apache.autinity.de/ws/axis2/c/0_96/axis2c-src-0.96.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=227eff210067c49bb23b7565436efd2f
diff --git a/metadata/md5-cache/dev-libs/libcutil-0.1.5 b/metadata/md5-cache/dev-libs/libcutil-0.1.5
new file mode 100644
index 0000000..4fd226b
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libcutil-0.1.5
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=Library of Miscellaneous C routines
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.opencomputingsolutions.com/projects/libcutil/libcutil-0.1.5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=de9fa3ac2e2141de7d0a13c9946c7e9e
diff --git a/metadata/md5-cache/dev-libs/libds-0.0.12 b/metadata/md5-cache/dev-libs/libds-0.0.12
new file mode 100644
index 0000000..f52d6f6
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.0.12
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://localhost/releases/opc-0.0.12.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d02d4a24d66d5c0dce3f3e4f43707bfc
diff --git a/metadata/md5-cache/dev-libs/libds-0.0.13 b/metadata/md5-cache/dev-libs/libds-0.0.13
new file mode 100644
index 0000000..5b976b8
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.0.13
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://localhost/releases/opc-0.0.13.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d02d4a24d66d5c0dce3f3e4f43707bfc
diff --git a/metadata/md5-cache/dev-libs/libds-0.0.14 b/metadata/md5-cache/dev-libs/libds-0.0.14
new file mode 100644
index 0000000..13a5d3e
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.0.14
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://localhost/releases/opc-0.0.14.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d02d4a24d66d5c0dce3f3e4f43707bfc
diff --git a/metadata/md5-cache/dev-libs/libds-0.0.14-r1 b/metadata/md5-cache/dev-libs/libds-0.0.14-r1
new file mode 100644
index 0000000..e6525f2
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.0.14-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/opc-0.0.14.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db5e53e5d1de3337342d40a2e29fae9f
diff --git a/metadata/md5-cache/dev-libs/libds-0.1.0 b/metadata/md5-cache/dev-libs/libds-0.1.0
new file mode 100644
index 0000000..ddbe495
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.1.0
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/opc-0.1.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db5e53e5d1de3337342d40a2e29fae9f
diff --git a/metadata/md5-cache/dev-libs/libds-0.1.1 b/metadata/md5-cache/dev-libs/libds-0.1.1
new file mode 100644
index 0000000..deff1fb
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.1.1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/opc-0.1.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db5e53e5d1de3337342d40a2e29fae9f
diff --git a/metadata/md5-cache/dev-libs/libds-0.1.2 b/metadata/md5-cache/dev-libs/libds-0.1.2
new file mode 100644
index 0000000..854b25c
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.1.2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/opc-0.1.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db5e53e5d1de3337342d40a2e29fae9f
diff --git a/metadata/md5-cache/dev-libs/libds-0.1.3 b/metadata/md5-cache/dev-libs/libds-0.1.3
new file mode 100644
index 0000000..2691ea1
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libds-0.1.3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/libxml2
+DESCRIPTION=LibDS is OS abstraction library
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/opc-0.1.3.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db5e53e5d1de3337342d40a2e29fae9f
diff --git a/metadata/md5-cache/dev-libs/libiconv-1.11-r2 b/metadata/md5-cache/dev-libs/libiconv-1.11-r2
new file mode 100644
index 0000000..cd13304
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libiconv-1.11-r2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=GNU charset conversion library for libc which doesn't implement it
+HOMEPAGE=http://www.gnu.org/software/libiconv/
+IUSE=build
+KEYWORDS=x86 amd64
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=mirror://gnu/libiconv/libiconv-1.11.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3077a1111bd6e2f6e5be903e8edf341a
diff --git a/metadata/md5-cache/dev-libs/libroadnav-0.19 b/metadata/md5-cache/dev-libs/libroadnav-0.19
new file mode 100644
index 0000000..ee2afc1
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libroadnav-0.19
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install setup
+DEPEND==x11-libs/wxGTK-2.6*
+DESCRIPTION=LibRoadnav is a library capable of plotting street maps and providing driving directions for US addresses
+HOMEPAGE=http://roadnav.sourceforge.net
+KEYWORDS=x86 amd64
+LICENSE=LGPL-2.1
+RDEPEND==x11-libs/wxGTK-2.6*
+SLOT=0
+SRC_URI=mirror://sourceforge/roadnav/libroadnav-0.19.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=8060675b74438f89bd3b125a66ef1854
diff --git a/metadata/md5-cache/dev-libs/libroadnav-0.20_alpha b/metadata/md5-cache/dev-libs/libroadnav-0.20_alpha
new file mode 100644
index 0000000..71c988b
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libroadnav-0.20_alpha
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install setup
+DEPEND==x11-libs/wxGTK-2.6*
+DESCRIPTION=LibRoadnav is a library capable of plotting street maps and providing driving directions for US addresses
+HOMEPAGE=http://roadnav.sourceforge.net
+KEYWORDS=x86 amd64
+LICENSE=LGPL-2.1
+RDEPEND==x11-libs/wxGTK-2.6*
+SLOT=0
+SRC_URI=mirror://sourceforge/roadnav/libroadnav-0.20alpha.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 wxwidgets 3315ffba81a98dea5d9837edb418a587
+_md5_=725d0f442efa7451d492e1ddf99d23cf
diff --git a/metadata/md5-cache/dev-libs/openproducer-1.1.0-r1 b/metadata/md5-cache/dev-libs/openproducer-1.1.0-r1
new file mode 100644
index 0000000..3dc55fe
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/openproducer-1.1.0-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=virtual/opengl >=dev-libs/openthreads-1.4.3 x11-libs/libXmu x11-libs/libX11 app-arch/unzip doc? ( app-doc/doxygen ) >=sys-apps/sed-4
+DESCRIPTION=a cross-platform C++/OpenGL library that is focused on Camera control
+HOMEPAGE=http://openscenegraph.org/
+IUSE=doc examples
+KEYWORDS=~x86 ~amd64
+LICENSE=OSGPL
+RDEPEND=virtual/opengl >=dev-libs/openthreads-1.4.3 x11-libs/libXmu x11-libs/libX11
+SLOT=0
+SRC_URI=http://www.openscenegraph.org/downloads/snapshots/OSG_OP_OT-1.2.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 fixheadtails f96922acc9287f1e889a1e50a6c8986e multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7b0f9d30c60c0960e1ab0cec41c7d546
diff --git a/metadata/md5-cache/dev-libs/openthreads-1.5.0-r1 b/metadata/md5-cache/dev-libs/openthreads-1.5.0-r1
new file mode 100644
index 0000000..772401e
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/openthreads-1.5.0-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-arch/unzip doc? ( app-doc/doxygen ) >=sys-apps/sed-4
+DESCRIPTION=a minimal & complete Object-Oriented thread interface for C++
+HOMEPAGE=http://www.openscenegraph.org/
+IUSE=doc examples
+KEYWORDS=~x86 ~amd64
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=http://www.openscenegraph.org/downloads/snapshots/OSG_OP_OT-1.2.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 fixheadtails f96922acc9287f1e889a1e50a6c8986e multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=061b700f172bff2e19a0812aef2ae4e0
diff --git a/metadata/md5-cache/dev-libs/rapidxml-1.13 b/metadata/md5-cache/dev-libs/rapidxml-1.13
new file mode 100644
index 0000000..fa3a154
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/rapidxml-1.13
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=RapidXml is an attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility.
+HOMEPAGE=http://rapidxml.sourceforge.net/
+KEYWORDS=x86 amd64
+LICENSE=MPL
+SLOT=0
+SRC_URI=mirror://sourceforge/rapidxml/rapidxml-1.13.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=586f59225b56adcf282429b2ead5e539
diff --git a/metadata/md5-cache/dev-libs/vtd-xml-2.6 b/metadata/md5-cache/dev-libs/vtd-xml-2.6
new file mode 100644
index 0000000..da4c345
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/vtd-xml-2.6
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=XimpleWare VTD-XML is, far and away, the industry's most advanced and powerful XML processing model for SOA and Cloud Computing!
+HOMEPAGE=http://vtd-xml.sourceforge.net/
+KEYWORDS=amd64 x86
+LICENSE=GPL
+SLOT=0
+SRC_URI=mirror://sourceforge/vtd-xml/ximpleware_2.6_c.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=5d026ccee30e0ee8d0d4f0d44987bab4
diff --git a/metadata/md5-cache/dev-php/pecl-rrd-1.0.5 b/metadata/md5-cache/dev-php/pecl-rrd-1.0.5
new file mode 100644
index 0000000..9583f60
--- /dev/null
+++ b/metadata/md5-cache/dev-php/pecl-rrd-1.0.5
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=>=net-analyzer/rrdtool-1.4.5-r1 || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 php_targets_php5-4? ( dev-lang/php:5.4 ) php_targets_php5-3? ( dev-lang/php:5.3 )
+DESCRIPTION=RRDtool bindings for PHP
+EAPI=4
+HOMEPAGE=http://pecl.php.net/rrd
+IUSE=php_targets_php5-4 php_targets_php5-3
+KEYWORDS=~amd64 ~x86
+LICENSE=BSD
+RDEPEND=>=net-analyzer/rrdtool-1.4.5-r1 php_targets_php5-4? ( dev-lang/php:5.4 ) php_targets_php5-3? ( dev-lang/php:5.3 )
+REQUIRED_USE=|| ( php_targets_php5-4 php_targets_php5-3 )
+SLOT=0
+SRC_URI=http://pecl.php.net/get/rrd-1.0.5.tgz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 php-ext-pecl-r2 de1308bcf4fef59a8ee8793efc7c3051 php-ext-source-r2 39437168059a2166e012420b3ba12815 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=6c3ad96766af97f2cca3a0d8ce50bd0f
diff --git a/metadata/md5-cache/dev-php/pecl-sqlite-1.0.3 b/metadata/md5-cache/dev-php/pecl-sqlite-1.0.3
new file mode 100644
index 0000000..5271c19
--- /dev/null
+++ b/metadata/md5-cache/dev-php/pecl-sqlite-1.0.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=!dev-php/sqlite-php || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 php_targets_php5-4? ( dev-lang/php:5.4 )
+DESCRIPTION=PHP bindings for the SQLite database engine
+EAPI=4
+HOMEPAGE=http://pear.php.net/SQLite
+IUSE=php_targets_php5-4
+KEYWORDS=alpha amd64 ~ia64 ppc ~sparc x86
+LICENSE=PHP
+RDEPEND=php_targets_php5-4? ( dev-lang/php:5.4 )
+REQUIRED_USE=|| ( php_targets_php5-4 )
+SLOT=0
+SRC_URI=http://pecl.php.net/get/SQLite-1.0.3.tgz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 php-ext-pecl-r2 de1308bcf4fef59a8ee8793efc7c3051 php-ext-source-r2 39437168059a2166e012420b3ba12815 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0b467df44fb61a2679308a9fe5ffe2a7
diff --git a/metadata/md5-cache/dev-php/pecl-stats-1.0.2 b/metadata/md5-cache/dev-php/pecl-stats-1.0.2
new file mode 100644
index 0000000..d9a62a2
--- /dev/null
+++ b/metadata/md5-cache/dev-php/pecl-stats-1.0.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=|| ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool >=sys-devel/m4-1.4.3 >=sys-devel/libtool-1.5.18 php_targets_php5-4? ( dev-lang/php:5.4 ) php_targets_php5-3? ( dev-lang/php:5.3 )
+DESCRIPTION=PHP statistics package
+EAPI=4
+HOMEPAGE=http://pecl.php.net/package/stats
+IUSE=php_targets_php5-4 php_targets_php5-3
+KEYWORDS=alpha amd64 ~ia64 ppc ~sparc x86
+LICENSE=PHP
+RDEPEND=php_targets_php5-4? ( dev-lang/php:5.4 ) php_targets_php5-3? ( dev-lang/php:5.3 )
+REQUIRED_USE=|| ( php_targets_php5-4 php_targets_php5-3 )
+SLOT=0
+SRC_URI=http://pecl.php.net/get/stats-1.0.2.tgz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 php-ext-pecl-r2 de1308bcf4fef59a8ee8793efc7c3051 php-ext-source-r2 39437168059a2166e012420b3ba12815 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e90b4ad41f7591ae3a987cb737c53254
diff --git a/metadata/md5-cache/dev-python/json-py-3.4 b/metadata/md5-cache/dev-python/json-py-3.4
new file mode 100644
index 0000000..024d75a
--- /dev/null
+++ b/metadata/md5-cache/dev-python/json-py-3.4
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm unpack
+DEPEND=virtual/python dev-lang/python
+DESCRIPTION=JSON reader/writer for python.
+HOMEPAGE=http://sourceforge.net/projects/json-py/
+KEYWORDS=x86 ~ppc-macos amd64
+LICENSE=PYTHON
+RDEPEND=virtual/python dev-lang/python
+SLOT=0
+SRC_URI=mirror://sourceforge/json-py/json-py-3_4.zip
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=02b704ce5f15072f60a2b38461374793
diff --git a/metadata/md5-cache/dev-python/pybaz-1.5.3 b/metadata/md5-cache/dev-python/pybaz-1.5.3
new file mode 100644
index 0000000..d3fb8e5
--- /dev/null
+++ b/metadata/md5-cache/dev-python/pybaz-1.5.3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm unpack
+DEPEND=dev-lang/python <dev-python/twisted-2.2 dev-util/bazaar dev-lang/python
+DESCRIPTION=Python bindings for the Bazaar revision control system.
+HOMEPAGE=http://code.aaronbentley.com/pybaz/
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-lang/python <dev-python/twisted-2.2 dev-util/bazaar dev-lang/python
+SLOT=0
+SRC_URI=http://code.aaronbentley.com/pybaz/releases/pybaz-1.5.3.tar.gz
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=b641376573c336d781d483acaa884a19
diff --git a/metadata/md5-cache/dev-ruby/rb-inotify-0.8.1 b/metadata/md5-cache/dev-ruby/rb-inotify-0.8.1
new file mode 100644
index 0000000..2212846
--- /dev/null
+++ b/metadata/md5-cache/dev-ruby/rb-inotify-0.8.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=>=dev-ruby/ffi-0.4.0 ruby_targets_ruby18? ( dev-lang/ruby:1.8 )
+DESCRIPTION=Ruby inotify binding
+EAPI=2
+HOMEPAGE=http://github.com/nex3/rb-inotify
+IUSE=elibc_FreeBSD ruby_targets_ruby18
+KEYWORDS=amd64 x86
+LICENSE=MIT
+RDEPEND=>=dev-ruby/ffi-0.4.0 ruby_targets_ruby18? ( dev-lang/ruby:1.8 )
+SLOT=0
+SRC_URI=http://github.com/nex3/rb-inotify/tarball/v0.8.1 -> rb-inotify-0.8.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 java-utils-2 6032f7ec6471c6459da900e11f0f7bf7 multilib 892e597faee02a5b94eb02ab512e7622 ruby-ng 69c01a1b984ed066bc91b4397b002f6a toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=df4be0d59b5910e9ea4ff5b2852130e0
diff --git a/metadata/md5-cache/dev-tcltk/itk-3.14.0 b/metadata/md5-cache/dev-tcltk/itk-3.14.0
new file mode 100644
index 0000000..13ca9ff
--- /dev/null
+++ b/metadata/md5-cache/dev-tcltk/itk-3.14.0
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=sys-libs/zlib media-libs/jpeg media-libs/libpng media-libs/tiff >=dev-util/cmake-2.4
+DESCRIPTION=NLM Insight Segmentation and Registration Toolkit
+HOMEPAGE=http://www.itk.org
+IUSE=doc examples shared patented test
+KEYWORDS=~x86 ~amd64
+LICENSE=BSD
+RDEPEND=sys-libs/zlib media-libs/jpeg media-libs/libpng media-libs/tiff
+SLOT=0
+SRC_URI=mirror://sourceforge/itk/InsightToolkit-3.14.0.tar.gz
+_eclasses_=multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=94dc5aafbac4c8bf36fccdb71efccc46
diff --git a/metadata/md5-cache/dev-util/biew-5.6.2-r1 b/metadata/md5-cache/dev-util/biew-5.6.2-r1
new file mode 100644
index 0000000..cfc2c9a
--- /dev/null
+++ b/metadata/md5-cache/dev-util/biew-5.6.2-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=ncurses? ( >=sys-libs/ncurses-5.3 ) slang? ( <sys-libs/slang-2.0.0 )
+DESCRIPTION=A multiplatform portable viewer of binary files with built-in editor in binary, hexadecimal and disassembler modes.
+HOMEPAGE=http://biew.sourceforge.net/
+IUSE=slang ncurses
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=ncurses? ( >=sys-libs/ncurses-5.3 ) slang? ( <sys-libs/slang-2.0.0 )
+SLOT=0
+SRC_URI=mirror://sourceforge/biew/biew562.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f313cbef2a777425c39fd7eba7da1544
diff --git a/metadata/md5-cache/dev-util/biew-6.1.0 b/metadata/md5-cache/dev-util/biew-6.1.0
new file mode 100644
index 0000000..07efde5
--- /dev/null
+++ b/metadata/md5-cache/dev-util/biew-6.1.0
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install
+DEPEND=gpm? ( sys-libs/gpm )
+DESCRIPTION=A portable viewer of binary files, hexadecimal and disassembler modes.
+HOMEPAGE=http://biew.sourceforge.net
+IUSE=gpm
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=gpm? ( x86? ( sys-libs/gpm ) amd64? ( app-emulation/emul-linux-x86-baselibs ) )
+SLOT=0
+SRC_URI=mirror://sourceforge/project/beye/biew/6.1.0/biew-610-src.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9ebdf6315ab3c46e57f6190e78217ae3
diff --git a/metadata/md5-cache/dev-util/cudpp-1.1 b/metadata/md5-cache/dev-util/cudpp-1.1
new file mode 100644
index 0000000..73edaf1
--- /dev/null
+++ b/metadata/md5-cache/dev-util/cudpp-1.1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=dev-util/nvidia-cuda-toolkit
+DESCRIPTION=CUDA Data Parallel Primitives Library
+EAPI=2
+HOMEPAGE=http://gpgpu.org/developer/cudpp
+KEYWORDS=amd64 x86
+LICENSE=BSD
+RDEPEND=dev-util/nvidia-cuda-toolkit
+SLOT=0
+SRC_URI=http://gpgpu.org/static/developer/cudpp/rel/cudpp_1.1/cudpp_src_1.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=54e6903259457a73521ab11efc72b84b
diff --git a/metadata/md5-cache/dev-util/cudpp-1.1-r1 b/metadata/md5-cache/dev-util/cudpp-1.1-r1
new file mode 100644
index 0000000..204c4ab
--- /dev/null
+++ b/metadata/md5-cache/dev-util/cudpp-1.1-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=dev-util/nvidia-cuda-toolkit
+DESCRIPTION=CUDA Data Parallel Primitives Library
+EAPI=2
+HOMEPAGE=http://gpgpu.org/developer/cudpp
+KEYWORDS=amd64 x86
+LICENSE=BSD
+RDEPEND=dev-util/nvidia-cuda-toolkit
+SLOT=0
+SRC_URI=http://gpgpu.org/static/developer/cudpp/rel/cudpp_1.1/cudpp_src_1.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3c79ced4e82c103162bf4a59b7770dcd
diff --git a/metadata/md5-cache/dev-util/cudpp-1.1.1 b/metadata/md5-cache/dev-util/cudpp-1.1.1
new file mode 100644
index 0000000..597d070
--- /dev/null
+++ b/metadata/md5-cache/dev-util/cudpp-1.1.1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=dev-util/nvidia-cuda-toolkit
+DESCRIPTION=CUDA Data Parallel Primitives Library
+EAPI=2
+HOMEPAGE=http://gpgpu.org/developer/cudpp
+KEYWORDS=amd64 x86
+LICENSE=BSD
+RDEPEND=dev-util/nvidia-cuda-toolkit
+SLOT=0
+SRC_URI=http://cudpp.googlecode.com/files/cudpp_src_1.1.1.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=15284c90d2953e05c17788650a4d8778
diff --git a/metadata/md5-cache/dev-util/decuda-0.4.2 b/metadata/md5-cache/dev-util/decuda-0.4.2
new file mode 100644
index 0000000..56cd0ec
--- /dev/null
+++ b/metadata/md5-cache/dev-util/decuda-0.4.2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DEPEND=dev-lang/python
+DESCRIPTION=Assembler/Disassembler for NVIDIA CUDA binary (.cubin) format
+HOMEPAGE=http://www.cs.rug.nl/~wladimir/decuda/
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-lang/python
+SLOT=0
+SRC_URI=http://www.cs.rug.nl/~wladimir/decuda/decuda-0.4.2.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7b04e8284188331c58dd857a6b0c0468
diff --git a/metadata/md5-cache/dev-util/objconv-2.08 b/metadata/md5-cache/dev-util/objconv-2.08
new file mode 100644
index 0000000..e788e47
--- /dev/null
+++ b/metadata/md5-cache/dev-util/objconv-2.08
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=app-arch/unzip
+DESCRIPTION=An Object File Converter
+HOMEPAGE=http://www.agner.org/optimize#objconv
+IUSE=doc
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=app-arch/unzip
+SLOT=0
+SRC_URI=http://www.agner.org/optimize/objconv.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=05d2882112f989e5bee6ab63f9087e13
diff --git a/metadata/md5-cache/dev-util/obs-service-download_url-0.1 b/metadata/md5-cache/dev-util/obs-service-download_url-0.1
new file mode 100644
index 0000000..42eda5f
--- /dev/null
+++ b/metadata/md5-cache/dev-util/obs-service-download_url-0.1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install prepare unpack
+DESCRIPTION=Open Build Service client module - download_url service
+EAPI=4
+HOMEPAGE=http://en.opensuse.org/openSUSE:OSC
+KEYWORDS=~amd64 ~x86
+LICENSE=GPL-2
+RDEPEND=dev-util/suse-build dev-util/osc dev-util/suse-build
+SLOT=0
+SRC_URI=https://api.opensuse.org/public/source/openSUSE:Tools/obs-service-download_url/download_url -> download_url-0.1 https://api.opensuse.org/public/source/openSUSE:Tools/obs-service-download_url/download_url.service -> download_url-0.1.service https://api.opensuse.org/public/source/openSUSE:Tools/obs-service-download_url/prepare_spec -> prepare_spec-0.1
+_eclasses_=obs-download 8b22473fde39f5051ce00b61062dd086 obs-service 0fc1a1ab792dd8a4e38c10901ff57032
+_md5_=5d471259d45438bad4a2c4ce862cb1fd
diff --git a/metadata/md5-cache/dev-util/oprofileui-0.2.0 b/metadata/md5-cache/dev-util/oprofileui-0.2.0
new file mode 100644
index 0000000..097eaea
--- /dev/null
+++ b/metadata/md5-cache/dev-util/oprofileui-0.2.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DEPEND==dev-libs/glib-2* !server-only? ( gnome-base/gnome-vfs ) >=dev-util/oprofile-0.9.3-r1 sys-devel/gettext
+DESCRIPTION=A user interface to the stochastic system profiler OProfile
+HOMEPAGE=http://projects.o-hand.com/oprofileui/
+IUSE=server-only
+KEYWORDS=~amd64 ~x86 ~ppc
+LICENSE=GPL-2
+RDEPEND==dev-libs/glib-2* !server-only? ( gnome-base/gnome-vfs ) >=dev-util/oprofile-0.9.3-r1
+SLOT=0
+SRC_URI=http://projects.o-hand.com/sources/oprofileui/oprofileui-0.2.0.tar.gz
+_md5_=eed363e96fd37100dad4865ca31e91fa
diff --git a/metadata/md5-cache/dev-vcs/bzr-search-9999 b/metadata/md5-cache/dev-vcs/bzr-search-9999
new file mode 100644
index 0000000..0ba3513
--- /dev/null
+++ b/metadata/md5-cache/dev-vcs/bzr-search-9999
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm prepare unpack
+DEPEND=>=dev-vcs/bzr-1.6 =dev-lang/python-2* >=dev-vcs/bzr-2.0.1
+DESCRIPTION=Generates indices of bzr revisions which can then be searched quickly
+EAPI=3
+HOMEPAGE=https://launchpad.net/bzr-search
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND==dev-lang/python-2*
+SLOT=0
+_eclasses_=bzr 8b59c16d7183cb93649d7abe70dc4c85 distutils 34e0f373c466bb0e97ba194735f1acf2 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=eac7493f74f7eb8c67a5f01e882fb730
diff --git a/metadata/md5-cache/dev-vcs/bzr-webdav-9999 b/metadata/md5-cache/dev-vcs/bzr-webdav-9999
new file mode 100644
index 0000000..77e4339
--- /dev/null
+++ b/metadata/md5-cache/dev-vcs/bzr-webdav-9999
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install postinst postrm unpack
+DEPEND=>=dev-lang/python-2.4 dev-lang/python >=dev-vcs/bzr-2.0.1
+DESCRIPTION=Implementation of WebDAV for bzr http transports. Allows write access to DAV-enabled web servers by registering http+webdav and https+webdav as protocols recognized by bzr
+HOMEPAGE=https://launchpad.net/bzr.webdav
+KEYWORDS=~x86 ~amd64
+LICENSE=GPL-2
+RDEPEND=>=dev-lang/python-2.4 dev-lang/python
+SLOT=0
+_eclasses_=bzr 8b59c16d7183cb93649d7abe70dc4c85 distutils 34e0f373c466bb0e97ba194735f1acf2 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=09b033331c8a61bc9064ae9a7ecc8a09
diff --git a/metadata/md5-cache/gnome-base/gnome-libs-1.4.2 b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2
new file mode 100644
index 0000000..1717d3c
--- /dev/null
+++ b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =gnome-base/orbit-0* =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc ) nls? ( >=sys-devel/gettext-0.10.40 >=dev-util/intltool-0.11 ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=GNOME Core Libraries
+HOMEPAGE=http://www.gnome.org/
+IUSE=doc esd nls kde
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =gnome-base/orbit-0* =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc )
+SLOT=1
+SRC_URI=ftp://ftp.gnome.org/pub/GNOME/sources/gnome-libs/1.4/gnome-libs-1.4.2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c24e8794a378c410c706aee10514e181
diff --git a/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r1 b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r1
new file mode 100644
index 0000000..e60b86a
--- /dev/null
+++ b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =gnome-base/orbit-0* =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc ) nls? ( >=sys-devel/gettext-0.10.40 >=dev-util/intltool-0.11 ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=GNOME Core Libraries
+HOMEPAGE=http://www.gnome.org/
+IUSE=doc esd nls kde
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =gnome-base/orbit-0* =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc )
+SLOT=1
+SRC_URI=ftp://ftp.gnome.org/pub/GNOME/sources/gnome-libs/1.4/gnome-libs-1.4.2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=270f82fc8fa121a3e8b36fb0ecb5b6c3
diff --git a/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r2 b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r2
new file mode 100644
index 0000000..eb02e2e
--- /dev/null
+++ b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =gnome-base/orbit-0* =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc ) nls? ( >=sys-devel/gettext-0.10.40 >=dev-util/intltool-0.11 ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=GNOME Core Libraries
+HOMEPAGE=http://www.gnome.org/
+IUSE=doc esd nls kde
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =gnome-base/orbit-0* =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc )
+SLOT=1
+SRC_URI=ftp://ftp.gnome.org/pub/GNOME/sources/gnome-libs/1.4/gnome-libs-1.4.2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2c7227383e11177f959a6791a156431c
diff --git a/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r3 b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r3
new file mode 100644
index 0000000..adb1548
--- /dev/null
+++ b/metadata/md5-cache/gnome-base/gnome-libs-1.4.2-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc ) nls? ( >=sys-devel/gettext-0.10.40 >=dev-util/intltool-0.11 ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=GNOME Core Libraries
+HOMEPAGE=http://www.gnome.org/
+IUSE=doc esd nls kde
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-libs/imlib-1.9.10 esd? ( >=media-sound/esound-0.2.23 ) =x11-libs/gtk+-1.2* =sys-devel/automake-1.4* =sys-devel/autoconf-2.13* <=sys-libs/db-2 doc? ( app-text/docbook-sgml dev-util/gtk-doc )
+SLOT=1
+SRC_URI=ftp://ftp.gnome.org/pub/GNOME/sources/gnome-libs/1.4/gnome-libs-1.4.2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4388526535b69ac394d051900f65110d
diff --git a/metadata/md5-cache/gnome-base/libglade-0.17-r6 b/metadata/md5-cache/gnome-base/libglade-0.17-r6
new file mode 100644
index 0000000..03fe861
--- /dev/null
+++ b/metadata/md5-cache/gnome-base/libglade-0.17-r6
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install
+DEPEND=>=dev-libs/libxml-1.8.15 >=gnome-base/gnome-libs-1.4.1.2-r1 bonobo? ( >=gnome-base/bonobo-1.0.19-r1 ) nls? ( sys-devel/gettext ) test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost )
+DESCRIPTION=Allow programs to load their UIs from an XML description at runtime.
+EAPI=2
+HOMEPAGE=http://developer.gnome.org/doc/API/libglade/libglade.html
+IUSE=nls bonobo test
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=LGPL-2.1
+RDEPEND=>=dev-libs/libxml-1.8.15 >=gnome-base/gnome-libs-1.4.1.2-r1 bonobo? ( >=gnome-base/bonobo-1.0.19-r1 )
+SLOT=0
+SRC_URI=ftp://ftp.gnome.org/pub/GNOME/sources/libglade/0.17/libglade-0.17.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome.org 8fef8f967214f56e08fa92d61163d891 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4 virtualx 73cfc129b4b9ba23aed1abb10c825d86
+_md5_=1fb05dbbb1e836d5be435c67fb8d4e40
diff --git a/metadata/md5-cache/mail-filter/libdkim-1.0.19 b/metadata/md5-cache/mail-filter/libdkim-1.0.19
new file mode 100644
index 0000000..5033b52
--- /dev/null
+++ b/metadata/md5-cache/mail-filter/libdkim-1.0.19
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/openssl
+DESCRIPTION=libdkim-exim is a library for exim to verify and create signatures of e-mail headers.
+HOMEPAGE=http://wiki.exim.org/DKIM
+KEYWORDS=~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=mirror://sourceforge/libdkim/libdkim-1.0.19.zip
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=5227c5659cb30d6c1c4e56e0b8624aea
diff --git a/metadata/md5-cache/media-fonts/ds-fonts-1.0 b/metadata/md5-cache/media-fonts/ds-fonts-1.0
new file mode 100644
index 0000000..6120c8a
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/ds-fonts-1.0
@@ -0,0 +1,8 @@
+DEFINED_PHASES=install postinst prerm unpack
+DEPEND=dev-lang/perl app-text/ghostscript-gnu x11-base/xorg-x11
+DESCRIPTION=DarkSoft Fonts (Bitmap,Type1,TrueType)
+KEYWORDS=alpha amd64 ppc sparc x86
+RDEPEND=dev-lang/perl app-text/ghostscript-gnu x11-base/xorg-x11
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/ds-xfonts.tar.bz2 http://dside.dyndns.org/files/darklin/ds-ttffonts.tar.bz2 http://dside.dyndns.org/files/darklin/ds-type1fonts.tar.bz2
+_md5_=c9dcc136fd1aad32682bbe6fb9f56451
diff --git a/metadata/md5-cache/media-fonts/ds-fonts-1.0-r1 b/metadata/md5-cache/media-fonts/ds-fonts-1.0-r1
new file mode 100644
index 0000000..377b183
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/ds-fonts-1.0-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=install postinst prerm unpack
+DEPEND=dev-lang/perl x11-base/xorg-x11
+DESCRIPTION=DarkSoft Fonts (Bitmap,Type1,TrueType)
+KEYWORDS=alpha amd64 ppc sparc x86
+RDEPEND=dev-lang/perl x11-base/xorg-x11
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/ds-xfonts.tar.bz2 http://dside.dyndns.org/files/darklin/ds-ttffonts.tar.bz2 http://dside.dyndns.org/files/darklin/ds-type1fonts.tar.bz2
+_md5_=5f29001a18cda411fe6e65592c39bbc5
diff --git a/metadata/md5-cache/media-gfx/VirtualPlanetBuilder-0.9.1 b/metadata/md5-cache/media-gfx/VirtualPlanetBuilder-0.9.1
new file mode 100644
index 0000000..c6a785f
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/VirtualPlanetBuilder-0.9.1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install preinst unpack
+DEPEND=media-gfx/OpenSceneGraph dev-vcs/subversion net-misc/rsync
+DESCRIPTION=terrain database creation tool
+EAPI=1
+HOMEPAGE=http://www.openscenegraph.org/projects/VirtualPlanetBuilder/
+IUSE=examples introspection producer gdal jasper truetype xine jpeg gif tiff png coin inventor glut
+KEYWORDS=x86 amd64
+LICENSE=OSGPL
+RDEPEND=media-gfx/OpenSceneGraph
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 subversion e80e84db0fc102c2959858102060bec9 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f69f38deafd57ef0b7c595a5ab0e1a5b
diff --git a/metadata/md5-cache/media-gfx/VirtualPlanetBuilder-9999 b/metadata/md5-cache/media-gfx/VirtualPlanetBuilder-9999
new file mode 100644
index 0000000..899a90f
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/VirtualPlanetBuilder-9999
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install preinst unpack
+DEPEND=media-gfx/OpenSceneGraph dev-vcs/subversion net-misc/rsync
+DESCRIPTION=terrain database creation tool
+EAPI=1
+HOMEPAGE=http://www.openscenegraph.org/projects/VirtualPlanetBuilder/
+IUSE=examples introspection producer gdal jasper truetype xine jpeg gif tiff png coin inventor glut
+KEYWORDS=~x86 ~amd64
+LICENSE=OSGPL
+RDEPEND=media-gfx/OpenSceneGraph
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 subversion e80e84db0fc102c2959858102060bec9 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=6385b216c3a28031ed93712986f4b5c0
diff --git a/metadata/md5-cache/media-gfx/imagej-1.42k b/metadata/md5-cache/media-gfx/imagej-1.42k
new file mode 100644
index 0000000..997d32a
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/imagej-1.42k
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst preinst setup unpack
+DEPEND=>=virtual/jdk-1.4 dev-java/ant-core >=virtual/jre-1.4 dev-java/java-config >=dev-java/java-config-2.1.9-r1 >=dev-java/ant-core-1.8.2 >=dev-java/javatoolkit-0.3.0-r2 >=dev-lang/python-2.4
+DESCRIPTION=Image Processing and Analysis in Java
+HOMEPAGE=http://rsb.info.nih.gov/ij/
+IUSE=doc plugin debug elibc_FreeBSD elibc_FreeBSD
+KEYWORDS=x86 amd64 ~ppc
+LICENSE=public-domain
+RDEPEND=>=virtual/jre-1.4 dev-java/java-config >=dev-java/java-config-2.1.9-r1
+RESTRICT=nomirror
+SLOT=0
+SRC_URI=http://rsb.info.nih.gov/ij/download/src/ij142k-src.zip http://rsb.info.nih.gov/ij/images/ImageJ.png plugin? ( http://rsb.info.nih.gov/ij/download/zips/ij141.zip )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 java-ant-2 65ba8d80c13cf56bad5ccec21a6b3c37 java-pkg-2 65bbb59987d777c1106ae8aa4bf36e7b java-utils-2 6032f7ec6471c6459da900e11f0f7bf7 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=bb95002a017606d756d3c91803cca82d
diff --git a/metadata/md5-cache/media-gfx/openvrml-0.17.10 b/metadata/md5-cache/media-gfx/openvrml-0.17.10
new file mode 100644
index 0000000..dc41d7f
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/openvrml-0.17.10
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm preinst prerm setup test unpack
+DEPEND=media-libs/mesa virtual/opengl app-arch/unzip
+DESCRIPTION=OpenVRML is a free cross-platform runtime for VRML and X3D
+HOMEPAGE=http://openvrml.org/
+KEYWORDS=x86 amd64
+LICENSE=LGPL
+RDEPEND=media-libs/mesa virtual/opengl
+SLOT=0
+SRC_URI=mirror://sourceforge/openvrml/openvrml-0.17.10.tar.gz
+_eclasses_=base ec46b36a6f6fd1d0b505a33e0b74e413 eutils 63afaaed8aa819fdcb814c7cd39495a2 mozextension ba6829881080a663d68531424a3dfbc6 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 nsplugins 7ea51b2f6cbd5b36b9c0163cc3ee03a2 perl-module d93571ca1c77e98760e5aa406388b02d toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=79eed71b109a8226c127c89dfc287692
diff --git a/metadata/md5-cache/media-gfx/pti-0.2.0 b/metadata/md5-cache/media-gfx/pti-0.2.0
new file mode 100644
index 0000000..aa15988
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/pti-0.2.0
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=Le Petit Poucet is a GPS software to edit tracks in a 3D scene
+HOMEPAGE=http://petit-poucet.org/
+KEYWORDS=x86 amd64
+LICENSE=OSGPL
+RDEPEND=media-gfx/VirtualPlanetBuilder
+SLOT=0
+SRC_URI=mirror://sourceforge/petitpoucet/pti_0.2.0.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=ec8139ab9b5f107f9e1b81ed2ada8401
diff --git a/metadata/md5-cache/media-gfx/xmedcon-0.10.4 b/metadata/md5-cache/media-gfx/xmedcon-0.10.4
new file mode 100644
index 0000000..b97b9a9
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/xmedcon-0.10.4
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=Medical Image Conversion Utility with a GTK interface
+HOMEPAGE=http://xmedcon.sourceforge.net
+IUSE=png gtk
+KEYWORDS=~x86 ~amd64
+LICENSE=GPL-2 LGPL-2.1
+RDEPEND=png? ( >=media-libs/libpng-1.2.1 ) gtk? ( >=x11-libs/gtk+-2.1 )
+SLOT=0
+SRC_URI=mirror://sourceforge/xmedcon/xmedcon-0.10.4.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=708bf4b1dd1e55bdabff90d3887c648a
diff --git a/metadata/md5-cache/media-gfx/zimg-5.0.0 b/metadata/md5-cache/media-gfx/zimg-5.0.0
new file mode 100644
index 0000000..3867c32
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/zimg-5.0.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install
+DEPEND=media-libs/gd
+DESCRIPTION=Generates images from arbitrary formatted two-dimensional ascii or binary data
+HOMEPAGE=http://zimg.sourceforge.net//
+KEYWORDS=x86 amd64
+LICENSE=BSD
+RDEPEND=media-libs/gd
+SLOT=0
+SRC_URI=mirror://sourceforge/zimg/zimg-5.0.0.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8916ee61f375bf81fdae6ad3dea14ac4
diff --git a/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r5 b/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r5
new file mode 100644
index 0000000..5a47a40
--- /dev/null
+++ b/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-libs/jpeg media-libs/tiff =x11-libs/gtk+-1.2* <media-libs/libpng-1.5 amd64? ( sys-libs/db ) !amd64? ( <sys-libs/db-2 ) >=gnome-base/gnome-libs-1.4.1.2-r1 doc? ( dev-util/gtk-doc ) test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost )
+DESCRIPTION=GNOME Image Library
+EAPI=2
+HOMEPAGE=http://www.gtk.org/
+IUSE=doc mmx test
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86
+LICENSE=GPL-2 LGPL-2
+RDEPEND=media-libs/jpeg media-libs/tiff =x11-libs/gtk+-1.2* <media-libs/libpng-1.5 amd64? ( sys-libs/db ) !amd64? ( <sys-libs/db-2 ) >=gnome-base/gnome-libs-1.4.1.2-r1
+SLOT=0
+SRC_URI=mirror://gnome/sources/gdk-pixbuf/0.22/gdk-pixbuf-0.22.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome.org 8fef8f967214f56e08fa92d61163d891 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4 virtualx 73cfc129b4b9ba23aed1abb10c825d86
+_md5_=61690a1c80affdeff4c6dbbe51519477
diff --git a/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r6 b/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r6
new file mode 100644
index 0000000..2e55158
--- /dev/null
+++ b/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r6
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-libs/jpeg media-libs/tiff =x11-libs/gtk+-1.2* >=media-libs/libpng-1.5 amd64? ( sys-libs/db ) !amd64? ( <sys-libs/db-2 ) >=gnome-base/gnome-libs-1.4.1.2-r1 doc? ( dev-util/gtk-doc ) test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost )
+DESCRIPTION=GNOME Image Library
+EAPI=2
+HOMEPAGE=http://www.gtk.org/
+IUSE=doc mmx test
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86
+LICENSE=GPL-2 LGPL-2
+RDEPEND=media-libs/jpeg media-libs/tiff =x11-libs/gtk+-1.2* >=media-libs/libpng-1.5 amd64? ( sys-libs/db ) !amd64? ( <sys-libs/db-2 ) >=gnome-base/gnome-libs-1.4.1.2-r1
+SLOT=0
+SRC_URI=mirror://gnome/sources/gdk-pixbuf/0.22/gdk-pixbuf-0.22.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome.org 8fef8f967214f56e08fa92d61163d891 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4 virtualx 73cfc129b4b9ba23aed1abb10c825d86
+_md5_=1bbee426d74cfc67ba9a322cbde2878b
diff --git a/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r7 b/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r7
new file mode 100644
index 0000000..7edcc83
--- /dev/null
+++ b/metadata/md5-cache/media-libs/gdk-pixbuf-0.22.0-r7
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=virtual/jpeg:0 media-libs/tiff =x11-libs/gtk+-1.2* >=media-libs/libpng-1.5 amd64? ( sys-libs/db ) !amd64? ( <sys-libs/db-2 ) >=gnome-base/gnome-libs-1.4.1.2-r1 doc? ( dev-util/gtk-doc ) test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost )
+DESCRIPTION=GNOME Image Library
+EAPI=2
+HOMEPAGE=http://www.gtk.org/
+IUSE=doc mmx test
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86
+LICENSE=GPL-2 LGPL-2
+RDEPEND=virtual/jpeg:0 media-libs/tiff =x11-libs/gtk+-1.2* >=media-libs/libpng-1.5 amd64? ( sys-libs/db ) !amd64? ( <sys-libs/db-2 ) >=gnome-base/gnome-libs-1.4.1.2-r1
+SLOT=0
+SRC_URI=mirror://gnome/sources/gdk-pixbuf/0.22/gdk-pixbuf-0.22.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome.org 8fef8f967214f56e08fa92d61163d891 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4 virtualx 73cfc129b4b9ba23aed1abb10c825d86
+_md5_=8c1f3c1270f67b6ad212b27b8ed351fa
diff --git a/metadata/md5-cache/media-libs/id3lib-3.8.3-r5 b/metadata/md5-cache/media-libs/id3lib-3.8.3-r5
new file mode 100644
index 0000000..1352beb
--- /dev/null
+++ b/metadata/md5-cache/media-libs/id3lib-3.8.3-r5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install unpack
+DEPEND=sys-libs/zlib rcc? ( app-i18n/librcc ) sys-devel/autoconf sys-devel/libtool
+DESCRIPTION=Id3 library for C/C++
+HOMEPAGE=http://id3lib.sourceforge.net/
+IUSE=doc rcc
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86
+LICENSE=LGPL-2.1
+RDEPEND=sys-libs/zlib rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://sourceforge/id3lib/id3lib-3.8.3.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=76dd31632881799f7d3f6cbbde3712cd
diff --git a/metadata/md5-cache/media-libs/id3lib-3.8.3-r8 b/metadata/md5-cache/media-libs/id3lib-3.8.3-r8
new file mode 100644
index 0000000..3ca0d08
--- /dev/null
+++ b/metadata/md5-cache/media-libs/id3lib-3.8.3-r8
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=sys-libs/zlib rcc? ( app-i18n/librcc ) doc? ( app-doc/doxygen ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Id3 library for C/C++
+HOMEPAGE=http://id3lib.sourceforge.net/
+IUSE=doc rcc
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd
+LICENSE=LGPL-2.1
+RDEPEND=sys-libs/zlib rcc? ( app-i18n/librcc )
+RESTRICT=test
+SLOT=0
+SRC_URI=mirror://sourceforge/id3lib/id3lib-3.8.3.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0c7a5d41183626def254200e6454c796
diff --git a/metadata/md5-cache/media-libs/imlib-1.9.15-r99 b/metadata/md5-cache/media-libs/imlib-1.9.15-r99
new file mode 100644
index 0000000..ca160ea
--- /dev/null
+++ b/metadata/md5-cache/media-libs/imlib-1.9.15-r99
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare
+DEPEND=>=media-libs/tiff-3.5.5 >=media-libs/giflib-4.1.0 >=media-libs/libpng-1.2.1 virtual/jpeg x11-libs/libICE x11-libs/libSM x11-libs/libXext || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Image loading and rendering library
+EAPI=2
+HOMEPAGE=http://ftp.acc.umu.se/pub/GNOME/sources/imlib/1.9/
+IUSE=doc static-libs
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=>=media-libs/tiff-3.5.5 >=media-libs/giflib-4.1.0 >=media-libs/libpng-1.2.1 virtual/jpeg x11-libs/libICE x11-libs/libSM x11-libs/libXext
+SLOT=0
+SRC_URI=mirror://gnome/sources/imlib/1.9/imlib-1.9.15.tar.bz2 mirror://gentoo/gtk-1-for-imlib.m4.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7bcffaaadbc34f79976bbe7ca8156c21
diff --git a/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r1 b/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r1
new file mode 100644
index 0000000..84e39cf
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-libs/zlib-1.1.3
+DESCRIPTION=The MAD id3tag library
+HOMEPAGE=http://www.underbit.com/products/mad/
+IUSE=debug
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=>=sys-libs/zlib-1.1.3
+SLOT=0
+SRC_URI=mirror://sourceforge/mad/libid3tag-0.15.1b.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=570f6457249255eb2638b11c50e5e193
diff --git a/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r3 b/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r3
new file mode 100644
index 0000000..3fda5d3
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-util/gperf sys-devel/libtool
+DESCRIPTION=The MAD id3tag library
+HOMEPAGE=http://www.underbit.com/products/mad/
+IUSE=debug
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=dev-util/gperf sys-devel/libtool >=sys-libs/zlib-1.1.3
+SLOT=0
+SRC_URI=mirror://sourceforge/mad/libid3tag-0.15.1b.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=21b6dcd757870dc14562d8035a15a229
diff --git a/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r4 b/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r4
new file mode 100644
index 0000000..e254ed3
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libid3tag-0.15.1b-r4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-util/gperf sys-devel/libtool || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The MAD id3tag library
+HOMEPAGE=http://www.underbit.com/products/mad/
+IUSE=debug
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=dev-util/gperf sys-devel/libtool >=sys-libs/zlib-1.1.3
+SLOT=0
+SRC_URI=mirror://sourceforge/mad/libid3tag-0.15.1b.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1ff8e4e7a5dfb433343082ece30d960f
diff --git a/metadata/md5-cache/media-libs/mac-3.99 b/metadata/md5-cache/media-libs/mac-3.99
new file mode 100644
index 0000000..b75763c
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mac-3.99
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Monkey Audio Codec (MAC linux port)
+HOMEPAGE=http://sourceforge.net/projects/mac-port/
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=MAC
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/mac-3.99-u4-b5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=86b0ab401ae0a574ad8f45639226196a
diff --git a/metadata/md5-cache/media-libs/mac-3.99-r1 b/metadata/md5-cache/media-libs/mac-3.99-r1
new file mode 100644
index 0000000..5efea21
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mac-3.99-r1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Monkey Audio Codec (MAC linux port)
+HOMEPAGE=http://sourceforge.net/projects/mac-port/
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=MAC
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/mac-3.99-u4-b5-s4.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=20bb1a8058836f68bfccd1900e7f1775
diff --git a/metadata/md5-cache/media-libs/mac-3.99-r2 b/metadata/md5-cache/media-libs/mac-3.99-r2
new file mode 100644
index 0000000..dbaa240
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mac-3.99-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Monkey Audio Codec (MAC linux port)
+HOMEPAGE=http://sourceforge.net/projects/mac-port/
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=MAC
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/mac-3.99-u4-b5-s4.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7ee30d0c3f792e0689d92b221649ec8a
diff --git a/metadata/md5-cache/media-libs/taglib-1.7.2-r2 b/metadata/md5-cache/media-libs/taglib-1.7.2-r2
new file mode 100644
index 0000000..893cfa6
--- /dev/null
+++ b/metadata/md5-cache/media-libs/taglib-1.7.2-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst prepare test
+DEPEND=sys-libs/zlib dev-util/pkgconfig test? ( dev-util/cppunit ) rcc? ( app-i18n/librcc ) sys-devel/make >=dev-util/cmake-2.8.9 userland_GNU? ( >=sys-apps/findutils-4.4.0 )
+DESCRIPTION=A library for reading and editing audio meta data
+EAPI=4
+HOMEPAGE=http://developer.kde.org/~wheeler/taglib.html
+IUSE=+asf debug examples +mp4 test rcc
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 sh sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-solaris
+LICENSE=LGPL-2 MPL-1.1
+RDEPEND=sys-libs/zlib
+SLOT=0
+SRC_URI=http://developer.kde.org/~wheeler/files/src/taglib-1.7.2.tar.gz
+_eclasses_=cmake-utils 92319f03251f1235bc887cc84e5aef21 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3d034430ac63360ef094fb96170a720f
diff --git a/metadata/md5-cache/media-libs/taglib-1.8-r5 b/metadata/md5-cache/media-libs/taglib-1.8-r5
new file mode 100644
index 0000000..1d9a6ca
--- /dev/null
+++ b/metadata/md5-cache/media-libs/taglib-1.8-r5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst prepare test
+DEPEND=sys-libs/zlib dev-util/pkgconfig test? ( dev-util/cppunit ) rcc? ( app-i18n/librcc ) sys-devel/make >=dev-util/cmake-2.8.9 userland_GNU? ( >=sys-apps/findutils-4.4.0 )
+DESCRIPTION=A library for reading and editing audio meta data
+EAPI=4
+HOMEPAGE=http://developer.kde.org/~wheeler/taglib.html
+IUSE=+asf debug examples +mp4 test rcc
+KEYWORDS=~alpha amd64 ~arm hppa ia64 ~mips ppc ~ppc64 ~sh sparc x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-solaris
+LICENSE=LGPL-2.1 MPL-1.1
+RDEPEND=sys-libs/zlib
+SLOT=0
+SRC_URI=mirror://github/taglib/taglib/taglib-1.8.tar.gz
+_eclasses_=cmake-utils 92319f03251f1235bc887cc84e5aef21 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=b1e2e0e04e5ab7151b1c842c6b3e614b
diff --git a/metadata/md5-cache/media-libs/win32codecs-20071007-r5 b/metadata/md5-cache/media-libs/win32codecs-20071007-r5
new file mode 100644
index 0000000..d6c935a
--- /dev/null
+++ b/metadata/md5-cache/media-libs/win32codecs-20071007-r5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install setup
+DESCRIPTION=Windows 32-bit binary codecs for video and audio playback support
+HOMEPAGE=http://www.mplayerhq.hu/
+IUSE=real
+KEYWORDS=-* amd64 x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~x86-linux
+LICENSE=as-is
+RDEPEND=real? ( =virtual/libstdc++-3.3* )
+RESTRICT=mirror strip binchecks
+SLOT=0
+SRC_URI=mirror://mplayer/releases/codecs/all-20071007.tar.bz2
+_eclasses_=multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=b537ca26d14570e8743552d4bb0a7644
diff --git a/metadata/md5-cache/media-plugins/eq-xmms-0.7 b/metadata/md5-cache/media-plugins/eq-xmms-0.7
new file mode 100644
index 0000000..e13d4be
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/eq-xmms-0.7
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms >=sys-devel/automake-1.7 || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=EQU is a realtime graphical equalizer effect plugin that will equalize almost everything that you play through XMMS, not just the MP3s
+HOMEPAGE=http://equ.sourceforge.net/
+IUSE=sse-filters
+KEYWORDS=x86 amd64 ~sparc ~ppc
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms
+SLOT=0
+SRC_URI=mirror://sourceforge/equ/eq-xmms-0.7.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0a827a8b1bb05816f48062bc35498d1b
diff --git a/metadata/md5-cache/media-plugins/xmmplayer-0.3.3 b/metadata/md5-cache/media-plugins/xmmplayer-0.3.3
new file mode 100644
index 0000000..368add3
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmmplayer-0.3.3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install postinst
+DEPEND=media-sound/xmms media-video/mplayer
+DESCRIPTION=XMMPlayer is an input plugin for XMMS
+HOMEPAGE=http://thegraveyard.org/xmmplayer.php
+KEYWORDS=alpha amd64 ~ppc ~sparc x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms media-video/mplayer
+SLOT=0
+SRC_URI=http://thegraveyard.org/files/xmmplayer-0.3.3.tar.gz
+_md5_=887962e0949c6478b5c09a7c2d555676
diff --git a/metadata/md5-cache/media-plugins/xmms-alsa-1.2.10-r3 b/metadata/md5-cache/media-plugins/xmms-alsa-1.2.10-r3
new file mode 100644
index 0000000..6f4cc98
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-alsa-1.2.10-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 media-libs/alsa-lib =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-alsa
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 media-libs/alsa-lib
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7ff56ace276d555584ee520cc29732b0
diff --git a/metadata/md5-cache/media-plugins/xmms-alsa-1.2.11 b/metadata/md5-cache/media-plugins/xmms-alsa-1.2.11
new file mode 100644
index 0000000..3206d95
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-alsa-1.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 media-libs/alsa-lib =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-alsa
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 media-libs/alsa-lib
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a4dcbb19cdc08bfd3a6a00b767c01439
diff --git a/metadata/md5-cache/media-plugins/xmms-alsa-1.2.11-r2 b/metadata/md5-cache/media-plugins/xmms-alsa-1.2.11-r2
new file mode 100644
index 0000000..f340a83
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-alsa-1.2.11-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 media-libs/alsa-lib =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-alsa
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 media-libs/alsa-lib
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d3b8db666fcb766f05ffc3d637b34cb2
diff --git a/metadata/md5-cache/media-plugins/xmms-arts-0.7.1-r2 b/metadata/md5-cache/media-plugins/xmms-arts-0.7.1-r2
new file mode 100644
index 0000000..520518b
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-arts-0.7.1-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DEPEND=>=media-sound/xmms-1.2.7 kde-base/arts
+DESCRIPTION=This output plugin allows xmms to work with arts, KDE's sound system
+HOMEPAGE=http://www.xmms.org/plugins.php
+KEYWORDS=alpha amd64 hppa ia64 ppc ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.7 kde-base/arts
+SLOT=0
+SRC_URI=http://havardk.xmms.org/plugins/arts_output/arts_output-0.7.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f006e2182afc41ce896848094d1e3b94
diff --git a/metadata/md5-cache/media-plugins/xmms-crossfade-0.3.11 b/metadata/md5-cache/media-plugins/xmms-crossfade-0.3.11
new file mode 100644
index 0000000..9bbedcc
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-crossfade-0.3.11
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst
+DEPEND=media-sound/xmms
+DESCRIPTION=XMMS Plugin for crossfading, and continuous output.
+HOMEPAGE=http://www.eisenlohr.org/xmms-crossfade/index.html
+KEYWORDS=amd64 ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms
+SLOT=0
+SRC_URI=http://www.eisenlohr.org/xmms-crossfade/xmms-crossfade-0.3.11.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=cc04f23ef3bf52fb181996fb2c84d975
diff --git a/metadata/md5-cache/media-plugins/xmms-esd-1.2.10-r1 b/metadata/md5-cache/media-plugins/xmms-esd-1.2.10-r1
new file mode 100644
index 0000000..1ef35ef
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-esd-1.2.10-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 >=media-sound/esound-0.2.22 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-esd
+HOMEPAGE=http://www.xmms.org
+IUSE=oss rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 >=media-sound/esound-0.2.22
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2aa2ff97aa7725a4a649c603860ea76c
diff --git a/metadata/md5-cache/media-plugins/xmms-esd-1.2.11 b/metadata/md5-cache/media-plugins/xmms-esd-1.2.11
new file mode 100644
index 0000000..6d78989
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-esd-1.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 >=media-sound/esound-0.2.22 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-esd
+HOMEPAGE=http://www.xmms.org
+IUSE=oss rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 >=media-sound/esound-0.2.22
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=762cf2ab32bdf8a76799322ef810f226
diff --git a/metadata/md5-cache/media-plugins/xmms-esd-1.2.11-r2 b/metadata/md5-cache/media-plugins/xmms-esd-1.2.11-r2
new file mode 100644
index 0000000..f48c6fa
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-esd-1.2.11-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 >=media-sound/esound-0.2.22 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-esd
+HOMEPAGE=http://www.xmms.org
+IUSE=oss rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 >=media-sound/esound-0.2.22
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c6dff591395d12a102388d284497e23f
diff --git a/metadata/md5-cache/media-plugins/xmms-flac-1.2.1-r2 b/metadata/md5-cache/media-plugins/xmms-flac-1.2.1-r2
new file mode 100644
index 0000000..91949dc
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-flac-1.2.1-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=ogg? ( >=media-libs/libogg-1.1.3 ) x86? ( dev-lang/nasm ) sys-apps/gawk sys-devel/gettext dev-util/pkgconfig media-libs/flac media-sound/xmms || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=free lossless audio encoder and decoder plugin for xmms
+HOMEPAGE=http://flac.sourceforge.net
+IUSE=3dnow altivec debug doc ogg sse
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~sh sparc x86 ~x86-fbsd
+LICENSE=GPL-2 LGPL-2
+RDEPEND=ogg? ( >=media-libs/libogg-1.1.3 )
+SLOT=0
+SRC_URI=mirror://sourceforge/flac/flac-1.2.1.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=595f648c249d1896f3167f991583b8a5
diff --git a/metadata/md5-cache/media-plugins/xmms-jack-0.17 b/metadata/md5-cache/media-plugins/xmms-jack-0.17
new file mode 100644
index 0000000..1d710ae
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-jack-0.17
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms >=media-libs/bio2jack-0.7 media-libs/libsamplerate media-sound/jack-audio-connection-kit =sys-devel/automake-1.8* >=sys-devel/autoconf-2.59 || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=a jack audio output plugin for XMMS
+HOMEPAGE=http://xmms-jack.sourceforge.net/
+KEYWORDS=amd64 ~arm ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms >=media-libs/bio2jack-0.7 media-libs/libsamplerate media-sound/jack-audio-connection-kit
+SLOT=0
+SRC_URI=mirror://sourceforge/xmms-jack/xmms-jack-0.17.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8d944572b5cca7b5928b2763227bcf69
diff --git a/metadata/md5-cache/media-plugins/xmms-lirc-1.4 b/metadata/md5-cache/media-plugins/xmms-lirc-1.4
new file mode 100644
index 0000000..61ad898
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-lirc-1.4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install postinst
+DEPEND=media-sound/xmms app-misc/lirc
+DESCRIPTION=LIRC plugin for xmms to control xmms with your favorite remote control.
+HOMEPAGE=http://www.lirc.org
+KEYWORDS=alpha amd64 ppc x86 ppc64
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms app-misc/lirc
+SLOT=0
+SRC_URI=mirror://sourceforge/lirc/lirc-xmms-plugin-1.4.tar.gz
+_md5_=a64fccefd8844a86a17b43cf2db5c8cf
diff --git a/metadata/md5-cache/media-plugins/xmms-mac-0.3.1-r2 b/metadata/md5-cache/media-plugins/xmms-mac-0.3.1-r2
new file mode 100644
index 0000000..4fb18a6
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mac-0.3.1-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms media-libs/mac
+DESCRIPTION=Plugin to listen ape files (monkey audio codec) files on xmms
+HOMEPAGE=http://sourceforge.net/projects/mac-port/
+KEYWORDS=x86 amd64
+LICENSE=MAC
+RDEPEND=media-sound/xmms media-libs/mac
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/xmms-mac-0.3.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=b69525e789fde497f4781b0a67985b73
diff --git a/metadata/md5-cache/media-plugins/xmms-mad-0.8-r2 b/metadata/md5-cache/media-plugins/xmms-mad-0.8-r2
new file mode 100644
index 0000000..9e2e691
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mad-0.8-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DEPEND=media-sound/xmms media-libs/libid3tag media-libs/libmad dev-util/pkgconfig
+DESCRIPTION=A XMMS plugin for MAD
+HOMEPAGE=http://xmms-mad.sourceforge.net/
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 -mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms media-libs/libid3tag media-libs/libmad
+SLOT=0
+SRC_URI=mirror://sourceforge/xmms-mad/xmms-mad-0.8.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=dd7b0dd926b351e87b7ab85205db3d67
diff --git a/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.10 b/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.10
new file mode 100644
index 0000000..a452964
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.10
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 >=media-libs/libmikmod-3.1.10 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-mikmod
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 >=media-libs/libmikmod-3.1.10
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=05c5092d91e950c9fe41f6962baef7c3
diff --git a/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11 b/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11
new file mode 100644
index 0000000..a365548
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 >=media-libs/libmikmod-3.1.10 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-mikmod
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 >=media-libs/libmikmod-3.1.10
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=280257262ab597baa745fccb14b70e3d
diff --git a/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11-r2 b/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11-r2
new file mode 100644
index 0000000..fddbff2
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mikmod-1.2.11-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 >=media-libs/libmikmod-3.1.10 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-mikmod
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10 >=media-libs/libmikmod-3.1.10
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8237c087a4be773221697d90284796b2
diff --git a/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.10-r6 b/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.10-r6
new file mode 100644
index 0000000..8966fde
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.10-r6
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10-r12 ssl? ( dev-libs/openssl ) =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-mpg123
+HOMEPAGE=http://www.xmms.org
+IUSE=ipv6 ssl mmx 3dnow rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10-r12 ssl? ( dev-libs/openssl )
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=67600013c556568c1b43ac63475fc0d2
diff --git a/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11 b/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11
new file mode 100644
index 0000000..f1969a8
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10-r12 ssl? ( dev-libs/openssl ) =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-mpg123
+HOMEPAGE=http://www.xmms.org
+IUSE=ipv6 ssl mmx 3dnow rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10-r12 ssl? ( dev-libs/openssl )
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a924c95474724fdee42476eda609c194
diff --git a/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11-r2 b/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11-r2
new file mode 100644
index 0000000..7e2d7d6
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-mpg123-1.2.11-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10-r12 ssl? ( dev-libs/openssl ) =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-mpg123
+HOMEPAGE=http://www.xmms.org
+IUSE=ipv6 ssl mmx 3dnow rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10-r12 ssl? ( dev-libs/openssl )
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0ca84e1b3de4b46fe51bde85a66c2fcd
diff --git a/metadata/md5-cache/media-plugins/xmms-oss-1.2.10-r2 b/metadata/md5-cache/media-plugins/xmms-oss-1.2.10-r2
new file mode 100644
index 0000000..c330b93
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-oss-1.2.10-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-oss
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e961601aeead426e9eec2c4c683482cd
diff --git a/metadata/md5-cache/media-plugins/xmms-oss-1.2.11 b/metadata/md5-cache/media-plugins/xmms-oss-1.2.11
new file mode 100644
index 0000000..9cd6988
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-oss-1.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-oss
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=93ca06282de6c19272e90f8ae50d2366
diff --git a/metadata/md5-cache/media-plugins/xmms-oss-1.2.11-r2 b/metadata/md5-cache/media-plugins/xmms-oss-1.2.11-r2
new file mode 100644
index 0000000..02e3003
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-oss-1.2.11-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10 =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-oss
+HOMEPAGE=http://www.xmms.org
+IUSE=rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=16527f99c177a170ee1d8930121161ef
diff --git a/metadata/md5-cache/media-plugins/xmms-pulse-0.9.4 b/metadata/md5-cache/media-plugins/xmms-pulse-0.9.4
new file mode 100644
index 0000000..2ee8ad6
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-pulse-0.9.4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install unpack
+DESCRIPTION=A XMMS plugin for MAD
+HOMEPAGE=http://xmms-mad.sourceforge.net/
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 -mips ~ppc ~ppc64 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms media-sound/pulseaudio
+SLOT=0
+SRC_URI=http://0pointer.de/lennart/projects/xmms-pulse/xmms-pulse-0.9.4.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=6da2bd663bb85e334698b713c8c8ffdb
diff --git a/metadata/md5-cache/media-plugins/xmms-rva-0.7.7 b/metadata/md5-cache/media-plugins/xmms-rva-0.7.7
new file mode 100644
index 0000000..0575f60
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-rva-0.7.7
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=mad? ( media-libs/libmad ) audiofile? ( >=media-libs/audiofile-0.2.3-r1 ) media-sound/xmms nls? ( dev-util/intltool )
+DESCRIPTION=Audio file volume normalizer plugin for XMMS
+HOMEPAGE=http://normalize.nongnu.org/
+IUSE=mad audiofile nls userland_BSD
+KEYWORDS=amd64 ppc ppc64 sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=mad? ( media-libs/libmad ) audiofile? ( >=media-libs/audiofile-0.2.3-r1 ) media-sound/xmms
+SLOT=0
+SRC_URI=http://savannah.nongnu.org/download/normalize/normalize-0.7.7.tar.bz2
+_md5_=00429484048ef41a5df202ec6429c99c
diff --git a/metadata/md5-cache/media-plugins/xmms-sndfile-1.2 b/metadata/md5-cache/media-plugins/xmms-sndfile-1.2
new file mode 100644
index 0000000..bde1162
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-sndfile-1.2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DEPEND=media-libs/libsndfile media-sound/xmms dev-util/pkgconfig
+DESCRIPTION=a libsndfile plugin for XMMS
+HOMEPAGE=http://www.mega-nerd.com/xmms_sndfile/
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=media-libs/libsndfile media-sound/xmms
+SLOT=0
+SRC_URI=http://www.mega-nerd.com/xmms_sndfile/xmms_sndfile-1.2.tar.gz
+_md5_=aa16cda608fa0b866e390e95443171bd
diff --git a/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.10-r1 b/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.10-r1
new file mode 100644
index 0000000..2eb929b
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.10-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10-r12 media-libs/libvorbis ssl? ( dev-libs/openssl ) =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-vorbis
+HOMEPAGE=http://www.xmms.org
+IUSE=ipv6 ssl rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10-r12 media-libs/libvorbis ssl? ( dev-libs/openssl )
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=5db155c476a32fe87f83805847a1712c
diff --git a/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11 b/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11
new file mode 100644
index 0000000..040c81b
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10-r12 media-libs/libvorbis ssl? ( dev-libs/openssl ) =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-vorbis
+HOMEPAGE=http://www.xmms.org
+IUSE=ipv6 ssl rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10-r12 media-libs/libvorbis ssl? ( dev-libs/openssl )
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1f7fc83aa61c4d4722478b9503026feb
diff --git a/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11-r2 b/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11-r2
new file mode 100644
index 0000000..c2c19fb
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-vorbis-1.2.11-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=media-sound/xmms-1.2.10-r12 media-libs/libvorbis ssl? ( dev-libs/openssl ) =sys-devel/automake-1.7* sys-devel/autoconf sys-devel/libtool rcc? ( app-i18n/librcc )
+DESCRIPTION=Xmms Plugin: xmms-vorbis
+HOMEPAGE=http://www.xmms.org
+IUSE=ipv6 ssl rcc
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=media-sound/xmms-1.2.10-r12 media-libs/libvorbis ssl? ( dev-libs/openssl )
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rusxmms-plugin 85521d10a325907d63174216136e97d4 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4547437c7643f0e2bf326a82294422ce
diff --git a/metadata/md5-cache/media-plugins/xmms-wavpack-1.0.3 b/metadata/md5-cache/media-plugins/xmms-wavpack-1.0.3
new file mode 100644
index 0000000..a4e211d
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-wavpack-1.0.3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DEPEND=media-sound/xmms >=media-sound/wavpack-4.40
+DESCRIPTION=Plugin to listen WavPack (wv) files using xmms
+HOMEPAGE=http://www.wavpack.com
+KEYWORDS=x86 amd64
+LICENSE=GPL
+RDEPEND=media-sound/xmms >=media-sound/wavpack-4.40
+SLOT=0
+SRC_URI=http://www.wavpack.com/xmms-wavpack-1.0.3.tar.bz2
+_md5_=659c6bbd511422bb170d9956ea67e543
diff --git a/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r1 b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r1
new file mode 100644
index 0000000..1adf4fa
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20070129
+DESCRIPTION=XMMS plugin to play wma
+HOMEPAGE=http://mcmcc.bat.ru/xmms-wma/
+KEYWORDS=amd64 ~ppc ~sparc x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20070129
+SLOT=0
+SRC_URI=http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9fb298bc5eed96b9b54dd62115fb2fdf
diff --git a/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r2 b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r2
new file mode 100644
index 0000000..c7f4f86
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20081014
+DESCRIPTION=XMMS plugin to play wma
+HOMEPAGE=http://mcmcc.bat.ru/xmms-wma/
+KEYWORDS=~amd64 ~ppc ~sparc ~x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20081014
+SLOT=0
+SRC_URI=http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1e85bbef81766d3a2c7d2bf988faa833
diff --git a/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r3 b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r3
new file mode 100644
index 0000000..19172c2
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20081014
+DESCRIPTION=XMMS plugin to play wma
+HOMEPAGE=http://mcmcc.bat.ru/xmms-wma/
+KEYWORDS=~amd64 ~ppc ~sparc ~x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20081014
+SLOT=0
+SRC_URI=http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8803b0adc101024968da0c3121456d97
diff --git a/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r4 b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r4
new file mode 100644
index 0000000..8a965de
--- /dev/null
+++ b/metadata/md5-cache/media-plugins/xmms-wma-1.0.5-r4
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20081014
+DESCRIPTION=XMMS plugin to play wma
+HOMEPAGE=http://mcmcc.bat.ru/xmms-wma/
+KEYWORDS=~amd64 ~ppc ~sparc ~x86
+LICENSE=GPL-2
+RDEPEND=media-sound/xmms >=media-video/ffmpeg-0.4.9_p20081014
+SLOT=0
+SRC_URI=http://mcmcc.bat.ru/xmms-wma/xmms-wma-1.0.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=405817960f3e38cca3f2268975efca6f
diff --git a/metadata/md5-cache/media-sound/grip-3.3.1-r1 b/metadata/md5-cache/media-sound/grip-3.3.1-r1
new file mode 100644
index 0000000..f1241f4
--- /dev/null
+++ b/metadata/md5-cache/media-sound/grip-3.3.1-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=x11-libs/gtk+-2.2 x11-libs/vte =sys-libs/db-1* media-sound/lame media-sound/cdparanoia >=media-libs/id3lib-3.8.3 >=gnome-base/libgnomeui-2.2.0 >=gnome-base/orbit-2 gnome-base/libghttp net-misc/curl oggvorbis? ( media-sound/vorbis-tools ) nls? ( sys-devel/gettext ) sys-devel/gnuconfig
+DESCRIPTION=GTK+ based Audio CD Player/Ripper.
+HOMEPAGE=http://www.nostatic.org/grip
+IUSE=nls oggvorbis
+KEYWORDS=~alpha amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=x11-libs/gtk+-2.2 x11-libs/vte =sys-libs/db-1* media-sound/lame media-sound/cdparanoia >=media-libs/id3lib-3.8.3 >=gnome-base/libgnomeui-2.2.0 >=gnome-base/orbit-2 gnome-base/libghttp net-misc/curl oggvorbis? ( media-sound/vorbis-tools )
+SLOT=0
+SRC_URI=mirror://sourceforge/grip/grip-3.3.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnuconfig ee02e61d6c68cee478e2e69214b7caef multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=5cac6a9611adb4c3edb79bcf70747096
diff --git a/metadata/md5-cache/media-sound/gxmms2-0.7.0 b/metadata/md5-cache/media-sound/gxmms2-0.7.0
new file mode 100644
index 0000000..86b74d3
--- /dev/null
+++ b/metadata/md5-cache/media-sound/gxmms2-0.7.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=A GTK+ 2.6 based XMMS2 client
+HOMEPAGE=http://wejp.k.vu/projects/xmms2/
+KEYWORDS=amd64 ~ppc ~sparc x86 ~hppa ~mips ~ppc64 ~alpha ~ia64
+LICENSE=GPL-2
+RDEPEND=>=x11-libs/gtk+-2.6 >=media-sound/xmms2-0.2.6
+RESTRICT=nomirror
+SLOT=0
+SRC_URI=http://wejp.k.vu/projects/xmms2/gxmms2-0.7.0.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8a967d3309f81b50055ce6584091d76e
diff --git a/metadata/md5-cache/media-sound/lossless2lossy-1.21 b/metadata/md5-cache/media-sound/lossless2lossy-1.21
new file mode 100644
index 0000000..625e2f8
--- /dev/null
+++ b/metadata/md5-cache/media-sound/lossless2lossy-1.21
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install unpack
+DESCRIPTION=A conversion script for mass converting your music collection from one format to another
+HOMEPAGE=http://lossless2lossy.sourceforge.net/
+IUSE=ape flac mp3 vorbis wavpack
+KEYWORDS=~amd64 ~x86 ~sparc
+LICENSE=GPL-2
+RDEPEND=ape? ( media-libs/mac ) flac? ( media-libs/flac ) mp3? ( media-sound/lame ) vorbis? ( media-libs/libvorbis ) wavpack? ( media-sound/wavpack ) media-sound/id3v2
+SLOT=0
+SRC_URI=http://downloads.sourceforge.net/lossless2lossy/lossless2lossy-v1.21.gz
+_md5_=3c13e0798714639d51ba76ec0a805494
diff --git a/metadata/md5-cache/media-sound/mpg123-0.59s-r11 b/metadata/md5-cache/media-sound/mpg123-0.59s-r11
new file mode 100644
index 0000000..9e02292
--- /dev/null
+++ b/metadata/md5-cache/media-sound/mpg123-0.59s-r11
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=virtual/libc esd? ( media-sound/esound ) nas? ( media-libs/nas ) rcc? ( app-i18n/librcc ) >=sys-apps/sed-4
+DESCRIPTION=Real Time mp3 player
+HOMEPAGE=http://www.mpg123.de/
+IUSE=mmx 3dnow esd nas oss rcc
+KEYWORDS=alpha amd64 hppa ia64 mips ppc ppc-macos ppc64 sparc x86
+LICENSE=as-is
+PROVIDE=virtual/mpg123
+RDEPEND=virtual/libc esd? ( media-sound/esound ) nas? ( media-libs/nas ) rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=http://www.mpg123.de/mpg123/mpg123-pre0.59s.tar.gz http://dev.gentoo.org/~eradicator/mpg123/mpg123-0.59s-gentoo-1.5.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a861b45c958520924cfa394f371d9f5e
diff --git a/metadata/md5-cache/media-sound/mpg123-0.65-r1 b/metadata/md5-cache/media-sound/mpg123-0.65-r1
new file mode 100644
index 0000000..ffad87b
--- /dev/null
+++ b/metadata/md5-cache/media-sound/mpg123-0.65-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=alsa? ( media-libs/alsa-lib ) sdl? ( !alsa? ( !oss? ( media-libs/libsdl ) ) ) esd? ( !alsa? ( !oss? ( !sdl? ( media-sound/esound ) ) ) ) nas? ( !alsa? ( !oss? ( !sdl? ( !esd? ( media-libs/nas ) ) ) ) ) jack? ( !alsa? ( !oss? ( !sdl? ( !esd? ( !nas? ( media-sound/jack-audio-connection-kit ) ) ) ) ) ) portaudio? ( !alsa? ( !oss? ( !sdl? ( !esd? ( !nas? ( !jack? ( media-libs/portaudio ) ) ) ) ) ) ) rcc? ( app-i18n/librcc )
+DESCRIPTION=Real Time mp3 player
+HOMEPAGE=http://www.mpg123.de/
+IUSE=mmx 3dnow alsa oss sdl esd nas jack portaudio rcc
+KEYWORDS=~alpha amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86
+LICENSE=LGPL-2.1
+PROVIDE=virtual/mpg123
+RDEPEND=alsa? ( media-libs/alsa-lib ) sdl? ( !alsa? ( !oss? ( media-libs/libsdl ) ) ) esd? ( !alsa? ( !oss? ( !sdl? ( media-sound/esound ) ) ) ) nas? ( !alsa? ( !oss? ( !sdl? ( !esd? ( media-libs/nas ) ) ) ) ) jack? ( !alsa? ( !oss? ( !sdl? ( !esd? ( !nas? ( media-sound/jack-audio-connection-kit ) ) ) ) ) ) portaudio? ( !alsa? ( !oss? ( !sdl? ( !esd? ( !nas? ( !jack? ( media-libs/portaudio ) ) ) ) ) ) ) rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://sourceforge/mpg123/mpg123-0.65.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0df4593d6ee5846ab493cbd15e7c8d42
diff --git a/metadata/md5-cache/media-sound/mpg123-1.12.2-r2 b/metadata/md5-cache/media-sound/mpg123-1.12.2-r2
new file mode 100644
index 0000000..47366cc
--- /dev/null
+++ b/metadata/md5-cache/media-sound/mpg123-1.12.2-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install unpack
+DEPEND=alsa? ( media-libs/alsa-lib ) jack? ( media-sound/jack-audio-connection-kit ) nas? ( media-libs/nas ) portaudio? ( media-libs/portaudio ) pulseaudio? ( media-sound/pulseaudio ) sdl? ( media-libs/libsdl ) sys-devel/libtool rcc? ( app-i18n/librcc ) dev-util/pkgconfig
+DESCRIPTION=a realtime MPEG 1.0/2.0/2.5 audio player for layers 1, 2 and 3
+EAPI=2
+HOMEPAGE=http://www.mpg123.org/
+IUSE=3dnow 3dnowext alsa altivec ipv6 jack mmx nas oss portaudio pulseaudio sdl sse rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2 LGPL-2.1
+RDEPEND=alsa? ( media-libs/alsa-lib ) jack? ( media-sound/jack-audio-connection-kit ) nas? ( media-libs/nas ) portaudio? ( media-libs/portaudio ) pulseaudio? ( media-sound/pulseaudio ) sdl? ( media-libs/libsdl ) sys-devel/libtool rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://sourceforge/mpg123/mpg123-1.12.2.tar.bz2 http://www.mpg123.org/download/mpg123-1.12.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7b3454fa4d28c1a676a85ba7584fa984
diff --git a/metadata/md5-cache/media-sound/mpg123-1.7.3-r1 b/metadata/md5-cache/media-sound/mpg123-1.7.3-r1
new file mode 100644
index 0000000..bb91dc9
--- /dev/null
+++ b/metadata/md5-cache/media-sound/mpg123-1.7.3-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare unpack
+DEPEND=alsa? ( media-libs/alsa-lib ) jack? ( media-sound/jack-audio-connection-kit ) nas? ( media-libs/nas ) portaudio? ( media-libs/portaudio ) pulseaudio? ( media-sound/pulseaudio ) sdl? ( media-libs/libsdl ) rcc? ( app-i18n/librcc ) dev-util/pkgconfig
+DESCRIPTION=a realtime MPEG 1.0/2.0/2.5 audio player for layers 1, 2 and 3.
+EAPI=2
+HOMEPAGE=http://www.mpg123.org
+IUSE=3dnow 3dnowext alsa altivec ipv6 jack mmx nas +network oss portaudio pulseaudio sdl sse rcc
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-fbsd
+LICENSE=GPL-2 LGPL-2.1
+RDEPEND=alsa? ( media-libs/alsa-lib ) jack? ( media-sound/jack-audio-connection-kit ) nas? ( media-libs/nas ) portaudio? ( media-libs/portaudio ) pulseaudio? ( media-sound/pulseaudio ) sdl? ( media-libs/libsdl ) rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=mirror://sourceforge/mpg123/mpg123-1.7.3.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=403510707cca7ee21dcbcb13d68670cf
diff --git a/metadata/md5-cache/media-sound/xmms-1.2.10-r24 b/metadata/md5-cache/media-sound/xmms-1.2.10-r24
new file mode 100644
index 0000000..e116c2e
--- /dev/null
+++ b/metadata/md5-cache/media-sound/xmms-1.2.10-r24
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND==x11-libs/gtk+-1.2* rcc? ( app-i18n/librcc ) >=sys-devel/automake-1.7 >=sys-devel/autoconf-2.5 sys-devel/libtool nls? ( dev-util/intltool dev-lang/perl sys-devel/gettext ) sys-devel/gnuconfig
+DESCRIPTION=X MultiMedia System
+HOMEPAGE=http://www.xmms.org/
+IUSE=nls esd mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86
+LICENSE=GPL-2
+PDEPEND=lirc? ( media-plugins/xmms-lirc ) flac? ( media-libs/flac ) mikmod? ( media-plugins/xmms-mikmod ) mp3? ( >=media-plugins/xmms-mpg123-1.2.10-r5 ) vorbis? ( >=media-plugins/xmms-vorbis-1.2.10-r1 ) sndfile? ( media-plugins/xmms-sndfile ) alsa? ( media-plugins/xmms-alsa ) arts? ( media-plugins/xmms-arts ) jack? ( media-plugins/xmms-jack ) esd? ( media-plugins/xmms-esd ) oss? ( media-plugins/xmms-oss )
+RDEPEND==x11-libs/gtk+-1.2* rcc? ( app-i18n/librcc ) directfb? ( dev-libs/DirectFB ) app-arch/unzip
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.10.tar.bz2 mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-patches-2.2.6.tar.bz2 http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa35.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnuconfig ee02e61d6c68cee478e2e69214b7caef libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=89dcbe37505f056a380de5998f09db9c
diff --git a/metadata/md5-cache/media-sound/xmms-1.2.11 b/metadata/md5-cache/media-sound/xmms-1.2.11
new file mode 100644
index 0000000..c8f4e68
--- /dev/null
+++ b/metadata/md5-cache/media-sound/xmms-1.2.11
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND==x11-libs/gtk+-1.2* rcc? ( app-i18n/librcc ) >=sys-devel/automake-1.7 >=sys-devel/autoconf-2.5 sys-devel/libtool nls? ( dev-util/intltool dev-lang/perl sys-devel/gettext ) sys-devel/gnuconfig
+DESCRIPTION=X MultiMedia System
+HOMEPAGE=http://www.xmms.org/
+IUSE=nls esd mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86
+LICENSE=GPL-2
+PDEPEND=lirc? ( media-plugins/xmms-lirc ) flac? ( media-libs/flac ) mikmod? ( media-plugins/xmms-mikmod ) mp3? ( >=media-plugins/xmms-mpg123-1.2.11 ) vorbis? ( >=media-plugins/xmms-vorbis-1.2.11 ) sndfile? ( media-plugins/xmms-sndfile ) alsa? ( media-plugins/xmms-alsa ) arts? ( media-plugins/xmms-arts ) jack? ( media-plugins/xmms-jack ) esd? ( media-plugins/xmms-esd ) oss? ( media-plugins/xmms-oss )
+RDEPEND==x11-libs/gtk+-1.2* rcc? ( app-i18n/librcc ) directfb? ( dev-libs/DirectFB ) app-arch/unzip
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.tar.bz2 http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa41.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnuconfig ee02e61d6c68cee478e2e69214b7caef libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=806d43670db06859ae8b7ce3b177c37e
diff --git a/metadata/md5-cache/media-sound/xmms-1.2.11-r2 b/metadata/md5-cache/media-sound/xmms-1.2.11-r2
new file mode 100644
index 0000000..b58b6e1
--- /dev/null
+++ b/metadata/md5-cache/media-sound/xmms-1.2.11-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND==x11-libs/gtk+-1.2* rcc? ( app-i18n/librcc ) >=sys-devel/automake-1.7 >=sys-devel/autoconf-2.5 sys-devel/libtool nls? ( dev-util/intltool dev-lang/perl sys-devel/gettext ) sys-devel/gnuconfig
+DESCRIPTION=X MultiMedia System
+HOMEPAGE=http://www.xmms.org/
+IUSE=nls esd mmx vorbis 3dnow mikmod directfb alsa oss arts jack sndfile lirc flac mp3 rcc
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86
+LICENSE=GPL-2
+PDEPEND=lirc? ( media-plugins/xmms-lirc ) flac? ( media-libs/flac ) mikmod? ( media-plugins/xmms-mikmod ) mp3? ( >=media-plugins/xmms-mpg123-1.2.11 ) vorbis? ( >=media-plugins/xmms-vorbis-1.2.11 ) sndfile? ( media-plugins/xmms-sndfile ) alsa? ( media-plugins/xmms-alsa ) arts? ( media-plugins/xmms-arts ) jack? ( media-plugins/xmms-jack ) esd? ( media-plugins/xmms-esd ) oss? ( media-plugins/xmms-oss )
+RDEPEND==x11-libs/gtk+-1.2* rcc? ( app-i18n/librcc ) directfb? ( dev-libs/DirectFB ) app-arch/unzip
+SLOT=0
+SRC_URI=http://www.xmms.org/files/1.2.x/xmms-1.2.11.tar.bz2 mirror://gentoo/gentoo_ice-xmms-0.2.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.10-gentoo-m4-1.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/xmms-1.2.11-gentoo-patches-2.3.0.1.tar.bz2 http://dside.dyndns.org/files/rusxmms/gnomexmms.xpm http://dside.dyndns.org/files/rusxmms/RusXMMS2-csa43.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnuconfig ee02e61d6c68cee478e2e69214b7caef libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f92f6cc257fa14eda98c9f751d94b232
diff --git a/metadata/md5-cache/media-sound/xmms2-0.4-r1 b/metadata/md5-cache/media-sound/xmms2-0.4-r1
new file mode 100644
index 0000000..423817c
--- /dev/null
+++ b/metadata/md5-cache/media-sound/xmms2-0.4-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst
+DEPEND=!media-sound/xmms2-git !clientonly? ( >=dev-db/sqlite-3.3.4 aac? ( >=media-libs/faad2-2.0 ) pulseaudio? ( >=media-sound/pulseaudio-0.9.9 ) alsa? ( media-libs/alsa-lib ) ao? ( media-libs/libao ) avahi? ( net-dns/avahi ) cdda? ( >=media-libs/libdiscid-0.1.1 >=media-sound/cdparanoia-3.9.8 ) curl? ( >=net-misc/curl-7.15.1 !=net-misc/curl-7.16.1 !=net-misc/curl-7.16.2 ) flac? ( media-libs/flac ) gnome? ( gnome-base/gnome-vfs ) jack? ( >=media-sound/jack-audio-connection-kit-0.101.1 ) mms? ( media-video/ffmpeg >=media-libs/libmms-0.3 ) modplug? ( media-libs/libmodplug ) mp3? ( media-sound/madplay ) mp4? ( media-video/ffmpeg ) musepack? ( media-libs/libmpcdec ) ofa? ( media-libs/libofa ) rss? ( dev-libs/libxml2 ) samba? ( net-fs/samba ) sid? ( media-sound/sidplay media-libs/resid ) speex? ( media-libs/speex ) vorbis? ( media-libs/libvorbis ) xml? ( dev-libs/libxml2 ) xspf? ( dev-libs/libxml2 ) ) >=dev-lang/python-2.4.3 >=dev-libs/glib-2.12.9 cpp? ( >=dev-libs/boost-1.32 >=sys-devel/gcc-3.4 ) ecore? ( x11-libs/ecore ) fam? ( app-admin/gamin ) perl? ( >=dev-lang/perl-5.8.8 ) python? ( >=dev-python/pyrex-0.9.5.1 ) ruby? ( >=dev-lang/ruby-1.8.5 )
+DESCRIPTION=X(cross)platform Music Multiplexing System. The new generation of the XMMS player.
+HOMEPAGE=http://xmms2.xmms.org
+IUSE=aac pulseaudio alsa ao asx avahi avcodec cdda clientonly coreaudio curl cpp daap diskwrite ecore eq fam flac gnome jack lastfm mms modplug mp3 mp4 musepack nophonehome ofa oss perl python rss ruby samba shout sid speex vorbis wma xml xspf
+KEYWORDS=x86 amd64 ~sparc
+LICENSE=GPL-2 LGPL-2.1
+RDEPEND=!media-sound/xmms2-git !clientonly? ( >=dev-db/sqlite-3.3.4 aac? ( >=media-libs/faad2-2.0 ) pulseaudio? ( >=media-sound/pulseaudio-0.9.9 ) alsa? ( media-libs/alsa-lib ) ao? ( media-libs/libao ) avahi? ( net-dns/avahi ) cdda? ( >=media-libs/libdiscid-0.1.1 >=media-sound/cdparanoia-3.9.8 ) curl? ( >=net-misc/curl-7.15.1 !=net-misc/curl-7.16.1 !=net-misc/curl-7.16.2 ) flac? ( media-libs/flac ) gnome? ( gnome-base/gnome-vfs ) jack? ( >=media-sound/jack-audio-connection-kit-0.101.1 ) mms? ( media-video/ffmpeg >=media-libs/libmms-0.3 ) modplug? ( media-libs/libmodplug ) mp3? ( media-sound/madplay ) mp4? ( media-video/ffmpeg ) musepack? ( media-libs/libmpcdec ) ofa? ( media-libs/libofa ) rss? ( dev-libs/libxml2 ) samba? ( net-fs/samba ) sid? ( media-sound/sidplay media-libs/resid ) speex? ( media-libs/speex ) vorbis? ( media-libs/libvorbis ) xml? ( dev-libs/libxml2 ) xspf? ( dev-libs/libxml2 ) ) >=dev-lang/python-2.4.3 >=dev-libs/glib-2.12.9 cpp? ( >=dev-libs/boost-1.32 >=sys-devel/gcc-3.4 ) ecore? ( x11-libs/ecore ) fam? ( app-admin/gamin ) perl? ( >=dev-lang/perl-5.8.8 ) python? ( >=dev-python/pyrex-0.9.5.1 ) ruby? ( >=dev-lang/ruby-1.8.5 )
+RESTRICT=nomirror
+SLOT=0
+SRC_URI=mirror://sourceforge/xmms2/xmms2-0.4DrKosmos.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f206b57d92f8dfed645524fd273bb5a5
diff --git a/metadata/md5-cache/media-sound/xmmsctrl-1.9 b/metadata/md5-cache/media-sound/xmmsctrl-1.9
new file mode 100644
index 0000000..d16a9fc
--- /dev/null
+++ b/metadata/md5-cache/media-sound/xmmsctrl-1.9
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=media-sound/xmms
+DESCRIPTION=A small program to control xmms from a shell script.
+HOMEPAGE=http://www.cs.aau.dk/~adavid/utils/
+IUSE=bash-completion
+KEYWORDS=~alpha amd64 ~hppa ~ppc ~sparc x86
+LICENSE=GPL-2
+PDEPEND=bash-completion? ( app-shells/bash-completion )
+RDEPEND=media-sound/xmms bash-completion? ( app-admin/eselect )
+SLOT=0
+SRC_URI=http://www.cs.aau.dk/~adavid/utils/xmmsctrl-1.9.tar.gz
+_eclasses_=bash-completion f913ed18b57a2d3372c4291680454db4 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=41c199e44153ee1494f9f057c9c60edb
diff --git a/metadata/md5-cache/net-analyzer/netams-3.3.5 b/metadata/md5-cache/net-analyzer/netams-3.3.5
new file mode 100644
index 0000000..18213da
--- /dev/null
+++ b/metadata/md5-cache/net-analyzer/netams-3.3.5
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=NetAMS Traffic Accounting
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-db/mysql net-libs/libpcap
+SLOT=0
+SRC_URI=http://www.netams.com/files/netams-3.3.5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=36340af5e6474dd8190b16af3407915f
diff --git a/metadata/md5-cache/net-analyzer/openvas-3.0.1 b/metadata/md5-cache/net-analyzer/openvas-3.0.1
new file mode 100644
index 0000000..fb32c5c
--- /dev/null
+++ b/metadata/md5-cache/net-analyzer/openvas-3.0.1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DEPEND=>=net-analyzer/openvas-libraries-3.0.3 >=net-analyzer/openvas-scanner-3.0.1 >=net-analyzer/openvas-client-3.0.0 !net-analyzer/openvas-libnasl !net-analyzer/openvas-plugins
+DESCRIPTION=A remote security scanner
+HOMEPAGE=http://www.openvas.org/
+KEYWORDS=amd64 ~ppc x86
+LICENSE=GPL-2
+RDEPEND=>=net-analyzer/openvas-libraries-3.0.3 >=net-analyzer/openvas-scanner-3.0.1 >=net-analyzer/openvas-client-3.0.0 !net-analyzer/openvas-libnasl !net-analyzer/openvas-plugins
+SLOT=0
+_md5_=0061ec562be00d6ef3267fa05c06a592
diff --git a/metadata/md5-cache/net-analyzer/openvas-client-3.0.0 b/metadata/md5-cache/net-analyzer/openvas-client-3.0.0
new file mode 100644
index 0000000..31534d4
--- /dev/null
+++ b/metadata/md5-cache/net-analyzer/openvas-client-3.0.0
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install
+DEPEND=net-libs/gnutls gtk? ( >=x11-libs/gtk+-2.8.8 )
+DESCRIPTION=A client for the openvas vulnerability scanner
+HOMEPAGE=http://www.openvas.org/
+IUSE=gtk
+KEYWORDS=amd64 ~ppc x86
+LICENSE=GPL-2
+RDEPEND=net-libs/gnutls gtk? ( >=x11-libs/gtk+-2.8.8 )
+SLOT=0
+SRC_URI=http://wald.intevation.org/frs/download.php/685/openvas-client-3.0.0.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=34f4a7f2649f2f9537fe5d3b56331f79
diff --git a/metadata/md5-cache/net-analyzer/openvas-libraries-3.0.3 b/metadata/md5-cache/net-analyzer/openvas-libraries-3.0.3
new file mode 100644
index 0000000..4f4da25
--- /dev/null
+++ b/metadata/md5-cache/net-analyzer/openvas-libraries-3.0.3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DEPEND=net-libs/gnutls net-libs/libpcap
+DESCRIPTION=A remote security scanner for Linux (openvas-libraries)
+HOMEPAGE=http://www.openvas.org/
+KEYWORDS=amd64 ~ppc x86
+LICENSE=GPL-2
+RDEPEND=net-libs/gnutls net-libs/libpcap
+SLOT=0
+SRC_URI=http://wald.intevation.org/frs/download.php/706/openvas-libraries-3.0.3.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=36b8ee9ea93860aa58280123dbdc7af9
diff --git a/metadata/md5-cache/net-analyzer/openvas-scanner-3.0.1 b/metadata/md5-cache/net-analyzer/openvas-scanner-3.0.1
new file mode 100644
index 0000000..3ccbaf0
--- /dev/null
+++ b/metadata/md5-cache/net-analyzer/openvas-scanner-3.0.1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst
+DEPEND=>=net-analyzer/openvas-libraries-3.0.3 tcpd? ( sys-apps/tcp-wrappers ) gtk? ( =x11-libs/gtk+-2* ) prelude? ( dev-libs/libprelude ) !net-analyzer/openvas-libnasl !net-analyzer/openvas-plugins !net-analyzer/openvas-server
+DESCRIPTION=A remote security scanner for Linux (openvas-scanner)
+HOMEPAGE=http://www.openvas.org/
+IUSE=tcpd gtk debug prelude
+KEYWORDS=amd64 ~ppc x86
+LICENSE=GPL-2
+RDEPEND=>=net-analyzer/openvas-libraries-3.0.3 tcpd? ( sys-apps/tcp-wrappers ) gtk? ( =x11-libs/gtk+-2* ) prelude? ( dev-libs/libprelude ) !net-analyzer/openvas-libnasl !net-analyzer/openvas-plugins !net-analyzer/openvas-server
+SLOT=0
+SRC_URI=http://wald.intevation.org/frs/download.php/696/openvas-scanner-3.0.1.tar.gz
+_md5_=68d52e546f307f5d27d2799052de1687
diff --git a/metadata/md5-cache/net-dialup/mingetty-1.07.3 b/metadata/md5-cache/net-dialup/mingetty-1.07.3
new file mode 100644
index 0000000..a59e3b7
--- /dev/null
+++ b/metadata/md5-cache/net-dialup/mingetty-1.07.3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=app-arch/rpm2targz-9.0.0.3g
+DESCRIPTION=A compact getty program for virtual consoles only.
+HOMEPAGE=ftp://rpmfind.net/linux/fedora/core/3/SRPMS
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=mirror://fedora/3/SRPMS/mingetty-1.07-3.src.rpm
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rpm b94b54b44f14d6bee3e966c8f5c86fba toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=dcadd360e370fc63f9b4d8343fa45634
diff --git a/metadata/md5-cache/net-dialup/mingetty-1.07.3-r1 b/metadata/md5-cache/net-dialup/mingetty-1.07.3-r1
new file mode 100644
index 0000000..dc405db
--- /dev/null
+++ b/metadata/md5-cache/net-dialup/mingetty-1.07.3-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=app-arch/rpm2targz-9.0.0.3g
+DESCRIPTION=A compact getty program for virtual consoles only.
+HOMEPAGE=ftp://rpmfind.net/linux/fedora/core/3/SRPMS
+KEYWORDS=alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=mirror://fedora/3/SRPMS/mingetty-1.07-3.src.rpm
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 rpm b94b54b44f14d6bee3e966c8f5c86fba toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9ec4ce0288ee3b9727b9d55f00ceb0b5
diff --git a/metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r1 b/metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r1
new file mode 100644
index 0000000..4363854
--- /dev/null
+++ b/metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=BSD SSL enabled FTP server
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=sys-libs/ncurses dev-util/byacc
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/bsdftpd-ssl-1.0.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4cbee61f2eb6ca531fb011d33eabfd2d
diff --git a/metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r2 b/metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r2
new file mode 100644
index 0000000..ff41d18
--- /dev/null
+++ b/metadata/md5-cache/net-ftp/bsdftpd-ssl-1.0.2-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=BSD SSL enabled FTP server
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=sys-libs/ncurses dev-util/byacc
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/bsdftpd-ssl-1.0.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=faef0c4086e7c8a3ccc0449fc4f50396
diff --git a/metadata/md5-cache/net-ftp/gftp-2.0.18-r5 b/metadata/md5-cache/net-ftp/gftp-2.0.18-r5
new file mode 100644
index 0000000..1366137
--- /dev/null
+++ b/metadata/md5-cache/net-ftp/gftp-2.0.18-r5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=dev-libs/glib-2 sys-devel/gettext sys-libs/ncurses sys-libs/readline gtk? ( >=x11-libs/gtk+-2 ) ssl? ( dev-libs/openssl ) rcc? ( app-i18n/librcc ) >=dev-util/pkgconfig-0.9
+DESCRIPTION=Gnome based FTP Client
+HOMEPAGE=http://www.gftp.org
+IUSE=gtk ssl rcc
+KEYWORDS=~alpha amd64 ~ppc ~ppc64 ~sparc x86
+LICENSE=GPL-2
+RDEPEND=>=dev-libs/glib-2 sys-devel/gettext sys-libs/ncurses sys-libs/readline gtk? ( >=x11-libs/gtk+-2 ) ssl? ( dev-libs/openssl ) rcc? ( app-i18n/librcc )
+SLOT=0
+SRC_URI=http://www.gftp.org/gftp-2.0.18.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f2e5ed0cdac1bd2943e36688c1dada02
diff --git a/metadata/md5-cache/net-im/jabberd-1.4.4-r4 b/metadata/md5-cache/net-im/jabberd-1.4.4-r4
new file mode 100644
index 0000000..edf9b72
--- /dev/null
+++ b/metadata/md5-cache/net-im/jabberd-1.4.4-r4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=>=net-im/jabber-base-0.01 >=dev-libs/pth-1.4.0 dev-libs/expat net-dns/libidn dev-util/pkgconfig mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) ssl? ( >=dev-libs/openssl-0.9.6i ) !net-im/jabberd2
+DESCRIPTION=Open-source Jabber server
+HOMEPAGE=http://www.jabber.org
+IUSE=debug ipv6 mysql postgres ssl
+KEYWORDS=~alpha ~amd64 hppa ~ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=>=net-im/jabber-base-0.01 >=dev-libs/pth-1.4.0 dev-libs/expat net-dns/libidn dev-util/pkgconfig mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) ssl? ( >=dev-libs/openssl-0.9.6i ) !net-im/jabberd2
+SLOT=0
+SRC_URI=http://download.jabberd.org/jabberd14/jabberd-1.4.4.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3288d9f031321ef55bcb695f5398aecf
diff --git a/metadata/md5-cache/net-im/jabberd-1.4.4-r5 b/metadata/md5-cache/net-im/jabberd-1.4.4-r5
new file mode 100644
index 0000000..ceb51bf
--- /dev/null
+++ b/metadata/md5-cache/net-im/jabberd-1.4.4-r5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=>=net-im/jabber-base-0.01 >=dev-libs/pth-1.4.0 dev-libs/expat net-dns/libidn dev-util/pkgconfig mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) ssl? ( >=dev-libs/openssl-0.9.6i ) !net-im/jabberd2
+DESCRIPTION=Open-source Jabber server
+HOMEPAGE=http://www.jabber.org
+IUSE=debug ipv6 mysql postgres ssl
+KEYWORDS=~alpha ~amd64 hppa ~ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=>=net-im/jabber-base-0.01 >=dev-libs/pth-1.4.0 dev-libs/expat net-dns/libidn dev-util/pkgconfig mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) ssl? ( >=dev-libs/openssl-0.9.6i ) !net-im/jabberd2
+SLOT=0
+SRC_URI=http://download.jabberd.org/jabberd14/jabberd-1.4.4.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=ba20c0a12be31ee0e6c1289a1e584866
diff --git a/metadata/md5-cache/net-im/jabberd2-2.2.11 b/metadata/md5-cache/net-im/jabberd2-2.2.11
new file mode 100644
index 0000000..22c4d5c
--- /dev/null
+++ b/metadata/md5-cache/net-im/jabberd2-2.2.11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst
+DEPEND=dev-libs/expat net-libs/udns >=net-dns/libidn-0.3 >=virtual/gsasl-0.2.27 berkdb? ( >=sys-libs/db-4.1.25 ) mysql? ( virtual/mysql ) ldap? ( >=net-nds/openldap-2.1.0 ) pam? ( virtual/pam ) postgres? ( dev-db/postgresql-base ) ssl? ( >=dev-libs/openssl-0.9.6b ) sqlite? ( >=dev-db/sqlite-3 ) zlib? ( sys-libs/zlib )
+DESCRIPTION=Open Source Jabber Server
+HOMEPAGE=http://jabberd2.xiaoka.com/
+IUSE=berkdb debug memdebug mysql ldap pam postgres sqlite ssl zlib
+KEYWORDS=~amd64 ~ppc ~sparc ~x86
+LICENSE=GPL-2
+RDEPEND=dev-libs/expat net-libs/udns >=net-dns/libidn-0.3 >=virtual/gsasl-0.2.27 berkdb? ( >=sys-libs/db-4.1.25 ) mysql? ( virtual/mysql ) ldap? ( >=net-nds/openldap-2.1.0 ) pam? ( virtual/pam ) postgres? ( dev-db/postgresql-base ) ssl? ( >=dev-libs/openssl-0.9.6b ) sqlite? ( >=dev-db/sqlite-3 ) zlib? ( sys-libs/zlib ) >=net-im/jabber-base-0.01 !net-im/jabberd
+SLOT=0
+SRC_URI=http://ftp.xiaoka.com/jabberd2/releases/jabberd-2.2.11.tar.bz2
+_eclasses_=db-use 1c719875d6599536f956fafea9e1f404 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 pam 5c1a9ef4892062f9ec25c8ef7c1f1e52 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=6f829e336f3d9ab63d23625498224dd8
diff --git a/metadata/md5-cache/net-im/psi-0.14-r5 b/metadata/md5-cache/net-im/psi-0.14-r5
new file mode 100644
index 0000000..60ccce6
--- /dev/null
+++ b/metadata/md5-cache/net-im/psi-0.14-r5
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install prepare unpack
+DEPEND=>=x11-libs/qt-gui-4.4:4[qt3support,dbus?] >=x11-libs/qt-qt3support-4.4:4 >=app-crypt/qca-2.0.2:2 spell? ( >=app-text/enchant-1.3.0 ) xscreensaver? ( x11-libs/libXScrnSaver ) extras? ( webkit? ( x11-libs/qt-webkit ) ) app-arch/unzip || ( >=sys-libs/zlib-1.2.5.1-r2[minizip] <sys-libs/zlib-1.2.5.1-r1 ) sys-devel/qconf doc? ( app-doc/doxygen )
+DESCRIPTION=Qt4 Jabber client, with Licq-like interface
+EAPI=4
+HOMEPAGE=http://psi-im.org/
+IUSE=crypt dbus debug doc extras jingle spell ssl xscreensaver webkit linguas_be linguas_cs linguas_de linguas_fr linguas_it linguas_ja linguas_pl linguas_pt_BR linguas_ru linguas_sl linguas_sv linguas_ur_PK linguas_zh_TW
+KEYWORDS=amd64 ~arm hppa ppc ppc64 x86 ~x86-fbsd
+LICENSE=GPL-2
+PDEPEND=crypt? ( app-crypt/qca-gnupg:2 ) jingle? ( net-im/psimedia app-crypt/qca-ossl:2 ) ssl? ( app-crypt/qca-ossl:2 )
+RDEPEND=>=x11-libs/qt-gui-4.4:4[qt3support,dbus?] >=x11-libs/qt-qt3support-4.4:4 >=app-crypt/qca-2.0.2:2 spell? ( >=app-text/enchant-1.3.0 ) xscreensaver? ( x11-libs/libXScrnSaver ) extras? ( webkit? ( x11-libs/qt-webkit ) ) app-arch/unzip || ( >=sys-libs/zlib-1.2.5.1-r2[minizip] <sys-libs/zlib-1.2.5.1-r1 )
+RESTRICT=test
+SLOT=0
+SRC_URI=mirror://sourceforge/psi/psi-0.14.tar.bz2 http://fs.scs-tsa.de/psi_l10n/psi-0.14_langpack_for_packagers_2009-12-02.zip extras? ( mirror://gentoo/psi-extra-patches-r1428.tar.bz2 mirror://gentoo/psi-extra-iconsets-r1428.tar.bz2 )
+_eclasses_=base ec46b36a6f6fd1d0b505a33e0b74e413 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 qt4-r2 ce0c9abfee272185e03ab73f09f5fd69 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=548f015a419e912225fdd62107c4c97c
diff --git a/metadata/md5-cache/net-im/skype-4.1.0.20 b/metadata/md5-cache/net-im/skype-4.1.0.20
new file mode 100644
index 0000000..19effd5
--- /dev/null
+++ b/metadata/md5-cache/net-im/skype-4.1.0.20
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile install postinst postrm preinst unpack
+DEPEND=>=sys-apps/sed-4
+DESCRIPTION=An P2P Internet Telephony (VoiceIP) client
+EAPI=4
+HOMEPAGE=http://www.skype.com/
+IUSE=pax_kernel selinux qt-static
+KEYWORDS=amd64 x86
+LICENSE=skype-4.0.0.7-copyright skype-4.0.0.7-third-party_attributions.txt
+RDEPEND=virtual/ttf-fonts amd64? ( >=app-emulation/emul-linux-x86-baselibs-20120520 >=app-emulation/emul-linux-x86-soundlibs-20120520 >=app-emulation/emul-linux-x86-xlibs-20120520 !qt-static? ( >=app-emulation/emul-linux-x86-qtlibs-20120520 ) ) x86? ( media-libs/alsa-lib x11-libs/libX11 x11-libs/libXext x11-libs/libXScrnSaver x11-libs/libXv qt-static? ( >=dev-libs/glib-2.28 media-libs/fontconfig >=media-libs/freetype-2 >=media-libs/tiff-3.9.5-r3:3 sys-libs/zlib x11-libs/libICE x11-libs/libSM x11-libs/libXrender ) !qt-static? ( x11-libs/qt-core:4 x11-libs/qt-dbus:4 x11-libs/qt-gui:4[accessibility,dbus] ) ) selinux? ( sec-policy/selinux-skype )
+RESTRICT=mirror strip
+SLOT=0
+SRC_URI=http://download.skype.com/linux/skype-4.1.0.20.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome2-utils 794d2847b4af390a1e020924876c8297 multilib 892e597faee02a5b94eb02ab512e7622 pax-utils 2424f959506320f5196de8f79fa05297 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f7299063399d732d52e489ba4731110d
diff --git a/metadata/md5-cache/net-libs/courier-authlib-0.60.6-r1 b/metadata/md5-cache/net-libs/courier-authlib-0.60.6-r1
new file mode 100644
index 0000000..6a80bc7
--- /dev/null
+++ b/metadata/md5-cache/net-libs/courier-authlib-0.60.6-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=gdbm? ( sys-libs/gdbm ) !gdbm? ( sys-libs/db ) >=dev-libs/openssl-0.9.6 ldap? ( >=net-nds/openldap-1.2.11 ) mysql? ( virtual/mysql ) pam? ( virtual/pam ) postgres? ( virtual/postgresql-base ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Courier authentication library.
+HOMEPAGE=http://www.courier-mta.org/
+IUSE=berkdb crypt debug gdbm ldap mysql pam postgres vpopmail
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~x86-fbsd
+LICENSE=GPL-3
+RDEPEND=gdbm? ( sys-libs/gdbm ) !gdbm? ( sys-libs/db )
+RESTRICT=userpriv !berkdb? ( test )
+SLOT=0
+SRC_URI=mirror://sourceforge/courier/courier-authlib-0.60.6.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8ac59c806f027a4cf55c5666bd4a9d1d
diff --git a/metadata/md5-cache/net-libs/courier-authlib-0.62.2-r1 b/metadata/md5-cache/net-libs/courier-authlib-0.62.2-r1
new file mode 100644
index 0000000..2f9e52c
--- /dev/null
+++ b/metadata/md5-cache/net-libs/courier-authlib-0.62.2-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=gdbm? ( sys-libs/gdbm ) !gdbm? ( sys-libs/db ) >=dev-libs/openssl-0.9.6 ldap? ( >=net-nds/openldap-1.2.11 ) mysql? ( virtual/mysql ) pam? ( virtual/pam ) postgres? ( virtual/postgresql-base ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Courier authentication library.
+HOMEPAGE=http://www.courier-mta.org/
+IUSE=berkdb crypt debug gdbm ldap mysql pam postgres vpopmail
+KEYWORDS=alpha amd64 arm hppa ia64 ppc ppc64 s390 sh sparc x86 ~x86-fbsd
+LICENSE=GPL-3
+RDEPEND=gdbm? ( sys-libs/gdbm ) !gdbm? ( sys-libs/db )
+RESTRICT=userpriv !berkdb? ( test )
+SLOT=0
+SRC_URI=mirror://sourceforge/courier/courier-authlib-0.62.2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=65ef093268fb6a040828d7c3f15d9a74
diff --git a/metadata/md5-cache/net-mail/biff-0.17 b/metadata/md5-cache/net-mail/biff-0.17
new file mode 100644
index 0000000..a7f8d7c
--- /dev/null
+++ b/metadata/md5-cache/net-mail/biff-0.17
@@ -0,0 +1,7 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=A mail notification program
+KEYWORDS=amd64 x86
+LICENSE=GPL
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0533f069c8680ce665fb41ad2f5bdc9c
diff --git a/metadata/md5-cache/net-mail/ezmlm-idx-7.1.1 b/metadata/md5-cache/net-mail/ezmlm-idx-7.1.1
new file mode 100644
index 0000000..0889fe2
--- /dev/null
+++ b/metadata/md5-cache/net-mail/ezmlm-idx-7.1.1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install setup unpack
+DEPEND=mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql-base ) >=sys-apps/sed-4
+DESCRIPTION=Simple yet powerful mailing list manager for qmail
+HOMEPAGE=http://www.ezmlm.org
+IUSE=mysql postgres
+KEYWORDS=~alpha amd64 ~hppa ~mips ~ppc ~sparc x86
+LICENSE=GPL-2
+RDEPEND=mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql-base ) virtual/qmail
+SLOT=0
+SRC_URI=http://www.ezmlm.org/archive/7.1.1/ezmlm-idx-7.1.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 fixheadtails f96922acc9287f1e889a1e50a6c8986e flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 qmail ab89520a61b98d32800cf7cfcbd78a25 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=21d2ec7c7ab6414f34af49a733667a58
diff --git a/metadata/md5-cache/net-mail/qmail-usergen-0.1 b/metadata/md5-cache/net-mail/qmail-usergen-0.1
new file mode 100644
index 0000000..83d9807
--- /dev/null
+++ b/metadata/md5-cache/net-mail/qmail-usergen-0.1
@@ -0,0 +1,7 @@
+DEFINED_PHASES=install
+DESCRIPTION=Script to generate user tables for qmail
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=6cd835cbf659e869da0e9bd3e3370a06
diff --git a/metadata/md5-cache/net-mail/qmailadmin-1.2.10-r1 b/metadata/md5-cache/net-mail/qmailadmin-1.2.10-r1
new file mode 100644
index 0000000..bc85431
--- /dev/null
+++ b/metadata/md5-cache/net-mail/qmailadmin-1.2.10-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=virtual/qmail >=net-mail/vpopmail-5.3 net-mail/autorespond maildrop? ( >=mail-filter/maildrop-2.0.1 )
+DESCRIPTION=A web interface for managing a qmail system with virtual domains
+HOMEPAGE=http://www.inter7.com/qmailadmin.html
+IUSE=maildrop
+KEYWORDS=amd64 ~arm hppa ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=virtual/qmail >=net-mail/vpopmail-5.3 net-mail/autorespond maildrop? ( >=mail-filter/maildrop-2.0.1 )
+RESTRICT=userpriv
+SLOT=0
+SRC_URI=mirror://sourceforge/qmailadmin/qmailadmin-1.2.10.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8e6f9fa9b67880348378eeaef15c075c
diff --git a/metadata/md5-cache/net-mail/qmailadmin-1.2.10-r3 b/metadata/md5-cache/net-mail/qmailadmin-1.2.10-r3
new file mode 100644
index 0000000..e811fe9
--- /dev/null
+++ b/metadata/md5-cache/net-mail/qmailadmin-1.2.10-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=virtual/qmail >=net-mail/vpopmail-5.3 net-mail/autorespond maildrop? ( >=mail-filter/maildrop-2.0.1 )
+DESCRIPTION=A web interface for managing a qmail system with virtual domains
+HOMEPAGE=http://www.inter7.com/qmailadmin.html
+IUSE=maildrop
+KEYWORDS=amd64 ~arm hppa ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=virtual/qmail >=net-mail/vpopmail-5.3 net-mail/autorespond maildrop? ( >=mail-filter/maildrop-2.0.1 )
+RESTRICT=userpriv
+SLOT=0
+SRC_URI=mirror://sourceforge/qmailadmin/qmailadmin-1.2.10.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0cc0a71893be33c83cd2b179451d26dd
diff --git a/metadata/md5-cache/net-mail/solid-pop3d-0.15 b/metadata/md5-cache/net-mail/solid-pop3d-0.15
new file mode 100644
index 0000000..15c32e0
--- /dev/null
+++ b/metadata/md5-cache/net-mail/solid-pop3d-0.15
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install postinst preinst unpack
+DESCRIPTION=A POP3 Server
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.netsw.org/net/mail/transport/pop/solid-pop3d-0.15.tar.gz http://dside.dyndns.org/files/darklin/solid-pop3d-0.15.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=960253a0d9166bdcc4784e3b8baabe45
diff --git a/metadata/md5-cache/net-mail/solid-pop3d-0.15-r1 b/metadata/md5-cache/net-mail/solid-pop3d-0.15-r1
new file mode 100644
index 0000000..8ed7266
--- /dev/null
+++ b/metadata/md5-cache/net-mail/solid-pop3d-0.15-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install postinst preinst unpack
+DESCRIPTION=A POP3 Server
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.netsw.org/net/mail/transport/pop/solid-pop3d-0.15.tar.gz http://dside.dyndns.org/files/darklin/solid-pop3d-0.15.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=8d5dde1f43c674610d732e289ea40238
diff --git a/metadata/md5-cache/net-mail/vpopmail-5.4.16-r1 b/metadata/md5-cache/net-mail/vpopmail-5.4.16-r1
new file mode 100644
index 0000000..3221e02
--- /dev/null
+++ b/metadata/md5-cache/net-mail/vpopmail-5.4.16-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst postrm preinst setup unpack
+DEPEND=sys-apps/sed sys-apps/ucspi-tcp virtual/qmail mysql? ( virtual/mysql ) >=sys-apps/sed-4 || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=A collection of programs to manage virtual email domains and accounts on your Qmail mail servers.
+HOMEPAGE=http://www.inter7.com/index.php?page=vpopmail
+IUSE=mysql ipalias clearpasswd
+KEYWORDS=amd64 arm hppa ppc s390 sh sparc x86
+LICENSE=GPL-2
+RDEPEND=virtual/qmail mysql? ( virtual/mysql ) virtual/cron
+RESTRICT=userpriv
+SLOT=0
+SRC_URI=mirror://sourceforge/vpopmail/vpopmail-5.4.16.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 fixheadtails f96922acc9287f1e889a1e50a6c8986e libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=58eacc530366f76fa823745ec041288b
diff --git a/metadata/md5-cache/net-mail/vpopmail-5.4.25-r1 b/metadata/md5-cache/net-mail/vpopmail-5.4.25-r1
new file mode 100644
index 0000000..68806ec
--- /dev/null
+++ b/metadata/md5-cache/net-mail/vpopmail-5.4.25-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst postrm setup unpack
+DEPEND=virtual/qmail maildrop? ( mail-filter/maildrop ) mysql? ( virtual/mysql ) >=sys-apps/sed-4 || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=A collection of programs to manage virtual email domains and accounts on your Qmail mail servers.
+HOMEPAGE=http://www.inter7.com/index.php?page=vpopmail
+IUSE=clearpasswd ipalias maildrop mysql
+KEYWORDS=amd64 ~arm ~hppa ~ppc ~s390 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=virtual/qmail maildrop? ( mail-filter/maildrop ) mysql? ( virtual/mysql )
+SLOT=0
+SRC_URI=http://surfnet.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.25.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 fixheadtails f96922acc9287f1e889a1e50a6c8986e libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=10065f8178b4d56ab070274591961a68
diff --git a/metadata/md5-cache/net-misc/d4x-2.5.7.1-r3 b/metadata/md5-cache/net-misc/d4x-2.5.7.1-r3
new file mode 100644
index 0000000..6807334
--- /dev/null
+++ b/metadata/md5-cache/net-misc/d4x-2.5.7.1-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install setup unpack
+DEPEND=>=x11-libs/gtk+-2 dev-libs/boost ssl? ( dev-libs/openssl ) !ao? ( esd? ( media-sound/esound ) ) ao? ( media-libs/libao ) dev-util/pkgconfig nls? ( sys-devel/gettext dev-util/intltool )
+DESCRIPTION=GTK based download manager for X.
+HOMEPAGE=http://www.krasu.ru/soft/chuchelo
+IUSE=ao esd nls oss ssl
+KEYWORDS=amd64 ~ppc sparc x86
+LICENSE=Artistic
+RDEPEND=>=x11-libs/gtk+-2 dev-libs/boost ssl? ( dev-libs/openssl ) !ao? ( esd? ( media-sound/esound ) ) ao? ( media-libs/libao )
+SLOT=0
+SRC_URI=http://d4x.krasu.ru/files/d4x-2.5.7.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a89ca4930347e46921d320cec4309a4d
diff --git a/metadata/md5-cache/net-misc/httptunnel-3.3-r1 b/metadata/md5-cache/net-misc/httptunnel-3.3-r1
new file mode 100644
index 0000000..ad6b87a
--- /dev/null
+++ b/metadata/md5-cache/net-misc/httptunnel-3.3-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=httptunnel can create IP tunnels through firewalls/proxies using HTTP
+HOMEPAGE=http://www.nocrew.org/software/httptunnel.html
+KEYWORDS=ppc sparc x86 amd64
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.nocrew.org/software/httptunnel/httptunnel-3.3.tar.gz
+_md5_=6d07de7de110c9619c7f2a0380a8bdd5
diff --git a/metadata/md5-cache/net-misc/rdesktop-1.6.0-r2 b/metadata/md5-cache/net-misc/rdesktop-1.6.0-r2
new file mode 100644
index 0000000..93b5221
--- /dev/null
+++ b/metadata/md5-cache/net-misc/rdesktop-1.6.0-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=dev-libs/openssl-0.9.6b x11-libs/libX11 x11-libs/libXext x11-libs/libXau x11-libs/libXdmcp ao? ( >=media-libs/libao-0.8.6 ) pcsc-lite? ( sys-apps/pcsc-lite ) x11-libs/libXt
+DESCRIPTION=A Remote Desktop Protocol Client
+HOMEPAGE=http://rdesktop.sourceforge.net/
+IUSE=ao debug ipv6 oss pcsc-lite
+KEYWORDS=~alpha amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=>=dev-libs/openssl-0.9.6b x11-libs/libX11 x11-libs/libXext x11-libs/libXau x11-libs/libXdmcp ao? ( >=media-libs/libao-0.8.6 ) pcsc-lite? ( sys-apps/pcsc-lite )
+SLOT=0
+SRC_URI=mirror://sourceforge/rdesktop/rdesktop-1.6.0.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2d19b85fa7190f1ed92c8c12a109b7f2
diff --git a/metadata/md5-cache/net-misc/rdesktop-1.7.1-r1 b/metadata/md5-cache/net-misc/rdesktop-1.7.1-r1
new file mode 100644
index 0000000..01bbc71
--- /dev/null
+++ b/metadata/md5-cache/net-misc/rdesktop-1.7.1-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare
+DEPEND=>=dev-libs/openssl-0.9.6b x11-libs/libX11 x11-libs/libXext x11-libs/libXau x11-libs/libXdmcp alsa? ( media-libs/alsa-lib ) ao? ( >=media-libs/libao-0.8.6 ) libsamplerate? ( media-libs/libsamplerate ) pcsc-lite? ( >=sys-apps/pcsc-lite-1.6.6 ) virtual/pkgconfig x11-libs/libXt || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=A Remote Desktop Protocol Client
+EAPI=4
+HOMEPAGE=http://rdesktop.sourceforge.net/
+IUSE=alsa ao debug ipv6 libsamplerate oss pcsc-lite
+KEYWORDS=alpha amd64 hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris
+LICENSE=GPL-3
+RDEPEND=>=dev-libs/openssl-0.9.6b x11-libs/libX11 x11-libs/libXext x11-libs/libXau x11-libs/libXdmcp alsa? ( media-libs/alsa-lib ) ao? ( >=media-libs/libao-0.8.6 ) libsamplerate? ( media-libs/libsamplerate ) pcsc-lite? ( >=sys-apps/pcsc-lite-1.6.6 )
+SLOT=0
+SRC_URI=mirror://sourceforge/rdesktop/rdesktop-1.7.1.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f0b793a7aa3dbd463ab1f36783831007
diff --git a/metadata/md5-cache/net-nntp/colobus-2.1-r1 b/metadata/md5-cache/net-nntp/colobus-2.1-r1
new file mode 100644
index 0000000..c9a0761
--- /dev/null
+++ b/metadata/md5-cache/net-nntp/colobus-2.1-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=colobus
+HOMEPAGE=http://trainedmonkey.com/colobus/
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-lang/perl dev-perl/DBI perl-core/Digest-MD5 dev-perl/MailTools
+SLOT=0
+SRC_URI=http://trainedmonkey.com/colobus/colobus-2.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d1dc582f13c4e60cc19b12062fbe22a3
diff --git a/metadata/md5-cache/net-proxy/socks5-1.0-r11 b/metadata/md5-cache/net-proxy/socks5-1.0-r11
new file mode 100644
index 0000000..3ed7686
--- /dev/null
+++ b/metadata/md5-cache/net-proxy/socks5-1.0-r11
@@ -0,0 +1,8 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=SOCKS5 Implementation
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=sys-libs/ncurses
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0081695c6b619f85181c6f1816495c95
diff --git a/metadata/md5-cache/net-wireless/blueman-1.21-r2 b/metadata/md5-cache/net-wireless/blueman-1.21-r2
new file mode 100644
index 0000000..4ee04d1
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/blueman-1.21-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install postinst postrm preinst prepare setup
+DEPEND=dev-libs/glib:2 >=x11-libs/gtk+-2.12:2 x11-libs/startup-notification dev-python/pygobject >=net-wireless/bluez-4.21 nls? ( dev-util/intltool sys-devel/gettext ) dev-util/pkgconfig >=dev-python/pyrex-0.9.8 =dev-lang/python-2* >=sys-apps/sed-4
+DESCRIPTION=GTK+ Bluetooth Manager, designed to be simple and intuitive for everyday bluetooth tasks.
+EAPI=3
+HOMEPAGE=http://blueman-project.org/
+IUSE=gnome network nls policykit pulseaudio
+KEYWORDS=amd64 ~ppc x86
+LICENSE=GPL-3
+RDEPEND=dev-libs/glib:2 >=x11-libs/gtk+-2.12:2 x11-libs/startup-notification dev-python/pygobject >=net-wireless/bluez-4.21 >=app-mobilephone/obex-data-server-0.4.4 sys-apps/dbus dev-python/pygtk dev-python/notify-python dev-python/dbus-python gnome? ( dev-python/gconf-python ) network? ( || ( net-dns/dnsmasq =net-misc/dhcp-3* >=net-misc/networkmanager-0.8 ) ) policykit? ( sys-auth/polkit ) pulseaudio? ( media-sound/pulseaudio ) =dev-lang/python-2*
+SLOT=0
+SRC_URI=http://download.tuxfamily.org/blueman/blueman-1.21.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome2-utils 794d2847b4af390a1e020924876c8297 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=e19406cc82f11ace1d295da621c91cc4
diff --git a/metadata/md5-cache/sci-electronics/adas-3.2.6 b/metadata/md5-cache/sci-electronics/adas-3.2.6
new file mode 100644
index 0000000..fbc66c1
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.2.6
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.2.6.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=163450620293971a7b14e34131c3b323
diff --git a/metadata/md5-cache/sci-electronics/adas-3.2.7 b/metadata/md5-cache/sci-electronics/adas-3.2.7
new file mode 100644
index 0000000..eb84e5c
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.2.7
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.2.7.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=fed8b214e35cc094f0ffeff79fe2c092
diff --git a/metadata/md5-cache/sci-electronics/adas-3.2.8 b/metadata/md5-cache/sci-electronics/adas-3.2.8
new file mode 100644
index 0000000..daa8946
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.2.8
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.2.8.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=fed8b214e35cc094f0ffeff79fe2c092
diff --git a/metadata/md5-cache/sci-electronics/adas-3.2.9 b/metadata/md5-cache/sci-electronics/adas-3.2.9
new file mode 100644
index 0000000..86f2dd2
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.2.9
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.2.9.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=fed8b214e35cc094f0ffeff79fe2c092
diff --git a/metadata/md5-cache/sci-electronics/adas-3.3.0 b/metadata/md5-cache/sci-electronics/adas-3.3.0
new file mode 100644
index 0000000..3676186
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.3.0
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 dev-libs/libds www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.3.0.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=4d6ab96769584a0162f35d5af765359c
diff --git a/metadata/md5-cache/sci-electronics/adas-3.3.1 b/metadata/md5-cache/sci-electronics/adas-3.3.1
new file mode 100644
index 0000000..f7050c3
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.3.1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 >=dev-libs/libds-0.1.3 www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 >=dev-libs/libds-0.1.3 www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.3.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1d3df3cf751a4d9811e90750c9ac120a
diff --git a/metadata/md5-cache/sci-electronics/adas-3.3.2 b/metadata/md5-cache/sci-electronics/adas-3.3.2
new file mode 100644
index 0000000..508d554
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/adas-3.3.2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install
+DEPEND=dev-libs/libxml2 >=dev-libs/libds-0.1.3 www-servers/apache
+DESCRIPTION=Unified Aragats Data Acquisition System
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2 >=dev-libs/libds-0.1.3 www-servers/apache app-misc/lcdproc net-misc/ntp
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/adas/adas-3.3.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1d3df3cf751a4d9811e90750c9ac120a
diff --git a/metadata/md5-cache/sci-electronics/lpc2k_pgm-1.02 b/metadata/md5-cache/sci-electronics/lpc2k_pgm-1.02
new file mode 100644
index 0000000..607fbe4
--- /dev/null
+++ b/metadata/md5-cache/sci-electronics/lpc2k_pgm-1.02
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=gtk? ( >=x11-libs/gtk+-2.0 )
+DESCRIPTION=Bootloader Utility For Philips LPC 2xxx ARM7 Chips
+HOMEPAGE=http://www.pjrc.com/arm/lpc2k_pgm/
+IUSE=gtk
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=gtk? ( >=x11-libs/gtk+-2.0 )
+SLOT=0
+SRC_URI=http://www.pjrc.com/arm/lpc2k_pgm/lpc2k_pgm_1.02.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c462ed8d7fd196598c9a2913182aa128
diff --git a/metadata/md5-cache/sci-geosciences/gipfel-0.2.5 b/metadata/md5-cache/sci-geosciences/gipfel-0.2.5
new file mode 100644
index 0000000..74e1b20
--- /dev/null
+++ b/metadata/md5-cache/sci-geosciences/gipfel-0.2.5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install
+DEPEND=>=x11-libs/fltk-1.1.7 sci-libs/gsl media-libs/tiff media-gfx/exif
+DESCRIPTION=gipfel helps to find the names of mountains or points of interest on a picture.
+HOMEPAGE=http://www.ecademix.com/JohannesHofmann/gipfel.html
+IUSE=doc gtk
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=>=x11-libs/fltk-1.1.7 sci-libs/gsl media-libs/tiff media-gfx/exif
+SLOT=0
+SRC_URI=http://www.ecademix.com/JohannesHofmann/gipfel-0.2.5.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=088b7077f4859845a464c3f85daa7453
diff --git a/metadata/md5-cache/sci-geosciences/gosmore-9999 b/metadata/md5-cache/sci-geosciences/gosmore-9999
new file mode 100644
index 0000000..c6e52f4
--- /dev/null
+++ b/metadata/md5-cache/sci-geosciences/gosmore-9999
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install preinst unpack
+DEPEND=dev-vcs/subversion net-misc/rsync
+DESCRIPTION=osmore is a routing and viewer of OSM XML data
+EAPI=1
+HOMEPAGE=http://wiki.openstreetmap.org/wiki/Gosmore
+KEYWORDS=x86 amd64
+LICENSE=LGPL-2
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 subversion e80e84db0fc102c2959858102060bec9 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=170c4a32868c9460c49e0d1878cdb6a3
diff --git a/metadata/md5-cache/sci-geosciences/happycamel-1_beta3 b/metadata/md5-cache/sci-geosciences/happycamel-1_beta3
new file mode 100644
index 0000000..081aaf8
--- /dev/null
+++ b/metadata/md5-cache/sci-geosciences/happycamel-1_beta3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DEPEND=dev-python/imaging media-libs/exiftool
+DESCRIPTION=Happy Camel is intended to combine your digital camera with your GPS device
+HOMEPAGE=http://happycamel.sourceforge.net
+KEYWORDS=amd64 ~hppa x86
+LICENSE=GPL-2
+RDEPEND=dev-python/imaging media-libs/exiftool
+SLOT=0
+SRC_URI=mirror://sourceforge/happycamel/happycamel-v1-beta3.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d0e0860c817fdb7495baafec303917ab
diff --git a/metadata/md5-cache/sci-geosciences/osmcut-9999 b/metadata/md5-cache/sci-geosciences/osmcut-9999
new file mode 100644
index 0000000..72c1ca7
--- /dev/null
+++ b/metadata/md5-cache/sci-geosciences/osmcut-9999
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install preinst unpack
+DEPEND=dev-vcs/subversion net-misc/rsync
+DESCRIPTION=OSM splitter
+EAPI=1
+HOMEPAGE=http://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin
+KEYWORDS=x86 amd64
+LICENSE=LGPL-2
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 subversion e80e84db0fc102c2959858102060bec9 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=0396af20afc9ba53ed077b343227a1ee
diff --git a/metadata/md5-cache/sci-libs/dcmtk-3.5.4-r3 b/metadata/md5-cache/sci-libs/dcmtk-3.5.4-r3
new file mode 100644
index 0000000..a0dfee1
--- /dev/null
+++ b/metadata/md5-cache/sci-libs/dcmtk-3.5.4-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=doc? ( app-doc/doxygen ) media-libs/jpeg png? ( media-libs/libpng ) ssl? ( dev-libs/openssl ) tcpd? ( sys-apps/tcp-wrappers ) tiff? ( media-libs/tiff ) xml? ( dev-libs/libxml2 ) zlib? ( sys-libs/zlib )
+DESCRIPTION=Libraries and applications implementing large parts the DICOM standard
+HOMEPAGE=http://dicom.offis.de/dcmtk.php.en
+IUSE=png ssl tcpd tiff xml zlib doc
+KEYWORDS=~x86 ~amd64
+LICENSE=BSD
+RDEPEND=media-libs/jpeg png? ( media-libs/libpng ) ssl? ( dev-libs/openssl ) tcpd? ( sys-apps/tcp-wrappers ) tiff? ( media-libs/tiff ) xml? ( dev-libs/libxml2 ) zlib? ( sys-libs/zlib )
+SLOT=0
+SRC_URI=ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/dcmtk-3.5.4.tar.gz mirror://debian/pool/main/d/dcmtk/dcmtk_3.5.4-3.diff.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c18b7bd010bfd95291523b84bca4e415
diff --git a/metadata/md5-cache/sci-visualization/amide-0.9.1-r1 b/metadata/md5-cache/sci-visualization/amide-0.9.1-r1
new file mode 100644
index 0000000..be54d92
--- /dev/null
+++ b/metadata/md5-cache/sci-visualization/amide-0.9.1-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=AMIDE's a Medical Imaging Data Examiner with GTK interface
+HOMEPAGE=http://amide.sourceforge.net
+IUSE=gsl xmedcon fame volpack dcmtk debug doc
+KEYWORDS=~x86 ~amd64
+LICENSE=GPL-2
+RDEPEND=>=x11-libs/gtk+-2.10 xmedcon? ( >=media-gfx/xmedcon-0.10 ) volpack? ( media-libs/volpack ) fame? ( media-libs/libfame ) gsl? ( sci-libs/gsl ) dcmtk? ( >=sci-libs/dcmtk-3.4 )
+SLOT=0
+SRC_URI=mirror://sourceforge/amide/amide-0.9.1.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7eabe2eac20164f6abfb8400012d5620
diff --git a/metadata/md5-cache/sys-apps/darklin-4.0.1 b/metadata/md5-cache/sys-apps/darklin-4.0.1
new file mode 100644
index 0000000..96895da
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/darklin-4.0.1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install postinst
+DEPEND=dev-lang/perl
+DESCRIPTION=DarkLin Release
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-lang/perl
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1380229f5984f71ea89671be41833204
diff --git a/metadata/md5-cache/sys-apps/darklin-4.0.2 b/metadata/md5-cache/sys-apps/darklin-4.0.2
new file mode 100644
index 0000000..96895da
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/darklin-4.0.2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install postinst
+DEPEND=dev-lang/perl
+DESCRIPTION=DarkLin Release
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-lang/perl
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1380229f5984f71ea89671be41833204
diff --git a/metadata/md5-cache/sys-apps/fbres-1.0 b/metadata/md5-cache/sys-apps/fbres-1.0
new file mode 100644
index 0000000..84c1bd2
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/fbres-1.0
@@ -0,0 +1,8 @@
+DEFINED_PHASES=install
+DESCRIPTION=Init script to set framebuffer resolution
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=sys-libs/ncurses
+SLOT=0
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2e0d8b13d0a83531dd1437b5e41d4535
diff --git a/metadata/md5-cache/sys-apps/groff-1.19.2-r1 b/metadata/md5-cache/sys-apps/groff-1.19.2-r1
new file mode 100644
index 0000000..8ac03b3
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/groff-1.19.2-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-apps/texinfo-4.7-r1 !app-i18n/man-pages-ja
+DESCRIPTION=Text formatter used for man pages
+HOMEPAGE=http://www.gnu.org/software/groff/groff.html
+IUSE=X
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86
+LICENSE=GPL-2
+PDEPEND=>=sys-apps/man-1.5k-r1
+RDEPEND=>=sys-apps/texinfo-4.7-r1 !app-i18n/man-pages-ja
+SLOT=0
+SRC_URI=mirror://gnu/groff/groff-1.19.2.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3266dce64bc6c57d4db786fcebacd799
diff --git a/metadata/md5-cache/sys-apps/groff-1.19.2-r2 b/metadata/md5-cache/sys-apps/groff-1.19.2-r2
new file mode 100644
index 0000000..baf2d41
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/groff-1.19.2-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-apps/texinfo-4.7-r1 || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Text formatter used for man pages
+HOMEPAGE=http://www.gnu.org/software/groff/groff.html
+IUSE=cjk X
+KEYWORDS=alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc ~sparc-fbsd x86 ~x86-fbsd
+LICENSE=GPL-2
+RDEPEND=>=sys-apps/texinfo-4.7-r1
+SLOT=0
+SRC_URI=mirror://gnu/groff/groff-1.19.2.tar.gz cjk? ( mirror://gentoo/groff-1.19.2-japanese.patch.bz2 )
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2614c4ce3f61af4864420626ceec229a
diff --git a/metadata/md5-cache/sys-apps/kbd-1.12-r10 b/metadata/md5-cache/sys-apps/kbd-1.12-r10
new file mode 100644
index 0000000..561e751
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/kbd-1.12-r10
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=nls? ( sys-devel/gettext )
+DESCRIPTION=Keyboard and console utilities
+HOMEPAGE=http://freshmeat.net/projects/kbd/
+IUSE=nls
+KEYWORDS=alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=ftp://ftp.cwi.nl/pub/aeb/kbd/kbd-1.12.tar.gz ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/kbd-1.12.tar.gz nls? ( http://www.users.one.se/liket/svorak/svorakln.tar.gz )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=df0ed2349a0fcdaf4feb0a1c266322c5
diff --git a/metadata/md5-cache/sys-apps/kbd-1.12-r11 b/metadata/md5-cache/sys-apps/kbd-1.12-r11
new file mode 100644
index 0000000..94699a0
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/kbd-1.12-r11
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=nls? ( sys-devel/gettext )
+DESCRIPTION=Keyboard and console utilities
+HOMEPAGE=http://freshmeat.net/projects/kbd/
+IUSE=nls
+KEYWORDS=alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=ftp://ftp.cwi.nl/pub/aeb/kbd/kbd-1.12.tar.gz ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/kbd-1.12.tar.gz nls? ( http://www.users.one.se/liket/svorak/svorakln.tar.gz )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a555496e919d06d6ff6261245a5b0067
diff --git a/metadata/md5-cache/sys-apps/kbd-1.12-r9 b/metadata/md5-cache/sys-apps/kbd-1.12-r9
new file mode 100644
index 0000000..a98c4c3
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/kbd-1.12-r9
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=nls? ( sys-devel/gettext )
+DESCRIPTION=Keyboard and console utilities
+HOMEPAGE=http://freshmeat.net/projects/kbd/
+IUSE=nls
+KEYWORDS=alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=ftp://ftp.cwi.nl/pub/aeb/kbd/kbd-1.12.tar.gz ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/kbd-1.12.tar.gz nls? ( http://www.users.one.se/liket/svorak/svorakln.tar.gz )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=b9fd52ae95f953255831f7032f10bcbd
diff --git a/metadata/md5-cache/sys-apps/kbd-1.14.1-r2 b/metadata/md5-cache/sys-apps/kbd-1.14.1-r2
new file mode 100644
index 0000000..5ba2bcc
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/kbd-1.14.1-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=nls? ( sys-devel/gettext )
+DESCRIPTION=Keyboard and console utilities
+HOMEPAGE=http://freshmeat.net/projects/kbd/
+IUSE=nls
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh ~sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=ftp://ftp.altlinux.org/pub/people/legion/kbd/kbd-1.14.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3c5b62d6b673c6da235077fc079ef7d6
diff --git a/metadata/md5-cache/sys-apps/kbd-1.15.1-r1 b/metadata/md5-cache/sys-apps/kbd-1.15.1-r1
new file mode 100644
index 0000000..08ff47b
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/kbd-1.15.1-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=nls? ( sys-devel/gettext ) || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Keyboard and console utilities
+HOMEPAGE=http://freshmeat.net/projects/kbd/
+IUSE=nls
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=ftp://ftp.altlinux.org/pub/people/legion/kbd/kbd-1.15.1.tar.gz
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=d7f1f29afd0a786e3ec5a03ff4e85a3e
diff --git a/metadata/md5-cache/sys-apps/mkinitrd-4.2.17-r3 b/metadata/md5-cache/sys-apps/mkinitrd-4.2.17-r3
new file mode 100644
index 0000000..2164346
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/mkinitrd-4.2.17-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/popt virtual/os-headers
+DESCRIPTION=Tools for creating initrd images
+HOMEPAGE=http://www.redhat.com/
+IUSE=selinux
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+PDEPEND=selinux? ( sys-apps/policycoreutils )
+RDEPEND=app-shells/bash
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/mkinitrd/mkinitrd-4.2.17.tar.bz2 mirror://kernel/linux/utils/raid/mdadm/mdadm-2.1.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=87873d519e9417e2f17109d5ec81bc82
diff --git a/metadata/md5-cache/sys-apps/mkinitrd-6.0.93-r1 b/metadata/md5-cache/sys-apps/mkinitrd-6.0.93-r1
new file mode 100644
index 0000000..78d931f
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/mkinitrd-6.0.93-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/popt virtual/os-headers
+DESCRIPTION=Tools for creating initrd images
+EAPI=4
+HOMEPAGE=http://www.redhat.com/
+IUSE=selinux
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+PDEPEND=selinux? ( sys-apps/policycoreutils )
+RDEPEND=app-shells/bash
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/mkinitrd/mkinitrd-6.0.93.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=954230018f2308dbdb03dafa03e934a6
diff --git a/metadata/md5-cache/sys-apps/util-linux-2.12r-r9 b/metadata/md5-cache/sys-apps/util-linux-2.12r-r9
new file mode 100644
index 0000000..3dd25b9
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/util-linux-2.12r-r9
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=>=sys-libs/ncurses-5.2-r2 >=sys-fs/e2fsprogs-1.34 selinux? ( sys-libs/libselinux ) crypt? ( app-crypt/hashalot ) perl? ( dev-lang/perl ) amd64? ( sys-apps/setarch ) mips? ( sys-apps/setarch ) ppc? ( sys-apps/setarch ) ppc64? ( sys-apps/setarch ) sparc? ( sys-apps/setarch ) !sys-apps/more nls? ( sys-devel/gettext ) virtual/os-headers
+DESCRIPTION=Various useful Linux utilities
+HOMEPAGE=http://www.kernel.org/pub/linux/utils/util-linux/
+IUSE=crypt old-crypt nls static selinux perl
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86
+LICENSE=GPL-2
+RDEPEND=>=sys-libs/ncurses-5.2-r2 >=sys-fs/e2fsprogs-1.34 selinux? ( sys-libs/libselinux ) crypt? ( app-crypt/hashalot ) perl? ( dev-lang/perl ) amd64? ( sys-apps/setarch ) mips? ( sys-apps/setarch ) ppc? ( sys-apps/setarch ) ppc64? ( sys-apps/setarch ) sparc? ( sys-apps/setarch ) !sys-apps/more
+SLOT=0
+SRC_URI=mirror://kernel/linux/utils/util-linux/util-linux-2.12r.tar.bz2 old-crypt? ( mirror://kernel/linux/utils/util-linux/util-linux-2.12i.tar.gz mirror://gentoo/util-linux-2.12i-cryptoapi-losetup.patch.bz2 ) crypt? ( http://loop-aes.sourceforge.net/loop-AES/loop-AES-v3.1f.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f2cc994862bbedd8760b64398b85935e
diff --git a/metadata/md5-cache/sys-apps/util-linux-2.13.1.1-r1 b/metadata/md5-cache/sys-apps/util-linux-2.13.1.1-r1
new file mode 100644
index 0000000..bc9638f
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/util-linux-2.13.1.1-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=!sys-process/schedutils !sys-apps/setarch >=sys-libs/ncurses-5.2-r2 >=sys-fs/e2fsprogs-1.34 selinux? ( sys-libs/libselinux ) slang? ( sys-libs/slang ) nls? ( sys-devel/gettext ) virtual/os-headers
+DESCRIPTION=Various useful Linux utilities
+HOMEPAGE=http://www.kernel.org/pub/linux/utils/util-linux-ng/
+IUSE=crypt loop-aes nls old-linux selinux slang unicode
+KEYWORDS=alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86
+LICENSE=GPL-2
+RDEPEND=!sys-process/schedutils !sys-apps/setarch >=sys-libs/ncurses-5.2-r2 >=sys-fs/e2fsprogs-1.34 selinux? ( sys-libs/libselinux ) slang? ( sys-libs/slang )
+SLOT=0
+SRC_URI=http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.13/util-linux-ng-2.13.1.1.tar.bz2 loop-aes? ( http://loop-aes.sourceforge.net/loop-AES/loop-AES-v3.2c.tar.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=1672dc85928e48734511dd1ec5aabf97
diff --git a/metadata/md5-cache/sys-apps/util-linux-2.14.2-r1 b/metadata/md5-cache/sys-apps/util-linux-2.14.2-r1
new file mode 100644
index 0000000..ee74f13
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/util-linux-2.14.2-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND=!sys-process/schedutils !sys-apps/setarch >=sys-libs/ncurses-5.2-r2 >=sys-libs/e2fsprogs-libs-1.41 selinux? ( sys-libs/libselinux ) slang? ( sys-libs/slang ) nls? ( sys-devel/gettext ) virtual/os-headers
+DESCRIPTION=Various useful Linux utilities
+HOMEPAGE=http://www.kernel.org/pub/linux/utils/util-linux-ng/
+IUSE=crypt loop-aes nls old-linux selinux slang uclibc unicode
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=!sys-process/schedutils !sys-apps/setarch >=sys-libs/ncurses-5.2-r2 >=sys-libs/e2fsprogs-libs-1.41 selinux? ( sys-libs/libselinux ) slang? ( sys-libs/slang )
+SLOT=0
+SRC_URI=mirror://kernel/linux/utils/util-linux-ng/v2.14/util-linux-ng-2.14.2.tar.bz2 loop-aes? ( http://loop-aes.sourceforge.net/updates/util-linux-ng-2.14.2-20090214.diff.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a2ff421432d97150fff50e8e330e248c
diff --git a/metadata/md5-cache/sys-apps/util-linux-2.16.2-r1 b/metadata/md5-cache/sys-apps/util-linux-2.16.2-r1
new file mode 100644
index 0000000..3769cf4
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/util-linux-2.16.2-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare
+DEPEND=!sys-process/schedutils !sys-apps/setarch >=sys-libs/ncurses-5.2-r2 !<sys-libs/e2fsprogs-libs-1.41.8 !<sys-fs/e2fsprogs-1.41.8 perl? ( dev-lang/perl ) selinux? ( sys-libs/libselinux ) slang? ( sys-libs/slang ) nls? ( sys-devel/gettext ) virtual/os-headers
+DESCRIPTION=Various useful Linux utilities
+EAPI=2
+HOMEPAGE=http://www.kernel.org/pub/linux/utils/util-linux-ng/
+IUSE=crypt loop-aes nls old-linux perl selinux slang uclibc unicode
+KEYWORDS=~alpha amd64 ~arm hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh ~sparc x86
+LICENSE=GPL-2
+RDEPEND=!sys-process/schedutils !sys-apps/setarch >=sys-libs/ncurses-5.2-r2 !<sys-libs/e2fsprogs-libs-1.41.8 !<sys-fs/e2fsprogs-1.41.8 perl? ( dev-lang/perl ) selinux? ( sys-libs/libselinux ) slang? ( sys-libs/slang )
+SLOT=0
+SRC_URI=mirror://kernel/linux/utils/util-linux-ng/v2.16/util-linux-ng-2.16.2.tar.bz2 loop-aes? ( http://dev.gentoo.org/~ssuominen/util-linux-2.16.1-loop-aes.patch.bz2 )
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=48087e278195f9cc3180297dfcd0d35d
diff --git a/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r1 b/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r1
new file mode 100644
index 0000000..b2ac463
--- /dev/null
+++ b/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/openssl sys-libs/pam net-wireless/bluez-libs net-wireless/bluez-utils dev-libs/openobex app-mobilephone/obexftp sys-apps/hotplug-base dev-lang/perl
+DESCRIPTION=PAM X509 password-less authentication module
+HOMEPAGE=http://pam-x509.sourceforge.net/
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-libs/openssl sys-libs/pam net-wireless/bluez-libs net-wireless/bluez-utils dev-libs/openobex app-mobilephone/obexftp sys-apps/hotplug-base dev-lang/perl
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/darksoft/pam_x509-1.0.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 pam 5c1a9ef4892062f9ec25c8ef7c1f1e52 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d4c619fafd54c13b33c91b3fe75a02d7
diff --git a/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r2 b/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r2
new file mode 100644
index 0000000..62c81fa
--- /dev/null
+++ b/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/openssl sys-libs/pam net-wireless/bluez-libs net-wireless/bluez-utils dev-libs/openobex app-mobilephone/obexftp sys-apps/hotplug-base dev-lang/perl
+DESCRIPTION=PAM X509 password-less authentication module
+HOMEPAGE=http://pam-x509.sourceforge.net/
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-libs/openssl sys-libs/pam net-wireless/bluez-libs net-wireless/bluez-utils dev-libs/openobex app-mobilephone/obexftp sys-apps/hotplug-base dev-lang/perl
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/darksoft/pam_x509-1.0.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 pam 5c1a9ef4892062f9ec25c8ef7c1f1e52 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=cd93f44e70b1a570003d2cc6d25f8054
diff --git a/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r3 b/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r3
new file mode 100644
index 0000000..3263a98
--- /dev/null
+++ b/metadata/md5-cache/sys-auth/pam_x509-1.0.2-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=dev-libs/openssl sys-libs/pam bluetooth? ( net-wireless/bluez-libs net-wireless/bluez-utils dev-libs/openobex app-mobilephone/obexftp sys-apps/hotplug-base ) dev-lang/perl
+DESCRIPTION=PAM X509 password-less authentication module
+HOMEPAGE=http://pam-x509.sourceforge.net/
+IUSE=bluetooth
+KEYWORDS=amd64 x86
+LICENSE=GPL-2
+RDEPEND=dev-libs/openssl sys-libs/pam bluetooth? ( net-wireless/bluez-libs net-wireless/bluez-utils dev-libs/openobex app-mobilephone/obexftp sys-apps/hotplug-base ) dev-lang/perl
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/darksoft/pam_x509-1.0.2.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 pam 5c1a9ef4892062f9ec25c8ef7c1f1e52 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=c1d308100209be176e34859710e6fe02
diff --git a/metadata/md5-cache/sys-boot/usb-creator-0.2.26 b/metadata/md5-cache/sys-boot/usb-creator-0.2.26
new file mode 100644
index 0000000..1850a5f
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/usb-creator-0.2.26
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst postrm prepare
+DEPEND=sys-devel/gettext dev-python/python-distutils-extra =dev-lang/python-2*
+DESCRIPTION=create a startup disk using a CD or disc image
+EAPI=3
+HOMEPAGE=http://launchpad.net/usb-creator
+IUSE=gtk kde
+KEYWORDS=~amd64 ~x86
+LICENSE=GPL-3
+RDEPEND=sys-devel/gettext dev-python/python-distutils-extra gtk? ( dev-python/pygtk ) kde? ( dev-python/PyQt4 ) =dev-lang/python-2*
+SLOT=0
+SRC_URI=https://launchpad.net/ubuntu/+archive/primary/+files/usb-creator_0.2.26.tar.gz
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=633efd8274232ad8c0c4f220bff79ca6
diff --git a/metadata/md5-cache/www-apps/loggerhead-1.18 b/metadata/md5-cache/www-apps/loggerhead-1.18
new file mode 100644
index 0000000..b98401e
--- /dev/null
+++ b/metadata/md5-cache/www-apps/loggerhead-1.18
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst postrm unpack
+DEPEND=>=dev-python/paste-1.6 apache2? ( >=dev-python/pastedeploy-1.3 ) dev-lang/python
+DESCRIPTION=A web viewer for projects in Bazaar
+HOMEPAGE=https://launchpad.net/loggerhead
+IUSE=apache2 search
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=dev-python/paste-1.6 apache2? ( >=dev-python/pastedeploy-1.3 ) >=dev-vcs/bzr-1.13 dev-python/simpletal dev-python/simplejson search? ( dev-vcs/bzr-search ) dev-lang/python
+SLOT=0
+SRC_URI=http://launchpad.net/loggerhead/1.18/1.18/+download/loggerhead-1.18.tar.gz
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=74300a1eadff7c83f5f8fd148ab6cfe9
diff --git a/metadata/md5-cache/www-apps/loggerhead-1.18.1 b/metadata/md5-cache/www-apps/loggerhead-1.18.1
new file mode 100644
index 0000000..84b0988
--- /dev/null
+++ b/metadata/md5-cache/www-apps/loggerhead-1.18.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst postrm prepare
+DEPEND=>=dev-python/paste-1.6 apache2? ( >=dev-python/pastedeploy-1.3 ) =dev-lang/python-2*
+DESCRIPTION=A web viewer for projects in Bazaar
+EAPI=3
+HOMEPAGE=https://launchpad.net/loggerhead
+IUSE=apache2 search
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=dev-python/paste-1.6 apache2? ( >=dev-python/pastedeploy-1.3 ) >=dev-vcs/bzr-1.13 dev-python/simpletal dev-python/simplejson search? ( dev-vcs/bzr-search ) =dev-lang/python-2*
+SLOT=0
+SRC_URI=http://launchpad.net/loggerhead/1.18/1.18.1/+download/loggerhead-1.18.1.tar.gz
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=cc901c46c48ecca539b8f43166b5dbda
diff --git a/metadata/md5-cache/www-apps/trac-0.10.4-r1 b/metadata/md5-cache/www-apps/trac-0.10.4-r1
new file mode 100644
index 0000000..f3c88ca
--- /dev/null
+++ b/metadata/md5-cache/www-apps/trac-0.10.4-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst postrm prerm setup unpack
+DEPEND=>=dev-lang/python-2.3 app-text/pytextile >=dev-python/docutils-0.3.9 dev-libs/clearsilver >=dev-vcs/subversion-1.3.2 mysql? ( >=virtual/mysql-4.1 >=dev-python/mysql-python-1.2.1 ) sqlite? ( >=dev-db/sqlite-3.3.4 || ( >=dev-lang/python-2.5 >=dev-python/pysqlite-2.3 ) ) postgres? ( >=dev-python/psycopg-2 ) enscript? ( app-text/enscript ) silvercity? ( app-text/silvercity ) dev-lang/python >=app-admin/webapp-config-1.50.15
+DESCRIPTION=Trac is a minimalistic web-based project management, wiki and bug/issue tracking system.
+HOMEPAGE=http://trac.edgewall.com/
+IUSE=cgi fastcgi mysql postgres sqlite enscript silvercity vhosts
+KEYWORDS=amd64 ppc ~ppc64 ~sparc ~x86
+LICENSE=trac
+RDEPEND=>=dev-lang/python-2.3 app-text/pytextile >=dev-python/docutils-0.3.9 dev-libs/clearsilver >=dev-vcs/subversion-1.3.2 mysql? ( >=virtual/mysql-4.1 >=dev-python/mysql-python-1.2.1 ) sqlite? ( >=dev-db/sqlite-3.3.4 || ( >=dev-lang/python-2.5 >=dev-python/pysqlite-2.3 ) ) postgres? ( >=dev-python/psycopg-2 ) enscript? ( app-text/enscript ) silvercity? ( app-text/silvercity ) dev-lang/python >=app-admin/webapp-config-1.50.15
+SLOT=0
+SRC_URI=http://ftp.edgewall.com/pub/trac/trac-0.10.4.tar.gz
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f webapp 25b9b1696f5e698711f47d45c3d45e3e
+_md5_=515fe93e6ac21a06475b6fe968be0619
diff --git a/metadata/md5-cache/www-apps/trac-0.10.5 b/metadata/md5-cache/www-apps/trac-0.10.5
new file mode 100644
index 0000000..ad2a4fa
--- /dev/null
+++ b/metadata/md5-cache/www-apps/trac-0.10.5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst postrm prerm setup unpack
+DEPEND=>=dev-lang/python-2.3 app-text/pytextile >=dev-python/docutils-0.3.9 dev-libs/clearsilver >=dev-vcs/subversion-1.3.2 mysql? ( >=virtual/mysql-4.1 >=dev-python/mysql-python-1.2.1 ) sqlite? ( >=dev-db/sqlite-3.3.4 || ( >=dev-lang/python-2.5 >=dev-python/pysqlite-2.3 ) ) postgres? ( >=dev-python/psycopg-2 ) enscript? ( app-text/enscript ) silvercity? ( app-text/silvercity ) dev-lang/python >=app-admin/webapp-config-1.50.15
+DESCRIPTION=Trac is a minimalistic web-based project management, wiki and bug/issue tracking system.
+HOMEPAGE=http://trac.edgewall.com/
+IUSE=cgi fastcgi mysql postgres sqlite enscript silvercity vhosts
+KEYWORDS=amd64 ppc ~ppc64 ~sparc x86
+LICENSE=trac
+RDEPEND=>=dev-lang/python-2.3 app-text/pytextile >=dev-python/docutils-0.3.9 dev-libs/clearsilver >=dev-vcs/subversion-1.3.2 mysql? ( >=virtual/mysql-4.1 >=dev-python/mysql-python-1.2.1 ) sqlite? ( >=dev-db/sqlite-3.3.4 || ( >=dev-lang/python-2.5 >=dev-python/pysqlite-2.3 ) ) postgres? ( >=dev-python/psycopg-2 ) enscript? ( app-text/enscript ) silvercity? ( app-text/silvercity ) dev-lang/python >=app-admin/webapp-config-1.50.15
+SLOT=0
+SRC_URI=http://ftp.edgewall.com/pub/trac/trac-0.10.5.tar.gz
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f webapp 25b9b1696f5e698711f47d45c3d45e3e
+_md5_=3d48c9a2b0933d875e8ba6a7109f79bf
diff --git a/metadata/md5-cache/www-apps/trac-webadmin-0.1.1 b/metadata/md5-cache/www-apps/trac-webadmin-0.1.1
new file mode 100644
index 0000000..3381680
--- /dev/null
+++ b/metadata/md5-cache/www-apps/trac-webadmin-0.1.1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm test unpack
+DEPEND=>=www-apps/trac-0.9.3 >=dev-python/setuptools-0.6_alpha10 dev-lang/python
+DESCRIPTION=A Trac plugin for administering Trac projects through the web interface.
+HOMEPAGE=http://projects.edgewall.com/trac/wiki/WebAdmin
+KEYWORDS=~amd64 ~x86
+LICENSE=trac
+RDEPEND=>=www-apps/trac-0.9.3 >=dev-python/setuptools-0.6_alpha10 dev-lang/python
+SLOT=0
+SRC_URI=mirror://gentoo/trac-webadmin-0.1.1.tar.bz2
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=38bbda13459d123647eeea8866fdec7e
diff --git a/metadata/md5-cache/www-apps/trac-webadmin-0.1.2 b/metadata/md5-cache/www-apps/trac-webadmin-0.1.2
new file mode 100644
index 0000000..bd76625
--- /dev/null
+++ b/metadata/md5-cache/www-apps/trac-webadmin-0.1.2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm test unpack
+DEPEND=>=www-apps/trac-0.10 >=dev-python/setuptools-0.6_rc1 dev-lang/python
+DESCRIPTION=A Trac plugin for administering Trac projects through the web interface.
+HOMEPAGE=http://projects.edgewall.com/trac/wiki/WebAdmin
+KEYWORDS=~amd64 ~ppc64 ~x86
+LICENSE=trac
+RDEPEND=>=www-apps/trac-0.10 >=dev-python/setuptools-0.6_rc1 dev-lang/python
+SLOT=0
+SRC_URI=mirror://gentoo/trac-webadmin-0.1.2.tar.bz2
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f
+_md5_=73017dddb903194b47dc302140c18f5e
diff --git a/metadata/md5-cache/www-apps/trac-webadmin-0.1.2-r1 b/metadata/md5-cache/www-apps/trac-webadmin-0.1.2-r1
new file mode 100644
index 0000000..3ca73a5
--- /dev/null
+++ b/metadata/md5-cache/www-apps/trac-webadmin-0.1.2-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install postinst postrm test unpack
+DEPEND==www-apps/trac-0.10* >=dev-python/setuptools-0.6_rc1 dev-lang/python
+DESCRIPTION=A Trac plugin for administering Trac projects through the web interface.
+HOMEPAGE=http://projects.edgewall.com/trac/wiki/WebAdmin
+KEYWORDS=amd64 ~ppc64 x86
+LICENSE=trac
+RDEPEND==www-apps/trac-0.10* >=dev-python/setuptools-0.6_rc1 dev-lang/python
+SLOT=0
+SRC_URI=mirror://gentoo/trac-webadmin-0.1.2.tar.bz2
+_eclasses_=distutils 34e0f373c466bb0e97ba194735f1acf2 eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 python 7aff825f110c83fa8c77f14ba3c71c47 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a244395f3c577f5667bdef3a8211aa90
diff --git a/metadata/md5-cache/x11-libs/gtk+-1.2.10-r14 b/metadata/md5-cache/x11-libs/gtk+-1.2.10-r14
new file mode 100644
index 0000000..fbf2806
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/gtk+-1.2.10-r14
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst unpack
+DEPEND==dev-libs/glib-1.2* || ( ( x11-libs/libXi x11-libs/libXt ) virtual/x11 ) || ( ( x11-proto/inputproto x11-proto/xextproto ) virtual/x11 ) nls? ( sys-devel/gettext dev-util/intltool ) =sys-devel/automake-1.4* >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The GIMP Toolkit
+HOMEPAGE=http://www.gtk.org/
+IUSE=nls debug linguas_az linguas_ca linguas_cs linguas_da linguas_de linguas_el linguas_es linguas_et linguas_eu linguas_fi linguas_fr linguas_ga linguas_gl linguas_hr linguas_hu linguas_it linguas_ja linguas_ko linguas_lt linguas_nl linguas_nn linguas_no linguas_pl linguas_pt_BR linguas_pt linguas_ro linguas_ru linguas_sk linguas_sl linguas_sr linguas_sv linguas_tr linguas_uk linguas_vi
+KEYWORDS=alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86 ~x86-fbsd
+LICENSE=LGPL-2.1
+RDEPEND==dev-libs/glib-1.2* || ( ( x11-libs/libXi x11-libs/libXt ) virtual/x11 )
+SLOT=1
+SRC_URI=mirror://gnome/sources/gtk+/1.2/gtk+-1.2.10.tar.gz http://www.ibiblio.org/gentoo/distfiles/gtk+-1.2.10-r8-gentoo.diff.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 gnome.org 8fef8f967214f56e08fa92d61163d891 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=3b1627ca9de5c4c5fcaa7106b3cdbceb
diff --git a/metadata/md5-cache/x11-libs/vte-0.30.1-r3 b/metadata/md5-cache/x11-libs/vte-0.30.1-r3
new file mode 100644
index 0000000..8c6d6ff
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/vte-0.30.1-r3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup unpack
+DEPEND=>=dev-libs/glib-2.26:2 >=x11-libs/gtk+-3.1.9:3[introspection?] >=x11-libs/pango-1.22.0 sys-libs/ncurses x11-libs/libX11 x11-libs/libXft glade? ( >=dev-util/glade-3.9:3.10 ) introspection? ( >=dev-libs/gobject-introspection-0.9.0 ) >=dev-util/intltool-0.35 >=dev-util/pkgconfig-0.9 sys-devel/gettext doc? ( >=dev-util/gtk-doc-1.13 ) app-arch/xz-utils >=sys-apps/sed-4
+DESCRIPTION=GNOME terminal widget
+EAPI=4
+HOMEPAGE=http://git.gnome.org/browse/vte
+IUSE=debug doc glade +introspection debug
+KEYWORDS=~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd
+LICENSE=LGPL-2
+PDEPEND=x11-libs/gnome-pty-helper
+RDEPEND=>=dev-libs/glib-2.26:2 >=x11-libs/gtk+-3.1.9:3[introspection?] >=x11-libs/pango-1.22.0 sys-libs/ncurses x11-libs/libX11 x11-libs/libXft glade? ( >=dev-util/glade-3.9:3.10 ) introspection? ( >=dev-libs/gobject-introspection-0.9.0 )
+SLOT=2.90
+SRC_URI=mirror://gnome/sources/vte/0.30/vte-0.30.1.tar.xz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 fdo-mime 0acfe1a88fd8751a1d5dc671168219fa gnome.org 8fef8f967214f56e08fa92d61163d891 gnome2 7976d3f4d0c0816c67033d3dcd4d9472 gnome2-utils 794d2847b4af390a1e020924876c8297 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
+_md5_=1a7f8156b1ca920c9b40d8b7194b6cb0
diff --git a/metadata/md5-cache/x11-plugins/gkrellm-xkb-1.05-r1 b/metadata/md5-cache/x11-plugins/gkrellm-xkb-1.05-r1
new file mode 100644
index 0000000..ba1c36e
--- /dev/null
+++ b/metadata/md5-cache/x11-plugins/gkrellm-xkb-1.05-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=app-admin/gkrellm-2
+DESCRIPTION=XKB keyboard switcher for gkrellm2
+HOMEPAGE=http://sweb.cz/tripie/gkrellm/xkb/
+KEYWORDS=x86 ~amd64
+LICENSE=GPL-2
+RDEPEND=>=app-admin/gkrellm-2
+SLOT=0
+SRC_URI=http://sweb.cz/tripie/gkrellm/xkb/dist/gkrellm-xkb-1.05.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=65228683f588e6354eb87ef6622fc8de
diff --git a/metadata/md5-cache/x11-plugins/wmvolman-0.7 b/metadata/md5-cache/x11-plugins/wmvolman-0.7
new file mode 100644
index 0000000..e768b56
--- /dev/null
+++ b/metadata/md5-cache/x11-plugins/wmvolman-0.7
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-apps/hal-0.5.0 sys-apps/dbus >=x11-libs/libdockapp-0.6.0 sys-apps/pmount =x11-libs/gtk+-2*
+DESCRIPTION=Dockable applet for WindowMaker that handles hotpluggable devices and removable media.
+HOMEPAGE=http://people.altlinux.ru/~raorn/wmvolman.html
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=sys-apps/hal-0.5.0 sys-apps/dbus >=x11-libs/libdockapp-0.6.0 sys-apps/pmount =x11-libs/gtk+-2*
+SLOT=0
+SRC_URI=http://people.altlinux.ru/~raorn/wmvolman-0.7.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f32e2d7a80e9ee88010d9a6c63de1037
diff --git a/metadata/md5-cache/x11-plugins/wmvolman-0.9 b/metadata/md5-cache/x11-plugins/wmvolman-0.9
new file mode 100644
index 0000000..3be7ca7
--- /dev/null
+++ b/metadata/md5-cache/x11-plugins/wmvolman-0.9
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-apps/hal-0.5.0 sys-apps/dbus >=x11-libs/libdockapp-0.6.0 sys-apps/pmount =x11-libs/gtk+-2* || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Dockable applet for WindowMaker that handles hotpluggable devices and removable media.
+HOMEPAGE=http://people.altlinux.ru/~raorn/wmvolman.html
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=sys-apps/hal-0.5.0 sys-apps/dbus >=x11-libs/libdockapp-0.6.0 sys-apps/pmount =x11-libs/gtk+-2*
+SLOT=0
+SRC_URI=http://people.altlinux.ru/~raorn/wmvolman-0.9.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=951189a0bf80489c5e7dc2c75acc06dd
diff --git a/metadata/md5-cache/x11-plugins/wmvolman-1.0 b/metadata/md5-cache/x11-plugins/wmvolman-1.0
new file mode 100644
index 0000000..cac8460
--- /dev/null
+++ b/metadata/md5-cache/x11-plugins/wmvolman-1.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=>=sys-fs/udisks-1.0 sys-apps/dbus >=x11-libs/libdockapp-0.6.0 sys-apps/pmount =x11-libs/gtk+-2* || ( >=sys-devel/automake-1.12 >=sys-devel/automake-1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=Dockable applet for WindowMaker that handles hotpluggable devices and removable media.
+HOMEPAGE=http://people.altlinux.ru/~raorn/wmvolman.html
+KEYWORDS=x86 amd64
+LICENSE=GPL-2
+RDEPEND=>=sys-fs/udisks-1.0 sys-apps/dbus >=x11-libs/libdockapp-0.6.0 sys-apps/pmount =x11-libs/gtk+-2*
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/wmvolman-1.0.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=08c9856c2e93205f7e695c4a3c800c69
diff --git a/metadata/md5-cache/x11-terms/xterm-215-r3 b/metadata/md5-cache/x11-terms/xterm-215-r3
new file mode 100644
index 0000000..512424d
--- /dev/null
+++ b/metadata/md5-cache/x11-terms/xterm-215-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=|| ( ( x11-libs/libX11 x11-libs/libXrender x11-libs/libXt x11-libs/libXmu x11-libs/libxkbfile x11-libs/libXft x11-libs/libXaw unicode? ( x11-apps/luit ) ) virtual/x11 ) Xaw3d? ( x11-libs/Xaw3d ) sys-libs/libutempter || ( x11-proto/xproto virtual/x11 )
+DESCRIPTION=Terminal Emulator for X Windows
+HOMEPAGE=http://dickey.his.com/xterm/
+IUSE=truetype Xaw3d unicode toolbar paste64
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=X11
+RDEPEND=|| ( ( x11-libs/libX11 x11-libs/libXrender x11-libs/libXt x11-libs/libXmu x11-libs/libxkbfile x11-libs/libXft x11-libs/libXaw unicode? ( x11-apps/luit ) ) virtual/x11 ) Xaw3d? ( x11-libs/Xaw3d ) sys-libs/libutempter
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/xterm-215.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=7ae617460457ac1ddd9d4696917c8a07
diff --git a/metadata/md5-cache/x11-terms/xterm-225-r1 b/metadata/md5-cache/x11-terms/xterm-225-r1
new file mode 100644
index 0000000..bca4ec0
--- /dev/null
+++ b/metadata/md5-cache/x11-terms/xterm-225-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=x11-libs/libX11 x11-libs/libXrender x11-libs/libXt x11-libs/libXmu x11-libs/libxkbfile x11-libs/libXft x11-libs/libXaw unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/Xaw3d ) sys-libs/libutempter x11-proto/xproto
+DESCRIPTION=Terminal Emulator for X Windows
+HOMEPAGE=http://dickey.his.com/xterm/
+IUSE=truetype Xaw3d unicode toolbar paste64
+KEYWORDS=~alpha !amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc !x86 ~x86-fbsd
+LICENSE=X11
+RDEPEND=x11-libs/libX11 x11-libs/libXrender x11-libs/libXt x11-libs/libXmu x11-libs/libxkbfile x11-libs/libXft x11-libs/libXaw unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/Xaw3d ) sys-libs/libutempter
+SLOT=0
+SRC_URI=ftp://invisible-island.net/xterm/xterm-225.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9af07ad780d91c5331fb1a84cf8c4fe8
diff --git a/metadata/md5-cache/x11-terms/xterm-243-r1 b/metadata/md5-cache/x11-terms/xterm-243-r1
new file mode 100644
index 0000000..4b6e473
--- /dev/null
+++ b/metadata/md5-cache/x11-terms/xterm-243-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install postinst setup unpack
+DEPEND=x11-libs/libX11 x11-libs/libXrender x11-libs/libXt x11-libs/libXmu x11-libs/libxkbfile x11-libs/libXft x11-libs/libXaw x11-apps/xmessage unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/Xaw3d ) sys-libs/libutempter x11-proto/xproto
+DESCRIPTION=Terminal Emulator for X Windows
+EAPI=2
+HOMEPAGE=http://dickey.his.com/xterm/
+IUSE=truetype Xaw3d unicode toolbar
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd
+LICENSE=X11
+RDEPEND=x11-libs/libX11 x11-libs/libXrender x11-libs/libXt x11-libs/libXmu x11-libs/libxkbfile x11-libs/libXft x11-libs/libXaw x11-apps/xmessage unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/Xaw3d ) sys-libs/libutempter
+SLOT=0
+SRC_URI=ftp://invisible-island.net/xterm/xterm-243.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=fb49eb6e8acd78ef95e5e4998b62feca
diff --git a/metadata/md5-cache/x11-terms/xterm-278-r1 b/metadata/md5-cache/x11-terms/xterm-278-r1
new file mode 100644
index 0000000..6dc0761
--- /dev/null
+++ b/metadata/md5-cache/x11-terms/xterm-278-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install setup unpack
+DEPEND=kernel_linux? ( sys-libs/libutempter ) kernel_FreeBSD? ( sys-libs/libutempter ) >=sys-libs/ncurses-5.7-r7 x11-apps/xmessage x11-libs/libX11 x11-libs/libXaw x11-libs/libXft x11-libs/libxkbfile x11-libs/libXmu x11-libs/libXrender x11-libs/libXt unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/libXaw3d ) dev-util/pkgconfig x11-proto/kbproto x11-proto/xproto
+DESCRIPTION=Terminal Emulator for X Windows
+EAPI=4
+HOMEPAGE=http://dickey.his.com/xterm/
+IUSE=toolbar truetype unicode Xaw3d
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris
+LICENSE=MIT
+RDEPEND=kernel_linux? ( sys-libs/libutempter ) kernel_FreeBSD? ( sys-libs/libutempter ) >=sys-libs/ncurses-5.7-r7 x11-apps/xmessage x11-libs/libX11 x11-libs/libXaw x11-libs/libXft x11-libs/libxkbfile x11-libs/libXmu x11-libs/libXrender x11-libs/libXt unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/libXaw3d ) media-fonts/font-misc-misc
+SLOT=0
+SRC_URI=ftp://invisible-island.net/xterm/xterm-278.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=3cfed1fd81bd12fcf1864344d406aa74
diff --git a/metadata/md5-cache/x11-terms/xterm-278-r2 b/metadata/md5-cache/x11-terms/xterm-278-r2
new file mode 100644
index 0000000..3d9081a
--- /dev/null
+++ b/metadata/md5-cache/x11-terms/xterm-278-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install setup unpack
+DEPEND=kernel_linux? ( sys-libs/libutempter ) kernel_FreeBSD? ( sys-libs/libutempter ) >=sys-libs/ncurses-5.7-r7 x11-apps/xmessage x11-libs/libX11 x11-libs/libXaw x11-libs/libXft x11-libs/libxkbfile x11-libs/libXmu x11-libs/libXrender x11-libs/libXt unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/libXaw3d ) dev-util/pkgconfig x11-proto/kbproto x11-proto/xproto
+DESCRIPTION=Terminal Emulator for X Windows
+EAPI=4
+HOMEPAGE=http://dickey.his.com/xterm/
+IUSE=toolbar truetype unicode Xaw3d
+KEYWORDS=~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris
+LICENSE=MIT
+RDEPEND=kernel_linux? ( sys-libs/libutempter ) kernel_FreeBSD? ( sys-libs/libutempter ) >=sys-libs/ncurses-5.7-r7 x11-apps/xmessage x11-libs/libX11 x11-libs/libXaw x11-libs/libXft x11-libs/libxkbfile x11-libs/libXmu x11-libs/libXrender x11-libs/libXt unicode? ( x11-apps/luit ) Xaw3d? ( x11-libs/libXaw3d ) media-fonts/font-misc-misc
+SLOT=0
+SRC_URI=ftp://invisible-island.net/xterm/xterm-278.tgz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9f035bbe8eaddcf6ccd4cced064cd3a4
diff --git a/metadata/md5-cache/x11-themes/ds-engines-1.0 b/metadata/md5-cache/x11-themes/ds-engines-1.0
new file mode 100644
index 0000000..fcbe784
--- /dev/null
+++ b/metadata/md5-cache/x11-themes/ds-engines-1.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-libs/gdk-pixbuf =gnome-base/libglade-0*
+DESCRIPTION=GTK Engines
+HOMEPAGE=http://www.windowmaker.org/
+KEYWORDS=alpha amd64 ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=media-libs/gdk-pixbuf =gnome-base/libglade-0*
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/themes/eazel-engine-0.3.tar.bz2 http://dside.dyndns.org/files/darklin/themes/Wonderland1-0.47.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=a3332677840ecd7ea30c2210860fb8b7
diff --git a/metadata/md5-cache/x11-themes/ds-engines-1.0-r1 b/metadata/md5-cache/x11-themes/ds-engines-1.0-r1
new file mode 100644
index 0000000..10cd742
--- /dev/null
+++ b/metadata/md5-cache/x11-themes/ds-engines-1.0-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-libs/gdk-pixbuf =gnome-base/libglade-0*
+DESCRIPTION=GTK Engines
+HOMEPAGE=http://www.windowmaker.org/
+KEYWORDS=alpha amd64 ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=media-libs/gdk-pixbuf =gnome-base/libglade-0*
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/themes/eazel-engine-0.3.tar.bz2 http://dside.dyndns.org/files/darklin/themes/Wonderland1-0.47.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=9295a8de6c602d0bb12f1cb9757d1378
diff --git a/metadata/md5-cache/x11-themes/ds-engines-1.0-r2 b/metadata/md5-cache/x11-themes/ds-engines-1.0-r2
new file mode 100644
index 0000000..684e9ec
--- /dev/null
+++ b/metadata/md5-cache/x11-themes/ds-engines-1.0-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=media-libs/gdk-pixbuf =gnome-base/libglade-0*
+DESCRIPTION=GTK Engines
+HOMEPAGE=http://www.windowmaker.org/
+KEYWORDS=alpha amd64 ppc sparc x86
+LICENSE=GPL-2
+RDEPEND=media-libs/gdk-pixbuf =gnome-base/libglade-0*
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/themes/eazel-engine-0.3.tar.bz2 http://dside.dyndns.org/files/darklin/themes/Wonderland1-0.47.tar.bz2
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=fb6ae33a8ebad95f8df8e8cda64a384f
diff --git a/metadata/md5-cache/x11-themes/ds-themes-1.0 b/metadata/md5-cache/x11-themes/ds-themes-1.0
new file mode 100644
index 0000000..9b96e0c
--- /dev/null
+++ b/metadata/md5-cache/x11-themes/ds-themes-1.0
@@ -0,0 +1,8 @@
+DEFINED_PHASES=install unpack
+DESCRIPTION=GTK themes
+HOMEPAGE=http://www.windowmaker.org/
+KEYWORDS=alpha amd64 ppc sparc x86
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://dside.dyndns.org/files/darklin/themes/aquax-gtk2-default-1.0-rc1.tar.gz http://dside.dyndns.org/files/darklin/themes/gnuaquase-default-0.5.tar.gz http://dside.dyndns.org/files/darklin/themes/h2o-gtk2-default-2.0.tar.gz http://dside.dyndns.org/files/darklin/themes/gtk-themes-extra-4.tar.bz2
+_md5_=7ccc5c1a5a749d0c96a59ad6b2983874
diff --git a/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r10 b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r10
new file mode 100644
index 0000000..9e3caa5
--- /dev/null
+++ b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r10
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=x11-libs/libXv >=x11-libs/libXft-2.1.0 x11-libs/libXt media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b:0 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( >=gnustep-base/gnustep-make-2.0 ) xinerama? ( x11-libs/libXinerama ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The fast and light GNUstep window manager
+EAPI=1
+HOMEPAGE=http://www.windowmaker.info/
+IUSE=gif gnustep jpeg nls png tiff modelock +vdesktop xinerama debug doc
+KEYWORDS=~alpha amd64 ~hppa ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris
+LICENSE=GPL-2
+RDEPEND=x11-libs/libXv >=x11-libs/libXft-2.1.0 x11-libs/libXt media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b:0 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( >=gnustep-base/gnustep-make-2.0 ) xinerama? ( x11-libs/libXinerama ) nls? ( >=sys-devel/gettext-0.10.39 )
+SLOT=0
+SRC_URI=ftp://ftp.windowmaker.info/pub/source/release/WindowMaker-0.92.0.tar.gz http://www.windowmaker.info/pub/source/release/WindowMaker-extra-0.1.tar.gz http://www.gentoo.org/~grobian/distfiles/windowmaker-0.92.0-patchset-2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnustep-base 87d599af9a09a523d6d233e462f3758e libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=d991703c492199dcd6d4d20b08e93a79
diff --git a/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r2 b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r2
new file mode 100644
index 0000000..e6ff46d
--- /dev/null
+++ b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=x11-base/xorg-x11 media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b-r2 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( gnustep-base/gnustep-make )
+DESCRIPTION=The fast and light GNUstep window manager
+HOMEPAGE=http://www.windowmaker.org/
+IUSE=gif gnustep jpeg nls png tiff modelock xinerama debug doc
+KEYWORDS=x86 ~ppc ~sparc amd64 ~mips ~alpha
+LICENSE=GPL-2
+RDEPEND=x11-base/xorg-x11 media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b-r2 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( gnustep-base/gnustep-make ) nls? ( >=sys-devel/gettext-0.10.39 )
+SLOT=0
+SRC_URI=ftp://ftp.windowmaker.org/pub/source/release/WindowMaker-0.92.0.tar.gz http://www.windowmaker.org/pub/source/release/WindowMaker-extra-0.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnustep-base 87d599af9a09a523d6d233e462f3758e multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=2a8306e86a93d49acae12e1b062dba6a
diff --git a/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r4 b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r4
new file mode 100644
index 0000000..2de978f
--- /dev/null
+++ b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=|| ( ( x11-libs/libXv x11-libs/libXft ) virtual/x11 ) media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b-r2 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( gnustep-base/gnustep-make )
+DESCRIPTION=The fast and light GNUstep window manager
+HOMEPAGE=http://www.windowmaker.info/
+IUSE=gif gnustep jpeg nls png tiff modelock xinerama debug doc
+KEYWORDS=alpha amd64 mips ppc ~ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=|| ( ( x11-libs/libXv x11-libs/libXft ) virtual/x11 ) media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b-r2 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( gnustep-base/gnustep-make ) nls? ( >=sys-devel/gettext-0.10.39 )
+SLOT=0
+SRC_URI=ftp://ftp.windowmaker.info/pub/source/release/WindowMaker-0.92.0.tar.gz http://www.windowmaker.info/pub/source/release/WindowMaker-extra-0.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnustep-base 87d599af9a09a523d6d233e462f3758e multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=fa64cb80e635aaf64415b4edf4378bc1
diff --git a/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r5 b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r5
new file mode 100644
index 0000000..ca27dc8
--- /dev/null
+++ b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r5
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=|| ( ( x11-libs/libXv x11-libs/libXft ) virtual/x11 ) media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b-r2 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( gnustep-base/gnustep-make )
+DESCRIPTION=The fast and light GNUstep window manager
+HOMEPAGE=http://www.windowmaker.info/
+IUSE=gif gnustep jpeg nls png tiff modelock xinerama debug doc
+KEYWORDS=alpha amd64 mips ppc ~ppc64 sparc x86
+LICENSE=GPL-2
+RDEPEND=|| ( ( x11-libs/libXv x11-libs/libXft ) virtual/x11 ) media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b-r2 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( gnustep-base/gnustep-make ) nls? ( >=sys-devel/gettext-0.10.39 )
+SLOT=0
+SRC_URI=ftp://ftp.windowmaker.info/pub/source/release/WindowMaker-0.92.0.tar.gz http://www.windowmaker.info/pub/source/release/WindowMaker-extra-0.1.tar.gz
+_eclasses_=eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnustep-base 87d599af9a09a523d6d233e462f3758e multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=f5ce284066fc658c084d2c0c0d5c4b75
diff --git a/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r9 b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r9
new file mode 100644
index 0000000..c8df027
--- /dev/null
+++ b/metadata/md5-cache/x11-wm/windowmaker-0.92.0-r9
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install postinst setup unpack
+DEPEND=x11-libs/libXv >=x11-libs/libXft-2.1.0 x11-libs/libXt media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b:0 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( >=gnustep-base/gnustep-make-2.0 ) xinerama? ( x11-libs/libXinerama ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
+DESCRIPTION=The fast and light GNUstep window manager
+EAPI=1
+HOMEPAGE=http://www.windowmaker.info/
+IUSE=gif gnustep jpeg nls png tiff modelock +vdesktop xinerama debug doc
+KEYWORDS=~alpha amd64 ~hppa ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris
+LICENSE=GPL-2
+RDEPEND=x11-libs/libXv >=x11-libs/libXft-2.1.0 x11-libs/libXt media-libs/fontconfig gif? ( >=media-libs/giflib-4.1.0-r3 ) png? ( >=media-libs/libpng-1.2.1 ) jpeg? ( >=media-libs/jpeg-6b:0 ) tiff? ( >=media-libs/tiff-3.6.1-r2 ) gnustep? ( >=gnustep-base/gnustep-make-2.0 ) xinerama? ( x11-libs/libXinerama ) nls? ( >=sys-devel/gettext-0.10.39 )
+SLOT=0
+SRC_URI=ftp://ftp.windowmaker.info/pub/source/release/WindowMaker-0.92.0.tar.gz http://www.windowmaker.info/pub/source/release/WindowMaker-extra-0.1.tar.gz http://www.gentoo.org/~grobian/distfiles/windowmaker-0.92.0-patchset-2.tar.bz2
+_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils 63afaaed8aa819fdcb814c7cd39495a2 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnustep-base 87d599af9a09a523d6d233e462f3758e libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
+_md5_=db4694944744a98bd363a4e8daee0862
diff --git a/net-analyzer/netams/Manifest b/net-analyzer/netams/Manifest
new file mode 100644
index 0000000..14f06d1
--- /dev/null
+++ b/net-analyzer/netams/Manifest
@@ -0,0 +1,9 @@
+AUX netams-3.4.5-ds-compile.patch 951 SHA256 63af9b2264ef0ee8e23519ec13bd11bf98e07993275c733198bd55fd6eb7c4e2 SHA512 3418b6f333733a27a9507f9d6c3d6060d3054b90dd65dc5f93c0da37e528f88f3509aaf454c3530e6981c6bd0909b76439338353fc0c5c0e949c67f7f7333199 WHIRLPOOL ec75943c7d28ef39eb47ab27f456b93f537622828837176d5f13360369e6474e135e5eb44bd8da6d2b3f002c7c8dfcbc18fc4e06fe97235f79f7c37bb823d5d0
+AUX netams-ds-compile.patch 937 SHA256 516a8245f6c1e8371acae52a3dfcd5e6132d70547e5bc9423df367afe22a1903 SHA512 2b532d7be5eee4ea20e2aa70e7a24f8f20add3e7f62c94e0c413ecfcabc073d983928ac719a7bdcc7de3349618fb0ea4f53fd72b692ea400174063e3434e159f WHIRLPOOL 762b0b82d2c6331e8ca052eae09d80f0e36d40479cf89c73ca0a802856283194f17e705dede9250ee1b15db0c574ee03d2fb7acd40ffddcfb2663a4a2dc6cee9
+AUX netams-ds-portrange.patch 2940 SHA256 ac08e4722c5e910941692b0cacfbf5cdaf1dea818649eeeed0b4d4c63f88f016 SHA512 c4ec7d70e9baf0ec38c87384493367e95c82aa9059cfcffd403d4fd080b0ebbe850bfeec13e03e6d6633c85a2a5f9f86c9886c22316c02352b9faa93e76a9748 WHIRLPOOL a828bc0a4d1669dd4e33b800429d413670d26582ac718d0c61220c4f28b7a5abf50a0436b2b73f6f1c29a3327bf83f5853d7892101b5f3fac5604bc5d49009ed
+AUX netams.init 600 SHA256 50cc8a2d619d39a09b23d6ae271238a8a1d9dd6a9ab752bc9ac8938ede83d1a4 SHA512 81962717fdf97ef0a9b3cf75253ced71925571ba488895ff1e522e538620b1a72561e09347ffd98afb7ed3cbe387a007ba4044fb47a5b7db38e01839d5b09cce WHIRLPOOL 9fefe2ed704626ccbba80e0ec8ab88b06b1a6ce162961ebdee523f74447f36ee7378e0b1c7304025fa2a9d11f5c12d0e56d5f3d40ac43383a4d6a5e699a0e430
+AUX netams33.init 596 SHA256 a68ec05accc1ffce44272eac220f83e76cbefc4cbdaa78262484f8cf5567ddd7 SHA512 d138eef9fdcdcfc8e367bea8b111044a20e051e776f4c430b5af21be1a716a6a582ff7204e3372cef337d7915a5190e36361ed2f681fb28cf6368f425baf5e9e WHIRLPOOL 2b77bbcb17af3f0a24ee9e7a85b75b0f3cfc97d168aa40cae2c4ce3cff2150ede7fbc2863ea0874e807d29265892cea29007d15dd32082b9b6af94950c44ce4b
+DIST netams-3.3.5.tar.gz 338686 SHA256 fedb4fd3463a87c5a70e2126b9c7d3fc5fe02bccb16977b241f0a38c4055b702 SHA512 a8f47b8251f039312a295028bd7b0c4a0325a1a7a7c9112f8a41b1f848b96587eac617fe8dee78af6d58493f02a4a1f2456cd48463c2ef3672f803df1688d389 WHIRLPOOL 0d27e34138251f829ae9da092d82e8353cceeb6741faa5a83e5ddf8302dd6ceeecaf94a8d277fd5a8c4e250934b03830f8f40534bae64ceecab21bfdb09f84fe
+DIST netams-3.4.5.tar.gz 408868 SHA256 dc6522cc6cf14bfb29f38f09e5513bfe4dce275c0fce9f55ec8706cd300908b1 SHA512 e139f0bafd708c3cf150add6ea456d4a4a43af14eae3cfe3045c5c3dd7dbb5238b73399735f9c7c7f2726a7b7911696c860a0a8833e70868f3a0c685ee1be936 WHIRLPOOL 52e9a51a3f6a3773ae709853a2c92eae881b1ba045186e5cb9544ddcdc4878e56a9b2deb3a92d9ef6e897297eea898eda5d329253c5de348fa6c2f681eccf18d
+EBUILD netams-3.3.5.ebuild 1058 SHA256 b1379163bb8bf7f9af7039b627cf1754d56e8fa7fe51f3d0c5f89ba1b8b26c83 SHA512 9bbde7c190ffe327c8ba6714906b92ba2f627ba5a248a3a7b1484a5b1b4acb6a95856f71c5f9fb13ad85bb62f2add321572fce4e0cb024c9aabc10b7db37591f WHIRLPOOL 260c808f554c1dec21af9fe64d4563cf1e7644af74535d3b7f2090fbd331d8b9da5a32d277c1001d437f600e42cfc780a33b72617c1d0b2a40956a59d6ade2a4
+EBUILD netams-3.4.5.ebuild 1381 SHA256 d08a21ec741feaccf75707e4daa4254b027f7ed776f71c569e14a7720aff5f23 SHA512 d1c6fbd340d28311664938849009040d468d2d7d99d9c797d557fec43f158107bf830ad22dc612ef0d501f731bb032e2628d68be3f629a5bde635151ac7ab5ee WHIRLPOOL 565c586d805afacace1ce1efd50372a21f53c5f2d0d4ede416c978d8b63e2d52fce259b259f7ac95513a980bb29d6bb3c247d9773bd76ab86fd02809e169870d
diff --git a/net-analyzer/netams/files/netams-3.4.5-ds-compile.patch b/net-analyzer/netams/files/netams-3.4.5-ds-compile.patch
new file mode 100644
index 0000000..46c4de7
--- /dev/null
+++ b/net-analyzer/netams/files/netams-3.4.5-ds-compile.patch
@@ -0,0 +1,24 @@
+diff -dPNur netams-3.4.5-orig/configure.sh netams-3.4.5/configure.sh
+--- netams-3.4.5-orig/configure.sh 2009-09-06 16:44:54.000000000 +0000
++++ netams-3.4.5/configure.sh 2014-10-14 01:11:43.000000000 +0000
+@@ -259,7 +259,7 @@
+ echo "GLib 2.0 found disabling OpenSSL"
+ echo " [ $v1 $v2 $v3 ]"
+ echo "DEFINE += -DWIPE_OPENSSL -I$v2 -I$v3" >> $makefile
+- echo "LIB += -lglib-2.0 -L$v1" >> $makefile
++ echo "LIB += -lcrypt -lglib-2.0 -L$v1" >> $makefile
+ else
+ echo "LibC - enabling OpenSSL"
+ echo "LIB += -lcrypt" >> $makefile
+diff -dPNur netams-3.4.5-orig/src/config.h netams-3.4.5/src/config.h
+--- netams-3.4.5-orig/src/config.h 2009-08-01 09:23:55.000000000 +0000
++++ netams-3.4.5/src/config.h 2014-10-14 01:10:09.000000000 +0000
+@@ -49,7 +49,7 @@
+ #ifndef WIPE_OPENSSL
+ #include <openssl/lhash.h>
+ #else
+-#include <glib/ghash.h>
++#include <glib.h>
+ #endif
+
+ #define __FAVOR_BSD 1 //this is dirty hack -D_BSD_SOURCE should work but do not
diff --git a/net-analyzer/netams/files/netams-ds-compile.patch b/net-analyzer/netams/files/netams-ds-compile.patch
new file mode 100644
index 0000000..550bf81
--- /dev/null
+++ b/net-analyzer/netams/files/netams-ds-compile.patch
@@ -0,0 +1,24 @@
+diff -dPNur netams-3.3.3a/src/connections.c netams-3.3.3a-new/src/connections.c
+--- netams-3.3.3a/src/connections.c 2005-11-20 02:31:02.000000000 +0400
++++ netams-3.3.3a-new/src/connections.c 2006-04-10 03:37:34.000000000 +0500
+@@ -92,7 +92,7 @@
+ }
+
+ #ifdef LINUX
+-ssize_t conn_write(void *conn, const char *buf, unsigned i) {
++ssize_t conn_write(void *conn, const char *buf, size_t i) {
+ #else
+ int conn_write(void *conn, const char *buf, int i) {
+ #endif
+diff -dPNur netams-3.3.3a/src/connections.h netams-3.3.3a-new/src/connections.h
+--- netams-3.3.3a/src/connections.h 2005-03-02 14:39:30.000000000 +0400
++++ netams-3.3.3a-new/src/connections.h 2006-04-10 03:38:25.000000000 +0500
+@@ -13,7 +13,7 @@
+ #define CONN_FD_VIRT -1
+
+ #ifdef LINUX
+-ssize_t conn_write(void *conn, const char *buf, unsigned i);
++ssize_t conn_write(void *conn, const char *buf, size_t i);
+ #else
+ int conn_write(void *conn, const char *buf, int i);
+ #endif
diff --git a/net-analyzer/netams/files/netams-ds-portrange.patch b/net-analyzer/netams/files/netams-ds-portrange.patch
new file mode 100644
index 0000000..6154960
--- /dev/null
+++ b/net-analyzer/netams/files/netams-ds-portrange.patch
@@ -0,0 +1,96 @@
+diff -dPNur netams-3.2.3/src/policy.c netams-3.2.3-ranges/src/policy.c
+--- netams-3.2.3/src/policy.c 2005-02-24 11:58:13.000000000 +0100
++++ netams-3.2.3-ranges/src/policy.c 2005-07-25 23:52:32.000000000 +0200
+@@ -32,6 +32,8 @@
+ target.num_ports=0;
+ for (u_char i=0; i<PC_MAX_PORTS; i++)
+ target.src_ports[i]=target.dst_ports[i]=0;
++ for (u_char i=0; i<PC_MAX_PORTS; i++)
++ target.max_ports[i]=0;
+
+ target.num_addrs=0;
+ for (u_char i=0; i<PC_MAX_ADDRS; i++)
+@@ -171,6 +173,8 @@
+ target.check_type|=PC_IP_PORTS;
+ u_char j=0;
+ u_short ports;
++ u_short max_port;
++ char *maxptr;
+ char *ptr;
+
+ while (tgt[j+*i+1]!=empty && j<PC_MAX_PORTS) {
+@@ -179,9 +183,19 @@
+ else
+ ptr=tgt[j+*i+1];
+
++
++ maxptr = strchr(ptr,':');
++ if (!maxptr) maxptr = strchr(ptr,'-');
++
+ ports=strtol(ptr, NULL, 10);
+
+ if (!ports) break;
++
++ if (maxptr) {
++ max_port = strtol(maxptr+1, NULL, 10);
++ if (ports>max_port) max_port = 0;
++ } else max_port = 0;
++ target.max_ports[j] = htons(max_port);
+
+ switch (tgt[j+*i+1][0]) {
+ case 's':
+@@ -358,11 +372,26 @@
+ if(target.num_ports) sprintf(buf+strlen(buf), "ports ");
+ for (u_char i=0; i<target.num_ports; i++) {
+ if (target.src_ports[i]==target.dst_ports[i])
++ {
++ if (target.max_ports[i])
++ sprintf(buf+strlen(buf), "%u:%u ", ntohs(target.src_ports[i]), ntohs(target.max_ports[i]));
++ else
+ sprintf(buf+strlen(buf), "%u ", ntohs(target.src_ports[i]));
++ }
+ else if (target.src_ports[i])
++ {
++ if (target.max_ports[i])
++ sprintf(buf+strlen(buf), "s%u:%u ", ntohs(target.src_ports[i]), ntohs(target.max_ports[i]));
++ else
+ sprintf(buf+strlen(buf), "s%u ", ntohs(target.src_ports[i]));
++ }
+ else if (target.dst_ports[i])
++ {
++ if (target.max_ports[i])
++ sprintf(buf+strlen(buf), "d%u:%u ", ntohs(target.dst_ports[i]),ntohs(target.max_ports[i]));
++ else
+ sprintf(buf+strlen(buf), "d%u ", ntohs(target.dst_ports[i]));
++ }
+ }
+ }
+ if (target.check_type&PC_UNIT) {
+@@ -436,6 +465,15 @@
+ res=1;
+ break;
+ }
++
++ if (target.max_ports[i]) {
++ if (((target.src_ports[i])&&(ntohs(flow->srcport)>ntohs(target.src_ports[i]))&&(ntohs(flow->srcport)<=ntohs(target.max_ports[i])))||
++ ((target.dst_ports[i])&&(ntohs(flow->dstport)>ntohs(target.dst_ports[i]))&&(ntohs(flow->dstport)<=ntohs(target.max_ports[i])))) {
++ res=1;
++ break;
++ }
++ }
++
+ }
+ if(!res) return 0;
+ }
+diff -dPNur netams-3.2.3/src/policy.h netams-3.2.3-ranges/src/policy.h
+--- netams-3.2.3/src/policy.h 2005-01-17 15:13:21.000000000 +0100
++++ netams-3.2.3-ranges/src/policy.h 2005-07-25 23:30:40.000000000 +0200
+@@ -86,6 +86,8 @@
+ u_char num_ports;
+ u_short src_ports[PC_MAX_PORTS];
+ u_short dst_ports[PC_MAX_PORTS];
++
++ u_short max_ports[PC_MAX_PORTS];
+
+ //PC_IP_TOS
+ u_char ip_tos;
diff --git a/net-analyzer/netams/files/netams.init b/net-analyzer/netams/files/netams.init
new file mode 100644
index 0000000..c5aca06
--- /dev/null
+++ b/net-analyzer/netams/files/netams.init
@@ -0,0 +1,32 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need net mysql
+}
+
+
+daemondir=/usr/local/sbin
+path_to_etc=/etc/
+
+
+start() {
+ ebegin "Starting netams"
+ /bin/mkdir -p /var/run/netams
+ if [ -x $daemondir/netams ]; then
+ if [ -f $path_to_etc/netams.cfg ]; then
+ $daemondir/netams -lf $path_to_etc/netams.cfg >/dev/null
+ eend $?
+ else
+ eend 1
+ fi
+ else
+ eend 1
+ fi
+}
+
+stop() {
+ killall ${KILL_OPTS} netams
+}
diff --git a/net-analyzer/netams/files/netams33.init b/net-analyzer/netams/files/netams33.init
new file mode 100644
index 0000000..a4b56ad
--- /dev/null
+++ b/net-analyzer/netams/files/netams33.init
@@ -0,0 +1,25 @@
+#!/sbin/runscript
+# $Id: netams-gentoo.sh,v 1.1 2005/06/07 20:20:37 anton Exp $
+# this is Linux Gentoo version
+
+start() {
+ ebegin "Starting NeTAMS"
+ if [ -f /etc/netams.cfg ]; then
+ start-stop-daemon --start --quiet --background \
+ --pid /var/run/netams.pid \
+ --exec /usr/sbin/netams -- -f /etc/netams.cfg -l
+ fi
+ eend $? "Failed to start NeTAMS"
+}
+
+stop() {
+ ebegin "Stopping netams"
+ start-stop-daemon --stop --quiet --pid /var/run/netams.pid --exec /usr/sbin/netams
+ eend $? "Failed to stop NeTAMS"
+}
+
+restart() {
+ svc_stop
+ sleep 3
+ svc_start
+}
diff --git a/net-analyzer/netams/netams-3.3.5.ebuild b/net-analyzer/netams/netams-3.3.5.ebuild
new file mode 100644
index 0000000..7460661
--- /dev/null
+++ b/net-analyzer/netams/netams-3.3.5.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="NetAMS Traffic Accounting"
+SRC_URI="http://www.netams.com/files/netams-${PV}.tar.gz"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+RDEPEND="dev-db/mysql net-libs/libpcap"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+# epatch ${FILESDIR}/netams-ds-compile.patch || die
+}
+
+src_compile() {
+ ./configure.sh || die
+ FLAGS=-DHAVE_BW make || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/sbin
+ mkdir -p ${D}/etc/init.d
+ mkdir -p ${D}/usr/share/man/man8/
+
+ install -m 0755 ${FILESDIR}/netams33.init ${D}/etc/init.d/netams
+# install -m 0755 addon/netams-gentoo.sh ${D}/etc/init.d/netams
+ install -m 0755 src/flowprobe ${D}/usr/sbin/
+ install -m 0755 src/ipfw2netflow ${D}/usr/sbin/
+ install -m 0755 src/ulog2netflow ${D}/usr/sbin/
+ install -m 0755 src/netams ${D}/usr/sbin/
+ install -m 0755 src/netamsctl ${D}/usr/sbin/
+ install -m 0644 doc/*.8 ${D}/usr/share/man/man8/
+}
diff --git a/net-analyzer/netams/netams-3.4.5.ebuild b/net-analyzer/netams/netams-3.4.5.ebuild
new file mode 100644
index 0000000..8a195c5
--- /dev/null
+++ b/net-analyzer/netams/netams-3.4.5.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="NetAMS Traffic Accounting"
+SRC_URI="http://www.netams.com/files/netams-${PV}.tar.gz"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+RDEPEND="dev-db/mysql net-libs/libpcap net-libs/libnetfilter_queue"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ epatch ${FILESDIR}/netams-3.4.5-ds-compile.patch || die
+}
+
+src_compile() {
+ ./configure.sh || die
+ FLAGS=-DHAVE_BW make || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/sbin
+ mkdir -p ${D}/etc/init.d
+ mkdir -p ${D}/usr/share/man/man8/
+ mkdir -p ${D}/var/www/localhost/htdocs/netams/images
+
+ install -m 0755 ${FILESDIR}/netams33.init ${D}/etc/init.d/netams || die
+# install -m 0755 addon/netams-gentoo.sh ${D}/etc/init.d/netams || die
+ install -m 0755 src/flowprobe ${D}/usr/sbin/ || die
+# install -m 0755 src/ipfw2netflow ${D}/usr/sbin/ || die
+# install -m 0755 src/ulog2netflow ${D}/usr/sbin/ || die
+ install -m 0755 src/netams ${D}/usr/sbin/ || die
+ install -m 0755 src/netamsctl ${D}/usr/sbin/ || die
+ install -m 0644 doc/*.8 ${D}/usr/share/man/man8/ || die
+ install -m 0644 addon/netams.js ${D}/var/www/localhost/htdocs/netams/ || die
+ install -m 0644 cgi-bin/images/* ${D}/var/www/localhost/htdocs/netams/images/ || die
+}
diff --git a/net-analyzer/openvas-client/Manifest b/net-analyzer/openvas-client/Manifest
new file mode 100644
index 0000000..dda1584
--- /dev/null
+++ b/net-analyzer/openvas-client/Manifest
@@ -0,0 +1,2 @@
+DIST openvas-client-3.0.0.tar.gz 758925 RMD160 47853e832b07a568e53ef3e47f5ea35c8b67a56a SHA1 1890c9813e1219efe4e72a0697f4c0271bc2670c SHA256 8e4242d5736c83f6322efc700f70f1c312b6f41274a0d735de9f8034f7a5cb1b
+EBUILD openvas-client-3.0.0.ebuild 1007 RMD160 b94e6f30077c3d192956afc4135539e6e27d7dc6 SHA1 c649d436e5c24fa40a7497c4da87af162174455b SHA256 f14b925092c005bdb8f1b5482f19b218b8638db5ec14241cff90a3a70aea6b02
diff --git a/net-analyzer/openvas-client/openvas-client-3.0.0.ebuild b/net-analyzer/openvas-client/openvas-client-3.0.0.ebuild
new file mode 100644
index 0000000..ba1b55d
--- /dev/null
+++ b/net-analyzer/openvas-client/openvas-client-3.0.0.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-analyzer/openvas-client/openvas-client-2.0.5.ebuild,v 1.2 2009/11/07 20:19:43 volkmar Exp $
+
+inherit eutils
+
+DESCRIPTION="A client for the openvas vulnerability scanner"
+HOMEPAGE="http://www.openvas.org/"
+SRC_URI="http://wald.intevation.org/frs/download.php/685/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc x86"
+IUSE="gtk"
+
+DEPEND="net-libs/gnutls
+ gtk? ( >=x11-libs/gtk+-2.8.8 )"
+RDEPEND="${DEPEND}"
+
+# Upstream bug:
+# http://wald.intevation.org/tracker/index.php?func=detail&aid=941&group_id=29&atid=220
+MAKEOPTS="-j1"
+
+src_compile() {
+ econf $(use_enable gtk) || die "econf failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "install failed"
+ dodoc AUTHORS CHANGES README TODO || die "dodoc failed"
+
+ make_desktop_entry OpenVAS-Client "OpenVAS Client" /usr/share/pixmaps/openvas-client.png "Network"
+}
diff --git a/net-analyzer/openvas-libraries/Manifest b/net-analyzer/openvas-libraries/Manifest
new file mode 100644
index 0000000..a809d00
--- /dev/null
+++ b/net-analyzer/openvas-libraries/Manifest
@@ -0,0 +1,3 @@
+AUX openvas-libraries-3.0.3-ds-gpgme.patch 471 RMD160 32f801cce910ba1a0237dec157dd4b21d81fe527 SHA1 f2afafc0908ae2a834a064f980f32feded36dfa4 SHA256 d50ed6e1720a123ae38262fa8af0271a6409affe517cddfc9898fb63d43e7bbe
+DIST openvas-libraries-3.0.3.tar.gz 764157 RMD160 3502eaefc3c32f52b593bce80d869b451ed08e67 SHA1 7f42f9d58ba2de8f987422a799df69dc969f90c2 SHA256 9caf40d73dadf157bd3adafa8fdf984f4554301237012d2d26fd366df62de943
+EBUILD openvas-libraries-3.0.3.ebuild 796 RMD160 9bb82d2176b56fa017ef92ab850a21d4b8acd812 SHA1 06dcfdc181b678cb8b6f76705fa97d0973494cc4 SHA256 6b9b62ce14b52838ea2b1a9f879a934847be521dbc5bfc9b2463ec57ac65893c
diff --git a/net-analyzer/openvas-libraries/files/openvas-libraries-3.0.3-ds-gpgme.patch b/net-analyzer/openvas-libraries/files/openvas-libraries-3.0.3-ds-gpgme.patch
new file mode 100644
index 0000000..f3a9331
--- /dev/null
+++ b/net-analyzer/openvas-libraries/files/openvas-libraries-3.0.3-ds-gpgme.patch
@@ -0,0 +1,12 @@
+diff -dPNur openvas-libraries-3.0.3/nasl/nasl_signature.h openvas-libraries-3.0.3-ds/nasl/nasl_signature.h
+--- openvas-libraries-3.0.3/nasl/nasl_signature.h 2009-09-25 09:20:53.000000000 +0200
++++ openvas-libraries-3.0.3-ds/nasl/nasl_signature.h 2010-02-12 01:25:37.000000000 +0100
+@@ -24,7 +24,7 @@
+ #ifndef NASL_SIGNATURE_H
+ #define NASL_SIGNATURE_H
+
+-#include <gpgme.h>
++#include <gpgme/gpgme.h>
+ #include <glib.h>
+
+ int nasl_verify_signature(const char* filename);
diff --git a/net-analyzer/openvas-libraries/openvas-libraries-3.0.3.ebuild b/net-analyzer/openvas-libraries/openvas-libraries-3.0.3.ebuild
new file mode 100644
index 0000000..723d795
--- /dev/null
+++ b/net-analyzer/openvas-libraries/openvas-libraries-3.0.3.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-analyzer/openvas-libraries/openvas-libraries-2.0.4.ebuild,v 1.1 2009/09/07 16:19:57 hanno Exp $
+
+inherit eutils
+
+DESCRIPTION="A remote security scanner for Linux (openvas-libraries)"
+HOMEPAGE="http://www.openvas.org/"
+SRC_URI="http://wald.intevation.org/frs/download.php/706/${P}.tar.gz"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 ~ppc x86"
+IUSE=""
+
+DEPEND="net-libs/gnutls
+ net-libs/libpcap"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ epatch "${FILESDIR}"/openvas-libraries-3.0.3-ds-gpgme.patch || die
+}
+
+src_install() {
+ einstall || die "failed to install"
+ find "${D}" -name '*.la' -delete
+ dodoc ChangeLog CHANGES TODO || die
+}
diff --git a/net-analyzer/openvas-scanner/Manifest b/net-analyzer/openvas-scanner/Manifest
new file mode 100644
index 0000000..9e0ba4a
--- /dev/null
+++ b/net-analyzer/openvas-scanner/Manifest
@@ -0,0 +1,3 @@
+AUX openvasd 602 RMD160 aa1bf12f2543128298405f4f076b9bf5c19c0ec9 SHA1 45df319e7c4753ec60dd4ddf11e81393cc3f37e1 SHA256 37d5c6cc7daca833c2520f840524f15f7f13f67838c552943455ded3902ab802
+DIST openvas-scanner-3.0.1.tar.gz 551036 RMD160 8b3007d94c0f6953156ac7c547b3a3db08684fa8 SHA1 a744da841c9c52f5bc74f51287602f958e4c7e01 SHA256 965bdb37d8925e56e779c1299f08c63436675f2e7b3715860433c37684d10df0
+EBUILD openvas-scanner-3.0.1.ebuild 1309 RMD160 8313ac4b4e46ec056acb8ca68accf1cc8630b85b SHA1 7ef8e3606dbb5c96d5cc2ff1b9a2cb3a28fd95a4 SHA256 9cedbce645c8acb2204056d387709185f273d9fdaf6d6a146ff06d78d971cee6
diff --git a/net-analyzer/openvas-scanner/files/openvasd b/net-analyzer/openvas-scanner/files/openvasd
new file mode 100644
index 0000000..0883487
--- /dev/null
+++ b/net-analyzer/openvas-scanner/files/openvasd
@@ -0,0 +1,27 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting openvassd"
+ start-stop-daemon --start --quiet -n openvassd --exec /usr/sbin/openvassd -- --quiet
+ eend $?
+}
+
+stop() {
+ ebegin "Stop openvassd"
+ start-stop-daemon --stop --quiet -n openvassd
+
+ einfo "Waiting for the environment to be sane"
+ RUNNING=$(ps aux | grep -m 1 openvassd: | grep -v grep)
+ while [ -n "$RUNNING" ] ; do
+ sleep 1
+ RUNNING=$(ps aux | grep -m 1 openvassd: | grep -v grep)
+ done
+ eend $?
+}
diff --git a/net-analyzer/openvas-scanner/openvas-scanner-3.0.1.ebuild b/net-analyzer/openvas-scanner/openvas-scanner-3.0.1.ebuild
new file mode 100644
index 0000000..1f328f9
--- /dev/null
+++ b/net-analyzer/openvas-scanner/openvas-scanner-3.0.1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-analyzer/openvas-server/openvas-server-2.0.3.ebuild,v 1.2 2009/11/07 20:18:04 volkmar Exp $
+
+DESCRIPTION="A remote security scanner for Linux (openvas-scanner)"
+HOMEPAGE="http://www.openvas.org/"
+SRC_URI="http://wald.intevation.org/frs/download.php/696/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~ppc x86"
+IUSE="tcpd gtk debug prelude"
+
+DEPEND=">=net-analyzer/openvas-libraries-3.0.3
+ tcpd? ( sys-apps/tcp-wrappers )
+ gtk? ( =x11-libs/gtk+-2* )
+ prelude? ( dev-libs/libprelude )
+ !net-analyzer/openvas-libnasl
+ !net-analyzer/openvas-plugins
+ !net-analyzer/openvas-server
+ "
+RDEPEND="${DEPEND}"
+
+src_compile() {
+ econf \
+ $(use_enable tcpd tcpwrappers) \
+ $(use_enable debug) \
+ $(use_enable gtk) \
+ || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ einstall || die "einstall failed"
+
+ dodoc doc/*.txt || die
+
+ doinitd "${FILESDIR}"/openvasd || die "doinitd failed"
+ keepdir /var/lib/openvas/logs
+ keepdir /var/lib/openvas/users
+}
+
+pkg_postinst() {
+ ewarn "1. Call 'openvas-nvt-sync' to download plugins"
+ ewarn "2. Call 'openvas-mkcert' to generate server certificate"
+ ewarn "3. Call 'openvas-adduser' to create a user"
+}
diff --git a/net-analyzer/openvas/Manifest b/net-analyzer/openvas/Manifest
new file mode 100644
index 0000000..98aaf66
--- /dev/null
+++ b/net-analyzer/openvas/Manifest
@@ -0,0 +1 @@
+EBUILD openvas-3.0.1.ebuild 566 RMD160 2234935070b0baa046efe7785ad97d3095a2977e SHA1 3dfdff3297954ed38e35d351b55a291242f65819 SHA256 bd6639f0b7d0933ab05330b15546cbdfb12ff947804cea9eb8359fbfec4da77c
diff --git a/net-analyzer/openvas/openvas-3.0.1.ebuild b/net-analyzer/openvas/openvas-3.0.1.ebuild
new file mode 100644
index 0000000..cb2da9f
--- /dev/null
+++ b/net-analyzer/openvas/openvas-3.0.1.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-analyzer/openvas/openvas-2.0.2.ebuild,v 1.2 2009/11/07 20:24:03 volkmar Exp $
+
+DESCRIPTION="A remote security scanner"
+HOMEPAGE="http://www.openvas.org/"
+DEPEND=">=net-analyzer/openvas-libraries-3.0.3
+ >=net-analyzer/openvas-scanner-3.0.1
+ >=net-analyzer/openvas-client-3.0.0
+ !net-analyzer/openvas-libnasl
+ !net-analyzer/openvas-plugins
+"
+
+RDEPEND="${DEPEND}"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 ~ppc x86"
+IUSE=""
diff --git a/net-dialup/mingetty/Manifest b/net-dialup/mingetty/Manifest
new file mode 100644
index 0000000..6f41e2f
--- /dev/null
+++ b/net-dialup/mingetty/Manifest
@@ -0,0 +1,5 @@
+AUX mingetty-ds-x509-v2.patch 587 RMD160 316af5f62fd0f582a1f5c94d66dad7567be94226 SHA1 cece71c63c88913ee6f5d4dff80c9366f018f9eb SHA256 5ad3a2409393bd2b7be039830fb9723156b620d3c6bbdfcdc2a4eedac5c93aaf
+AUX mingetty-ds-x509.patch 545 RMD160 8be651b0b8572a5b2dc7ab4a98f5a78401f34084 SHA1 899757f4cb434ed680bcdf80cd2b08c163e4dba8 SHA256 431a652ecc5d1098ade6e917b3a4ee117bacfa5033fbd7fbfe7b0db60284abd2
+DIST mingetty-1.07-3.src.rpm 19307 RMD160 1c36a0606a560e3848cfc96d98121fa36f6e624f SHA1 4b246dff1e1f9b00d4e9ac724b242597ece576b0 SHA256 ea85f079acc79f287108d5089dcd1646d85c50d024bc092244e2e833cf5f7ce3
+EBUILD mingetty-1.07.3-r1.ebuild 947 RMD160 0789fdd7d7121f9a058ef4e306c4d469a4f79041 SHA1 38630283e848a18551e48e51bde169bb4e48a306 SHA256 40c234403c702f2d576db4ce54512f01f155c8da9679e62fdd1554dc49690cba
+EBUILD mingetty-1.07.3.ebuild 944 RMD160 9339a18fd817655ba9e303c30fd618c40ad7370d SHA1 35ad704526b4c7e83f092eaded5db021ec2d2851 SHA256 8fdb0923b3849f0f84e77a0003233275898c0ad8718aeb98249dd71e662cf0d4
diff --git a/net-dialup/mingetty/files/mingetty-ds-x509-v2.patch b/net-dialup/mingetty/files/mingetty-ds-x509-v2.patch
new file mode 100644
index 0000000..86451da
--- /dev/null
+++ b/net-dialup/mingetty/files/mingetty-ds-x509-v2.patch
@@ -0,0 +1,22 @@
+diff -dPNur mingetty-1.07/mingetty.c mingetty-1.07-new/mingetty.c
+--- mingetty-1.07/mingetty.c 2004-01-03 13:15:56.000000000 +0000
++++ mingetty-1.07-new/mingetty.c 2006-01-04 23:44:55.000000000 +0000
+@@ -297,7 +297,8 @@
+ unsigned char c;
+
+ tcflush (0, TCIFLUSH); /* flush pending input */
+- for (*logname = 0; *logname == 0;) {
++ *logname=0;
++// for (*logname = 0; *logname == 0;) {
+ do_prompt (1);
+ for (bp = logname;;) {
+ if (read (0, &c, 1) < 1) {
+@@ -317,7 +318,7 @@
+ else
+ *bp++ = c;
+ }
+- }
++ if (!*logname) strcpy(logname, "x509detect");
+ return logname;
+ }
+
diff --git a/net-dialup/mingetty/files/mingetty-ds-x509.patch b/net-dialup/mingetty/files/mingetty-ds-x509.patch
new file mode 100644
index 0000000..ae27fd6
--- /dev/null
+++ b/net-dialup/mingetty/files/mingetty-ds-x509.patch
@@ -0,0 +1,22 @@
+diff -dPNur mingetty-1.07/mingetty.c mingetty-1.07-new/mingetty.c
+--- mingetty-1.07/mingetty.c 2004-01-03 13:15:56.000000000 +0000
++++ mingetty-1.07-new/mingetty.c 2006-01-04 23:44:55.000000000 +0000
+@@ -297,7 +297,8 @@
+ unsigned char c;
+
+ tcflush (0, TCIFLUSH); /* flush pending input */
+- for (*logname = 0; *logname == 0;) {
++ *logname=0;
++// for (*logname = 0; *logname == 0;) {
+ do_prompt (1);
+ for (bp = logname;;) {
+ if (read (0, &c, 1) < 1) {
+@@ -317,7 +318,7 @@
+ else
+ *bp++ = c;
+ }
+- }
++// }
+ return logname;
+ }
+
diff --git a/net-dialup/mingetty/mingetty-1.07.3-r1.ebuild b/net-dialup/mingetty/mingetty-1.07.3-r1.ebuild
new file mode 100644
index 0000000..9307945
--- /dev/null
+++ b/net-dialup/mingetty/mingetty-1.07.3-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-dialup/mingetty/mingetty-1.07.3.ebuild,v 1.11 2005/10/04 19:01:50 mrness Exp $
+
+inherit rpm eutils toolchain-funcs
+
+MY_WORK=${PN}-${PV%.*}
+S=${WORKDIR}/${MY_WORK}
+MY_P=${MY_WORK}-${PV##*.}
+DESCRIPTION="A compact getty program for virtual consoles only."
+HOMEPAGE="ftp://rpmfind.net/linux/fedora/core/3/SRPMS"
+SRC_URI="mirror://fedora/3/SRPMS/${MY_P}.src.rpm"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sparc x86"
+IUSE=""
+
+RDEPEND=""
+
+src_unpack() {
+ rpm_src_unpack
+
+ cd ${S}
+ epatch ../mingetty-1.00-opt.patch
+#SDS
+ epatch ${FILESDIR}/mingetty-ds-x509-v2.patch
+#EDS
+}
+
+src_compile() {
+ emake RPM_OPTS="${CFLAGS}" CC="$(tc-getCC)" || die "compile failed"
+}
+
+src_install () {
+ dodir /sbin /usr/share/man/man8
+ emake DESTDIR=${D} install || die "install failed"
+}
diff --git a/net-dialup/mingetty/mingetty-1.07.3.ebuild b/net-dialup/mingetty/mingetty-1.07.3.ebuild
new file mode 100644
index 0000000..bd4bc9d
--- /dev/null
+++ b/net-dialup/mingetty/mingetty-1.07.3.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-dialup/mingetty/mingetty-1.07.3.ebuild,v 1.11 2005/10/04 19:01:50 mrness Exp $
+
+inherit rpm eutils toolchain-funcs
+
+MY_WORK=${PN}-${PV%.*}
+S=${WORKDIR}/${MY_WORK}
+MY_P=${MY_WORK}-${PV##*.}
+DESCRIPTION="A compact getty program for virtual consoles only."
+HOMEPAGE="ftp://rpmfind.net/linux/fedora/core/3/SRPMS"
+SRC_URI="mirror://fedora/3/SRPMS/${MY_P}.src.rpm"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sparc x86"
+IUSE=""
+
+RDEPEND=""
+
+src_unpack() {
+ rpm_src_unpack
+
+ cd ${S}
+ epatch ../mingetty-1.00-opt.patch
+#SDS
+ epatch ${FILESDIR}/mingetty-ds-x509.patch
+#EDS
+}
+
+src_compile() {
+ emake RPM_OPTS="${CFLAGS}" CC="$(tc-getCC)" || die "compile failed"
+}
+
+src_install () {
+ dodir /sbin /usr/share/man/man8
+ emake DESTDIR=${D} install || die "install failed"
+}
diff --git a/net-ftp/bsdftpd-ssl/Manifest b/net-ftp/bsdftpd-ssl/Manifest
new file mode 100644
index 0000000..3939400
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/Manifest
@@ -0,0 +1,17 @@
+AUX auth.sslftp 935 RMD160 15e8e26956603a309519c580ec6adb8c9e2800e6 SHA1 c70ecfc35e91044a7087afe197c9c768b06591c6 SHA256 3b96a7a0a7c37ea29e90c45af9cdc7e441c1d93389a35d04ef93afc532768240
+AUX bsdftpd-ds-anonymous.patch.bz2 768 RMD160 499d6b90daf298aebfd12f218a16e864a3f48d88 SHA1 698017cdfff99cbc9677995613295e2792da3057 SHA256 97582e327cf06202db3206193cd84f5aae12c5943ae0e862dd616fadb68aa690
+AUX bsdftpd-ds-argmax.diff 589 RMD160 5c0e201c3f5bd581a0607d6fa19a23eeea43232e SHA1 c1ea10cf3dce478b11f294656c1d8359fe750602 SHA256 40e3c8bd365c9e93c2fab39878be735e8e6f138def824a079599fc10df6f9f02
+AUX bsdftpd-ds-cmdtab.diff 516 RMD160 2c4cff8ac85025a522a0f2752868cf1a631ecae4 SHA1 ead2dc44aea879e2dbe91e11acccc400ce8f08e2 SHA256 1981c8a6c67aec61311de88f2f5d8df8cb011bdff76bb5e4bf5d2acce5ba1d08
+AUX bsdftpd-ds-compile.patch 1898 RMD160 c37a1c5ca088e2b1e7efee5f9d424235aa7c7528 SHA1 234fec93670eae8bb28fe0a6b0b542bb79cec407 SHA256 6208ebb6a27794d108ecde2e5bad70952c15de57d91cfece5e6b47a47557fba1
+AUX bsdftpd-ds-extprog.patch.bz2 608 RMD160 22e4ac807cce0af2eab8587f4deec58c0d626d37 SHA1 dcc924792afdfadb598be87e2d1282f575c58563 SHA256 f30123fb91e16b572eb5803bf61f6b1a33ea212c419b7cac3fdd04f8c1938257
+AUX bsdftpd-ds-getline.diff 1767 RMD160 d2caa5da608963ca9a08768a3a877e9a81bf782e SHA1 eed7d26e9b37a09b2b336a827fbbde4d419d0ff6 SHA256 f3e8527df1649022882d702a53efb93a83d8640ecea5474032bf69ea4eb5a1b6
+AUX bsdftpd-ds-keypassword.patch.bz2 1162 RMD160 d96d3fa4f4a8f275104500df1f007b22a22a62c6 SHA1 d61f96bb29b49991c171c578b6eecdca78a0553a SHA256 fada73af7de8d9e9e4fc93bc2f93dfa5dac731d2161f6cab0bd67a94e49e2ee1
+AUX bsdftpd-ds-pport.patch.bz2 1210 RMD160 3013d11418562efadf1d6ddad070b7bc4aabf257 SHA1 a188fd76f9faf14b748c6c3910d0c52c3a0c3e17 SHA256 8354ea675c4503fd35a2c5f26cbdcc575e1ae403e14e5879b7cddc5731a8d87d
+AUX bsdftpd-ds-termcap.patch.bz2 322 RMD160 fca285e05cd2b248be40c6862df3d77169999b87 SHA1 0b819f70ad062315c9a7cc81557e058d4b7836f4 SHA256 6703ebd7f61c7bdb5686754536be0b714eb4392036f332627dfea3f4613664d2
+AUX bsdftpd.pam 224 RMD160 172202763da083bcb02c0968531c11b428253d82 SHA1 e823192291fe8212078915b26a53d5eb2cc380e2 SHA256 5688e1e4b692047002e0b014022a52b7f2836ce25e30ee92eefac574916f6afd
+AUX bsdftpd.sysconfig 297 RMD160 77dd2c9d061bd6f44678988cd2269e414ff52f11 SHA1 a932ebf5b269c738975ed68e2a01a77b9d812ea5 SHA256 8c6aa6eab45035df2a4416aa1350ed838972d3f3ea253f03449aca1b59639b1c
+AUX bsdftpd.sysinit 657 RMD160 849752223533cc36ca3883adcf298ac239b31ef9 SHA1 ace30d1061b4cc565a07d81e7d2c52bad90b2bbd SHA256 1dd52acaee0aef4b42559de05416634fb71bc7a240d693890fd865e008670f28
+AUX x509.auth 83 RMD160 0670566f51e7eccb1312988e9a77cef02ca939c0 SHA1 0631ce725ff90217c50dc3d900669ffd5cbf0f7a SHA256 162055fedc8f3e3e7b74da581492ac38a8f347b8ef8d94f9505e196cc15e6175
+DIST bsdftpd-ssl-1.0.2.tar.bz2 267043 RMD160 f91098b477489ff522769b31e7d14fb0c86c5d51 SHA1 1c07ac55a0340df3b11600f67e2137d80d19daa0 SHA256 82876c16defb72237a1eaa3177b45b115b2bba9abf35294b81bf8e400792396d
+EBUILD bsdftpd-ssl-1.0.2-r1.ebuild 1451 RMD160 fabf1d5c73268bedb4e092a8ebcabfa73f76d582 SHA1 d90d121d484e53d65c6904bebcefd5d5921a69e2 SHA256 7ba3e1eeb7fcdb547b3e5bc2b0324300ff661cc7fa509367ba424da02f238f83
+EBUILD bsdftpd-ssl-1.0.2-r2.ebuild 1668 RMD160 51b4f84e47e106023b8291e8adda531a838ae929 SHA1 e203711795e0850264c195e63bd6aebb3c84e7ee SHA256 7e43fdf772612d1db141b5847d79965faa4c1c9c7320f91ac00be01b6d27787a
diff --git a/net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r1.ebuild b/net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r1.ebuild
new file mode 100644
index 0000000..6ebae69
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="BSD SSL enabled FTP server"
+SRC_URI="http://dside.dyndns.org/files/darklin/bsdftpd-ssl-1.0.2.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+RDEPEND="sys-libs/ncurses dev-util/byacc"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-keypassword.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-extprog.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-anonymous.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-pport.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-termcap.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-compile.patch
+}
+
+src_compile() {
+ ./config.sh Linux
+ make || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/bin/
+ mkdir -p ${D}/usr/sbin
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+ mkdir -p ${D}/etc/init.d/
+ mkdir -p ${D}/etc/conf.d/
+ mkdir -p ${D}/etc/pam.d/
+
+ install -m 0755 ${FILESDIR}/bsdftpd.sysinit ${D}/etc/init.d/bsdftpd
+ install -m 0644 ${FILESDIR}/bsdftpd.sysconfig ${D}/etc/conf.d/bsdftpd
+ install -m 0644 ${FILESDIR}/bsdftpd.pam ${D}/etc/pam.d/ftpd
+ install -m 0755 ${FILESDIR}/auth.sslftp ${D}/usr/bin
+ install -m 0644 ${FILESDIR}/x509.auth ${D}/etc
+}
diff --git a/net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r2.ebuild b/net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r2.ebuild
new file mode 100644
index 0000000..2748a8a
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/bsdftpd-ssl-1.0.2-r2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="BSD SSL enabled FTP server"
+SRC_URI="http://dside.dyndns.org/files/darklin/bsdftpd-ssl-1.0.2.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+RDEPEND="sys-libs/ncurses dev-util/byacc"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-keypassword.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-extprog.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-anonymous.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-pport.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-termcap.patch.bz2
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-compile.patch
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-argmax.diff
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-cmdtab.diff
+ EPATCH_OPTS="-p1 -d ${P}" epatch ${FILESDIR}/bsdftpd-ds-getline.diff
+}
+
+src_compile() {
+ ./config.sh Linux
+ make || die
+}
+
+src_install() {
+ into /usr
+ mkdir -p ${D}/usr/bin/
+ mkdir -p ${D}/usr/sbin
+ make install DESTDIR=${D} INSTALLTOP=${D}/usr
+ mkdir -p ${D}/etc/init.d/
+ mkdir -p ${D}/etc/conf.d/
+ mkdir -p ${D}/etc/pam.d/
+
+ install -m 0755 ${FILESDIR}/bsdftpd.sysinit ${D}/etc/init.d/bsdftpd
+ install -m 0644 ${FILESDIR}/bsdftpd.sysconfig ${D}/etc/conf.d/bsdftpd
+ install -m 0644 ${FILESDIR}/bsdftpd.pam ${D}/etc/pam.d/ftpd
+ install -m 0755 ${FILESDIR}/auth.sslftp ${D}/usr/bin
+ install -m 0644 ${FILESDIR}/x509.auth ${D}/etc
+}
diff --git a/net-ftp/bsdftpd-ssl/files/auth.sslftp b/net-ftp/bsdftpd-ssl/files/auth.sslftp
new file mode 100644
index 0000000..539140d
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/auth.sslftp
@@ -0,0 +1,43 @@
+#! /usr/bin/perl
+
+# Output must be at least 8 bytes
+
+sub return_error {
+ print STDOUT "200\r\n\r\n";
+ exit;
+}
+
+sub return_ok {
+ $user=@_[0];
+ print STDOUT "100\r\n$user\r\n";
+ exit;
+}
+
+$/="\r\n";
+$user=<STDIN>;chomp($user);
+$/="\n";
+$mode=0;
+while (<>) {
+ if (($mode==0)&&($_ =~ /-----BEGIN CERTIFICATE-----/)) { $mode = 1; }
+ elsif (($mode==1)&&($_ =~ /-----END CERTIFICATE-----/)) { $mode = 2; }
+ if ($mode) {
+ $_ =~ /^(.*)[\n\r]+$/;
+ $cert.=$1;
+ }
+ if ($mode==2) { last; }
+}
+
+#$cert=join "", @cert_lines;
+$cert =~ m/-----BEGIN CERTIFICATE-----(.*)-----END CERTIFICATE-----/;
+$client_cert = $1;
+
+open(ucf, "/opt/ssl/user_certs/$user.crt") or return_error();
+@cert_lines=<ucf>;
+chomp(@cert_lines);
+$cert=join "", @cert_lines;
+close(ucf);
+$cert =~ m/-----BEGIN CERTIFICATE-----(.*)-----END CERTIFICATE-----/;
+$user_cert = $1;
+
+if (($user_cert cmp $client_cert) == 0) { return_ok($user); }
+return_error();
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-anonymous.patch.bz2 b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-anonymous.patch.bz2
new file mode 100644
index 0000000..0a18ecb
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-anonymous.patch.bz2
Binary files differ
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-argmax.diff b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-argmax.diff
new file mode 100644
index 0000000..8f425db
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-argmax.diff
@@ -0,0 +1,17 @@
+diff -dPNur bsdftpd-ssl-1.0.2.orig/contrib/libbsdport/libc/gen/glob.c bsdftpd-ssl-1.0.2/contrib/libbsdport/libc/gen/glob.c
+--- bsdftpd-ssl-1.0.2.orig/contrib/libbsdport/libc/gen/glob.c 2003-10-24 21:53:18.000000000 +0000
++++ bsdftpd-ssl-1.0.2/contrib/libbsdport/libc/gen/glob.c 2012-01-13 20:16:21.000000000 +0000
+@@ -79,6 +79,13 @@
+ #include <string.h>
+ #include <unistd.h>
+
++#if defined(_SC_ARG_MAX)
++# if defined(ARG_MAX)
++# undef ARG_MAX
++# endif
++# define ARG_MAX sysconf (_SC_ARG_MAX)
++#endif
++
+ #include "collate.h"
+ /* SKYNICK: from collate.c */
+ int __collate_load_error = 1;
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-cmdtab.diff b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-cmdtab.diff
new file mode 100644
index 0000000..4ea1912
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-cmdtab.diff
@@ -0,0 +1,20 @@
+diff -dPNur bsdftpd-ssl-1.0.2.orig/ftp/ftp_var.h bsdftpd-ssl-1.0.2/ftp/ftp_var.h
+--- bsdftpd-ssl-1.0.2.orig/ftp/ftp_var.h 2004-05-30 19:19:37.000000000 +0000
++++ bsdftpd-ssl-1.0.2/ftp/ftp_var.h 2012-01-13 20:30:15.000000000 +0000
+@@ -61,7 +61,6 @@
+ #endif /* LINUX */
+ #endif /* !SMALL */
+
+-#include "extern.h"
+
+ #define HASHBYTES 1024
+ #define FTPBUFLEN MAXPATHLEN + 200
+@@ -200,6 +199,8 @@
+ struct macel macros[16];
+ char macbuf[4096];
+
++#include "extern.h"
++
+ #include "sslapp.h"
+ #include "ssl_port_ftps.h"
+
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-compile.patch b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-compile.patch
new file mode 100644
index 0000000..e49d2ad
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-compile.patch
@@ -0,0 +1,89 @@
+diff -dPNur bsdftpd-ssl-1.0.2/ftp/ftp.c bsdftpd-ssl-1.0.2-new/ftp/ftp.c
+--- bsdftpd-ssl-1.0.2/ftp/ftp.c 2004-07-04 23:00:32.000000000 +0500
++++ bsdftpd-ssl-1.0.2-new/ftp/ftp.c 2006-04-05 05:41:54.000000000 +0500
+@@ -1544,6 +1544,7 @@
+ prt[1] &= 0xff;
+ error = 0;
+ epsv_done:
++ ;
+ } else
+ error = 1;
+
+@@ -1867,6 +1868,7 @@
+
+ return NULL;
+ default:
++ ;
+ }
+
+ X509_free(x509_ssl_con);
+@@ -1982,6 +1984,7 @@
+
+ return NULL;
+ default:
++ ;
+ }
+
+ X509_free(x509_ssl_con);
+diff -dPNur bsdftpd-ssl-1.0.2/ftp/util.c bsdftpd-ssl-1.0.2-new/ftp/util.c
+--- bsdftpd-ssl-1.0.2/ftp/util.c 2004-05-31 03:24:47.000000000 +0500
++++ bsdftpd-ssl-1.0.2-new/ftp/util.c 2006-04-05 05:42:14.000000000 +0500
+@@ -987,6 +987,7 @@
+ ssl_log_msgn(bio_err,"Reason: Certificate revoked");
+ break;
+ default:
++ ;
+ }
+
+ warnx("TLS/SSL connection to server failed");
+diff -dPNur bsdftpd-ssl-1.0.2/ftpd/ftpd.c bsdftpd-ssl-1.0.2-new/ftpd/ftpd.c
+--- bsdftpd-ssl-1.0.2/ftpd/ftpd.c 2006-04-05 04:55:31.000000000 +0500
++++ bsdftpd-ssl-1.0.2-new/ftpd/ftpd.c 2006-04-05 04:57:30.000000000 +0500
+@@ -2322,6 +2322,7 @@
+ SSL_get_shutdown(ssl_data_con);
+ break;
+ default:
++ ;
+ }
+ }
+ SSL_free(ssl_data_con);
+@@ -2445,6 +2446,7 @@
+ SSL_get_shutdown(ssl_data_con);
+ break;
+ default:
++ ;
+ }
+ }
+ SSL_free(ssl_data_con);
+@@ -2696,6 +2698,7 @@
+
+ return NULL;
+ default:
++ ;
+ }
+
+ X509_free(x509_ssl_con);
+@@ -2857,6 +2860,7 @@
+
+ return NULL;
+ default:
++ ;
+ }
+
+ X509_free(x509_ssl_con);
+@@ -4185,6 +4189,7 @@
+ SSL_get_shutdown(ssl_data_con);
+ break;
+ default:
++ ;
+ }
+ }
+ SSL_free(ssl_data_con);
+@@ -4299,6 +4304,7 @@
+ SSL_get_shutdown(ssl_data_con);
+ break;
+ default:
++ ;
+ }
+ }
+ SSL_free(ssl_data_con);
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-extprog.patch.bz2 b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-extprog.patch.bz2
new file mode 100644
index 0000000..b473e30
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-extprog.patch.bz2
Binary files differ
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-getline.diff b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-getline.diff
new file mode 100644
index 0000000..7aaf626
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-getline.diff
@@ -0,0 +1,45 @@
+diff -dPNur bsdftpd-ssl-1.0.2.orig/ftpd/extern.h bsdftpd-ssl-1.0.2/ftpd/extern.h
+--- bsdftpd-ssl-1.0.2.orig/ftpd/extern.h 2004-04-18 12:20:14.000000000 +0000
++++ bsdftpd-ssl-1.0.2/ftpd/extern.h 2012-01-13 20:21:33.000000000 +0000
+@@ -47,7 +47,7 @@
+ void ftpd_logwtmp(char *, char *, struct sockaddr *addr);
+ int ftpd_pclose(FILE *);
+ FILE *ftpd_popen(char *, char *);
+-char *getline(char *, int, FILE *);
++char *mygetline(char *, int, FILE *);
+ void lreply(int, const char *, ...);
+ void makedir(char *);
+ void nack(char *);
+diff -dPNur bsdftpd-ssl-1.0.2.orig/ftpd/ftpcmd.y bsdftpd-ssl-1.0.2/ftpd/ftpcmd.y
+--- bsdftpd-ssl-1.0.2.orig/ftpd/ftpcmd.y 2004-05-30 18:55:11.000000000 +0000
++++ bsdftpd-ssl-1.0.2/ftpd/ftpcmd.y 2012-01-13 20:21:27.000000000 +0000
+@@ -1374,7 +1374,7 @@
+ * getline - a hacked up version of fgets to ignore TELNET escape codes.
+ */
+ char *
+-getline(char *s, int n, FILE *iop)
++mygetline(char *s, int n, FILE *iop)
+ {
+ int c;
+ register char *cs;
+@@ -1522,7 +1522,7 @@
+ case CMD:
+ (void) signal(SIGALRM, toolong);
+ (void) alarm((unsigned) timeout);
+- if (getline(cbuf, sizeof(cbuf)-1, stdin) == NULL) {
++ if (mygetline(cbuf, sizeof(cbuf)-1, stdin) == NULL) {
+ reply(221, "You could at least say goodbye.");
+ dologout(0);
+ }
+diff -dPNur bsdftpd-ssl-1.0.2.orig/ftpd/ftpd.c bsdftpd-ssl-1.0.2/ftpd/ftpd.c
+--- bsdftpd-ssl-1.0.2.orig/ftpd/ftpd.c 2012-01-13 19:55:37.000000000 +0000
++++ bsdftpd-ssl-1.0.2/ftpd/ftpd.c 2012-01-13 20:21:48.000000000 +0000
+@@ -3750,7 +3750,7 @@
+ tv.tv_usec=0;
+ if (select(fileno(stdin)+1, &mask, NULL, NULL, &tv)) {
+ #endif /*USE_SSL*/
+- if (getline(cp, 7, stdin) == NULL) {
++ if (mygetline(cp, 7, stdin) == NULL) {
+ reply(221, "You could at least say goodbye.");
+ dologout(0);
+ }
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-keypassword.patch.bz2 b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-keypassword.patch.bz2
new file mode 100644
index 0000000..e3cea58
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-keypassword.patch.bz2
Binary files differ
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-pport.patch.bz2 b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-pport.patch.bz2
new file mode 100644
index 0000000..a105ddf
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-pport.patch.bz2
Binary files differ
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-termcap.patch.bz2 b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-termcap.patch.bz2
new file mode 100644
index 0000000..a8a67cc
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd-ds-termcap.patch.bz2
Binary files differ
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd.pam b/net-ftp/bsdftpd-ssl/files/bsdftpd.pam
new file mode 100644
index 0000000..836e5bb
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd.pam
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
+auth required /lib/security/pam_shells.so
+auth include system-auth
+account include system-auth
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd.sysconfig b/net-ftp/bsdftpd-ssl/files/bsdftpd.sysconfig
new file mode 100644
index 0000000..ae24158
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd.sysconfig
@@ -0,0 +1,7 @@
+BSDFTPDSSL_SSL_CERT=/opt/ssl/server_certs/server.crt
+BSDFTPDSSL_SSL_KEY=/opt/ssl/server_keys/server.key
+BSDFTPDSSL_SSL_PASSWORD=/etc/apc.pwd
+BSDFTPDSSL_SSL_CHAIN=/opt/ssl/ca/chain.crt
+BSDFTPDSSL_SSL_USERS=/opt/ssl/user_certs/
+BSDFTPDSSL_FIRST_PASSIVE_PORT=40000
+BSDFTPDSSL_LAST_PASSIVE_PORT=45000
diff --git a/net-ftp/bsdftpd-ssl/files/bsdftpd.sysinit b/net-ftp/bsdftpd-ssl/files/bsdftpd.sysinit
new file mode 100644
index 0000000..942c062
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/bsdftpd.sysinit
@@ -0,0 +1,20 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting BSD FTPD - SSL"
+ ftpd -h -S wu-ext -X wu-ext -l -l -B $BSDFTPDSSL_FIRST_PASSIVE_PORT:$BSDFTPDSSL_LAST_PASSIVE_PORT -D -z secure -z cert=$BSDFTPDSSL_SSL_CERT -z key=$BSDFTPDSSL_SSL_KEY -z verify=1 -z auth=1 -z CAfile=$BSDFTPDSSL_SSL_CHAIN -z CApath=$BSDFTPDSSL_SSL_USERS -z certsok -z KEYpassword=$BSDFTPDSSL_SSL_PASSWORD -z defau -z refnu -z cipher=HIGH
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping BSD FTPD - SSL"
+ killall ${KILL_OPTS} ftpd
+ eend $?
+}
diff --git a/net-ftp/bsdftpd-ssl/files/x509.auth b/net-ftp/bsdftpd-ssl/files/x509.auth
new file mode 100644
index 0000000..06a5890
--- /dev/null
+++ b/net-ftp/bsdftpd-ssl/files/x509.auth
@@ -0,0 +1,2 @@
+ftpd:allow:/CN:-p/usr/bin/perl /usr/bin/auth.sslftp
+ftpd:allow:*:-f~/certs/ftp.crt
diff --git a/net-ftp/gftp/Manifest b/net-ftp/gftp/Manifest
new file mode 100644
index 0000000..cd949db
--- /dev/null
+++ b/net-ftp/gftp/Manifest
@@ -0,0 +1,5 @@
+AUX gftp-2.0.18-fix_gtk1.patch 1095 RMD160 a7f81b7527440dd238b64f3d49b28f5c4a69a329 SHA1 14d5bcbb102d9069fcdceafb50ff6f1c226e1e5e SHA256 560b21ba0ea7db75ba0d33fcec9b9705c4009eadd7a67e3dcd19a949182657c9
+AUX gftp-2.0.18-ssh2-read.patch 326 RMD160 512c6ffb7b31588a63c8efa48c15f70c33854862 SHA1 78d2d8e1a7921a8cfb456f8e414b11a6a04d11f3 SHA256 3ae9e62999aef08911dcc374433fa1797d277494cb86fdbb54e969098230582d
+AUX gftp-ds-rcc.patch 26389 RMD160 58263f86b91ba505aedef2487a352be061501ebb SHA1 95df6779cf175bc70dadf577ae714f206f04e4df SHA256 4bd18670646c499d76d2810649030e0e1b850eac0e8fab3d68371fa34bb4ce54
+DIST gftp-2.0.18.tar.bz2 1374850 RMD160 0e0daea8543ae822b25635647360193362a2648d SHA1 c2468f1ff1fe978a5fab3a198e513558f3b48f5a SHA256 8145e18d1edf13e8cb6cd7a69bb69de5c46307086997755654488fb8282d38a2
+EBUILD gftp-2.0.18-r5.ebuild 1248 RMD160 ff3494e98d169b5c8cc21be8e99378dd2c8666a9 SHA1 bf69439a4d28d88612ff4f17fd50b74b96c3dd34 SHA256 785d82c9aed8afc2286cf0e08d193ac4c136dc87c30862b774ef764afcffb699
diff --git a/net-ftp/gftp/files/gftp-2.0.18-fix_gtk1.patch b/net-ftp/gftp/files/gftp-2.0.18-fix_gtk1.patch
new file mode 100644
index 0000000..a7fd44e
--- /dev/null
+++ b/net-ftp/gftp/files/gftp-2.0.18-fix_gtk1.patch
@@ -0,0 +1,31 @@
+diff -uNr gftp-2.0.18/src/gtk/options_dialog.c gftp-2.0.18.patched/src/gtk/options_dialog.c
+--- gftp-2.0.18/src/gtk/options_dialog.c 2005-01-04 14:32:20.000000000 +0100
++++ gftp-2.0.18.patched/src/gtk/options_dialog.c 2005-02-14 16:44:10.064677160 +0100
+@@ -1002,7 +1002,7 @@
+ gtk_widget_show (box);
+
+ #if GTK_MAJOR_VERSION == 1
+- tempwid = gtk_label_new (_("Type:"))
++ tempwid = gtk_label_new (_("Type:"));
+ #else
+ tempwid = gtk_label_new_with_mnemonic (_("_Type:"));
+ #endif
+diff -uNr gftp-2.0.18/src/text/gftp-text.c gftp-2.0.18.patched/src/text/gftp-text.c
+--- gftp-2.0.18/src/text/gftp-text.c 2005-01-25 02:11:00.000000000 +0100
++++ gftp-2.0.18.patched/src/text/gftp-text.c 2005-02-14 16:44:12.299337440 +0100
+@@ -185,6 +185,7 @@
+ else
+ infd = stdin;
+
++#if GLIB_MAJOR_VERSION > 1
+ locale_question = g_locale_from_utf8 (question, -1, NULL, NULL, NULL);
+ if (locale_question != NULL)
+ {
+@@ -193,6 +194,7 @@
+ g_free (locale_question);
+ }
+ else
++#endif
+ printf ("%s%s%s ", GFTPUI_COMMON_COLOR_BLUE, question,
+ GFTPUI_COMMON_COLOR_DEFAULT);
+
diff --git a/net-ftp/gftp/files/gftp-2.0.18-ssh2-read.patch b/net-ftp/gftp/files/gftp-2.0.18-ssh2-read.patch
new file mode 100644
index 0000000..765741b
--- /dev/null
+++ b/net-ftp/gftp/files/gftp-2.0.18-ssh2-read.patch
@@ -0,0 +1,13 @@
+--- gftp-2.0.18.orig/lib/sshv2.c
++++ gftp-2.0.18/lib/sshv2.c
+@@ -1841,7 +1841,7 @@
+ {
+ int ret;
+
+- if ((ret = sshv2_open_file (request, file, startsize, SSH_FXP_OPEN)) < 0)
++ if ((ret = sshv2_open_file (request, file, startsize, SSH_FXF_READ)) < 0)
+ return (ret);
+
+ return (sshv2_get_file_size (request, file));
+
+
diff --git a/net-ftp/gftp/files/gftp-ds-rcc.patch b/net-ftp/gftp/files/gftp-ds-rcc.patch
new file mode 100644
index 0000000..a704deb
--- /dev/null
+++ b/net-ftp/gftp/files/gftp-ds-rcc.patch
@@ -0,0 +1,822 @@
+diff -dPNur gftp-2.0.18-orig/configure.in gftp-2.0.18-new/configure.in
+--- gftp-2.0.18-orig/configure.in 2005-02-04 16:42:32.000000000 +0100
++++ gftp-2.0.18-new/configure.in 2005-07-23 18:54:53.000000000 +0200
+@@ -288,6 +288,20 @@
+ fi
+ AC_SUBST(SSL_LIBS)
+
++AC_CHECK_LIB(rccui, rccUiInit,[
++ AC_CHECK_HEADERS(librcc.h librccui.h,[
++ LIBRCC_LIBS="-lrccui"
++ LIBRCC_INCLUDES="-DHAVE_LIBRCC"
++ ],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])],[
++ LIBRCC_LIBS=""
++ LIBRCC_INCLUDES=""
++])
++AC_SUBST(LIBRCC_LIBS)
++AC_SUBST(LIBRCC_INCLUDES)
++
+ AM_GNU_GETTEXT
+
+ AC_CHECK_PROG(DB2HTML, db2html, true, false)
+diff -dPNur gftp-2.0.18-orig/lib/gftp.h gftp-2.0.18-new/lib/gftp.h
+--- gftp-2.0.18-orig/lib/gftp.h 2005-01-19 00:09:58.000000000 +0100
++++ gftp-2.0.18-new/lib/gftp.h 2005-07-23 20:57:03.000000000 +0200
+@@ -362,6 +362,7 @@
+ {
+ int protonum; /* Current number of the protocol this is
+ set to */
++ int language, charset; /* Remote language and encoding */
+ char *hostname, /* Hostname we will connect to */
+ *username, /* Username for host*/
+ *password, /* Password for host */
+@@ -928,6 +929,12 @@
+ const char *filename,
+ mode_t * mode );
+
++void gftp_set_language ( gftp_request * request,
++ int language );
++
++void gftp_set_charset ( gftp_request * request,
++ int charset );
++
+ void gftp_set_hostname ( gftp_request * request,
+ const char *hostname );
+
+diff -dPNur gftp-2.0.18-orig/lib/Makefile.am gftp-2.0.18-new/lib/Makefile.am
+--- gftp-2.0.18-orig/lib/Makefile.am 2005-01-16 17:10:12.000000000 +0100
++++ gftp-2.0.18-new/lib/Makefile.am 2005-07-23 18:58:12.000000000 +0200
+@@ -4,6 +4,6 @@
+ noinst_LIBRARIES = libgftp.a
+ libgftp_a_SOURCES=bookmark.c cache.c config_file.c fsp.c ftps.c https.c \
+ local.c misc.c mkstemps.c protocols.c pty.c rfc959.c \
+- rfc2068.c sshv2.c sslcommon.c
+-INCLUDES=@GLIB_CFLAGS@ @PTHREAD_CFLAGS@ -I../intl -DSHARE_DIR=\"$(datadir)/gftp\" -DLOCALE_DIR=\"$(datadir)/locale\"
+-noinst_HEADERS=gftp.h ftpcommon.h httpcommon.h options.h
++ rfc2068.c sshv2.c sslcommon.c rcc.c
++INCLUDES=@LIBRCC_INCLUDES@ @GLIB_CFLAGS@ @PTHREAD_CFLAGS@ -I../intl -DSHARE_DIR=\"$(datadir)/gftp\" -DLOCALE_DIR=\"$(datadir)/locale\"
++noinst_HEADERS=gftp.h ftpcommon.h httpcommon.h options.h rcc.h
+diff -dPNur gftp-2.0.18-orig/lib/rcc.c gftp-2.0.18-new/lib/rcc.c
+--- gftp-2.0.18-orig/lib/rcc.c 1970-01-01 01:00:00.000000000 +0100
++++ gftp-2.0.18-new/lib/rcc.c 2005-07-24 01:53:25.000000000 +0200
+@@ -0,0 +1,289 @@
++#include <stdlib.h>
++
++#ifdef HAVE_LIBRCC
++# include <librcc.h>
++# include <librccui.h>
++#endif /* HAVE_LIBRCC */
++
++#include "rcc.h"
++
++#ifdef HAVE_LIBRCC
++static rcc_class classes[] = {
++ { "ftp", RCC_CLASS_STANDARD, NULL, NULL, "FTP Encoding", 0 },
++ { "http", RCC_CLASS_STANDARD, NULL, NULL, "HTTP Encoding", 0 },
++ { "ssh", RCC_CLASS_STANDARD, NULL, NULL, "SSH Encoding", 0 },
++ { "fs", RCC_CLASS_STANDARD, NULL, NULL, "FS Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, NULL, NULL, "Output Encoding", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++rcc_context ctx;
++rcc_ui_context uictx;
++static int rcc_initialized = 0;
++#endif /* HAVE_LIBRCC */
++
++
++void rccPatchFree() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ rccUiFreeContext(uictx);
++ rccFreeContext(ctx);
++ rccUiFree();
++ rccFree();
++ rcc_initialized = 0;
++ }
++#endif /* HAVE_LIBRCC */
++}
++
++void rccPatchInit() {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) return;
++ rccInit();
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) {
++ rccLoad(ctx, "ftp");
++ rccInitDb4(ctx, NULL, 0);
++ rccUiInit();
++ uictx = rccUiCreateContext(ctx);
++ if (uictx) rcc_initialized = 1;
++ else {
++ rccUiFree();
++ rccFreeContext(ctx);
++ rccFree();
++ }
++ } else rccFree();
++#endif /* HAVE_LIBRCC */
++}
++
++
++#ifdef HAVE_LIBRCC
++static char *rcc_languages[RCC_MAX_LANGUAGES+1];
++static char *rcc_charsets[RCC_MAX_CHARSETS+1];
++#endif /* HAVE_LIBRCC */
++
++char **rccPatchGetLanguageList() {
++#ifdef HAVE_LIBRCC
++ unsigned int i, num;
++
++ if (rcc_initialized) {
++ num = rccGetLanguageNumber(ctx);
++ for (i=0;i<(num?num:1);i++)
++ rcc_languages[i] = (char*)rccUiGetLanguageName(uictx, (rcc_language_id)i);
++
++ rcc_languages[i] = NULL;
++ return rcc_languages;
++ }
++#endif /* HAVE_LIBRCC */
++
++ return NULL;
++
++}
++
++char **rccPatchGetCharsetList(int lid) {
++#ifdef HAVE_LIBRCC
++ unsigned int i, num;
++ rcc_language_config config;
++
++ if (rcc_initialized) {
++ config = rccGetConfig(ctx, (rcc_language_id)lid);
++ num = rccConfigGetCharsetNumber(config);
++ for (i=0;i<(num?num:1);i++)
++ rcc_charsets[i] = (char*)rccUiGetCharsetName(uictx, (rcc_language_id)lid, (rcc_class_id)0 /* first class, they are equal*/, (rcc_charset_id)i);
++
++ rcc_charsets[i] = NULL;
++ return rcc_charsets;
++ }
++#endif /* HAVE_LIBRCC */
++
++ return NULL;
++}
++
++char *rccPatchFrom(gftp_request * request, const char *str) {
++#ifdef HAVE_LIBRCC
++ rcc_class_id cl;
++ if (rcc_initialized) {
++ switch (request->protonum) {
++ case GFTP_FTP_NUM:
++ case GFTP_FTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FTP;
++ break;
++ case GFTP_HTTP_NUM:
++ case GFTP_HTTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_HTTP;
++ break;
++ case GFTP_SSHV2_NUM:
++ cl = (rcc_class_id)RCC_CLASS_SSH;
++ break;
++ case GFTP_LOCAL_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FS;
++ break;
++ default:
++ return NULL;
++ }
++
++ if ((cl == RCC_CLASS_FTP)||(cl == RCC_CLASS_HTTP)||(cl == RCC_CLASS_SSH)) {
++ if (request->language) rccSetLanguage(ctx, (rcc_language_id)request->language);
++ if (request->charset) rccSetCharset(ctx, cl, (rcc_charset_id)request->charset);
++ }
++
++ return rccRecodeFromCharset(ctx, cl, "UTF-8", str);
++ }
++#endif /* HAVE_LIBRCC */
++ return NULL;
++}
++
++char *rccPatchTo(gftp_request * request, const char *str) {
++#ifdef HAVE_LIBRCC
++ rcc_class_id cl;
++ if (rcc_initialized) {
++ switch (request->protonum) {
++ case GFTP_FTP_NUM:
++ case GFTP_FTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FTP;
++ break;
++ case GFTP_HTTP_NUM:
++ case GFTP_HTTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_HTTP;
++ break;
++ case GFTP_SSHV2_NUM:
++ cl = (rcc_class_id)RCC_CLASS_SSH;
++ break;
++ case GFTP_LOCAL_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FS;
++ break;
++ default:
++ return NULL;
++ }
++
++ if ((cl == RCC_CLASS_FTP)||(cl == RCC_CLASS_HTTP)||(cl == RCC_CLASS_SSH)) {
++ if (request->language) rccSetLanguage(ctx, (rcc_language_id)request->language);
++ if (request->charset) rccSetCharset(ctx, cl, (rcc_charset_id)request->charset);
++ }
++
++ return rccRecodeToCharset(ctx, cl, "UTF-8", str);
++ }
++#endif /* HAVE_LIBRCC */
++ return NULL;
++}
++
++char *rccPatch(gftp_request *from, gftp_request *to, const char *str) {
++ char *res, *ret;
++ const char *tmp;
++
++ if (from->protonum == to->protonum) return NULL;
++ printf("%u %u\n", from->protonum, to->protonum);
++
++ tmp = strstr(str, to->directory);
++ if (!tmp) tmp = str;
++
++ res = rccPatchTo(from, tmp);
++ if (!res) res = (char*)tmp;
++
++ ret = rccPatchFrom(to, res);
++ if (ret) {
++ if (res!=tmp) free(res);
++ } else {
++ if (res!=tmp) ret = res;
++ else return NULL;
++ }
++
++ if (tmp != str) {
++ res = (char*)malloc((strlen(ret) + (tmp-str) + 1)*sizeof(char));
++ if (res) {
++ memcpy(res, str, (tmp-str));
++ strcpy(res+(tmp-str), ret);
++ }
++ free(ret);
++ if (res) puts(res);
++ return res;
++ }
++
++ return ret;
++}
++
++char *rccPatchFromClass(gftp_request * request, int from, const char *str) {
++#ifdef HAVE_LIBRCC
++ rcc_class_id cl;
++ if (rcc_initialized) {
++ switch (request->protonum) {
++ case GFTP_FTP_NUM:
++ case GFTP_FTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FTP;
++ break;
++ case GFTP_HTTP_NUM:
++ case GFTP_HTTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_HTTP;
++ break;
++ case GFTP_SSHV2_NUM:
++ cl = (rcc_class_id)RCC_CLASS_SSH;
++ break;
++ case GFTP_LOCAL_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FS;
++ break;
++ default:
++ return NULL;
++ }
++
++ if ((cl == RCC_CLASS_FTP)||(cl == RCC_CLASS_HTTP)||(cl == RCC_CLASS_SSH)) {
++ if (request->language) rccSetLanguage(ctx, (rcc_language_id)request->language);
++ if (request->charset) rccSetCharset(ctx, cl, (rcc_charset_id)request->charset);
++ }
++
++ return rccRecode(ctx, (rcc_class_id)from, cl, str);
++ }
++#endif /* HAVE_LIBRCC */
++ return NULL;
++}
++
++char *rccPatchToClass(gftp_request * request, int to, const char *str) {
++#ifdef HAVE_LIBRCC
++ rcc_class_id cl;
++ if (rcc_initialized) {
++ switch (request->protonum) {
++ case GFTP_FTP_NUM:
++ case GFTP_FTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FTP;
++ break;
++ case GFTP_HTTP_NUM:
++ case GFTP_HTTPS_NUM:
++ cl = (rcc_class_id)RCC_CLASS_HTTP;
++ break;
++ case GFTP_SSHV2_NUM:
++ cl = (rcc_class_id)RCC_CLASS_SSH;
++ break;
++ case GFTP_LOCAL_NUM:
++ cl = (rcc_class_id)RCC_CLASS_FS;
++ break;
++ default:
++ return NULL;
++ }
++
++ if ((cl == RCC_CLASS_FTP)||(cl == RCC_CLASS_HTTP)||(cl == RCC_CLASS_SSH)) {
++ if (request->language) rccSetLanguage(ctx, (rcc_language_id)request->language);
++ if (request->charset) rccSetCharset(ctx, cl, (rcc_charset_id)request->charset);
++ }
++
++ return rccRecode(ctx, cl, (rcc_class_id)to, str);
++ }
++#endif /* HAVE_LIBRCC */
++ return NULL;
++}
++
++
++char *rccPatchUTF2OUT(const char *str) {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ return rccRecodeFromCharset(ctx, RCC_CLASS_OUT, "UTF-8", str);
++ }
++#endif /* HAVE_LIBRCC */
++ return NULL;
++}
++
++char *rccPatchOUT2UTF(const char *str) {
++#ifdef HAVE_LIBRCC
++ if (rcc_initialized) {
++ return rccRecodeToCharset(ctx, RCC_CLASS_OUT, "UTF-8", str);
++ }
++#endif /* HAVE_LIBRCC */
++ return NULL;
++}
+diff -dPNur gftp-2.0.18-orig/lib/rcc.h gftp-2.0.18-new/lib/rcc.h
+--- gftp-2.0.18-orig/lib/rcc.h 1970-01-01 01:00:00.000000000 +0100
++++ gftp-2.0.18-new/lib/rcc.h 2005-07-24 01:49:20.000000000 +0200
+@@ -0,0 +1,28 @@
++#ifndef _RCC_H
++#define _RCC_H
++
++#include "gftp.h"
++
++#define RCC_CLASS_FTP 0
++#define RCC_CLASS_HTTP 1
++#define RCC_CLASS_SSH 2
++#define RCC_CLASS_FS 3
++#define RCC_CLASS_OUT 4
++
++void rccPatchFree();
++void rccPatchInit();
++
++char **rccPatchGetLanguageList();
++char **rccPatchGetCharsetList(int lid);
++
++char *rccPatchFrom(gftp_request * request, const char *str);
++char *rccPatchTo(gftp_request * request, const char *str);
++char *rccPatch(gftp_request *from, gftp_request *to, const char *str);
++
++char *rccPatchFromClass(gftp_request * request, int from, const char *str);
++char *rccPatchToClass(gftp_request * request, int to, const char *str);
++
++char *rccPatchUTF2OUT(const char *str);
++char *rccPatchOUT2UTF(const char *str);
++
++#endif /* _RCC_H */
+diff -dPNur gftp-2.0.18-orig/src/gtk/gtkui.c gftp-2.0.18-new/src/gtk/gtkui.c
+--- gftp-2.0.18-orig/src/gtk/gtkui.c 2005-01-26 04:22:05.000000000 +0100
++++ gftp-2.0.18-new/src/gtk/gtkui.c 2005-07-24 00:40:47.000000000 +0200
+@@ -351,6 +351,8 @@
+ filelist = wdata->files;
+ templist = get_next_selection (templist, &filelist, &num);
+ curfle = filelist->data;
++ cdata->source_string = gftp_string_to_utf8(wdata->request, curfle->file);
++ if (!cdata->source_string)
+ cdata->source_string = g_strdup (curfle->file);
+
+ tempstr = g_strdup_printf (_("What would you like to rename %s to?"),
+diff -dPNur gftp-2.0.18-orig/src/gtk/Makefile.am gftp-2.0.18-new/src/gtk/Makefile.am
+--- gftp-2.0.18-orig/src/gtk/Makefile.am 2005-01-16 17:12:08.000000000 +0100
++++ gftp-2.0.18-new/src/gtk/Makefile.am 2005-07-23 19:16:26.000000000 +0200
+@@ -5,6 +5,6 @@
+ gftp_gtk_SOURCES = bookmarks.c chmod_dialog.c delete_dialog.c dnd.c \
+ gftp-gtk.c gtkui.c gtkui_transfer.c menu-items.c \
+ misc-gtk.c options_dialog.c transfer.c view_dialog.c
+-INCLUDES = @GTK_CFLAGS@ @PTHREAD_CFLAGS@ -I../../intl
+-LDADD = ../../lib/libgftp.a ../../lib/fsplib/libfsp.a ../uicommon/libgftpui.a @GTK_LIBS@ @PTHREAD_LIBS@ @EXTRA_LIBS@ @GTHREAD_LIBS@ @SSL_LIBS@ @LIBINTL@
++INCLUDES = @LIBRCC_INCLUDES@ @GTK_CFLAGS@ @PTHREAD_CFLAGS@ -I../../intl
++LDADD = ../../lib/libgftp.a ../../lib/fsplib/libfsp.a ../uicommon/libgftpui.a @GTK_LIBS@ @PTHREAD_LIBS@ @EXTRA_LIBS@ @GTHREAD_LIBS@ @SSL_LIBS@ @LIBINTL@ @LIBRCC_LIBS@
+ noinst_HEADERS = gftp-gtk.h
+diff -dPNur gftp-2.0.18-orig/src/text/gftp-text.c gftp-2.0.18-new/src/text/gftp-text.c
+--- gftp-2.0.18-orig/src/text/gftp-text.c 2005-01-25 02:11:00.000000000 +0100
++++ gftp-2.0.18-new/src/text/gftp-text.c 2005-07-24 01:54:25.000000000 +0200
+@@ -18,6 +18,7 @@
+ /*****************************************************************************/
+
+ #include "gftp-text.h"
++#include "../../lib/rcc.h"
+ static const char cvsid[] = "$Id: gftp-text.c,v 1.45 2005/01/25 01:11:00 masneyb Exp $";
+
+ unsigned int
+@@ -93,6 +94,7 @@
+ const char *string, ...)
+ {
+ char tempstr[512], *utf8_str = NULL, *outstr;
++ char *locale_str;
+ va_list argp;
+
+ g_return_if_fail (string != NULL);
+@@ -140,7 +142,14 @@
+ }
+
+ if (level == gftp_logging_misc_nolog)
++{
++ locale_str = rccPatchUTF2OUT(outstr);
++ if (locale_str) {
++ printf ("%s", locale_str);
++ free(locale_str);
++ } else
+ printf ("%s", outstr);
++}
+ else
+ gftp_text_write_string (request, outstr);
+
+@@ -158,6 +167,7 @@
+ gchar *locale_question;
+ sigset_t sig, sigsave;
+ char *pos, *termname;
++ char *tmp;
+ int singlechar;
+ FILE *infd;
+
+@@ -247,6 +257,9 @@
+ #else
+ char tempstr[512];
+ #endif
++ char *recoded = NULL;
++
++ rccPatchInit();
+
+ gftpui_common_init (&argc, &argv, gftp_text_log);
+
+@@ -298,9 +311,11 @@
+ g_snprintf (prompt, sizeof (prompt), "%sftp%s> ", GFTPUI_COMMON_COLOR_BLUE, GFTPUI_COMMON_COLOR_DEFAULT);
+ while ((tempstr = readline (prompt)))
+ {
++ if (recoded) free(recoded);
++ recoded = rccPatchFromClass(gftp_text_remreq, RCC_CLASS_OUT, tempstr);
+ if (gftpui_common_process_command (locuidata, gftp_text_locreq,
+ remuidata, gftp_text_remreq,
+- tempstr) == 0)
++ recoded?recoded:tempstr) == 0)
+ break;
+
+ add_history (tempstr);
+@@ -310,16 +325,20 @@
+ printf ("%sftp%s> ", GFTPUI_COMMON_COLOR_BLUE, GFTPUI_COMMON_COLOR_DEFAULT);
+ while (fgets (tempstr, sizeof (tempstr), stdin) != NULL)
+ {
++ if (recoded) free(recoded);
++ recoded = rccPatchFromClass(gftp_tetxt_remreq, RCC_CLASS_OUT, tempstr);
+ if (gftpui_common_process_command (locuidata, gftp_text_locreq,
+ remuidata, gftp_text_remreq,
+- tempstr) == 0)
++ recoded?recoded:tempstr) == 0)
+ break;
+
+ printf ("%sftp%s> ", GFTPUI_COMMON_COLOR_BLUE, GFTPUI_COMMON_COLOR_DEFAULT);
+ }
+ #endif
+-
++ if (recoded) free(recoded);
++
+ gftp_shutdown ();
++ rccPatchFree();
+ return (0);
+ }
+
+diff -dPNur gftp-2.0.18-orig/src/text/Makefile.am gftp-2.0.18-new/src/text/Makefile.am
+--- gftp-2.0.18-orig/src/text/Makefile.am 2005-01-16 17:12:00.000000000 +0100
++++ gftp-2.0.18-new/src/text/Makefile.am 2005-07-23 19:16:39.000000000 +0200
+@@ -3,7 +3,7 @@
+ bin_PROGRAMS = @GFTP_TEXT@
+ EXTRA_PROGRAMS = gftp-text
+ gftp_text_SOURCES=gftp-text.c textui.c
+-INCLUDES=@GLIB_CFLAGS@ -I../../intl
+-LDADD = ../../lib/libgftp.a ../../lib/fsplib/libfsp.a ../uicommon/libgftpui.a @GLIB_LIBS@ @EXTRA_LIBS@ @READLINE_LIBS@ @SSL_LIBS@ @LIBINTL@
++INCLUDES=@LIBRCC_INCLUDES@ @GLIB_CFLAGS@ -I../../intl
++LDADD = ../../lib/libgftp.a ../../lib/fsplib/libfsp.a ../uicommon/libgftpui.a @GLIB_LIBS@ @EXTRA_LIBS@ @READLINE_LIBS@ @SSL_LIBS@ @LIBINTL@ @LIBRCC_LIBS@
+ noinst_HEADERS=gftp-text.h
+ localedir=$(datadir)/locale
+diff -dPNur gftp-2.0.18-orig/lib/protocols.c gftp-2.0.18-new/lib/protocols.c
+--- gftp-2.0.18-orig/lib/protocols.c 2005-07-23 15:30:59.000000000 +0200
++++ gftp-2.0.18-new/lib/protocols.c 2005-07-24 00:56:12.000000000 +0200
+@@ -18,6 +18,8 @@
+ /*****************************************************************************/
+
+ #include "gftp.h"
++#include "rcc.h"
++
+ static const char cvsid[] = "$Id: protocols.c,v 1.125 2005/01/25 02:34:18 masneyb Exp $";
+
+ gftp_request *
+@@ -26,6 +28,8 @@
+ gftp_request *request;
+
+ request = g_malloc0 (sizeof (*request));
++ request->language = 0;
++ request->charset = 0;
+ request->datafd = -1;
+ request->cachefd = -1;
+ request->server_type = GFTP_DIRTYPE_OTHER;
+@@ -460,6 +469,9 @@
+ gftp_lookup_request_option (request, "remote_charsets", &tempstr);
+ if (*tempstr == '\0')
+ {
++ ret = rccPatchTo(request, str);
++ if (ret) return ret;
++
+ error = NULL;
+ if ((ret = g_locale_to_utf8 (str, -1, &bread, &bwrite, &error)) != NULL)
+ return (ret);
+@@ -531,6 +544,9 @@
+ gftp_lookup_request_option (request, "remote_charsets", &tempstr);
+ if (*tempstr == '\0')
+ {
++ ret = rccPatchFrom(request, str);
++ if (ret) return ret;
++
+ error = NULL;
+ if ((ret = g_locale_from_utf8 (str, -1, &bread, &bwrite, &error)) != NULL)
+ return (ret);
+@@ -919,6 +935,18 @@
+ }
+
+
++void
++gftp_set_language (gftp_request * request, int language) {
++ g_return_if_fail (request != NULL);
++ request->language = language;
++}
++
++void
++gftp_set_charset (gftp_request * request, int charset) {
++ g_return_if_fail (request != NULL);
++ request->charset = charset;
++}
++
+ void
+ gftp_set_hostname (gftp_request * request, const char *hostname)
+ {
+@@ -1056,6 +1084,7 @@
+ const char *newname)
+ {
+ char *utf8;
++ char *oldutf8;
+ int ret;
+
+ g_return_val_if_fail (request != NULL, GFTP_EFATAL);
+@@ -1064,13 +1093,13 @@
+ return (GFTP_EFATAL);
+
+ utf8 = gftp_string_from_utf8 (request, newname);
++ oldutf8 = gftp_string_from_utf8 (request, oldname);
++ ret = request->rename (request, oldutf8?oldutf8:oldname, utf8?utf8:newname);
++
+ if (utf8 != NULL)
+- {
+- ret = request->rename (request, oldname, utf8);
+ g_free (utf8);
+- }
+- else
+- ret = request->rename (request, oldname, newname);
++ if (oldutf8 != NULL)
++ g_free (oldutf8);
+
+ return (ret);
+ }
+@@ -1948,11 +1977,14 @@
+ (newsize = g_hash_table_lookup (dirhash, fle->file)) != NULL)
+ fle->startsize = *newsize;
+
+- if (transfer->toreq && fle->destfile == NULL)
++ if (transfer->toreq && fle->destfile == NULL) {
++ newname = rccPatch(transfer->fromreq, transfer->toreq, fle->file);
+ fle->destfile = gftp_build_path (transfer->toreq,
+ transfer->toreq->directory,
+- fle->file, NULL);
+-
++ newname?newname:fle->file, NULL);
++ if (newname) free(newname);
++ }
++
+ if (transfer->fromreq->directory != NULL &&
+ *transfer->fromreq->directory != '\0' &&
+ *fle->file != '/')
+@@ -2026,11 +2058,15 @@
+ return (curfle->size);
+ }
+
+- if (transfer->toreq && curfle->destfile == NULL)
++ if (transfer->toreq && curfle->destfile == NULL) {
++ newname = rccPatch(transfer->fromreq, transfer->toreq, curfle->file);
+ curfle->destfile = gftp_build_path (transfer->toreq,
+ transfer->toreq->directory,
+- curfle->file, NULL);
++ newname?newname:curfle->file, NULL);
++ if (newname) free(newname);
++ }
+
++
+ if (transfer->fromreq->directory != NULL &&
+ *transfer->fromreq->directory != '\0' && *curfle->file != '/')
+ {
+diff -dPNur gftp-2.0.18-orig/src/gtk/gftp-gtk.c gftp-2.0.18-new/src/gtk/gftp-gtk.c
+--- gftp-2.0.18-orig/src/gtk/gftp-gtk.c 2005-01-25 03:34:19.000000000 +0100
++++ gftp-2.0.18-new/src/gtk/gftp-gtk.c 2005-07-23 22:22:42.000000000 +0200
+@@ -18,6 +18,7 @@
+ /*****************************************************************************/
+
+ #include "gftp-gtk.h"
++#include "../../lib/rcc.h"
+ static const char cvsid[] = "$Id: gftp-gtk.c,v 1.66 2005/01/25 02:34:19 masneyb Exp $";
+
+ static GtkItemFactory *log_factory, *dl_factory;
+@@ -28,6 +29,7 @@
+ GtkWidget * stop_btn, * hostedit, * useredit, * passedit, * portedit, * logwdw,
+ * dlwdw, * protocol_menu, * optionmenu, * gftpui_command_widget,
+ * download_left_arrow, * upload_right_arrow, * openurl_btn;
++GtkWidget * language_menu, * charset_menu;
+ GtkTooltips * openurl_tooltip;
+ GtkAdjustment * logwdw_vadj;
+ #if GTK_MAJOR_VERSION > 1
+@@ -420,6 +422,42 @@
+ return (factory->widget);
+ }
+
++#ifdef HAVE_LIBRCC
++static int rcc_current_language = 0;
++static int rcc_current_charset = 0;
++
++static void rccCharsetCB(GtkWidget * w, gpointer item) {
++ rcc_current_charset = g_list_index(GTK_MENU_SHELL(charset_menu)->children, gtk_menu_get_active(GTK_MENU(charset_menu)));
++}
++
++static void rccLanguageCB(GtkWidget * w, gpointer item) {
++ GtkWidget *tempwid, *optionmenu;
++ unsigned int i;
++ char **langs;
++ gint cur;
++
++ cur = g_list_index(GTK_MENU_SHELL(language_menu)->children, gtk_menu_get_active(GTK_MENU(language_menu)));
++ optionmenu = gtk_menu_get_attach_widget(GTK_MENU(charset_menu));
++
++ rcc_current_language = cur;
++ rcc_current_charset = 0;
++
++ langs = rccPatchGetCharsetList(cur);
++ if (langs) {
++ charset_menu = gtk_menu_new ();
++ for (i=0;langs[i];i++) {
++ tempwid = gtk_menu_item_new_with_label (langs[i]);
++ gtk_object_set_user_data (GTK_OBJECT (tempwid), GINT_TO_POINTER(i));
++ gtk_menu_append (GTK_MENU (charset_menu), tempwid);
++ gtk_widget_show (tempwid);
++ }
++
++ gtk_option_menu_remove_menu (GTK_OPTION_MENU (optionmenu));
++ gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), charset_menu);
++ gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), 0);
++ }
++}
++#endif /* HAVE_LIBRCC */
+
+ static GtkWidget *
+ CreateConnectToolbar (GtkWidget * parent)
+@@ -430,14 +468,19 @@
+ {"application/x-rootwin-drop", 0, 1}
+ };
+ GtkWidget *toolbar, *box, *tempwid;
++ GtkWidget *vbox;
++ GtkWidget *tmpoptionmenu;
+ gftp_config_list_vars * tmplistvar;
+ char *default_protocol, *tempstr;
++ char **langs;
+ int i, num;
+
+ toolbar = gtk_handle_box_new ();
+
++ vbox = gtk_vbox_new (FALSE, 0);
+ box = gtk_hbox_new (FALSE, 4);
+- gtk_container_add (GTK_CONTAINER (toolbar), box);
++ gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0);
++ gtk_container_add (GTK_CONTAINER (toolbar), vbox);
+ gtk_container_border_width (GTK_CONTAINER (box), 5);
+
+ openurl_tooltip = gtk_tooltips_new ();
+@@ -548,6 +591,7 @@
+ optionmenu = gtk_option_menu_new ();
+ gtk_box_pack_start (GTK_BOX (tempwid), optionmenu, TRUE, FALSE, 0);
+
++
+ num = 0;
+ gftp_lookup_global_option ("default_protocol", &default_protocol);
+ protocol_menu = gtk_menu_new ();
+@@ -584,6 +628,61 @@
+ gtk_container_border_width (GTK_CONTAINER (stop_btn), 1);
+ gtk_box_pack_start (GTK_BOX (box), stop_btn, FALSE, FALSE, 0);
+
++#ifdef HAVE_LIBRCC
++ box = gtk_hbox_new (FALSE, 4);
++ gtk_box_pack_start(GTK_BOX(vbox), box, FALSE, FALSE, 0);
++ gtk_container_border_width (GTK_CONTAINER (box), 5);
++
++ langs = rccPatchGetCharsetList(0);
++ if (langs) {
++ tempwid = gtk_vbox_new (FALSE, 0);
++ gtk_box_pack_end (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
++
++ tmpoptionmenu = gtk_option_menu_new ();
++ gtk_box_pack_start (GTK_BOX (tempwid), tmpoptionmenu, TRUE, FALSE, 0);
++
++ charset_menu = gtk_menu_new ();
++ for (i=0;langs[i];i++) {
++ tempwid = gtk_menu_item_new_with_label (langs[i]);
++ gtk_signal_connect(GTK_OBJECT(tempwid), "activate", GTK_SIGNAL_FUNC(rccCharsetCB), NULL);
++ gtk_object_set_user_data (GTK_OBJECT (tempwid), GINT_TO_POINTER(i));
++ gtk_menu_append (GTK_MENU (charset_menu), tempwid);
++ gtk_widget_show (tempwid);
++ }
++
++ gtk_option_menu_set_menu (GTK_OPTION_MENU (tmpoptionmenu), charset_menu);
++ gtk_option_menu_set_history (GTK_OPTION_MENU (tmpoptionmenu), rcc_current_charset);
++
++ tempwid = gtk_label_new (_("Charset: "));
++ gtk_box_pack_end (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
++ }
++
++ langs = rccPatchGetLanguageList();
++ if (langs) {
++ tempwid = gtk_vbox_new (FALSE, 0);
++ gtk_box_pack_end (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
++
++ tmpoptionmenu = gtk_option_menu_new ();
++ gtk_box_pack_start (GTK_BOX (tempwid), tmpoptionmenu, TRUE, FALSE, 0);
++
++ language_menu = gtk_menu_new ();
++ for (i=0;langs[i];i++) {
++ tempwid = gtk_menu_item_new_with_label (langs[i]);
++ gtk_signal_connect(GTK_OBJECT(tempwid), "activate", GTK_SIGNAL_FUNC(rccLanguageCB), NULL);
++ gtk_object_set_user_data (GTK_OBJECT (tempwid), GINT_TO_POINTER(i));
++ gtk_menu_append (GTK_MENU (language_menu), tempwid);
++ gtk_widget_show (tempwid);
++ }
++
++ gtk_option_menu_set_menu (GTK_OPTION_MENU (tmpoptionmenu), language_menu);
++ gtk_option_menu_set_history (GTK_OPTION_MENU (tmpoptionmenu), rcc_current_language);
++
++ tempwid = gtk_label_new (_("Language: "));
++ gtk_box_pack_end (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
++ }
++#endif /* HAVE_LIBRCC */
++
++
+ gtk_widget_grab_focus (GTK_COMBO (hostedit)->entry);
+
+ return (toolbar);
+@@ -1132,6 +1231,16 @@
+ add_history (current_wdata->combo, current_wdata->history,
+ current_wdata->histlen, current_wdata->request->directory);
+
++#ifdef HAVE_LIBRCC
++ tempwid = gtk_menu_get_active (GTK_MENU (language_menu));
++ num = GPOINTER_TO_INT (gtk_object_get_user_data (GTK_OBJECT (tempwid)));
++ gftp_set_language(current_wdata->request, num);
++
++ tempwid = gtk_menu_get_active (GTK_MENU (charset_menu));
++ num = GPOINTER_TO_INT (gtk_object_get_user_data (GTK_OBJECT (tempwid)));
++ gftp_set_charset(current_wdata->request, num);
++#endif /* HAVE_LIBRCC */
++
+ ftp_connect (current_wdata, current_wdata->request, 1);
+ }
+
+@@ -1270,6 +1379,8 @@
+ {
+ GtkWidget *window, *ui;
+
++ rccPatchInit();
++
+ /* We override the read color functions because we are using a GdkColor
+ structures to store the color. If I put this in lib/config_file.c, then
+ the core library would be dependant on Gtk+ being present */
+@@ -1336,6 +1447,8 @@
+ GDK_THREADS_ENTER ();
+ gtk_main ();
+ GDK_THREADS_LEAVE ();
++
++ rccPatchFree();
+
+ return (0);
+ }
diff --git a/net-ftp/gftp/gftp-2.0.18-r5.ebuild b/net-ftp/gftp/gftp-2.0.18-r5.ebuild
new file mode 100644
index 0000000..0906ada
--- /dev/null
+++ b/net-ftp/gftp/gftp-2.0.18-r5.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-ftp/gftp/gftp-2.0.18-r4.ebuild,v 1.1 2006/01/22 05:44:32 compnerd Exp $
+
+inherit eutils
+
+DESCRIPTION="Gnome based FTP Client"
+SRC_URI="http://www.gftp.org/${P}.tar.bz2"
+HOMEPAGE="http://www.gftp.org"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~ppc ~ppc64 ~sparc x86"
+IUSE="gtk ssl rcc"
+
+RDEPEND=">=dev-libs/glib-2
+ sys-devel/gettext
+ sys-libs/ncurses
+ sys-libs/readline
+ gtk? ( >=x11-libs/gtk+-2 )
+ ssl? ( dev-libs/openssl )
+ rcc? ( app-i18n/librcc )"
+
+DEPEND="${RDEPEND}
+ >=dev-util/pkgconfig-0.9"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ # patch to allow fetching of ssh2 files
+ # that are read-only, see bug #91269 and upstream link.
+ epatch ${FILESDIR}/${P}-ssh2-read.patch
+
+#SDS
+ epatch ${FILESDIR}/${P}-fix_gtk1.patch
+ if use ssl; then
+ epatch ${FILESDIR}/gftp-ds-rcc.patch
+ aclocal
+ automake
+ autoconf
+ fi
+#EDS
+}
+
+src_compile() {
+ econf $(use_enable gtk gtkport) $(use_enable ssl) || die "configure failed"
+ emake || die "make failed"
+}
+
+src_install() {
+ make DESTDIR=${D} install || die "install failed"
+ dodoc ChangeLog README* THANKS TODO docs/USERS-GUIDE
+}
diff --git a/net-im/telegram-desktop-bin/Manifest b/net-im/telegram-desktop-bin/Manifest
new file mode 100644
index 0000000..e04a327
--- /dev/null
+++ b/net-im/telegram-desktop-bin/Manifest
@@ -0,0 +1,4 @@
+DIST tdesktop-1.0.27.tar.gz 15378060 SHA256 6811114e8051a6bca6b37898fe288e8cbce82af8e0121f61785971772789b6f5 SHA512 5b7a7079561eb759a3108bfb961c9161f5ec729bfc80ade25b10a1d6874fbf31a6a5f2dda443671c9f855c442c7dc92365d9d919c97e2222d2a64d6e2bd421a5 WHIRLPOOL 5087db39839e0b062d411532f2a166f3802a8eedddba8d1236f58a2a3221d605118b7606c7d3c8af081969192b63108c7e568ce758ff522ff607b1dee3b36f84
+DIST tsetup.1.0.27.tar.xz 28969028 SHA256 bcd78e93e6fee723ff508f2e393cfa76cc227589daf30fe32d0359cb6033a4ab SHA512 9168626f500dc90446f559fb88f91b09ec09d4a0e7b515aa0fcc1784b48fb35bdb873e411bbc43f7feac4426bb7ba9c4495c029c31d0e1914c5938f4623f21f7 WHIRLPOOL 78cdd9a68befc6131a9246467eeebec26f5c390f793526a6b7305b445a84a14d5fac6bb925ac51b30bfa6e4944dc819963efdbc91a836ab2c739985ec6e5fa57
+DIST tsetup32.1.0.27.tar.xz 29759552 SHA256 0112c1c553b566e18a1e003dc9e62916d073e3a41f6b723e43e9b8095077d2ac SHA512 e7d9c43d2fd5e4149d7053b8828a7aa37551355688bfc6d9d79acd9adb3c1c0138ed7298a53a259af03a8e5cf161f15e7fdf7dd4925017fb65b861de8bfbea8c WHIRLPOOL a35426c71856a9a577d8a79a01940c34fc68c9ff1e1ee997648eceb0c425cd0a392969a159e1c6d24f263509a9f83359eb536916debe16ea5b08ef9323f30f83
+EBUILD telegram-desktop-bin-1.0.27.ebuild 1299 SHA256 a9578e38ec96fc27ef4f90aca5ebddf087ba3f5261622591a9d9a9fef92685d3 SHA512 f63d0934ea5067c9f8f40b64646eba269f1ee949cecc91345abb740795b258e7bd35d892b398707564d0ab2cc2ea12311b11523d0c233a66fc2580ea1d09df5d WHIRLPOOL 150e8093cdefe17e10453e1dacd38c30009cab59567f009bf76e5285aae01b8e431c1b3e30727a85bfe265e8a18ab993bcea948229091e8c3bf088603bf8b2a8
diff --git a/net-im/telegram-desktop-bin/telegram-desktop-bin-1.0.27.ebuild b/net-im/telegram-desktop-bin/telegram-desktop-bin-1.0.27.ebuild
new file mode 100644
index 0000000..5858bac
--- /dev/null
+++ b/net-im/telegram-desktop-bin/telegram-desktop-bin-1.0.27.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils gnome2-utils xdg
+
+DESCRIPTION="Official desktop client for Telegram (binary package)"
+HOMEPAGE="https://desktop.telegram.org"
+SRC_URI="
+ https://github.com/telegramdesktop/tdesktop/archive/v${PV}.tar.gz -> tdesktop-${PV}.tar.gz
+ amd64? ( https://updates.tdesktop.com/tlinux/tsetup.${PV}.tar.xz )
+ x86? ( https://updates.tdesktop.com/tlinux32/tsetup32.${PV}.tar.xz )
+"
+
+LICENSE="telegram"
+SLOT="0"
+KEYWORDS="-* ~amd64 ~x86"
+
+QA_PREBUILT="usr/bin/telegram-desktop"
+
+RDEPEND="
+ dev-libs/glib:2
+ dev-libs/gobject-introspection
+ >=sys-apps/dbus-1.4.20
+ x11-libs/libX11
+ >=x11-libs/libxcb-1.10[xkb]
+"
+DEPEND=""
+
+S="${WORKDIR}/Telegram"
+
+src_install() {
+ newbin "${S}/Telegram" telegram-desktop
+
+ local icon_size
+ for icon_size in 16 32 48 64 128 256 512; do
+ newicon -s "${icon_size}" \
+ "${WORKDIR}/tdesktop-${PV}/Telegram/Resources/art/icon${icon_size}.png" \
+ telegram-desktop.png
+ done
+
+ newmenu "${WORKDIR}/tdesktop-${PV}"/lib/xdg/telegramdesktop.desktop telegram-desktop.desktop
+}
+
+pkg_preinst() {
+ xdg_pkg_preinst
+ gnome2_icon_savelist
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+ gnome2_icon_cache_update
+}
+
+pkg_postrm() {
+ xdg_pkg_postrm
+ gnome2_icon_cache_update
+}
diff --git a/net-libs/webkit-gtk/Manifest b/net-libs/webkit-gtk/Manifest
new file mode 100644
index 0000000..dadd2af
--- /dev/null
+++ b/net-libs/webkit-gtk/Manifest
@@ -0,0 +1,16 @@
+AUX webkit-gtk-1.11.90-gtk-docize-fix.patch 426 SHA256 20d26df63afbdbf829974597bf53a9657007e9940431ffa0020f1d5fa5d22b4f SHA512 e35cc255e36742519b4f26b60d8e704eb3e0e66e8e13599cadae6fe445a3a87a2c6c65b6746c4d39f1ab11e7eb79b0f63a5fc9d5af5d7fa8907b224b852e3b32 WHIRLPOOL a91ba71b8b4fa2f1ff5de1633fa477bc1f45de37f3bbd212af1ecf4b6298c5454c199cd89f6602854978d4ae6a551316eb96c4f90c82a0c07018e94ac3025e43
+AUX webkit-gtk-1.6.1-darwin-quartz.patch 1516 SHA256 34ad751c33e868d85b41e06ecbd085b61a81c42bd52063bada52bc59b9e05a23 SHA512 ca8c80d06aa93c07d658ebf3433f5fdee9225616740a075f5606df87e3b90a83b2c492777a8e30255cdd4f11f889be789544ac1fc4a39056e1929a72720347ea WHIRLPOOL 558250f3cf6de4d511a26afb0aeacc04b7049b3d0499362d320c035acac20932d7c16f6ff99d83833498296e3a21b5e2bab985b1ee5fca709754b582195a0fd1
+AUX webkit-gtk-2.2.5-hppa-platform.patch 530 SHA256 9a2b8311a89aa3500d19d2425c0f12f67c1457c67ecaa322511170461c4c6be7 SHA512 168d4f8acddf4a5fa6ddc3661ef3ec344824c854db036b279d38d526b6025cfbb8bbd15bc64ddd846876749823796ca7d05e4083cf35a744d46b00cfd5179ae1 WHIRLPOOL 5fc8070bf07eef199578db5802452b4443ee3a00b555325b430a3cfd923a0cbb827497907462cb224b07f2f1713d65a26af4adf24b3dca59cb9040dbd6227f92
+AUX webkit-gtk-2.2.5-ia64-platform.patch 331 SHA256 1ac5327f4f190bc4cbee9e62d4a2805879bbffd914ba75be17afd1aa245e6693 SHA512 dae3cde801d2d29c61abb64c00bf33ac1f7080dd2085cc9a1520c8606ef65538ccee9b1e4c4c16a3dba551acd035542f80b6e808ae5090bb883c85ecfa7ac36e WHIRLPOOL d9ca8172f685f515bb22a38d269e73f1e0fdcbf487bb83557f41649cd9ff5883d1fe0827aef3c753d975895252db3e3fa5eef3f72b43a6557492effd5db10072
+AUX webkit-gtk-2.4.1-ia64-malloc.patch 807 SHA256 8e01dee48af7e8e0d24729dd9b99e88b47125b5f91d07df29d579785e60d398d SHA512 d9e7a792861ff30137072eba6b5b80e7b37e47e7302bf1cd56027b5c30aea3fd215891f6272d85b80e98c826b3216d0701fe92f06b76e7d1fb860028d7a701c0 WHIRLPOOL 7cf769d9752cf800f72e76233ef299e2da8c13f427cd8d312d47d76282091f06ec32a618dda9d0bacedbc5dcf8aa4289ce9ce089cdbb90be28deeb75e449a925
+AUX webkit-gtk-2.4.11-video-web-audio.patch 520 SHA256 103db2178fb3bc6db9706dc2874c1a68d748133082330a6f6cca909d26fa0dac SHA512 df7b54fed95d0132bbed22fa90f3523b94a70940ac33acefc46aa0c59b604ee36d3350035fe8bca78ba9a7ab45527d0c1afde8160e4d408eb8a7ee07048bd8d1 WHIRLPOOL af4cad5c7da3fca085e588dadf093ae3155351b81dbf2cfe8201c93515b4e23af08e62049f836dec960fe25297a786e379cd51c386ca9c605a8812cc9e5a6506
+AUX webkit-gtk-2.4.4-atomic-ppc.patch 1294 SHA256 64fc5b9e019fb759cfcf2dc65d7bf0dfcd2cff6469049098d84e180bcf4fbfcc SHA512 80c5c158eba950e56e6a3c046cc3325efcdeab0ad1add140bae1b08a9620553e2166f5df7b0a586814cd49add430dfd15b6675f1467532f294120bdd8852d067 WHIRLPOOL 310ac0d0d04156f681e9039634c2f3ca02c358f70dec091f4c1c221653eef97dcea8c454ac64d3c3b326c47687c3b4e7d168d2fba6813b28ae6c450891849723
+AUX webkit-gtk-2.4.4-jpeg-9a.patch 1262 SHA256 b442a8021ec5bfc751708fe6409baff6ae8576d7fb49da95245b6ba2c1557536 SHA512 8bfc1255f083b7d4cdbe5e03d7a006efae976988847f36c27758589a2410cf6b84e0c81a3c9673ec9b552e34af92e6d833a8db5413c03d0c85c3d82f4628c583 WHIRLPOOL 25e62e4c95b99bad82a45a82091c6ac7a7cbe02391b4873d383649413fa6eea236130a62aef7ba1f0a24f172554e9b6d650f7bfeb41abb96b8387ef85f807932
+AUX webkit-gtk-2.4.7-disable-webgl.patch 442 SHA256 6fb78d5f94806ddb976ceb076e623a2fd67e80111d624a2b3c01fde2fbbcd64e SHA512 742854749e674b3fec33652709921630a5fd3d7afd10446b3121a8cf94fb4fef70cc4de6ffe1a08143f518fd76aa05d0f4b54a041192cbc8eb9fbd5766faa5b8 WHIRLPOOL ba3f9b9dbee12f6dae05db9f343a46fd7d182d377e1a951e1785a5aff9a046d057bbf85821642e948c15a084e69d01054fe5632d7460892b196334adea582e72
+AUX webkit-gtk-2.4.9-gcc-6.patch 1890 SHA256 d0d82c1a1e955e03dd7667e351d99da485d7297acf378e715820202e48d4088e SHA512 cfcfe95b08d503456b1ea6e1770dd4ca4cd61f613ef76962cd01bc4826fbb25aed04834f820da987fd1c80941b90da73086ec5e7e19285e54082f5e90598fd9c WHIRLPOOL 1ebbeb9564978b3ddf4488c9fe72113da0ff10a0ba8c3bcd418b913a936ebe09da907e86714b7419f2746af1648ab786850559c4a5c6a0f1b51ed98e9aab0334
+AUX webkit-gtk-2.8.5-fix-alpha-build.patch 914 SHA256 aa6617505fe9342153ba9442ea109d880ca6c3315777c57ab599f67515e2a9f7 SHA512 c3599c21dbcc709cf1bbc56eafdff8f8d30d65732fff73e601a828b397523d9a0cec96a4e7940ad1b4b3d9b4711f6d5f2935dcd34cac9adec63b73401638fd5e WHIRLPOOL 68a39ccf49e7719393f14cd5d53497148527bd697b010378bdec4cdefb21c5fc7ce5081ce10b412c61390a82e45fa44d9d34aa7f223c51ad15eb1d0288ccbe60
+AUX webkit-gtk-2.8.5-fix-ia64-build.patch 663 SHA256 d076739707de117fbc9aebc684c4a43024e1673e4c30fdfa3be529331f0c1f78 SHA512 ce8dbe7f2bacfc6d1ad70d39d80447ab90e6daf63bc1dc4a49c406255f76eff090f79e6076ebc349d69193b72a821fa6591692cf74a28e529f8db95cf86358fc WHIRLPOOL adf8e11ee3060bcba606cf17673d06d9c98034a71f6a7406832fabf461c4697abcd0c3d4cdb8d8298caf221c797e0732a9f865d761fcf05753a1dfd96dfd3d82
+AUX webkit-gtk-2.8.5-webkit2gtkinjectedbundle-j1.patch 880 SHA256 411a4238c2e863b60744287ad645f1e3e0cddd33e895f4dfb1e1c5cfd9f48765 SHA512 7150400387f5edd3a647359ef1d864634c25d0a7dad043c1b0734fb44d133f59bbc0ce065e59bc3abab0082272ac54c1b40752e06041e5e36c11f502a9734a62 WHIRLPOOL 470ea2f6228878ddae55cec72b667f14f56d5f7017ea1cce123dcc5da41dd3fd589214b722e5a85bd81f2a14445a759c55366826b82e3801d8e40ef2ba9c6826
+DIST webkitgtk-2.4.11.tar.xz 9869100 SHA256 588aea051bfbacced27fdfe0335a957dca839ebe36aa548df39c7bbafdb65bf7 SHA512 2e2cf01a52b8593765a0a3c2d7f0ad306121660019eb402226bd2826c7d4666dab4e91ca6ccbd29abe0ad3993549f256ed1ab88de22e9c8516d5f40a4edd6bfb WHIRLPOOL de86c4abfb22aacbf62163d0398158931c9cf6ab628547d3b30e613f0505d67c85c3200f7db96500e7c2b35f640cdaa7f501346fc13f492c9439dff4056849a3
+EBUILD webkit-gtk-2.4.11-r1.ebuild 9132 SHA256 a3a30960398c4af650f2d87b105f1d6f919824b757b73e9ada063ece4d2e8379 SHA512 a79f5f8c786e47c1d9656a81032967c3eb664aee748f94e4472224aea8eaa1974629298e790eff5adb51c9b78e0788b9a11b9c05c30c1ef192253a8169473d09 WHIRLPOOL 30da6741b5ebe02aafe661152a5b8e7ad1e7b99e9c9592cb23b8b41cf26ef1b55223698b3576aed8d0b10651ea3b37035cfa3c19b35e5b3bdcd5098025e7c7cf
+EBUILD webkit-gtk-2.4.11-r200.ebuild 8539 SHA256 bb94c0b67dd175199782261066d51177c40d98acae7611a0900aa48ac9d7a30c SHA512 d604cd83d0531a0fda025358c729ccf58f5be6aa1c23531561de498b271e6926da731846a630aa3832d264c989c04e58cf86ea5c53a5ca7ccff62658341ce49a WHIRLPOOL ecd8a3b6374238fcf1ef26f0883312c9bba9a0a237fc0acd831c8b45eba5260d3b1b9366123f9f46d27b56b1d9bc217d9ab7724a4d49330b50af87bbe760b1b6
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-1.11.90-gtk-docize-fix.patch b/net-libs/webkit-gtk/files/webkit-gtk-1.11.90-gtk-docize-fix.patch
new file mode 100644
index 0000000..c94f545
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-1.11.90-gtk-docize-fix.patch
@@ -0,0 +1,10 @@
+--- a/configure.ac.old 2013-03-02 09:22:53.791750644 +0200
++++ b/configure.ac 2013-03-02 09:24:56.725213764 +0200
+@@ -24,6 +24,7 @@
+ m4_include([Source/autotools/SetupLibtool.m4])
+ m4_include([Source/autotools/ReadCommandLineArguments.m4])
+ m4_include([Source/autotools/FindDependencies.m4])
++GTK_DOC_CHECK([1.10])
+ m4_include([Source/autotools/SetupCompilerFlags.m4])
+ m4_include([Source/autotools/SetupAutoconfHeader.m4])
+
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-1.6.1-darwin-quartz.patch b/net-libs/webkit-gtk/files/webkit-gtk-1.6.1-darwin-quartz.patch
new file mode 100644
index 0000000..5ad357e
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-1.6.1-darwin-quartz.patch
@@ -0,0 +1,67 @@
+Original from:
+http://trac.macports.org/browser/trunk/dports/www/webkit-gtk/files/patch-quartz-WebCore-plugins-gtk-gtkxtbin.c.diff?format=txt
+http://trac.macports.org/browser/trunk/dports/www/webkit-gtk/files/patch-quartz-WebCore-plugins-gtk-PluginViewGtk.cpp.diff?format=txt
+
+Adapted for 1.6.1
+
+--- Source/WebCore/plugins/gtk/PluginViewGtk.cpp
++++ Source/WebCore/plugins/gtk/PluginViewGtk.cpp
+@@ -70,6 +70,8 @@
+ #endif
+ #include <gtk/gtk.h>
+
++#undef XP_UNIX
++
+ #if defined(XP_UNIX)
+ #include "RefPtrCairo.h"
+ #include "gtk2xtbin.h"
+@@ -439,9 +441,9 @@
+ event->setDefaultHandled();
+ }
+
+-#if defined(XP_UNIX)
+ void PluginView::handleFocusInEvent()
+ {
++#if defined(XP_UNIX)
+ if (!m_isStarted || m_status != PluginStatusLoadedSuccessfully)
+ return;
+
+@@ -454,10 +456,12 @@
+ event.detail = NotifyDetailNone;
+
+ dispatchNPEvent(npEvent);
++#endif
+ }
+
+ void PluginView::handleFocusOutEvent()
+ {
++#if defined(XP_UNIX)
+ if (!m_isStarted || m_status != PluginStatusLoadedSuccessfully)
+ return;
+
+@@ -470,8 +474,8 @@
+ event.detail = NotifyDetailNone;
+
+ dispatchNPEvent(npEvent);
+-}
+ #endif
++}
+
+ void PluginView::setParent(ScrollView* parent)
+ {
+--- Source/WebCore/plugins/gtk/gtk2xtbin.c
++++ Source/WebCore/plugins/gtk/gtk2xtbin.c
+@@ -41,7 +41,7 @@
+ * The GtkXtBin widget allows for Xt toolkit code to be used
+ * inside a GTK application.
+ */
+-
++#if 0
+ #include "GtkVersioning.h"
+ #include "xembed.h"
+ #include "gtk2xtbin.h"
+@@ -966,3 +966,4 @@
+
+ return;
+ }
++#endif
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.2.5-hppa-platform.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.2.5-hppa-platform.patch
new file mode 100644
index 0000000..8aee778
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.2.5-hppa-platform.patch
@@ -0,0 +1,20 @@
+Index: webkitgtk/Source/WTF/wtf/Platform.h
+===================================================================
+--- webkitgtk.orig/Source/WTF/wtf/Platform.h
++++ webkitgtk/Source/WTF/wtf/Platform.h
+@@ -72,6 +72,15 @@
+ #define WTF_CPU_BIG_ENDIAN 1
+ #endif
+
++/* CPU(HPPA) - HP PARISC */
++#if defined(__hppa__)
++#define WTF_CPU_HPPA 1
++#define WTF_CPU_BIG_ENDIAN 1
++#define ENABLE_JIT 0
++#define ENABLE_YARR_JIT 0
++#define ENABLE_ASSEMBLER 0
++#endif
++
+ /* CPU(IA64) - Itanium / IA-64 */
+ #if defined(__ia64__)
+ #define WTF_CPU_IA64 1
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.2.5-ia64-platform.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.2.5-ia64-platform.patch
new file mode 100644
index 0000000..a63e9e8
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.2.5-ia64-platform.patch
@@ -0,0 +1,12 @@
+--- a/Source/WTF/wtf/Platform.h 2014-02-25 00:33:16.561606810 +0100
++++ b/Source/WTF/wtf/Platform.h 2014-02-25 00:49:52.895512955 +0100
+@@ -79,6 +79,9 @@
+ #if !defined(__LP64__)
+ #define WTF_CPU_IA64_32 1
+ #endif
++#define ENABLE_JIT 0
++#define ENABLE_YARR_JIT 0
++#define ENABLE_ASSEMBLER 0
+ #endif
+
+ /* CPU(MIPS) - MIPS 32-bit */
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.4.1-ia64-malloc.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.4.1-ia64-malloc.patch
new file mode 100644
index 0000000..8c387ff
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.4.1-ia64-malloc.patch
@@ -0,0 +1,20 @@
+Description: Fix wide pointer issues on ia64 (closes: #642750).
+Author: Stephan Schreiber <info@fs-driver.org>
+Index: webkitgtk/Source/WTF/wtf/Platform.h
+===================================================================
+--- webkitgtk.orig/Source/WTF/wtf/Platform.h
++++ webkitgtk/Source/WTF/wtf/Platform.h
+@@ -705,6 +705,13 @@
+ #define ENABLE_JIT 1
+ #endif
+
++/* FIXME: The fast malloc implementation is broken on Itanium / IA64 because
++ some memory barriers are missing in the thread-unsafe code around the
++ pagemap_cache_ object. */
++#if CPU(IA64) || CPU(IA64_32)
++#define USE_SYSTEM_MALLOC 1
++#endif
++
+ /* The JIT is enabled by default on all x86, x86-64, ARM & MIPS platforms except Win64. */
+ #if !defined(ENABLE_JIT) \
+ && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(ARM64) || CPU(MIPS)) \
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.4.11-video-web-audio.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.4.11-video-web-audio.patch
new file mode 100644
index 0000000..ead696c
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.4.11-video-web-audio.patch
@@ -0,0 +1,11 @@
+diff -purN a/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp b/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp
+--- a/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp 2016-03-14 08:09:01.000000000 +0100
++++ b/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp 2016-04-10 19:43:00.215345381 +0200
+@@ -40,6 +40,7 @@
+ #include "PaintInfo.h"
+ #include "PlatformContextCairo.h"
+ #include "RenderElement.h"
++#include "RenderBox.h"
+ #include "TextDirection.h"
+ #include "UserAgentStyleSheets.h"
+ #include "WidgetRenderingContext.h"
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.4.4-atomic-ppc.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.4.4-atomic-ppc.patch
new file mode 100644
index 0000000..c160376
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.4.4-atomic-ppc.patch
@@ -0,0 +1,32 @@
+$OpenBSD: patch-Source_WebKit2_Platform_IPC_Connection_h,v 1.2 2014/07/14 21:13:31 ajacoutot Exp $
+https://bugs.webkit.org/show_bug.cgi?id=130837
+--- a/Source/WebKit2/Platform/IPC/Connection.h.orig Fri Jul 4 11:06:55 2014
++++ b/Source/WebKit2/Platform/IPC/Connection.h Mon Jul 14 19:31:35 2014
+@@ -216,7 +216,11 @@ class Connection : public ThreadSafeRefCounted<Connect
+
+ Client* m_client;
+ bool m_isServer;
++#if CPU(PPC)
++ uint64_t m_syncRequestID;
++#else
+ std::atomic<uint64_t> m_syncRequestID;
++#endif
+
+ bool m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage;
+ bool m_shouldExitOnSyncMessageSendFailure;
+$OpenBSD: patch-Source_WebKit2_UIProcess_StatisticsRequest_cpp,v 1.3 2014/03/27 22:03:48 landry Exp $
+https://bugs.webkit.org/show_bug.cgi?id=130837
+--- a/Source/WebKit2/UIProcess/StatisticsRequest.cpp.orig Thu Mar 27 21:13:49 2014
++++ b/Source/WebKit2/UIProcess/StatisticsRequest.cpp Thu Mar 27 21:14:23 2014
+@@ -44,7 +44,11 @@ StatisticsRequest::~StatisticsRequest()
+
+ uint64_t StatisticsRequest::addOutstandingRequest()
+ {
++#if CPU(PPC)
++ static int64_t uniqueRequestID;
++#else
+ static std::atomic<int64_t> uniqueRequestID;
++#endif
+
+ uint64_t requestID = ++uniqueRequestID;
+ m_outstandingRequests.add(requestID);
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.4.4-jpeg-9a.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.4.4-jpeg-9a.patch
new file mode 100644
index 0000000..cded605
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.4.4-jpeg-9a.patch
@@ -0,0 +1,30 @@
+http://bugs.gentoo.org/481688
+http://trac.webkit.org/changeset/166490/trunk/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
+
+--- a/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
++++ b/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
+@@ -334,5 +334,5 @@
+ case JPEG_HEADER:
+ // Read file parameters with jpeg_read_header().
+- if (jpeg_read_header(&m_info, true) == JPEG_SUSPENDED)
++ if (jpeg_read_header(&m_info, TRUE) == JPEG_SUSPENDED)
+ return false; // I/O suspension.
+
+@@ -420,7 +420,7 @@
+ m_info.dct_method = dctMethod();
+ m_info.dither_mode = ditherMode();
+- m_info.do_fancy_upsampling = doFancyUpsampling();
+- m_info.enable_2pass_quant = false;
+- m_info.do_block_smoothing = true;
++ m_info.do_fancy_upsampling = doFancyUpsampling() ? TRUE : FALSE;
++ m_info.enable_2pass_quant = FALSE;
++ m_info.do_block_smoothing = TRUE;
+
+ // Start decompressor.
+@@ -573,5 +573,5 @@
+ // called, then we have hit the end of the buffer. A return value of false
+ // indicates that we have no data to supply yet.
+- return false;
++ return FALSE;
+ }
+
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.4.7-disable-webgl.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.4.7-disable-webgl.patch
new file mode 100644
index 0000000..67760e2
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.4.7-disable-webgl.patch
@@ -0,0 +1,11 @@
+--- webkitgtk-2.4.6.orig/Source/WebCore/platform/graphics/OpenGLShims.cpp 2014-09-26 11:40:44.000000000 +0400
++++ webkitgtk-2.4.6.orig/Source/WebCore/platform/graphics/OpenGLShims.cpp 2014-10-13 15:38:38.496444600 +0400
+@@ -17,7 +17,7 @@
+ */
+
+ #include "config.h"
+-#if USE(3D_GRAPHICS) || defined(QT_OPENGL_SHIMS)
++#if USE(3D_GRAPHICS) || defined(QT_OPENGL_SHIMS) || USE(EGL) || USE(GLX)
+
+ #define DISABLE_SHIMS
+ #include "OpenGLShims.h"
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.4.9-gcc-6.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.4.9-gcc-6.patch
new file mode 100644
index 0000000..bd8507c
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.4.9-gcc-6.patch
@@ -0,0 +1,29 @@
+Fedora patch fixes build failure for gcc-6 (abs/fabs ambifuity)
+https://bugs.webkit.org/show_bug.cgi?id=159124#c1
+https://bugs.gentoo.org/show_bug.cgi?id=592048
+diff -Nur webkitgtk-2.4.9.orig/Source/WebCore/platform/gtk/GtkClickCounter.cpp webkitgtk-2.4.9/Source/WebCore/platform/gtk/GtkClickCounter.cpp
+--- webkitgtk-2.4.9.orig/Source/WebCore/platform/gtk/GtkClickCounter.cpp 2015-05-20 03:03:24.000000000 -0600
++++ webkitgtk-2.4.9/Source/WebCore/platform/gtk/GtkClickCounter.cpp 2016-02-07 11:30:42.392686308 -0700
+@@ -85,8 +85,8 @@
+ guint32 eventTime = getEventTime(event);
+
+ if ((event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS)
+- || ((abs(buttonEvent->x - m_previousClickPoint.x()) < doubleClickDistance)
+- && (abs(buttonEvent->y - m_previousClickPoint.y()) < doubleClickDistance)
++ || ((fabs(buttonEvent->x - m_previousClickPoint.x()) < doubleClickDistance)
++ && (fabs(buttonEvent->y - m_previousClickPoint.y()) < doubleClickDistance)
+ && (eventTime - m_previousClickTime < static_cast<guint>(doubleClickTime))
+ && (buttonEvent->button == m_previousClickButton)))
+ m_currentClickCount++;
+diff -Nur webkitgtk-2.4.9.orig/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp webkitgtk-2.4.9/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp
+--- webkitgtk-2.4.9.orig/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp 2015-05-20 03:03:24.000000000 -0600
++++ webkitgtk-2.4.9/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp 2016-02-07 11:49:36.384691005 -0700
+@@ -659,7 +659,7 @@
+ if (!std::isfinite(time))
+ return String::fromUTF8(_("indefinite time"));
+
+- int seconds = static_cast<int>(abs(time));
++ int seconds = static_cast<int>(fabs(time));
+ int days = seconds / (60 * 60 * 24);
+ int hours = seconds / (60 * 60);
+ int minutes = (seconds / 60) % 60;
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-alpha-build.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-alpha-build.patch
new file mode 100644
index 0000000..3817bce
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-alpha-build.patch
@@ -0,0 +1,22 @@
+--- a/Source/JavaScriptCore/CMakeLists.txt.orig 2015-08-06 11:21:27.000000000 +0300
++++ b/Source/JavaScriptCore/CMakeLists.txt 2015-10-29 17:47:10.535712494 +0300
+@@ -1146,6 +1146,7 @@
+ list(APPEND JavaScriptCore_SOURCES ${DERIVED_SOURCES_DIR}/GeneratedJITStubs.obj)
+ endif ()
+ elseif (WTF_CPU_ARM64)
++elseif (WTF_CPU_ALPHA)
+ elseif (WTF_CPU_HPPA)
+ elseif (WTF_CPU_IA64)
+ elseif (WTF_CPU_PPC)
+ elseif (WTF_CPU_PPC64)
+--- a/CMakeLists.txt.orig 2015-08-06 11:21:27.000000000 +0300
++++ b/CMakeLists.txt 2015-10-29 01:23:37.416886279 +0300
+@@ -82,6 +82,8 @@
+ set(WTF_CPU_ARM 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
+ set(WTF_CPU_ARM64 1)
++elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "alpha")
++ set(WTF_CPU_ALPHA 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
+ set(WTF_CPU_MIPS 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "sh4")
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-ia64-build.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-ia64-build.patch
new file mode 100644
index 0000000..6c88c49
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-fix-ia64-build.patch
@@ -0,0 +1,21 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -98,6 +98,8 @@
+ set(WTF_CPU_PPC64LE 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "parisc*")
+ set(WTF_CPU_HPPA 1)
++elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "ia64")
++ set(WTF_CPU_IA64 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390")
+ set(WTF_CPU_S390 1)
+ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390x")
+--- a/Source/JavaScriptCore/CMakeLists.txt
++++ b/Source/JavaScriptCore/CMakeLists.txt
+@@ -1147,6 +1147,7 @@
+ endif ()
+ elseif (WTF_CPU_ARM64)
+ elseif (WTF_CPU_HPPA)
++elseif (WTF_CPU_IA64)
+ elseif (WTF_CPU_PPC)
+ elseif (WTF_CPU_PPC64)
+ elseif (WTF_CPU_PPC64LE)
diff --git a/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-webkit2gtkinjectedbundle-j1.patch b/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-webkit2gtkinjectedbundle-j1.patch
new file mode 100644
index 0000000..49af448
--- /dev/null
+++ b/net-libs/webkit-gtk/files/webkit-gtk-2.8.5-webkit2gtkinjectedbundle-j1.patch
@@ -0,0 +1,22 @@
+2015-08-24 Alexandre Rostovtsev <tetromino@gentoo.org>
+
+ webkit2gtkinjectedbundle requires forwarding headers
+ https://bugs.webkit.org/show_bug.cgi?id=148379
+
+ Fixes GTK build with -j1
+
+ * PlatformGTK.cmake:
+
+Index: Source/WebKit2/PlatformGTK.cmake
+===================================================================
+--- a/Source/WebKit2/PlatformGTK.cmake (revision 188859)
++++ b/Source/WebKit2/PlatformGTK.cmake (working copy)
+@@ -860,7 +860,7 @@ include_directories(
+ )
+
+ add_library(webkit2gtkinjectedbundle MODULE "${WEBKIT2_DIR}/WebProcess/gtk/WebGtkInjectedBundleMain.cpp")
+-add_dependencies(webkit2gtkinjectedbundle GObjectDOMBindings)
++add_dependencies(webkit2gtkinjectedbundle GObjectDOMBindings WebKit2-forwarding-headers)
+ add_webkit2_prefix_header(webkit2gtkinjectedbundle)
+
+ # Add ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} to LD_LIBRARY_PATH
diff --git a/net-libs/webkit-gtk/webkit-gtk-2.4.11-r1.ebuild b/net-libs/webkit-gtk/webkit-gtk-2.4.11-r1.ebuild
new file mode 100644
index 0000000..d35107b
--- /dev/null
+++ b/net-libs/webkit-gtk/webkit-gtk-2.4.11-r1.ebuild
@@ -0,0 +1,282 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="6"
+PYTHON_COMPAT=( python2_7 )
+USE_RUBY="ruby20 ruby21 ruby22 ruby23"
+
+inherit autotools check-reqs flag-o-matic gnome2 pax-utils python-any-r1 ruby-single toolchain-funcs versionator virtualx
+
+MY_P="webkitgtk-${PV}"
+DESCRIPTION="Open source web browser engine"
+HOMEPAGE="http://www.webkitgtk.org/"
+SRC_URI="http://www.webkitgtk.org/releases/${MY_P}.tar.xz"
+
+LICENSE="LGPL-2+ BSD"
+SLOT="3/25" # soname version of libwebkit2gtk-3.0
+KEYWORDS="~alpha amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~x86-macos"
+
+IUSE="aqua coverage debug +egl +geolocation gles2 gnome-keyring +gstreamer +introspection +jit +opengl spell wayland +webgl +X"
+# bugs 372493, 416331
+REQUIRED_USE="
+ geolocation? ( introspection )
+ gles2? ( egl )
+ introspection? ( gstreamer )
+ webgl? ( ^^ ( gles2 opengl ) )
+ !webgl? ( ?? ( gles2 opengl ) )
+ || ( aqua wayland X )
+"
+
+# use sqlite, svg by default
+# Aqua support in gtk3 is untested
+# gtk2 is needed for plugin process support
+# gtk3-3.10 required for wayland
+# gtk3-3.20 is needed to ensure we get fixed theming:
+# https://bugzilla.gnome.org/show_bug.cgi?id=757503
+RDEPEND="
+ dev-db/sqlite:3=
+ >=dev-libs/glib-2.36:2
+ >=dev-libs/icu-3.8.1-r1:=
+ >=dev-libs/libxml2-2.6:2
+ >=dev-libs/libxslt-1.1.7
+ >=media-libs/fontconfig-2.5:1.0
+ >=media-libs/freetype-2.4.2:2
+ >=media-libs/harfbuzz-0.9.7:=[icu(+)]
+ >=media-libs/libpng-1.4:0=
+ media-libs/libwebp:=
+ >=net-libs/libsoup-2.42:2.4[introspection?]
+ virtual/jpeg:0=
+ >=x11-libs/cairo-1.10:=[X?]
+ >=x11-libs/gtk+-3.20.0:3[X?,aqua?,introspection?]
+ >=x11-libs/pango-1.30.0
+
+ >=x11-libs/gtk+-2.24.10:2
+
+ egl? ( media-libs/mesa[egl] )
+ geolocation? ( >=app-misc/geoclue-2.1.5:2.0 )
+ gles2? ( media-libs/mesa[gles2] )
+ gnome-keyring? ( app-crypt/libsecret )
+ gstreamer? (
+ >=media-libs/gstreamer-1.2:1.0
+ >=media-libs/gst-plugins-base-1.2:1.0 )
+ introspection? ( >=dev-libs/gobject-introspection-1.32.0:= )
+ opengl? ( virtual/opengl )
+ spell? ( >=app-text/enchant-0.22:= )
+ wayland? ( >=x11-libs/gtk+-3.10:3[wayland] )
+ webgl? (
+ || (
+ x11-libs/cairo[opengl]
+ x11-libs/cairo[gles2]
+ )
+ x11-libs/libXcomposite
+ x11-libs/libXdamage )
+ X? (
+ x11-libs/libX11
+ x11-libs/libXrender
+ x11-libs/libXt )
+"
+
+# paxctl needed for bug #407085
+# Need real bison, not yacc
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ ${RUBY_DEPS}
+ >=dev-lang/perl-5.10
+ >=app-accessibility/at-spi2-core-2.5.3
+ >=dev-libs/atk-2.8.0
+ >=dev-util/gtk-doc-am-1.10
+ >=dev-util/gperf-3.0.1
+ >=sys-devel/bison-2.4.3
+ >=sys-devel/flex-2.5.34
+ || ( >=sys-devel/gcc-4.7 >=sys-devel/clang-3.3 )
+ sys-devel/gettext
+ >=sys-devel/make-3.82-r4
+ virtual/pkgconfig
+
+ geolocation? ( dev-util/gdbus-codegen )
+ introspection? ( jit? ( sys-apps/paxctl ) )
+ test? (
+ dev-lang/python:2.7
+ dev-python/pygobject:3[python_targets_python2_7]
+ x11-themes/hicolor-icon-theme
+ jit? ( sys-apps/paxctl ) )
+"
+
+S="${WORKDIR}/${MY_P}"
+
+CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
+ check-reqs_pkg_pretend
+ fi
+
+ if [[ ${MERGE_TYPE} != "binary" ]] && ! test-flag-CXX -std=c++11; then
+ die "You need at least GCC 4.7.x or Clang >= 3.3 for C++11-specific compiler flags"
+ fi
+}
+
+pkg_setup() {
+ # Check whether any of the debugging flags is enabled
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ if is-flagq "-ggdb" && [[ ${WEBKIT_GTK_GGDB} != "yes" ]]; then
+ replace-flags -ggdb -g
+ ewarn "Replacing \"-ggdb\" with \"-g\" in your CFLAGS."
+ ewarn "Building ${PN} with \"-ggdb\" produces binaries which are too"
+ ewarn "large for current binutils releases (bug #432784) and has very"
+ ewarn "high temporary build space and memory requirements."
+ ewarn "If you really want to build ${PN} with \"-ggdb\", add"
+ ewarn "WEBKIT_GTK_GGDB=yes"
+ ewarn "to your make.conf file."
+ fi
+ einfo "You need to have at least 18GB of temporary build space available"
+ einfo "to build ${PN} with debugging CFLAGS. Note that it might still"
+ einfo "not be enough, as the total space requirements depend on the flags"
+ einfo "(-ggdb vs -g1) and enabled features."
+ check-reqs_pkg_setup
+ fi
+
+ [[ ${MERGE_TYPE} = "binary" ]] || python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ # intermediate MacPorts hack while upstream bug is not fixed properly
+ # https://bugs.webkit.org/show_bug.cgi?id=28727
+ use aqua && eapply "${FILESDIR}"/${PN}-1.6.1-darwin-quartz.patch
+
+ # Leave optimization level to user CFLAGS
+ # FORTIFY_SOURCE is enabled by default in Gentoo
+ sed -e 's/-O[012]//g' \
+ -e 's/-D_FORTIFY_SOURCE=2//g' \
+ -i Source/autotools/SetupCompilerFlags.m4 || die
+
+ # bug #459978, upstream bug #113397
+ eapply "${FILESDIR}"/${PN}-1.11.90-gtk-docize-fix.patch
+
+ # Debian patches to fix support for some arches
+ # https://bugs.webkit.org/show_bug.cgi?id=129540
+ eapply "${FILESDIR}"/${PN}-2.2.5-{hppa,ia64}-platform.patch
+ # https://bugs.webkit.org/show_bug.cgi?id=129542
+ eapply "${FILESDIR}"/${PN}-2.4.1-ia64-malloc.patch
+
+ # Fix building on ppc (from OpenBSD, only needed on slot 3)
+ # https://bugs.webkit.org/show_bug.cgi?id=130837
+ eapply "${FILESDIR}"/${PN}-2.4.4-atomic-ppc.patch
+
+ # Fix build with recent libjpeg, bug #481688
+ # https://bugs.webkit.org/show_bug.cgi?id=122412
+ eapply "${FILESDIR}"/${PN}-2.4.4-jpeg-9a.patch
+
+ # Fix building with --disable-webgl, bug #500966
+ # https://bugs.webkit.org/show_bug.cgi?id=131267
+ eapply "${FILESDIR}"/${PN}-2.4.7-disable-webgl.patch
+
+ # https://bugs.webkit.org/show_bug.cgi?id=156510
+ eapply "${FILESDIR}"/${PN}-2.4.11-video-web-audio.patch
+
+ # https://bugs.webkit.org/show_bug.cgi?id=159124#c1
+ eapply "${FILESDIR}"/${PN}-2.4.9-gcc-6.patch
+
+ AT_M4DIR=Source/autotools eautoreconf
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # Respect CC, otherwise fails on prefix #395875
+ tc-export CC
+
+ # CXX code needs to be built with -fpermissive on any recent gcc
+ append-cxxflags -fpermissive
+
+ # Arches without JIT support also need this to really disable it in all places
+ use jit || append-cppflags -DENABLE_JIT=0 -DENABLE_YARR_JIT=0 -DENABLE_ASSEMBLER=0
+
+ # It does not compile on alpha without this in LDFLAGS
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
+ use alpha && append-ldflags "-Wl,--no-relax"
+
+ # Sigbuses on SPARC with mcpu and co., bug #???
+ use sparc && filter-flags "-mvis"
+
+ # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
+ use ppc64 && append-flags "-mminimal-toc"
+
+ # Try to use less memory, bug #469942 (see Fedora .spec for reference)
+ # --no-keep-memory doesn't work on ia64, bug #502492
+ if ! use ia64; then
+ append-ldflags "-Wl,--no-keep-memory"
+ fi
+ if ! $(tc-getLD) --version | grep -q "GNU gold"; then
+ append-ldflags "-Wl,--reduce-memory-overheads"
+ fi
+
+ local ruby_interpreter=""
+
+ if has_version "virtual/rubygems[ruby_targets_ruby23]"; then
+ ruby_interpreter="RUBY=$(type -P ruby23)"
+ elif has_version "virtual/rubygems[ruby_targets_ruby22]"; then
+ ruby_interpreter="RUBY=$(type -P ruby22)"
+ elif has_version "virtual/rubygems[ruby_targets_ruby21]"; then
+ ruby_interpreter="RUBY=$(type -P ruby21)"
+ else
+ ruby_interpreter="RUBY=$(type -P ruby20)"
+ fi
+
+ # TODO: Check Web Audio support
+ # should somehow let user select between them?
+ #
+ # * Aqua support in gtk3 is untested
+ # * dependency-tracking is required so parallel builds won't fail
+ gnome2_src_configure \
+ $(use_enable aqua quartz-target) \
+ $(use_enable coverage) \
+ $(use_enable debug) \
+ $(use_enable egl) \
+ $(use_enable geolocation) \
+ $(use_enable gles2) \
+ $(use_enable gnome-keyring credential_storage) \
+ $(use_enable gstreamer video) \
+ $(use_enable gstreamer web-audio) \
+ $(use_enable introspection) \
+ $(use_enable jit) \
+ $(use_enable opengl glx) \
+ $(use_enable spell spellcheck) \
+ $(use_enable webgl) \
+ $(use_enable webgl accelerated-compositing) \
+ $(use_enable wayland wayland-target) \
+ $(use_enable X x11-target) \
+ --with-gtk=3.0 \
+ --enable-dependency-tracking \
+ --disable-gtk-doc \
+ ${ruby_interpreter}
+}
+
+src_test() {
+ # Tests expect an out-of-source build in WebKitBuild
+ ln -s . WebKitBuild || die "ln failed"
+
+ # Prevents test failures on PaX systems
+ use jit && pax-mark m $(list-paxables Programs/*[Tt]ests/*) # Programs/unittests/.libs/test*
+
+ # Tests need virtualx, bug #294691, bug #310695
+ # Parallel tests sometimes fail
+ virtx emake -j1 check
+}
+
+src_install() {
+ DOCS="ChangeLog NEWS" # other ChangeLog files handled by src_install
+
+ # https://bugs.webkit.org/show_bug.cgi?id=129242
+ MAKEOPTS="${MAKEOPTS} -j1" gnome2_src_install
+
+ newdoc Source/WebKit/gtk/ChangeLog ChangeLog.gtk
+ newdoc Source/JavaScriptCore/ChangeLog ChangeLog.JavaScriptCore
+ newdoc Source/WebCore/ChangeLog ChangeLog.WebCore
+
+ # Prevents crashes on PaX systems, bug #522808
+ use jit && pax-mark m "${ED}usr/bin/jsc-3" "${ED}usr/libexec/WebKitWebProcess"
+ pax-mark m "${ED}usr/libexec/WebKitPluginProcess"
+}
diff --git a/net-libs/webkit-gtk/webkit-gtk-2.4.11-r200.ebuild b/net-libs/webkit-gtk/webkit-gtk-2.4.11-r200.ebuild
new file mode 100644
index 0000000..f7d0a7b
--- /dev/null
+++ b/net-libs/webkit-gtk/webkit-gtk-2.4.11-r200.ebuild
@@ -0,0 +1,269 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="6"
+PYTHON_COMPAT=( python2_7 )
+USE_RUBY="ruby20 ruby21 ruby22 ruby23"
+
+inherit autotools check-reqs flag-o-matic gnome2 pax-utils python-any-r1 ruby-single toolchain-funcs versionator virtualx
+
+MY_P="webkitgtk-${PV}"
+DESCRIPTION="Open source web browser engine"
+HOMEPAGE="http://www.webkitgtk.org/"
+SRC_URI="http://www.webkitgtk.org/releases/${MY_P}.tar.xz"
+
+LICENSE="LGPL-2+ BSD"
+SLOT="2" # no usable subslot
+KEYWORDS="~alpha amd64 ~arm ~ia64 ~mips ~ppc ~ppc64 ~sparc x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~x86-macos"
+
+IUSE="aqua coverage debug +egl +geoloc gles2 gnome-keyring +gstreamer +introspection +jit +opengl spell +webgl +X"
+# bugs 372493, 416331
+REQUIRED_USE="
+ geoloc? ( introspection )
+ gles2? ( egl )
+ introspection? ( gstreamer )
+ webgl? ( ^^ ( gles2 opengl ) )
+ !webgl? ( ?? ( gles2 opengl ) )
+ || ( aqua X )
+"
+
+# use sqlite, svg by default
+RDEPEND="
+ dev-db/sqlite:3=
+ >=dev-libs/glib-2.36:2
+ >=dev-libs/icu-3.8.1-r1:=
+ >=dev-libs/libxml2-2.6:2
+ >=dev-libs/libxslt-1.1.7
+ >=media-libs/fontconfig-2.5:1.0
+ >=media-libs/freetype-2.4.2:2
+ >=media-libs/harfbuzz-0.9.7:=[icu(+)]
+ >=media-libs/libpng-1.4:0=
+ media-libs/libwebp:=
+ >=net-libs/libsoup-2.42:2.4[introspection?]
+ virtual/jpeg:0=
+ >=x11-libs/cairo-1.10:=[X]
+ >=x11-libs/gtk+-2.24.10:2[aqua?,introspection?]
+ x11-libs/libXrender
+ x11-libs/libXt
+ >=x11-libs/pango-1.30.0
+
+ egl? ( media-libs/mesa[egl] )
+ geoloc? ( >=app-misc/geoclue-2.1.5:2.0 )
+ gles2? ( media-libs/mesa[gles2] )
+ gnome-keyring? ( app-crypt/libsecret )
+ gstreamer? (
+ >=media-libs/gstreamer-1.2:1.0
+ >=media-libs/gst-plugins-base-1.2:1.0 )
+ introspection? ( >=dev-libs/gobject-introspection-1.32.0:= )
+ opengl? ( virtual/opengl )
+ spell? ( >=app-text/enchant-0.22:= )
+ webgl? (
+ || (
+ x11-libs/cairo[opengl]
+ x11-libs/cairo[gles2]
+ )
+ x11-libs/libXcomposite
+ x11-libs/libXdamage )
+"
+
+# paxctl needed for bug #407085
+# Need real bison, not yacc
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ ${RUBY_DEPS}
+ >=dev-lang/perl-5.10
+ >=dev-libs/atk-2.8.0
+ >=dev-util/gtk-doc-am-1.10
+ >=dev-util/gperf-3.0.1
+ >=sys-devel/bison-2.4.3
+ >=sys-devel/flex-2.5.34
+ || ( >=sys-devel/gcc-4.7 >=sys-devel/clang-3.3 )
+ sys-devel/gettext
+ >=sys-devel/make-3.82-r4
+ virtual/pkgconfig
+
+ geoloc? ( dev-util/gdbus-codegen )
+ introspection? ( jit? ( sys-apps/paxctl ) )
+ test? (
+ dev-lang/python:2.7
+ dev-python/pygobject:3[python_targets_python2_7]
+ x11-themes/hicolor-icon-theme
+ jit? ( sys-apps/paxctl ) )
+"
+
+S="${WORKDIR}/${MY_P}"
+
+CHECKREQS_DISK_BUILD="18G" # and even this might not be enough, bug #417307
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS"
+ check-reqs_pkg_pretend
+ fi
+
+ if [[ ${MERGE_TYPE} != "binary" ]] && ! test-flag-CXX -std=c++11; then
+ die "You need at least GCC 4.7.x or Clang >= 3.3 for C++11-specific compiler flags"
+ fi
+}
+
+pkg_setup() {
+ # Check whether any of the debugging flags is enabled
+ if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0" ; then
+ if is-flagq "-ggdb" && [[ ${WEBKIT_GTK_GGDB} != "yes" ]]; then
+ replace-flags -ggdb -g
+ ewarn "Replacing \"-ggdb\" with \"-g\" in your CFLAGS."
+ ewarn "Building ${PN} with \"-ggdb\" produces binaries which are too"
+ ewarn "large for current binutils releases (bug #432784) and has very"
+ ewarn "high temporary build space and memory requirements."
+ ewarn "If you really want to build ${PN} with \"-ggdb\", add"
+ ewarn "WEBKIT_GTK_GGDB=yes"
+ ewarn "to your make.conf file."
+ fi
+ einfo "You need to have at least 18GB of temporary build space available"
+ einfo "to build ${PN} with debugging CFLAGS. Note that it might still"
+ einfo "not be enough, as the total space requirements depend on the flags"
+ einfo "(-ggdb vs -g1) and enabled features."
+ check-reqs_pkg_setup
+ fi
+
+ [[ ${MERGE_TYPE} = "binary" ]] || python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ # intermediate MacPorts hack while upstream bug is not fixed properly
+ # https://bugs.webkit.org/show_bug.cgi?id=28727
+ use aqua && eapply "${FILESDIR}"/${PN}-1.6.1-darwin-quartz.patch
+
+ # Leave optimization level to user CFLAGS
+ # FORTIFY_SOURCE is enabled by default in Gentoo
+ sed -e 's/-O[012]//g' \
+ -e 's/-D_FORTIFY_SOURCE=2//g' \
+ -i Source/autotools/SetupCompilerFlags.m4 || die
+
+ # bug #459978, upstream bug #113397
+ eapply "${FILESDIR}"/${PN}-1.11.90-gtk-docize-fix.patch
+
+ # Debian patches to fix support for some arches
+ # https://bugs.webkit.org/show_bug.cgi?id=129540
+ eapply "${FILESDIR}"/${PN}-2.2.5-{hppa,ia64}-platform.patch
+ # https://bugs.webkit.org/show_bug.cgi?id=129542
+ eapply "${FILESDIR}"/${PN}-2.4.1-ia64-malloc.patch
+
+ # Fix build with recent libjpeg, bug #481688
+ # https://bugs.webkit.org/show_bug.cgi?id=122412
+ eapply "${FILESDIR}"/${PN}-2.4.4-jpeg-9a.patch
+
+ # Fix building with --disable-webgl, bug #500966
+ # https://bugs.webkit.org/show_bug.cgi?id=131267
+ eapply "${FILESDIR}"/${PN}-2.4.7-disable-webgl.patch
+
+ # https://bugs.webkit.org/show_bug.cgi?id=156510
+ eapply "${FILESDIR}"/${PN}-2.4.11-video-web-audio.patch
+
+ # https://bugs.webkit.org/show_bug.cgi?id=159124#c1
+ eapply "${FILESDIR}"/${PN}-2.4.9-gcc-6.patch
+
+ AT_M4DIR=Source/autotools eautoreconf
+
+ gnome2_src_prepare
+}
+
+src_configure() {
+ # Respect CC, otherwise fails on prefix #395875
+ tc-export CC
+
+ # CXX code needs to be built with -fpermissive on any recent gcc
+ append-cxxflags -fpermissive
+
+ # Arches without JIT support also need this to really disable it in all places
+ use jit || append-cppflags -DENABLE_JIT=0 -DENABLE_YARR_JIT=0 -DENABLE_ASSEMBLER=0
+
+ # It does not compile on alpha without this in LDFLAGS
+ # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648761
+ use alpha && append-ldflags "-Wl,--no-relax"
+
+ # Sigbuses on SPARC with mcpu and co., bug #???
+ use sparc && filter-flags "-mvis"
+
+ # https://bugs.webkit.org/show_bug.cgi?id=42070 , #301634
+ use ppc64 && append-flags "-mminimal-toc"
+
+ # Try to use less memory, bug #469942 (see Fedora .spec for reference)
+ # --no-keep-memory doesn't work on ia64, bug #502492
+ if ! use ia64; then
+ append-ldflags "-Wl,--no-keep-memory"
+ fi
+ if ! $(tc-getLD) --version | grep -q "GNU gold"; then
+ append-ldflags "-Wl,--reduce-memory-overheads"
+ fi
+
+ local ruby_interpreter=""
+
+ if has_version "virtual/rubygems[ruby_targets_ruby23]"; then
+ ruby_interpreter="RUBY=$(type -P ruby23)"
+ elif has_version "virtual/rubygems[ruby_targets_ruby22]"; then
+ ruby_interpreter="RUBY=$(type -P ruby22)"
+ elif has_version "virtual/rubygems[ruby_targets_ruby21]"; then
+ ruby_interpreter="RUBY=$(type -P ruby21)"
+ else
+ ruby_interpreter="RUBY=$(type -P ruby20)"
+ fi
+
+ # TODO: Check Web Audio support
+ # should somehow let user select between them?
+ #
+ # * dependency-tracking is required so parallel builds won't fail
+ gnome2_src_configure \
+ $(use_enable aqua quartz-target) \
+ $(use_enable coverage) \
+ $(use_enable debug) \
+ $(use_enable egl) \
+ $(use_enable geoloc geolocation) \
+ $(use_enable gles2) \
+ $(use_enable gnome-keyring credential_storage) \
+ $(use_enable gstreamer video) \
+ $(use_enable gstreamer web-audio) \
+ $(use_enable introspection) \
+ $(use_enable jit) \
+ $(use_enable opengl glx) \
+ $(use_enable spell spellcheck) \
+ $(use_enable webgl) \
+ $(use_enable webgl accelerated-compositing) \
+ $(use_enable X x11-target) \
+ --with-gtk=2.0 \
+ --disable-webkit2 \
+ --enable-dependency-tracking \
+ --disable-gtk-doc \
+ ${ruby_interpreter}
+}
+
+src_test() {
+ # Tests expect an out-of-source build in WebKitBuild
+ ln -s . WebKitBuild || die "ln failed"
+
+ # Prevents test failures on PaX systems
+ use jit && pax-mark m $(list-paxables Programs/*[Tt]ests/*) # Programs/unittests/.libs/test*
+
+ # Tests need virtualx, bug #294691, bug #310695
+ # Parallel tests sometimes fail
+ virtx emake -j1 check
+}
+
+src_install() {
+ DOCS="ChangeLog NEWS" # other ChangeLog files handled by src_install
+
+ # https://bugs.webkit.org/show_bug.cgi?id=129242
+ MAKEOPTS="${MAKEOPTS} -j1" gnome2_src_install
+
+ newdoc Source/WebKit/gtk/ChangeLog ChangeLog.gtk
+ newdoc Source/JavaScriptCore/ChangeLog ChangeLog.JavaScriptCore
+ newdoc Source/WebCore/ChangeLog ChangeLog.WebCore
+
+ # Prevents crashes on PaX systems
+ use jit && pax-mark m "${ED}usr/bin/jsc-1"
+
+ # File collisions with slot 3
+ # bug #402699, https://bugs.webkit.org/show_bug.cgi?id=78134
+ rm -rf "${ED}usr/share/gtk-doc" || die
+}
diff --git a/net-mail/biff/Manifest b/net-mail/biff/Manifest
new file mode 100644
index 0000000..2c0be80
--- /dev/null
+++ b/net-mail/biff/Manifest
@@ -0,0 +1,3 @@
+AUX biff+comsat-0.10-nobr.patch.bz2 270 RMD160 50622d22b1efecb592838cd980a784adbf5e2cda SHA1 49adb6d3a6142a8062357af0bab4ed7e06b6c6b7 SHA256 9751f7003d3d202b7787b363505c93848905adb4f90f1358756d01b092fb859c
+AUX biff+comsat-0.17.tar.bz2 13299 RMD160 d20b510ff5940d00aa3fd60cf48736866caab235 SHA1 896c9c0094d029439119c56399f43b11c053f757 SHA256 018b3b27e8427a3cc45ddb132cd5c68f8e7192895633d53c4352e0e5c8922a81
+EBUILD biff-0.17.ebuild 854 RMD160 6892816b369cb3475f8b736a36847ef45381d464 SHA1 f64c83e8eff3d5095a883688c6964ad06e60e434 SHA256 2ebdd349c74c9fb57f0009dcb5470dae0d29915d9d1cffef7ed0c009b4e30e51
diff --git a/net-mail/biff/biff-0.17.ebuild b/net-mail/biff/biff-0.17.ebuild
new file mode 100644
index 0000000..b311230
--- /dev/null
+++ b/net-mail/biff/biff-0.17.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-mail/gnubiff/gnubiff-2.1.3.ebuild,v 1.4 2005/10/02 11:42:12 agriffis Exp $
+
+inherit eutils
+
+DESCRIPTION="A mail notification program"
+LICENSE="GPL"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+src_unpack() {
+ tar xjf "${FILESDIR}"/biff+comsat-0.17.tar.bz2
+ cd biff+comsat-0.17
+ epatch "${FILESDIR}"/biff+comsat-0.10-nobr.patch.bz2
+}
+
+src_compile() {
+ cd "${WORKDIR}"/biff+comsat-0.17
+ sh configure
+ perl -pi -e '
+ s,^CC=.*$,CC=cc,;
+ s,-O2,\$(RPM_OPT_FLAGS),;
+ s,^BINDIR=.*$,BINDIR=/usr/bin,;
+ s,^MANDIR=.*$,MANDIR=/usr/share/man,;
+ s,^SBINDIR=.*$,SBINDIR=/usr/sbin,;
+ ' MCONFIG
+
+ emake -C biff || die
+}
+
+src_install() {
+ cd "${WORKDIR}"/biff+comsat-0.17
+ dobin biff/biff
+ doman biff/biff.1
+}
diff --git a/net-mail/biff/files/biff+comsat-0.10-nobr.patch.bz2 b/net-mail/biff/files/biff+comsat-0.10-nobr.patch.bz2
new file mode 100644
index 0000000..23685a3
--- /dev/null
+++ b/net-mail/biff/files/biff+comsat-0.10-nobr.patch.bz2
Binary files differ
diff --git a/net-mail/biff/files/biff+comsat-0.17.tar.bz2 b/net-mail/biff/files/biff+comsat-0.17.tar.bz2
new file mode 100644
index 0000000..6b7d08e
--- /dev/null
+++ b/net-mail/biff/files/biff+comsat-0.17.tar.bz2
Binary files differ
diff --git a/net-mail/ezmlm-idx/Manifest b/net-mail/ezmlm-idx/Manifest
new file mode 100644
index 0000000..406b745
--- /dev/null
+++ b/net-mail/ezmlm-idx/Manifest
@@ -0,0 +1,2 @@
+DIST ezmlm-idx-7.1.1.tar.gz 718954 RMD160 8e10cd73d7cabc9cb75722816162fb32a99e3d51 SHA1 3e03b14c344e0b10d707d4e9e6859b8bda01711e SHA256 0d2a9d99fa410cc26c9d00c000ede4977b606ba9fd483c5a7a00b87bf8db2383
+EBUILD ezmlm-idx-7.1.1.ebuild 1793 RMD160 0183abddadf5608231bed0d336feedb5c23d334c SHA1 0dc9bc7643665ef844c822d7c2e851b33b654ff3 SHA256 eed8098cab37ce7fc7e8baa47927e93d1453f62a29d1112c04543d3870a9e6f6
diff --git a/net-mail/ezmlm-idx/ezmlm-idx-7.1.1.ebuild b/net-mail/ezmlm-idx/ezmlm-idx-7.1.1.ebuild
new file mode 100644
index 0000000..017efb2
--- /dev/null
+++ b/net-mail/ezmlm-idx/ezmlm-idx-7.1.1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-mail/ezmlm-idx/ezmlm-idx-7.0.0-r2.ebuild,v 1.1 2010/10/01 02:57:34 robbat2 Exp $
+
+inherit qmail multilib
+
+DESCRIPTION="Simple yet powerful mailing list manager for qmail"
+HOMEPAGE="http://www.ezmlm.org"
+SRC_URI="http://www.ezmlm.org/archive/${PV}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~mips ~ppc ~sparc x86"
+IUSE="mysql postgres"
+
+DEPEND="mysql? ( virtual/mysql )
+ postgres? ( dev-db/postgresql-base )"
+RDEPEND="${DEPEND}
+ virtual/qmail"
+
+pkg_setup() {
+ if use mysql && use postgres; then
+ die "cannot build mysql and pgsql support at the same time"
+ fi
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}" || die
+
+ echo /usr/bin > conf-bin
+ echo /usr/$(get_libdir)/ezmlm > conf-lib
+ echo /etc/ezmlm > conf-etc
+ echo /usr/share/man > conf-man
+ echo ${QMAIL_HOME} > conf-qmail
+
+ echo $(tc-getCC) ${CFLAGS} -I/usr/include/{my,postgre}sql > conf-cc
+ echo $(tc-getCC) ${CFLAGS} -Wl,-E > conf-ld
+
+ # fix DESTDIR and skip cat man-pages
+ sed -e "s:\(/install\) \(\"\`head\):\1 ${D}\2:" \
+ -e "s:\(./install.*\) < MAN$:grep -v \:/cat MAN | \1:" \
+ -e "s:\(\"\`head -n 1 conf-etc\`\"\):${D}\1:" \
+ -e "s:\(\"\`head -n 1 conf-bin\`\"\):${D}\1:" \
+ -e "s:\(\"\`head -n 1 conf-lib\`\"\):${D}\1:" \
+ -e "s:\(\"\`head -n 1 conf-man\`\"\):${D}\1:" \
+ -i Makefile
+}
+
+src_compile() {
+ emake it man || die "make failed"
+
+ if use mysql; then
+ emake mysql || die "make mysql failed"
+ elif use postgres; then
+ emake pgsql || die "make pgsql failed"
+ fi
+}
+
+src_install () {
+ dodir /usr/bin /usr/$(get_libdir)/ezmlm /etc/ezmlm /usr/share/man
+ dobin ezmlm-{cgi,checksub,import,rmtab}
+
+ make DESTDIR="${D}" install || die "make setup failed"
+}
diff --git a/net-mail/qmail-usergen/Manifest b/net-mail/qmail-usergen/Manifest
new file mode 100644
index 0000000..b96860b
--- /dev/null
+++ b/net-mail/qmail-usergen/Manifest
@@ -0,0 +1,3 @@
+AUX qmail.sh 838 RMD160 d938fc6d08b015ac62abbf706bac9561ad9a6fd5 SHA1 1a738101126db488e8736dc790fe12caa579ff8c SHA256 92b9a6b9d244164246945da348489b47f903e656badd841376f03eaf72299a5d
+AUX users/exclude 90 RMD160 d100de545be02dfcc80e3ee58ebdea1fb050b4cb SHA1 05d94e4079e9b234338fa4a34007747e51de6d25 SHA256 8aadcc187e5cc9740df1904f1983de8863b6472c81e90c9a54eb04c21e61900c
+EBUILD qmail-usergen-0.1.ebuild 427 RMD160 18c9565e39149dba52cfe69b623c96187bb85957 SHA1 68bf40373e5fde0852d6a61086807d15ffcf65ee SHA256 8c0f0c5b1806c95a414cc13ddc60eedc7bb114a44db7ae0e15cd5e04425f8178
diff --git a/net-mail/qmail-usergen/files/qmail.sh b/net-mail/qmail-usergen/files/qmail.sh
new file mode 100755
index 0000000..e9f3490
--- /dev/null
+++ b/net-mail/qmail-usergen/files/qmail.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+QMAILHOME=/var/qmail
+
+touch $QMAILHOME/users/assign.passwd
+touch $QMAILHOME/users/assign
+
+# create assign.nopasswd file
+( cat $QMAILHOME/users/assign.passwd && cat $QMAILHOME/users/assign ) \
+ | sort | uniq -u > $QMAILHOME/users/assign.nopasswd
+
+# create the assign file from passwd entries (using getent)
+getent passwd | $QMAILHOME/bin/qmail-pw2u > $QMAILHOME/users/assign.passwd
+
+# merge assign.nopasswd and assign.passwd in assign
+( cat $QMAILHOME/users/assign.nopasswd && cat $QMAILHOME/users/assign.passwd) \
+ | sort -k 2 | uniq | grep -v "^.$" > $QMAILHOME/users/assign
+
+# Fix for vpopmail
+#( cat $QMAILHOME/users/assign.nopasswd && cat $QMAILHOME/users/assign.passwd \
+# | sort -k 2 | uniq ) | grep -v "^.$" > $QMAILHOME/users/assign
+
+
+echo "." >> $QMAILHOME/users/assign
+
+
+
+# make cdb file
+$QMAILHOME/bin/qmail-newu
diff --git a/net-mail/qmail-usergen/files/users/exclude b/net-mail/qmail-usergen/files/users/exclude
new file mode 100644
index 0000000..f4af044
--- /dev/null
+++ b/net-mail/qmail-usergen/files/users/exclude
@@ -0,0 +1,14 @@
+ldap
+xfs
+rpm
+apache
+postgres
+mysql
+named
+squid
+ftp
+portage
+vpopmail
+firebird
+snort
+jabber
diff --git a/net-mail/qmail-usergen/qmail-usergen-0.1.ebuild b/net-mail/qmail-usergen/qmail-usergen-0.1.ebuild
new file mode 100644
index 0000000..1f26a15
--- /dev/null
+++ b/net-mail/qmail-usergen/qmail-usergen-0.1.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Script to generate user tables for qmail"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_install() {
+ dodir /etc/cron.hourly
+ install -c -m 755 ${FILESDIR}/qmail.sh ${D}/etc/cron.hourly
+
+ dodir /var/qmail/users
+ install -c -m 644 ${FILESDIR}/users/* ${D}/var/qmail/users
+}
diff --git a/net-misc/d4x/ChangeLog b/net-misc/d4x/ChangeLog
new file mode 100644
index 0000000..82d1941
--- /dev/null
+++ b/net-misc/d4x/ChangeLog
@@ -0,0 +1,245 @@
+# ChangeLog for net-misc/d4x
+# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/d4x/ChangeLog,v 1.52 2008/01/24 14:02:21 armin76 Exp $
+
+ 24 Jan 2008; Raúl Porcel <armin76@gentoo.org> metadata.xml:
+ Fix metadata.xml
+
+ 14 Nov 2007; Raúl Porcel <armin76@gentoo.org> d4x-2.5.7.1-r2.ebuild:
+ sparc stable wrt #198845
+
+ 13 Nov 2007; Christian Faulhammer <opfer@gentoo.org>
+ d4x-2.5.7.1-r2.ebuild:
+ stable x86, bug 198845
+
+ 02 Nov 2007; Samuli Suominen <drac@gentoo.org> d4x-2.5.7.1-r2.ebuild:
+ Forcing -j1 to emake in src_install wrt #197497 and marking AMD64 stable.
+
+*d4x-2.5.7.1-r2 (28 Oct 2007)
+
+ 28 Oct 2007; Samuli Suominen <drac@gentoo.org>
+ +files/d4x-2.5.7.1-gentoo.patch, +d4x-2.5.7.1-r2.ebuild:
+ New ebuild and patch for #111769, #130479 and #193360 plus more.
+
+ 16 Jun 2007; Tobias Scherbaum <dertobi123@gentoo.org>
+ d4x-2.5.7.1-r1.ebuild:
+ Added ~ppc, bug #181022
+
+ 17 Mar 2007; Steve Dibb <beandog@gentoo.org> d4x-2.5.7.1-r1.ebuild:
+ amd64 stable
+
+ 13 Mar 2007; Raúl Porcel <armin76@gentoo.org> d4x-2.5.7.1-r1.ebuild:
+ x86 stable
+
+ 22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
+ Transition to Manifest2.
+
+ 19 Dec 2006; Gustavo Zacarias <gustavoz@gentoo.org>
+ -files/d4x-2.4.1-fix-statusbar-crash.patch,
+ -files/d4x-sndserv-bigendian.patch, -d4x-2.4.1-r1.ebuild,
+ d4x-2.5.7.1-r1.ebuild:
+ Cleanup and 2.5.7.1-r1 sparc stable directly to get rid of broken oldie
+
+ 13 May 2006; Krzysiek Pawlik <nelchael@gentoo.org>
+ files/d4x-2.5.7.1-speed.patch:
+ Fixed patch.
+
+*d4x-2.5.7.1-r1 (13 May 2006)
+
+ 13 May 2006; Krzysiek Pawlik <nelchael@gentoo.org>
+ +files/d4x-2.5.7.1-speed.patch, -d4x-2.5.7.1.ebuild,
+ +d4x-2.5.7.1-r1.ebuild:
+ Added a patch to fix download speed issue, see bug #130479.
+
+*d4x-2.5.7.1 (06 May 2006)
+
+ 06 May 2006; Krzysiek Pawlik <nelchael@gentoo.org>
+ +files/d4x-2.5.7.1-libintl_fix.patch, +d4x-2.5.7.1.ebuild:
+ Version bump, see bug #130479.
+
+ 24 Apr 2006; Luis Medinas <metalgod@gentoo.org> d4x-2.5.6.ebuild:
+ Stable on amd64. Bug #130803.
+
+ 15 Jan 2006; Krzysiek Pawlik <nelchael@gentoo.org>
+ -files/d4x-2.5.0-fix-compile-gtk26.patch,
+ -files/d4x-2.5.0_rc2-gtk24.patch, -files/d4x-2.5.0_rc4-fix-cast.patch,
+ -files/d4x-2.5.5-stdint.patch, -d4x-2.5.0-r1.ebuild, -d4x-2.5.5.ebuild,
+ d4x-2.5.6.ebuild:
+ Removed old versions, 2.5.6 stable on x86.
+
+ 28 Dec 2005; Krzysiek Pawlik <nelchael@gentoo.org>
+ +files/d4x-2.5.6-libintl_fix.patch, d4x-2.5.6.ebuild:
+ Fix bug #111769. Thanks to Alexey Maximov.
+
+ 31 Oct 2005; Krzysiek Pawlik <nelchael@gentoo.org> -d4x-2.5.1.ebuild:
+ Removed old 2.5.1.
+
+*d4x-2.5.6 (31 Oct 2005)
+
+ 31 Oct 2005; Krzysiek Pawlik <nelchael@gentoo.org> +d4x-2.5.6.ebuild:
+ Version bump.
+
+ 27 Sep 2005; Krzysiek Pawlik <nelchael@gentoo.org>
+ +files/d4x-2.5.5-stdint.patch, d4x-2.5.5.ebuild:
+ Fix bug 107297.
+
+*d4x-2.5.5 (25 Sep 2005)
+
+ 25 Sep 2005; Krzysiek Pawlik <nelchael@gentoo.org> +d4x-2.5.5.ebuild:
+ New version: 2.5.5.
+
+ 20 Aug 2005; Jonathan Smith <smithj@gentoo.org> d4x-2.5.1.ebuild:
+ #103058: fixed dependency problem
+
+ 20 Aug 2005; Jonathan Smith <smithj@gentoo.org> -d4x-2.03.ebuild,
+ -d4x-2.5.0_rc2.ebuild, -d4x-2.5.0_rc4.ebuild, -d4x-2.5.0.ebuild,
+ d4x-2.5.0-r1.ebuild:
+ 2.5.0-r1 stable on x86, old ebuild cleanout
+
+ 18 Aug 2005; Jonathan Smith <smithj@gentoo.org> d4x-2.5.1.ebuild:
+ #103008: ebuild path fix
+
+*d4x-2.5.1 (18 Aug 2005)
+
+ 18 Aug 2005; Jonathan Smith <smithj@gentoo.org> +d4x-2.5.1.ebuild:
+ #102235: version bump
+
+ 18 Aug 2005; Jonathan Smith <smithj@gentoo.org> metadata.xml:
+ maintainer update (again)
+
+*d4x-2.5.0-r1 (24 Jun 2005)
+
+ 24 Jun 2005; Alastair Tse <liquidx@gentoo.org>
+ +files/d4x-2.5.0-fix-compile-gtk26.patch, +d4x-2.5.0-r1.ebuild:
+ Add gtk-2.6 compat patch. thanks to Fyodor Kupchick and Felix Riemann
+ (#79204)
+
+ 13 Jan 2005; Alastair Tse <liquidx@gentoo.org> d4x-2.5.0.ebuild:
+ add flags to enable downloads of greater than 2G (#73784)
+
+*d4x-2.5.0 (05 Dec 2004)
+
+ 05 Dec 2004; Markus Nigbur <pyrania@gentoo.org> +d4x-2.5.0.ebuild:
+ Version bump.
+
+ 05 Oct 2004; Malcolm Lashley <malc@gentoo.org> d4x-2.5.0_rc4.ebuild:
+ ~amd64 - bug #66462
+
+ 03 Jul 2004; <pyrania@gentoo.org> d4x-2.5.0_rc4.ebuild:
+ Marked stable.
+
+ 16 Jun 2004; Martin Schlemmer <azarah@gentoo.org>
+ +files/d4x-2.5.0_rc4-fix-cast.patch, d4x-2.5.0_rc4.ebuild:
+ Fix missing cast that is fatal with newer gcc.
+
+*d4x-2.5.0_rc4 (04 Feb 2004)
+
+ 15 Jun 2004; Alastair Tse <liquidx@gentoo.org> :
+ version bump, fixes industrial crash bug (#35865), should work on gtk2.4
+
+ 11 Jun 2004; Aron Griffis <agriffis@gentoo.org> d4x-2.03.ebuild,
+ d4x-2.4.1-r1.ebuild, d4x-2.5.0_rc2.ebuild:
+ Fix use invocation
+
+ 29 Apr 2004; Alastair Tse <liquidx@gentoo.org>
+ +files/d4x-2.5.0_rc2-gtk24.patch, d4x-2.5.0_rc2.ebuild:
+ add patch for gtk2.4 compatibility (#47984)
+
+ 26 Apr 2004; Aron Griffis <agriffis@gentoo.org> d4x-2.4.1-r1.ebuild:
+ Add die following econf for bug 48950
+
+ 11 Apr 2004; Markus Nigbur <pyrania@gentoo.org> d4x-2.5.0_rc2.ebuild:
+ Marked stable.
+
+ 04 Apr 2004; Jason Wever <weeve@gentoo.org> d4x-2.4.1-r1.ebuild:
+ Marked stable on sparc.
+
+ 28 Mar 2004; Jason Wever <weeve@gentoo.org> d4x-2.4.1-r1.ebuild,
+ files/d4x-sndserv-bigendian.patch:
+ Added big endian patch and ~sparc keyword to 2.4.1-r1.
+
+ 04 Feb 2004; Alastair Tse <liquidx@gentoo.org> d4x-2.4.1-r1.ebuild:
+ workaround deprecated gtk_ calls in 2.4.1 (#32202)
+
+*d4x-2.5.0_rc2 (04 Feb 2004)
+
+ 04 Feb 2004; Alastair Tse <liquidx@gentoo.org> d4x-2.4.1.ebuild,
+ d4x-2.5.0_beta2.ebuild, d4x-2.5.0_rc2.ebuild, metadata.xml:
+ version bump and cleanup (#37018)
+
+*d4x-2.5.0_beta2 (31 Aug 2003)
+
+ 31 Aug 2003; Alastair Tse <liquidx@gentoo.org> d4x-2.5.0_beta2.ebuild :
+ version bump. fixed some old compile probs (#24504). thanks to Nicolas Kaiser
+ <nikai@nikai.net>
+
+*d4x-2.4.1-r1 (30 Mar 2003)
+
+ 30 Mar 2003; Martin Schlemmer <azarah@gentoo.org> d4x-2.4.1-r1.ebuild :
+ Fix a miscompile for me with gcc-3.2.2 and CFLAGS="-O2". Fix indentation
+ of KDE menu stuff.
+
+*d4x-2.4.1 (08 Mar 2003)
+
+ 09 Mar 2003; Alastair Tse <liquidx@gentoo.org> d4x-2.4.1.ebuild :
+ Installs KDE menu entry. Cleaned deps.
+
+ 08 Mar 2003; Alastair Tse <liquidx@gentoo.org> d4x-2.4.1.ebuild :
+ Version Bump. Marked as unstable. Fixes #17023.
+
+ 06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
+
+*nt-2.4_beta (19 Oct 2002)
+
+ 19 Oct 2002; Martin Schlemmer <azarah@gentoo.org> :
+ Add beta to portage.
+
+ 1 Sep 2002; Martin Schlemmer <azarah@gentoo.org> :
+ Move the whole shebang to net-misc/d4x, as it seems not all know
+ that it was named nt (cannot expect it really), and I think our
+ current nt-2.03 ebuild is much more complete than the newly added
+ one.
+
+*d4x-2.03 (1 Sep 2002)
+
+ 1 Sep 2002; Martin Schlemmer <azarah@gentoo.org> nt-2.03.ebuild :
+ New version.
+
+*nt-2.0.2 (23 Jul 2002)
+
+ 18 Jul 2002; Daniel Ahlberg <aliz@gentoo.org> nt-2.02.ebuild :
+ New version that should fix GCC 3.1 compile problems. Ebuild
+ submitted by Daniel Mettler <mettlerd@icu.unizh.ch>.
+
+*nt-2.01 (7 Jun 2002)
+
+ 09 Jul 2002; phoen][x <phoenix@gentoo.org> nt-2.01.ebuild :
+ Added KEYWORDS, LICENSE.
+
+ 7 Jun 2002; Martin Schlemmer <azarah@gentoo.org> :
+ Bump to latest version.
+
+*nt-2.0 (30 Apr 2002)
+
+ 09 Jul 2002; phoen][x <phoenix@gentoo.org> nt-2.0.ebuild :
+ Added KEYWORDS, LICENSE.
+
+ 3 Jun 2002: Preston A. Elder <prez@gentoo.org> files/nt-2.0-gcc31.patch :
+ Added patch to make compile with gcc 3.1
+
+*nt-2.0_rc2 (28 Apr 2002)
+
+ 09 Jul 2002; phoen][x <phoenix@gentoo.org> nt-2.0_rc2.ebuild :
+ Added KEYWORDS, LICENSE.
+
+*nt-1.30 (1 Feb 2002)
+
+ 09 Jul 2002; phoen][x <phoenix@gentoo.org> nt-1.30.ebuild :
+ Added KEYWORDS, LICENSE, SLOT.
+
+ 1 Feb 2002; G.Bevin <gbevin@gentoo.org> ChangeLog :
+ Added initial ChangeLog which should be updated whenever the package is
+ updated in any way. This changelog is targetted to users. This means that the
+ comments should well explained and written in clean English. The details about
+ writing correct changelogs are explained in the skel.ChangeLog file which you
+ can find in the root directory of the portage repository.
diff --git a/net-misc/d4x/Manifest b/net-misc/d4x/Manifest
new file mode 100644
index 0000000..f16da39
--- /dev/null
+++ b/net-misc/d4x/Manifest
@@ -0,0 +1,7 @@
+AUX d4x-2.5.7.1-ds-compile.patch 2799 SHA256 6faaf847883be9b2ddf275b94e77e8bdb70a8c008ba6c27ec6db19fd336d1160 SHA512 0fa471b31418513d30bbabc6013cec1c474f2dfa04fbe857af4b3ea40ca429507948e89a481deacacc5d539cb42cbff9b29e3793f05eaf9f9dfd1d67cf135d64 WHIRLPOOL bfa562fcd496cda3e91d5b4300e82aa238503aeaf18bbd20bf91bbfbaf494dfb15389202c9998af85f5c5c05fbe15ce7361feda7937ffb3a1875ff4fbcedb89c
+AUX d4x-2.5.7.1-gentoo.patch 3760 SHA256 9a9f1a15775a1286dec4a0ec9960b65883bb428498707b8b7b556aaa1a9db69f SHA512 10286577216de4fc155d6d1a27f63c193425c1c5faaa785996db643298b46d8abbfa9d3663f81c1ee7a3201108346ceb317720dfbc8c1bba9be1ad407f3bf1e5 WHIRLPOOL fd06fca58110be03092e4b647ff24af44cab5dd4bded5f2af633231e4347b3380e4af4d3306230a816bbbecd443f46e9a426b58d26b78e6e7c6b701d5adebdc8
+AUX d4x-ds-X.diff 1216 SHA256 02fe41eb14baeee84db4251e2e839cd83dd6a3b2924d3b87ac1e623d9b55ea8f SHA512 b08601bd0a066e9e3a8411686d4c41c5c9e27099d54085e0341ab5b563816a14e93a5cb6c115564b7448e4256fc11f25cc7cf6b827a7a02f81c1fa7e9ffb9e96 WHIRLPOOL 9d777d701a37094bcc4c8121f52093cc33f626ae49610756d29cc5f09eae654104018b403adaf88279376cc106e6cd8f80e6dedee3d5de203246efcce9d39d9d
+DIST d4x-2.5.7.1.tar.bz2 1606760 SHA256 7504bd38e561877ff5217e0e01dcb8eecaf47540248c7d15d6d1fabe049032c4 SHA512 ddf9a1f519e74268d20f5f0c9334559aa4cc26bd0cd5fd7d5f84ffcccaa445f8ac6078682be9ad9edce4fb0a984314c069c7fe40137e5d423e77e692aaa6a834 WHIRLPOOL 86bfa34ec0f2b86668a5dc31a8aabc03c4ace5c306b9e58e554e15e3165877da4f8d1178da6b598f6b550ca547847193941ad635372d7e78cc62c08a65d47103
+EBUILD d4x-2.5.7.1-r3.ebuild 1529 SHA256 3f1ec2d9121fb44acc01d450d79418f694a93cd9ed7b9d3d8c4e6cb9579d6a77 SHA512 4263f5888d3342f626706449721e60fd96577d7b42d052286f17cddde4bf284e8fd94a28bdaa9a2876280803139987d7e408aeefe1b915095b1f4dd1ea7b2bd8 WHIRLPOOL 8163c72bc76baadfeb0617208c42b5efbbdd5b33747110a254f3e71e2600c4ba32cf67e6179a3e4f9f19bafba55ed10c8c0df25666066c39a1118f8817475b2e
+MISC ChangeLog 8168 SHA256 5093bea5fc441050638f4e88ca7f504f0817a419c0c8820a38d9869d0bcd7eb7 SHA512 c1fa6d0b93ab985f0eda6666dce1178a60cb736bd55e4a48a1a04c6125323048b0cad206af7128c1557c41cab4268626366a4ae8ac85ab681fd56a88e7cbf5de WHIRLPOOL 90520a31a121b51588d0f8ecbf9c7521ff60ee457bdb4e7c947f7dc28240d6f1fcae76a68e20cbddd155b1451fb73b476cfb3ad5cbe0e73efb5a4c5a2a314c8b
+MISC metadata.xml 165 SHA256 d7da9ed29b7afb87ac00580d48a49d248f89c92269e9a7791782dc72f4490aec SHA512 243d1391ff105563c9bf0f75b1eab39434cfb69e084e81cebf6e4eb3aa391cd7e36210b2c3808895bf876dd761eb72330144af2a81e467453c60b37ccdf0e63c WHIRLPOOL f63c52b91f14d86972c7de46b5a50b2d47822a1347d627e05845027ff75299dc79a135988141e1dec933925c4e0213287ef6933ed76ed2fd3fcdff3757c1766b
diff --git a/net-misc/d4x/d4x-2.5.7.1-r3.ebuild b/net-misc/d4x/d4x-2.5.7.1-r3.ebuild
new file mode 100644
index 0000000..78c6725
--- /dev/null
+++ b/net-misc/d4x/d4x-2.5.7.1-r3.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/d4x/d4x-2.5.7.1-r2.ebuild,v 1.4 2007/11/14 15:20:17 armin76 Exp $
+
+inherit eutils flag-o-matic
+
+DESCRIPTION="GTK based download manager for X."
+HOMEPAGE="http://www.krasu.ru/soft/chuchelo"
+SRC_URI="http://d4x.krasu.ru/files/${P}.tar.bz2"
+
+KEYWORDS="amd64 ~ppc sparc x86"
+SLOT="0"
+LICENSE="Artistic"
+IUSE="ao esd nls oss ssl"
+
+RDEPEND=">=x11-libs/gtk+-2
+ dev-libs/boost
+ ssl? ( dev-libs/openssl )
+ !ao? ( esd? ( media-sound/esound ) )
+ ao? ( media-libs/libao )"
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig
+ nls? ( sys-devel/gettext dev-util/intltool )"
+
+pkg_setup() {
+ use ao && ewarn "Selecting USE ao will disable oss and esd."
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ # Bugs #111769, #130479 and #193360 plus more.
+ epatch "${FILESDIR}"/${P}-gentoo.patch || die
+ epatch "${FILESDIR}"/d4x-2.5.7.1-ds-compile.patch || die
+ epatch "${FILESDIR}"/d4x-ds-X.diff || die
+}
+
+src_compile() {
+ append-flags -D_FILE_OFFSET_BITS=64
+
+ econf $(use_enable nls) \
+ $(use_enable esd) \
+ $(use_enable oss) \
+ $(use_enable ssl openssl) \
+ $(use_enable ao libao)
+
+ emake OPTFLAGS="${CXXFLAGS}" || die "emake failed."
+}
+
+src_install () {
+ emake -j1 DESTDIR="${D}" install || die "emake install failed."
+
+ dodoc AUTHORS ChangeLog* NEWS README PLANS TODO
+ docinto doc
+ dodoc DOC/{FAQ*,README*,THANKS,TROUBLES}
+ doman DOC/nt.1
+
+ newicon share/nt.xpm ${PN}.xpm
+ make_desktop_entry ${PN} ${PN} ${PN}
+}
diff --git a/net-misc/d4x/files/d4x-2.5.7.1-ds-compile.patch b/net-misc/d4x/files/d4x-2.5.7.1-ds-compile.patch
new file mode 100644
index 0000000..b4620d0
--- /dev/null
+++ b/net-misc/d4x/files/d4x-2.5.7.1-ds-compile.patch
@@ -0,0 +1,96 @@
+diff -dPNur d4x-2.5.7.1/main/face/edit.cc d4x-2.5.7.1-ds/main/face/edit.cc
+--- d4x-2.5.7.1/main/face/edit.cc 2006-03-20 01:10:36.000000000 +0100
++++ d4x-2.5.7.1-ds/main/face/edit.cc 2011-10-09 12:34:07.000000000 +0200
+@@ -1450,7 +1450,7 @@
+
+ static void _proxy_port_changed_(GtkEntry *entry,GtkEntry *entryh){
+ const char *tmp=gtk_entry_get_text(entryh);
+- char *tmp1=index(tmp,':');
++ char *tmp1=(char*)index(tmp,':');
+ if (tmp1){
+ *tmp1=0;
+ char *ns=sum_strings(tmp,":",gtk_entry_get_text(entry),NULL);
+diff -dPNur d4x-2.5.7.1/main/ftp.cc d4x-2.5.7.1-new/main/ftp.cc
+--- d4x-2.5.7.1/main/ftp.cc 2006-04-05 21:11:45.000000000 +0200
++++ d4x-2.5.7.1-new/main/ftp.cc 2011-10-09 12:41:22.000000000 +0200
+@@ -261,7 +261,7 @@
+ };
+
+ static void d4x_ftp_parse_pasv(const char *str,int args[]){
+- char *a=index(str,'(');
++ char *a=(char*)index(str,'(');
+ if (a==NULL) return;
+ a+=1;
+ int i=0;
+diff -dPNur d4x-2.5.7.1/main/html.cc d4x-2.5.7.1-new/main/html.cc
+--- d4x-2.5.7.1/main/html.cc 2005-09-13 07:42:40.000000000 +0200
++++ d4x-2.5.7.1-new/main/html.cc 2011-10-09 12:38:50.000000000 +0200
+@@ -700,7 +700,7 @@
+
+ void tHtmlParser::set_content_type(const char *ct){
+ //Example: text/html; charset=koi8-r
+- char *a=index(ct,'=');
++ char *a=(char*)index(ct,'=');
+ if (a) codepage=a+1;
+ };
+
+diff -dPNur d4x-2.5.7.1/main/locstr.cc d4x-2.5.7.1-new/main/locstr.cc
+--- d4x-2.5.7.1/main/locstr.cc 2005-11-11 22:38:45.000000000 +0100
++++ d4x-2.5.7.1-new/main/locstr.cc 2011-10-09 12:40:33.000000000 +0200
+@@ -281,7 +281,7 @@
+ DBC_RETVAL_IF_FAIL(str!=NULL,NULL);
+ DBC_RETVAL_IF_FAIL(what!=NULL,NULL);
+ while (*str){
+- char *a=index(what,*str);
++ char *a=(char*)index(what,*str);
+ if (a) return(str);
+ str++;
+ };
+@@ -472,7 +472,7 @@
+ char *escape_char(const char *where,char what,char bywhat){
+ DBC_RETVAL_IF_FAIL(where!=NULL,NULL);
+ int num=0;
+- char *tmp=index(where,what);
++ char *tmp=(char*)index(where,what);
+ while(tmp){
+ num+=1;
+ tmp=index(tmp+1,what);
+@@ -481,7 +481,7 @@
+ char *rvalue=new char[strlen(where)+num*2+1];
+ *rvalue=0;
+ char *r=rvalue;
+- tmp=index(where,what);
++ tmp=(char*)index(where,what);
+ while(tmp){
+ if (tmp-where)
+ memcpy(r,where,tmp-where);
+@@ -490,7 +490,7 @@
+ r[1]=what;
+ r+=2;
+ where=tmp+1;
+- tmp=index(where,what);
++ tmp=(char*)index(where,what);
+ };
+ *r=0;
+ if (*where)
+@@ -962,17 +962,17 @@
+ DBC_RETVAL_IF_FAIL(a!=NULL,NULL);
+ DBC_RETVAL_IF_FAIL(b!=NULL,NULL);
+ int i=0;
+- char *temp=index(b,'/');
++ char *temp=(char*)index(b,'/');
+ while (temp){
+ while (*temp=='/') temp+=1;
+ temp=index(temp,'/');
+ i+=1;
+ };
+ i-=1;
+- temp=rindex(a,'/');
++ temp=(char*)rindex(a,'/');
+ while (temp && i>0){
+ *temp=0;
+- char *tmp=rindex(a,'/');
++ char *tmp=(char*)rindex(a,'/');
+ *temp='/';
+ temp=tmp;
+ i-=1;
diff --git a/net-misc/d4x/files/d4x-2.5.7.1-gentoo.patch b/net-misc/d4x/files/d4x-2.5.7.1-gentoo.patch
new file mode 100644
index 0000000..f0014ca
--- /dev/null
+++ b/net-misc/d4x/files/d4x-2.5.7.1-gentoo.patch
@@ -0,0 +1,101 @@
+diff -ur d4x-2.5.7.1.orig/configure d4x-2.5.7.1/configure
+--- d4x-2.5.7.1.orig/configure 2006-04-12 19:48:29.000000000 +0300
++++ d4x-2.5.7.1/configure 2007-10-28 10:56:11.000000000 +0200
+@@ -18398,11 +18398,6 @@
+
+
+ cat >>confdefs.h <<\_ACEOF
+-#define GTK_DISABLE_DEPRECATED
+-_ACEOF
+-
+-
+-cat >>confdefs.h <<\_ACEOF
+ #define _FILE_OFFSET_BITS 64
+ _ACEOF
+
+diff -ur d4x-2.5.7.1.orig/configure.ac d4x-2.5.7.1/configure.ac
+--- d4x-2.5.7.1.orig/configure.ac 2005-11-05 01:35:38.000000000 +0200
++++ d4x-2.5.7.1/configure.ac 2007-10-28 10:56:11.000000000 +0200
+@@ -298,7 +298,6 @@
+
+ # Other needed defines
+ AC_DEFINE(_REENTRANT, , [Enable reenrant code of glibc])
+-AC_DEFINE(GTK_DISABLE_DEPRECATED, , [Enable warnings about deprecated functions usage])
+ AC_DEFINE(_FILE_OFFSET_BITS, 64, [To support files over 2GB])
+
+ # Prepare all requiered flags
+Only in d4x-2.5.7.1: de.po
+diff -ur d4x-2.5.7.1.orig/main/face/list.cc d4x-2.5.7.1/main/face/list.cc
+--- d4x-2.5.7.1.orig/main/face/list.cc 2006-03-20 02:29:41.000000000 +0200
++++ d4x-2.5.7.1/main/face/list.cc 2007-10-28 10:56:11.000000000 +0200
+@@ -8,7 +8,6 @@
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+-#define GTK_DISABLE_DEPRECATED
+
+ #include <stdio.h>
+ #include <gtk/gtk.h>
+diff -ur d4x-2.5.7.1.orig/main/face/prefs.cc d4x-2.5.7.1/main/face/prefs.cc
+--- d4x-2.5.7.1.orig/main/face/prefs.cc 2005-11-05 21:03:19.000000000 +0200
++++ d4x-2.5.7.1/main/face/prefs.cc 2007-10-28 11:04:15.000000000 +0200
+@@ -9,6 +9,7 @@
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
++#include <libintl.h>
+ #include <gtk/gtk.h>
+ #include <gdk/gdkkeysyms.h>
+ #include "../ntlocale.h"
+diff -ur d4x-2.5.7.1.orig/main/signal.cc d4x-2.5.7.1/main/signal.cc
+--- d4x-2.5.7.1.orig/main/signal.cc 2006-04-05 23:11:43.000000000 +0300
++++ d4x-2.5.7.1/main/signal.cc 2007-10-28 10:56:11.000000000 +0200
+@@ -89,7 +89,7 @@
+
+
+ void my_pthreads_mutex_init(pthread_mutex_t *lock){
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__GLIBC__)
+ /* manual page for mutexes said that mutexes in linux is fast by
+ default...
+ */
+diff -ur d4x-2.5.7.1.orig/main/socket.cc d4x-2.5.7.1/main/socket.cc
+--- d4x-2.5.7.1.orig/main/socket.cc 2006-04-09 15:39:25.000000000 +0300
++++ d4x-2.5.7.1/main/socket.cc 2007-10-28 10:56:11.000000000 +0200
+@@ -165,10 +165,10 @@
+ return(SOCKET_CANT_ALLOCATE);
+ int a=1;
+ setsockopt(fd,SOL_SOCKET,SO_KEEPALIVE,(char *)&a,sizeof(a));
+- setsockopt(fd,SOL_SOCKET,SO_KEEPALIVE,(char *)&a,sizeof(a));
++ //setsockopt(fd,SOL_SOCKET,SO_KEEPALIVE,(char *)&a,sizeof(a));
+
+ size_t sl=2000; //set receive buffer to default+30% MTU size
+- setsockopt(fd,SOL_SOCKET,SO_RCVBUF,(char *)&sl,sizeof(sl));
++ //setsockopt(fd,SOL_SOCKET,SO_RCVBUF,(char *)&sl,sizeof(sl));
+
+ if (!connect_impl())
+ return(SOCKET_CANT_CONNECT);
+diff -ur d4x-2.5.7.1.orig/Makefile.am d4x-2.5.7.1/Makefile.am
+--- d4x-2.5.7.1.orig/Makefile.am 2005-08-30 04:48:55.000000000 +0300
++++ d4x-2.5.7.1/Makefile.am 2007-10-28 11:28:02.000000000 +0200
+@@ -4,7 +4,7 @@
+
+ ACLOCAL_AMFLAGS = -I m4
+
+-SUBDIRS = DOC intl main po share
++SUBDIRS = intl main po share
+
+ # Extra files/dirs to be included in distribution
+ EXTRA_DIST = $(top_srcdir)/admin/Makefile.template \
+diff -ur d4x-2.5.7.1.orig/Makefile.in d4x-2.5.7.1/Makefile.in
+--- d4x-2.5.7.1.orig/Makefile.in 2006-04-12 19:48:32.000000000 +0300
++++ d4x-2.5.7.1/Makefile.in 2007-10-28 11:27:53.000000000 +0200
+@@ -256,7 +256,7 @@
+ target_os = @target_os@
+ target_vendor = @target_vendor@
+ ACLOCAL_AMFLAGS = -I m4
+-SUBDIRS = DOC intl main po share
++SUBDIRS = intl main po share
+
+ # Extra files/dirs to be included in distribution
+ EXTRA_DIST = $(top_srcdir)/admin/Makefile.template \
diff --git a/net-misc/d4x/files/d4x-ds-X.diff b/net-misc/d4x/files/d4x-ds-X.diff
new file mode 100644
index 0000000..72d3596
--- /dev/null
+++ b/net-misc/d4x/files/d4x-ds-X.diff
@@ -0,0 +1,24 @@
+diff -dPNur d4x-2.5.7.1-orig/configure d4x-2.5.7.1/configure
+--- d4x-2.5.7.1-orig/configure 2017-01-29 09:42:34.000000000 +0100
++++ d4x-2.5.7.1/configure 2017-01-29 09:46:56.947138276 +0100
+@@ -18405,7 +18405,7 @@
+ # Prepare all requiered flags
+ CXXFLAGS="$CXXFLAGS $OS_CXXFLAGS"
+ CPPFLAGS="$CPPFLAGS $ESD_CFLAGS $ESD_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $OS_INCLUDES $AO_CFLAGS $SSL_CFLAGS"
+-LIBS="$LIBS $ESD_LIBS $GLIB_LIBS $GTK_LIBS $LIBRX $AO_LIBS $SSL_LIBS"
++LIBS="$LIBS $ESD_LIBS $GLIB_LIBS $GTK_LIBS $LIBRX $AO_LIBS $SSL_LIBS -lX11"
+ LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
+
+ # Remove duplicates from options
+diff -dPNur d4x-2.5.7.1-orig/configure.ac d4x-2.5.7.1/configure.ac
+--- d4x-2.5.7.1-orig/configure.ac 2017-01-29 09:47:14.316452900 +0100
++++ d4x-2.5.7.1/configure.ac 2017-01-29 09:42:34.801390253 +0100
+@@ -303,7 +303,7 @@
+ # Prepare all requiered flags
+ CXXFLAGS="$CXXFLAGS $OS_CXXFLAGS"
+ CPPFLAGS="$CPPFLAGS $ESD_CFLAGS $ESD_CFLAGS $GLIB_CFLAGS $GTK_CFLAGS $OS_INCLUDES $AO_CFLAGS $SSL_CFLAGS"
+-LIBS="$LIBS $ESD_LIBS $GLIB_LIBS $GTK_LIBS $LIBRX $AO_LIBS $SSL_LIBS"
++LIBS="$LIBS $ESD_LIBS $GLIB_LIBS $GTK_LIBS $LIBRX $AO_LIBS $SSL_LIBS -lX11"
+ LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
+
+ # Remove duplicates from options
diff --git a/net-misc/d4x/metadata.xml b/net-misc/d4x/metadata.xml
new file mode 100644
index 0000000..40838bc
--- /dev/null
+++ b/net-misc/d4x/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>desktop-misc</herd>
+</pkgmetadata>
diff --git a/net-misc/httptunnel/Manifest b/net-misc/httptunnel/Manifest
new file mode 100644
index 0000000..1a45d70
--- /dev/null
+++ b/net-misc/httptunnel/Manifest
@@ -0,0 +1,6 @@
+AUX htc 643 RMD160 84d138856798707c7c46d41dba9b81125e71d62e SHA1 67895977fd492c57d0f67e117a75172007b2597c SHA256 f6ec7ade4a7e188888a78898bbe8d4234349009299d03542c4be90b9b4860b82
+AUX htc.sysconfig 213 RMD160 09116d614b30e742fbd969f6418cb8051a9226cc SHA1 d72d48fdca00aac752cc75f2d84b18c1d4337194 SHA256 468fdeb7cfe16cca1787533da0b30628a99c93006d9d296ac2084c8a63534caa
+AUX hts 492 RMD160 fecd4c2ed4b7dbf2eb36730c46991ec392292cca SHA1 cad9e1303c5c51bad879863b5fe8b95fe9b809f9 SHA256 5fe3cd340414ed51e00548fddfcd1f8da957b3db7f9d35eaff5cbbc6ed941a35
+AUX hts.sysconfig 232 RMD160 4841a5776df7a4256a57eb4838ec3bda03424466 SHA1 56cd0d049b9172dabca8bfac8964f261dada0632 SHA256 3c10b6b356c309314fb59481dfc1bc53a7bc76556795d60e60fe9e88520d612b
+DIST httptunnel-3.3.tar.gz 262749 RMD160 0e0a34dbe122510b19a2e37f3dcaeab8ff7cae5d SHA1 e3fa5c6499cbad9202bb7a3ba8a5b6478a60a3f3 SHA256 142f82b204876c2aa90f19193c7ff78d90bb4c2cba99dfd4ef625864aed1c556
+EBUILD httptunnel-3.3-r1.ebuild 1014 RMD160 c13eff5d95b69e3f2d560933c5dd6e92ec145a22 SHA1 6a588de5f562dcd99767da22a2e330b52d1240d6 SHA256 0e8f4b846d15dd80a93ed612e9f08693afa429611e871630efb2547edb2131a9
diff --git a/net-misc/httptunnel/files/htc b/net-misc/httptunnel/files/htc
new file mode 100755
index 0000000..c06fcb1
--- /dev/null
+++ b/net-misc/httptunnel/files/htc
@@ -0,0 +1,31 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting httptunnel (client)"
+
+ htc_args=""
+ if [ -n "$HTC_PROXY" ]; then
+ htc_args="$htc_args -P $HTC_PROXY"
+ fi
+
+ if [ -n "$HTC_SERVICE_PORT" ]; then
+ htc_args="$htc_args -F $HTC_SERVICE_PORT"
+ fi
+
+ start-stop-daemon --start --quiet --exec /usr/bin/htc -c nobody -- $htc_args $HTC_SERVER:$HTC_PORT
+
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping httptunnel (client)"
+ start-stop-daemon --stop --retry 5 --quiet --name htc
+ eend $?
+}
diff --git a/net-misc/httptunnel/files/htc.sysconfig b/net-misc/httptunnel/files/htc.sysconfig
new file mode 100644
index 0000000..f31ba55
--- /dev/null
+++ b/net-misc/httptunnel/files/htc.sysconfig
@@ -0,0 +1,13 @@
+###
+## Client Configuration
+###
+
+# Server and port HTS is running on
+HTC_SERVER=darkserv1.dyndns.org
+HTC_PORT=8080
+
+# Proxy Server
+HTC_PROXY=217.113.0.1:80
+
+# The port HTC is listinening for
+HTC_SERVICE_PORT=5000
diff --git a/net-misc/httptunnel/files/hts b/net-misc/httptunnel/files/hts
new file mode 100755
index 0000000..37b902b
--- /dev/null
+++ b/net-misc/httptunnel/files/hts
@@ -0,0 +1,20 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need net $HTS_SERVICE
+}
+
+start() {
+ ebegin "Starting httptunnel (server)"
+ start-stop-daemon --start --quiet --exec /usr/bin/hts -c nobody -- -S -F $HTS_SERVICE_SERVER:$HTS_SERVICE_PORT $HTS_PORT
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping httptunnel (server)"
+ start-stop-daemon --stop --retry 5 --quiet --name hts
+ eend $?
+}
diff --git a/net-misc/httptunnel/files/hts.sysconfig b/net-misc/httptunnel/files/hts.sysconfig
new file mode 100644
index 0000000..eb3fd3b
--- /dev/null
+++ b/net-misc/httptunnel/files/hts.sysconfig
@@ -0,0 +1,12 @@
+###
+## Server Configuration
+###
+
+# Port HTS listening for connections
+HTS_PORT=8080
+
+# Service connections are redirected to.
+HTS_SERVICE=vtun
+# Server and port service running on
+HTS_SERVICE_SERVER=localhost
+HTS_SERVICE_PORT=5000
diff --git a/net-misc/httptunnel/httptunnel-3.3-r1.ebuild b/net-misc/httptunnel/httptunnel-3.3-r1.ebuild
new file mode 100644
index 0000000..3911c26
--- /dev/null
+++ b/net-misc/httptunnel/httptunnel-3.3-r1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/httptunnel/httptunnel-3.3.ebuild,v 1.4 2005/08/13 23:14:57 hansmi Exp $
+
+DESCRIPTION="httptunnel can create IP tunnels through firewalls/proxies using HTTP"
+HOMEPAGE="http://www.nocrew.org/software/httptunnel.html"
+LICENSE="GPL-2"
+DEPEND=""
+KEYWORDS="ppc sparc x86 amd64"
+IUSE=""
+SLOT="0"
+#RDEPEND=""
+SRC_URI="http://www.nocrew.org/software/httptunnel/${P}.tar.gz"
+
+src_compile() {
+ ./configure \
+ --host=${CHOST} \
+ --prefix=/usr \
+ --infodir=/usr/share/info \
+ --mandir=/usr/share/man || die "./configure failed"
+ emake || die
+}
+
+src_install () {
+ make DESTDIR=${D} install || die
+
+ dodir /etc/conf.d /etc/init.d
+ install -c -m 755 "${FILESDIR}"/htc ${D}/etc/init.d
+ install -c -m 755 "${FILESDIR}"/hts ${D}/etc/init.d
+ install -c -m 644 "${FILESDIR}"/htc.sysconfig ${D}/etc/conf.d/htc
+ install -c -m 644 "${FILESDIR}"/hts.sysconfig ${D}/etc/conf.d/hts
+}
+
diff --git a/net-misc/nxclient/ChangeLog b/net-misc/nxclient/ChangeLog
new file mode 100644
index 0000000..6e45790
--- /dev/null
+++ b/net-misc/nxclient/ChangeLog
@@ -0,0 +1,446 @@
+# ChangeLog for net-misc/nxclient
+# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/nxclient/ChangeLog,v 1.95 2011/09/23 09:47:17 voyageur Exp $
+
+ 23 Sep 2011; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.4.0.5.ebuild, -nxclient-3.4.0.7.ebuild,
+ -nxclient-3.4.0.7-r1.ebuild, -nxclient-3.5.0.6.ebuild:
+ Drop 3.4.0 versions
+
+ 23 Aug 2011; Markos Chandras <hwoarang@gentoo.org> nxclient-3.5.0.7.ebuild:
+ Stable on amd64 wrt bug #378345
+
+ 20 Aug 2011; Pawel Hajdan jr <phajdan.jr@gentoo.org> nxclient-3.5.0.7.ebuild:
+ x86 stable wrt security bug #378345
+
+*nxclient-3.5.0.7 (28 Jun 2011)
+
+ 28 Jun 2011; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.5.0.7.ebuild:
+ Maintenance release bump, bugfixes only
+
+*nxclient-3.5.0.6 (22 May 2011)
+
+ 22 May 2011; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.5.0.6.ebuild:
+ 3.5.0 version bump, mostly fixes consolidation from 3.4.0 branch
+
+*nxclient-3.4.0.7-r1 (22 Dec 2010)
+
+ 22 Dec 2010; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.4.0.7-r1.ebuild:
+ Make nxprint install optional with USE=cups, bug #347011
+
+ 19 Jul 2010; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.4.0.5.ebuild, nxclient-3.4.0.7.ebuild:
+ Depend on openssl 0.9.8, wrt bug #328355
+
+ 14 Jun 2010; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.3.0.6.ebuild:
+ Drop 3.3 NX versions
+
+ 11 May 2010; Samuli Suominen <ssuominen@gentoo.org>
+ nxclient-3.3.0.6.ebuild, nxclient-3.4.0.5.ebuild, nxclient-3.4.0.7.ebuild:
+ Fix libpng depend wrt #319247.
+
+ 10 May 2010; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.3.0.6.ebuild, nxclient-3.4.0.5.ebuild, nxclient-3.4.0.7.ebuild:
+ Correct libpng 1.2 dependency
+
+ 10 Mar 2010; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.3.0.6.ebuild, nxclient-3.4.0.5.ebuild, nxclient-3.4.0.7.ebuild:
+ Fix libpng depend to 1.2 (binary package)
+
+*nxclient-3.4.0.7 (10 Mar 2010)
+
+ 10 Mar 2010; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.4.0.7.ebuild:
+ Maintenance release version bump
+
+ 17 Jan 2010; Samuli Suominen <ssuominen@gentoo.org>
+ nxclient-3.3.0.6.ebuild, nxclient-3.4.0.5.ebuild:
+ Replace jpeg-compat with slotted <jpeg-7.
+
+ 15 Dec 2009; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.3.0.3.ebuild:
+ Drop first 3.3.0 versions
+
+ 25 Nov 2009; Markus Meier <maekke@gentoo.org> nxclient-3.4.0.5.ebuild:
+ x86 stable, bug #291619
+
+ 10 Nov 2009; Richard Freeman <rich0@gentoo.org> nxclient-3.4.0.5.ebuild:
+ amd64 stable - 291619
+
+*nxclient-3.4.0.5 (30 Sep 2009)
+
+ 30 Sep 2009; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.4.0.5.ebuild:
+ 3.4.0 version bump. This version brings new capabilities such as: support
+ for CUPS 1.4 printing system, better detection of system commands to run
+ KDE and Gnome sessions and the possibility of configuring the server to
+ allow run sessions as the root user, and bugfixes (nxagent crash, cut and
+ paste problems, text on the titlebar in rootless session, ...)
+
+ 23 Aug 2009; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.3.0.3.ebuild, nxclient-3.3.0.6.ebuild:
+ Update dependency on media-libs/jpeg (package requires .62)
+
+ 29 May 2009; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.2.0.ebuild, -nxclient-3.2.0.13.ebuild,
+ -nxclient-3.2.0.14.ebuild:
+ Removing 3.2 versions
+
+ 04 Apr 2009; Markus Meier <maekke@gentoo.org> nxclient-3.3.0.6.ebuild:
+ amd64/x86 stable, bug #262910
+
+ 08 Mar 2009; Markus Meier <maekke@gentoo.org> nxclient-3.3.0.3.ebuild:
+ x86 stable, bug #256414
+
+ 05 Feb 2009; Richard Freeman <rich0@gentoo.org> nxclient-3.3.0.3.ebuild:
+ amd64 stable - 256414
+
+*nxclient-3.3.0.6 (16 Jan 2009)
+
+ 16 Jan 2009; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.3.0.6.ebuild:
+ Maintenance release version bump
+
+*nxclient-3.3.0.3 (21 Nov 2008)
+
+ 21 Nov 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.3.0.3.ebuild:
+ 3.3.0 version bump
+
+*nxclient-3.2.0.14 (26 Aug 2008)
+
+ 26 Aug 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.2.0.14.ebuild:
+ Add 3.2.0-14, x86 only. Bug #232045
+
+ 21 Jul 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.0.0-r3.ebuild, -nxclient-3.0.0-r5.ebuild,
+ -nxclient-3.1.0.ebuild, -nxclient-3.1.0-r1.ebuild:
+ Remove old 3.0/3.1 versions
+
+*nxclient-3.2.0.13 (21 Jul 2008)
+
+ 21 Jul 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.2.0-r1.ebuild, +nxclient-3.2.0.13.ebuild:
+ Add minor release to ebuild version
+
+*nxclient-3.2.0-r1 (16 Jul 2008)
+
+ 16 Jul 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.2.0-r1.ebuild:
+ First Maintenance Release, minor bugfixes
+
+ 05 Jun 2008; Peter Volkov <pva@gentoo.org> nxclient-3.2.0.ebuild:
+ amd64 stable, bug #222967.
+
+ 29 May 2008; Christian Faulhammer <opfer@gentoo.org>
+ nxclient-3.2.0.ebuild:
+ x86 stable, bug #222967
+
+*nxclient-3.2.0 (09 Apr 2008)
+
+ 09 Apr 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.2.0.ebuild:
+ Version bump, new 3.2.0 series
+
+ 19 Mar 2008; Peter Volkov <pva@gentoo.org> nxclient-3.1.0-r1.ebuild:
+ amd64 stable, security bug #210317.
+
+ 18 Feb 2008; Christian Faulhammer <opfer@gentoo.org> ChangeLog:
+ stable x86, security bug 210317
+
+ 18 Feb 2008; Christian Faulhammer <opfer@gentoo.org>
+ nxclient-3.1.0.ebuild:
+ stable x86, security bug 210317
+
+*nxclient-3.1.0-r1 (08 Feb 2008)
+
+ 08 Feb 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.0.0-r3.ebuild, nxclient-3.0.0-r5.ebuild, nxclient-3.1.0.ebuild,
+ +nxclient-3.1.0-r1.ebuild:
+ Maintenance release bump, shorten DESCRIPTION
+
+*nxclient-3.1.0 (14 Dec 2007)
+
+ 14 Dec 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.1.0.ebuild:
+ Version bump
+
+*nxclient-3.0.0-r5 (03 Dec 2007)
+
+ 03 Dec 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.0.0-r4.ebuild, +nxclient-3.0.0-r5.ebuild:
+ Version bump
+
+*nxclient-3.0.0-r4 (21 Oct 2007)
+
+ 21 Oct 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.0.0-r4.ebuild:
+ Version bump, closes bug #195663
+
+ 20 Sep 2007; Bernard Cafarelli <voyageur@gentoo.org> -files/nxwrapper,
+ -nxclient-2.1.0-r1.ebuild:
+ Remove vulnerable NX 2.1 versions, security bug #192712
+
+ 20 Sep 2007; Robert Buchholz <rbu@gentoo.org> nxclient-3.0.0-r3.ebuild:
+ amd64 stable (bug #180040)
+
+ 20 Sep 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.0.0-r3.ebuild:
+ Force openssl-0.9.8e DEPEND
+
+ 20 Sep 2007; Christian Faulhammer <opfer@gentoo.org>
+ nxclient-3.0.0-r3.ebuild:
+ stable x86, security bug 192712
+
+ 13 Sep 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-2.1.0-r1.ebuild, -nxclient-3.0.0-r2.ebuild,
+ nxclient-3.0.0-r3.ebuild:
+ Depend on >= 0.9.8 openssl
+ Thanks Adam Lassek <adam@doubleprime.net> in bug #192371
+
+ 07 Sep 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ files/digest-nxclient-3.0.0-r2, Manifest:
+ Fix Manifest, thanks Ben Maas <bmaas@open-techsys.com> in bug #191545
+
+ 06 Sep 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.0.0-r2.ebuild:
+ Restore 3.0.0-r2, new release has problems in nxssh
+
+*nxclient-3.0.0-r3 (06 Sep 2007)
+
+ 06 Sep 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.0.0-r2.ebuild, +nxclient-3.0.0-r3.ebuild:
+ Maintenance release bump
+
+ 10 Aug 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -files/1.5.0/50nxclient, -nxclient-1.5.0-r5.ebuild:
+ Removing old NX 1.5 version
+
+*nxclient-3.0.0-r2 (22 Jul 2007)
+
+ 22 Jul 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.0.0-r1.ebuild, +nxclient-3.0.0-r2.ebuild:
+ Second maintenance release
+
+*nxclient-3.0.0-r1 (06 Jul 2007)
+
+ 06 Jul 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-3.0.0.ebuild, +nxclient-3.0.0-r1.ebuild:
+ Maintenance release update
+
+ 03 Jul 2007; Christian Faulhammer <opfer@gentoo.org>
+ nxclient-2.1.0-r1.ebuild:
+ stable x86, bug 180040
+
+ 02 Jul 2007; Piotr Jaroszyński <peper@gentoo.org>
+ nxclient-1.5.0-r5.ebuild, nxclient-2.1.0-r1.ebuild, nxclient-3.0.0.ebuild:
+ (QA) RESTRICT clean up.
+
+ 25 Jun 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.0.0.ebuild:
+ Better handling of the icon files
+ Thanks Henning Schild <henning@wh9.tu-dresden.de> in bug #183037
+
+ 23 Jun 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-3.0.0.ebuild:
+ Fixed icons path and names
+
+*nxclient-3.0.0 (21 Jun 2007)
+
+ 21 Jun 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ +nxclient-3.0.0.ebuild:
+ Version bump
+
+ 13 Jun 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-1.5.0-r5.ebuild:
+ Drop qt dependency (statically linked binary)
+
+ 07 Jun 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-2.1.0-r1.ebuild:
+ Get DESCRIPTION back in one line, bug #181184
+
+ 12 May 2007; Bernard Cafarelli <voyageur@gentoo.org> metadata.xml:
+ Fixed maintainer in metadata.xml
+
+ 26 Apr 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ nxclient-1.5.0-r5.ebuild, nxclient-2.1.0-r1.ebuild:
+ Updated blocker on nxclient-2xterminalserver
+
+ 27 Mar 2007; Zac Medico <zmedico@gentoo.org> ChangeLog:
+ Fix broken Manifest due to commit without repoman.
+
+ 27 Mar 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -nxclient-2.1.0.ebuild:
+ Removed old version
+
+ 21 Mar 2007; Raúl Porcel <armin76@gentoo.org> nxclient-1.5.0-r5.ebuild:
+ x86 stable wrt bug 123386
+
+*nxclient-2.1.0-r1 (17 Mar 2007)
+
+ 17 Mar 2007; Bernard Cafarelli <voyageur@gentoo.org>
+ -files/1.3.0/50nxclient, +nxclient-2.1.0-r1.ebuild:
+ Added ~amd64 dependency, closes bug #165978
+ Installs pixmaps and desktop shortcuts
+ Bumped to NoMachine 2.1.0-17 release
+ Removed leftover file from 1.3.0
+
+ 14 Dec 2006; Elfyn McBratney <beu@gentoo.org> nxclient-2.1.0.ebuild:
+ Kill redundant DEPEND on sys-libs/zlib.
+
+ 08 Nov 2006; Stuart Herbert <stuart@gentoo.org> metadata.xml,
+ -nxclient-1.4.0-r5.ebuild, -nxclient-1.5.0-r2.ebuild,
+ -nxclient-1.5.0-r4.ebuild:
+ Removed older packages; no longer supported
+
+*nxclient-2.1.0 (08 Nov 2006)
+*nxclient-1.5.0-r5 (08 Nov 2006)
+
+ 08 Nov 2006; Stuart Herbert <stuart@gentoo.org> +files/nxwrapper,
+ +nxclient-1.5.0-r5.ebuild, +nxclient-2.1.0.ebuild:
+ nxclient now uses its bundled binary libs once more.
+ Version bump to latest client
+
+ 23 Aug 2006; Caleb Tennis <caleb@gentoo.org> nxclient-1.4.0-r5.ebuild,
+ nxclient-1.5.0-r2.ebuild, nxclient-1.5.0-r4.ebuild:
+ Fix qt3 deps
+
+ 10 May 2006; Stuart Herbert <stuart@gentoo.org> nxclient-1.5.0-r4.ebuild:
+ Fixed USE=xft unpack bug
+
+*nxclient-1.5.0-r4 (30 Apr 2006)
+
+ 30 Apr 2006; Stuart Herbert <stuart@gentoo.org> +nxclient-1.5.0-r4.ebuild:
+ Huge thanks to Jon Scruggs for these changes:
+
+ * Added nxesd dependency.
+ * Added more amd64 depends. (Thanks to Jon Severinsson)
+ * Cleaned up the x86 depends
+ * Fixed comments regarding nxesd
+ * Added xft use flag to allow the installation of the xft version of the
+ client.
+
+ 21 Mar 2006; Aron Griffis <agriffis@gentoo.org> nxclient-1.4.0-r5.ebuild,
+ -nxclient-1.5.0.ebuild, -nxclient-1.5.0-r1.ebuild,
+ nxclient-1.5.0-r2.ebuild:
+ Add modular X deps, remove older 1.5.0 ebuilds
+
+ 05 Mar 2006; Stuart Herbert <stuart@gentoo.org> nxclient-1.5.0-r2.ebuild:
+ Added missing lib-compat DEP; see bug #115574
+
+*nxclient-1.5.0-r2 (11 Jan 2006)
+
+ 11 Jan 2006; Aron Griffis <agriffis@gentoo.org> +nxclient-1.5.0-r2.ebuild:
+ Switch to using rpm for both x86 and amd64; this has the advantage of
+ providing desktop files to install in /usr/share/applications.
+
+*nxclient-1.5.0-r1 (15 Dec 2005)
+
+ 15 Dec 2005; Aron Griffis <agriffis@gentoo.org> +nxclient-1.5.0-r1.ebuild:
+ Bump upstream sources from 1.5.0-113 to 1.5.0-135
+
+ 25 Oct 2005; Aron Griffis <agriffis@gentoo.org> +files/1.5.0/50nxclient,
+ -nxclient-1.3.2-r1.ebuild, -nxclient-1.4.0-r3.ebuild,
+ -nxclient-1.4.0-r4.ebuild, nxclient-1.5.0.ebuild:
+ Install env.d snippet for 1.5.0 to set PATH. Remove versions prior to 1.4.0-r5
+
+*nxclient-1.5.0 (20 Oct 2005)
+
+ 20 Oct 2005; Aron Griffis <agriffis@gentoo.org> +nxclient-1.5.0.ebuild:
+ Bump to 1.5.0 (from 1.4.0-r5)
+
+ 23 May 2005; Stuart Herbert <stuart@gentoo.org> :
+ Added missing nxprint binary; fixed up deps on other nx-packages; thanks to
+ bug #91409
+
+*nxclient-1.4.0-r4 (17 Feb 2005)
+
+ 17 Feb 2005; Stuart Herbert <stuart@gentoo.org> +nxclient-1.4.0-r4.ebuild:
+ Bug 81308: missing dep; Daniel Herzog <expose@luftgetrock.net>
+
+ 28 Jan 2005; Gregorio Guidi <greg_g@gentoo.org> nxclient-1.3.2-r1.ebuild,
+ nxclient-1.4.0-r3.ebuild:
+ Avoid installing things in /usr/kde (#63863).
+
+ 02 Jan 2005; Stuart Herbert <stuart@gentoo.org> -nxclient-1.3.0.ebuild,
+ -nxclient-1.3.2.ebuild, -nxclient-1.4.0-r1.ebuild,
+ -nxclient-1.4.0-r2.ebuild, -nxclient-1.4.0.ebuild:
+ Removed obsolete version
+
+*nxclient-1.4.0-r3 (02 Jan 2005)
+
+ 02 Jan 2005; Stuart Herbert <stuart@gentoo.org> +nxclient-1.4.0-r3.ebuild:
+ Version bump
+
+*nxclient-1.4.0-r2 (13 Sep 2004)
+
+ 13 Sep 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.4.0-r1.ebuild,
+ +nxclient-1.4.0-r2.ebuild:
+ Added missing dep on gnu-netcat; added support for snapshot 5 again after
+ feedback from zypher@gentoo.org
+
+ 13 Sep 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.4.0-r1.ebuild:
+ Downgraded to snapshot 4 client
+
+*nxclient-1.4.0-r1 (12 Sep 2004)
+
+ 12 Sep 2004; Stuart Herbert <stuart@gentoo.org> +nxclient-1.4.0-r1.ebuild:
+ Added dep on nxproxy-1.4.0
+
+ 07 Sep 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.4.0.ebuild:
+ Updated to use latest nxclient snapshot
+
+ 30 Aug 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.4.0.ebuild:
+ Added snapshot 4; needed by freenx
+
+ 07 Jul 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.3.0.ebuild,
+ nxclient-1.3.2.ebuild, nxclient-1.4.0.ebuild:
+ Made sure HOMEPAGE is a valid URL; fixes bug 55315
+
+ 26 Jun 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.3.2.ebuild:
+ Added missing libqt dependency; for bug #51105
+
+*nxclient-1.4.0 (26 Jun 2004)
+
+ 26 Jun 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.4.0.ebuild:
+ Added binary snapshot of NX Client 1.4
+
+ 13 Jun 2004; Donnie Berkholz <spyderous@gentoo.org>; nxclient-1.3.0.ebuild,
+ nxclient-1.3.2.ebuild:
+ Change x11-base/xfree dependency to virtual/x11 (#52153).
+
+*nxclient-1.3.2 (15 May 2004)
+
+ 15 May 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.3.2.ebuild:
+ Version bump
+
+ 15 May 2004; Stuart Herbert <stuart@gentoo.org> nxclient-1.2.2-r1.ebuild,
+ nxclient-1.2.2.ebuild, nxclient-1.3.0_beta2.ebuild:
+ Removed old versions; I'm not supporting them any more
+
+*nxclient-1.3.0 (21 dec 2003)
+
+ 21 Dec 2003; Stuart Herbert <stuart@gentoo.org> :
+ Version bump
+
+*nxclient-1.3.0_beta2 (13 Nov 2003)
+
+ 13 Nov 2003; Stuart Herbert <stuart@gentoo.org> nxclient-1.3.0_beta2.ebuild:
+ Added 1.3.0_beta2
+
+*nxclient-1.2.2-r1 (10 Sep 2003)
+
+ 10 Sep 2003; stuart metadata.xml, nxclient-1.2.2-r1.ebuild,
+ nxclient-1.2.2.ebuild:
+ Added ebuild for nxclient-1.2.2-42 release
+
+*nxclient-1.2.2 (27 Aug 2003)
+
+ 27 Aug 2003; stuart nxclient-1.2.2.ebuild, files/1.2.2/50nxclient:
+ Initial import
+
diff --git a/net-misc/nxclient/Manifest b/net-misc/nxclient/Manifest
new file mode 100644
index 0000000..867fb88
--- /dev/null
+++ b/net-misc/nxclient/Manifest
@@ -0,0 +1,5 @@
+DIST nxclient-3.5.0-7.i386.tar.gz 4390184 BLAKE2B d1ff4bee11ef4a1675495b9894b75e2ab56faf0decf9f01232dea37db0a92f947c3e2e9bc9d8c4e6c2329945f28fb1a158f9a5a82d205c5b6a17ecd9250859fb SHA512 df14edc2cde518172439350407c23683b8275ec93b75d5da52108ef45deaf312cb56b872d76b9ff458fe187e9a0c3c8dfbb75bd0b12a2f1f424e1f629b89f397
+DIST nxclient-3.5.0-7.x86_64.tar.gz 4577325 BLAKE2B 9eae09d432065892ff1f9dd4c123f98eac25c7b0975313bb9caa2ab187fda6710668b81c7b36649550905ab436ae82e512abc2d47fd376f6c3582fdfcbb0c473 SHA512 37fb1fe5f4ba5be20076a7e8f9a99e66c894dd8c884a7dc1e6d5a4393d25e7db829564c4666e86c0fc897786dde79565257bdfafcc244c64357ccb59717fa875
+EBUILD nxclient-3.5.0.7-r1.ebuild 2004 BLAKE2B c845321a3267de991c8f4089fedc31c8cea5cfd962793af9599c8c5a9ba1059860d643388312a52f8bef60b47669cae4d4db00c531059714f3e8e4c8b94b2134 SHA512 3c798e5248c137b87018f2f468d64b922ab2c868eb1f333f601151c496d34f9c19b72ea5666a4f9b263ebf7026a8e0e15de225da455a374ae7178cdd2d2147d5
+MISC ChangeLog 14898 BLAKE2B 710c569a1ebf1387c87f7be383985452c3dbd0cdd4ad2424afb957f1587648554e1c6bea7f44d691ece5b8c42616ac36e98dbee23f2fe5fda6c2aed06c266616 SHA512 195e6fe13bfd238b31de60d47377c720eb85ab21b2046d56c372bbaa9c6dc39b203af79ab75f1e08c9112b04fddbfd69b90bb4d2d580c7c79dbc96c3084880e6
+MISC metadata.xml 323 BLAKE2B e4abfc91b3fdb4c2ce35c7d963aab5ddf52798c77953919d90f7aaddb579f7a2d03cd5db5d7c5cd9fa26412e7ea10c7219d7c65060c8dd9f82072c9647dd2635 SHA512 e10fd82582bd8fef76357f59d6385b2d14d507f577e8bac3a55f1dcfb68df1e74dbe07e798fbac5ca7eae699e289222ea234df1f1c3dea5c920bc6eb1ea14894
diff --git a/net-misc/nxclient/metadata.xml b/net-misc/nxclient/metadata.xml
new file mode 100644
index 0000000..1f377b6
--- /dev/null
+++ b/net-misc/nxclient/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>nx</herd>
+<longdescription>
+ NXClient is a X11/VNC/NXServer client especially tuned for using remote
+ desktops over low-bandwidth links such as the Internet
+</longdescription>
+</pkgmetadata>
diff --git a/net-misc/nxclient/nxclient-3.5.0.7-r1.ebuild b/net-misc/nxclient/nxclient-3.5.0.7-r1.ebuild
new file mode 100644
index 0000000..d71afb9
--- /dev/null
+++ b/net-misc/nxclient/nxclient-3.5.0.7-r1.ebuild
@@ -0,0 +1,68 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/nxclient/nxclient-3.5.0.7.ebuild,v 1.3 2011/08/23 17:20:12 hwoarang Exp $
+
+EAPI=2
+inherit eutils versionator
+
+MAJOR_PV="$(get_version_component_range 1-3)"
+FULL_PV="${MAJOR_PV}-$(get_version_component_range 4)"
+DESCRIPTION="X11/VNC/NXServer client (remote desktops over low-bandwidth links)"
+HOMEPAGE="http://www.nomachine.com/"
+SRC_URI="amd64? ( http://64.34.161.181/download/${MAJOR_PV}/Linux/nxclient-${FULL_PV}.x86_64.tar.gz )
+ x86? ( http://64.34.161.181/download/${MAJOR_PV}/Linux/nxclient-${FULL_PV}.i386.tar.gz )"
+LICENSE="nomachine"
+SLOT="0"
+KEYWORDS="-* amd64 x86"
+RESTRICT="strip"
+
+DEPEND=""
+RDEPEND="dev-libs/expat
+ >=dev-libs/openssl-0.9.8
+ media-libs/audiofile
+ virtual/jpeg:62
+ =media-libs/libpng-1.2*
+ media-libs/freetype
+ media-libs/fontconfig
+ x11-libs/libXft
+ x11-libs/libX11
+ x11-libs/libXdmcp
+ x11-libs/libXrender
+ x11-libs/libXau
+ x11-libs/libXext
+ sys-libs/zlib"
+
+S=${WORKDIR}/NX
+
+src_install()
+{
+ # we install nxclient into /usr/NX, to make sure it doesn't clash
+ # with libraries installed for FreeNX
+ local binaries="nxclient nxesd nxkill nxservice nxssh"
+
+ for x in $binaries; do
+ into /usr/NX
+ dobin bin/$x
+ into /usr
+ make_wrapper $x ./$x /usr/NX/bin /usr/NX/lib || die
+ done
+
+ dodir /usr/NX/lib
+ cp -P lib/libXcompsh.so* lib/libXcomp.so* "${D}"/usr/NX/lib
+
+ dodir /usr/NX/share
+ cp -R share "${D}"/usr/NX
+
+ # Add icons/desktop entries (missing in the tarball)
+ cd share/icons
+ for size in *; do
+ dodir /usr/share/icons/hicolor/${size}/apps
+ for icon in admin desktop icon wizard; do
+ dosym /usr/NX/share/icons/${size}/nxclient-${icon}.png \
+ /usr/share/icons/hicolor/${size}/apps
+ done
+ done
+ make_desktop_entry "nxclient" "NX Client" nxclient-icon
+ make_desktop_entry "nxclient -admin" "NX Session Administrator" nxclient-admin
+ make_desktop_entry "nxclient -wizard" "NX Connection Wizard" nxclient-wizard
+}
diff --git a/net-misc/rdesktop/Manifest b/net-misc/rdesktop/Manifest
new file mode 100644
index 0000000..de8bdf5
--- /dev/null
+++ b/net-misc/rdesktop/Manifest
@@ -0,0 +1,15 @@
+AUX rdesktop-1.6.0-smartcard_configure.patch 616 SHA256 04130d39c0472eda28600fd24592cf46ca0c222ef6c40d3bdd141670e388f365 SHA512 6f2651f5863f03bdecfbd59921f6031a72bf85f8025d72ca5f9dcf4231055dbb2436296684a647c72079df9c499bcbfb4d9af9c2432be84de41f70299b900544 WHIRLPOOL a298c5750039aae80a61242f25afc27e4c637be5ec1b66363c9a167560e2fdd2fbff00fbc4e6135ca5e084a16da5c79497081cc1184c1e078989d5f51f4fbd93
+AUX rdesktop-1.6.0-sound_configure.patch 799 SHA256 71db62d88e3c3bf5cbfceeddeb33958b2f24980ab3d7734511f13fd48a43e119 SHA512 d2f5cf974b042ca752fc5f114c7f3c87647cbf757c986bf163b183b19a1072942c413827331f74847f4cd5b3aa1d91a0a1f609fca8440ff0dd791a44ab74b888 WHIRLPOOL c1988ebf1e32a76df3e7b9ab1898c0ee66edb6a75cd0ec7b84fa1311025147bd8e7368a5bd61ded9af664a6057535f4b8bfce43d343e8707944ffe8d3243f722
+AUX rdesktop-1.7.0-libao_crash.patch 494 SHA256 0366402ca2319059d658004834d2189e38b89676bef654238439d0ed1b90c3cb SHA512 65477259452d78cadfe73679b70a7fde2486d2ec3dcacc3248174dc5869a62f7de97b9823801ce8c98dd956c2f92032076691b2f8820b05cbcd52fca4605f8ce WHIRLPOOL 61a96267378ad324a9187234bee680ba1336511d10f375fdea59a9cdf756e73a3160c3a4f6df9aa73c4d136503461f4a3f0295fb8a8ef8ea265841076fb2ce90
+AUX rdesktop-1.8.3-xrandr_configure.patch 647 SHA256 7ee48e138eca5917ca3b4b5a875caad890e21193ae335b12aa4a8ea175bf4636 SHA512 a0ef25458c2468b472a606e12502c1867cb06cb69f10e077f774396cd17f80af51ee2748385b203b63fb11280f8849cd70cc9d87dcc0ed2165e10597eb92cfa3 WHIRLPOOL fa0a2058fc97eb7bdc50606a474e7b3895670ce469c07024381955aa800bdfec8b88e75abd4a1adaed351e5f60a00dbb8b3478fd6f97d2a4086d478d8c9b28ee
+AUX rdesktop-keymap-additional 1568 SHA256 3642f38bff8902fa1b5093001ce8e076dcfeddf906b745173dec4ce61da42196 SHA512 b8bdb3a9b7354d1ef8f3bb503ba908befcc150ebb64882fb0cc4da4f638becdd450295a880359176e09813762f9b4a931c6cecf1e1d16001d01fd50e97b8347d WHIRLPOOL 610dd37cbd5023280b63bdd0bd71b764a7030ef2246f8ba8c8790fea952f496ab2742938507f33befb8ba92c93d7c6542168e1edcd666ad66393f696e5215d2c
+AUX rdesktop-keymap-cs 1536 SHA256 91bd229fdb7fb1f0d9e6d0dcf35a429a2c51afa1fb8e2b3414852dc528218b6e SHA512 ce12e9b05220e2d6d16ee2d283a69c4ef72e6b2438e0b76be1e96a7e20f8502b349706d4f9321723307c2e04cb687558cdbd3596b71b022fd47b3e0133178d96 WHIRLPOOL 1455435aaed5e6e2e79dbbbaad79b0cc43360559a0ccf28cb1cbd29e719b85b0c80f1d9905dfa881a9dcbccf59f3c5e73c40a78ae3e0e0147efc14678da106dc
+AUX rdesktop-keymap-sk 1561 SHA256 33024ca566d97b5c041d3ca45634d3baa075b456389140bd5991e3927fd37b07 SHA512 208fb85b60a0734ff76c71e9375b4cf014857d5d434ea9fa36d6bdc7e313a8f7225a9d2e4547cf0485d9fec65b22d7dfc555bc74d6a01ef87ab66deb824f864e WHIRLPOOL b6026e1291bf4af591852f7e7f6571f23d5fc8b27488101f9dde280a7b857691f2f374a666075c325ebc3d15c5cd404c511774fbf560338a7ca96c6763282528
+AUX rdesktop-xinerama.patch 4841 SHA256 4658c15112f7b244b56efc6a5fd676954d29286a9e807a303e0cabd6f5e24d05 SHA512 6b815d8a3850428385032a4bb6ecea3893c7d0578b217f0eecefde58f18b138f563a632da18825ac15f4c0b8eefbe1e09075cddd68311e0303fcf03b9bb5c402 WHIRLPOOL f032cb03217fd970ce8a635a635b6e4b2493952b3cd729d775e78bdef797725c97aef5ddbe0f81816efc604b418f5e8ad0ce95f8eb66e8c73ee567bed01129e4
+AUX rdesktop171-ds-xinerama.patch 5157 SHA256 2892fb88f29e8e2f99b5ec8d31a8377c29f466811a6fab1b704e762c09e456fb SHA512 22d5ade03413ec3b790c5dfce90df0f930a5d68ff8f8fe933c79f9b07ee37b416166369ed7bb8639f682bad74c86137c94af6531d6af01eef7b0c72900b4321d WHIRLPOOL 7ba91d737a856fc6eccc559261db02687156d285c5b484e69c633ce9f1455160a28a302fffe9ecc8f3cd578d5bd82331401f05a2e0b096723cad48a93109d723
+DIST rdesktop-1.6.0.tar.gz 284728 SHA256 35026eaa8e14ca8bd0ba3730926f14222f8452f2ac662623bbf1909d8b060979 SHA512 ba7dcdeabdb85ce93b66e1a71d6c3aea7df244d9ed288aee79ea63680de2384ea313772eed2c6b861c53dd1564c8f8c6d6c5baf798fe9c405f3a17cf4f1b0756 WHIRLPOOL 74cedf394b29d1568515f04df3fd94264491e3255234e7f06fd4e256a870c4710f605f089d23afa7cf13de93341329ed23ef7380978350c55c04a08caf410188
+DIST rdesktop-1.7.1.tar.gz 298808 SHA256 d1ea43adeb23ef1ba425983670372a87cd7560baf8c94ba34215105ed2ef8479 SHA512 aaefbcda77a333ec065e42aa20e5335e48c51858dab860495528b399696c0ed6594ab9c5234716682e7ebef81d36cc6d157eedae700e0df209da9034d04887fc WHIRLPOOL a186bbf3200af87ef6e111210e3dbf9d71f2a495c44dca583673466ccc9f67606a9a9c2bf3c801addd7c3b1af26a0a03e4e63b15bb72a52d7cfb4e4f381596ae
+DIST rdesktop-1.8.3.tar.gz 320212 SHA256 88b20156b34eff5f1b453f7c724e0a3ff9370a599e69c01dc2bf0b5e650eece4 SHA512 06b94ad3b09430b05e424ef31a3e6f2388190b4920e348603cb66a414244896e0dc8906b9f12920e9406cf153ffa7f6507b23bf6713c3a675c0540a8ef57902d WHIRLPOOL 24d12882ab04fe535fea6e59b78df2e8c23634703ab13bb385446a6e8c49703ca7344053cf1f6bbc4fecc04ce21354a9e5d3a0261b3d3c015289c2ec3b8af8c3
+EBUILD rdesktop-1.6.0-r2.ebuild 1954 SHA256 6623463ab84cf781454ef607329d7848421fe771fa1d95c38a7f49cb4f53579f SHA512 703d971ed4b02dde176d4bd4d23816f88cd09bd0d0d99463ffa7d6fe1c0f83b7ccb9716c6000657aa2b62b8dee69cba96ec931cc09339d66f8ea94961172faa1 WHIRLPOOL 12f092288d80c622e5a71c245e2c8720031279cff8112687793a41444e2c49c1c2394813e5dfe68636413c9428a6b90fd27811291cc3d79585279beae45d4215
+EBUILD rdesktop-1.7.1-r1.ebuild 2402 SHA256 b2812b114f2ddf838e502e6eab692527472f6fc99635a7bcf3dcda1447aaf581 SHA512 8c6731a4013a88a2fc1a16d7e5a68991cb0704854337488899ddc3e55e01a23e2b018cb6b0bc2fe69bb8e970e8adb0e98e0f204b2e56ea0d9ddd493b4291639b WHIRLPOOL 3b27405b9e776fc7b4af44a19c5bfd1138213c254c92031ce066f3aee89a7afa51639cdc87679972b80f6404dc1d3c672d7eed8ad8398fa378647e10a3736c3c
+EBUILD rdesktop-1.8.3-r3.ebuild 1995 SHA256 24d7572b042a70e1ef83eb723f7c570f519df6cbb92494f8a3c7b38ed034f0d7 SHA512 d51758b3c53e163b0b9aa0b75e087de543a442a6136b96e2ab4b50a53002172148004061314c05a6c18d360ace20feca0f88b10a3e29ad8953133b5443dc93af WHIRLPOOL a6b916de53d85e8e5fea7ca03ecf646bd9b501bda1435ea0f2d219b7060f333491aeb5f4c8bbe46b06381f0a9b9557ea28e13e3957620c575b5a529bdee71008
diff --git a/net-misc/rdesktop/files/rdesktop-1.6.0-smartcard_configure.patch b/net-misc/rdesktop/files/rdesktop-1.6.0-smartcard_configure.patch
new file mode 100644
index 0000000..a237966
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-1.6.0-smartcard_configure.patch
@@ -0,0 +1,22 @@
+--- configure.ac.orig 2009-07-05 16:13:23.000000000 +0200
++++ configure.ac 2009-07-05 16:19:39.000000000 +0200
+@@ -108,7 +108,10 @@
+ AC_ARG_ENABLE(smartcard,
+ [ --enable-smartcard Enables smart-card support.
+ ],
+- [
++ [
++ if test "$enableval" = no; then
++ WITH_SCARD=0
++ else
+ case "$OSTYPE" in
+ darwin*)
+ AC_CHECK_HEADER(PCSC/pcsclite.h, [WITH_SCARD=1], [WITH_SCARD=0])
+@@ -143,6 +146,7 @@
+ [AC_MSG_RESULT(yes) AC_DEFINE(WITH_PCSC120, 1, [old version of PCSC])],
+ [AC_MSG_RESULT(no)]
+ )
++ fi
+ ])
+
+ AC_SUBST(SCARDOBJ)
diff --git a/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch b/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch
new file mode 100644
index 0000000..8e64ba8
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-1.6.0-sound_configure.patch
@@ -0,0 +1,15 @@
+--- configure.ac.orig 2009-06-30 10:35:14.000000000 +0200
++++ configure.ac 2009-06-30 11:35:10.000000000 +0200
+@@ -228,7 +228,11 @@
+ if test -n "$PKG_CONFIG"; then
+ PKG_CHECK_MODULES(LIBAO, ao, [HAVE_LIBAO=1], [HAVE_LIBAO=0])
+ PKG_CHECK_MODULES(ALSA, alsa, [HAVE_ALSA=1], [HAVE_ALSA=0])
+- PKG_CHECK_MODULES(LIBSAMPLERATE, samplerate, [HAVE_LIBSAMPLERATE=1], [HAVE_LIBSAMPLERATE=0])
++ AC_ARG_WITH(libsamplerate,
++ [ --without-libsamplerate disable libsamplerate support])
++ if test "x$with_libsamplerate" != "xno"; then
++ PKG_CHECK_MODULES(LIBSAMPLERATE, samplerate, [HAVE_LIBSAMPLERATE=1], [HAVE_LIBSAMPLERATE=0])
++ fi
+ if test x"$HAVE_LIBSAMPLERATE" = "x1"; then
+ AC_DEFINE(HAVE_LIBSAMPLERATE)
+ if test x"$static_libsamplerate" = "xyes"; then
diff --git a/net-misc/rdesktop/files/rdesktop-1.7.0-libao_crash.patch b/net-misc/rdesktop/files/rdesktop-1.7.0-libao_crash.patch
new file mode 100644
index 0000000..3afb9b2
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-1.7.0-libao_crash.patch
@@ -0,0 +1,18 @@
+--- rdpsnd_libao.c.orig 2010-11-29 14:55:31.124907038 +0100
++++ rdpsnd_libao.c 2010-11-29 14:55:51.708464083 +0100
+@@ -76,6 +76,7 @@
+ format.channels = 2;
+ format.rate = 44100;
+ format.byte_format = AO_FMT_NATIVE;
++ format.matrix = NULL;
+
+
+ o_device = ao_open_live(default_driver, &format, NULL);
+@@ -115,6 +116,7 @@
+ format.channels = pwfx->nChannels;
+ format.rate = 44100;
+ format.byte_format = AO_FMT_NATIVE;
++ format.matrix = NULL;
+
+ if (o_device != NULL)
+ ao_close(o_device);
diff --git a/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch b/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch
new file mode 100644
index 0000000..f57a86b
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-1.8.3-xrandr_configure.patch
@@ -0,0 +1,17 @@
+--- configure.ac.orig 2015-09-14 11:27:54.974472081 +0200
++++ configure.ac 2015-09-14 11:34:37.729155044 +0200
+@@ -151,9 +151,12 @@
+ AC_SUBST(CREDSSPOBJ)
+
+ # xrandr
+-if test -n "$PKG_CONFIG"; then
+- PKG_CHECK_MODULES(XRANDR, xrandr, [HAVE_XRANDR=1], [HAVE_XRANDR=0])
++AC_ARG_WITH([xrandr], AS_HELP_STRING([--without-xrandr], [Build without Xrandr library (default: true)]))
++AS_IF([test "x$with_xrandr" != "xno"], [
++ if test -n "$PKG_CONFIG"; then
++ PKG_CHECK_MODULES(XRANDR, xrandr, [HAVE_XRANDR=1], [HAVE_XRANDR=0])
+ fi
++])
+ if test x"$HAVE_XRANDR" = "x1"; then
+ CFLAGS="$CFLAGS $XRANDR_CFLAGS"
+ LIBS="$LIBS $XRANDR_LIBS"
diff --git a/net-misc/rdesktop/files/rdesktop-keymap-additional b/net-misc/rdesktop/files/rdesktop-keymap-additional
new file mode 100644
index 0000000..04a03a5
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-keymap-additional
@@ -0,0 +1,64 @@
+#Additional sequences
+#2007-05-28 by Jaroslav Jiricka <giahra@atlas.cz>
+
+sequence ecaron dead_caron e
+sequence Ecaron dead_caron E
+sequence eogonek dead_ogonek e
+sequence Eogonek dead_ogonek E
+
+sequence rcaron dead_caron r
+sequence Rcaron dead_caron R
+sequence racute dead_acute r
+sequence Racute dead_acute R
+
+sequence tcaron dead_caron t
+sequence Tcaron dead_caron T
+sequence tcedilla dead_cedilla t
+sequence Tcedilla dead_cedilla T
+
+sequence zcaron dead_caron z
+sequence Zcaron dead_caron Z
+sequence zacute dead_acute z
+sequence Zacute dead_acute Z
+sequence zabovedot dead_abovedot z
+sequence Zabovedot dead_abovedot Z
+
+sequence uring dead_abovering u
+sequence Uring dead_abovering U
+sequence udoubleacute dead_doubleacute u
+sequence Udoubleacute dead_doubleacute U
+
+sequence odoubleacute dead_doubleacute o
+sequence Odoubleacute dead_doubleacute O
+
+sequence aogonek dead_ogonek a
+sequence Aogonek dead_ogonek A
+sequence abreve dead_breve a
+sequence Abreve dead_breve A
+
+sequence scaron dead_caron s
+sequence Scaron dead_caron S
+sequence sacute dead_acute s
+sequence Sacute dead_acute S
+sequence scedilla dead_cedilla s
+sequence Scedilla dead_cedilla S
+
+sequence dcaron dead_caron d
+sequence Dcaron dead_caron D
+
+sequence gbreve dead_breve g
+sequence Gbreve dead_breve G
+
+sequence lcaron dead_caron l
+sequence Lcaron dead_caron L
+sequence lacute dead_acute l
+sequence Lacute dead_acute L
+
+sequence ccaron dead_caron c
+sequence Ccaron dead_caron C
+
+sequence ncaron dead_caron n
+sequence Ncaron dead_caron N
+sequence nacute dead_acute n
+sequence Nacute dead_acute N
+
diff --git a/net-misc/rdesktop/files/rdesktop-keymap-cs b/net-misc/rdesktop/files/rdesktop-keymap-cs
new file mode 100644
index 0000000..0467628
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-keymap-cs
@@ -0,0 +1,122 @@
+#Czech keymap
+#2007-05-28 by Jaroslav Jiricka <giahra@atlas.cz>
+include common
+include additional
+map 0x405
+
+semicolon 0x29
+dead_abovering 0x29 shift
+
+plus 0x02
+1 0x02 shift
+dead_tilde 0x02 altgr
+asciitilde 0x02 altgr
+
+ecaron 0x03
+2 0x03 shift
+dead_caron 0x03 altgr
+
+scaron 0x04
+3 0x04 shift
+dead_circumflex 0x04 altgr
+
+ccaron 0x05
+4 0x05 shift
+dead_breve 0x05 altgr
+
+rcaron 0x06
+5 0x06 shift
+dead_abovering 0x06 altgr
+
+zcaron 0x07
+6 0x07 shift
+dead_ogonek 0x07 altgr
+
+yacute 0x08
+7 0x08 shift
+dead_grave 0x08 altgr
+
+aacute 0x09
+8 0x09 shift
+dead_abovedot 0x08 altgr
+
+iacute 0x0a
+9 0x0a shift
+dead_acute 0x08 altgr
+
+eacute 0x0b
+0 0x0b shift
+dead_doubleacute 0x0b altgr
+
+equal 0x0c
+percent 0x0c shift
+dead_macron 0x0c altgr
+
+dead_acute 0x0d
+dead_caron 0x0d shift
+dead_cedilla 0x0d altgr
+
+backslash 0x10 altgr
+
+bar 0x11 altgr
+
+EuroSign 0x12 altgr
+
+z 0x15 addupper
+
+uacute 0x1a
+slash 0x1a shift
+division 0x1a altgr
+
+parenright 0x1b
+parenleft 0x1b shift
+multiply 0x1b altgr
+
+dead_diaeresis 0x2b
+apostrophe 0x2b shift
+currency 0x2b altgr
+
+dstroke 0x1f altgr
+
+Dstroke 0x20 altgr
+
+bracketleft 0x21 altgr
+
+bracketright 0x22 altgr
+
+lstroke 0x25 altgr
+
+Lstroke 0x26 altgr
+
+uring 0x27
+quotedbl 0x27 shift
+dollar 0x27 altgr
+
+section 0x28
+exclam 0x28 shift
+ssharp 0x28 altgr
+
+y 0x2c addupper
+
+numbersign 0x2d altgr
+
+ampersand 0x2e altgr
+
+at 0x2f altgr
+
+braceleft 0x30 altgr
+
+braceright 0x31 altgr
+
+comma 0x33
+question 0x33 shift
+less 0x33 altgr
+
+period 0x34
+colon 0x34 shift
+greater 0x34 altgr
+
+minus 0x35
+underscore 0x35 shift
+asterisk 0x35 altgr
+
diff --git a/net-misc/rdesktop/files/rdesktop-keymap-sk b/net-misc/rdesktop/files/rdesktop-keymap-sk
new file mode 100644
index 0000000..afa1a3b
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-keymap-sk
@@ -0,0 +1,124 @@
+#Slovak keymap
+#2007-05-28 by Jaroslav Jiricka <giahra@atlas.cz>
+include common
+include additional
+map 0x41B
+
+semicolon 0x29
+dead_abovering 0x29 shift
+
+plus 0x02
+1 0x02 shift
+dead_tilde 0x02 altgr
+asciitilde 0x02 altgr
+
+lcaron 0x03
+2 0x03 shift
+dead_caron 0x03 altgr
+
+scaron 0x04
+3 0x04 shift
+dead_circumflex 0x04 altgr
+
+ccaron 0x05
+4 0x05 shift
+dead_breve 0x05 altgr
+
+tcaron 0x06
+5 0x06 shift
+dead_abovering 0x06 altgr
+
+zcaron 0x07
+6 0x07 shift
+dead_ogonek 0x07 altgr
+
+yacute 0x08
+7 0x08 shift
+dead_grave 0x08 altgr
+
+aacute 0x09
+8 0x09 shift
+dead_abovedot 0x08 altgr
+
+iacute 0x0a
+9 0x0a shift
+dead_acute 0x08 altgr
+
+eacute 0x0b
+0 0x0b shift
+dead_doubleacute 0x0b altgr
+
+equal 0x0c
+percent 0x0c shift
+dead_diaeresis 0x0c altgr
+
+dead_acute 0x0d
+dead_caron 0x0d shift
+dead_cedilla 0x0d altgr
+
+backslash 0x10 altgr
+
+bar 0x11 altgr
+
+EuroSign 0x12 altgr
+
+z 0x15 addupper
+
+apostrophe 0x19 altgr
+
+uacute 0x1a
+slash 0x1a shift
+division 0x1a altgr
+
+adiaeresis 0x1b
+parenleft 0x1b shift
+multiply 0x1b altgr
+
+ncaron 0x2b
+parenright 0x2b shift
+currency 0x2b altgr
+
+dstroke 0x1f altgr
+
+Dstroke 0x20 altgr
+
+bracketleft 0x21 altgr
+
+bracketright 0x22 altgr
+
+lstroke 0x25 altgr
+
+Lstroke 0x26 altgr
+
+ocircumflex 0x27
+quotedbl 0x27 shift
+dollar 0x27 altgr
+
+section 0x28
+exclam 0x28 shift
+ssharp 0x28 altgr
+
+y 0x2c addupper
+
+numbersign 0x2d altgr
+
+ampersand 0x2e altgr
+
+at 0x2f altgr
+
+braceleft 0x30 altgr
+
+braceright 0x31 altgr
+
+comma 0x33
+question 0x33 shift
+less 0x33 altgr
+
+period 0x34
+colon 0x34 shift
+greater 0x34 altgr
+
+minus 0x35
+underscore 0x35 shift
+asterisk 0x35 altgr
+
diff --git a/net-misc/rdesktop/files/rdesktop-xinerama.patch b/net-misc/rdesktop/files/rdesktop-xinerama.patch
new file mode 100644
index 0000000..3421cc5
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop-xinerama.patch
@@ -0,0 +1,180 @@
+--- configure.ac.orig 2008-06-25 23:22:27.000000000 +0200
++++ configure.ac 2008-06-25 23:17:51.000000000 +0200
+@@ -18,6 +18,8 @@
+ AC_SEARCH_LIBS(socket, socket)
+ AC_SEARCH_LIBS(inet_aton, resolv)
+
++AC_CHECK_LIB(Xinerama, XineramaQueryScreens, AC_DEFINE(HAVE_XINERAMA) LIBS="$LIBS -lXinerama", [], [])
++
+ AC_CHECK_HEADER(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H))
+ AC_CHECK_HEADER(sys/modem.h, AC_DEFINE(HAVE_SYS_MODEM_H))
+ AC_CHECK_HEADER(sys/filio.h, AC_DEFINE(HAVE_SYS_FILIO_H))
+--- xwin.c.orig 2008-06-25 23:50:02.000000000 +0200
++++ xwin.c 2008-06-25 23:49:25.000000000 +0200
+@@ -21,6 +21,9 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
++#ifdef HAVE_XINERAMA
++ #include <X11/extensions/Xinerama.h>
++#endif
+ #include <X11/Xproto.h>
+ #include <unistd.h>
+ #include <sys/time.h>
+@@ -570,6 +573,71 @@
+ #define LOUT24(o, x) { *(o++) = x; *(o++) = x >> 8; *(o++) = x >> 16; }
+ #define LOUT32(o, x) { *(o++) = x; *(o++) = x >> 8; *(o++) = x >> 16; *(o++) = x >> 24; }
+
++#ifdef HAVE_XINERAMA
++// IF XINERAMA LIBRARY
++
++int g_last_wnd_pos_x;
++int g_last_wnd_pos_y;
++
++void
++ScreenSize(XRectangle *screen)
++{
++ int screens;
++ int event_base;
++ int error_base;
++
++ if (XineramaQueryExtension(g_display, &event_base, &error_base))
++ {
++ XineramaScreenInfo *screeninfo;
++ int i;
++
++ /* Get the Xinerama screen infomation. */
++ screeninfo = XineramaQueryScreens(g_display, &screens);
++
++ /* Search for the appropriate screen. */
++ i = 0;
++ while (!(screeninfo[i].x_org <= g_last_wnd_pos_x
++ && screeninfo[i].y_org <= g_last_wnd_pos_y
++ && screeninfo[i].x_org + screeninfo[i].width >= g_last_wnd_pos_x
++ && screeninfo[i].y_org + screeninfo[i].height >= g_last_wnd_pos_y ))
++ {
++ i++;
++ }
++ if (i >= screens) i = 0;
++
++ /* Position according to the present screen. */
++ screen->x = screeninfo[i].x_org;
++ screen->y = screeninfo[i].y_org;
++ screen->width = screeninfo[i].width;
++ screen->height = screeninfo[i].height;
++
++ /* Free allocated memory. */
++ XFree(screeninfo);
++ }
++ else
++ {
++ /* Xinerama is not in use, default to the XLib screensize call. */
++ screen->x = 0;
++ screen->y = 0;
++ screen->width = WidthOfScreen(g_screen);
++ screen->height = HeightOfScreen(g_screen);
++ }
++}
++
++#else
++// IF NO XINERAMA LIBRARY
++
++void
++ScreenSize(XRectangle *screen)
++{
++ screen->x = 0;
++ screen->y = 0;
++ screen->width = WidthOfScreen(g_screen);
++ screen->height = HeightOfScreen(g_screen);
++}
++
++#endif
++
+ static uint32
+ translate_colour(uint32 colour)
+ {
+@@ -1615,17 +1683,26 @@
+ */
+ if (g_fullscreen)
+ {
+- g_width = WidthOfScreen(g_screen);
+- g_height = HeightOfScreen(g_screen);
++ XRectangle screen;
++ ScreenSize(&screen);
++
++ g_width = screen.width;
++ g_height = screen.height;
+ g_using_full_workarea = True;
+ }
+ else if (g_width < 0)
+ {
++ XRectangle screen;
++ ScreenSize(&screen);
++
++ g_width = screen.width;
++ g_height = screen.height;
++
+ /* Percent of screen */
+ if (-g_width >= 100)
+ g_using_full_workarea = True;
+- g_height = HeightOfScreen(g_screen) * (-g_width) / 100;
+- g_width = WidthOfScreen(g_screen) * (-g_width) / 100;
++ g_width = screen.width * (-g_width) / 100;
++ g_height = screen.height * (-g_width) / 100;
+ }
+ else if (g_width == 0)
+ {
+@@ -1734,14 +1811,19 @@
+ long input_mask, ic_input_mask;
+ XEvent xevent;
+
+- wndwidth = g_fullscreen ? WidthOfScreen(g_screen) : g_width;
+- wndheight = g_fullscreen ? HeightOfScreen(g_screen) : g_height;
++ XRectangle screen;
++
++ ScreenSize(&screen);
++ wndwidth = g_fullscreen ? screen.width : g_width;
++ wndheight = g_fullscreen ? screen.height : g_height;
++ g_xpos = g_fullscreen ? screen.x : g_xpos;
++ g_ypos = g_fullscreen ? screen.y : g_ypos;
+
+ /* Handle -x-y portion of geometry string */
+ if (g_xpos < 0 || (g_xpos == 0 && (g_pos & 2)))
+- g_xpos = WidthOfScreen(g_screen) + g_xpos - g_width;
++ g_xpos = screen.width + g_xpos - g_width;
+ if (g_ypos < 0 || (g_ypos == 0 && (g_pos & 4)))
+- g_ypos = HeightOfScreen(g_screen) + g_ypos - g_height;
++ g_ypos = screen.height + g_ypos - g_height;
+
+ get_window_attribs(&attribs);
+
+@@ -1882,6 +1964,11 @@
+ void
+ xwin_toggle_fullscreen(void)
+ {
++#ifdef HAVE_XINERAMA
++ Window root, parent, *children;
++ unsigned int nchildren;
++ XWindowAttributes win_attrib;
++#endif
+ Pixmap contents = 0;
+
+ if (g_seamless_active)
+@@ -1895,6 +1982,17 @@
+ XCopyArea(g_display, g_wnd, contents, g_gc, 0, 0, g_width, g_height, 0, 0);
+ }
+
++#ifdef HAVE_XINERAMA
++ /* Determine the parent window. */
++ XQueryTree(g_display, g_wnd, &root, &parent, &children, &nchildren);
++ if (children != NULL) XFree(children);
++
++ /* Find the present coordinates of the window. */
++ XGetWindowAttributes(g_display, parent, &win_attrib);
++ g_last_wnd_pos_x = win_attrib.x + 1;
++ g_last_wnd_pos_y = win_attrib.y + 1;
++#endif
++
+ ui_destroy_window();
+ g_fullscreen = !g_fullscreen;
+ ui_create_window();
diff --git a/net-misc/rdesktop/files/rdesktop171-ds-xinerama.patch b/net-misc/rdesktop/files/rdesktop171-ds-xinerama.patch
new file mode 100644
index 0000000..0d66e3d
--- /dev/null
+++ b/net-misc/rdesktop/files/rdesktop171-ds-xinerama.patch
@@ -0,0 +1,181 @@
+diff -dPNur rdesktop-1.7.1/configure.ac rdesktop-1.7.1-ds/configure.ac
+--- rdesktop-1.7.1/configure.ac 2012-01-09 13:29:39.000000000 +0100
++++ rdesktop-1.7.1-ds/configure.ac 2012-11-21 00:55:34.000000000 +0100
+@@ -32,6 +32,8 @@
+ AC_SEARCH_LIBS(socket, socket)
+ AC_SEARCH_LIBS(inet_aton, resolv)
+
++AC_CHECK_LIB(Xinerama, XineramaQueryScreens, AC_DEFINE(HAVE_XINERAMA) LIBS="$LIBS -lXinerama", [], [])
++
+ AC_CHECK_HEADER(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H))
+ AC_CHECK_HEADER(sys/modem.h, AC_DEFINE(HAVE_SYS_MODEM_H))
+ AC_CHECK_HEADER(sys/filio.h, AC_DEFINE(HAVE_SYS_FILIO_H))
+diff -dPNur rdesktop-1.7.1/configure.ac.orig rdesktop-1.7.1-ds/configure.ac.orig
+diff -dPNur rdesktop-1.7.1/rdesktop-xinerama.patch rdesktop-1.7.1-ds/rdesktop-xinerama.patch
+diff -dPNur rdesktop-1.7.1/xwin.c rdesktop-1.7.1-ds/xwin.c
+--- rdesktop-1.7.1/xwin.c 2011-04-13 13:13:04.000000000 +0200
++++ rdesktop-1.7.1-ds/xwin.c 2012-11-21 01:00:46.000000000 +0100
+@@ -21,6 +21,9 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
++#ifdef HAVE_XINERAMA
++ #include <X11/extensions/Xinerama.h>
++#endif
+ #include <X11/Xproto.h>
+ #include <unistd.h>
+ #include <sys/time.h>
+@@ -817,6 +820,71 @@
+ #define LOUT24(o, x) { *(o++) = x; *(o++) = x >> 8; *(o++) = x >> 16; }
+ #define LOUT32(o, x) { *(o++) = x; *(o++) = x >> 8; *(o++) = x >> 16; *(o++) = x >> 24; }
+
++#ifdef HAVE_XINERAMA
++// IF XINERAMA LIBRARY
++
++int g_last_wnd_pos_x;
++int g_last_wnd_pos_y;
++
++void
++ScreenSize(XRectangle *screen)
++{
++ int screens;
++ int event_base;
++ int error_base;
++
++ if (XineramaQueryExtension(g_display, &event_base, &error_base))
++ {
++ XineramaScreenInfo *screeninfo;
++ int i;
++
++ /* Get the Xinerama screen infomation. */
++ screeninfo = XineramaQueryScreens(g_display, &screens);
++
++ /* Search for the appropriate screen. */
++ i = 0;
++ while (!(screeninfo[i].x_org <= g_last_wnd_pos_x
++ && screeninfo[i].y_org <= g_last_wnd_pos_y
++ && screeninfo[i].x_org + screeninfo[i].width >= g_last_wnd_pos_x
++ && screeninfo[i].y_org + screeninfo[i].height >= g_last_wnd_pos_y ))
++ {
++ i++;
++ }
++ if (i >= screens) i = 0;
++
++ /* Position according to the present screen. */
++ screen->x = screeninfo[i].x_org;
++ screen->y = screeninfo[i].y_org;
++ screen->width = screeninfo[i].width;
++ screen->height = screeninfo[i].height;
++
++ /* Free allocated memory. */
++ XFree(screeninfo);
++ }
++ else
++ {
++ /* Xinerama is not in use, default to the XLib screensize call. */
++ screen->x = 0;
++ screen->y = 0;
++ screen->width = WidthOfScreen(g_screen);
++ screen->height = HeightOfScreen(g_screen);
++ }
++}
++
++#else
++// IF NO XINERAMA LIBRARY
++
++void
++ScreenSize(XRectangle *screen)
++{
++ screen->x = 0;
++ screen->y = 0;
++ screen->width = WidthOfScreen(g_screen);
++ screen->height = HeightOfScreen(g_screen);
++}
++
++#endif
++
+ static uint32
+ translate_colour(uint32 colour)
+ {
+@@ -1913,17 +1981,23 @@
+ */
+ if (g_fullscreen)
+ {
+- g_width = WidthOfScreen(g_screen);
+- g_height = HeightOfScreen(g_screen);
++ XRectangle screen;
++ ScreenSize(&screen);
++
++ g_width = screen.width;
++ g_height = screen.height;
+ g_using_full_workarea = True;
+ }
+ else if (g_sizeopt < 0)
+ {
++ XRectangle screen;
++ ScreenSize(&screen);
++
+ /* Percent of screen */
+ if (-g_sizeopt >= 100)
+ g_using_full_workarea = True;
+- g_height = HeightOfScreen(g_screen) * (-g_sizeopt) / 100;
+- g_width = WidthOfScreen(g_screen) * (-g_sizeopt) / 100;
++ g_height = screen.height * (-g_sizeopt) / 100;
++ g_width = screen.width * (-g_sizeopt) / 100;
+ }
+ else if (g_sizeopt == 1)
+ {
+@@ -2006,14 +2080,19 @@
+ long input_mask, ic_input_mask;
+ XEvent xevent;
+
+- wndwidth = g_fullscreen ? WidthOfScreen(g_screen) : g_width;
+- wndheight = g_fullscreen ? HeightOfScreen(g_screen) : g_height;
++ XRectangle screen;
++
++ ScreenSize(&screen);
++ wndwidth = g_fullscreen ? screen.width : g_width;
++ wndheight = g_fullscreen ? screen.height : g_height;
++ g_xpos = g_fullscreen ? screen.x : g_xpos;
++ g_ypos = g_fullscreen ? screen.y : g_ypos;
+
+ /* Handle -x-y portion of geometry string */
+ if (g_xpos < 0 || (g_xpos == 0 && (g_pos & 2)))
+- g_xpos = WidthOfScreen(g_screen) + g_xpos - g_width;
++ g_xpos = screen.width + g_xpos - g_width;
+ if (g_ypos < 0 || (g_ypos == 0 && (g_pos & 4)))
+- g_ypos = HeightOfScreen(g_screen) + g_ypos - g_height;
++ g_ypos = screen.height + g_ypos - g_height;
+
+ get_window_attribs(&attribs);
+
+@@ -2170,6 +2249,11 @@
+ void
+ xwin_toggle_fullscreen(void)
+ {
++#ifdef HAVE_XINERAMA
++ Window root, parent, *children;
++ unsigned int nchildren;
++ XWindowAttributes win_attrib;
++#endif
+ Pixmap contents = 0;
+
+ if (g_seamless_active)
+@@ -2183,6 +2267,17 @@
+ XCopyArea(g_display, g_wnd, contents, g_gc, 0, 0, g_width, g_height, 0, 0);
+ }
+
++#ifdef HAVE_XINERAMA
++ /* Determine the parent window. */
++ XQueryTree(g_display, g_wnd, &root, &parent, &children, &nchildren);
++ if (children != NULL) XFree(children);
++
++ /* Find the present coordinates of the window. */
++ XGetWindowAttributes(g_display, parent, &win_attrib);
++ g_last_wnd_pos_x = win_attrib.x + 1;
++ g_last_wnd_pos_y = win_attrib.y + 1;
++#endif
++
+ ui_destroy_window();
+ g_fullscreen = !g_fullscreen;
+ ui_create_window();
diff --git a/net-misc/rdesktop/rdesktop-1.6.0-r2.ebuild b/net-misc/rdesktop/rdesktop-1.6.0-r2.ebuild
new file mode 100644
index 0000000..da93167
--- /dev/null
+++ b/net-misc/rdesktop/rdesktop-1.6.0-r2.ebuild
@@ -0,0 +1,78 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/rdesktop/rdesktop-1.6.0-r1.ebuild,v 1.1 2008/05/21 14:13:19 voyageur Exp $
+
+inherit eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="A Remote Desktop Protocol Client"
+HOMEPAGE="http://rdesktop.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}-${MY_PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd"
+IUSE="ao debug ipv6 oss pcsc-lite"
+
+S=${WORKDIR}/${PN}-${MY_PV}
+
+RDEPEND=">=dev-libs/openssl-0.9.6b
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXau
+ x11-libs/libXdmcp
+ ao? ( >=media-libs/libao-0.8.6 )
+ pcsc-lite? ( sys-apps/pcsc-lite )"
+DEPEND="${RDEPEND}
+ x11-libs/libXt"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+#SDS
+ epatch "${FILESDIR}"/rdesktop-xinerama.patch || die
+#EDS
+
+ # Prevent automatic stripping
+ local strip="$(echo '$(STRIP) $(DESTDIR)$(bindir)/rdesktop')"
+ sed -i -e "s:${strip}::" Makefile.in \
+ || die "sed failed in Makefile.in"
+}
+
+src_compile() {
+ if use oss; then
+ extra_conf=$(use_with oss sound)
+ else
+ extra_conf=$(use_with ao sound libao)
+ fi
+
+#SDS
+ ./bootstrap || die
+#EDS
+
+ econf \
+ --with-openssl=/usr \
+ $(use_with debug) \
+ $(use_with ipv6) \
+ $(use_enable pcsc-lite smartcard) \
+ ${extra_conf} \
+ || die "configuration failed"
+
+ emake || die "compilation failed"
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "installation failed"
+ dodoc doc/HACKING doc/TODO doc/keymapping.txt
+
+ # For #180313 - applies to versions >= 1.5.0
+ # Fixes sf.net bug
+ # http://sourceforge.net/tracker/index.php?func=detail&aid=1725634&group_id=24366&atid=381349
+ # check for next version to see if this needs to be removed
+ insinto /usr/share/rdesktop/keymaps
+ newins "${FILESDIR}/rdesktop-keymap-additional" additional
+ newins "${FILESDIR}/rdesktop-keymap-cs" cs
+ newins "${FILESDIR}/rdesktop-keymap-sk" sk
+}
diff --git a/net-misc/rdesktop/rdesktop-1.7.1-r1.ebuild b/net-misc/rdesktop/rdesktop-1.7.1-r1.ebuild
new file mode 100644
index 0000000..04a15c1
--- /dev/null
+++ b/net-misc/rdesktop/rdesktop-1.7.1-r1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/rdesktop/rdesktop-1.7.1.ebuild,v 1.9 2012/08/19 23:47:24 ottxor Exp $
+
+EAPI=4
+
+inherit autotools eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="A Remote Desktop Protocol Client"
+HOMEPAGE="http://rdesktop.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}-${MY_PV}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="alpha amd64 hppa ia64 ~mips ppc ppc64 sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris"
+IUSE="alsa ao debug ipv6 libsamplerate oss pcsc-lite"
+
+S=${WORKDIR}/${PN}-${MY_PV}
+
+RDEPEND=">=dev-libs/openssl-0.9.6b
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXau
+ x11-libs/libXdmcp
+ alsa? ( media-libs/alsa-lib )
+ ao? ( >=media-libs/libao-0.8.6 )
+ libsamplerate? ( media-libs/libsamplerate )
+ pcsc-lite? ( >=sys-apps/pcsc-lite-1.6.6 )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ x11-libs/libXt"
+
+src_prepare() {
+ # Prevent automatic stripping
+ local strip="$(echo '$(STRIP) $(DESTDIR)$(bindir)/rdesktop')"
+ sed -i -e "s:${strip}::" Makefile.in \
+ || die "sed failed in Makefile.in"
+
+ # Automagic dependency on libsamplerate
+ epatch "${FILESDIR}"/${PN}-1.6.0-sound_configure.patch
+ # Fix --enable-smartcard logic
+ epatch "${FILESDIR}"/${PN}-1.6.0-smartcard_configure.patch
+ # bug #280923
+ epatch "${FILESDIR}"/${PN}-1.7.0-libao_crash.patch
+#SDS
+ epatch "${FILESDIR}"/rdesktop171-ds-xinerama.patch
+#EDS
+
+ eautoreconf
+}
+
+src_configure() {
+ if use ao; then
+ sound_conf=$(use_with ao sound libao)
+ else if use alsa; then
+ sound_conf=$(use_with alsa sound alsa)
+ else
+ sound_conf=$(use_with oss sound oss)
+ fi
+ fi
+
+ econf \
+ --with-openssl="${EPREFIX}"/usr \
+ $(use_with debug) \
+ $(use_with ipv6) \
+ $(use_with libsamplerate) \
+ $(use_enable pcsc-lite smartcard) \
+ ${sound_conf}
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ dodoc doc/HACKING doc/TODO doc/keymapping.txt
+
+ # For #180313 - applies to versions >= 1.5.0
+ # Fixes sf.net bug
+ # http://sourceforge.net/tracker/index.php?func=detail&aid=1725634&group_id=24366&atid=381349
+ # check for next version to see if this needs to be removed
+ insinto /usr/share/rdesktop/keymaps
+ newins "${FILESDIR}/rdesktop-keymap-additional" additional
+ newins "${FILESDIR}/rdesktop-keymap-cs" cs
+ newins "${FILESDIR}/rdesktop-keymap-sk" sk
+}
diff --git a/net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild b/net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild
new file mode 100644
index 0000000..81ce914
--- /dev/null
+++ b/net-misc/rdesktop/rdesktop-1.8.3-r3.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit autotools eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="A Remote Desktop Protocol Client"
+HOMEPAGE="http://rdesktop.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${PN}-${MY_PV}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris"
+IUSE="alsa ao debug ipv6 kerberos libressl libsamplerate oss pcsc-lite xrandr"
+
+S=${WORKDIR}/${PN}-${MY_PV}
+
+RDEPEND="
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl:= )
+ x11-libs/libX11
+ x11-libs/libXext
+ x11-libs/libXau
+ x11-libs/libXdmcp
+ alsa? ( media-libs/alsa-lib )
+ ao? ( >=media-libs/libao-0.8.6 )
+ kerberos? ( net-libs/libgssglue )
+ libsamplerate? ( media-libs/libsamplerate )
+ pcsc-lite? ( >=sys-apps/pcsc-lite-1.6.6 )
+ xrandr? ( x11-libs/libXrandr )"
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ x11-libs/libXt"
+
+src_prepare() {
+ # Prevent automatic stripping
+ local strip="$(echo '$(STRIP) $(DESTDIR)$(bindir)/rdesktop')"
+ sed -i -e "s:${strip}::" Makefile.in \
+ || die "sed failed in Makefile.in"
+
+ # Automagic dependencies
+ epatch "${FILESDIR}"/${PN}-1.6.0-sound_configure.patch
+ epatch "${FILESDIR}"/${P}-xrandr_configure.patch
+
+#SDS
+ epatch "${FILESDIR}"/rdesktop171-ds-xinerama.patch
+#EDS
+
+ epatch_user
+
+ eautoreconf
+}
+
+src_configure() {
+ if use ao; then
+ sound_conf=$(use_with ao sound libao)
+ else if use alsa; then
+ sound_conf=$(use_with alsa sound alsa)
+ else
+ sound_conf=$(use_with oss sound oss)
+ fi
+ fi
+
+ econf \
+ --with-openssl="${EPREFIX}"/usr \
+ $(use_with debug) \
+ $(use_with ipv6) \
+ $(use_with libsamplerate) \
+ $(use_with xrandr) \
+ $(use_enable kerberos credssp) \
+ $(use_enable pcsc-lite smartcard) \
+ ${sound_conf}
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ dodoc doc/HACKING doc/TODO doc/keymapping.txt
+}
diff --git a/net-misc/x11-ssh-askpass/Manifest b/net-misc/x11-ssh-askpass/Manifest
new file mode 100644
index 0000000..14b9241
--- /dev/null
+++ b/net-misc/x11-ssh-askpass/Manifest
@@ -0,0 +1 @@
+EBUILD x11-ssh-askpass-999.ebuild 218 SHA256 ecfcf0756c229d4e6b28a324360dceb15d4d41c1038a39bc450cdfa20614efe1 SHA512 a974ed9110c4f6548b649aeae23fa028ad3263b1122e6b0e8bd2da4eee7742f86cde0cd03d3466fd33758ba0b6de5cbbe6891ac74b06136a9648d7c27d7cedc9 WHIRLPOOL cd8f9baccbb44785d3b38a97963b6cc468e9c940e2fabb2a3c986df9e2b062b0f354c5162d2faaeaa06957e9dfa6c4c04cf8973ebadb46d91a974d7516f2c346
diff --git a/net-misc/x11-ssh-askpass/x11-ssh-askpass-999.ebuild b/net-misc/x11-ssh-askpass/x11-ssh-askpass-999.ebuild
new file mode 100644
index 0000000..0ab6a10
--- /dev/null
+++ b/net-misc/x11-ssh-askpass/x11-ssh-askpass-999.ebuild
@@ -0,0 +1,10 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="ssh ask-pass override"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
diff --git a/net-nntp/colobus/Manifest b/net-nntp/colobus/Manifest
new file mode 100644
index 0000000..8dbbaa5
--- /dev/null
+++ b/net-nntp/colobus/Manifest
@@ -0,0 +1,3 @@
+AUX colobus-ds.patch 414 RMD160 ca634239d33cd2885ec076372ce6033b6e5e1866 SHA1 c332f09a5009b01619b4afccc552fd24630bb8f7 SHA256 1e3ad00dd2153d7bda4e9f2dff89d59cab0bfe5b6885c42a17a9927219c6ec7d
+DIST colobus-2.1.tar.gz 56965 RMD160 acb2189bc229ac45d56607fd331277ab8f91930b SHA1 08c2b7614efcb565f95c3453e07eea7eaff459a3 SHA256 a51f20fe1ba6c57e673ad5b387cca8d9d5c2f6b511de802234100a19b83f7d2d
+EBUILD colobus-2.1-r1.ebuild 783 RMD160 6d09ac16c07a409f01421e22caac38692fd6eb7f SHA1 163db2b8c22a54df25cb4d55f714caf3bd1db402 SHA256 8cafe35c74f39e3de695977da1146670206072daafab3f8f2479813cfac6275c
diff --git a/net-nntp/colobus/colobus-2.1-r1.ebuild b/net-nntp/colobus/colobus-2.1-r1.ebuild
new file mode 100644
index 0000000..a289e49
--- /dev/null
+++ b/net-nntp/colobus/colobus-2.1-r1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="colobus"
+HOMEPAGE="http://trainedmonkey.com/colobus/"
+SRC_URI="http://trainedmonkey.com/colobus/${P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+IUSE=""
+KEYWORDS="amd64 x86"
+DEPEND=""
+RDEPEND="dev-lang/perl
+ dev-perl/DBI
+ perl-core/Digest-MD5
+ dev-perl/MailTools"
+#RDEPEND=""
+
+
+#S="${WORKDIR}/${P/_/}"
+
+src_install() {
+ mkdir -p ${D}/usr/lib/
+ tar xzf ${DISTDIR}/${P}.tar.gz -C ${D}/usr/lib
+ EPATCH_OPTS="-p1 -d ${D}/usr/lib/${P}" epatch ${FILESDIR}/colobus-ds.patch
+
+
+ mkdir -p ${D}/etc/cron.hourly/
+ echo "(cd /usr/lib/${P} && ./colobus-archive -a >/dev/null)" > ${D}/etc/cron.hourly/colobus.sh
+ chmod 0755 ${D}/etc/cron.hourly/colobus.sh
+
+}
diff --git a/net-nntp/colobus/files/colobus-ds.patch b/net-nntp/colobus/files/colobus-ds.patch
new file mode 100644
index 0000000..70aad50
--- /dev/null
+++ b/net-nntp/colobus/files/colobus-ds.patch
@@ -0,0 +1,12 @@
+diff -dPNur colobus-2.0/colobus.sql colobus-2.0-new/colobus.sql
+--- colobus-2.0/colobus.sql 2004-05-16 06:44:19.000000000 +0500
++++ colobus-2.0-new/colobus.sql 2004-07-21 21:04:23.000000000 +0500
+@@ -8,6 +8,8 @@
+ -- Table structure for table `header`
+ --
+
++CREATE DATABASE IF NOT EXISTS colobus;
++USE colobus;
+ DROP TABLE IF EXISTS header;
+ CREATE TABLE header (
+ grp smallint(5) unsigned NOT NULL default '0',
diff --git a/net-proxy/socks5/Manifest b/net-proxy/socks5/Manifest
new file mode 100644
index 0000000..952208a
--- /dev/null
+++ b/net-proxy/socks5/Manifest
@@ -0,0 +1,7 @@
+AUX socks5-v1.0r11-ifaaddr.patch.bz2 407 RMD160 025b36eb67cb8def4a8c28a86fdb3e3bb11cb9c7 SHA1 d9a709f7dd3c2ae8d981f170b3f18bacd703b3e8 SHA256 accf433ab6208c3d13e21353e269612d4497402ee0bf8f1163114c55decb445b
+AUX socks5-v1.0r11.patch1.txt.bz2 529 RMD160 ce52d2ba93be0017cc1bd265043b773c5147f1e3 SHA1 623f4dc28ae300eb65d3e859acdf6bd90351510a SHA256 b7b29531125c8587d3d0c26abfb607a5af92c222b2c4d49d2c89bf3e349b5a72
+AUX socks5-v1.0r11.tar.bz2 329136 RMD160 3d21415a8aeae4fdf50297df6751c2fa5f909f7e SHA1 204da84eba1c29df244c7ff0f6aea5238a6bc09f SHA256 4e883a9b789ca585047d8b31198074661614cd1aae4de2d458e8b7d5732513ce
+AUX socks5-vararg.patch.bz2 1062 RMD160 462b0abb599ee27eca7cbc82b5b90c133a38b135 SHA1 392226c9e837bdf89dae18f5dc449725747a021d SHA256 7e4027a0bf16cc9efb46dc615a97971464b344bca5f6dd6b59e85efcea8ed05f
+AUX socks5.init 315 RMD160 0a70988d2b1dd78362f499e81ec8c23c84103252 SHA1 cf563980f3c7acef302ace2e5efb2d20396ee1c9 SHA256 0237912f4d5735fd3101a8b6bca442369157f711621a4cdc1ad9b354c0adfd1f
+AUX unsocks 738 RMD160 1f9a52216446495b251a71bb162dc042ec87887f SHA1 6d59540281d8814925c4c86ce4d9f5feef5d2c7a SHA256 528dc0beeb8e75969e640b78c828f4cb7c62b6ec287a1971022df4b7022e18c0
+EBUILD socks5-1.0-r11.ebuild 1477 RMD160 a45915d4b96e78e19a8229ed78274064ab4133e7 SHA1 1c3c286b160c32e068cb96eee3d614469f9fcf9f SHA256 438e4325d0f52af7a8488627cbef6e56206a03586b182deeec7e8cbc2ec85cf2
diff --git a/net-proxy/socks5/files/socks5-v1.0r11-ifaaddr.patch.bz2 b/net-proxy/socks5/files/socks5-v1.0r11-ifaaddr.patch.bz2
new file mode 100644
index 0000000..7847dd3
--- /dev/null
+++ b/net-proxy/socks5/files/socks5-v1.0r11-ifaaddr.patch.bz2
Binary files differ
diff --git a/net-proxy/socks5/files/socks5-v1.0r11.patch1.txt.bz2 b/net-proxy/socks5/files/socks5-v1.0r11.patch1.txt.bz2
new file mode 100644
index 0000000..216c385
--- /dev/null
+++ b/net-proxy/socks5/files/socks5-v1.0r11.patch1.txt.bz2
Binary files differ
diff --git a/net-proxy/socks5/files/socks5-v1.0r11.tar.bz2 b/net-proxy/socks5/files/socks5-v1.0r11.tar.bz2
new file mode 100644
index 0000000..d6df932
--- /dev/null
+++ b/net-proxy/socks5/files/socks5-v1.0r11.tar.bz2
Binary files differ
diff --git a/net-proxy/socks5/files/socks5-vararg.patch.bz2 b/net-proxy/socks5/files/socks5-vararg.patch.bz2
new file mode 100644
index 0000000..87ce8ce
--- /dev/null
+++ b/net-proxy/socks5/files/socks5-vararg.patch.bz2
Binary files differ
diff --git a/net-proxy/socks5/files/socks5.init b/net-proxy/socks5/files/socks5.init
new file mode 100644
index 0000000..d2fb964
--- /dev/null
+++ b/net-proxy/socks5/files/socks5.init
@@ -0,0 +1,20 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting socks5:"
+ socks5
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping socks5:"
+ killall ${KILL_OPTS} socks5
+ eend $?
+}
diff --git a/net-proxy/socks5/files/unsocks b/net-proxy/socks5/files/unsocks
new file mode 100644
index 0000000..63b8d91
--- /dev/null
+++ b/net-proxy/socks5/files/unsocks
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+################################################################################
+##
+## unsocks - Don't let the dynamic socks library be loaded
+##
+## If you have in your ~/.profile the following
+##
+## export LD_PRELOAD=libsocks5_sh.so
+##
+## All your session will be socksified.
+## Some programs don't like it so you can use unsocks to run them unsocksified.
+## The usage is very similar to runsocks(1).
+##
+## This is free software distributed under GPL
+##
+## Avi Alkalay <avi@br.ibm.com>
+## 5 Jun 1999
+################################################################################
+
+
+if [ -n "$LD_PRELOAD" ]; then
+ ld_new=`echo $LD_PRELOAD | sed -e 's|libsocks5_sh.so||g'`
+ LD_PRELOAD=$ld_new
+ export LD_PRELOAD
+fi
+
+exec "$@"
diff --git a/net-proxy/socks5/socks5-1.0-r11.ebuild b/net-proxy/socks5/socks5-1.0-r11.ebuild
new file mode 100644
index 0000000..049e5c4
--- /dev/null
+++ b/net-proxy/socks5/socks5-1.0-r11.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="SOCKS5 Implementation"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+RDEPEND="sys-libs/ncurses"
+
+S=${WORKDIR}/socks5-v1.0r11
+
+src_unpack() {
+ tar xjf ${FILESDIR}/socks5-v1.0r11.tar.bz2
+ EPATCH_OPTS="-p0 -d socks5-v1.0r11" epatch ${FILESDIR}/socks5-v1.0r11.patch1.txt.bz2
+ EPATCH_OPTS="-p1 -d socks5-v1.0r11" epatch ${FILESDIR}/socks5-vararg.patch.bz2
+ EPATCH_OPTS="-p1 -d socks5-v1.0r11" epatch ${FILESDIR}/socks5-v1.0r11-ifaaddr.patch.bz2
+}
+
+src_compile() {
+ econf --with-srvpidfile=/var/run/socks5.pid \
+ --with-libconffile=/etc/libsocks5.conf \
+ --with-srvconffile=/etc/socks5.conf \
+ --with-syslog-facility \
+ --with-threads || die
+ emake || die
+}
+
+src_install() {
+ into /usr
+
+ echo "-----------------"
+ echo ${D}
+ cd ${P}-r11/work/socks5-v1.0r11
+ make install prefix=${D}/usr || die
+ cd ${D}/usr/bin/
+ mv rarchie s5archie
+ mv rfinger s5finger
+ mv rftp s5ftp
+ mv rping s5ping
+ mv rtelnet s5telnet
+ mv rtraceroute s5traceroute
+ mv rwhois s5whois
+
+ chmod 511 s5*
+ strip s5*
+
+ mkdir ../sbin
+ strip socks5
+ mv socks5 stopsocks ../sbin
+
+ mkdir -p ${D}/etc/init.d/
+ install -m 755 ${FILESDIR}/socks5.init ${D}/etc/init.d/socks5
+ install -m 755 ${FILESDIR}/unsocks ${D}/usr/bin
+ echo "socks5 - - - - -" > ${D}/etc/libsocks5.conf
+}
diff --git a/profiles/repo_name b/profiles/repo_name
new file mode 100644
index 0000000..a3c4955
--- /dev/null
+++ b/profiles/repo_name
@@ -0,0 +1 @@
+darklin
diff --git a/sci-biology/imagej/Manifest b/sci-biology/imagej/Manifest
new file mode 100644
index 0000000..b1df94b
--- /dev/null
+++ b/sci-biology/imagej/Manifest
@@ -0,0 +1,5 @@
+AUX AutoThresholder.java.patch 444 BLAKE2B d760b59f0e1b2214f66cc4b8cadc42a7f9545957d6271010cb60d393def3f79dd58a67a44bb3bf7668700abbba20a612e903985ce35c0911c7967cfbb9118dfc SHA512 46033542bc3023356692c966a0cc84819ebd52cf6fe78d6538a3c8521e58612559bfb11eea6eea61c22e354f82647f523b74ee12fa0df0bea6d26045ee2a3c96
+DIST ImageJ.png 13012 BLAKE2B b42ee855e6214b275cbdcc722f6c7b095fe83de477a151714c4afec8e23abe12b2d0bf62ae81a4f9c4ccefc9245a9e144085b844ee3f92121a88f7d27106acf5 SHA512 60c2ff73bcfc668931c59b0dfb299723a369b741601bdd591a407302e30fc58c6c626525b3f08b955a5dab37729d3f704db689317b42a94e7a3ccbfb72abc9b3
+DIST ij150.zip 6899239 BLAKE2B 7a0c15f8a2cfb5dc672fe3edb7e0daffb0c6847cf92e0c9fefa3fc22177e73ec0736b842eb1d71c1c9de49a8887e3c2dd373a10b60c5246adca3dc14f85f8120 SHA512 a927df1ca345cff4b9aa0b6c03510103bc8fc8c21a572c3417060bcf28da8a1fbce07de5a73cd04ba4818bd715a8caa05432365460651b7b9de3f34c89e6318a
+DIST ij151k-src.zip 1580015 BLAKE2B 143fca57d38457f8264f59517890b9541ebc2838f56ccc07fdc0fec114bdc02042dc74a0c9560e7ed47e8d5e3c91f83dd725c860f823f4956c55636c30025bfc SHA512 93249fb1c186e757dde78231d3064a1179f5c10d94dc02b9b0535febd5db78cb2666e9e952380de8847339c840d4e46e857eaa982340c6e5084d1003c44791e6
+EBUILD imagej-1.51k-r1.ebuild 3855 BLAKE2B c3c55318a933a9729f37b6f1867cbdc5f995c1368eac0f17ef628c08929ddd6e75da17c6348bced7f2b6e673ef4b189fb8a9847fa9ac98b4438fe85877d361c1 SHA512 abc79769a94634996e19957a4236eda54a1f3394e964fb6591e1d62ef24c2c72f7920e0a12e7d6b981922e0d8a134ee2a9a208983d0023ef151f813f1611c049
diff --git a/sci-biology/imagej/files/AutoThresholder.java.patch b/sci-biology/imagej/files/AutoThresholder.java.patch
new file mode 100644
index 0000000..97c8932
--- /dev/null
+++ b/sci-biology/imagej/files/AutoThresholder.java.patch
@@ -0,0 +1,10 @@
+--- imagej-1.51k/work/source/ij/process/AutoThresholder.java.ori 2017-03-15 22:33:45.843801175 +0100
++++ imagej-1.51k/work/source/ij/process/AutoThresholder.java 2017-03-15 22:33:55.104053480 +0100
+@@ -650,7 +650,6 @@
+ }
+ // The threshold is the minimum between the two peaks.
+ for (int i=1; i<255; i++) {
+- //IJ.log(" "+i+"  "+iHisto[i]);
+ if (iHisto[i-1] > iHisto[i] && iHisto[i+1] >= iHisto[i]) {
+ threshold = i;
+ break;
diff --git a/sci-biology/imagej/imagej-1.51k-r1.ebuild b/sci-biology/imagej/imagej-1.51k-r1.ebuild
new file mode 100644
index 0000000..931aef0
--- /dev/null
+++ b/sci-biology/imagej/imagej-1.51k-r1.ebuild
@@ -0,0 +1,132 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit java-pkg-2 java-ant-2 eutils versionator
+
+MY_PN="ij"
+MY_PV=$(delete_all_version_separators)
+
+# NOTE:
+# as plugins are regularly lagging behind, we use the pack released for previous
+# version instead. Change to present version locally if you are sure proper
+# version has been released.
+# see https://bugs.gentoo.org/show_bug.cgi?id=112275
+# https://github.com/imagej/imagej1/issues/28
+IJ_PV=$((${MY_PV::3}-1))
+
+DESCRIPTION="Image Processing and Analysis in Java"
+HOMEPAGE="http://rsb.info.nih.gov/ij/"
+
+SRC_URI="http://imagej.nih.gov/ij/download/src/${MY_PN}${MY_PV}-src.zip
+ http://rsb.info.nih.gov/ij/images/ImageJ.png
+ plugins? ( http://wsr.imagej.net/distros/cross-platform/${MY_PN}${IJ_PV}.zip )"
+# plugins are under a different licenses and can be installed into user's $IJ_HOME/plugins
+# plugins? ( http://rsb.info.nih.gov/ij/download/zips/${MY_PN}${IJ_PV}.zip )"
+
+RESTRICT=""
+LICENSE="public-domain" # http://imagej.net/disclaimer.html
+SLOT="0"
+
+KEYWORDS=""
+
+IUSE="doc plugins debug"
+
+RDEPEND=">=virtual/jre-1.6:*
+ dev-java/java-config
+ dev-java/jython"
+DEPEND=">=virtual/jdk-1.6:*
+ dev-java/ant-core
+ ${RDEPEND}"
+
+S=${WORKDIR}/source
+IJ_S=${WORKDIR}/ImageJ
+
+src_prepare() {
+ cp "${DISTDIR}"/ImageJ.png "${WORKDIR}/${PN}.png" || die
+
+ if ! use debug ; then
+ sed -i 's: debug="on">: debug="off">:' "${S}"/build.xml || die
+ fi
+ epatch "${FILESDIR}"/AutoThresholder.java.patch
+ eapply_user
+}
+
+# in src_compile we get: !!! ERROR: Package jython was not found!
+# TODO: overwrite calls to jython ? See
+# ij/plugin/frame/Editor.java
+# plugin/PlugInInterpreter.java
+# plugin/Macro_Runner.java
+
+src_compile() {
+ local antflags="build"
+ use doc && antflags="${antflags} javadocs"
+
+ ant ${antflags} || die "ant build failed"
+
+ # Max memory usage depends on available memory and CPU type
+ MEM=$(grep MemTotal /proc/meminfo | cut -d':' -f2 | grep -o [0-9]*)
+ IJ_MAX_MEM=$(expr ${MEM} / 1024)
+ if use x86 && $IJ_MAX_MEM -gt 2048 ; then
+ IJ_MAX_MEM=2048
+ fi
+ # build finished, generate startup wrapper
+ cat <<EOF > "${T}/${PN}"
+#!${EPREFIX}/bin/bash
+IJ_LIB=${EPREFIX}/usr/share/${PN}/lib
+if !([ "\${IJ_HOME}" ]) ; then
+ IJ_HOME=\${HOME}/.imagej
+fi
+if [ -d \${IJ_HOME}/plugins ] ; then
+ IJ_PLG=\${IJ_HOME}
+else
+ IJ_PLG=${EPREFIX}/usr/share/${PN}/lib
+fi
+if !([ "\$IJ_MEM" ]) ; then
+ IJ_MEM=${IJ_MAX_MEM}
+fi
+if !([ "\$IJ_CP" ]) ; then
+ IJ_CP=\$(java-config -p imagej):\$(java-config -O)/lib/tools.jar
+else
+ IJ_CP=\$(java-config -p imagej):\$(java-config -O)/lib/tools.jar:\${IJ_CP}
+fi
+\$(java-config --java) \\
+ -Xmx\${IJ_MEM}m -Dswing.aatext=true \\
+ -Dawt.useSystemAAFontSettings=on\\
+ -cp \${IJ_CP} \\
+ -Duser.home=\${IJ_HOME} \\
+ -Dplugins.dir=\${IJ_PLG} \\
+ ij.ImageJ "\$@"
+EOF
+}
+
+src_install() {
+ java-pkg_dojar *.jar
+ dobin "${T}/${PN}"
+
+ if use plugins ; then
+ cp -R "${IJ_S}"/plugins "${ED}"/usr/share/"${PN}"/lib/
+ cp -R "${IJ_S}"/macros "${ED}"/usr/share/"${PN}"/lib/
+ fi
+
+ use doc && java-pkg_dohtml -r "${WORKDIR}"/api
+
+ insinto /usr/share/pixmaps
+ doins "${WORKDIR}/${PN}".png
+ make_desktop_entry "${PN}" ImageJ "${PN}".png Graphics
+}
+
+pkg_postinst() {
+ einfo ""
+ einfo "You can configure the path of a folder, which contains \"plugins\" directory and IJ_Prefs.txt,"
+ einfo "by setting the environmental variable, \$IJ_HOME."
+ einfo "Default setting is \$IJ_HOME=\${HOME}/.imagej, i.e. \${HOME}/.imagej/plugins and \${HOME}/.imagej/IJ_Prefs.txt."
+ einfo ""
+ einfo "You can also configure the memory size by setting the environmental variable, \$IJ_MEM,"
+ einfo "and the class path by setting the environmental variable, \$IJ_CP."
+ einfo ""
+ einfo "If you want to use much more plugins, please see http://rsb.info.nih.gov/ij/plugins/index.html"
+ einfo "and add *.class files to \$IJ_HOME/plugins folder"
+ einfo ""
+}
diff --git a/sci-electronics/adas/Manifest b/sci-electronics/adas/Manifest
new file mode 100644
index 0000000..a43978a
--- /dev/null
+++ b/sci-electronics/adas/Manifest
@@ -0,0 +1,14 @@
+DIST adas-3.2.6.tar.bz2 468108 RMD160 2ae67498becb4c5aa633774d23fb3cbf805f33c5 SHA1 104efb2c637a32c49989b9adc9775f4d6054edc8 SHA256 da3af68533433e4bbb10b8cab67accab812bca405530768a96717afb967d4b9e
+DIST adas-3.2.7.tar.bz2 474895 RMD160 1d26b0f10dafd0ee0560e2140e9ee6dea11d6627 SHA1 f864411216825a8824bcd661a5072a103589fd22 SHA256 3e99bedca2273966c968dd5677181f49b6c0f622d5e725bb87c21f239630cdd6
+DIST adas-3.2.8.tar.bz2 474894 RMD160 aacb238e5e78ec1cd7e99c33a053e5414a8972c2 SHA1 7f6464e73d4efdb18362ef98c8d383752da76bfd SHA256 e415e16c1ad1cd88e3a0508bd9e8beac833185d3b8aad71d0c8b231ccb64a458
+DIST adas-3.2.9.tar.bz2 475656 RMD160 6108fdaa6666955f1ec6f9b362b894f2d533538f SHA1 0171da5562f889dc54c1105cb793ef470b30b9d1 SHA256 a0beec2cd581deeecef075981264912784c401337d2c9e770c7d1999c166427e
+DIST adas-3.3.0.tar.bz2 476703 RMD160 7c84b024cc5382537b792a91b72b2e773aa1f984 SHA1 db26ce5a37ba6e13a292a939fdeeda2304c4399c SHA256 68590e89a56ee6023e924ba55d8df6ef2bc1efd67e8439b48b8cc9812d4f12d0
+DIST adas-3.3.1.tar.bz2 478517 RMD160 2da60a501489c13c0d94c4a8bcb000f8c0be72a4 SHA1 3dbfa38677d9f81c410a2c82e06f3892c8349ada SHA256 0a1a2afa164330feb62aaa334370e1aca5eceb2a703f872f5dc4159fcb88de82
+DIST adas-3.3.2.tar.bz2 499504 RMD160 d53fba80d44a35cd5cc22b2af84957ddf4141311 SHA1 46bc4ad3402c329830ed5da09413175faf22cddf SHA256 77ac68e026e3d893867504a6a08b1cd9b57bb4edbe6ef1098f07519a53bbaf64
+EBUILD adas-3.2.6.ebuild 1662 RMD160 4c80449a85633250ab86b6e54732ff69e3e863b9 SHA1 77d74224b03e4cae6b5e9bf47f134a2aab099ab7 SHA256 ba4537e07b44423bae366b0734e4b8a960c94e068ed2a3d6ecfa23fabac6dd7f
+EBUILD adas-3.2.7.ebuild 1695 RMD160 443ad04721ea32b7fbbb8cbeb6888c5fad9809ef SHA1 ae7f9a37b39a452eee3503def0ff4003396e18ab SHA256 768c334f7b3f7bcf474f10ca7d104095bd5cbcd337b4953e89890a38176b9549
+EBUILD adas-3.2.8.ebuild 1695 RMD160 443ad04721ea32b7fbbb8cbeb6888c5fad9809ef SHA1 ae7f9a37b39a452eee3503def0ff4003396e18ab SHA256 768c334f7b3f7bcf474f10ca7d104095bd5cbcd337b4953e89890a38176b9549
+EBUILD adas-3.2.9.ebuild 1695 RMD160 443ad04721ea32b7fbbb8cbeb6888c5fad9809ef SHA1 ae7f9a37b39a452eee3503def0ff4003396e18ab SHA256 768c334f7b3f7bcf474f10ca7d104095bd5cbcd337b4953e89890a38176b9549
+EBUILD adas-3.3.0.ebuild 1811 RMD160 d6daea71844f7a10e750aa961462f91a91caa6a6 SHA1 e17f42e9cbd278c54ac202585bed617942ee0d8f SHA256 e49e48c883f12747cd4c9ad8556a5c05991eb1b6caad45a20dc0db3b89c5e620
+EBUILD adas-3.3.1.ebuild 1819 RMD160 2045bb3f89a2759dde1733a1ab8c881d88868e97 SHA1 90cf06711d81ad656c7b623455590c5fa0e98911 SHA256 4cf8a4a477fbc42392fd821e71cb304c7acdfab2fc3abbb67dd7d4ad9a3d655c
+EBUILD adas-3.3.2.ebuild 1819 RMD160 2045bb3f89a2759dde1733a1ab8c881d88868e97 SHA1 90cf06711d81ad656c7b623455590c5fa0e98911 SHA256 4cf8a4a477fbc42392fd821e71cb304c7acdfab2fc3abbb67dd7d4ad9a3d655c
diff --git a/sci-electronics/adas/adas-3.2.6.ebuild b/sci-electronics/adas/adas-3.2.6.ebuild
new file mode 100644
index 0000000..9173118
--- /dev/null
+++ b/sci-electronics/adas/adas-3.2.6.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ dev-libs/libds
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+}
diff --git a/sci-electronics/adas/adas-3.2.7.ebuild b/sci-electronics/adas/adas-3.2.7.ebuild
new file mode 100644
index 0000000..4aecd34
--- /dev/null
+++ b/sci-electronics/adas/adas-3.2.7.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ dev-libs/libds
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_error || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+}
diff --git a/sci-electronics/adas/adas-3.2.8.ebuild b/sci-electronics/adas/adas-3.2.8.ebuild
new file mode 100644
index 0000000..4aecd34
--- /dev/null
+++ b/sci-electronics/adas/adas-3.2.8.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ dev-libs/libds
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_error || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+}
diff --git a/sci-electronics/adas/adas-3.2.9.ebuild b/sci-electronics/adas/adas-3.2.9.ebuild
new file mode 100644
index 0000000..4aecd34
--- /dev/null
+++ b/sci-electronics/adas/adas-3.2.9.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ dev-libs/libds
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_error || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+}
diff --git a/sci-electronics/adas/adas-3.3.0.ebuild b/sci-electronics/adas/adas-3.3.0.ebuild
new file mode 100644
index 0000000..9557a14
--- /dev/null
+++ b/sci-electronics/adas/adas-3.3.0.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ dev-libs/libds
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_error || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+ keepdir /var/www/localhost/htdocs/conf/flags
+
+ chown -R apache:apache ${D}/var/www/localhost/htdocs/conf || die
+}
diff --git a/sci-electronics/adas/adas-3.3.1.ebuild b/sci-electronics/adas/adas-3.3.1.ebuild
new file mode 100644
index 0000000..e4ef1d9
--- /dev/null
+++ b/sci-electronics/adas/adas-3.3.1.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ >=dev-libs/libds-0.1.3
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_error || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+ keepdir /var/www/localhost/htdocs/conf/flags
+
+ chown -R apache:apache ${D}/var/www/localhost/htdocs/conf || die
+}
diff --git a/sci-electronics/adas/adas-3.3.2.ebuild b/sci-electronics/adas/adas-3.3.2.ebuild
new file mode 100644
index 0000000..e4ef1d9
--- /dev/null
+++ b/sci-electronics/adas/adas-3.3.2.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Unified Aragats Data Acquisition System"
+SRC_URI="http://dside.dyndns.org/files/adas/${P}.tar.bz2"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+DEPEND="dev-libs/libxml2
+ >=dev-libs/libds-0.1.3
+ www-servers/apache"
+RDEPEND="${DEPEND}
+ app-misc/lcdproc
+ net-misc/ntp"
+
+src_compile() {
+ make -C adas || die
+ make -C clients || die
+ make -C namt/emu || die
+ make -C tools
+}
+
+src_install() {
+ into /usr
+ dobin adas/adas-srv || die
+ dobin misc/adas.pl || die
+ dobin misc/adas_error || die
+ dobin misc/adas_xml2ascii || die
+ cp -P -f misc/adas_xml2csv ${D}/usr/bin || die
+ dobin misc/adas_ascii2xml || die
+ dobin clients/adas-simple || die
+ dobin tools/nettest || die
+ cp -P -f tools/nettest-* ${D}/usr/bin/
+ dobin namt/emu/namt-emu || die
+ newinitd misc/adas.gentoo adas
+ newinitd misc/adas-eden.gentoo adas-eden
+
+ dodir /etc
+ dodir /etc/cron.hourly
+ dodir /etc/cron.daily
+
+ install -m 644 adas/adas.cfg ${D}/etc/adas.cfg.example
+ install -m 755 misc/adas-eden.cron ${D}/etc/cron.hourly/adas
+ install -m 755 misc/adas-clean.cron ${D}/etc/cron.hourly/adas-clean
+ install -m 755 misc/adas-ntp.pl ${D}/etc/cron.hourly/adas-ntp.pl
+
+ install -m 755 misc/adas-clean.cfg ${D}/etc/adas-clean.cfg
+ chown apache:apache ${D}/etc/adas-clean.cfg
+
+ install -m 755 emu/ascii.pl ${D}/usr/bin/adas-emu-ascii.pl
+
+ dodir /var/www/localhost/
+ cp -R web ${D}/var/www/localhost/
+ mv ${D}/var/www/localhost/web ${D}/var/www/localhost/htdocs
+
+ keepdir /var/www/localhost/htdocs/data
+ keepdir /var/www/localhost/htdocs/conf/flags
+
+ chown -R apache:apache ${D}/var/www/localhost/htdocs/conf || die
+}
diff --git a/sci-electronics/lpc2k_pgm/Manifest b/sci-electronics/lpc2k_pgm/Manifest
new file mode 100644
index 0000000..27ed531
--- /dev/null
+++ b/sci-electronics/lpc2k_pgm/Manifest
@@ -0,0 +1,3 @@
+AUX lpc2k_pgm-ds-console.patch.gz 94769 RMD160 71f306af74d38a432128b046bd64134ea8d42810 SHA1 397b271e1c82612841ccd0dc5ec461d84b5a9e95 SHA256 bb925424c01a8e18a7e0a557cecf8e95646da2e9c149a067b9d0dd6c10feaf3b
+DIST lpc2k_pgm_1.02.tar.gz 24819 RMD160 c5ae4bbd131820d76d301be0bf2002f29617b0f6 SHA1 c58885ce6528d8c6777f540d2f97fb121f3ded77 SHA256 4e623f20383b0c935fe0cc3dca638c8757de81d37d001f53c3cb846cdf26e674
+EBUILD lpc2k_pgm-1.02.ebuild 779 RMD160 5c5e44046ce9461893ed4fec4ace7d7f8df0efaf SHA1 4b0d6ccccc63fd1a02ac04d6ddda4408e5e9d3dd SHA256 4da2beda04982840dfd1e4453a8f6f1f67c19003499631b4eb6edb672ce878f6
diff --git a/sci-electronics/lpc2k_pgm/files/lpc2k_pgm-ds-console.patch.gz b/sci-electronics/lpc2k_pgm/files/lpc2k_pgm-ds-console.patch.gz
new file mode 100644
index 0000000..1c13fbd
--- /dev/null
+++ b/sci-electronics/lpc2k_pgm/files/lpc2k_pgm-ds-console.patch.gz
Binary files differ
diff --git a/sci-electronics/lpc2k_pgm/lpc2k_pgm-1.02.ebuild b/sci-electronics/lpc2k_pgm/lpc2k_pgm-1.02.ebuild
new file mode 100644
index 0000000..a1b3de4
--- /dev/null
+++ b/sci-electronics/lpc2k_pgm/lpc2k_pgm-1.02.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Bootloader Utility For Philips LPC 2xxx ARM7 Chips"
+SRC_URI="http://www.pjrc.com/arm/lpc2k_pgm/lpc2k_pgm_1.02.tar.gz"
+HOMEPAGE="http://www.pjrc.com/arm/lpc2k_pgm/"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+IUSE="gtk"
+DEPEND="gtk? ( >=x11-libs/gtk+-2.0 )"
+
+S=${WORKDIR}/${PN}
+
+src_unpack() {
+ unpack ${PN}_${PV}.tar.gz || die
+ cd ${PN}
+ epatch ${FILESDIR}/lpc2k_pgm-ds-console.patch.gz || die
+ chmod +x configure compile depcomp install-sh missing
+}
+
+src_compile() {
+ ./configure || die
+ make || die
+}
+
+src_install() {
+ into /usr
+ dobin lpc2k_pgm || die
+ use gtk && ( dobin lpc2k_pgm_gtk2 || die )
+}
diff --git a/sci-geosciences/gipfel/Manifest b/sci-geosciences/gipfel/Manifest
new file mode 100644
index 0000000..341199d
--- /dev/null
+++ b/sci-geosciences/gipfel/Manifest
@@ -0,0 +1,2 @@
+DIST gipfel-0.2.5.tar.gz 340629 RMD160 ffb3d84792c299d4706db23b152499b75d63ad4b SHA1 ccc1f764de33ea3f590af4400fb57b7354cbd0b3 SHA256 938fe3da342eca07903f35678a3010c04f36bf415a23039b0e996431f2ceda31
+EBUILD gipfel-0.2.5.ebuild 723 RMD160 e1d070d1cc88c8ec0750868c4dfc87240942d68a SHA1 3631759bb6c7a9d132fef01830dbc85620e8613d SHA256 a8289097bc1017bd59b36e78b4cd4eb44110e1c488e6a052195f811a569f00cb
diff --git a/sci-geosciences/gipfel/gipfel-0.2.5.ebuild b/sci-geosciences/gipfel/gipfel-0.2.5.ebuild
new file mode 100644
index 0000000..7fb88d3
--- /dev/null
+++ b/sci-geosciences/gipfel/gipfel-0.2.5.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/gpscorrelate/gpscorrelate-1.5.6.ebuild,v 1.3 2008/08/23 18:13:05 maekke Exp $
+
+inherit eutils
+
+DESCRIPTION="gipfel helps to find the names of mountains or points of interest on a picture."
+HOMEPAGE="http://www.ecademix.com/JohannesHofmann/gipfel.html"
+SRC_URI="http://www.ecademix.com/JohannesHofmann/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="doc gtk"
+DEPEND=">=x11-libs/fltk-1.1.7
+ sci-libs/gsl
+ media-libs/tiff
+ media-gfx/exif"
+
+src_compile() {
+ econf
+ emake
+}
+
+src_install() {
+ emake install DESTDIR=${D}
+ dodoc README NEWS
+}
diff --git a/sci-geosciences/gosmore/Manifest b/sci-geosciences/gosmore/Manifest
new file mode 100644
index 0000000..d80b384
--- /dev/null
+++ b/sci-geosciences/gosmore/Manifest
@@ -0,0 +1 @@
+EBUILD gosmore-9999.ebuild 472 RMD160 0fef7e01b98a15467f163443f0c0cf09893f8f79 SHA1 0ddb1f5256446f5edc371602a3d5f7769c6c8aae SHA256 7ad27d340b2104e792c5365ce8998df657c8c0ab9411f6cbad1c7c457b477871
diff --git a/sci-geosciences/gosmore/gosmore-9999.ebuild b/sci-geosciences/gosmore/gosmore-9999.ebuild
new file mode 100644
index 0000000..66e8c3b
--- /dev/null
+++ b/sci-geosciences/gosmore/gosmore-9999.ebuild
@@ -0,0 +1,22 @@
+EAPI="1"
+inherit subversion
+
+DESCRIPTION="osmore is a routing and viewer of OSM XML data"
+HOMEPAGE="http://wiki.openstreetmap.org/wiki/Gosmore"
+SRC_URI=""
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+ESVN_REPO_URI="http://svn.openstreetmap.org/applications/rendering/gosmore/"
+
+src_compile() {
+ perl -pi -e "s|\(prefix\)/usr/share/|(prefix)/share/gosmore/|g" Makefile || die
+
+ emake prefix=/usr
+}
+
+src_install () {
+ emake install DESTDIR="${D}" prefix=/usr
+}
diff --git a/sci-geosciences/happycamel/Manifest b/sci-geosciences/happycamel/Manifest
new file mode 100644
index 0000000..1ecf6b9
--- /dev/null
+++ b/sci-geosciences/happycamel/Manifest
@@ -0,0 +1,7 @@
+AUX HappyCamel-optional-correlate.diff 2370 SHA256 f7eb91c7a0c529a0a5863a828cd90a31797fe2db08be7672921a5d513ee8e635 SHA512 4b75c63dc5ad42c6033558a5c03edafef2b571b4c83318845198eec645e7101b78a7e3d2c35b0f986d06e6fd2022c1bcd80f3629ff649ababa893890060c2938 WHIRLPOOL 2c985a9b66073ba5a67030e9da32485a8f2579603050d5be1c09f11316051ca0733308d378f7957731a2d3bcd082a76630fefb166b2737b2a909d62f9779af3b
+AUX happycamel-ds-icons.patch 8246 SHA256 30976484d57a7de8407873e05d22f7e63d99c70eafde316e214ab7eaedfbb9f6 SHA512 07672aa47e87fdc200f0fda7788743046831ec3a901ff3db8f7cba14730fe176833664c0ffdd6211fcb8edcf819fa3ac164ed937637dc13c1033a144a1d7b943 WHIRLPOOL d57e83acee720c0fdb993134aca13eecca5b7fd975c56fac5a39adef5abd549b90330c46e2361b657cdb754af3db91466d0b8b438f92c8c24c3b9ddab40665c9
+AUX happycamel-v1-beta3-ds-features.patch 16869 SHA256 ce307ef6de9815a94139d25a7e257d7284bc37a41b2ca47300b53b3190ab78c1 SHA512 f619d3dd8d91635d658907558ae50c0568826915ce46cf862ae845af94c1ee7506d4589ce28e67b50ef4bb4f7682aa1d5116ce5408de1033c02d5a19d55f8fb2 WHIRLPOOL 25eff5a51fce97ca0a44993ee71aadb253611c14b4b613dbf68df69c6de82e188fcc569c0e1797d1ce1286ddbc0c947cd348aa4d71bdc4d5f18317e8d3108ca4
+DIST happycamel-v1-beta3.tar.gz 89936 SHA256 305daa114c9707f9cb1993dc07aa9b54c9cabebfb83acf3fe5eccd3281bebb13 SHA512 a72dc03de8f3261b66a35df8a3f49cd890411781f5be143f8ed2b226a258e320945765804e75adc3966de8bb88aecef68d3eb68f7ad7fed112d4fadcb865e09a WHIRLPOOL cc95fed8bbca5e89c75a0ee484a53182f1d0d16fbe67509e1a3059ca2e3982d08b76af8c59d5bbde6a99a63288aaea8b9fbe9115685f97bea21ecff6c682ce4c
+EBUILD happycamel-1_beta3-r1.ebuild 896 SHA256 0cc4e276ad3ff173ff13f948929adc8a6e698ae52bf0f39ac5f0420cef24ec76 SHA512 2e062d0243d1f509b92f9a19ccb0d49303f4641d49090c1b2d23c9b726a44b27ea4722bda36b9c05d24c42cfb557ab221f2991c34d9b02f9842bd748a5f4a50d WHIRLPOOL bae76b738f34fee79c2121133abe28a294f86f76520eff552617f92f96a20a46e9f532a31bff00d343cad24b6614c78e05e437c8d6006da482792967d317ea46
+EBUILD happycamel-1_beta3-r2.ebuild 900 SHA256 7516322bc1d99c255b48cbe8d2e94817a8b75f595e1b24f48f63fe346a5ed207 SHA512 754b4c57a22dccbd8c71fcacee89f04165ef87ea87b2feefe034c31ed9b83747271595ff13a702a9c8c793480e72fae1b92d5eda7d5f385ad4ab7f5d6831e8e1 WHIRLPOOL 1126b6ddb863c33a1f33c797c63344ea0f864ca5b7df99a870c8b68dea99839d39f40ecf6268e84e8624dd60375e53c42c4aef19222a62ec8fc7f11730e780cb
+EBUILD happycamel-1_beta3-r3.ebuild 895 SHA256 32fd0dff0610b22a835d07c052a8ddd2e5a1281a5815de335d06c05fc5041662 SHA512 bd6d298e11fe813d9d39c994e893bafde3801a75a0ebbc2d07e8be79ee6e86a7b30525fd4c81b2c837094118fdee46acbbeb14c3597b0beff58a3c6d7972b4b8 WHIRLPOOL fba5fc10bdcbdfb7f15f075881dd04abb5015455121e464c3d22a141c3fe2c5397ce3ab4d9ba341c99a5d37e6bd2b8ce0848e4273e6a08e4a101d579ca2c29bb
diff --git a/sci-geosciences/happycamel/files/HappyCamel-optional-correlate.diff b/sci-geosciences/happycamel/files/HappyCamel-optional-correlate.diff
new file mode 100644
index 0000000..0b57729
--- /dev/null
+++ b/sci-geosciences/happycamel/files/HappyCamel-optional-correlate.diff
@@ -0,0 +1,38 @@
+diff -dPNur HappyCamel.orig/cli.py HappyCamel/cli.py
+--- HappyCamel.orig/cli.py 2010-01-29 09:23:25.000000000 +0100
++++ HappyCamel/cli.py 2011-08-14 09:21:16.000000000 +0200
+@@ -188,6 +188,8 @@
+ help = "The number of seconds the camera's time runs before the GPS device (note that photo's and tracklogs may or may not compensate for UTC and timezone. You may need to correct this manually. Also see -r.)")
+ parser.addOption("--fix-dates", var = "fix_dates", default = defaults["fix_dates"],
+ type = "bool", bool_action = True, help = "If the clock difference is known (via --calibrate or --clock-difference), shift the times in the image metadata to their proper value. Currently set to %default")
++ parser.addOption("--fix-locations", var = "fix_locations", default = defaults["fix_locations"],
++ type = "bool", bool_action = True, help = "Correlate GPS track with image timestamps to get geolocation information. Currently set to %default")
+
+ # The options relating to interpolation
+ parser.addHelpRule("\nOptions relating to interpolation of the location:")
+diff -dPNur HappyCamel.orig/config.py HappyCamel/config.py
+--- HappyCamel.orig/config.py 2010-01-29 09:23:25.000000000 +0100
++++ HappyCamel/config.py 2011-08-14 09:19:24.000000000 +0200
+@@ -56,7 +56,8 @@
+ "flickr_user" : [str, "Flickr", "Default user", None],
+
+ # The options regarding metadata writing
+- "fix_dates": [bool, "Metadata writing", "Fix dates", False],
++ "fix_dates" : [bool, "Metadata writing", "Fix dates", False],
++ "fix_locations": [bool, "Metadata writing", "Fix locations", False],
+
+ # The options regarding interpolation
+ "elevation_mode": [int, "Interpolation", "Elevation", 1],
+diff -dPNur HappyCamel.orig/main.py HappyCamel/main.py
+--- HappyCamel.orig/main.py 2010-01-29 09:23:25.000000000 +0100
++++ HappyCamel/main.py 2011-08-14 09:23:51.000000000 +0200
+@@ -500,6 +500,9 @@
+ """ Match the photo's in photo_list to the location sources in loc_sources,
+ clean up the photo list and return a list of unmatched photo's. """
+
++ if not self.conf.get("fix_locations"):
++ return []
++
+ # Do the matching
+ photo_list.matchTracks(loc_sources.getLocationSources(), elevation_mode,
+ max_deviation, use_outside)
diff --git a/sci-geosciences/happycamel/files/happycamel-ds-icons.patch b/sci-geosciences/happycamel/files/happycamel-ds-icons.patch
new file mode 100644
index 0000000..439f049
--- /dev/null
+++ b/sci-geosciences/happycamel/files/happycamel-ds-icons.patch
@@ -0,0 +1,167 @@
+diff -dPNur HappyCamel.current/cli.py HappyCamel/cli.py
+--- HappyCamel.current/cli.py 2013-08-27 05:13:35.000000000 +0200
++++ HappyCamel/cli.py 2013-09-24 19:46:02.000000000 +0200
+@@ -257,6 +257,10 @@
+ var = "show_waypoints",
+ default = defaults["show_waypoints"],
+ help = "Show the waypoints in the KMZ file. Currently set to %default.")
++ parser.addOption("--google-maps", type = "bool", bool_action = True,
++ var = "for_google_maps",
++ default = defaults["for_google_maps"],
++ help = "Generate for google-maps. Currently set to %default.")
+
+ # The options relating to image parsing
+ parser.addHelpRule("\nUsually, metadata is read through the internal library, but written through the external Exiftool command. Using Exiftool is much slower, but using the internal library for writing carries some risk as it is not as mature.\nThe following options influence this behavior:")
+@@ -333,6 +337,7 @@
+ options["between_color"] = False
+ options["between_width"] = False
+ options["show_waypoints"] = False
++ options["for_google_maps"]= True
+
+ # Check if the user specified any photo's
+ if (len(args) < 1) and not (options["report_times"] or options["save_config"]):
+diff -dPNur HappyCamel.current/config.py HappyCamel/config.py
+--- HappyCamel.current/config.py 2013-08-27 05:13:35.000000000 +0200
++++ HappyCamel/config.py 2013-09-24 19:46:49.000000000 +0200
+@@ -77,6 +77,7 @@
+ "between_color": [str, "KMZ File", "Between color", "60ffffff"],
+ "between_width": [float, "KMZ File", "Between width", 2.0],
+ "show_waypoints": [bool, "KMZ File", "Show waypoints", False],
++ "for_google_maps": [bool, "KMZ File", "Generate for Google Maps", True],
+ "order": [str, "KMZ File", "Order", "D"],
+ "image_size": [int, "KMZ File", "Pixels", 200],
+ "icon_size": [int, "KMZ File", "Icon pixels", 0],
+diff -dPNur HappyCamel.current/kmlhandler.py HappyCamel/kmlhandler.py
+--- HappyCamel.current/kmlhandler.py 2013-08-27 05:13:35.000000000 +0200
++++ HappyCamel/kmlhandler.py 2013-09-24 19:53:49.000000000 +0200
+@@ -59,7 +59,7 @@
+ self.between_tracks_width = between_tracks_width
+
+ def writeKML(self, out_fp, write_photos = True, write_waypoints = True,
+- write_track = True, write_between_tracks = True):
++ write_track = True, write_between_tracks = True, for_google_maps = True):
+ """ Write a KML file to the specified file pointer out_fp. The arguments
+ specify which parts of the file should be included. If write_photos is
+ True, thumbnails should be included. If write_waypoints is True,
+@@ -80,7 +80,7 @@
+
+ if (write_photos):
+ self.logger.debug("Writing photo folder")
+- self.writePhotos(out_fp)
++ self.writePhotos(out_fp, for_google_maps)
+
+ if (write_waypoints):
+ self.logger.debug("Writing waypoints folder")
+@@ -92,7 +92,7 @@
+
+ out_fp.write('</Document>\n')
+
+- def writePhotos(self, out_fp):
++ def writePhotos(self, out_fp, for_google_maps):
+ """ Write the photo references with comments and stuff to the file pointer
+ out_fp . """
+
+@@ -116,10 +116,9 @@
+ out_fp.write('<Folder>\n')
+ out_fp.write(' <name>Images</name>\n')
+ # Write each thumbnail as a placemark
++
+ for photo in self.photo_list:
+ if (photo in self.thumbnail_names): # Only process if there's a thumbnail
+- location = photo.getLocation()
+-
+ if (self.use_icons):
+ out_fp.write(' <Style id="photo_%s">\n' % self.thumbnail_names[photo])
+ out_fp.write(' <IconStyle>\n')
+@@ -133,6 +132,10 @@
+ out_fp.write(' </LabelStyle>\n')
+ out_fp.write(' </Style>\n')
+
++ for photo in self.photo_list:
++ if (photo in self.thumbnail_names): # Only process if there's a thumbnail
++ location = photo.getLocation()
++
+ out_fp.write(' <Placemark>\n')
+ out_fp.write(' <name>%s</name>\n' % photo.getName())
+ out_fp.write(' <description><![CDATA[')
+@@ -157,9 +160,22 @@
+ out_fp.write(' <Snippet>%s</Snippet>\n' % photo.getName())
+
+ if (self.use_icons):
+- out_fp.write(' <styleUrl>#photo_%s</styleUrl>\n' % self.thumbnail_names[photo])
++ if (for_google_maps):
++ out_fp.write(' <StyleMap><Pair><Style>\n')
++ out_fp.write(' <IconStyle>\n')
++ out_fp.write(' <scale>1.5</scale>\n')
++ out_fp.write(' <Icon>\n')
++ out_fp.write(' <href>icons/%s</href>\n' % self.thumbnail_names[photo])
++ out_fp.write(' </Icon>\n')
++ out_fp.write(' </IconStyle>\n')
++ out_fp.write(' <LabelStyle>\n')
++ out_fp.write(' <scale>0.2</scale>\n')
++ out_fp.write(' </LabelStyle>\n')
++ out_fp.write(' </Style></Pair></StyleMap>\n')
++ else:
++ out_fp.write(' <styleUrl>#photo_%s</styleUrl>\n' % self.thumbnail_names[photo])
+ else:
+- out_fp.write(' <styleUrl>#photo_mark</styleUrl>\n')
++ out_fp.write(' <styleUrl>#photo_mark</styleUrl>\n')
+ out_fp.write(' <Point>\n')
+ if (location[2]):
+ out_fp.write(' <altitudeMode>clampToGround</altitudeMode>\n')
+@@ -202,7 +218,7 @@
+ # Write the actual waypoints
+ for waypoint in waypoints:
+ out_fp.write(' <Placemark id="%s">\n' % waypoint[3])
+- out_fp.write(' <styleUrl>waypoint_style</styleUrl>\n')
++ out_fp.write(' <styleUrl>#waypoint_style</styleUrl>\n')
+ out_fp.write(' <Point>\n')
+ out_fp.write(' <coordinates>%.5f,%.5f,%.3f</coordinates>\n' % (waypoint[1], waypoint[0], (waypoint[2] or 0)))
+ out_fp.write(' </Point>\n')
+@@ -399,7 +415,7 @@
+ self.logger.error("Couldn't make a thumbnail of image %s." % photo.getName())
+
+ def writeFile(self, write_photos = False, write_waypoints = False,
+- write_track = False, write_between_tracks = False):
++ write_track = False, write_between_tracks = False, for_google_maps = True):
+ """ Write the KMZ file. The arguments specify which parts of the file should
+ be included. If write_photos is True, thumbnails should be included.
+ If write_waypoints is True, waypoints should be included. If write_track
+@@ -440,7 +456,7 @@
+ self.between_tracks_color, self.between_tracks_width,
+ self.photos_clickable, self.photos_url, bool(self.icon_size))
+ kml_fp = StringIO.StringIO()
+- kml.writeKML(kml_fp, write_photos, write_waypoints, write_track, write_between_tracks)
++ kml.writeKML(kml_fp, write_photos, write_waypoints, write_track, write_between_tracks, for_google_maps)
+
+ # Write the KML file to the ZIP archive
+ out_file.writestr("base.kml", kml_fp.getvalue())
+diff -dPNur HappyCamel.current/main.py HappyCamel/main.py
+--- HappyCamel.current/main.py 2013-08-27 05:13:35.000000000 +0200
++++ HappyCamel/main.py 2013-09-24 19:50:50.000000000 +0200
+@@ -264,7 +264,8 @@
+ self.conf.get("url"),
+ self.conf.get("show_waypoints"),
+ self.conf.get("show_track"),
+- self.conf.get("show_between_tracks"))
++ self.conf.get("show_between_tracks"),
++ self.conf.get("for_google_maps"))
+
+ def getLocSources(self, input_list):
+ """ Build and return a GeoSources instance with all possible sources of
+@@ -533,7 +534,7 @@
+ def writeKMZFile(self, gpx_files, photo_list, file_path, order, image_size, icon_size,
+ title, track_color, track_width, between_color,
+ between_width, clickable, photos_url, show_waypoints, show_track,
+- show_between_tracks):
++ show_between_tracks, for_google_maps):
+
+ """ Write the KMZ file with the specified options. """
+
+@@ -543,5 +544,5 @@
+
+ kmz.writeFile(write_photos = True,
+ write_waypoints = show_waypoints, write_track = show_track,
+- write_between_tracks = show_between_tracks)
++ write_between_tracks = show_between_tracks, for_google_maps = for_google_maps)
+
diff --git a/sci-geosciences/happycamel/files/happycamel-v1-beta3-ds-features.patch b/sci-geosciences/happycamel/files/happycamel-v1-beta3-ds-features.patch
new file mode 100644
index 0000000..4bf9abc
--- /dev/null
+++ b/sci-geosciences/happycamel/files/happycamel-v1-beta3-ds-features.patch
@@ -0,0 +1,322 @@
+diff -dPNur happycamel-v1-beta3/HappyCamel/cli.py happycamel-v1-beta3-ds/HappyCamel/cli.py
+--- happycamel-v1-beta3/HappyCamel/cli.py 2008-04-17 21:25:10.000000000 +0200
++++ happycamel-v1-beta3-ds/HappyCamel/cli.py 2008-11-19 13:58:07.000000000 +0100
+@@ -221,11 +221,16 @@
+ parser.addOption("--image-size", metavar = "pixels", var = "image_size",
+ type = "int", default = defaults["image_size"],
+ help = "The size of the long side of the photo in the KMZ file. Currently set to %default.")
++ parser.addOption("--icon-size", metavar = "pixels", var = "icon_size",
++ type = "int", default = defaults["icon_size"],
++ help = "The size of the long side of the icon in the KMZ file. Currently set to %default.")
+ parser.addOption("--title", metavar = "title", var = "title",
+ default = defaults["title"], help = "The title of your KMZ file. Currently set to \"%default\".")
+ parser.addOption("--clickable", var = "clickable", type = "bool",
+ bool_action = True, default = defaults["clickable"],
+ help = "It true, make the images clickable so they are shown in your web browser. WARNING: When using disk photos, this is not portable across computers, unless the photo's are placed at exactly the same path as on the original machine. Currently set to %default.")
++ parser.addOption("--url", var = "url",
++ default = "", help = "Defines URL there the photos are published. Currently set to %default.")
+ parser.addOption("--track", type = "bool", bool_action = True,
+ var = "show_track", default = defaults["show_track"],
+ help = "Show the GPS track in the KMZ file. Currently set to %default.")
+@@ -315,8 +320,10 @@
+ options["kmz_file"] = False
+ options["order"] = False
+ options["image_size"] = False
++ options["icon_size"] = False
+ options["title"] = False
+ options["clickable"] = False
++ options["url"] = False
+ options["show_track"] = False
+ options["track_color"] = False
+ options["track_width"] = False
+diff -dPNur happycamel-v1-beta3/HappyCamel/config.py happycamel-v1-beta3-ds/HappyCamel/config.py
+--- happycamel-v1-beta3/HappyCamel/config.py 2008-04-17 21:25:10.000000000 +0200
++++ happycamel-v1-beta3-ds/HappyCamel/config.py 2008-11-19 13:54:41.000000000 +0100
+@@ -78,8 +78,10 @@
+ "show_waypoints": [bool, "KMZ File", "Show waypoints", False],
+ "order": [str, "KMZ File", "Order", "D"],
+ "image_size": [int, "KMZ File", "Pixels", 200],
++ "icon_size": [int, "KMZ File", "Icon pixels", 0],
+ "title": [str, "KMZ File", "Title", "Photo report"],
+- "clickable": [bool, "KMZ File", "Clickable", False]
++ "clickable": [bool, "KMZ File", "Clickable", False],
++ "url": [str, "KMZ File", "Photos URL", ""]
+ }
+
+ def __init__(self):
+@@ -133,7 +135,7 @@
+ if (type(value) == self.map[option][0]):
+ self.values[option] = value
+ else:
+- raise TypeError, "Expected %s, but got %s instead" % (self.map[options][0], type(value))
++ raise TypeError, "Expected %s, but got %s instead for option %s" % (self.map[option][0], type(value), option)
+ else:
+ raise UnknownOptionError(option)
+
+diff -dPNur happycamel-v1-beta3/HappyCamel/kmlhandler.py happycamel-v1-beta3-ds/HappyCamel/kmlhandler.py
+--- happycamel-v1-beta3/HappyCamel/kmlhandler.py 2008-04-17 21:25:10.000000000 +0200
++++ happycamel-v1-beta3-ds/HappyCamel/kmlhandler.py 2008-11-19 13:57:31.000000000 +0100
+@@ -27,7 +27,7 @@
+ def __init__(self, gpx_files, photo_list, thumbnail_names, logger,
+ title = "Photo report", track_color = "ffffffff",
+ track_width = 1.0, between_tracks_color = None,
+- between_tracks_width = None, photos_clickable = False):
++ between_tracks_width = None, photos_clickable = False, photos_url = "", use_icons = False):
+ """ Initialize a new KML file. gpx_files is a list of GPXFile objects which
+ should be drawn in the file. photo_list is a PhotoList object of
+ photo's whose thumbnail should be included. thumbnail_names is an
+@@ -43,6 +43,8 @@
+ self.thumbnail_names = thumbnail_names
+ self.title = title
+ self.photos_clickable = photos_clickable
++ self.photos_url = photos_url
++ self.use_icons = use_icons
+
+ # Check if the specified track colors and widths are ok
+ self.track_color = self.__testColorFormat__(track_color)
+@@ -117,11 +119,28 @@
+ for photo in self.photo_list:
+ if (photo in self.thumbnail_names): # Only process if there's a thumbnail
+ location = photo.getLocation()
++
++ if (self.use_icons):
++ out_fp.write(' <Style id="photo_%s">\n' % self.thumbnail_names[photo])
++ out_fp.write(' <IconStyle>\n')
++ out_fp.write(' <scale>1.5</scale>\n')
++ out_fp.write(' <Icon>\n')
++ out_fp.write(' <href>icons/%s</href>\n' % self.thumbnail_names[photo])
++ out_fp.write(' </Icon>\n')
++ out_fp.write(' </IconStyle>\n')
++ out_fp.write(' <LabelStyle>\n')
++ out_fp.write(' <scale>0.2</scale>\n')
++ out_fp.write(' </LabelStyle>\n')
++ out_fp.write(' </Style>\n')
++
+ out_fp.write(' <Placemark>\n')
+ out_fp.write(' <name>%s</name>\n' % photo.getName())
+ out_fp.write(' <description><![CDATA[')
+ if (self.photos_clickable):
+- out_fp.write('<a href="%s">' % photo.getURL())
++ if (self.photos_url):
++ out_fp.write('<a href="%s/%s">' % (self.photos_url, photo.getName()))
++ else:
++ out_fp.write('<a href="%s">' % photo.getURL())
+ out_fp.write('<img src="images/%s" />' % self.thumbnail_names[photo])
+ if (self.photos_clickable):
+ out_fp.write("</a>")
+@@ -136,7 +155,11 @@
+ out_fp.write(' <Snippet><![CDATA[%s]]></Snippet>\n' % comment)
+ else:
+ out_fp.write(' <Snippet>%s</Snippet>\n' % photo.getName())
+- out_fp.write(' <styleUrl>#photo_mark</styleUrl>\n')
++
++ if (self.use_icons):
++ out_fp.write(' <styleUrl>#photo_%s</styleUrl>\n' % self.thumbnail_names[photo])
++ else:
++ out_fp.write(' <styleUrl>#photo_mark</styleUrl>\n')
+ out_fp.write(' <Point>\n')
+ if (location[2]):
+ out_fp.write(' <altitudeMode>clampToGround</altitudeMode>\n')
+@@ -275,10 +298,10 @@
+ NUM_THUMBNAILS = 25
+
+ def __init__(self, file_name, logger, gpx_files = None, photo_list = None,
+- sort_order = "D", thumbnail_size = 200, title = "Photo report",
++ sort_order = "D", thumbnail_size = 200, icon_size = 0, title = "Photo report",
+ track_color = "ffffffff", track_width = 1.0,
+ between_tracks_color = None, between_tracks_width = None,
+- photos_clickable = False):
++ photos_clickable = False, photos_url = ""):
+ """ Create a new KMZ file with the disk path file_name. gpx_files is a list
+ of GPXFile objects that need to be showed in the file. photo_list is a
+ PhotoList object of photo's whose thumbnail should be included.
+@@ -286,8 +309,9 @@
+ presented ("D" is date and time, "A" is latitude, "O" is longitude.
+ Lowercase means reverse sort. Multiple tokens may be specified in order
+ of precedence).
+- thumbnail_size is the number of pixels the long size of each thumbnail
+- should have.
++ thumbnail_size is the number of pixels the long size of each thumbnail
++ should have.
++ icon_size is the number of pixels the long size of each icon should have.
+ title is the title given to the report in Google Earth.
+ track_color and between_tracks_color specify the color to give the
+ tracks and the lines in between the tracks, respectively. They are
+@@ -309,12 +333,14 @@
+ self.gpx_files = gpx_files
+ self.photo_list = photo_list
+ self.thumbnail_size = thumbnail_size
++ self.icon_size = icon_size
+ self.title = title
+ self.track_width = track_width
+ self.track_color = track_color
+ self.between_tracks_width = between_tracks_width
+ self.between_tracks_color = between_tracks_color
+ self.photos_clickable = photos_clickable
++ self.photos_url = photos_url
+
+ # Sort the photo's
+ for index in range(len(sort_order)):
+@@ -366,7 +392,9 @@
+ file_names[photo] = "%s.jpg" % fn_base
+
+ # Write the file
+- zip_file.writestr("images/%s.jpg" % fn_base, data)
++ zip_file.writestr("images/%s.jpg" % fn_base, data[0])
++ if (data[1]):
++ zip_file.writestr("icons/%s.jpg" % fn_base, data[1])
+ else:
+ self.logger.error("Couldn't make a thumbnail of image %s." % photo.getName())
+
+@@ -391,7 +419,7 @@
+ # but we put it here in a separate thread here as well because at the same
+ # time we need to start the processing thread.
+ get_thread = threading.Thread(target = self.photo_list.getThumbnailData,
+- args = [self.thumbnail_size, tn_queue])
++ args = [self.thumbnail_size, self.icon_size, tn_queue])
+ file_names = {}
+ process_thread = threading.Thread(target = self.__processThumbnails__,
+ args = [tn_queue, out_file, file_names])
+@@ -410,7 +438,7 @@
+ kml = KML(self.gpx_files, self.photo_list, file_names, self.logger,
+ self.title, self.track_color, self.track_width,
+ self.between_tracks_color, self.between_tracks_width,
+- self.photos_clickable)
++ self.photos_clickable, self.photos_url, bool(self.icon_size))
+ kml_fp = StringIO.StringIO()
+ kml.writeKML(kml_fp, write_photos, write_waypoints, write_track, write_between_tracks)
+
+diff -dPNur happycamel-v1-beta3/HappyCamel/main.py happycamel-v1-beta3-ds/HappyCamel/main.py
+--- happycamel-v1-beta3/HappyCamel/main.py 2008-04-17 21:25:10.000000000 +0200
++++ happycamel-v1-beta3-ds/HappyCamel/main.py 2008-11-19 14:22:55.000000000 +0100
+@@ -254,12 +254,14 @@
+ self.writeKMZFile(self.geo_sources.getAllGPXFiles(), photo_list,
+ kmz_file, self.conf.get("order"),
+ self.conf.get("image_size"),
++ self.conf.get("icon_size"),
+ self.conf.get("title"),
+ self.conf.get("track_color"),
+ self.conf.get("track_width"),
+ self.conf.get("between_color"),
+ self.conf.get("between_width"),
+ self.conf.get("clickable"),
++ self.conf.get("url"),
+ self.conf.get("show_waypoints"),
+ self.conf.get("show_track"),
+ self.conf.get("show_between_tracks"))
+@@ -525,16 +527,16 @@
+ if not (results[photo]):
+ self.logger.message("Couldn't succesfully write metadata to photo %s." % photo.getName())
+
+- def writeKMZFile(self, gpx_files, photo_list, file_path, order, image_size,
++ def writeKMZFile(self, gpx_files, photo_list, file_path, order, image_size, icon_size,
+ title, track_color, track_width, between_color,
+- between_width, clickable, show_waypoints, show_track,
++ between_width, clickable, photos_url, show_waypoints, show_track,
+ show_between_tracks):
+
+ """ Write the KMZ file with the specified options. """
+
+ kmz = kmlhandler.KMZ(file_path, self.logger, gpx_files,
+- photo_list, order, image_size, title, track_color,
+- track_width, between_color, between_width, clickable)
++ photo_list, order, image_size, icon_size, title, track_color,
++ track_width, between_color, between_width, clickable, photos_url)
+
+ kmz.writeFile(write_photos = True,
+ write_waypoints = show_waypoints, write_track = show_track,
+diff -dPNur happycamel-v1-beta3/HappyCamel/photohandler.py happycamel-v1-beta3-ds/HappyCamel/photohandler.py
+--- happycamel-v1-beta3/HappyCamel/photohandler.py 2008-04-17 21:25:10.000000000 +0200
++++ happycamel-v1-beta3-ds/HappyCamel/photohandler.py 2008-11-19 14:22:55.000000000 +0100
+@@ -164,7 +164,7 @@
+ if ((not self.ele) or overwrite):
+ self.ele = ele
+
+- def __scalePhoto__(self, file_obj, max_side):
++ def __scalePhoto__(self, file_obj, max_side, icon_size = 0):
+ """ Scale the photo referred to by the given file_obj so that the longest
+ size is max_side. If the original is smaller than the required format,
+ it isn't scaled. Return a JPEG-encoded string with data. """
+@@ -195,7 +195,24 @@
+ self.logger.debug("Required thumbnail for %s is larger than the original - no scaling." % self.getName())
+
+ # Return a JPEG encoded string
+- return photo_data.tostring("jpeg", "RGB")
++ thumbnail = photo_data.tostring("jpeg", "RGB")
++
++ if (icon_size):
++ if (photo_size[0] > photo_size[1]):
++ fraction = float(icon_size) / photo_size[0]
++ else:
++ fraction = float(icon_size) / photo_size[1]
++
++ if (fraction < 1.0):
++ icon_size = [int(photo_size[0] * fraction), int(photo_size[1] * fraction)]
++ self.logger.debug("Resizing thumnail %s from %dx%d to %dx%d pixels." % (self.getName(), thumbnail_size[0], thumbnail_size[1], icon_size[0], icon_size[1]))
++ photo_data.thumbnail(icon_size, Image.BICUBIC)
++
++ icon = photo_data.tostring("jpeg", "RGB")
++ else:
++ icon = None
++
++ return thumbnail, icon
+
+ return False
+
+@@ -543,7 +560,7 @@
+ results.update(self.__queue2Dict__(flickr_results))
+ return results
+
+- def getThumbnailData(self, max_side, queue):
++ def getThumbnailData(self, max_side, icon_size, queue):
+ """ Load all the thumbnails from the images in the list and put a tuple of
+ (photo object, JPEG-encoded thumbnail data) in the provided Queue.queue
+ instance. This allows for a multithreaded processing of the images.
+@@ -558,9 +575,9 @@
+
+ # Process the pools
+ self.__runThreaded__(self.DISK_THREAD_NUM, "getThumbnailData",
+- pools["disk"], queue, max_side = max_side)
++ pools["disk"], queue, max_side = max_side, icon_size = icon_size)
+ self.__runThreaded__(self.FLICKR_THREAD_NUM, "getThumbnailData",
+- pools["flickr"], queue, max_side = max_side)
++ pools["flickr"], queue, max_side = max_side, icon_size = icon_size)
+
+ def cleanup(self, check_date = False, check_location = False):
+ """ Removes the photos from the list which don't comply to the specified
+@@ -757,7 +774,7 @@
+
+ return "file://%s" % os.path.join(os.getcwd(), self.getPath())
+
+- def getThumbnailData(self, max_side = 200):
++ def getThumbnailData(self, max_side = 200, icon_size = 0):
+ """ Convert the image to a thumbnail and return the data, JPEG-encoded,
+ or False if we cannot convert this image. max_side specifies the number
+ of pixels the long side of the thumbnail needs to have. """
+@@ -767,7 +784,7 @@
+ if (ext in PIL_READ_FORMATS):
+ self.logger.debug("Creating thumbnail for photo %s" % self.getName())
+ photo_data = open(self.getPath())
+- return self.__scalePhoto__(photo_data, max_side)
++ return self.__scalePhoto__(photo_data, max_side, icon_size)
+ else:
+ self.logger.error("Can't create thumbnail for photo %s" % self.getName())
+ return False
+@@ -1270,7 +1287,7 @@
+
+ return True
+
+- def getThumbnailData(self, max_side = 200):
++ def getThumbnailData(self, max_side = 200, icon_size = 0):
+ """ Convert the image to a thumbnail and return the data, JPEG-encoded,
+ or False if we cannot convert this image. max_side specifies the number
+ of pixels the long side of the thumbnail needs to have. """
+@@ -1312,7 +1329,7 @@
+
+ # Download the photo and load it as a PIL image
+ photo_data = StringIO.StringIO(urllib2.urlopen(best_fit["entry"]["source"]).read())
+- return self.__scalePhoto__(photo_data, max_side)
++ return self.__scalePhoto__(photo_data, max_side, icon_size)
+
+ def writeMetadata(self, write_coords = True, write_geo_names = False,
+ correct_time = False):
diff --git a/sci-geosciences/happycamel/happycamel-1_beta3-r1.ebuild b/sci-geosciences/happycamel/happycamel-1_beta3-r1.ebuild
new file mode 100644
index 0000000..34c4b9c
--- /dev/null
+++ b/sci-geosciences/happycamel/happycamel-1_beta3-r1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/gpscorrelate/gpscorrelate-1.5.6.ebuild,v 1.3 2008/08/23 18:13:05 maekke Exp $
+
+inherit eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="Happy Camel is intended to combine your digital camera with your GPS device"
+HOMEPAGE="http://happycamel.sourceforge.net"
+SRC_URI="mirror://sourceforge/${PN}/${PN}-v${MY_PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~hppa x86"
+DEPEND="dev-python/imaging
+ media-libs/exiftool"
+
+
+S=${WORKDIR}/${PN}-v${MY_PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/happycamel-v1-beta3-ds-features.patch || die
+ epatch "${FILESDIR}"/HappyCamel-optional-correlate.diff || die
+ epatch "${FILESDIR}"/happycamel-ds-icons.patch || die
+}
+
+src_install() {
+ ./setup.py install --root="${D}" --no-compile
+}
diff --git a/sci-geosciences/happycamel/happycamel-1_beta3-r2.ebuild b/sci-geosciences/happycamel/happycamel-1_beta3-r2.ebuild
new file mode 100644
index 0000000..019ceaa
--- /dev/null
+++ b/sci-geosciences/happycamel/happycamel-1_beta3-r2.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/gpscorrelate/gpscorrelate-1.5.6.ebuild,v 1.3 2008/08/23 18:13:05 maekke Exp $
+
+inherit eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="Happy Camel is intended to combine your digital camera with your GPS device"
+HOMEPAGE="http://happycamel.sourceforge.net"
+SRC_URI="mirror://sourceforge/${PN}/${PN}-v${MY_PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~hppa x86"
+DEPEND="virtual/python-imaging
+ media-libs/exiftool"
+
+
+S=${WORKDIR}/${PN}-v${MY_PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/happycamel-v1-beta3-ds-features.patch || die
+ epatch "${FILESDIR}"/HappyCamel-optional-correlate.diff || die
+ epatch "${FILESDIR}"/happycamel-ds-icons.patch || die
+}
+
+src_install() {
+ ./setup.py install --root="${D}" --no-compile
+}
diff --git a/sci-geosciences/happycamel/happycamel-1_beta3-r3.ebuild b/sci-geosciences/happycamel/happycamel-1_beta3-r3.ebuild
new file mode 100644
index 0000000..1c6f59c
--- /dev/null
+++ b/sci-geosciences/happycamel/happycamel-1_beta3-r3.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/gpscorrelate/gpscorrelate-1.5.6.ebuild,v 1.3 2008/08/23 18:13:05 maekke Exp $
+
+inherit eutils
+
+MY_PV=${PV/_/-}
+
+DESCRIPTION="Happy Camel is intended to combine your digital camera with your GPS device"
+HOMEPAGE="http://happycamel.sourceforge.net"
+SRC_URI="mirror://sourceforge/${PN}/${PN}-v${MY_PV}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~hppa x86"
+DEPEND="dev-python/pillow
+ media-libs/exiftool"
+
+
+S=${WORKDIR}/${PN}-v${MY_PV}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/happycamel-v1-beta3-ds-features.patch || die
+ epatch "${FILESDIR}"/HappyCamel-optional-correlate.diff || die
+ epatch "${FILESDIR}"/happycamel-ds-icons.patch || die
+}
+
+src_install() {
+ ./setup.py install --root="${D}" --no-compile
+}
diff --git a/sci-geosciences/mkgmap/Manifest b/sci-geosciences/mkgmap/Manifest
new file mode 100644
index 0000000..a4d5b0e
--- /dev/null
+++ b/sci-geosciences/mkgmap/Manifest
@@ -0,0 +1,2 @@
+DIST mkgmap-r3620-src.tar.gz 1685777 SHA256 a3d2b565171fbcc35c45aa09788c4ccf700df6d73162826b7b47070ef9a8a8b1 SHA512 1dfefb323fedb84cb39a316064c7f3d3c6b8c0a1616b7dfbee7cf7e8b6c4046a526f2460262a25d4f89750c6debe29051eaa01ba6ccd6478e61bc735d5890a75 WHIRLPOOL 8fe1d60fe2238c6b6d50c0586887e8a1d419a89ae7ad255b484e8c3be5c0c4e54c29a6c3a1e9bd7550f836464e62cf64f9b1242c0c3b7df661484957a99a0499
+EBUILD mkgmap-3620.ebuild 1164 SHA256 0a3d9ceee9bd88f6309f22b7ea58a6ff36e24735be0bfd74a433d6d5d3fe412e SHA512 89c9c4a3391ba1f53ab52e0adc494e7c090d67c9662ca3249c3352f1ef925431d132c5df705d7db3044609e56c9099368a0c2ebad7d3f4cc52776179c17d9af5 WHIRLPOOL dc0f31077ede9611cc3575cb5553ea48cd602f7fd43c17420f859d240c7723c7346c45ce0283f3bb0891e36d40f723d98b8a8db0afa9ffd18e2cf8c09a3ab686
diff --git a/sci-geosciences/mkgmap/mkgmap-3620.ebuild b/sci-geosciences/mkgmap/mkgmap-3620.ebuild
new file mode 100644
index 0000000..31feb0e
--- /dev/null
+++ b/sci-geosciences/mkgmap/mkgmap-3620.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/mkgmap/mkgmap-1995.ebuild,v 1.1 2011/08/02 16:45:45 scarabeus Exp $
+
+EAPI=4
+
+JAVA_ANT_ENCODING=UTF-8
+inherit java-pkg-2 java-ant-2
+
+DESCRIPTION="Tool to create garmin maps"
+HOMEPAGE="http://www.mkgmap.org.uk"
+SRC_URI="http://www.mkgmap.org.uk/snapshots/${PN}-r${PV}-src.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE=""
+DEPEND=">=virtual/jdk-1.7"
+#DEPEND=">=dev-java/fastutil-6.5.4"
+RDEPEND=">=virtual/jre-1.7"
+
+S="${WORKDIR}/${PN}-r${PV}"
+
+src_compile() {
+ JAVACFLAGS="-source 1.7 -target 1.7" eant dist || die
+ #JAVACFLAGS="-source 1.7 -target 1.7" ant -Dmaven.mode.offline=true -Dbuild.sysclasspath=ignore -Dmaven.test.skip=true dist
+}
+
+src_install() {
+ java-pkg_newjar "dist/${PN}.jar" || die "java-pkg_newjar failed"
+ java-pkg_dolauncher "${PN}" --jar "${PN}.jar" || die "java-pkg_dolauncher failed"
+
+ dodir /usr/share/${PN}/lib/lib/
+ java-pkg_jarinto /usr/share/${PN}/lib/lib/
+ java-pkg_dojar dist/lib/*.jar || die "java-pkg_dojar failed"
+
+ dodoc dist/README
+ doman dist/doc/mkgmap.1
+}
diff --git a/sci-geosciences/osmcut/Manifest b/sci-geosciences/osmcut/Manifest
new file mode 100644
index 0000000..16f5220
--- /dev/null
+++ b/sci-geosciences/osmcut/Manifest
@@ -0,0 +1 @@
+EBUILD osmcut-9999.ebuild 330 RMD160 28ba40d756fadd40f076673fc70963904c942c60 SHA1 275e11275273751c86310887db5d74f7e06ff139 SHA256 655e5a91fcaf2b7ee4582806840316c05fd26bbc24904b95fbaaebc79eba2ba9
diff --git a/sci-geosciences/osmcut/osmcut-9999.ebuild b/sci-geosciences/osmcut/osmcut-9999.ebuild
new file mode 100644
index 0000000..1d6fc90
--- /dev/null
+++ b/sci-geosciences/osmcut/osmcut-9999.ebuild
@@ -0,0 +1,20 @@
+EAPI="1"
+inherit subversion
+
+DESCRIPTION="OSM splitter"
+HOMEPAGE="http://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin"
+SRC_URI=""
+
+LICENSE="LGPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+
+ESVN_REPO_URI="http://svn.openstreetmap.org/applications/utils/osm-extract/osmcut/"
+
+src_compile() {
+ emake
+}
+
+src_install () {
+ dobin osmcut
+}
diff --git a/sci-libs/dcmtk/.svn/all-wcprops b/sci-libs/dcmtk/.svn/all-wcprops
new file mode 100644
index 0000000..21a6a73
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/all-wcprops
@@ -0,0 +1,29 @@
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/gentoo.modulix.net/!svn/ver/35/trunk/overlay/sci-libs/dcmtk
+END
+metadata.xml
+K 25
+svn:wc:ra_dav:version-url
+V 73
+/gentoo.modulix.net/!svn/ver/11/trunk/overlay/sci-libs/dcmtk/metadata.xml
+END
+Manifest
+K 25
+svn:wc:ra_dav:version-url
+V 69
+/gentoo.modulix.net/!svn/ver/35/trunk/overlay/sci-libs/dcmtk/Manifest
+END
+ChangeLog
+K 25
+svn:wc:ra_dav:version-url
+V 70
+/gentoo.modulix.net/!svn/ver/11/trunk/overlay/sci-libs/dcmtk/ChangeLog
+END
+dcmtk-3.5.4-r3.ebuild
+K 25
+svn:wc:ra_dav:version-url
+V 82
+/gentoo.modulix.net/!svn/ver/35/trunk/overlay/sci-libs/dcmtk/dcmtk-3.5.4-r3.ebuild
+END
diff --git a/sci-libs/dcmtk/.svn/entries b/sci-libs/dcmtk/.svn/entries
new file mode 100644
index 0000000..57f7e16
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/entries
@@ -0,0 +1,164 @@
+9
+
+dir
+42
+https://svn.modulix.net/gentoo.modulix.net/trunk/overlay/sci-libs/dcmtk
+https://svn.modulix.net/gentoo.modulix.net
+
+
+
+2009-03-13T23:38:14.829535Z
+35
+ivan@modulix.org
+
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+5d456c98-30fb-47ac-880d-de4362d9a6df
+
+metadata.xml
+file
+
+
+
+
+2009-06-19T22:57:44.000000Z
+2e8c1caec311001e5adc3be4bf0b114f
+2008-04-26T21:22:40.473031Z
+11
+ivan@modulix.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+938
+
+Manifest
+file
+
+
+
+
+2009-06-19T22:57:44.000000Z
+70cb27ef699e536b8f98f5165c08ec8e
+2009-03-13T23:38:14.829535Z
+35
+ivan@modulix.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+971
+
+ChangeLog
+file
+
+
+
+
+2009-06-19T22:57:44.000000Z
+ebb8b3a5aba4ce1e721f2f5783cb1ee1
+2008-04-26T21:22:40.473031Z
+11
+ivan@modulix.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+680
+
+dcmtk-3.5.4-r3.ebuild
+file
+
+
+
+
+2009-06-19T22:57:44.000000Z
+f02f04930e7cea9f3f059ab02cc13e60
+2009-03-13T23:38:14.829535Z
+35
+ivan@modulix.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1617
+
diff --git a/sci-libs/dcmtk/.svn/format b/sci-libs/dcmtk/.svn/format
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/format
@@ -0,0 +1 @@
+9
diff --git a/sci-libs/dcmtk/.svn/text-base/ChangeLog.svn-base b/sci-libs/dcmtk/.svn/text-base/ChangeLog.svn-base
new file mode 100644
index 0000000..2600c57
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/text-base/ChangeLog.svn-base
@@ -0,0 +1,13 @@
+# ChangeLog for sci-libs/dcmtk
+# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
+
+ 26 Apr 2008; Ivan Havlicek <ivan@modulix.org> dcmtk-3.5.4-r3 :
+ Changes in xmedcon-0.10.4.ebuild for conformance with repoman
+
+ 26 Apr 2008; Ivan Havlicek <ivan@modulix.org> ChangeLog :
+ Added initial ChangeLog which should be updated whenever the package is
+ updated in any way. This changelog is targetted to users. This means that the
+ comments should well explained and written in clean English. The details about
+ writing correct changelogs are explained in the skel.ChangeLog file which you
+ can find in the root directory of the portage repository.
diff --git a/sci-libs/dcmtk/.svn/text-base/Manifest.svn-base b/sci-libs/dcmtk/.svn/text-base/Manifest.svn-base
new file mode 100644
index 0000000..f1ce9a0
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/text-base/Manifest.svn-base
@@ -0,0 +1,5 @@
+DIST dcmtk-3.5.4.tar.gz 3756374 RMD160 d1558c9c68e53e0ea3b080fd2fb50b9d8e30eeba SHA1 169056874947083e68eb941fcd53faaebc862ae5 SHA256 7b8575ba609516d76b681c0de8c1328cf23e57deb2c7085a6aa37d4292354d76
+DIST dcmtk_3.5.4-3.diff.gz 140253 RMD160 c06856a46513612c3a585bc3fea429d296ae6bb4 SHA1 75c14b8c6caa88155324b5bb8ed29363776ff7bf SHA256 8dd3ca447de4b0f1d553f672f36d5d88af86763604e2fc830667ce6fdd12677a
+EBUILD dcmtk-3.5.4-r3.ebuild 1617 RMD160 27b26e563dd06ad1dabf74efa204237d362cf589 SHA1 9ce0fca5e4f420676ec4110c6dbfc27520640bab SHA256 f6707f5d86b9d98f73ba8a9a5f567f2b00247464f5ba60b2f55efaf3ee064043
+MISC ChangeLog 680 RMD160 c307eea722234fbfde4f351d75f28549bcc74bac SHA1 59b7c68bfae03a5441d72b876481e12ad06896a4 SHA256 a1de307a00b32dc0a188a8abbb89a1d9dcf285424f843d70759f985df23fd9c7
+MISC metadata.xml 938 RMD160 e6451a136c100b3cafe90e2e1064dffb77aca7d9 SHA1 1a3b698c05897246eb73666f205ec7d873d20270 SHA256 3541a8cb00af24c3b785d021e1d15a94d9c0883d43a60228dd81ab7898534925
diff --git a/sci-libs/dcmtk/.svn/text-base/dcmtk-3.5.4-r3.ebuild.svn-base b/sci-libs/dcmtk/.svn/text-base/dcmtk-3.5.4-r3.ebuild.svn-base
new file mode 100644
index 0000000..496e750
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/text-base/dcmtk-3.5.4-r3.ebuild.svn-base
@@ -0,0 +1,77 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit eutils
+
+DESCRIPTION="Libraries and applications implementing large parts the DICOM standard"
+HOMEPAGE="http://dicom.offis.de/dcmtk.php.en"
+DEB_PV=3 # Debian patch dcmtk_3.5.4-3.diff
+SRC_URI="
+ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/${P}.tar.gz
+mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}-${DEB_PV}.diff.gz
+"
+
+# ftp://dicom.offis.de/pub/dicom/offis/software/dcmtk/dcmtk354/COPYRIGHT
+LICENSE="BSD"
+KEYWORDS="~x86"
+SLOT="0"
+IUSE="png ssl tcpd tiff xml zlib doc"
+
+RDEPEND="
+media-libs/jpeg
+png? ( media-libs/libpng )
+ssl? ( dev-libs/openssl )
+tcpd? ( sys-apps/tcp-wrappers )
+tiff? ( media-libs/tiff )
+xml? ( dev-libs/libxml2 )
+zlib? ( sys-libs/zlib )
+"
+DEPEND="
+doc? ( app-doc/doxygen )
+${RDEPEND}
+"
+
+src_unpack() {
+
+ unpack ${A}
+ epatch "${PN}_3.5.4-3.diff"
+
+}
+
+src_compile() {
+
+ econf \
+ --sysconfdir=/etc/dcmtk \
+ --with-private-tags \
+ $(use_with tiff libtiff) \
+ $(use_with zlib) \
+ $(use_with png libpng) \
+ $(use_with xml libxml) \
+ $(use_with tcpd libwrap) \
+ $(use_with ssl openssl) \
+ || die "econf failed"
+ # Don't know why, but compile only with make not with emake ?!
+ make ARCH="" || die "make failed"
+ if use doc; then
+ emake html
+ fi
+
+}
+
+src_install() {
+
+ emake DESTDIR="${D}" install \
+ install-lib \
+ || die "emake install failed"
+ if use doc; then
+ emake DESTDIR="${D}" install-html \
+ install-doc \
+ || die "emake install doc failed"
+ fi
+ dodoc COPYRIGHT FAQ HISTORY *.txt
+ if use doc; then
+ dohtml "${PN}"/html/*
+ fi
+
+}
diff --git a/sci-libs/dcmtk/.svn/text-base/metadata.xml.svn-base b/sci-libs/dcmtk/.svn/text-base/metadata.xml.svn-base
new file mode 100644
index 0000000..fc6991d
--- /dev/null
+++ b/sci-libs/dcmtk/.svn/text-base/metadata.xml.svn-base
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>sci</herd>
+ <longdescription lang="en">
+ DCMTK is a collection of libraries and applications implementing large
+ parts the DICOM standard. It includes software for examining,
+ constructing and converting DICOM image files, handling offline media,
+ sending and receiving images over a network connection, as well as
+ demonstrative image storage and worklist servers.
+ </longdescription>
+ <longdescription lang="fr">
+ DCMTK est un ensemble de bibliothèques et d'application implémentant
+ une grande partie du standard DICOM. Cela comprend des logiciels de
+ visualisation et de conversion des fichier image, de manipulation de
+ médias locaux, de réception et d'envoi d'images à travers un réseau
+ ainsi qu'un serveur d'images et de worklist de demonstration.
+ </longdescription>
+</pkgmetadata>
diff --git a/sci-libs/dcmtk/Manifest b/sci-libs/dcmtk/Manifest
new file mode 100644
index 0000000..36a5917
--- /dev/null
+++ b/sci-libs/dcmtk/Manifest
@@ -0,0 +1,2 @@
+DIST dcmtk-3.6.1_20140617.tar.gz 4986627 SHA256 c0aab5a3809e20f8b4eae2f181c77a1668d0665e86a590821a59808f45656cdc SHA512 8505c7173e66e48a43b6106c5f85f59f2884017f058e8ea586ebc3e41406e7dc072ec4141342c75d92acf14b06b77b455da835244822f6a3311179507eb029b8 WHIRLPOOL b9ac8dcf5d08a6b5c2a073c10e14c4b1919926746fb1ab717397165a7ddbbfcd43baf2dce2ce9d9ab09d4da9a50622f9bb864c229ab14f5108a78de39762ecd1
+EBUILD dcmtk-3.6.1_pre20140617.ebuild 1864 SHA256 90780b4f4682f16765bc1268f3c4ba3c0c80e89d0a94e83e47bb425784e19ccf SHA512 a6221ca552a9c2fab92bd7e5d5422b83f0c1f846d81554c7c608f1924a5fd2abde1fb8705161798d4d4eb3dc7b2a2a27699bf4d5a96d5a00eabbf42226c923af WHIRLPOOL a3b687560b30df97b2d89b935a6a68ba6fb70e9ceb46868eb26e031193db6e22c18a28df1c765ed3551a6d27c540748941841e9a0c039708b82a22cb6e01ab5d
diff --git a/sci-libs/dcmtk/dcmtk-3.6.1_pre20140617.ebuild b/sci-libs/dcmtk/dcmtk-3.6.1_pre20140617.ebuild
new file mode 100644
index 0000000..ca2b85c
--- /dev/null
+++ b/sci-libs/dcmtk/dcmtk-3.6.1_pre20140617.ebuild
@@ -0,0 +1,79 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+# This ebuild come from bugs.gentoo.org
+
+EAPI="3"
+
+inherit cmake-utils eutils
+
+MY_P=${P/pre/}
+
+DESCRIPTION="The DICOM Toolkit"
+HOMEPAGE="http://dicom.offis.de/dcmtk.php.en"
+SRC_URI="http://dicom.offis.de/download/${PN}/snapshot/${MY_P}.tar.gz"
+LICENSE="BSD"
+
+KEYWORDS="~amd64 ~x86"
+SLOT="0"
+IUSE="doc png ssl tcpd tiff +threads xml zlib"
+
+RDEPEND="
+ virtual/jpeg
+ png? ( media-libs/libpng )
+ ssl? ( dev-libs/openssl )
+ tcpd? ( sys-apps/tcp-wrappers )
+ tiff? ( media-libs/tiff )
+ xml? ( dev-libs/libxml2:2 )
+ zlib? ( sys-libs/zlib )"
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen )"
+
+S=${WORKDIR}/${MY_P}
+
+src_prepare() {
+ sed -e "s:share/doc/dcmtk:&-${PV}:" \
+ -e "s:DIR \"/:DIR \"/usr/:" \
+ -e "s:usr/etc:etc:" \
+ -e "s:/lib\":/$(get_libdir)\":" \
+ -e "s:COPYRIGHT::" \
+ -i CMakeLists.txt || die
+ sed -e 's:${CMAKE_INSTALL_PREFIX}/::' \
+ -i dcmwlm/data/CMakeLists.txt doxygen/CMakeLists.txt || die
+ # Temporary workaround: docs are not build with CMake
+ sed -i -e '/include/d' doxygen/Makefile.in || die
+}
+
+src_configure() {
+ mycmakeargs="${mycmakeargs}
+ -DBUILD_SHARED_LIBS=ON
+ -DCMAKE_INSTALL_PREFIX=/
+ $(cmake-utils_use tiff DCMTK_WITH_TIFF)
+ $(cmake-utils_use png DCMTK_WITH_PNG)
+ $(cmake-utils_use xml DCMTK_WITH_XML)
+ $(cmake-utils_use zlib DCMTK_WITH_ZLIB)
+ $(cmake-utils_use ssl DCMTK_WITH_OPENSSL)
+ $(cmake-utils_use doc DCMTK_WITH_DOXYGEN)
+ $(cmake-utils_use threads DCMTK_WITH_THREADS)"
+ cmake-utils_src_configure
+ if use doc; then
+ cd "${S}"/doxygen
+ econf
+ fi
+}
+
+src_compile() {
+ cmake-utils_src_compile
+ if use doc; then
+ emake -C "${S}"/doxygen || die
+ fi
+}
+
+src_install() {
+ cmake-utils_src_install
+ if use doc; then
+ cd "${S}"
+ doman doxygen/manpages/man1/* || die
+ dohtml -r doxygen/htmldocs/* || die
+ fi
+}
diff --git a/sys-apps/darklin/Manifest b/sys-apps/darklin/Manifest
new file mode 100644
index 0000000..c19cb33
--- /dev/null
+++ b/sys-apps/darklin/Manifest
@@ -0,0 +1,6 @@
+AUX bashrc 195 SHA256 df9c61bc0b9b29d109b0f7ceca08450d6c03a3d6c69844c9b291032e359c0046 SHA512 27702e71b289e32e1ed6ef611e3dc03438fefcb55c08b7816355a75ba230694c7e0e7519898ad19f6299305fa5afb7de4836e088dc76178b216b9d6f685f1dc5 WHIRLPOOL 35fafa30148dad1e02d6894c10092f0561695bb72e17ebb3ec451681f8640dfdad2cedb7aef161ef8e99f32cc14118e12fa54f090b8f807f234395c8600d5481
+AUX issue 1276 SHA256 4bdc593a14ab7f00b1a6a8db08ac081bc545d9d9450af00a3bb43c977982ebd3 SHA512 10092d6915e573996c21898d6ac18a290ac7f4948f5e2d54c8f15f133c78907b44f146cf040160028621c51276f1f0a662c0958c699b1b84a8f041f878afbd77 WHIRLPOOL ce8a9671925620483672a03c1898cd8b3b995339362f8305a661c19d49717d7fe51a93d55e5cd05bc4a6ded802c21469a96eae334ace1cccfecc1d621810eb4e
+AUX profile 125 SHA256 08ba0093adc60ae283680371944212a6d20ad94283b42be3c23ecc2ff352602d SHA512 97d80c7f5562aebac4f528b9f6aea67c9fea280d34f50e2a2c05c787b0af48c5e94bb75bd06b9274bd5383b25ae84f0e000e2135beb95c72ae068566fc40c7d1 WHIRLPOOL 1f11ed6d81ac9c235b7ad35999606899fa14bfa1114f2c1d2e2229d5d7a0b8dbd30c6888c824df9cf3a556ffa3e35cacb936a9ccb21b302dc4077c69c4ed9812
+AUX skel.tar.bz2 12366 SHA256 fde070a47fe35ffdd3edc69fd81220bfdd4bba3f2ad4831563406b0f54cefd00 SHA512 f9f63af462e52035851e934c6afa354825e01a3f694aa029ac8a3eda3f5202e816e33fb5732f6e76ab6049ffc5f20c4679fefb222e32758a2a3c414b42ec6a37 WHIRLPOOL 5d97ffb66ba68ff5caa74d36be781c72c91ee2f6b5f9876be00368c896bd2ec5ab0f1d8af8975ae23481e338cf70174ad759ea2c6e11de98ec2d3fd307590a13
+EBUILD darklin-4.0.1.ebuild 1756 SHA256 59413dbe9d9e630e08be56dcfdc1750f2d501704ee2ec18a86b5394c608d0ed6 SHA512 2be359163fa15215f5118d8bdfbbfe994109d0ad7b08bf8391cf4a958becf79b99d74271520798609dd95d81a251cd9f0434977bb9fe462b21b8be9c3cfa7a3e WHIRLPOOL cc57be060f700f622be0ae8955a2bb7c7d447a5dc5bc00a6863ef6937d4b4ed5970910aede437dad1611f0f9bfeee784c0d9553e655096a31b56439c3f7e95ae
+EBUILD darklin-4.0.2.ebuild 1756 SHA256 59413dbe9d9e630e08be56dcfdc1750f2d501704ee2ec18a86b5394c608d0ed6 SHA512 2be359163fa15215f5118d8bdfbbfe994109d0ad7b08bf8391cf4a958becf79b99d74271520798609dd95d81a251cd9f0434977bb9fe462b21b8be9c3cfa7a3e WHIRLPOOL cc57be060f700f622be0ae8955a2bb7c7d447a5dc5bc00a6863ef6937d4b4ed5970910aede437dad1611f0f9bfeee784c0d9553e655096a31b56439c3f7e95ae
diff --git a/sys-apps/darklin/darklin-4.0.1.ebuild b/sys-apps/darklin/darklin-4.0.1.ebuild
new file mode 100644
index 0000000..cf55522
--- /dev/null
+++ b/sys-apps/darklin/darklin-4.0.1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="DarkLin Release"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+DARKLIN_DISTRIB="Charon"
+DEPEND="dev-lang/perl"
+
+src_install() {
+ dodir /etc/
+
+ echo ${PV} > ${D}/etc/darklin-version
+ echo "DarkLin IV ($DARKLIN_DISTRIB)" > ${D}/etc/darklin-release
+
+ cat "${FILESDIR}"/issue | sed -e "s/@name@/$DARKLIN_DISTRIB/g" -e "s/@version@/$PV/g" > ${D}/etc/issue
+}
+
+pkg_postinst() {
+perl -s -e '$^I="";
+if (@argv == 2) { $PN=pop(@argv); }
+$NOT_STARTED=1;$COMMENTS=1;$BL="";
+while (<>)
+{
+ $value=$_;
+
+ if ($value=~m/^\s*loginsh=/) {
+ next;
+ }
+
+ if (($COMMENTS)&&($value!~m/^\s*#/)) {
+ print "loginsh=1\n";
+ $COMMENTS=0;
+ }
+
+ if ((defined $PN)&&($value=~m/CfgStart\s*$PN/)) {
+ $NOT_STARTED=0;
+ } elsif ((defined $PN)&&($value=~m/CfgEnd\s*$PN/)) {
+ $NOT_STARTED=1;
+ } elsif ($NOT_STARTED) {
+ if ($value =~ m/^\s*$/) {
+ $BLS.=$value;
+ } else {
+ print $BLS;
+ print $value;
+ $BLS=""
+ }
+ }
+}
+if ($value !~ m/$\s*^/) {
+ print "\n";
+}' -- -PN=darklin /etc/profile
+
+perl -s -e '$^I="";
+if (@argv == 2) { $PN=pop(@argv); }
+$NOT_STARTED=1;$COMMENTS=1;$BL="";
+while (<>)
+{
+ $value=$_;
+
+ if ((defined $PN)&&($value=~m/CfgStart\s*$PN/)) {
+ $NOT_STARTED=0;
+ } elsif ((defined $PN)&&($value=~m/CfgEnd\s*$PN/)) {
+ $NOT_STARTED=1;
+ } elsif ($NOT_STARTED) {
+ if ($value =~ m/^\s*$/) {
+ $BLS.=$value;
+ } else {
+ print $BLS;
+ print $value;
+ $BLS=""
+ }
+ }
+}
+if ($value !~ m/$\s*^/) {
+ print "\n";
+}' -- -PN=darklin /etc/bash/bashrc
+
+ cat "${FILESDIR}"/bashrc >> /etc/bash/bashrc
+ cat "${FILESDIR}"/profile >> /etc/profile
+}
diff --git a/sys-apps/darklin/darklin-4.0.2.ebuild b/sys-apps/darklin/darklin-4.0.2.ebuild
new file mode 100644
index 0000000..cf55522
--- /dev/null
+++ b/sys-apps/darklin/darklin-4.0.2.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="DarkLin Release"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+DARKLIN_DISTRIB="Charon"
+DEPEND="dev-lang/perl"
+
+src_install() {
+ dodir /etc/
+
+ echo ${PV} > ${D}/etc/darklin-version
+ echo "DarkLin IV ($DARKLIN_DISTRIB)" > ${D}/etc/darklin-release
+
+ cat "${FILESDIR}"/issue | sed -e "s/@name@/$DARKLIN_DISTRIB/g" -e "s/@version@/$PV/g" > ${D}/etc/issue
+}
+
+pkg_postinst() {
+perl -s -e '$^I="";
+if (@argv == 2) { $PN=pop(@argv); }
+$NOT_STARTED=1;$COMMENTS=1;$BL="";
+while (<>)
+{
+ $value=$_;
+
+ if ($value=~m/^\s*loginsh=/) {
+ next;
+ }
+
+ if (($COMMENTS)&&($value!~m/^\s*#/)) {
+ print "loginsh=1\n";
+ $COMMENTS=0;
+ }
+
+ if ((defined $PN)&&($value=~m/CfgStart\s*$PN/)) {
+ $NOT_STARTED=0;
+ } elsif ((defined $PN)&&($value=~m/CfgEnd\s*$PN/)) {
+ $NOT_STARTED=1;
+ } elsif ($NOT_STARTED) {
+ if ($value =~ m/^\s*$/) {
+ $BLS.=$value;
+ } else {
+ print $BLS;
+ print $value;
+ $BLS=""
+ }
+ }
+}
+if ($value !~ m/$\s*^/) {
+ print "\n";
+}' -- -PN=darklin /etc/profile
+
+perl -s -e '$^I="";
+if (@argv == 2) { $PN=pop(@argv); }
+$NOT_STARTED=1;$COMMENTS=1;$BL="";
+while (<>)
+{
+ $value=$_;
+
+ if ((defined $PN)&&($value=~m/CfgStart\s*$PN/)) {
+ $NOT_STARTED=0;
+ } elsif ((defined $PN)&&($value=~m/CfgEnd\s*$PN/)) {
+ $NOT_STARTED=1;
+ } elsif ($NOT_STARTED) {
+ if ($value =~ m/^\s*$/) {
+ $BLS.=$value;
+ } else {
+ print $BLS;
+ print $value;
+ $BLS=""
+ }
+ }
+}
+if ($value !~ m/$\s*^/) {
+ print "\n";
+}' -- -PN=darklin /etc/bash/bashrc
+
+ cat "${FILESDIR}"/bashrc >> /etc/bash/bashrc
+ cat "${FILESDIR}"/profile >> /etc/profile
+}
diff --git a/sys-apps/darklin/files/bashrc b/sys-apps/darklin/files/bashrc
new file mode 100644
index 0000000..82dcbad
--- /dev/null
+++ b/sys-apps/darklin/files/bashrc
@@ -0,0 +1,11 @@
+
+
+# CfgStart darklin
+ if [ -z "$loginsh" ]; then # We're not a login shell
+ for i in /etc/profile.d/*.sh; do
+ if [ -x $i ]; then
+ . $i
+ fi
+ done
+ fi
+# CfgEnd darklin
diff --git a/sys-apps/darklin/files/issue b/sys-apps/darklin/files/issue
new file mode 100644
index 0000000..48a64a1
--- /dev/null
+++ b/sys-apps/darklin/files/issue
@@ -0,0 +1,17 @@
+DDDDDDDDDD _
+D:::::::::DDD ( ) DarkLin IV @name@
+D::::::::::::DD _ _ _ __ | |/') Version: @version@
+DDD::::DDDD::::D /'_` ) ( '__) | , < System: \s
+ D::::D D::::D ( (_| | | | | |\\`\\ Architecture: \m
+ D::::D D::::D `\\__,_) (_) (_) (_) Kernel: \r
+ D::::D D::::D ____
+ D::::D D::::D |####| _ \n.\O
+ D::::D D::::D T##T (_)  Time: \t
+ D::::D D::::D  |##| _ ___ _ _
+DDD::::DDDD::::D  |##| | | /' _ `\\ ( ) ( ) (`\\/')
+D::::::::::::DD  |##| | | | ( ) | | (_) | > <
+D:::::::::DDD  |##| (_) (_) (_) `\\___/' (_/\\_)
+DDDDDDDDDD  |##|______,--,
+  [############]
+
+
diff --git a/sys-apps/darklin/files/profile b/sys-apps/darklin/files/profile
new file mode 100644
index 0000000..0b1851a
--- /dev/null
+++ b/sys-apps/darklin/files/profile
@@ -0,0 +1,10 @@
+
+
+# CfgStart darklin
+for sh in /etc/profile.d/*.sh ; do
+ if [ -r "$sh" ] ; then
+ . "$sh"
+ fi
+done
+unset sh
+# CfgEnd darklin
diff --git a/sys-apps/darklin/files/skel.tar.bz2 b/sys-apps/darklin/files/skel.tar.bz2
new file mode 100644
index 0000000..45065d7
--- /dev/null
+++ b/sys-apps/darklin/files/skel.tar.bz2
Binary files differ
diff --git a/sys-apps/fbres/Manifest b/sys-apps/fbres/Manifest
new file mode 100644
index 0000000..67df697
--- /dev/null
+++ b/sys-apps/fbres/Manifest
@@ -0,0 +1,3 @@
+AUX fbres.sysconfig 33 RMD160 5e58208462621ce4476fd8697ba1c4a62be363f8 SHA1 556334c6c18d5cbf96d3fe3b9159c8b26e1a2770 SHA256 0911b9b916a7b6bb3cfbdf0413ef1df6d7a00b63f78674626005611d4ff40e62
+AUX fbres.sysinit 348 RMD160 304f8815aeea2f21e637c4208b523de8c9f53bfe SHA1 725cb6621bec041365beb859c1b7192bafd42290 SHA256 66de1f43e85a5d0b69a00b2d0abe645a29e045759875bd69ec288c76f5933491
+EBUILD fbres-1.0.ebuild 471 RMD160 d8601d0c8de4a9611226c86cca1dd7f830d44b2e SHA1 fe3211778d8a305e41fd52d16be9b5d9efcc545d SHA256 f7855d3547bbaa146f35d4429f5ad70c817bcc6609d88b5a449c739c77ab3751
diff --git a/sys-apps/fbres/fbres-1.0.ebuild b/sys-apps/fbres/fbres-1.0.ebuild
new file mode 100644
index 0000000..170fd1c
--- /dev/null
+++ b/sys-apps/fbres/fbres-1.0.ebuild
@@ -0,0 +1,19 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="Init script to set framebuffer resolution"
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="amd64 x86"
+RDEPEND="sys-libs/ncurses"
+
+src_install() {
+ dodir /etc/conf.d
+ dodir /etc/init.d
+
+ install -m 0755 ${FILESDIR}/fbres.sysinit ${D}/etc/init.d/fbres
+ install -m 0644 ${FILESDIR}/fbres.sysconfig ${D}/etc/conf.d/fbres
+}
diff --git a/sys-apps/fbres/files/fbres.sysconfig b/sys-apps/fbres/files/fbres.sysconfig
new file mode 100644
index 0000000..30aa226
--- /dev/null
+++ b/sys-apps/fbres/files/fbres.sysconfig
@@ -0,0 +1 @@
+FRAMEBUFFER_RESOLUTION=800x600-75 \ No newline at end of file
diff --git a/sys-apps/fbres/files/fbres.sysinit b/sys-apps/fbres/files/fbres.sysinit
new file mode 100644
index 0000000..6bd187b
--- /dev/null
+++ b/sys-apps/fbres/files/fbres.sysinit
@@ -0,0 +1,14 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+start() {
+ ebegin "Setting frambe buffer resolution"
+ modprobe fbdev
+ if [ -n "$FRAMEBUFFER_RESOLUTION" ]; then
+ fbset -a $FRAMEBUFFER_RESOLUTION
+ fi
+ eend 0
+ /etc/init.d/consolefont restart
+}
diff --git a/sys-apps/kbd/Manifest b/sys-apps/kbd/Manifest
new file mode 100644
index 0000000..f940a59
--- /dev/null
+++ b/sys-apps/kbd/Manifest
@@ -0,0 +1,36 @@
+AUX alias-console-tools.sh 1229 RMD160 3d909523c5c94a0c689909c0580361b331d43612 SHA1 766c4c8a87ef774a7e776e55f1a0076e32db539d SHA256 0a4a8511cdc43e7cf141e740c8761645881745300faf39d68f18549baa5b95cf
+AUX alias-console-tools2.sh 1189 RMD160 4ee81489986e5fb8fd7c60b3a86af7410d6f8a72 SHA1 7418cf0644bafbc50a4792959588ad972287e5d7 SHA256 56d40ab6fe13bb2b26a2b31767ae20a205332a7ec26f39b0825a1e24b74a6885
+AUX console-tools-ds-bin.tar.bz2 748 RMD160 74fd500ebdf265cf7501386d4b4619e0b9940d71 SHA1 f187922fb87ec93caade069b510c6209bfdc0396 SHA256 6f7e70dce9b4e2f70d8b314337088d263fc42ad19a05abc65ff9c3256ce2b5d4
+AUX consolechars 278 RMD160 eb48ae272cc79b8d502a1b15852f7d3c19b8b52c SHA1 eba6100b488fdbcf81af75af177484ed03ae363b SHA256 670ae7db76d68efd01756ed0a5e08902cdbe22210a02f56d1e5d3faa4075dac5
+AUX controlkeys 905 RMD160 89c4f832aba5e7cf9a259a1df6f06a9e0ad33bfd SHA1 b56a670e4860ccd527b3c73586d548d8e41a3a41 SHA256 f700784a4facd8491b203c1bd8ac881c72a58d095292b207e7fbcd4fa92a9bae
+AUX dynamicvc 445 RMD160 18404ac90f44d8d4108c37415fc1985f46ab54ec SHA1 945b126a61bf8230ebf772cbaf8337ae28c21e51 SHA256 16bfab68a32bf7f3e4f593c8b9623ebc5b6ab95f85d609237125d7bd72e15a1f
+AUX kbd-1.08-terminal.patch 925 RMD160 0f622bcf874c01ee6533cfbdc6137e4f8949299b SHA1 e4a473ce98292a77403a9d79b8cdc083542113ec SHA256 466ac92951695017498c640547af9aeb6351b2da75b6b787c7d0f17f409e9134
+AUX kbd-1.12-Meta_utf8.patch 344 RMD160 a1a1326716716305767f297817519d1cd6f5670d SHA1 a3de75ef80288597d2a134dcc6f7a8b7ce81ca7e SHA256 9cb114acb7704fe14ae99d77ffc1f6fc586101fc541eadce5efbfd36f9d8b8c0
+AUX kbd-1.12-alias.patch 1129 RMD160 2dbff90ee13a3f7e738faed94301388ea8c4ce83 SHA1 2a266a3fc520371bba9050ea8fa13f4592892e83 SHA256 354779bdc2a3a69485877089d6eac95939fc48acea8d7a7e6efd2cac42de951a
+AUX kbd-1.12-configure-LANG.patch 609 RMD160 1ed668e620d438da9bc42542908232f72a138f5e SHA1 908c8f635af838f2de0febf0584ecee5609218f9 SHA256 2162d613d68391fd81b172d57c261569a6f342c87e4bb540e926184a3c00d331
+AUX kbd-1.12-cz-qwerty-map.patch 5821 RMD160 aa7d3448f3bfc053ef27b1a65d9da73664b5b5c5 SHA1 6a32a00be729d6804ec2551752c5ab24fcacf946 SHA256 5218c2119d50be11e36b7cec7985b69b43336bf8d51d869b3c367762d8bb9064
+AUX kbd-1.12-debian.patch 2628 RMD160 8ef9803e8472a74c6e501cb3dde38a87ab13937b SHA1 1936974779acbb3cec572acd4f515713e6fced33 SHA256 54663b3dde3337cd21e64d96f1ffa5e88143b3a4a1dce93311cd8cf432200f57
+AUX kbd-1.12-find-map-fix.patch 957 RMD160 4e3a6fd81f533d08c19d6f443ad447c1d0617924 SHA1 420fd29fc06e3518dac3fac8003c8ac71ae3b28e SHA256 76bed8974c260fff1a44bcc3844471c6dd24d04d473f052de6199eb39a38a456
+AUX kbd-1.12-it-euro-map.patch 501 RMD160 c1e7d02e0254f7800fbc432c8a4de9ea1f8aa1a5 SHA1 97bd7c4afc31862893256ce0adc337bcd9940cb5 SHA256 9114756bb0a07262790947303b941da0d873a35edcc8cd23f6dc4e29b5a84e6e
+AUX kbd-1.12-jp-escape.patch 404 RMD160 58773e9196a62ea46983d02c12f04de92ef31d1b SHA1 3b3b5b48b5d92493a504ba77d92a2143fb4a0cf5 SHA256 61f75f672a69018f25acd3a51de49ef971cac8eaa1e3c097e0b49dff470113ab
+AUX kbd-1.12-kbd_repeat-v2.patch 809 RMD160 48d058cd7cfcff6df450e21138f28ed8ead1cdca SHA1 f5e787fca0342976dc04ab1c00bb1a85ea8b412b SHA256 7b64a4d2a59f28e4f19405bbc81bedd7774f812f1831cb2c0afe217799d7c165
+AUX kbd-1.12-kbio.patch 648 RMD160 a1351e1d3691bc86cd8f5ad74c0b0a2d2e5da5d8 SHA1 64f1bcabd93d34dfaedc5b0f566f8cfd0decaf11 SHA256 822d7fb35a7d2f730e4272284368a44a055f850bf98005bf5d69e5e116bb417f
+AUX kbd-1.12-setfont-man.patch 629 RMD160 dba23dfb4a9d263da6bc094a56366371bfc1b9d2 SHA1 61f3e19290ec3d85838158b2efbbf60be21e88af SHA256 f81c6f07bddefe8bf1f8e1102f8a8c72e96f632aefa248e71a594ad19d767770
+AUX kbd-1.12-unimap.patch 642 RMD160 a8ae481be1e2ca64a2ddc73f03fda644436f76a2 SHA1 9cf44c9ed07da02f5ba9a0dce9df4278e8a4beaa SHA256 f1364a306636661ebcca73d91ca179be811b6b4ccd08b1b761a0847f579623a0
+AUX kbd-1.12-xcompile.patch 680 RMD160 a2db9ef656d9a09aec4ebd5d02726efa7e3d4818 SHA1 7c4c6b08f0f0c443a309a86055b01c11d8e80c21 SHA256 78d29c76075cf5ee347461e28ae0ac25a06ce446151d91ec661c3a2d33da4191
+AUX kbd-1.13-dont-use-error.patch 414 RMD160 76e822064fedc9f5b36daf10c06c83f13afc1f13 SHA1 543874d0f36ace327af79815004b1cd017ce9357 SHA256 9f9e7e860362b7e5402c1c0af55ff301e0542e34aacc71167f9252f50a4f74ca
+AUX kbd-1.14-ds-nohost.patch 413 RMD160 bc08f05b4b2b38e7b83bc74b12b047ac223de73b SHA1 506fd9515c967ab853c2a447e967abaa7c0cd1f6 SHA256 a12c39f52b96a4093c14fc6432a53dac882251c0e3796087c49485212645eb67
+AUX kbd-1.14-ds-unicode.patch 1443 RMD160 2bc0267b3f2cfa99003209bfe801cb0592178837 SHA1 4a67e14aeedf08fe73f4e5dde1ff3ffecdbad283 SHA256 c52ce04fecb9e2346b8450b617a2a80a4bc8f23ad4cc55a6fa2d767a5573ba3b
+AUX kbd-1.14.1-missing-configure.patch 444 RMD160 d1d4f185e8d761d865a3f64fb717446505e08c30 SHA1 ea03ca92b21c0d5a87db2e31f1fd27c1c2e4394b SHA256 0a2a530ac1d2baa03c7cc12e10a242bbc9d128304136f5dba4909d3df2b16eb1
+AUX kbd-1.15.1-ds-nohost.patch 423 RMD160 64181840f9e7a324b13adefbd3cf7b35a61824f3 SHA1 1686b2d61c1325caf6bd04698c25a7d008bc07ca SHA256 62e44bd7d1f19939e3281f190f7a09580cbabcadd556f6e56013cf1f6bc783fb
+AUX kbd-ds-nohost.patch 364 RMD160 ec84228fb79257d5578b6ac3793c0529c3ae5e55 SHA1 55cd0febb5447fee5d3b0abab33f569a35a414e2 SHA256 5d619184021001f77c5dd090dd8b83199f9eb42783ddcde3442787f9d6ef9ef7
+AUX keymaps.tar.bz2 15065 RMD160 a84e770fb28994fb3ab6b554a4467ee0c2092fab SHA1 709d182ff03d87b874412d1c649634d9f993f6d8 SHA256 7142ce3c1c9bfbae745a25d7046ace9e40371820fb2b461c0f1c874a2ec067f6
+DIST kbd-1.12.tar.gz 884827 RMD160 260ed9b79b5a679730fc16f1d3ce9360f4ad63fd SHA1 d4917da308e01e74d67d7b814bf527063b3919fc SHA256 f3bc6747dba7d1a35cd125ca0bd4649f88704be211cf7e47d36b43c7f44ce803
+DIST kbd-1.14.1.tar.gz 1010836 RMD160 5206423c9950c8beb2467e7b761d2a0f827ebbe2 SHA1 12d91613096d1a724fc780e2d7974a0a1b308dce SHA256 e97ed7ec4ec937a27ac2e72789e76db4b661f7ce2c2b7b68524f55ee69dce491
+DIST kbd-1.15.1.tar.gz 1107059 RMD160 4035b91529c1e47bcc5e0054d753569917111fd0 SHA1 a5750125be4ddff84cdcf37f5d5e320a7f3c4c35 SHA256 91b88c83a32eb584797b1cf271cdea902264eb65545453a5e933ca8db4ea99ce
+DIST svorakln.tar.gz 3030 RMD160 4ee5d1bdab312eb33cbde9195e6d4cdf28eb9a6e SHA1 a529a5fa4968b135996aefc7c2e4f38e8dc7d827 SHA256 7c4015dcd1f4310ba1b872c9a9e57c43d45da822330853ae465e628d3bca8ee3
+EBUILD kbd-1.12-r10.ebuild 3857 RMD160 2899489a3e33359d9654330d186908a9ccf158bd SHA1 08b0069d7bae910e9b269d0731d43f94ac8335c2 SHA256 a4e27414d0491ce806d26d1716b569ae571e4a3a89a687cc57305654b3ffdaf0
+EBUILD kbd-1.12-r11.ebuild 3919 RMD160 576824d6dc6e5324f7c7efb38d368138977458f2 SHA1 3d8b2f1363f654b58512a3fdcd31b1697ce52524 SHA256 4d0485f10266cdc819b05f32c96fdd328e99ae3395b0f65becbe8cc56a1e4cd9
+EBUILD kbd-1.12-r9.ebuild 3855 RMD160 42ba891e5b8ad22497df4b26f00de3461428baac SHA1 19fb98963d5efef346099e7fd929d56999510e72 SHA256 4acf9b995aef0ffdb59e94242b128b8702f1d4798d684fa31752680950f7ea5a
+EBUILD kbd-1.14.1-r2.ebuild 2183 RMD160 eff22464c81419635d6c7bde16610ed92d1844f2 SHA1 1f5964f6a55898c3a710c8b1fe08b2f22a4e6b2e SHA256 36ad231dfcf61e9812cb9fdc284bc0090d1ae772ca624d92876e2dbd464937c7
+EBUILD kbd-1.15.1-r1.ebuild 1819 RMD160 04f7e1ef454749e8acc87033f773a747042deb3d SHA1 154bbf17ab901e5d17ea408d64957a30e1a6422c SHA256 6060374618586c6a2d7ee9db110ea91d96400d8c59b47148b68d7bb885384bea
diff --git a/sys-apps/kbd/files/alias-console-tools.sh b/sys-apps/kbd/files/alias-console-tools.sh
new file mode 100644
index 0000000..b9ecfa2
--- /dev/null
+++ b/sys-apps/kbd/files/alias-console-tools.sh
@@ -0,0 +1,23 @@
+alias koif="consolechars -f Cyr_a8x16 -m koi8-r &>/dev/null"
+alias altf="consolechars -f Cyr_a8x16 -m cp866 &>/dev/null"
+alias winf="consolechars -f Cyr_a8x16 -m cp1251 &>/dev/null"
+alias isof="consolechars -f Cyr_a8x16 -m iso8859-5 &>/setdev/null"
+alias macf="consolechars -f Cyr_a8x16 -m MacCyrillic &>/dev/null"
+#unicode_start & unicode_stop for unicode
+
+alias seteng="loadkeys us.map &>/dev/null"
+alias setalt="loadkeys alt.map &>/dev/null"
+alias setkoi="loadkeys koi8.map &>/dev/null"
+alias setiso="loadkeys iso.map &>/dev/null"
+alias setwin="loadkeys win.map &>/dev/null"
+alias setuni="loadkeys ru4.uni.kmap &>/dev/null"
+
+alias locale-koi="export LC_CTYPE=ru_RU.KOI8-R; export LC_COLLATE=ru_RU.KOI8-R";
+alias locale-win="export LC_CTYPE=ru_RU.CP1251; export LC_COLLATE=ru_RU.CP1251";
+alias locale-alt="export LC_CTYPE=ru_RU.CP866; export LC_COLLATE=ru_RU.CP866";
+alias locale-utf="export LC_CTYPE=ru_RU.UTF-8; export LC_COLLATE=ru_RU.UTF-8";
+
+alias xterm-koi="LC_CTYPE=ru_RU.KOI8-R LC_COLLATE=ru_RU.KOI8-R xterm";
+alias xterm-win="LC_CTYPE=ru_RU.CP1251 LC_COLLATE=ru_RU.CP1251 xterm";
+alias xterm-alt="LC_CTYPE=ru_RU.CP866 LC_COLLATE=ru_RU.CP866 xterm";
+alias xterm-utf="LC_CTYPE=ru_RU.UTF-8 LC_COLLATE=ru_RU.UTF-8 xterm";
diff --git a/sys-apps/kbd/files/alias-console-tools2.sh b/sys-apps/kbd/files/alias-console-tools2.sh
new file mode 100644
index 0000000..e015595
--- /dev/null
+++ b/sys-apps/kbd/files/alias-console-tools2.sh
@@ -0,0 +1,23 @@
+alias koif="setfont -m koi8-r Cyr_a8x16 &>/dev/null"
+alias altf="setfont -m cp866 Cyr_a8x16 &>/dev/null"
+alias winf="setfont -m cp1251 Cyr_a8x16 &>/dev/null"
+alias isof="setfont -m iso8859-5 Cyr_a8x16 &>/setdev/null"
+alias macf="setfont -m MacCyrillic Cyr_a8x16 &>/dev/null"
+#unicode_start & unicode_stop for unicode
+
+alias seteng="loadkeys us.map &>/dev/null"
+alias setalt="loadkeys alt.map &>/dev/null"
+alias setkoi="loadkeys koi8.map &>/dev/null"
+alias setiso="loadkeys iso.map &>/dev/null"
+alias setwin="loadkeys win.map &>/dev/null"
+alias setuni="loadkeys ru4.uni.kmap &>/dev/null"
+
+alias locale-koi="export LC_CTYPE=ru_RU.KOI8-R; export LC_COLLATE=ru_RU.KOI8-R";
+alias locale-win="export LC_CTYPE=ru_RU.CP1251; export LC_COLLATE=ru_RU.CP1251";
+alias locale-alt="export LC_CTYPE=ru_RU.CP866; export LC_COLLATE=ru_RU.CP866";
+alias locale-utf="export LC_CTYPE=ru_RU.UTF-8; export LC_COLLATE=ru_RU.UTF-8";
+
+alias xterm-koi="LC_CTYPE=ru_RU.KOI8-R LC_COLLATE=ru_RU.KOI8-R xterm";
+alias xterm-win="LC_CTYPE=ru_RU.CP1251 LC_COLLATE=ru_RU.CP1251 xterm";
+alias xterm-alt="LC_CTYPE=ru_RU.CP866 LC_COLLATE=ru_RU.CP866 xterm";
+alias xterm-utf="LC_CTYPE=ru_RU.UTF-8 LC_COLLATE=ru_RU.UTF-8 xterm";
diff --git a/sys-apps/kbd/files/console-tools-ds-bin.tar.bz2 b/sys-apps/kbd/files/console-tools-ds-bin.tar.bz2
new file mode 100644
index 0000000..57d00bb
--- /dev/null
+++ b/sys-apps/kbd/files/console-tools-ds-bin.tar.bz2
Binary files differ
diff --git a/sys-apps/kbd/files/consolechars b/sys-apps/kbd/files/consolechars
new file mode 100755
index 0000000..810829f
--- /dev/null
+++ b/sys-apps/kbd/files/consolechars
@@ -0,0 +1,22 @@
+#! /bin/bash
+
+setfont=0
+setmap=0
+
+for name in $@; do
+ if [ $setfont -eq 1 ]; then
+ setfont $name
+ setfont=0
+ fi
+
+ if [ $setmap -eq 1 ]; then
+ mapscrn $name
+ setmap=0
+ fi
+
+ if [ $name = "-f" ]; then
+ setfont=1
+ elif [ $name = "-m" ]; then
+ setmap=1
+ fi
+done
diff --git a/sys-apps/kbd/files/controlkeys b/sys-apps/kbd/files/controlkeys
new file mode 100644
index 0000000..3d2aa1c
--- /dev/null
+++ b/sys-apps/kbd/files/controlkeys
@@ -0,0 +1,26 @@
+ alt keycode 103 = Spawn_Console
+ alt keycode 108 = Last_Console
+ altgr keycode 59 = Console_13
+ altgr keycode 60 = Console_14
+ altgr keycode 61 = Console_15
+ altgr keycode 62 = Console_16
+ altgr keycode 63 = Console_17
+ altgr keycode 64 = Console_18
+ altgr keycode 65 = Console_19
+ altgr keycode 66 = Console_20
+ altgr keycode 67 = Console_21
+ altgr keycode 68 = Console_22
+ altgr keycode 87 = Console_23
+ altgr keycode 88 = Console_24
+ control altgr keycode 59 = Console_13
+ control altgr keycode 60 = Console_14
+ control altgr keycode 61 = Console_15
+ control altgr keycode 62 = Console_16
+ control altgr keycode 63 = Console_17
+ control altgr keycode 64 = Console_18
+ control altgr keycode 65 = Console_19
+ control altgr keycode 66 = Console_20
+ control altgr keycode 67 = Console_21
+ control altgr keycode 68 = Console_22
+ control altgr keycode 87 = Console_23
+ control altgr keycode 88 = Console_24
diff --git a/sys-apps/kbd/files/dynamicvc b/sys-apps/kbd/files/dynamicvc
new file mode 100755
index 0000000..e50792f
--- /dev/null
+++ b/sys-apps/kbd/files/dynamicvc
@@ -0,0 +1,21 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+depend() {
+ need consolefont
+}
+
+start() {
+ ebegin "Starting dynamic-vc"
+ loadkeys < /etc/conf.d/controlkeys
+ start-stop-daemon --start --quiet --background --exec /usr/bin/spawn_login
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping dynamic-vc"
+ start-stop-daemon --stop --quiet --exec /usr/bin/spawn_login
+ eend $?
+}
diff --git a/sys-apps/kbd/files/kbd-1.08-terminal.patch b/sys-apps/kbd/files/kbd-1.08-terminal.patch
new file mode 100644
index 0000000..13aeeec
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.08-terminal.patch
@@ -0,0 +1,31 @@
+Output terminal control sequences only when output is a terminal.
+
+--- kbd-1.08/src/unicode_start 2002-11-22 19:23:00.000000000 -0500
++++ kbd-1.08/src/unicode_start 2002-11-22 19:24:34.000000000 -0500
+@@ -1,4 +1,4 @@
+-#!/bin/sh
++#!/bin/bash
+ # Enables Unicode processing in the current console.
+ #
+ # 1. The input side: the keyboard driver.
+@@ -25,7 +25,9 @@
+ # Tell the console output driver that the bytes arriving are UTF-8
+ # encoded multibyte sequences.
+
+-echo -n -e '\033%G'
++if test -t 1 -a -t 2 ; then
++ echo -n -e '\033%G'
++fi
+
+ # Tell the graphics card how to display Unicode characters not
+ # contained in the IBM 437 character set (on PCs). The font should
+--- kbd-1.08/src/unicode_stop 2002-11-22 19:23:30.000000000 -0500
++++ kbd-1.08/src/unicode_stop 2002-11-22 19:24:15.000000000 -0500
+@@ -1,4 +1,6 @@
+ #!/bin/sh
+ # stop unicode
+ kbd_mode -a
+-echo -n -e '\033%@'
++if test -t ; then
++ echo -n -e '\033%@'
++fi
diff --git a/sys-apps/kbd/files/kbd-1.12-Meta_utf8.patch b/sys-apps/kbd/files/kbd-1.12-Meta_utf8.patch
new file mode 100644
index 0000000..9bc68b6
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-Meta_utf8.patch
@@ -0,0 +1,11 @@
+--- kbd-1.12/src/ksyms.c.org 2005-01-11 16:38:32.000000000 +0100
++++ kbd-1.12/src/ksyms.c 2005-01-11 16:46:19.000000000 +0100
+@@ -1710,6 +1710,8 @@
+ keycode = ksymtocode(s+5);
+ if (KTYP(keycode) == KT_LATIN)
+ return K(KT_META, KVAL(keycode));
++ else if(prefer_unicode)
++ return (0);
+ /* fall through to error printf */
+ }
+
diff --git a/sys-apps/kbd/files/kbd-1.12-alias.patch b/sys-apps/kbd/files/kbd-1.12-alias.patch
new file mode 100644
index 0000000..30be4fa
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-alias.patch
@@ -0,0 +1,47 @@
+diff -u kbd-1.12/src/psffontop.c kbd-1.12/src/psffontop.c
+--- kbd-1.12/src/psffontop.c 2005-03-12 00:48:30.075310872 +0100
++++ kbd-1.12/src/psffontop.c 2005-05-14 10:49:59.000000000 +0900
+@@ -59,7 +59,6 @@
+
+ static unsigned int
+ assemble_ucs2(char **inptr, int cnt) {
+- unsigned char **in = (unsigned char **) inptr;
+ unsigned int u1, u2;
+
+ if (cnt < 2) {
+@@ -68,8 +67,8 @@
+ exit(EX_DATAERR);
+ }
+
+- u1 = *(*in)++;
+- u2 = *(*in)++;
++ u1 = (unsigned char)*(*inptr)++;
++ u2 = (unsigned char)*(*inptr)++;
+ return (u1 | (u2 << 8));
+ }
+
+@@ -110,7 +109,6 @@
+ */
+ static void
+ get_uni_entry(char **inptr, char **endptr, struct unicode_list *up, int utf8) {
+- unsigned char **in = (unsigned char **) inptr;
+ unsigned char uc;
+ unicode unichar;
+ int inseq = 0;
+@@ -126,14 +124,14 @@
+ exit(EX_DATAERR);
+ }
+ if (utf8) {
+- uc = *(*in)++;
++ uc = *(*inptr)++;
+ if (uc == PSF2_SEPARATOR)
+ break;
+ if (uc == PSF2_STARTSEQ) {
+ inseq = 1;
+ continue;
+ }
+- --(*in);
++ --(*inptr);
+ unichar = assemble_utf8(inptr, *endptr - *inptr);
+ } else {
+ unichar = assemble_ucs2(inptr, *endptr - *inptr);
diff --git a/sys-apps/kbd/files/kbd-1.12-configure-LANG.patch b/sys-apps/kbd/files/kbd-1.12-configure-LANG.patch
new file mode 100644
index 0000000..554c4f3
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-configure-LANG.patch
@@ -0,0 +1,27 @@
+The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in
+option parsing, it may break.
+
+http://bugs.gentoo.org/128253
+
+--- configure
++++ configure
+@@ -8,6 +8,19 @@
+ # New default: /usr/share/kbd
+ #
+
++# NLS nuisances.
++for as_var in \
++ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
++ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
++ LC_TELEPHONE LC_TIME
++do
++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
++ eval $as_var=C; export $as_var
++ else
++ unset $as_var
++ fi
++done
++
+ prefix=
+ datadir=
+ mandir=
diff --git a/sys-apps/kbd/files/kbd-1.12-cz-qwerty-map.patch b/sys-apps/kbd/files/kbd-1.12-cz-qwerty-map.patch
new file mode 100644
index 0000000..a27c88a
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-cz-qwerty-map.patch
@@ -0,0 +1,101 @@
+kavol@email.cz writes:
+
+I wanted to use the keymap file /usr/share/keymaps/i386/qwerty/cz.map.gz,
+but I have found this to be qwertz so I think it should be placed in
+/usr/share/keymaps/i386/qwertz/ (or, much better, converted to qwerty -
+I don't understand the masochists who use us-qwerty and cz-qwertz together :-)
+
+http://bugs.gentoo.org/show_bug.cgi?id=19010
+
+Gentoo notes:
+We copy the qwerty/cz.map to qwertz/cz.map and then apply this patch ...
+that way we end up with both a qwerty and qwertz version of the cz.map
+
+--- data/keymaps/i386/qwerty/cz.map.old 2004-06-21 00:03:22.000000000 +0200
++++ data/keymaps/i386/qwerty/cz.map 2004-10-24 16:04:44.471056808 +0200
+@@ -1,6 +1,9 @@
++# *** toto neni originalni verze souboru:
++# *** upraveno z puvodni QWERTZ na QWERTY + opraveno par preklepu
++#
+ # Tato keymapa NENI urcena pro jadro "opatchovane" programem "patch-capslock"
+ #
+-# klavesova mapa kompatibilni s windows QWERTZ
++# klavesova mapa kompatibilni s windows QWERTY
+ #
+ # Vytvoril: Richard S~puta, Richard.Sputa@os3.os.ds.mfcr.cz
+ #
+@@ -11,7 +14,7 @@
+ # Links: ftp://ftp.penguin.cz/pub/cestina/klavesnice/console/
+ # - primary ftp archiv
+ # http://www.debian.cz/proj/czkbd/index.php3
+-# - czech keyboard standarts
++# - czech keyboard standards
+ #
+ #
+ # POZOR: Tato klavesova mapa obsahuje ve skutecnosti 2 (dve) klavesnice
+@@ -27,7 +30,7 @@
+ # Navic klavesa "PrintScreen" funguje jako carka a hacek
+ #
+ #
+-# Rozsireni oproti standartni_CESKE_unikodove_klavesnici
++# Rozsireni oproti standardni_CESKE_unikodove_klavesnici
+ # (zde jsou popsany pouze kombinace, jejichz umisteni je diskutabilni)
+ # (popis ostatnich rozsireni je v souboru "readme.txt")
+ # 1) AltGr-SPACE => znak "nobreakspace" (neoddelitelna mezera kod 0xa0)
+@@ -148,7 +151,7 @@
+ # Linefeed (primarni) => Control_j
+ #
+ # vzdalenost mezi zacatky symbolu:
+-# 12 znaku (standartne) vyhovuje 80% symbolickych nazvu
++# 12 znaku (standardne) vyhovuje 80% symbolickych nazvu
+ # 25 znaku ma symbolicky nazev Meta_Control_bracketright
+ # 123456789012 123456789012 123456789012 123456789012 123456789012
+ keycode 1 = Escape Escape VoidSymbol VoidSymbol VoidSymbol \
+@@ -383,15 +386,15 @@
+ VoidSymbol VoidSymbol +T t VoidSymbol \
+ VoidSymbol VoidSymbol VoidSymbol Meta_T Meta_t \
+ VoidSymbol
+-keycode 21 = +z Z VoidSymbol VoidSymbol Control_z \
+- Control_z VoidSymbol VoidSymbol Meta_z Meta_Z \
+- VoidSymbol VoidSymbol +Z z VoidSymbol \
+- VoidSymbol VoidSymbol VoidSymbol Meta_Z Meta_z \
++keycode 21 = +y Y VoidSymbol VoidSymbol Control_y \
++ Control_y VoidSymbol VoidSymbol Meta_y Meta_Y \
++ VoidSymbol VoidSymbol +Y y VoidSymbol \
++ VoidSymbol VoidSymbol VoidSymbol Meta_Z Meta_y \
+ VoidSymbol \
+- +z Z VoidSymbol VoidSymbol Control_z \
+- Control_z VoidSymbol VoidSymbol Meta_z Meta_Z \
+- VoidSymbol VoidSymbol +Z z VoidSymbol \
+- VoidSymbol VoidSymbol VoidSymbol Meta_Z Meta_z \
++ +y Y VoidSymbol VoidSymbol Control_y \
++ Control_y VoidSymbol VoidSymbol Meta_y Meta_Y \
++ VoidSymbol VoidSymbol +Y y VoidSymbol \
++ VoidSymbol VoidSymbol VoidSymbol Meta_Y Meta_y \
+ VoidSymbol
+ keycode 22 = +u U VoidSymbol VoidSymbol Control_u \
+ Control_u VoidSymbol VoidSymbol Meta_u Meta_U \
+@@ -601,15 +604,15 @@
+ Meta_Control_backslash bar bar VoidSymbol \
+ VoidSymbol VoidSymbol VoidSymbol Meta_bar Meta_bar \
+ VoidSymbol
+-keycode 44 = +y Y degree degree Control_y \
+- Control_y VoidSymbol VoidSymbol Meta_y Meta_Y \
+- VoidSymbol VoidSymbol +Y y VoidSymbol \
+- VoidSymbol VoidSymbol VoidSymbol Meta_Y Meta_y \
++keycode 44 = +z Z degree degree Control_z \
++ Control_z VoidSymbol VoidSymbol Meta_z Meta_Z \
++ VoidSymbol VoidSymbol +Z z VoidSymbol \
++ VoidSymbol VoidSymbol VoidSymbol Meta_Z Meta_z \
+ VoidSymbol \
+- +y Y degree degree Control_y \
+- Control_y VoidSymbol VoidSymbol Meta_y Meta_Y \
+- VoidSymbol VoidSymbol +Y y VoidSymbol \
+- VoidSymbol VoidSymbol VoidSymbol Meta_Y Meta_y \
++ +z Z degree degree Control_z \
++ Control_z VoidSymbol VoidSymbol Meta_z Meta_Z \
++ VoidSymbol VoidSymbol +Z z VoidSymbol \
++ VoidSymbol VoidSymbol VoidSymbol Meta_Z Meta_z \
+ VoidSymbol
+ keycode 45 = +x X numbersign numbersign Control_x \
+ Control_x VoidSymbol VoidSymbol Meta_x Meta_X \
diff --git a/sys-apps/kbd/files/kbd-1.12-debian.patch b/sys-apps/kbd/files/kbd-1.12-debian.patch
new file mode 100644
index 0000000..de1e402
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-debian.patch
@@ -0,0 +1,86 @@
+diff -urNad /home/wart/Projects/debian/kbd/new/kbd-1.12/src/loadkeys.y kbd-1.12/src/loadkeys.y
+--- /home/wart/Projects/debian/kbd/new/kbd-1.12/src/loadkeys.y 2004-01-27 14:25:50.000000000 +0300
++++ kbd-1.12/src/loadkeys.y 2004-01-27 14:37:01.000000000 +0300
+@@ -566,7 +566,7 @@
+ }
+
+ char *dirpath[] = { "", DATADIR "/" KEYMAPDIR "/**", KERNDIR "/", 0 };
+-char *suffixes[] = { "", ".map", 0 };
++char *suffixes[] = { "", ".kmap", ".map", 0 };
+ extern FILE *findfile(char *fnam, char **dirpath, char **suffixes);
+
+ #undef yywrap
+diff -urNad /opt/tmp/kbd-1.12/src/loadunimap.c kbd-1.12/src/loadunimap.c
+--- /opt/tmp/kbd-1.12/src/loadunimap.c 2004-08-02 22:57:25.000000000 +0200
++++ kbd-1.12/src/loadunimap.c 2004-08-02 22:57:44.000000000 +0200
+@@ -28,8 +28,8 @@
+ extern char *progname;
+ extern int force;
+
+-static char *unidirpath[] = { "", DATADIR "/" UNIMAPDIR "/", 0 };
+-static char *unisuffixes[] = { "", ".uni", 0 };
++static char *unidirpath[] = { "", DATADIR "/" TRANSDIR "/", 0 };
++static char *unisuffixes[] = { "", ".sfm", ".uni", 0 };
+
+ #ifdef MAIN
+ #include "version.h"
+diff -urNad /opt/tmp/kbd-1.12/src/getunimap.c kbd-1.12/src/getunimap.c
+--- /opt/tmp/kbd-1.12/src/getunimap.c 2004-08-01 20:33:38.000000000 +0200
++++ kbd-1.12/src/getunimap.c 2004-08-02 22:45:30.000000000 +0200
+@@ -62,7 +62,7 @@
+ }
+ }
+
+- if (argc != 1)
++ if (optind < argc)
+ usage();
+
+ fd = getfd(console);
+diff -urNad /opt/tmp/kbd-1.12/src/loadunimap.c kbd-1.12/src/loadunimap.c
+--- /opt/tmp/kbd-1.12/src/loadunimap.c 2004-08-02 22:45:06.000000000 +0200
++++ kbd-1.12/src/loadunimap.c 2004-08-02 22:46:39.000000000 +0200
+@@ -73,18 +73,18 @@
+ }
+ }
+
+- if (argc > 2 || (argc == 1 && !outfnam))
++ if (argc > optind+1 || (argc == optind && !outfnam))
+ usage();
+
+ fd = getfd(console);
+
+ if (outfnam) {
+ saveunicodemap(fd, outfnam);
+- if (argc == 1)
++ if (argc == optind)
+ exit(0);
+ }
+
+- if (argc == 2)
++ if (argc == optind+1)
+ infnam = argv[optind];
+ loadunicodemap(fd, infnam);
+ exit(0);
+diff -urNad /opt/tmp/kbd-1.12/src/showconsolefont.c kbd-1.12/src/showconsolefont.c
+--- /opt/tmp/kbd-1.12/src/showconsolefont.c 2004-08-02 22:44:30.000000000 +0200
++++ kbd-1.12/src/showconsolefont.c 2004-08-02 22:47:07.000000000 +0200
+@@ -135,7 +135,7 @@
+ }
+ }
+
+- if (argc != 1)
++ if (optind < argc)
+ usage();
+
+ fd = getfd(console);
+--- kbd-1.12.orig/src/kbdrate.c
++++ kbd-1.12/src/kbdrate.c
+@@ -112,7 +112,7 @@
+ kbdrep_s.period = -1;
+ kbdrep_s.delay = -1;
+ if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
+- if (errno == EINVAL)
++ if (errno == EINVAL || errno == ENOTTY)
+ return 0;
+ perror( "ioctl(KDKBDREP)" );
+ exit( 1 );
diff --git a/sys-apps/kbd/files/kbd-1.12-find-map-fix.patch b/sys-apps/kbd/files/kbd-1.12-find-map-fix.patch
new file mode 100644
index 0000000..ca24703
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-find-map-fix.patch
@@ -0,0 +1,37 @@
+Oh, but I fixed it already. Patch below.
+
+Andries
+
+--- kbd-1.12.orig/src/findfile.c Fri Jan 16 20:45:31 2004
++++ kbd-1.12/src/findfile.c Wed Jan 28 23:29:35 2004
+@@ -70,6 +70,7 @@
+ FILE *fp = NULL;
+ DIR *d;
+ struct dirent *de;
++ struct stat statbuf;
+ char *ff, *fdir, *p, *q, **sp;
+ struct decompressor *dc;
+ int secondpass = 0;
+@@ -104,7 +105,6 @@
+ okdir = (ff && strcmp(de->d_name, fdir) == 0);
+
+ if ((secondpass && recdepth) || okdir) {
+- struct stat statbuf;
+ char *a;
+
+ a = xmalloc(strlen(dir) + strlen(de->d_name) + 2);
+@@ -137,6 +137,11 @@
+
+ sprintf(pathname, "%s/%s", dir, de->d_name);
+
++ /* Is this a regular file? */
++ if (stat(pathname, &statbuf) != 0 ||
++ !S_ISREG(statbuf.st_mode))
++ continue;
++
+ /* Does tail consist of a known suffix and possibly
+ a compression suffix? */
+ for(sp = suf; *sp; sp++) {
+
+
+[pasted and cut from another window, so with whitespace damage]
diff --git a/sys-apps/kbd/files/kbd-1.12-it-euro-map.patch b/sys-apps/kbd/files/kbd-1.12-it-euro-map.patch
new file mode 100644
index 0000000..bf42651
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-it-euro-map.patch
@@ -0,0 +1,18 @@
+Tupone Alfredo writes:
+
+To make euro key work at console (not X) I had to modify the
+it.map.gz to include euro.
+
+http://bugs.gentoo.org/show_bug.cgi?id=75970
+
+--- data/keymaps/i386/qwerty/it.map.orig 2004-12-29 15:31:59.269844456 -0500
++++ data/keymaps/i386/qwerty/it.map 2004-12-29 15:32:49.049276832 -0500
+@@ -86,7 +86,7 @@
+ alt keycode 15 = Meta_Tab
+ keycode 16 = q
+ keycode 17 = w
+-keycode 18 = e
++keycode 18 = e E euro
+ keycode 19 = r
+ keycode 20 = t
+ keycode 21 = y
diff --git a/sys-apps/kbd/files/kbd-1.12-jp-escape.patch b/sys-apps/kbd/files/kbd-1.12-jp-escape.patch
new file mode 100644
index 0000000..f413f00
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-jp-escape.patch
@@ -0,0 +1,16 @@
+Recognize Ctrl-[ as Escape.
+
+Patch by OKUMURA N. Shin-ya.
+
+http://bugs.gentoo.org/71870
+
+--- data/keymaps/i386/qwerty/jp106.map
++++ data/keymaps/i386/qwerty/jp106.map
+@@ -35,6 +35,7 @@
+ keycode 26 = at grave
+ control keycode 26 = nul
+ keycode 27 = bracketleft braceleft
++ control keycode 27 = Escape
+ keycode 28 = Return
+ alt keycode 28 = Meta_Control_m
+ keycode 29 = Control
diff --git a/sys-apps/kbd/files/kbd-1.12-kbd_repeat-v2.patch b/sys-apps/kbd/files/kbd-1.12-kbd_repeat-v2.patch
new file mode 100644
index 0000000..3e7f11d
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-kbd_repeat-v2.patch
@@ -0,0 +1,27 @@
+Linux is nice and changes around core structures :)
+
+--- kbd-1.12/src/kbdrate.c Fri Jan 16 20:45:31 2004
++++ kbd-1.12.kbdrate/src/kbdrate.c Sun Feb 8 14:52:04 2004
+@@ -164,10 +169,10 @@
+ exit( 1 );
+ }
+
+- kbdrate_s.period = (int) (rate + 0.5); /* round up */
++ kbdrate_s.rate = (int) (rate + 0.5); /* round up */
+ kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */
+- if (kbdrate_s.period > 50)
+- kbdrate_s.period = 50;
++ if (kbdrate_s.rate > 50)
++ kbdrate_s.rate = 50;
+
+ if (ioctl( fd, KIOCSRATE, &kbdrate_s )) {
+ perror( "ioctl(KIOCSRATE)" );
+@@ -177,7 +182,7 @@
+
+ if (!silent)
+ printf( "Typematic Rate set to %d cps (delay = %d ms)\n",
+- kbdrate_s.period, kbdrate_s.delay * 1000 / HZ );
++ kbdrate_s.rate, kbdrate_s.delay * 1000 / HZ );
+
+ return 1;
+ #else /* no KIOCSRATE */
diff --git a/sys-apps/kbd/files/kbd-1.12-kbio.patch b/sys-apps/kbd/files/kbd-1.12-kbio.patch
new file mode 100644
index 0000000..b2a80d9
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-kbio.patch
@@ -0,0 +1,25 @@
+diff -Nura kbd-1.12/src/kbdrate.c kbd-1.12.nokbio/src/kbdrate.c
+--- kbd-1.12/src/kbdrate.c 2004-01-16 16:45:31.000000000 -0300
++++ kbd-1.12.nokbio/src/kbdrate.c 2006-10-23 11:30:11.000000000 -0300
+@@ -77,7 +77,6 @@
+
+ #ifdef __sparc__
+ #include <asm/param.h>
+-#include <asm/kbio.h>
+ #endif
+
+ #ifndef KDKBDREP
+diff -Nura kbd-1.12/src/setleds.c kbd-1.12.nokbio/src/setleds.c
+--- kbd-1.12/src/setleds.c 2004-01-16 16:45:31.000000000 -0300
++++ kbd-1.12.nokbio/src/setleds.c 2006-10-23 11:30:20.000000000 -0300
+@@ -14,10 +14,6 @@
+ #include "nls.h"
+ #include "version.h"
+
+-#ifdef __sparc__
+-#include <asm/kbio.h>
+-#endif
+-
+ static void
+ usage(void)
+ {
diff --git a/sys-apps/kbd/files/kbd-1.12-setfont-man.patch b/sys-apps/kbd/files/kbd-1.12-setfont-man.patch
new file mode 100644
index 0000000..73cce39
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-setfont-man.patch
@@ -0,0 +1,14 @@
+diff -Nrbu kbd-1.12/man/man8/setfont.8.in kbd-1.12-OK/man/man8/setfont.8.in
+--- kbd-1.12/man/man8/setfont.8.in 2004-01-03 07:15:59.000000000 +0300
++++ kbd-1.12-OK/man/man8/setfont.8.in 2004-11-26 19:20:15.000000000 +0300
+@@ -50,6 +50,10 @@
+ Load a given font (here a 512-glyph font combining several
+ character sets) and indicate that one's local character set
+ is ISO 8859-2.
++.LP
++Note: if a font has more than 256 glyphs, only 8 out of 16 colors
++can be used simultaneously. It can make console perception worse
++(loss of intensity and even some colors).
+
+ .SH "FONT FORMATS"
+ The standard Linux font format is the PSF font.
diff --git a/sys-apps/kbd/files/kbd-1.12-unimap.patch b/sys-apps/kbd/files/kbd-1.12-unimap.patch
new file mode 100644
index 0000000..c7ea73c
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-unimap.patch
@@ -0,0 +1,16 @@
+That silly Debian patch changes the default dir to TRANSDIR.
+This patch corrects that oversight so both work if we ever
+use console-data, also by Debian.
+
+--- kbd-1.12/src/loadunimap.c.orig 2006-08-24 13:48:11.000000000 +0100
++++ kbd-1.12/src/loadunimap.c 2006-08-24 13:49:07.000000000 +0100
+@@ -28,7 +28,7 @@
+ extern char *progname;
+ extern int force;
+
+-static char *unidirpath[] = { "", DATADIR "/" TRANSDIR "/", 0 };
+-static char *unisuffixes[] = { "", ".sfm", ".uni", 0 };
++static char *unidirpath[] = { "", DATADIR "/" UNIMAPDIR "/", DATADIR "/" TRANSDIR "/", 0 };
++static char *unisuffixes[] = { "", ".uni", ".sfm", 0 };
+
+ #ifdef MAIN
diff --git a/sys-apps/kbd/files/kbd-1.12-xcompile.patch b/sys-apps/kbd/files/kbd-1.12-xcompile.patch
new file mode 100644
index 0000000..985dbad
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.12-xcompile.patch
@@ -0,0 +1,21 @@
+this shit is wrong, but so was original ... this needs to be
+rewritten so that $HOST_ARCH/$TARGET_ARCH aren't even needed ...
+
+--- configure
++++ configure
+@@ -129,8 +129,13 @@
+ #
+ # 0. Figure out architecture (one of i386, alpha, sparc, arm, m68k, mips)
+ #
+-ARCH=`uname -m | sed s/i.86/i386/`
+-echo "ARCH=$ARCH" >> make_include
++HOST_ARCH=`uname -m`
++TARGET_ARCH=`$CC -dumpmachine | awk -F- '{print $1}'`
++# Don't allow ARCH="sparc" for sparc64 targets with 32-bit userland
++if (test "$HOST_ARCH" = "sparc64" && test "$TARGET_ARCH" = "sparc") ; then
++ TARGET_ARCH="sparc64"
++fi
++echo "ARCH=${TARGET_ARCH}" | sed -e 's:i.86:i386:' >> make_include
+
+ #
+ # 1. Do we have <locale.h>?
diff --git a/sys-apps/kbd/files/kbd-1.13-dont-use-error.patch b/sys-apps/kbd/files/kbd-1.13-dont-use-error.patch
new file mode 100644
index 0000000..d8e0bb1
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.13-dont-use-error.patch
@@ -0,0 +1,17 @@
+dont use GNU-specific function error()
+
+--- openvt/openvt.c
++++ openvt/openvt.c
+@@ -107,8 +107,10 @@
+
+ for (i=0; i<3; i++) {
+ struct stat st;
+- if (fstat(i, &st) == -1 && open("/dev/null", O_RDWR) == -1)
+- error(EXIT_FAILURE, errno, "open");
++ if (fstat(i, &st) == -1 && open("/dev/null", O_RDWR) == -1) {
++ perror("open(/dev/null/) failed");
++ return EXIT_FAILURE;
++ }
+ }
+
+ consfd = getfd(NULL);
diff --git a/sys-apps/kbd/files/kbd-1.14-ds-nohost.patch b/sys-apps/kbd/files/kbd-1.14-ds-nohost.patch
new file mode 100644
index 0000000..2ee1df0
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.14-ds-nohost.patch
@@ -0,0 +1,12 @@
+diff -dPNur kbd-1.14.1/src/spawn_login.c kbd-1.14.1-new/src/spawn_login.c
+--- kbd-1.14.1/src/spawn_login.c 2008-03-13 17:46:23.000000000 +0100
++++ kbd-1.14.1-new/src/spawn_login.c 2008-07-04 22:59:25.000000000 +0200
+@@ -15,7 +15,7 @@
+
+ static void
+ sighup(int n) {
+- if (system("openvt -s -l -- login -h spawn") == -1) {
++ if (system("openvt -s -l -- login") == -1) {
+ perror("system");
+ exit(1);
+ }
diff --git a/sys-apps/kbd/files/kbd-1.14-ds-unicode.patch b/sys-apps/kbd/files/kbd-1.14-ds-unicode.patch
new file mode 100644
index 0000000..9a21352
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.14-ds-unicode.patch
@@ -0,0 +1,59 @@
+diff -dPNur kbd-1.14.1/src/unicode_start kbd-1.14.1-unicode/src/unicode_start
+--- kbd-1.14.1/src/unicode_start 2008-03-24 17:03:56.000000000 +0100
++++ kbd-1.14.1-unicode/src/unicode_start 2008-07-04 23:20:41.000000000 +0200
+@@ -3,7 +3,7 @@
+ # 0. Check whether we're on a console
+ TTY="`/usr/bin/tty`"
+ case "$TTY" in
+- /dev/console|/dev/vc*|/dev/tty[0-9]*)
++ /dev/console|/dev/vc*|/dev/tty*|/dev/pts/*)
+ ;;
+ *)
+ echo "unicode_start skipped on $TTY" >&2
+diff -dPNur kbd-1.14.1/src/unicode_stop kbd-1.14.1-unicode/src/unicode_stop
+--- kbd-1.14.1/src/unicode_stop 2008-03-24 17:03:56.000000000 +0100
++++ kbd-1.14.1-unicode/src/unicode_stop 2008-07-04 23:22:18.000000000 +0200
+@@ -1,8 +1,13 @@
+ #!/bin/sh
+
+-TTY="`/usr/bin/tty`"
++if [ -z "$1" ]; then
++ TTY="`/usr/bin/tty`"
++else
++ TTY=$1
++fi
++
+ case "$TTY" in
+- /dev/console|/dev/vc*|/dev/tty[0-9]*)
++ /dev/console|/dev/vc*|/dev/tty*|/dev/pts/*)
+ ;;
+ *)
+ echo "unicode_stop skipped on $TTY"
+@@ -11,14 +16,23 @@
+ esac
+
+ # stop unicode
+-kbd_mode -a
+-if test -t ; then
++if [ -z "$1" ]; then
++ kbd_mode -a
++ if test -t ; then
+ printf '\033%%@'
++ fi
++ stty -iutf8
++else
++ kbd_mode -a -C $TTY
++ if test -t ; then
++ printf '\033%%@' > $TTY
++ fi
++ stty -F $TTY -iutf8
+ fi
+-stty -iutf8
+
+ uid="`id -u 2>/dev/null`" ||:
+ if [ "$uid" = '0' ]; then
+ [ ! -r "$HOME/.kbd/.keymap_sv" ] ||
+ loadkeys "$HOME/.kbd/.keymap_sv"
+ fi
++setfont
+\ No newline at end of file
diff --git a/sys-apps/kbd/files/kbd-1.14.1-missing-configure.patch b/sys-apps/kbd/files/kbd-1.14.1-missing-configure.patch
new file mode 100644
index 0000000..b9fe961
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.14.1-missing-configure.patch
@@ -0,0 +1,15 @@
+fix from Charles Clément for missing binaries
+
+http://bugs.gentoo.org/215610
+
+--- kbd-1.14.1/src/Makefile.in
++++ kbd-1.14.1/src/Makefile.in
+@@ -2,6 +2,8 @@ prefix = @prefix@
+ exec_prefix = @exec_prefix@
+ bindir = $(DESTDIR)@bindir@
+ datarootdir = @datarootdir@
++KEYCODES_PROGS = @KEYCODES_PROGS@
++RESIZECONS_PROGS = @RESIZECONS_PROGS@
+ OPTIONAL_PROGS = @OPTIONAL_PROGS@
+
+ # Something like /usr/lib/kbd or /usr/share/kbd
diff --git a/sys-apps/kbd/files/kbd-1.15.1-ds-nohost.patch b/sys-apps/kbd/files/kbd-1.15.1-ds-nohost.patch
new file mode 100644
index 0000000..2cb399e
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-1.15.1-ds-nohost.patch
@@ -0,0 +1,12 @@
+diff -dPNur kbd-1.15.1/src/spawn_login.c kbd-1.15.1-ds/src/spawn_login.c
+--- kbd-1.15.1/src/spawn_login.c 2009-10-09 15:36:06.000000000 +0200
++++ kbd-1.15.1-ds/src/spawn_login.c 2010-01-31 03:20:24.000000000 +0100
+@@ -17,7 +17,7 @@
+
+ static void
+ sighup(attr_unused int n) {
+- if (system("openvt -s -l -- login -h spawn") == -1) {
++ if (system("openvt -s -l -- login") == -1) {
+ perror("system");
+ exit(1);
+ }
diff --git a/sys-apps/kbd/files/kbd-ds-nohost.patch b/sys-apps/kbd/files/kbd-ds-nohost.patch
new file mode 100644
index 0000000..8f009f1
--- /dev/null
+++ b/sys-apps/kbd/files/kbd-ds-nohost.patch
@@ -0,0 +1,12 @@
+diff -dPNur kbd-1.12/src/spawn_login.c kbd-1.12-new/src/spawn_login.c
+--- kbd-1.12/src/spawn_login.c 2004-01-16 20:45:31.000000000 +0100
++++ kbd-1.12-new/src/spawn_login.c 2008-07-04 22:19:22.000000000 +0200
+@@ -10,7 +10,7 @@
+
+ void
+ sighup(){
+- system("openvt -s -l -- login -h spawn");
++ system("openvt -s -l -- login");
+ signal(SIGHUP, sighup);
+ }
+
diff --git a/sys-apps/kbd/files/keymaps.tar.bz2 b/sys-apps/kbd/files/keymaps.tar.bz2
new file mode 100644
index 0000000..426191b
--- /dev/null
+++ b/sys-apps/kbd/files/keymaps.tar.bz2
Binary files differ
diff --git a/sys-apps/kbd/kbd-1.12-r10.ebuild b/sys-apps/kbd/kbd-1.12-r10.ebuild
new file mode 100644
index 0000000..69a55d2
--- /dev/null
+++ b/sys-apps/kbd/kbd-1.12-r10.ebuild
@@ -0,0 +1,132 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/kbd/kbd-1.12-r8.ebuild,v 1.11 2006/12/30 07:02:37 vapier Exp $
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="Keyboard and console utilities"
+HOMEPAGE="http://freshmeat.net/projects/kbd/"
+SRC_URI="ftp://ftp.cwi.nl/pub/aeb/kbd/${P}.tar.gz
+ ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/${P}.tar.gz
+ nls? ( http://www.users.one.se/liket/svorak/svorakln.tar.gz )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86"
+IUSE="nls"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ local a
+ # Workaround problem on JFS filesystems, see bug 42859
+ for a in ${A} ; do
+ echo ">>> Unpacking ${a} to ${WORKDIR}"
+ gzip -dc "${DISTDIR}"/${a} | tar xf -
+ assert
+ done
+
+ cd "${S}"
+ sed -i \
+ -e "/^CFLAGS/ s:-O2:${CFLAGS}:g" \
+ -e "/^LDFLAGS/ s:-s:${LDFLAGS}:" \
+ -e "s:install -s:install:" \
+ src/Makefile.in \
+ openvt/Makefile
+
+ if tc-is-cross-compiler; then
+ tc-export CC
+ # Cross-compiling: don't run test programs
+ sed -i -e "s:&& ./conftest::" configure || \
+ die "Could not do sed configure for cross-compile"
+ fi
+
+ # Other patches from RH
+ epatch "${FILESDIR}"/${PN}-1.08-terminal.patch
+
+ epatch "${FILESDIR}"/${P}-configure-LANG.patch #128253
+
+ # Fixes a problem where loadkeys matches dvorak the dir, and not the
+ # .map inside
+ epatch "${FILESDIR}"/${P}-find-map-fix.patch
+
+ # Sparc have not yet fixed struct kbd_rate to use 'period' and not 'rate'
+ epatch "${FILESDIR}"/${P}-kbd_repeat-v2.patch
+
+ # misc fixes from debian
+ epatch "${FILESDIR}"/${P}-debian.patch
+
+ # fix unimap path issue caused by Debian patch
+ epatch "${FILESDIR}/${P}"-unimap.patch
+
+ # Provide a QWERTZ and QWERTY cz map #19010
+ cp data/keymaps/i386/{qwerty,qwertz}/cz.map || die "cz qwerty"
+ epatch "${FILESDIR}"/${P}-cz-qwerty-map.patch
+
+ # Fix jp map to recognize Ctrl-[ as Escape #71870
+ epatch "${FILESDIR}"/${P}-jp-escape.patch
+
+ # Patches from Fedora
+ epatch "${FILESDIR}"/${P}-Meta_utf8.patch
+ ## Fix runtime with gcc4 (setfont: Input file: trailing garbage)
+ epatch "${FILESDIR}"/${P}-alias.patch
+ epatch "${FILESDIR}"/${P}-setfont-man.patch
+
+ # cross-compile fails for powerpc targets bug #133856
+ epatch "${FILESDIR}"/${P}-xcompile.patch
+
+ # sparc newer headers lack asm/kbio.h
+ epatch "${FILESDIR}"/${P}-kbio.patch
+}
+
+src_compile() {
+ local myconf=
+ # Non-standard configure script; --disable-nls to
+ # disable NLS, nothing to enable it.
+ use nls || myconf="--disable-nls"
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share \
+ ${myconf} || die
+
+ emake CC="$(tc-getCC)" || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die
+ mv "${D}"/usr/bin/setfont "${D}"/bin/
+ dosym /bin/setfont /usr/bin/setfont
+
+#SDS
+ dobin src/spawn_console
+ dobin src/spawn_login
+
+ tar xjf ${FILESDIR}/keymaps.tar.bz2 -C ${D}/usr/share/keymaps/i386/qwerty || die
+ rm -f ${D}/usr/share/consolefonts/default8x16.psf*.gz
+ ln -s ruscii_8x16.psfu.gz ${D}/usr/share/consolefonts/default8x16.psfu.gz || die
+ tar xjf ${FILESDIR}/console-tools-ds-bin.tar.bz2 -C ${D}/usr/bin || die
+ mkdir -p ${D}/etc/profile.d/
+ install -c -m 755 ${FILESDIR}/alias-console-tools.sh ${D}/etc/profile.d/ || die
+ install -c -m 755 ${FILESDIR}/consolechars ${D}/usr/bin || die
+
+ mkdir -p ${D}/etc/init.d/
+ install -c -m 755 ${FILESDIR}/dynamicvc ${D}/etc/init.d || die
+
+ mkdir -p ${D}/etc/conf.d/
+ install -c -m 644 ${FILESDIR}/controlkeys ${D}/etc/conf.d || die
+#EDS
+
+ dodoc CHANGES CREDITS README
+ dodir /usr/share/doc/${PF}/html
+ cp -dR doc/* "${D}"/usr/share/doc/${PF}/html/
+
+ if use nls ; then
+ cd ${WORKDIR}/mnt/e/SvorakLN
+ insinto /usr/share/keymaps/i386/dvorak/
+ doins .svorakmap svorak.map.gz
+ dodoc Svorak.txt
+ fi
+}
diff --git a/sys-apps/kbd/kbd-1.12-r11.ebuild b/sys-apps/kbd/kbd-1.12-r11.ebuild
new file mode 100644
index 0000000..d4a2593
--- /dev/null
+++ b/sys-apps/kbd/kbd-1.12-r11.ebuild
@@ -0,0 +1,136 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/kbd/kbd-1.12-r8.ebuild,v 1.11 2006/12/30 07:02:37 vapier Exp $
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="Keyboard and console utilities"
+HOMEPAGE="http://freshmeat.net/projects/kbd/"
+SRC_URI="ftp://ftp.cwi.nl/pub/aeb/kbd/${P}.tar.gz
+ ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/${P}.tar.gz
+ nls? ( http://www.users.one.se/liket/svorak/svorakln.tar.gz )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86"
+IUSE="nls"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ local a
+ # Workaround problem on JFS filesystems, see bug 42859
+ for a in ${A} ; do
+ echo ">>> Unpacking ${a} to ${WORKDIR}"
+ gzip -dc "${DISTDIR}"/${a} | tar xf -
+ assert
+ done
+
+ cd "${S}"
+ sed -i \
+ -e "/^CFLAGS/ s:-O2:${CFLAGS}:g" \
+ -e "/^LDFLAGS/ s:-s:${LDFLAGS}:" \
+ -e "s:install -s:install:" \
+ src/Makefile.in \
+ openvt/Makefile
+
+ if tc-is-cross-compiler; then
+ tc-export CC
+ # Cross-compiling: don't run test programs
+ sed -i -e "s:&& ./conftest::" configure || \
+ die "Could not do sed configure for cross-compile"
+ fi
+
+ # Other patches from RH
+ epatch "${FILESDIR}"/${PN}-1.08-terminal.patch
+
+ epatch "${FILESDIR}"/${P}-configure-LANG.patch #128253
+
+ # Fixes a problem where loadkeys matches dvorak the dir, and not the
+ # .map inside
+ epatch "${FILESDIR}"/${P}-find-map-fix.patch
+
+ # Sparc have not yet fixed struct kbd_rate to use 'period' and not 'rate'
+ epatch "${FILESDIR}"/${P}-kbd_repeat-v2.patch
+
+ # misc fixes from debian
+ epatch "${FILESDIR}"/${P}-debian.patch
+
+ # fix unimap path issue caused by Debian patch
+ epatch "${FILESDIR}/${P}"-unimap.patch
+
+ # Provide a QWERTZ and QWERTY cz map #19010
+ cp data/keymaps/i386/{qwerty,qwertz}/cz.map || die "cz qwerty"
+ epatch "${FILESDIR}"/${P}-cz-qwerty-map.patch
+
+ # Fix jp map to recognize Ctrl-[ as Escape #71870
+ epatch "${FILESDIR}"/${P}-jp-escape.patch
+
+ # Patches from Fedora
+ epatch "${FILESDIR}"/${P}-Meta_utf8.patch
+ ## Fix runtime with gcc4 (setfont: Input file: trailing garbage)
+ epatch "${FILESDIR}"/${P}-alias.patch
+ epatch "${FILESDIR}"/${P}-setfont-man.patch
+
+ # cross-compile fails for powerpc targets bug #133856
+ epatch "${FILESDIR}"/${P}-xcompile.patch
+
+ # sparc newer headers lack asm/kbio.h
+ epatch "${FILESDIR}"/${P}-kbio.patch
+
+#SDS
+ epatch "${FILESDIR}"/${PN}-ds-nohost.patch || die
+#EDS
+}
+
+src_compile() {
+ local myconf=
+ # Non-standard configure script; --disable-nls to
+ # disable NLS, nothing to enable it.
+ use nls || myconf="--disable-nls"
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share \
+ ${myconf} || die
+
+ emake CC="$(tc-getCC)" || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die
+ mv "${D}"/usr/bin/setfont "${D}"/bin/
+ dosym /bin/setfont /usr/bin/setfont
+
+#SDS
+ dobin src/spawn_console
+ dobin src/spawn_login
+
+ tar xjf ${FILESDIR}/keymaps.tar.bz2 -C ${D}/usr/share/keymaps/i386/qwerty || die
+ rm -f ${D}/usr/share/consolefonts/default8x16.psf*.gz
+ ln -s ruscii_8x16.psfu.gz ${D}/usr/share/consolefonts/default8x16.psfu.gz || die
+ tar xjf ${FILESDIR}/console-tools-ds-bin.tar.bz2 -C ${D}/usr/bin || die
+ mkdir -p ${D}/etc/profile.d/
+ install -c -m 755 ${FILESDIR}/alias-console-tools.sh ${D}/etc/profile.d/ || die
+ install -c -m 755 ${FILESDIR}/consolechars ${D}/usr/bin || die
+
+ mkdir -p ${D}/etc/init.d/
+ install -c -m 755 ${FILESDIR}/dynamicvc ${D}/etc/init.d || die
+
+ mkdir -p ${D}/etc/conf.d/
+ install -c -m 644 ${FILESDIR}/controlkeys ${D}/etc/conf.d || die
+#EDS
+
+ dodoc CHANGES CREDITS README
+ dodir /usr/share/doc/${PF}/html
+ cp -dR doc/* "${D}"/usr/share/doc/${PF}/html/
+
+ if use nls ; then
+ cd ${WORKDIR}/mnt/e/SvorakLN
+ insinto /usr/share/keymaps/i386/dvorak/
+ doins .svorakmap svorak.map.gz
+ dodoc Svorak.txt
+ fi
+}
diff --git a/sys-apps/kbd/kbd-1.12-r9.ebuild b/sys-apps/kbd/kbd-1.12-r9.ebuild
new file mode 100644
index 0000000..15a8164
--- /dev/null
+++ b/sys-apps/kbd/kbd-1.12-r9.ebuild
@@ -0,0 +1,132 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/kbd/kbd-1.12-r8.ebuild,v 1.11 2006/12/30 07:02:37 vapier Exp $
+
+inherit eutils toolchain-funcs
+
+DESCRIPTION="Keyboard and console utilities"
+HOMEPAGE="http://freshmeat.net/projects/kbd/"
+SRC_URI="ftp://ftp.cwi.nl/pub/aeb/kbd/${P}.tar.gz
+ ftp://ftp.win.tue.nl/pub/home/aeb/linux-local/utils/kbd/${P}.tar.gz
+ nls? ( http://www.users.one.se/liket/svorak/svorakln.tar.gz )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 arm hppa ia64 m68k mips ppc ppc64 s390 sh sparc x86"
+IUSE="nls"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ local a
+ # Workaround problem on JFS filesystems, see bug 42859
+ for a in ${A} ; do
+ echo ">>> Unpacking ${a} to ${WORKDIR}"
+ gzip -dc "${DISTDIR}"/${a} | tar xf -
+ assert
+ done
+
+ cd "${S}"
+ sed -i \
+ -e "/^CFLAGS/ s:-O2:${CFLAGS}:g" \
+ -e "/^LDFLAGS/ s:-s:${LDFLAGS}:" \
+ -e "s:install -s:install:" \
+ src/Makefile.in \
+ openvt/Makefile
+
+ if tc-is-cross-compiler; then
+ tc-export CC
+ # Cross-compiling: don't run test programs
+ sed -i -e "s:&& ./conftest::" configure || \
+ die "Could not do sed configure for cross-compile"
+ fi
+
+ # Other patches from RH
+ epatch "${FILESDIR}"/${PN}-1.08-terminal.patch
+
+ epatch "${FILESDIR}"/${P}-configure-LANG.patch #128253
+
+ # Fixes a problem where loadkeys matches dvorak the dir, and not the
+ # .map inside
+ epatch "${FILESDIR}"/${P}-find-map-fix.patch
+
+ # Sparc have not yet fixed struct kbd_rate to use 'period' and not 'rate'
+ epatch "${FILESDIR}"/${P}-kbd_repeat-v2.patch
+
+ # misc fixes from debian
+ epatch "${FILESDIR}"/${P}-debian.patch
+
+ # fix unimap path issue caused by Debian patch
+ epatch "${FILESDIR}/${P}"-unimap.patch
+
+ # Provide a QWERTZ and QWERTY cz map #19010
+ cp data/keymaps/i386/{qwerty,qwertz}/cz.map || die "cz qwerty"
+ epatch "${FILESDIR}"/${P}-cz-qwerty-map.patch
+
+ # Fix jp map to recognize Ctrl-[ as Escape #71870
+ epatch "${FILESDIR}"/${P}-jp-escape.patch
+
+ # Patches from Fedora
+ epatch "${FILESDIR}"/${P}-Meta_utf8.patch
+ ## Fix runtime with gcc4 (setfont: Input file: trailing garbage)
+ epatch "${FILESDIR}"/${P}-alias.patch
+ epatch "${FILESDIR}"/${P}-setfont-man.patch
+
+ # cross-compile fails for powerpc targets bug #133856
+ epatch "${FILESDIR}"/${P}-xcompile.patch
+
+ # sparc newer headers lack asm/kbio.h
+ epatch "${FILESDIR}"/${P}-kbio.patch
+}
+
+src_compile() {
+ local myconf=
+ # Non-standard configure script; --disable-nls to
+ # disable NLS, nothing to enable it.
+ use nls || myconf="--disable-nls"
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share \
+ ${myconf} || die
+
+ emake CC="$(tc-getCC)" || die "emake failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die
+ mv "${D}"/usr/bin/setfont "${D}"/bin/
+ dosym /bin/setfont /usr/bin/setfont
+
+#SDS
+ dobin src/spawn_console
+ dobin src/spawn_login
+
+ tar xjf ${FILESDIR}/keymaps.tar.bz2 -C ${D}/usr/share/keymaps/i386/qwerty || die
+ rm -f ${D}/usr/share/consolefonts/default8x16.psf*.gz
+ ln -s Cyr_a8x16.psfu.gz ${D}/usr/share/consolefonts/default8x16.psfu.gz || die
+ tar xjf ${FILESDIR}/console-tools-ds-bin.tar.bz2 -C ${D}/usr/bin || die
+ mkdir -p ${D}/etc/profile.d/
+ install -c -m 755 ${FILESDIR}/alias-console-tools.sh ${D}/etc/profile.d/ || die
+ install -c -m 755 ${FILESDIR}/consolechars ${D}/usr/bin || die
+
+ mkdir -p ${D}/etc/init.d/
+ install -c -m 755 ${FILESDIR}/dynamicvc ${D}/etc/init.d || die
+
+ mkdir -p ${D}/etc/conf.d/
+ install -c -m 644 ${FILESDIR}/controlkeys ${D}/etc/conf.d || die
+#EDS
+
+ dodoc CHANGES CREDITS README
+ dodir /usr/share/doc/${PF}/html
+ cp -dR doc/* "${D}"/usr/share/doc/${PF}/html/
+
+ if use nls ; then
+ cd ${WORKDIR}/mnt/e/SvorakLN
+ insinto /usr/share/keymaps/i386/dvorak/
+ doins .svorakmap svorak.map.gz
+ dodoc Svorak.txt
+ fi
+}
diff --git a/sys-apps/kbd/kbd-1.14.1-r2.ebuild b/sys-apps/kbd/kbd-1.14.1-r2.ebuild
new file mode 100644
index 0000000..621caea
--- /dev/null
+++ b/sys-apps/kbd/kbd-1.14.1-r2.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/kbd/kbd-1.14.1-r1.ebuild,v 1.4 2008/05/25 06:32:24 corsair Exp $
+
+inherit eutils
+
+DESCRIPTION="Keyboard and console utilities"
+HOMEPAGE="http://freshmeat.net/projects/kbd/"
+SRC_URI="ftp://ftp.altlinux.org/pub/people/legion/kbd/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh ~sparc x86"
+IUSE="nls"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ sed -i 's:install -s:install:' src/Makefile.in
+
+ # fix unimap path issue caused by Debian patch
+ epatch "${FILESDIR}"/${PN}-1.12-unimap.patch
+
+ # Provide a QWERTZ and QWERTY cz map #19010
+ cp data/keymaps/i386/{qwertz,qwerty}/cz.map || die "cz qwerty"
+ epatch "${FILESDIR}"/${PN}-1.12-cz-qwerty-map.patch
+
+ # Fix jp map to recognize Ctrl-[ as Escape #71870
+ epatch "${FILESDIR}"/${PN}-1.12-jp-escape.patch
+
+ epatch "${FILESDIR}"/${P}-missing-configure.patch #215610
+ epatch "${FILESDIR}"/${PN}-1.12-kbio.patch
+
+#SDS
+ epatch "${FILESDIR}"/${PN}-1.14-ds-nohost.patch || die
+ epatch "${FILESDIR}"/${PN}-1.14-ds-unicode.patch || die
+#EDS
+}
+
+src_compile() {
+#SDS
+ econf $(use_enable nls) --enable-optional-progs || die
+#EDS
+ emake || die
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+
+#SDS
+ dobin src/spawn_console || die
+ dobin src/spawn_login || die
+
+ tar xjf ${FILESDIR}/keymaps.tar.bz2 -C ${D}/usr/share/keymaps/i386/qwerty || die
+ rm -f ${D}/usr/share/consolefonts/default8x16.psf*.gz
+ ln -s ruscii_8x16.psfu.gz ${D}/usr/share/consolefonts/default8x16.psfu.gz || die
+ tar xjf ${FILESDIR}/console-tools-ds-bin.tar.bz2 -C ${D}/usr/bin || die
+ mkdir -p ${D}/etc/profile.d/
+ install -c -m 755 ${FILESDIR}/alias-console-tools.sh ${D}/etc/profile.d/ || die
+ install -c -m 755 ${FILESDIR}/consolechars ${D}/usr/bin || die
+
+ mkdir -p ${D}/etc/init.d/
+ install -c -m 755 ${FILESDIR}/dynamicvc ${D}/etc/init.d || die
+
+ mkdir -p ${D}/etc/conf.d/
+ install -c -m 644 ${FILESDIR}/controlkeys ${D}/etc/conf.d || die
+#EDS
+
+ dodoc CHANGES CREDITS README
+ dohtml doc/*.html
+}
diff --git a/sys-apps/kbd/kbd-1.15.1-r1.ebuild b/sys-apps/kbd/kbd-1.15.1-r1.ebuild
new file mode 100644
index 0000000..9d61056
--- /dev/null
+++ b/sys-apps/kbd/kbd-1.15.1-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/kbd/kbd-1.15.1.ebuild,v 1.2 2009/10/18 18:03:09 vapier Exp $
+
+inherit autotools
+
+DESCRIPTION="Keyboard and console utilities"
+HOMEPAGE="http://freshmeat.net/projects/kbd/"
+SRC_URI="ftp://ftp.altlinux.org/pub/people/legion/kbd/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86"
+IUSE="nls"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )"
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+#SDS
+ epatch "${FILESDIR}"/${PN}-1.15.1-ds-nohost.patch || die
+ epatch "${FILESDIR}"/${PN}-1.14-ds-unicode.patch || die
+#EDS
+
+ eautoreconf # stupid tarball lacks generated autotools
+ sed -i 's:-Werror::' src/Makefile.in
+}
+
+src_compile() {
+#SDS
+ econf $(use_enable nls) --enable-optional-progs || die
+# econf $(use_enable nls) || die
+#EDS
+ emake || die
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die
+
+#SDS
+ dobin src/spawn_console || die
+ dobin src/spawn_login || die
+
+ tar xjf ${FILESDIR}/keymaps.tar.bz2 -C ${D}/usr/share/keymaps/i386/qwerty || die
+ rm -f ${D}/usr/share/consolefonts/default8x16.psf*.gz
+ ln -s ruscii_8x16.psfu.gz ${D}/usr/share/consolefonts/default8x16.psfu.gz || die
+ tar xjf ${FILESDIR}/console-tools-ds-bin.tar.bz2 -C ${D}/usr/bin || die
+ mkdir -p ${D}/etc/profile.d/
+ install -c -m 755 ${FILESDIR}/alias-console-tools2.sh ${D}/etc/profile.d/ || die
+# install -c -m 755 ${FILESDIR}/consolechars ${D}/usr/bin || die
+
+ mkdir -p ${D}/etc/init.d/
+ install -c -m 755 ${FILESDIR}/dynamicvc ${D}/etc/init.d || die
+
+ mkdir -p ${D}/etc/conf.d/
+ install -c -m 644 ${FILESDIR}/controlkeys ${D}/etc/conf.d || die
+#EDS
+
+ dodoc AUTHORS ChangeLog INSTALL NEWS README
+ dohtml doc/*.html
+}
diff --git a/sys-apps/mkinitrd/Manifest b/sys-apps/mkinitrd/Manifest
new file mode 100644
index 0000000..a9398c5
--- /dev/null
+++ b/sys-apps/mkinitrd/Manifest
@@ -0,0 +1,16 @@
+AUX mdadm-ds-static.patch 666 SHA256 6db05f1624496648747b9af99b9d408a123518e9b3f8b8fd67533e661fe1a516 SHA512 ac2c5cac8bb65a634c6b55d5338d1353e5979b18bd27d2147d13df565d3cf021b4cf4755bf9d548ead0a8e779fd5e06792bfa7247e62fdd06b270eb2db542c49 WHIRLPOOL 24592e6af5f7ef304a124122ed9b7eaf68eb9df60bd88f94adbc93e9f9f49178f5d433f5e4f6640a9a529491fc167b931095738590ddba6846af1b4ad4ac2d02
+AUX mkinitrd-4.2.17-mdk.patch.bz2 21102 SHA256 984c6753e555225c6a7cc96f03d5d2d7671cea59d2a9e7cb35c60d3d70b979fa SHA512 659bbe3d2e15f3f59e3bb21d73b420c35c29c3e63e56c97faa15deeb6c3615005c3cc0e7577f7b8b44924499f8e8cb45492dd212422516ba6e52457feea13b73 WHIRLPOOL fa6e81996e450535d15d22e54433f3322d2ccddd17a7e6be5b2ee794bf6ed98f8b590ecfa872bfce1d9cf4e14341f3295a1827b6834c52a2c9b16ded05501db5
+AUX mkinitrd-6.0.93-ds.diff 4274 SHA256 1acd2d1b01074190915cff3e25a6a93cd787e0dc7e606949f13dcaf5958f77ca SHA512 dd9880bf594bfd131f0df94ebb904605cfdc4632ee19e552b051956bd4eefe3f7f2189234e03e49db3fcfe041ed6e8859173e71801cf411732a334b4394e8491 WHIRLPOOL f6de3273e95f5e45ce29c9e70f853634d41c213c718be35f323112d60ac21f6b94139187ce81794843910779101d00bbb13edb9dfd5e3a23d0302671c3f30e49
+AUX mkinitrd-ds-grubby_compile.patch 915 SHA256 5397da77b350a3976013cac5df4c8b82eafb684830266f3840532c73f9b08b22 SHA512 1349b7774b92ef954ea3a3421f67261ccc4f660cfb1a9d7d51e6026feb9f551f8e4f315af59c55ea88c2effda0baa4cd21976e89c51fb9ef8e42f29324d62576 WHIRLPOOL 73baafe4e863e0bae6d250a990e43a4ba7ad53d1760809544775a0a2f9895b3b4e4301242dfded244486e14e3912923a0a35cf17a90ea1ed69af802a4b2fc604
+AUX mkinitrd-ds-raid.patch 627 SHA256 d6bff22ef23a6f489d89cce2a8bb120698256890953077f5fbd87039c03c3bd9 SHA512 742fac5f4e6ec84a1b65a429235c73997cf4eb9438ab7cce31027616b8a488a702e50004ad752de9404a6ff57528c72eaa4ad21e07bfce1deae812558db96d74 WHIRLPOOL 16784b8b4cf92e3cbe536288e289dde49503827c7ba3d35b52cb0bd6ad9619fd50c025c6f78b3308d37a57a0a1c87fd52cbd395001a54a0d2201680d747efb87
+AUX mkinitrd-ds-vitalsunion.diff 1724 SHA256 2767e5d0b800a789e061d1742a0a46bf8841339db6656647089845e72c79d1fe SHA512 f212f5dfe69eaefaa0c1d2d9294203d64572a6bb8dce7f88ad2380f10b4141985a2acdee62301a1867cf24ac6eedf479adaf79790f0eb41e5335ff6af9f16e5c WHIRLPOOL 887bd54939b5e428dbb4a6759e7580908c6782cb84b8fb06e9fa9406b97a510179f943a9b6bac214a07be7b5986068f6e0119a297b0e2b8e0300f7c2510f4d6b
+AUX mkinitrd-ds.patch 1440 SHA256 d322997e986cfd4d7510611dfada8a14f934da277aeac9a0af5334d9490557ac SHA512 9945e9e129234becbc93431e6777e3af14cef7afd1cd88d1bbe00040070f91bace43770baf9656c1bc92d0fd8c7143d92d76d4c33567baf8f9844205313ab504 WHIRLPOOL 14ede0b767dfec82653e05a0f9f7a0a2c551345cbab8a9ef2c68045ba4f797d513be799b7d744f303cfe929e4cc7ae34f532e1d64d8a6e0af5ab85bb9e78ff1a
+AUX mkinitrd-lvm_statics.diff 591 SHA256 27112716e4d4be34681341c5c1ef72466f236de8b1042685fad6dd33ed365c24 SHA512 197e54d049a7ffa7202bb88838fd70b7cf68653fcfe0d9da0e723783dd7798f3637ed9b3ab40aaf09fcd9ea6d6d6a82b6b9c4e46776f1c28564f5300da9fcb17 WHIRLPOOL c4f261d40fd544bd6a0341aa4130e80c155a83b907ee2c05964e8112f29c24e7cba69e53f089505aa0562bb0259d7d5fcb2d9c2e644c21ecbbfc4da1dfeade47
+AUX mkinitrd-mdk-patches-6.0.93.tar.bz2 21199 SHA256 77ba2883898df0bd941f570f3159d7c1bc7196deeadd83ebaef4fcb50654bfaf SHA512 9c2035ebccd2502414b71809e1c63951cbcf25aaf8341e84e87798dbf50231b60c742d9c1b569c3e854e6ba09946bb56824b367a09be7fc4b19281e2a084c406 WHIRLPOOL 9c4c5f414dc101a2c6411ed99e472913e6a491b0b1b9bf6431bc47588d5b3723b717bbfb57ae1dd02c3280dc32a0317d06bdb42fb5d4b5774cf3d83520143200
+AUX mkinitrd-swsusp2.patch 572 SHA256 ff4ba1a38616f5a30895b1eb8c7f80a0fcee021a17a07fdf1048bd1f5dc503ea SHA512 6a28d0d6558e6f5dc0faad850b8a090084fbfad00e68b7224fa4ad11aeaf9f374a35e8b702eeded1c78595f07c8ac730258fb1f765c36d1bdd256afb513018bc WHIRLPOOL e924736bfe8d510508b0ae3b68a9a728797a3064a660e833eef8697b56511a8ef0bf8408a6d28a08e5e5baa16b7bb46f193d1a71a1d8ac5ff74b174a9f188d67
+AUX nash-ds-remount.patch 1970 SHA256 9352e187e1cc4e2244e7e81389794f2d9c7c6b35f34d9c9b5001b8ca69b96c91 SHA512 bc06519abe9563895c5a54ad51ab9dfc117ef1c5b429649bdc94ee936c7cd021cfd1708dd2193e8edec972868e22bd917fe37d267ab821285f316efdc372ff06 WHIRLPOOL aac4dec3a51dd3f8135f8c38332d0c7cd6a1d078739962b9718077066780a46e4defb582765b85be1524ac656c6256a19da82b56ad7bff69e1fbc1fb51eff2d2
+DIST mdadm-2.1.tar.bz2 103201 SHA256 4a963abf294ca18eee47940c14a01101694f1653112f19c90dc332e9fe24ee2e SHA512 adb1d460ebfe22caaa3aefa7686df4b468c65bd08323edd0bf1728736859df2d369b0f4fd1e13ff2905c9d6d7181a38e99b61fec442e930efcc2d0b7e776eb4a WHIRLPOOL 7400d7b5d304a849ceba762b91bd5f6a628cb5ac111dd7ed7e018ab71363dc8c8b5e330a98ef3f7d450896c8991b39e3c0c67aa30b9e782ead69355204973d76
+DIST mkinitrd-4.2.17.tar.bz2 65568 SHA256 998dd8f89d6ff6d8ea31b922045574d2d5b344590ef39e7ed4fe277cd96811f5 SHA512 8bf3b65543cf167d8c5e74b058003322b3d0e23620a98714a7b819ebbab56e03d9213611fc1bf56a5063d10e3ef341f79e89e0af987db2ea80e71e5355febf49 WHIRLPOOL 460b290ef10ccaedfed5af283c1eab1f804e533e4914ba06c914c768fb94daf3dac734edb769b6204546360499140872c2812c97d2d793469a676afa3b7fd59e
+DIST mkinitrd-6.0.93.tar.bz2 124410 SHA256 7aeaf2e9ab1f78070173e2666dd2b6501cf7d39d9617611b3dc6b38fe083b68d SHA512 080019cffd561e00ca055528265fd30dd475e6fc82e0676ca153ab388aa2f731cd8929822d06fc6fec2f770eb1577e592e99b247e64985c4df6f3b8d4167b9e7 WHIRLPOOL 9fe945433124155b4d0b98ab275030dbbfa831c7a50f26e824821fb2fa5d62cd44ac566a3708ea0ae3e66b7a7ac6d9d243d178f18594eb27b891f12c2a172efd
+EBUILD mkinitrd-4.2.17-r3.ebuild 1871 SHA256 19dd0003e48065cfab52fb61662e6b6d765a4fb9a5b95ed30b489b87a4d88391 SHA512 d53c4d200e56b902e158126be0bfb55f8365181aad5abb73f9bf9b149e2a18c4b045b65ed60bb513b7f8e7d510fe998c43a620035308832ea24ae0ee581986ca WHIRLPOOL fc6973c95f7c78903f43d07c2f954c81d18c9cb6160fc58319f2ce93a649becd6a1bb7f0b3f3805202498c62402c12a51c0cde04e6506c1301f0ccb11da9cd35
+EBUILD mkinitrd-6.0.93-r1.ebuild 1152 SHA256 099d59d9505e63ed9effe1fc2102352fc3b50e22d41138e5d242af236e2cdf67 SHA512 2f1c62e3e87c53d5029d64d98fcf8b944a294ca5d8e7b153e27cc9322fffdf1180abebea26b3635f57bbad8162e5fb7e4fa200c1bc2fda263e773c04dbd996d0 WHIRLPOOL 0da5bda7c1a1afd68201f81c45be363af0c4825d8f8bc2a1bce2f87f0619dc743b05c831305965f8829c1c62000ed7c2998a3150e11b0642c89c42dbe43f19ce
diff --git a/sys-apps/mkinitrd/files/mdadm-ds-static.patch b/sys-apps/mkinitrd/files/mdadm-ds-static.patch
new file mode 100644
index 0000000..bd6afb4
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mdadm-ds-static.patch
@@ -0,0 +1,22 @@
+diff -dPNur mdadm-2.1/Makefile mdadm-2.1-new/Makefile
+--- mdadm-2.1/Makefile 2005-09-05 00:54:55.000000000 +0000
++++ mdadm-2.1-new/Makefile 2006-01-05 16:45:15.000000000 +0000
+@@ -39,15 +39,15 @@
+
+ CC = $(CROSS_COMPILE)gcc
+ CXFLAGS = -ggdb
+-CWFLAGS = -Wall -Werror -Wstrict-prototypes
++CWFLAGS = -Wall -Wstrict-prototypes
+ SYSCONFDIR = /etc
+ CONFFILE = $(SYSCONFDIR)/mdadm.conf
+ MAILCMD =/usr/sbin/sendmail -t
+ CFLAGS = $(CWFLAGS) -DCONFFILE=\"$(CONFFILE)\" $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\"
+
+ # If you want a static binary, you might uncomment these
+-# LDFLAGS = -static
+-# STRIP = -s
++LDFLAGS = -static
++STRIP = -s
+
+ INSTALL = /usr/bin/install
+ DESTDIR =
diff --git a/sys-apps/mkinitrd/files/mkinitrd-4.2.17-mdk.patch.bz2 b/sys-apps/mkinitrd/files/mkinitrd-4.2.17-mdk.patch.bz2
new file mode 100644
index 0000000..2adced7
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-4.2.17-mdk.patch.bz2
Binary files differ
diff --git a/sys-apps/mkinitrd/files/mkinitrd-6.0.93-ds.diff b/sys-apps/mkinitrd/files/mkinitrd-6.0.93-ds.diff
new file mode 100644
index 0000000..a9fcd0a
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-6.0.93-ds.diff
@@ -0,0 +1,164 @@
+diff -dPNur mkinitrd-6.0.93-patched/functions mkinitrd-6.0.93-patched-ds/functions
+--- mkinitrd-6.0.93-patched/functions 2012-11-19 23:57:17.000000000 +0100
++++ mkinitrd-6.0.93-patched-ds/functions 2012-11-19 23:59:42.000000000 +0100
+@@ -347,6 +347,15 @@
+ resolved="$items"
+ }
+
++get_numeric_dev() {
++(
++ fmt="%d:%d"
++ if [ "$1" = "hex" ]; then
++ fmt="%x:%x"
++ fi
++ ls -lH "$2" | awk '{ sub(/,/, "", $5); printf("'"$fmt"'", $5, $6); }'
++) 2>/dev/null
++}
+
+
+ # vim:ts=8:sw=4:sts=4:et
+diff -dPNur mkinitrd-6.0.93-patched/mkinitrd mkinitrd-6.0.93-patched-ds/mkinitrd
+--- mkinitrd-6.0.93-patched/mkinitrd 2012-11-19 23:57:17.000000000 +0100
++++ mkinitrd-6.0.93-patched-ds/mkinitrd 2012-11-20 00:05:55.000000000 +0100
+@@ -48,8 +48,6 @@
+ PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH
+ export PATH
+
+-. /etc/rc.d/init.d/functions
+-
+ # Set the umask. For iscsi, the initrd can contain plaintext
+ # password (chap secret), so only allow read by owner.
+ umask 077
+@@ -111,6 +109,7 @@
+ fi
+
+ $cmd "usage: `basename $0` [--version] [--help] [-v] [-f] [--preload <module>]"
++ $cmd " [--omit-ata-modules] [--busybox]"
+ $cmd " [--force-scsi-probe | --omit-scsi-modules]"
+ $cmd " [--omit-ide-modules]"
+ $cmd " [--image-version] [--force-raid-probe | --omit-raid-modules]"
+@@ -315,6 +314,7 @@
+ if echo $PWD | grep -q /virtio-pci/ ; then
+ findmodule virtio_pci
+ fi
++
+ while [ "$PWD" != "/sys/devices" ]; do
+ deps=
+ if [ -f modalias ]; then
+@@ -325,7 +325,8 @@
+ moduledep $MODALIAS
+ unset MODALIAS
+ fi
+-
++
++ if [ -z "$noata" ] ; then
+ [ -z "$deps" -a -L driver/module ] && \
+ deps=$(basename $(readlink driver/module))
+ for driver in $deps ; do
+@@ -335,6 +336,7 @@
+ [ "$driver" = "ata_piix" ] && findmodule ahci
+ [ "$driver" = "ahci" ] && findmodule ata_piix
+ done
++ fi
+ cd ..
+ done
+ }
+@@ -883,6 +885,12 @@
+ fi
+ PREMODS="$PREMODS $modname"
+ ;;
++ --omit-ata-modules)
++ noata=1
++ ;;
++ --busybox)
++ busybox=1
++ ;;
+ --omit-scsi-modules)
+ PRESCSIMODS=""
+ noscsi=1
+@@ -1289,9 +1297,14 @@
+ vecho "Building initrd in $MNTIMAGE"
+ inst /sbin/nash "$MNTIMAGE" /bin/nash
+ inst /sbin/modprobe "$MNTIMAGE" /bin/modprobe
+-inst /sbin/rmmod "$MNTIMAGE" /bin/rmmod
++#inst /sbin/rmmod "$MNTIMAGE" /bin/rmmod
+ inst /bin/ln "$MNTIMAGE"
+
++if [ -n "$busybox" ]; then
++ inst /bin/bb "$MNTIMAGE"
++ inst /bin/busybox "$MNTIMAGE"
++fi
++
+ if [ -e /etc/fstab.sys ]; then
+ inst /etc/fstab.sys "$MNTIMAGE"
+ fi
+@@ -1599,10 +1612,12 @@
+ /bin/ln -s fb0 /dev/fb
+ EOF
+
++if [ -x /bin/plymouthd ]; then
+ emit "/bin/plymouthd --attach-to-session"
+
+ emit "echo Setting up hotplug."
+ emit "hotplug"
++fi
+
+ # If we have drm loaded, include modesetting drivers
+ if [ "x$PROBE" == "xyes" ]; then
+@@ -1622,9 +1637,13 @@
+ EOF
+ fi
+
++if [ -x /lib/udev/console_init ]; then
+ [ -n "$I18N" ] && emit "/lib/udev/console_init tty0"
++fi
+
++if [ -x /bin/plymouthd ]; then
+ emit "plymouth --show-splash"
++fi
+
+ if [ -x /usr/libexec/plymouth/plymouth-populate-initrd ]; then
+ /usr/libexec/plymouth/plymouth-populate-initrd $(get_verbose) -t "$MNTIMAGE"
+@@ -1699,7 +1718,10 @@
+ emit "echo waiting for encrypted device $1 to appear (timeout 1min)"
+ emit "waitdev --timeout=60000000 $1"
+ emit "mkblkdevs"
++
++ if [ -x /bin/plymouthd ]; then
+ emit "plymouth ask-for-password --command \$LUKSUUID"
++ fi
+ }
+
+ for cryptdev in ${!cryptopart@} ; do
+@@ -1750,7 +1772,10 @@
+
+ emit "echo Mounting root filesystem."
+ emit "mount /sysroot"
++
++if [ -x /bin/plymouthd ]; then
+ emit "cond -ne 0 plymouth --hide-splash"
++fi
+
+ if [ -n "$loopfs" ]; then
+ emit "Cleaning up loop mount."
+@@ -1766,7 +1791,9 @@
+ fi
+
+ emit "loadpolicy"
++if [ -x /bin/plymouthd ]; then
+ emit "plymouth --newroot=/sysroot"
++fi
+ emit "echo Switching to new root and running init."
+
+ if [ ! -z "$BOOTCHART" ]; then
+@@ -1792,6 +1819,10 @@
+ emit "/bin/sleep 1s"
+ fi
+
++if [ -n "$busybox" ]; then
++ emit "/bin/bb"
++fi
++
+ emit "switchroot"
+ emit "echo Booting has failed."
+ emit "sleep -1"
diff --git a/sys-apps/mkinitrd/files/mkinitrd-ds-grubby_compile.patch b/sys-apps/mkinitrd/files/mkinitrd-ds-grubby_compile.patch
new file mode 100644
index 0000000..c5502d8
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-ds-grubby_compile.patch
@@ -0,0 +1,27 @@
+diff -dPNur mkinitrd-4.2.17/grubby/grubby.c mkinitrd-4.2.17-ds/grubby/grubby.c
+--- mkinitrd-4.2.17/grubby/grubby.c 2005-04-05 17:39:21.000000000 +0200
++++ mkinitrd-4.2.17-ds/grubby/grubby.c 2010-01-30 00:21:16.000000000 +0100
+@@ -239,7 +239,6 @@
+ struct singleEntry * findEntryByPath(struct grubConfig * cfg,
+ const char * path, const char * prefix,
+ int * index);
+-static char * strndup(char * from, int len);
+ static int readFile(int fd, char ** bufPtr);
+ static void lineInit(struct singleLine * line);
+ static void lineFree(struct singleLine * line);
+@@ -249,15 +248,6 @@
+ struct configFileInfo * cfi);
+ static char * getRootSpecifier(char * str);
+
+-static char * strndup(char * from, int len) {
+- char * to;
+-
+- to = malloc(len + 1);
+- strncpy(to, from, len);
+- to[len] = '\0';
+-
+- return to;
+-}
+
+ static char * sdupprintf(const char *format, ...)
+ #ifdef __GNUC__
diff --git a/sys-apps/mkinitrd/files/mkinitrd-ds-raid.patch b/sys-apps/mkinitrd/files/mkinitrd-ds-raid.patch
new file mode 100644
index 0000000..3eced0a
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-ds-raid.patch
@@ -0,0 +1,15 @@
+diff -dPNur mkinitrd-4.2.17/mkinitrd mkinitrd-4.2.17-new/mkinitrd
+--- mkinitrd-4.2.17/mkinitrd 2006-01-05 17:11:25.000000000 +0000
++++ mkinitrd-4.2.17-new/mkinitrd 2006-01-05 16:54:20.000000000 +0000
+@@ -1015,8 +1015,11 @@
+ if [ -x /sbin/mdassemble ]; then
+ cp $verbose -aL /sbin/mdassemble $MNTIMAGE/sbin
+ raidstart_command="mdassemble"
++ elif [ -x /sbin/mdadm.static ]; then
++ inst /sbin/mdadm.static $MNTIMAGE/sbin/mdadm
++ raidstart_command="mdadm -A -s"
+ elif [ -x /sbin/mdadm ]; then
+ inst /sbin/mdadm $MNTIMAGE/sbin
+ raidstart_command="mdadm -A -s"
+ else
+ raidstart_command="raidautorun /dev/md${md}"
diff --git a/sys-apps/mkinitrd/files/mkinitrd-ds-vitalsunion.diff b/sys-apps/mkinitrd/files/mkinitrd-ds-vitalsunion.diff
new file mode 100644
index 0000000..994e1cc
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-ds-vitalsunion.diff
@@ -0,0 +1,65 @@
+diff -dPNur mkinitrd-6.0.93/nash/vitals.h mkinitrd-6.0.93-new/nash/vitals.h
+--- mkinitrd-6.0.93/nash/vitals.h 2009-09-02 10:41:45.000000000 +0200
++++ mkinitrd-6.0.93-new/nash/vitals.h 2012-11-19 20:07:47.000000000 +0100
+@@ -39,41 +39,33 @@
+
+ union {
+ /* DEV_TYPE_DISK */
+- struct {
+- char *unique_id;
+- char *disk_device_node;
+- char *disk_model;
+- char *disk_vendor;
+- char *disk_probe_module;
+- char *disk_probe_name;
+- };
+ /* DEV_TYPE_DM_MPATH, DEV_TYPE_DM_RAID */
+ struct {
+ char *dmname;
+ };
+- /* DEV_TYPE_LVM2_PV */
+- struct {
+- char *unique_id;
+- };
+- /* nothing for DEV_TYPE_PARTITION */
+- /* DEV_TYPE_LVM2_VG */
+- struct {
+- char *unique_id;
+- char *vg_name;
+- };
+- /* DEV_TYPE_LVM2_LV */
+- struct {
+- char *unique_id;
+- char *lv_name;
+- };
+- /* DEV_TYPE_FS */
+ struct {
+ char *unique_id;
+- char *fs_type;
+- char *fs_label;
+- char *fs_options;
++ union {
++ struct {
++ char *disk_device_node;
++ char *disk_model;
++ char *disk_vendor;
++ char *disk_probe_module;
++ char *disk_probe_name;
++ };
++ struct {
++ char *vg_name;
++ };
++ struct {
++ char *fs_type;
++ char *fs_label;
++ char *fs_options;
++ };
++ struct {
++ char *lv_name;
++ };
++ };
+ };
+- /* XXX FIXME: DEV_TYPE_MD_RAID */
+ };
+ };
+
diff --git a/sys-apps/mkinitrd/files/mkinitrd-ds.patch b/sys-apps/mkinitrd/files/mkinitrd-ds.patch
new file mode 100644
index 0000000..10d4871
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-ds.patch
@@ -0,0 +1,42 @@
+diff -dPNur mkinitrd-4.2.17/mkinitrd mkinitrd-4.2.17-csa/mkinitrd
+--- mkinitrd-4.2.17/mkinitrd 2005-10-28 07:35:15.000000000 +0000
++++ mkinitrd-4.2.17-csa/mkinitrd 2005-10-28 07:40:56.000000000 +0000
+@@ -61,6 +61,8 @@
+
+ [ -f /etc/sysconfig/mkinitrd ] && source /etc/sysconfig/mkinitrd
+
++mount /boot &> /dev/null
++
+ usage () {
+ echo "usage: `basename $0` [--version] [-v] [-f] [--preload <module>]" >&2
+ echo " [--with=<module>] [--omit-scsi-modules] [--omit-raid-modules]" >&2
+@@ -1134,6 +1136,8 @@
+ echo "pivot_root /sysroot /sysroot/initrd" >> $RCFILE
+ [ -n "$kernel25" ] && echo "umount /initrd/sys" >> $RCFILE
+ echo "umount /initrd/proc" >> $RCFILE
++ echo "umount /initrd/dev" >> $RCFILE
++ echo "umount /initrd" >> $RCFILE
+ fi
+ else
+ [ -n "$readonly" ] && echo "umount /dev" >> $RCFILE
+@@ -1154,7 +1158,7 @@
+
+ case $initrdfs in
+ ext2|ext3|minix)
+- for i in `/bin/find $MNTIMAGE -printf '%k\n'`; do
++ for i in `find $MNTIMAGE -printf '%k\n'`; do
+ IMAGESIZE=$[IMAGESIZE + $i]
+ NB_INODES=$[NB_INODES + 1]
+ done
+diff -dPNur mkinitrd-4.2.17/nash/nash.c mkinitrd-4.2.17-csa/nash/nash.c
+--- mkinitrd-4.2.17/nash/nash.c 2005-10-28 07:35:15.000000000 +0000
++++ mkinitrd-4.2.17-csa/nash/nash.c 2005-10-28 07:35:22.000000000 +0000
+@@ -1078,7 +1078,7 @@
+ return 1;
+ }
+
+- if (umount(path)) {
++ if (umount2(path,MNT_DETACH)) {
+ printf("umount %s failed: %d\n", path, errno);
+ return 1;
+ }
diff --git a/sys-apps/mkinitrd/files/mkinitrd-lvm_statics.diff b/sys-apps/mkinitrd/files/mkinitrd-lvm_statics.diff
new file mode 100644
index 0000000..c690b9b
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-lvm_statics.diff
@@ -0,0 +1,15 @@
+diff -urN mkinitrd-3.5.7.orig/mkinitrd mkinitrd-3.5.7/mkinitrd
+--- mkinitrd-3.5.7.orig/mkinitrd 2003-07-09 18:26:02.000000000 -0500
++++ mkinitrd-3.5.7/mkinitrd 2003-10-25 11:56:32.083678110 -0500
+@@ -534,9 +534,8 @@
+ cp $verbose --parents -a $pv $MNTIMAGE/
+ done
+
+- inst /sbin/vgwrapper "$MNTIMAGE/bin/vgwrapper"
+- ln "$MNTIMAGE/bin/vgwrapper" "$MNTIMAGE/bin/vgscan"
+- ln "$MNTIMAGE/bin/vgwrapper" "$MNTIMAGE/bin/vgchange"
++ inst /sbin/vgscan.static "$MNTIMAGE/bin/vgscan"
++ inst /sbin/vgchange.static "$MNTIMAGE/bin/vgchange"
+
+ mknod $MNTIMAGE/dev/lvm b 109 0
+ fi
diff --git a/sys-apps/mkinitrd/files/mkinitrd-mdk-patches-6.0.93.tar.bz2 b/sys-apps/mkinitrd/files/mkinitrd-mdk-patches-6.0.93.tar.bz2
new file mode 100644
index 0000000..9bc6425
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-mdk-patches-6.0.93.tar.bz2
Binary files differ
diff --git a/sys-apps/mkinitrd/files/mkinitrd-swsusp2.patch b/sys-apps/mkinitrd/files/mkinitrd-swsusp2.patch
new file mode 100644
index 0000000..b28be2b
--- /dev/null
+++ b/sys-apps/mkinitrd/files/mkinitrd-swsusp2.patch
@@ -0,0 +1,13 @@
+diff -dPNur mkinitrd-4.2.17/mkinitrd mkinitrd-4.2.17-new/mkinitrd
+--- mkinitrd-4.2.17/mkinitrd 2006-05-20 05:49:28.000000000 +0500
++++ mkinitrd-4.2.17-new/mkinitrd 2006-05-20 05:52:39.000000000 +0500
+@@ -975,6 +975,9 @@
+
+ echo "echo Mounting /proc filesystem" >> $RCFILE
+ echo "mount -t proc /proc /proc" >> $RCFILE
++echo "mount -n -o remount,ro /" >>$RCFILE
++echo "echo > /proc/suspend2/do_resume" >>$RCFILE
++echo "mount -n -o remount,rw /" >>$RCFILE
+ if [ -n "$kernel25" ];then
+ echo "echo Mounting sysfs" >> $RCFILE
+ echo "mount -t sysfs none /sys" >> $RCFILE
diff --git a/sys-apps/mkinitrd/files/nash-ds-remount.patch b/sys-apps/mkinitrd/files/nash-ds-remount.patch
new file mode 100644
index 0000000..c403535
--- /dev/null
+++ b/sys-apps/mkinitrd/files/nash-ds-remount.patch
@@ -0,0 +1,85 @@
+diff -dPNur nash/.cvsignore nash-new/.cvsignore
+--- nash/.cvsignore 2002-06-24 04:33:33.000000000 +0500
++++ nash-new/.cvsignore 1970-01-01 04:00:00.000000000 +0400
+@@ -1 +0,0 @@
+-nash
+diff -dPNur nash/nash.c nash-new/nash.c
+--- nash/nash.c 2005-06-24 20:41:11.000000000 +0500
++++ nash-new/nash.c 2006-05-20 16:33:47.000000000 +0500
+@@ -44,6 +44,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/reboot.h>
+ #include <termios.h>
++#include <mntent.h>
+
+ #include <asm/unistd.h>
+
+@@ -272,6 +273,8 @@
+ int rc = 0;
+ int flags = MS_MGC_VAL;
+ char * newOpts;
++ char *fsTypeSpace;
++ char *deviceSpace;
+
+ cmd = getArg(cmd, end, &device);
+ if (!cmd) {
+@@ -307,15 +310,9 @@
+ }
+
+ if (!(cmd = getArg(cmd, end, &mntPoint))) {
+- printf("mount: missing mount point\n");
+- return 1;
+- }
+-
+- if (!fsType) {
+- printf("mount: filesystem type expected\n");
+- return 1;
+- }
+-
++ mntPoint = device;
++ device = NULL;
++ } else
+ if (cmd < end) {
+ printf("mount: unexpected arguments\n");
+ return 1;
+@@ -382,6 +379,40 @@
+ options = newOpts;
+ }
+
++ if (((!device)||(!fsType))&&(flags&MS_REMOUNT)) {
++ FILE *mounts;
++ struct mntent *record;
++
++ mounts = setmntent("/proc/mounts", "r");
++ if (mounts) {
++ while ((record = getmntent(mounts)) != NULL) {
++ if (!strcmp(record->mnt_dir, mntPoint)) {
++ deviceSpace = alloca(strlen(record->mnt_fsname)+1);
++ fsTypeSpace = alloca(strlen(record->mnt_type)+1);
++ if ((!deviceSpace)||(!fsTypeSpace)) break;
++ strcpy(deviceSpace, record->mnt_fsname);
++ strcpy(fsTypeSpace, record->mnt_type);
++ device = deviceSpace;
++ fsType = fsTypeSpace;
++ break;
++ }
++ }
++
++ endmntent(mounts);
++ }
++ }
++
++ if (!device) {
++ printf("mount: missing mount point\n");
++ return 1;
++ }
++
++ if (!fsType) {
++ printf("mount: filesystem type expected\n");
++ return 1;
++ }
++
++
+ if (!strncmp("LABEL=", device, 6)) {
+ int major, minor;
+ char * devName;
diff --git a/sys-apps/mkinitrd/mkinitrd-4.2.17-r3.ebuild b/sys-apps/mkinitrd/mkinitrd-4.2.17-r3.ebuild
new file mode 100644
index 0000000..8fb632b
--- /dev/null
+++ b/sys-apps/mkinitrd/mkinitrd-4.2.17-r3.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/mkinitrd/mkinitrd-4.2.0.3.ebuild,v 1.2 2005/08/29 01:56:57 vapier Exp $
+
+inherit eutils flag-o-matic
+
+MDVER="2.1"
+
+DESCRIPTION="Tools for creating initrd images"
+HOMEPAGE="http://www.redhat.com/"
+SRC_URI="http://dside.dyndns.org/files/darklin/mkinitrd/${P}.tar.bz2
+ mirror://kernel/linux/utils/raid/mdadm/mdadm-${MDVER}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="selinux"
+
+DEPEND="dev-libs/popt
+ virtual/os-headers"
+RDEPEND="app-shells/bash"
+PDEPEND="selinux? ( sys-apps/policycoreutils )"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ cd "${S}"
+ unpack mdadm-${MDVER}.tar.bz2
+ tar xjf ${FILESDIR}/mkinitrd-insmod-3.5.24.tar.bz2
+ tar xjf ${FILESDIR}/mdadm-2.1.tar.bz2
+ epatch "${FILESDIR}"/mkinitrd-${PV}-mdk.patch.bz2 || die
+ epatch "${FILESDIR}"/mkinitrd-ds.patch || die
+ epatch "${FILESDIR}"/mkinitrd-ds-raid.patch || die
+ epatch "${FILESDIR}"/mkinitrd-swsusp2.patch || die
+#SDS
+ epatch "${FILESDIR}"/mkinitrd-ds-grubby_compile.patch || die
+#EDS
+ epatch "${FILESDIR}"/nash-ds-remount.patch || die
+
+ # bug 29694 -- Change vgwrapper to static vgscan and vgchange
+# epatch "${FILESDIR}"/mkinitrd-lvm_statics.diff
+ sed -i \
+ -e "/^CFLAGS/s: -Werror : ${CFLAGS} :" \
+ -e "/^LDFLAGS/s:$: ${LDFLAGS}:" \
+ grubby/Makefile nash/Makefile
+
+ cd mdadm-* || die
+ epatch "${FILESDIR}"/mdadm-ds-static.patch || die
+}
+
+src_compile() {
+ cd "${S}"/nash
+ emake || die "nash compile failed."
+ cd "${S}"/grubby
+ emake || die "grubby compile failed."
+ cd "${S}"/mdadm-*
+ emake || die "mdadm compile failed."
+
+}
+
+src_install() {
+ into /
+ dosbin grubby/grubby nash/nash mkinitrd || die
+ install -c -m 755 mdadm-*/mdadm ${D}/sbin/mdadm.static || die
+ doman grubby/grubby.8 nash/nash.8 mkinitrd.8
+}
diff --git a/sys-apps/mkinitrd/mkinitrd-6.0.93-r1.ebuild b/sys-apps/mkinitrd/mkinitrd-6.0.93-r1.ebuild
new file mode 100644
index 0000000..418a001
--- /dev/null
+++ b/sys-apps/mkinitrd/mkinitrd-6.0.93-r1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/mkinitrd/mkinitrd-4.2.0.3.ebuild,v 1.2 2005/08/29 01:56:57 vapier Exp $
+
+EAPI=4
+inherit eutils flag-o-matic
+
+MDVER="2.1"
+
+DESCRIPTION="Tools for creating initrd images"
+HOMEPAGE="http://www.redhat.com/"
+SRC_URI="http://dside.dyndns.org/files/darklin/mkinitrd/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="selinux"
+
+DEPEND="dev-libs/popt
+ virtual/os-headers"
+RDEPEND="app-shells/bash"
+PDEPEND="selinux? ( sys-apps/policycoreutils )"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+ cd "${S}"
+ tar xjf "${FILESDIR}"/mkinitrd-mdk-patches-6.0.93.tar.bz2
+ for name in patches/*; do
+ epatch $name || die
+ done
+ epatch "${FILESDIR}"/mkinitrd-ds-vitalsunion.diff || die
+ epatch "${FILESDIR}"/mkinitrd-6.0.93-ds.diff || die
+ find . -name "Makefile*" -exec sed -i 's|-Werror||g' {} \;
+ sed -i -e 's|CFLAGS\s*[\?]=|CFLAGS +=|g' -e 's|LDFLAGS\s*[\?]=|LDFLAGS +=|g' Makefile.inc
+}
+
+src_compile() {
+ emake || die "compile failed."
+
+}
+
+src_install() {
+ into /
+ emake DESTDIR="${D}" install
+}
+
diff --git a/sys-apps/util-linux/Manifest b/sys-apps/util-linux/Manifest
new file mode 100644
index 0000000..077c2c7
--- /dev/null
+++ b/sys-apps/util-linux/Manifest
@@ -0,0 +1,60 @@
+AUX agetty-ds-x509-v2.patch 721 RMD160 113b33f501debef78467168e406359b2730b58c8 SHA1 bc90a3b9aef320f2af92623bd56475a8351b0055 SHA256 66e64dcb425fc52d2e1e97e06cf0ea0d6ad9041e751f757b307e27a4f506833d
+AUX agetty-ds-x509.patch 524 RMD160 7a3025e95c799c3c2a9129909038f81d5834afe2 SHA1 30ddb5d2d820ea744cd1b72ff4e00ee1805c751f SHA256 d9dca553a1b685a4c82cc47d558ed31ad1d7b4db1800b16ab90e890915c78119
+AUX crypto-loop.confd 412 RMD160 5e65febe9641a8362078fdae39b4ac955fb2e63b SHA1 2f881a24ff67115e74de7a11c66a34a745060864 SHA256 188c945e5e6c54cb14874057c625ff30b72fb33d3d5648e53de2f231a3375600
+AUX crypto-loop.initd 1722 RMD160 a4015562eb8ac2946082acd54599dc0ad95ca2f1 SHA1 c33d9f04ba9b3ba778bf91404ef559cbc9a8a24f SHA256 6acbd91fdda145b511f380c6d01d0fb9049500d78a109ee54a305e7986b6de88
+AUX no-symlink-resolve.patch 316 RMD160 a38941174577c046e982d696b245e8c64d491caa SHA1 8cb06d4ed19ab4330b1e3841d0f824d19ea66a7c SHA256 e02ba35bde41df4fcbf215a4598427711bd8104b883f9bd7aeab76c1c8741db9
+AUX util-linux-2.11z-01-nfsv4.dif 13442 RMD160 f133eb7c8f55fbe52e10a3554e1636118ec11ce4 SHA1 991efc046635640bbc12f88d67a42d5696e06f76 SHA256 51ab9fe2b76e08eb6d69af4f16e61478a706c3b43acd6540c2ad24bd1659a1b5
+AUX util-linux-2.11z-agetty-domainname-option.patch 1810 RMD160 68e18d4e3797a5765283a1ffe1bff962d2df90b9 SHA1 5fec0e6b34021c1dfc390192af3bbbef32c1124f SHA256 4f559a00e7a88e0aadafe47b3f3466545b79f69fe4caf747bdaf23836977083b
+AUX util-linux-2.11z-parallel-make.patch 369 RMD160 94ea7ab04a74c46f07fc3ca7a806a00b8c434f20 SHA1 98270d2606e0450ba0dc2095b3c557f6dec08f1f SHA256 61096f58f84e442accb8b21ae1ced40e45e6801ff8068d454281458af492837a
+AUX util-linux-2.11z-pic.patch 3056 RMD160 4606b0f94ec6aa57da5c788fddcc9ab06bb9f9ea SHA1 98f6a65d3d9cb83484ea3b4f94ddb7105073271d SHA256 a5b8250a18241ea2588d5a0260874f5c73ca0c68b0857649fc53c83d5753a427
+AUX util-linux-2.12-fat-LABEL-support.patch 11583 RMD160 322785e5d7cb450acb154b35de0921ab1d7e101b SHA1 81a5660ff2fc0c0b1c30f925aee898f982af847e SHA256 f642eec1f16865b4c4eb8449d61330d8931523370156d27ede86f8f859caaa1a
+AUX util-linux-2.12-gcloop.patch 3806 RMD160 2d218ec2b783e6e65694f9cc29341402217ccd2b SHA1 e7ca66f4edb8b7507ba1bc6e1e92904e98067099 SHA256 3d2284d6b0f020197c9dc8917fbd5c37433b715b200350b5f6acf9d03bd85f51
+AUX util-linux-2.12-kernel-2.6.patch 2964 RMD160 3a8bf0c6cbbe7f8d8456bd9d02eea0043edb977f SHA1 bb5a814a99456c128c7b959ddaa887d8336b9220 SHA256 91fdd6eefabff7852d838507bb621192e7dccc7c29e1bd4d91cc4fa9422d53f2
+AUX util-linux-2.12-mips-lseek.patch 897 RMD160 4ca2dc797bd8e7faadadf28dc0217b578340aebc SHA1 495a84fb96bcf87013e5a3be79943207e86052bb SHA256 42cc6723facdefe5819e3ec28a029ae05aef98f5a416fdbb599c8b14eb83d3df
+AUX util-linux-2.12-only-root-can-remount.patch 294 RMD160 897bd12e2bf5f512f5620544c8e6f66cabad9cd2 SHA1 0219c73bec3f4793b6d19e59349d4dd4f3d5177b SHA256 a965326ca67eb24afa9b1e0d0cb609513b4d2811346ae15e5a78f946f8221437
+AUX util-linux-2.12-selinux.diff.bz2 2558 RMD160 6e7554eb9caefd1c0d2550b3fb9e78ce31cfc8b9 SHA1 e5981aaa960b3d1de9c99eda16005061c8032c8f SHA256 4e7a6180ded067e64ef003e077e51378948ad16985e444f84995384c1df22798
+AUX util-linux-2.12-swapon-unistd.patch 289 RMD160 f29976818b5c99e3cec7f7fc7336265575737568 SHA1 6c1deea7c18187c58c03c537997a865a1af78272 SHA256 9fdf201f3133c3033020d69536ebc7395f753859e4fe93f5e0f3bd84ada9c99d
+AUX util-linux-2.12i-fat-LABEL-support.patch 2304 RMD160 6579f1481ddc14816a0a1052b2b0e0f978a25eb7 SHA1 c93c9e41b5c47c8d4d11392d292410d09008b671 SHA256 8310dd50cd983bd9e2772d66fc2ac7119a40915792d7ea975354b88beda75d74
+AUX util-linux-2.12i-ignore-managed.patch 506 RMD160 091357d90206b518e1e6f0d8a28ab539413a254a SHA1 edfa751318bcf08fcbcdad901eb8df39568d15d8 SHA256 2723ecca630c18e134a3ae8fff9bf24d0ba6daedcbdfa8e0329e880ddfa68043
+AUX util-linux-2.12i-nfsv4.patch 12854 RMD160 66339e3c99adddb610fe965044e675ea6e8a3096 SHA1 d0fa9474e1e64ec0aafc724d4fe584b6e53fd48e SHA256 498e5a74c44100581039e43727b2bfc9d71bb316afc70b7a940f4929327dc93b
+AUX util-linux-2.12i-pic.patch 2457 RMD160 3430454a22124f60c2e5318bb6c24909d27bcbbe SHA1 405f5e2743fffd0e12857050d7f757a93887c1e0 SHA256 eb539da0b8d200a349bfe91c2a8185e912f41b6b67d4f3cfb969949d3ceb6386
+AUX util-linux-2.12i-swapon-check-symlinks.patch 875 RMD160 ea68e335d0678638adc7e15446743480b39e465f SHA1 4be0093f42a1f2e902c59afaff4ef40f56f3c743 SHA256 e4acadddd3450c029997895d9c911b5f3d525cfd5555c5274069c2bcbbbcb335
+AUX util-linux-2.12p-swapon-check-symlinks.patch 864 RMD160 9ca2840fb9a04ef7b7fe86bc60e986a10dd47b7b SHA1 f8928303b6cc1c103d0223198b926f911fb97471 SHA256 068b87eb2d4b4852e3fff618a7f84de495e6bb3017f56b468de302f19a46f447
+AUX util-linux-2.12q-debian-10cfdisk.patch 1888 RMD160 82f4364ef3d078ab61514f348401faa3ca1b9cb2 SHA1 73ec1445161fc64d1fef9c0e3e2492ff6eb8d119 SHA256 872882d56336bbf43be36f9bf0a9fb0c924ee27f095e255b40cfccb087cdc0c1
+AUX util-linux-2.12q-dont-umask.patch 439 RMD160 c7d2c859d6a27245e1db4aeb1f283a56db20beac SHA1 5845a0624db9ae646686bd36ea0c0225b5488d5c SHA256 27996d8bf978ef0c64afbab016e8a8f1071098d29d870092096e1c6503ea8cec
+AUX util-linux-2.12q-i18n-update.patch 344 RMD160 1e44b6f2f316a4d347531a03c70810c247482cbf SHA1 5a1629cc2cf155a0129afbf51f6b4da9b54e4996 SHA256 f67208e85d26a583c7adfa3ff6adf719e5f169a71fcc0cf4b0355162bcdde847
+AUX util-linux-2.12q-more-fake-checks-v2.patch 1176 RMD160 c6e12be6f27f525fca82fb06497f1107d12c4c6b SHA1 8763ba812a6cf84ba32fe47ec43a3289141da5a2 SHA256 0b9a24fec469d35298b5d01ac7c4f32a7bbe8fffb8da296da0ebb118a0e900cf
+AUX util-linux-2.12q-no-m68k-fdisk.patch 239 RMD160 a9c7a57723a4178be0979ac4fd8a475de50454f1 SHA1 d0f714ffbcc6d0f42ac94cdb2533312f254cd1b4 SHA256 72ee456d16b3b614fb1d20ed4aa88f078f2a052f01e08807a5d8f71c59b698b2
+AUX util-linux-2.12q-umount-dont-write-mtab-with-remount.patch 467 RMD160 656bcbc50805f4ae28cb2315542b9ee26202d639 SHA1 a37cdfe43cf00ab1f923dc13c4777ee9447c8053 SHA256 0593594a97bcd676a4df29ed630c82cba09bf2860d4c25587f422a2b023c566b
+AUX util-linux-2.12q-update-mtab-when-moving.patch 1036 RMD160 0048dc70af427cdfcb5cb8429e8e7597d77fe2b0 SHA1 cf9d99adcff66d9eb9bb0058506b4fc5fe31674a SHA256 a9b00a859efa256a534e855bec049aa39d45cedf70ce6071da519502b7221c98
+AUX util-linux-2.12q-update_mtab-fixes.patch 2636 RMD160 6920226a18a14bcbe38a66de742b4e67f7c1c775 SHA1 2632cb3aaaed0b6cbe1b1f23ba049fb2614f0d26 SHA256 364dc5b2556d69ea8299eeea512e43fdebf486276c47925cbfbff3c8449a3ba5
+AUX util-linux-2.12q-use-update_mtab-for-fake.patch 546 RMD160 fada9ac9cb1fc76d51b5b49e193b6d08ef385e5a SHA1 3c540b354262107555f30bece515a1f3ea9dbbe1 SHA256 b9a883947be436346f41b3387c5fe10e17e832d16a586c9ddcecd0598757dcb3
+AUX util-linux-2.12r-HAVE_asm_page_h-loop-aes.patch 370 RMD160 6c428248445b8e55261f6dac8409f645b4aa0451 SHA1 74c51461c983cbe46a6f350714a75deb8813c8ee SHA256 bc30eb5c36b4af754b948d30c045c2fe5be107e5e113f81de0f582ae803f0db8
+AUX util-linux-2.12r-HAVE_asm_page_h.patch 320 RMD160 5946c033622c6d558c095ed218ba8a768f661d59 SHA1 32459a5e11beee46e16e3436c782ae50401872ad SHA256 24d4b6617892e7c51c27195fc23cb6161e1807354be690d6e5355a02bb40803d
+AUX util-linux-2.12r-cal-dumb-terminal.patch 824 RMD160 134349a02d588c601367cf6359722d42180d6a52 SHA1 03eda7ace8f1c91584d44a3479ca829a94cfb0c8 SHA256 ca25d6caf429996d6ab24169aad09e530fc78cbd6f65cb2c8307b50676603ba8
+AUX util-linux-2.12r-cracklib-words.patch 684 RMD160 d50da264733644c39e61e36407053ebc7ddf6dd5 SHA1 b64ccfe75819b488df4c87cb7bb59524a21e149c SHA256 694784331e989ff984b22b4c422ab735dba1e024b663449694bdf32e45ff2db0
+AUX util-linux-2.12r-fdisk-frame-pointers.patch 355 RMD160 e16e25ffd75a8e46fa2e4067b5178c7410491bad SHA1 b9dc762790482c963778fdfbc7fc59757720dc09 SHA256 afa3f0d16504f73db4ba4e5287e9b757da552e6751e58bd6dba9bcf380a2081a
+AUX util-linux-2.12r-no-_syscall.patch 1304 RMD160 e88ce3bca9cb36c26a45f3ccf7b9101e59583b32 SHA1 0c780486da014f6d306bbcdce42f612c581b9631 SHA256 e1a5f7f863f3fe4a2ab814999f6e046a79291e981795aee5f81cd81976b46024
+AUX util-linux-2.12r-umount-no-special.patch 329 RMD160 431eda56bb98ff317c9a2f224369494306c14a83 SHA1 b0ce5deb5a26c0e32c9f91c3e99f8aea4425c03d SHA256 3d84e1b6e9df4e5c8a0b38f2f0afdf524f5d7435abdf4420e9264e15181bf217
+AUX util-linux-2.12r-umount-nosysfs.patch 432 RMD160 cfb2ac318ac2d821d30b1c4d065d1d361845034a SHA1 c0fca08a9d22c2bc761d0030cde6c054014c7a91 SHA256 d7b3c5f7268e6ecb086bfb188f01f544099079ed9b4ca0f8d87e97269cb91976
+AUX util-linux-2.13-ioprio-syscalls.patch 353 RMD160 a71a1423c1b6fa96320285d8a29fd1963c18d8d1 SHA1 bfc15114d82572e87e02486cf2d91d4ad82a3e57 SHA256 1f8cf8fb0da439072a423f1161ae401ea348c84e8b16811161ce3e46ef9d1aed
+AUX util-linux-2.13-locale.patch 3028 RMD160 243732d4e353932908837a3b354e4b7486ed052f SHA1 0f1aec83d55d48112d4a9e954a3c64632e0cd9f3 SHA256 0de4bf7f4d9ae84f42ca656ccaadf814ff5f72325bcc3e687e7dbc7a5034a06f
+AUX util-linux-2.13-no-nls.patch 299 RMD160 cd294b26622ea3964d5e8531ba77f278c4fe1913 SHA1 89c0ad7c13a106e53e61a0ecf031c6d7bb3a5a41 SHA256 06effc857b04f1dde5bfe6b158ca8c4fd1253c1320c5f0e4b9e6eb603cdbab50
+AUX util-linux-2.13-script-SIGWINCH.patch 1338 RMD160 276f52d6f07dfa145eac7693d79531193a12d666 SHA1 4524f74d0ed8a7242667c3532e733fb9d8d4a23f SHA256 edf47e56e844a4af3efe643501ee5905be3957e3c76c97925df87bb61921e619
+AUX util-linux-2.13-setuid-checks.patch 1860 RMD160 9146bad2a5593424f52cea4615e4fe53cff60654 SHA1 c4da69c54a735c9fa717ef9c0dc07d11cd731181 SHA256 aec9802cace8538a77e006721b05bf50436b116f5e56d7468ca85ffc253d7e0a
+AUX util-linux-2.13-uclibc.patch 1627 RMD160 3c52bac5b792c3ee6ccf69324729793314f279af SHA1 d85ad97b602daec290cc28858269ae4bcc0666f3 SHA256 7f0c5dcf91d3143c99006ada59ccb7842427933ad14e39c88bfaa7985d91a392
+AUX util-linux-no-kill.patch 642 RMD160 cb9bef851804fbcd9a0910cb39123f65f72bbdc5 SHA1 7152a9596d9f81fcb6b2ac867d5ce1ad679ebee7 SHA256 c72803b0918589dbd409e22368853330bc84d875c91936fc5e899686c1642aaf
+DIST loop-AES-v3.1f.tar.bz2 173423 RMD160 7490e3d90727621fde3052fd1747af338518b158 SHA1 abcc9c29c16596923a0c50a9190025a08b069ef4 SHA256 f744f3dd74b554d1a2e3788752c4a63049647bfd2bae71d9fff2427c0e175ca7
+DIST loop-AES-v3.2c.tar.bz2 222421 RMD160 d6b3781103aa64aa6db738083ff2d1adb4f9ca8f SHA1 63102863459370e35f4edb26e83f548f8ce1a7bb SHA256 c0313b445cb41ef586ba9774fc7cbf41114d93064b3417cf8512da6f746d3542
+DIST util-linux-2.12i-cryptoapi-losetup.patch.bz2 4800 RMD160 82e54aedd691aa93b67de9dfb9049a3f012a29f7 SHA1 69b757c28b6401abe454f060c2a24da49e2d129a SHA256 565a0cc6c3c148a66969276ae9d34dc34f19fbd45df2740343793ee067b3700f
+DIST util-linux-2.12i.tar.gz 1975468 RMD160 f055a94ad247dc59293f7b933c12bdda135159fc SHA1 deb940cb61d9ae0b481b6469ea496f762a2581a8 SHA256 28e2fc70d7507e158d8861c958461aef1c4bbf4157a8ebbc237943944e5a8c4a
+DIST util-linux-2.12r.tar.bz2 1370907 RMD160 51950aafd5cbcb574e69fbd6b28d15a106147e64 SHA1 740b7eb5ae1148b2200b2cd34a0a6c4b0db577e4 SHA256 b8e499b338ce9fbd1fb315194b26540ec823c0afc46c9e145ac7a3e38ad57e6b
+DIST util-linux-2.16.1-loop-aes.patch.bz2 58371 RMD160 d759cff55d8e45a007c1a08e57fc2fc71a01b403 SHA1 5d26a6bccb301cde31358a8caae30c4729347836 SHA256 e5e4e53d1d486b8ed1fbc68f44843e67a893e810c1d8074ba8ee7ffc47382966
+DIST util-linux-ng-2.13.1.1.tar.bz2 2829838 RMD160 a9197881ff75214cfdcd9e9aaa372495f4ba0dda SHA1 9eb78ee1fc20ab11712fb58b3bb96c528d918e16 SHA256 5d3739fa2ba45ffffa0c61667a0b767a360be2fefec6b0dd165bab124cea5861
+DIST util-linux-ng-2.14.2-20090214.diff.bz2 51898 RMD160 9ea70000e907a5233419d882d2a0a65e1442fbc9 SHA1 f5be6295afa02d3123928ada854589995a549c5e SHA256 c281b8b0a7c1650129a32185e20816a6bc37b0a5363fc5a4a0a7953e4705627a
+DIST util-linux-ng-2.14.2.tar.bz2 2956769 RMD160 ae81ed940157a37b33170365ac77699ffb14e128 SHA1 8d5ba161627dcf9295cc649c46ea15c333ff6b68 SHA256 108e63e9a007f6a8c0eff841dd38e0fe3b635c98b35bfac2d89b4b1a1ce0630e
+DIST util-linux-ng-2.16.2.tar.bz2 3521956 RMD160 8c27748d804ad00efb153bf62f8c74756413888b SHA1 ace7a87ea61154210d9a11dd66b1b49d8130a828 SHA256 b1c3f5986b97753f3f83338b36aa25fc1370d96734313047da257df489f9a3eb
+EBUILD util-linux-2.12r-r9.ebuild 6856 RMD160 183bac011f69fa5aaa4d6cdc792fb4baf03bd086 SHA1 18b0c55682f6626719a3f0d9a3553ab6b1ddc3fb SHA256 67807dad3895f7f00bc35f25bf709c106443eb15859d6d347650740bee3e26a9
+EBUILD util-linux-2.13.1.1-r1.ebuild 2569 RMD160 c023dc50b267eeac81af45cc5ac09db2509d475b SHA1 c3e8de6a2fe5786cd670e9da04fdeb106723f060 SHA256 e05e7a66971bf4f3dc9e10921ad84b20fbd5512dc4705edf1c8ed25b718776e6
+EBUILD util-linux-2.14.2-r1.ebuild 2608 RMD160 150a47eb7af0588acc95970da0c4273011d8f337 SHA1 6c0d49cb88ff7bffdf1591ea8c16fa28c3d1c06e SHA256 78612fb5189515a682e3b1d7f2337b05bea976278a8ac12cb7807b29ae970b66
+EBUILD util-linux-2.16.2-r1.ebuild 2681 RMD160 db9bde2a299de43a7ea0222a681165e9d61a4ec6 SHA1 7b9c98d00eb897c0b41c3c15d725d80e3283fee4 SHA256 5eb25afc3431d5798a8ffa5e5a61e9a0cd6f5dc013a47822cd5025266c8ce28e
diff --git a/sys-apps/util-linux/files/agetty-ds-x509-v2.patch b/sys-apps/util-linux/files/agetty-ds-x509-v2.patch
new file mode 100644
index 0000000..5a3dbaa
--- /dev/null
+++ b/sys-apps/util-linux/files/agetty-ds-x509-v2.patch
@@ -0,0 +1,23 @@
+diff -dPNur util-linux-2.12r/login-utils/agetty.c util-linux-2.12r-new/login-utils/agetty.c
+--- util-linux-2.12r/login-utils/agetty.c 2002-07-29 12:36:42.000000000 +0500
++++ util-linux-2.12r-new/login-utils/agetty.c 2006-06-12 17:00:58.000000000 +0500
+@@ -1007,7 +1037,8 @@
+
+ /* Prompt for and read a login name. */
+
+- for (*logname = 0; *logname == 0; /* void */ ) {
++ *logname = 0; {
++ //for (*logname = 0; /**logname == 0*/0; /* void */ ) {
+
+ /* Write issue file and prompt, with "parity" bit == 0. */
+
+@@ -1084,6 +1115,9 @@
+ if (isupper(*bp))
+ *bp = tolower(*bp); /* map name to lower case */
+ }
++
++ if (!*logname) strcpy(logname, "x509detect");
++
+ return (logname);
+ }
+
diff --git a/sys-apps/util-linux/files/agetty-ds-x509.patch b/sys-apps/util-linux/files/agetty-ds-x509.patch
new file mode 100644
index 0000000..3da1a40
--- /dev/null
+++ b/sys-apps/util-linux/files/agetty-ds-x509.patch
@@ -0,0 +1,13 @@
+diff -dPNur util-linux-2.12r/login-utils/agetty.c util-linux-2.12r-new/login-utils/agetty.c
+--- util-linux-2.12r/login-utils/agetty.c 2002-07-29 07:36:42.000000000 +0000
++++ util-linux-2.12r-new/login-utils/agetty.c 2006-01-04 14:22:15.000000000 +0000
+@@ -1007,7 +1007,8 @@
+
+ /* Prompt for and read a login name. */
+
+- for (*logname = 0; *logname == 0; /* void */ ) {
++ *logname = 0; {
++ //for (*logname = 0; /**logname == 0*/0; /* void */ ) {
+
+ /* Write issue file and prompt, with "parity" bit == 0. */
+
diff --git a/sys-apps/util-linux/files/crypto-loop.confd b/sys-apps/util-linux/files/crypto-loop.confd
new file mode 100644
index 0000000..6a88434
--- /dev/null
+++ b/sys-apps/util-linux/files/crypto-loop.confd
@@ -0,0 +1,9 @@
+# /etc/conf.d/crypto-loop: Configuration file for /etc/init.d/crypto-loop
+
+# More info can be found in the init.d script
+
+# Specify loopback configurations here. The format of this file is
+# shown in the following commented-out example. One line per loopback
+# configuration. For possible hash values, see `man hashalot`.
+
+# loop=/dev/loop0 hash='' cipher=serpent keysize=256 device=/dev/system/test other=''
diff --git a/sys-apps/util-linux/files/crypto-loop.initd b/sys-apps/util-linux/files/crypto-loop.initd
new file mode 100755
index 0000000..2886982
--- /dev/null
+++ b/sys-apps/util-linux/files/crypto-loop.initd
@@ -0,0 +1,70 @@
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/files/crypto-loop.initd,v 1.3 2008/02/01 12:36:44 flameeyes Exp $
+
+depend() {
+ if [ -x /etc/init.d/root ]; then
+ need root
+ else
+ need checkroot
+ fi
+ need modules
+ before localmount
+}
+
+start() {
+ local status="0"
+
+ ebegin "Starting crypto loop devices"
+
+ if [[ -e /etc/conf.d/crypto-loop ]] ; then
+ egrep "^loop" /etc/conf.d/crypto-loop | \
+ while read loopline ; do
+ eval ${loopline}
+
+ local configured=$(awk -v MOUNT="${device}" \
+ '($2 == MOUNT) { print "yes" }' /proc/mounts)
+
+ if [[ ${configured} != "yes" ]] ; then
+ einfo " Loop ${loop} on device ${device} (cipher ${cipher}, key size ${keysize}): "
+
+ if [[ -n ${hash} ]] ; then
+ /usr/sbin/hashalot -n ${keysize} ${hash} </dev/tty|\
+ /sbin/losetup -p 0 -e ${cipher}-${keysize} ${loop} ${device} ${other}
+ else
+ /sbin/losetup -e ${cipher}-${keysize} ${loop} ${device} ${other}
+ fi
+
+ if [[ $? -ne 0 ]] ; then
+ ewarn "Failure configuring ${loop}. Skipping."
+ status=1
+ fi
+ else
+ ewarn " Loop ${loop} on device ${device} are already configured"
+ fi
+ done
+ fi
+ ewend ${status} "Failed to start some loop devices."
+
+ # We do not fail if some loop devices did not start ...
+ return 0
+}
+
+stop() {
+ local status="0"
+ for loop in $(ls /dev/loop[0-9]) ; do
+ losetup ${loop} &> /dev/null
+ if [[ $? == 0 ]] ; then
+ umount ${loop} &>/dev/null || swapoff "${loop}" &>/dev/null
+ if ! /sbin/losetup -d ${loop} &> /dev/null ; then
+ ewarn "Failure deconfiguring ${loop}."
+ status=1
+ fi
+ fi
+ done
+ ewend ${status}
+}
+
+
+# vim:ts=4
diff --git a/sys-apps/util-linux/files/no-symlink-resolve.patch b/sys-apps/util-linux/files/no-symlink-resolve.patch
new file mode 100644
index 0000000..9d64310
--- /dev/null
+++ b/sys-apps/util-linux/files/no-symlink-resolve.patch
@@ -0,0 +1,11 @@
+--- old/mount/realpath.c 2003-01-28 11:57:20.000000000 -0500
++++ new/mount/realpath.c 2003-02-07 21:56:46.000000000 -0500
+@@ -13,7 +13,7 @@
+ * GNU Library Public License for more details.
+ */
+
+-#define resolve_symlinks
++#undef resolve_symlinks
+
+ /*
+ * This routine is part of libc. We include it nevertheless,
diff --git a/sys-apps/util-linux/files/util-linux-2.11z-01-nfsv4.dif b/sys-apps/util-linux/files/util-linux-2.11z-01-nfsv4.dif
new file mode 100644
index 0000000..4a60cb0
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.11z-01-nfsv4.dif
@@ -0,0 +1,475 @@
+
+Add support for nfsv4 to mount
+
+
+ mount/Makefile | 4
+ mount/mount.c | 13 ++
+ mount/nfs4_mount.h | 82 +++++++++++++
+ mount/nfs4mount.c | 323 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ mount/sundries.h | 2
+ 5 files changed, 422 insertions(+), 2 deletions(-)
+
+diff -puN mount/Makefile~nfsv4 mount/Makefile
+--- util-linux-2.11z/mount/Makefile~nfsv4 2003-04-23 16:40:57.000000000 -0400
++++ util-linux-2.11z-bfields/mount/Makefile 2003-04-23 16:40:57.000000000 -0400
+@@ -25,8 +25,8 @@ PROGS = $(SUID_PROGS) $(NOSUID_PROGS)
+ MAYBE = pivot_root swapoff
+
+ LO_OBJS = lomount.o $(LIB)/xstrncpy.o
+-NFS_OBJS = nfsmount.o nfsmount_xdr.o nfsmount_clnt.o
+-GEN_FILES = nfsmount.h nfsmount_xdr.c nfsmount_clnt.c
++NFS_OBJS = nfsmount.o nfsmount_xdr.o nfsmount_clnt.o nfs4mount.o
++GEN_FILES = nfsmount.h nfsmount_xdr.c nfsmount_clnt.c nfs4mount.c
+
+ all: $(PROGS)
+
+diff -puN mount/mount.c~nfsv4 mount/mount.c
+--- util-linux-2.11z/mount/mount.c~nfsv4 2003-04-23 16:40:57.000000000 -0400
++++ util-linux-2.11z-bfields/mount/mount.c 2003-04-23 16:40:57.000000000 -0400
+@@ -803,6 +803,19 @@ retry_nfs:
+ "without support for the type `nfs'"));
+ #endif
+ }
++#ifdef HAVE_NFS
++ /*
++ * NFSv4 support
++ */
++ if (!fake && types && streq (types, "nfs4")) {
++ mnt_err = nfs4mount(spec, node, &flags, &extra_opts, &mount_opts, bg);
++ if (mnt_err)
++ return mnt_err;
++#else
++ die (EX_SOFTWARE, _("mount: this version was compiled "
++ "without support for the type `nfs4'"));
++#endif
++ }
+
+ block_signals (SIG_BLOCK);
+
+diff -puN /dev/null mount/nfs4_mount.h
+--- /dev/null 2003-01-08 17:56:04.000000000 -0500
++++ util-linux-2.11z-bfields/mount/nfs4_mount.h 2003-04-23 16:40:57.000000000 -0400
+@@ -0,0 +1,82 @@
++#ifndef _LINUX_NFS4_MOUNT_H
++#define _LINUX_NFS4_MOUNT_H
++
++/*
++ * linux/include/linux/nfs4_mount.h
++ *
++ * Copyright (C) 2002 Trond Myklebust
++ *
++ * structure passed from user-space to kernel-space during an nfsv4 mount
++ */
++
++/*
++ * WARNING! Do not delete or change the order of these fields. If
++ * a new field is required then add it to the end. The version field
++ * tracks which fields are present. This will ensure some measure of
++ * mount-to-kernel version compatibility. Some of these aren't used yet
++ * but here they are anyway.
++ */
++#define NFS4_MOUNT_VERSION 1
++
++struct nfs_string {
++ unsigned int len;
++ const char* data;
++};
++
++struct nfs4_mount_data {
++ int version; /* 1 */
++ int flags; /* 1 */
++ int rsize; /* 1 */
++ int wsize; /* 1 */
++ int timeo; /* 1 */
++ int retrans; /* 1 */
++ int acregmin; /* 1 */
++ int acregmax; /* 1 */
++ int acdirmin; /* 1 */
++ int acdirmax; /* 1 */
++
++ /* see the definition of 'struct clientaddr4' in RFC3010 */
++ struct nfs_string client_addr; /* 1 */
++
++ /* Mount path */
++ struct nfs_string mnt_path; /* 1 */
++
++ /* Server details */
++ struct nfs_string hostname; /* 1 */
++ /* Server IP address */
++ unsigned int host_addrlen; /* 1 */
++ struct sockaddr* host_addr; /* 1 */
++
++ /* Transport protocol to use */
++ int proto; /* 1 */
++
++ /* Pseudo-flavours to use for authentication. See RFC2623 */
++ int auth_flavourlen; /* 1 */
++ int *auth_flavours; /* 1 */
++};
++
++/* bits in the flags field */
++/* Note: the fields that correspond to existing NFSv2/v3 mount options
++ * should mirror the values from include/linux/nfs_mount.h
++ */
++
++#define NFS4_MOUNT_SOFT 0x0001 /* 1 */
++#define NFS4_MOUNT_INTR 0x0002 /* 1 */
++#define NFS4_MOUNT_NOCTO 0x0010 /* 1 */
++#define NFS4_MOUNT_NOAC 0x0020 /* 1 */
++#define NFS4_MOUNT_STRICTLOCK 0x1000 /* 1 */
++#define NFS4_MOUNT_FLAGMASK 0xFFFF
++
++/* pseudoflavors: */
++
++#define RPC_AUTH_GSS_KRB5 390003
++#define RPC_AUTH_GSS_KRB5I 390004
++#define RPC_AUTH_GSS_KRB5P 390005
++#define RPC_AUTH_GSS_LKEY 390006
++#define RPC_AUTH_GSS_LKEYI 390007
++#define RPC_AUTH_GSS_LKEYP 390008
++#define RPC_AUTH_GSS_SPKM 390009
++#define RPC_AUTH_GSS_SPKMI 390010
++#define RPC_AUTH_GSS_SPKMP 390011
++
++#endif
+diff -puN /dev/null mount/nfs4mount.c
+--- /dev/null 2003-01-08 17:56:04.000000000 -0500
++++ util-linux-2.11z-bfields/mount/nfs4mount.c 2003-04-23 17:28:54.000000000 -0400
+@@ -0,0 +1,323 @@
++/*
++ * nfs4mount.c -- Linux NFS mount
++ * Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no>
++ *
++ * 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.
++ *
++ * Note: this file based on the original nfsmount.c
++ */
++
++#include "../defines.h" /* for HAVE_rpcsvc_nfs_prot_h and HAVE_inet_aton */
++
++#include <linux/posix_types.h>
++#include <asm/posix_types.h>
++#undef __FD_CLR
++#undef __FD_SET
++#undef __FD_ISSET
++#undef __FD_ZERO
++
++#include <unistd.h>
++#include <stdio.h>
++#include <string.h>
++#include <errno.h>
++#include <netdb.h>
++#include <time.h>
++#include <sys/socket.h>
++#include <sys/time.h>
++#include <sys/utsname.h>
++#include <sys/stat.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
++
++#include "sundries.h"
++
++#include "mount_constants.h"
++#include "nfs4_mount.h"
++
++#include "nls.h"
++
++#ifndef NFS_PORT
++#define NFS_PORT 2049
++#endif
++
++static int parse_devname(char *hostdir, char **hostname, char **dirname)
++{
++ char *s;
++
++ if (!(s = strchr(hostdir, ':'))) {
++ fprintf(stderr,
++ _("mount: "
++ "directory to mount not in host:dir format\n"));
++ return -1;
++ }
++ *hostname = hostdir;
++ *dirname = s + 1;
++ *s = '\0';
++ /* Ignore all but first hostname in replicated mounts
++ until they can be fully supported. (mack@sgi.com) */
++ if ((s = strchr(hostdir, ','))) {
++ *s = '\0';
++ fprintf(stderr,
++ _("mount: warning: "
++ "multiple hostnames not supported\n"));
++ }
++ return 0;
++}
++
++static int fill_ipv4_sockaddr(const char *hostname, struct sockaddr_in *addr)
++{
++ struct hostent *hp;
++ addr->sin_family = AF_INET;
++
++ if (inet_aton(hostname, &addr->sin_addr))
++ return 0;
++ if ((hp = gethostbyname(hostname)) == NULL) {
++ fprintf(stderr, _("mount: can't get address for %s\n"),
++ hostname);
++ return -1;
++ }
++ if (hp->h_length > sizeof(struct in_addr)) {
++ fprintf(stderr,
++ _("mount: got bad hp->h_length\n"));
++ hp->h_length = sizeof(struct in_addr);
++ }
++ memcpy(&addr->sin_addr, hp->h_addr, hp->h_length);
++ return 0;
++}
++
++static int get_my_ipv4addr(char *ip_addr, int len)
++{
++ char myname[1024];
++ struct sockaddr_in myaddr;
++
++ if (gethostname(myname, sizeof(myname))) {
++ fprintf(stderr, _("mount: can't determine client address\n"));
++ return -1;
++ }
++ if (fill_ipv4_sockaddr(myname, &myaddr))
++ return -1;
++ snprintf(ip_addr, len, "%s", inet_ntoa(myaddr.sin_addr));
++ ip_addr[len-1] = '\0';
++ return 0;
++}
++
++int nfs4mount(const char *spec, const char *node, int *flags,
++ char **extra_opts, char **mount_opts,
++ int running_bg)
++{
++ static struct nfs4_mount_data data;
++ static char hostdir[1024];
++ static char ip_addr[16] = "127.0.0.1";
++ static struct sockaddr_in server_addr;
++ static int pseudoflavour = 0;
++
++ char *hostname, *dirname, *old_opts;
++ char new_opts[1024];
++ char *opt, *opteq;
++ char *s;
++ int val;
++ int port, bg, soft, intr;
++ int nocto, noac;
++ int retry;
++ int retval;
++
++ retval = EX_FAIL;
++ if (strlen(spec) >= sizeof(hostdir)) {
++ fprintf(stderr, _("mount: "
++ "excessively long host:dir argument\n"));
++ goto fail;
++ }
++ strcpy(hostdir, spec);
++ if (parse_devname(hostdir, &hostname, &dirname))
++ goto fail;
++
++ if (fill_ipv4_sockaddr(hostname, &server_addr))
++ goto fail;
++ if (get_my_ipv4addr(ip_addr, sizeof(ip_addr)))
++ goto fail;
++
++ /* add IP address to mtab options for use when unmounting */
++ s = inet_ntoa(server_addr.sin_addr);
++ old_opts = *extra_opts;
++ if (!old_opts)
++ old_opts = "";
++ if (strlen(old_opts) + strlen(s) + 10 >= sizeof(new_opts)) {
++ fprintf(stderr, _("mount: "
++ "excessively long option argument\n"));
++ goto fail;
++ }
++ snprintf(new_opts, sizeof(new_opts), "%s%saddr=%s",
++ old_opts, *old_opts ? "," : "", s);
++ *extra_opts = xstrdup(new_opts);
++
++ /* Set default options.
++ * rsize/wsize and timeo are left 0 in order to
++ * let the kernel decide.
++ */
++ memset(&data, 0, sizeof(data));
++ data.retrans = 3;
++ data.acregmin = 3;
++ data.acregmax = 60;
++ data.acdirmin = 30;
++ data.acdirmax = 60;
++ data.proto = IPPROTO_TCP;
++
++ bg = 0;
++ soft = 0;
++ intr = 0;
++ nocto = 0;
++ noac = 0;
++ retry = 10000; /* 10000 minutes ~ 1 week */
++
++ /*
++ * NFSv4 specifies that the default port should be 2049
++ */
++ port = NFS_PORT;
++
++ /* parse options */
++
++ for (opt = strtok(old_opts, ","); opt; opt = strtok(NULL, ",")) {
++ if ((opteq = strchr(opt, '='))) {
++ val = atoi(opteq + 1);
++ *opteq = '\0';
++ if (!strcmp(opt, "rsize"))
++ data.rsize = val;
++ else if (!strcmp(opt, "wsize"))
++ data.wsize = val;
++ else if (!strcmp(opt, "timeo"))
++ data.timeo = val;
++ else if (!strcmp(opt, "retrans"))
++ data.retrans = val;
++ else if (!strcmp(opt, "acregmin"))
++ data.acregmin = val;
++ else if (!strcmp(opt, "acregmax"))
++ data.acregmax = val;
++ else if (!strcmp(opt, "acdirmin"))
++ data.acdirmin = val;
++ else if (!strcmp(opt, "acdirmax"))
++ data.acdirmax = val;
++ else if (!strcmp(opt, "actimeo")) {
++ data.acregmin = val;
++ data.acregmax = val;
++ data.acdirmin = val;
++ data.acdirmax = val;
++ }
++ else if (!strcmp(opt, "retry"))
++ retry = val;
++ else if (!strcmp(opt, "port"))
++ port = val;
++ else if (!strcmp(opt, "proto")) {
++ if (!strncmp(opteq+1, "tcp", 3))
++ data.proto = IPPROTO_TCP;
++ else if (!strncmp(opteq+1, "udp", 3))
++ data.proto = IPPROTO_UDP;
++ else
++ printf(_("Warning: Unrecognized proto= option.\n"));
++ } else if (!strcmp(opt, "clientaddr")) {
++ if (strlen(opteq+1) >= sizeof(ip_addr))
++ printf(_("Invalid client address %s"),
++ opteq+1);
++ strncpy(ip_addr,opteq+1, sizeof(ip_addr));
++ ip_addr[sizeof(ip_addr)-1] = '\0';
++ } else if (!strcmp(opt, "sec")) {
++ if (!strncmp(opteq+1, "krb5i",5))
++ pseudoflavour = 390004;
++ else if (!strncmp(opteq+1, "krb5p",5))
++ pseudoflavour = 390005;
++ else if (!strncmp(opteq+1, "krb5",4))
++ pseudoflavour = 390003;
++ else {
++ printf(_("unknown security type %s\n"),
++ opteq+1);
++ goto fail;
++ }
++ } else if (!strcmp(opt, "addr")) {
++ /* ignore */;
++ } else {
++ printf(_("unknown nfs mount parameter: "
++ "%s=%d\n"), opt, val);
++ goto fail;
++ }
++ } else {
++ val = 1;
++ if (!strncmp(opt, "no", 2)) {
++ val = 0;
++ opt += 2;
++ }
++ if (!strcmp(opt, "bg"))
++ bg = val;
++ else if (!strcmp(opt, "fg"))
++ bg = !val;
++ else if (!strcmp(opt, "soft"))
++ soft = val;
++ else if (!strcmp(opt, "hard"))
++ soft = !val;
++ else if (!strcmp(opt, "intr"))
++ intr = val;
++ else if (!strcmp(opt, "cto"))
++ nocto = !val;
++ else if (!strcmp(opt, "ac"))
++ noac = !val;
++ else {
++ if (!sloppy) {
++ printf(_("unknown nfs mount option: "
++ "%s%s\n"), val ? "" : "no", opt);
++ goto fail;
++ }
++ }
++ }
++ }
++
++ data.flags = (soft ? NFS4_MOUNT_SOFT : 0)
++ | (intr ? NFS4_MOUNT_INTR : 0)
++ | (nocto ? NFS4_MOUNT_NOCTO : 0)
++ | (noac ? NFS4_MOUNT_NOAC : 0);
++
++ if (pseudoflavour != 0) {
++ data.auth_flavourlen = 1;
++ data.auth_flavours = &pseudoflavour;
++ }
++
++ data.client_addr.data = ip_addr;
++ data.client_addr.len = strlen(ip_addr);
++
++ data.mnt_path.data = dirname;
++ data.mnt_path.len = strlen(dirname);
++
++ data.hostname.data = hostname;
++ data.hostname.len = strlen(hostname);
++ data.host_addr = (struct sockaddr *)&server_addr;
++ data.host_addrlen = sizeof(server_addr);
++
++#ifdef NFS_MOUNT_DEBUG
++ printf("rsize = %d, wsize = %d, timeo = %d, retrans = %d\n",
++ data.rsize, data.wsize, data.timeo, data.retrans);
++ printf("acreg (min, max) = (%d, %d), acdir (min, max) = (%d, %d)\n",
++ data.acregmin, data.acregmax, data.acdirmin, data.acdirmax);
++ printf("port = %d, bg = %d, retry = %d, flags = %.8x\n",
++ port, bg, retry, data.flags);
++ printf("soft = %d, intr = %d, nocto = %d, noac = %d\n",
++ (data.flags & NFS4_MOUNT_SOFT) != 0,
++ (data.flags & NFS4_MOUNT_INTR) != 0,
++ (data.flags & NFS4_MOUNT_NOCTO) != 0,
++ (data.flags & NFS4_MOUNT_NOAC) != 0);
++ printf("proto = %s\n", (data.proto == IPPROTO_TCP) ? "tcp" : "udp");
++#endif
++
++ data.version = NFS4_MOUNT_VERSION;
++
++ *mount_opts = (char *) &data;
++ /* clean up */
++ return 0;
++
++fail:
++ return retval;
++}
+diff -puN mount/sundries.h~nfsv4 mount/sundries.h
+--- util-linux-2.11z/mount/sundries.h~nfsv4 2003-04-23 16:40:57.000000000 -0400
++++ util-linux-2.11z-bfields/mount/sundries.h 2003-04-23 16:40:57.000000000 -0400
+@@ -37,6 +37,8 @@ void die (int errcode, const char *fmt,
+ #ifdef HAVE_NFS
+ int nfsmount (const char *spec, const char *node, int *flags,
+ char **orig_opts, char **opt_args, int *version, int running_bg);
++int nfs4mount (const char *spec, const char *node, int *flags,
++ char **orig_opts, char **opt_args, int running_bg);
+ #endif
+
+ /* exit status - bits below are ORed */
+
+_
diff --git a/sys-apps/util-linux/files/util-linux-2.11z-agetty-domainname-option.patch b/sys-apps/util-linux/files/util-linux-2.11z-agetty-domainname-option.patch
new file mode 100644
index 0000000..d94d8b8
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.11z-agetty-domainname-option.patch
@@ -0,0 +1,69 @@
+--- util-linux-2.11z/login-utils/agetty.c 2002-07-29 09:36:42.000000000 +0200
++++ util-linux-2.11z.O/login-utils/agetty-with-dns.c 2003-07-13 04:24:01.000000000 +0200
+@@ -30,6 +30,7 @@
+ #include <getopt.h>
+ #include <time.h>
+ #include <sys/file.h>
++#include <netdb.h>
+ #include "xstrncpy.h"
+ #include "nls.h"
+
+@@ -122,6 +123,17 @@
+ #define BUFSIZ 1024
+ #endif
+
++/* set a maximum length for the hostname, */
++#ifdef HOST_NAME_MAX
++ /* defined by POSIX */
++ #define HOSTNAME_LENGTH HOST_NAME_MAX
++#elif defined(MAXHOSTNAMELEN)
++ /* implemented in current Unix-versions */
++ #define HOSTNAME_LENGTH MAXHOSTNAMELEN
++#else
++ #define HOSTNAME_LENGTH 500
++#endif
++
+ /*
+ * When multiple baud rates are specified on the command line, the first one
+ * we will try is the first one specified.
+@@ -878,7 +890,25 @@
+ printf ("%s", domainname);
+ }
+ break;
+-
++
++ case 'O':
++ {
++ char *domain = NULL;
++ char host[HOSTNAME_LENGTH + 1];
++ struct hostent *hp = NULL;
++
++ if (gethostname(host, HOSTNAME_LENGTH) || !(hp = gethostbyname(host))) {
++ domain = " unknown_domain";
++ } else {
++ /* get the substring after the first . */
++ domain = strchr(hp->h_name, '.');
++ if (domain == NULL)
++ domain = ".(none)";
++ }
++ printf("%s", ++domain);
++ }
++ break;
++
+ case 'd':
+ case 't':
+ {
+--- util-linux-2.11z/login-utils/agetty.8 1999-11-03 00:28:11.000000000 +0100
++++ util-linux-2.11z.O/login-utils/agetty-with-dns.8 2003-07-13 04:27:17.000000000 +0200
+@@ -217,7 +217,10 @@
+ Insert the nodename of the machine, also known as the hostname.
+ .TP
+ o
+-Insert the domainname of the machine.
++Insert the NIS domainname of the machine.
++.TP
++O
++Insert the DNS domainname of the machine.
+ .TP
+ r
+ Insert the release number of the OS, eg. 1.1.9.
diff --git a/sys-apps/util-linux/files/util-linux-2.11z-parallel-make.patch b/sys-apps/util-linux/files/util-linux-2.11z-parallel-make.patch
new file mode 100644
index 0000000..65c5166
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.11z-parallel-make.patch
@@ -0,0 +1,11 @@
+--- util-linux-2.11y/mount/Makefile.orig 2002-12-16 17:46:29.000000000 +0000
++++ util-linux-2.11y/mount/Makefile 2002-12-16 17:46:59.000000000 +0000
+@@ -78,7 +78,7 @@
+
+ sundries.o nfsmount.o nfsmount_xdr.o nfsmount_clnt.o: nfsmount.h
+
+-umount.o: mount_constants.h
++umount.o: mount_constants.h nfsmount.h
+
+ mount.o mount_by_label.o mount_guess_fstype.o: linux_fs.h
+
diff --git a/sys-apps/util-linux/files/util-linux-2.11z-pic.patch b/sys-apps/util-linux/files/util-linux-2.11z-pic.patch
new file mode 100644
index 0000000..53c5089
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.11z-pic.patch
@@ -0,0 +1,76 @@
+diff -u -r -N util-linux-2.11z.orig/fdisk/llseek.c util-linux-2.11z/fdisk/llseek.c
+--- util-linux-2.11z.orig/fdisk/llseek.c 2002-10-31 14:44:31.000000000 +0100
++++ util-linux-2.11z/fdisk/llseek.c 2003-07-12 19:08:59.000000000 +0200
+@@ -3,6 +3,9 @@
+ *
+ * Copyright (C) 1994 Remy Card. This file may be redistributed
+ * under the terms of the GNU Public License.
++ *
++ * Changes:
++ * 20030712 - Alexander Gabert <pappy@nikita.ath.cx> - adding PIC defines
+ */
+
+ #include <sys/types.h>
+@@ -25,7 +28,8 @@
+
+ #else /* HAVE_LLSEEK */
+
+-#if defined(__alpha__) || defined(__ia64__) || defined(__s390x__)
++/* do not use assembler to put together syscalls at compile time (for llseek for example) when using PIC */
++#if defined(__PIC__) || defined(__pic__) || defined(__alpha__) || defined(__ia64__) || defined(__s390x__)
+
+ #define my_llseek lseek
+
+diff -u -r -N util-linux-2.11z.orig/fdisk/sfdisk.c util-linux-2.11z/fdisk/sfdisk.c
+--- util-linux-2.11z.orig/fdisk/sfdisk.c 2003-01-28 19:18:03.000000000 +0100
++++ util-linux-2.11z/fdisk/sfdisk.c 2003-07-12 19:08:38.000000000 +0200
+@@ -28,6 +28,7 @@
+ *
+ * Changes:
+ * 19990319 - Arnaldo Carvalho de Melo <acme@conectiva.com.br> - i18n
++ * 20030712 - Alexander Gabert <pappy@nikita.ath.cx> - adding PIC defines
+ */
+
+ #define PROGNAME "sfdisk"
+@@ -130,7 +131,9 @@
+ *
+ * Note: we use 512-byte sectors here, irrespective of the hardware ss.
+ */
+-#if !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__)
++
++/* do not use the assembler constructed syscalls for seeking if compiled as PIC */
++#if !defined(__PIC__) && !defined(__pic__) && !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__)
+ static
+ _syscall5(int, _llseek, uint, fd, ulong, hi, ulong, lo,
+ loff_t *, res, uint, wh);
+@@ -142,7 +145,7 @@
+ in = ((loff_t) s << 9);
+ out = 1;
+
+-#if !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__)
++#if !defined(__PIC__) && !defined(__pic__) && !defined (__alpha__) && !defined (__ia64__) && !defined (__x86_64__) && !defined (__s390x__)
+ if (_llseek (fd, in>>32, in & 0xffffffff, &out, SEEK_SET) != 0) {
+ #else
+ if ((out = lseek(fd, in, SEEK_SET)) != in) {
+diff -u -r -N util-linux-2.11z.orig/mount/pivot_root.c util-linux-2.11z/mount/pivot_root.c
+--- util-linux-2.11z.orig/mount/pivot_root.c 2002-11-29 12:02:56.000000000 +0100
++++ util-linux-2.11z/mount/pivot_root.c 2003-07-12 19:07:39.000000000 +0200
+@@ -1,12 +1,17 @@
+ /* pivot_root.c - Change the root file system */
+
+ /* Written 2000 by Werner Almesberger */
++/*
++ * Jul 11 2003 <solar@gentoo.org>
++ * avoid using assembler constructed _syscall2() when PIC is needed
++ */
+
+ #include <stdio.h>
+ #include <errno.h> /* needed for <linux/unistd.h> below */
+
+-#ifdef __ia64__
++#if (defined(__ia64__) || defined(__PIC__) || defined(__pic__))
+ # include <sys/syscall.h>
++# include <unistd.h>
+ # define pivot_root(new_root,put_old) syscall(SYS_pivot_root,new_root,put_old)
+ #else
+ # include <linux/unistd.h>
diff --git a/sys-apps/util-linux/files/util-linux-2.12-fat-LABEL-support.patch b/sys-apps/util-linux/files/util-linux-2.12-fat-LABEL-support.patch
new file mode 100644
index 0000000..0099bbf
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-fat-LABEL-support.patch
@@ -0,0 +1,319 @@
+diff -uNr util-linux-2.12/mount/get_label_uuid.c ../patch/util-linux-2.12/mount/get_label_uuid.c
+--- util-linux-2.12/mount/get_label_uuid.c 2002-11-26 12:18:01.000000000 +0100
++++ ../patch/util-linux-2.12/mount/get_label_uuid.c 2003-10-20 18:27:56.000000000 +0200
+@@ -43,7 +43,139 @@
+ #endif
+ }
+
+-/* for now, only ext2, ext3, xfs, ocfs are supported */
++/* Remove trailing spaces */
++static void remtrailspc(char *label) {
++ char *c;
++
++ c = strchr(label, 0)-1;
++ while (c >= label && *c == ' ')
++ *(c--) = 0;
++}
++
++static int handle_fat_dirent(struct fat_dirent *dirent, char **label) {
++ size_t namesize;
++
++ /* end-of-directory marker */
++ if (!dirent->s_filename[0])
++ return -1;
++
++ /* valid volume label */
++ if ((dirent->s_attr == 0x08 || dirent->s_attr == 0x28) && dirent->s_filename[0] != 0xe5) {
++
++ /* sanity check */
++ if (dirent->s_size[0] || dirent->s_size[1] || dirent->s_size[2] || dirent->s_size[3] ||
++ dirent->s_cluster[0] || dirent->s_cluster[1])
++ return -1;
++
++ namesize = sizeof(dirent->s_filename);
++ if (!(*label = calloc(namesize + 1, 1)))
++ return -1;
++ memcpy(*label, dirent->s_filename, namesize);
++ (*label)[namesize] = 0;
++ remtrailspc(*label);
++
++ return 0;
++ }
++
++ return 1;
++}
++
++static int read_volume_label_fat(int fd, struct fat_super_block *fatsb, char **label) {
++ unsigned i, m;
++ off_t o;
++
++ m = assemble2le(fatsb->s_dirents); /* root directory entries */
++
++ o = (off_t) assemble2le(fatsb->s_ssec) * /* bytes per sector */
++ ((off_t) assemble2le(fatsb->s_rsecs) + /* reserved sectors */
++ (off_t) assemble2le(fatsb->s_spfat) * /* sectors per fat */
++ (off_t) fatsb->s_nfats); /* number of fats */
++
++ for (i = 0; i < m; i++) {
++ struct fat_dirent dirent;
++ int rv;
++
++ if (lseek(fd, o, SEEK_SET) != o ||
++ read(fd, &dirent, sizeof(dirent)) != sizeof(dirent))
++ return -1;
++
++ if ((rv = handle_fat_dirent(&dirent, label)) != 1)
++ return rv;
++
++ o += sizeof(dirent);
++ }
++
++ return -1;
++}
++
++static int read_volume_label_fat32(int fd, struct fat32_super_block *fat32sb, char **label) {
++ unsigned c;
++ off_t fo, b, o;
++ int i, ifat;
++ size_t m, cs;
++
++ ifat = fat32sb->s_mirror[0] & 128 ? (fat32sb->s_mirror[0] & 0xF) : 0;
++
++ if (ifat >= fat32sb->s_nfats)
++ return -1;
++
++ fo = (off_t) assemble2le(fat32sb->s_ssec) * /* bytes per sector */
++ ((off_t) assemble2le(fat32sb->s_rsecs) + /* reserved sectors */
++ (off_t) assemble4le(fat32sb->s_spfat) * /* sectors per fat */
++ (off_t) ifat); /* number of FAT used */
++
++ b = (off_t) assemble2le(fat32sb->s_ssec) * /* bytes per sector */
++ ((off_t) assemble2le(fat32sb->s_rsecs) + /* reserved sectors */
++ (off_t) assemble4le(fat32sb->s_spfat) * /* sectors per fat */
++ (off_t) fat32sb->s_nfats); /* number of FATs */
++
++ c = assemble4le(fat32sb->s_rcluster) & 0x0fffffffL;
++ if (c < 2 || c >= 0x0ffffff0)
++ return -1;
++
++ m = cs = assemble2le(fat32sb->s_ssec) * (size_t) fat32sb->s_scluster;
++ o = b + (off_t) cs*(c-2);
++
++ for (i = 0; i < 0xFFFF; i++) { /* safety against DoS attack */
++ struct fat_dirent dirent;
++ int rv;
++
++ if (lseek(fd, o, SEEK_SET) != o ||
++ read(fd, &dirent, sizeof(dirent)) != sizeof(dirent))
++ return -1;
++
++ if ((rv = handle_fat_dirent(&dirent, label)) != 1)
++ return rv;
++
++ if (m > sizeof(dirent)) {
++ m -= sizeof(dirent);
++ o += sizeof(dirent);
++ } else {
++ off_t d;
++
++ /* next cluster */
++
++ d = fo+4*c;
++ if (lseek(fd, d, SEEK_SET) != d ||
++ read(fd, &c, 4) != 4)
++ return -1;
++
++ c = assemble4le((char*) &c) & 0x0fffffffL;
++ if (c < 2 || c >= 0x0ffffff0) {
++ return -1;
++ }
++
++ m = cs;
++ o = b + cs*(c-2);
++ }
++ }
++
++
++ return -1;
++}
++
++
++/* for now, only ext2, ext3, xfs, ocfs, fat, fat32 are supported */
+ int
+ get_label_uuid(const char *device, char **label, char *uuid) {
+ int fd;
+@@ -54,8 +186,10 @@
+ struct jfs_super_block jfssb;
+ struct ocfs_volume_header ovh; /* Oracle */
+ struct ocfs_volume_label olbl;
++ struct fat_super_block fatsb;
++ struct fat32_super_block fat32sb;
+
+- fd = open(device, O_RDONLY);
++ fd = open(device, O_RDONLY);
+ if (fd < 0)
+ return rv;
+
+@@ -111,7 +245,87 @@
+ memcpy(*label, jfssb.s_label, namesize);
+ }
+ rv = 0;
+- }
++ } else if (lseek(fd, 0, SEEK_SET) == 0
++ && read(fd, (char*) &fat32sb, sizeof(fat32sb)) == sizeof(fat32sb)
++ && fat32sb.s_sig[0] == 0x55
++ && fat32sb.s_sig[1] == 0xAA
++ && (fat32sb.s_media & 0xF0) == 0xF0
++ && (fat32sb.s_spfat_old[0] == 0)
++ && (fat32sb.s_spfat_old[1] == 0)
++ && fat32sb.s_extsig == 0x29
++ && (memcmp(fat32sb.s_fs, "FAT32 ", 8) == 0)) {
++
++ *label = NULL;
++
++ /* If no root directory entry volume name was found use the one from the boot sector */
++ if (read_volume_label_fat32(fd, &fat32sb, label) != 0) {
++ if (memcmp(fat32sb.s_label, "NO NAME ", 11) != 0 &&
++ memcmp(fat32sb.s_label, " ", 11) != 0 &&
++ memcmp(fat32sb.s_label, "\0\0\0\0\0\0\0\0", 8) != 0) {
++
++ namesize = sizeof(fat32sb.s_label);
++ if ((*label = calloc(namesize + 1, 1)) != NULL) {
++ memcpy(*label, fat32sb.s_label, namesize);
++ (*label)[namesize] = 0;
++ remtrailspc(*label);
++ }
++ }
++ }
++
++ if (*label) {
++
++ /* Set UUID from serial */
++ uuid[0] = fat32sb.s_serial[3];
++ uuid[1] = fat32sb.s_serial[2];
++ uuid[2] = fat32sb.s_serial[1];
++ uuid[3] = fat32sb.s_serial[0];
++ memset(uuid+4, 0, 12);
++
++ rv = 0;
++ }
++ } else if (lseek(fd, 0, SEEK_SET) == 0
++ && read(fd, (char*) &fatsb, sizeof(fatsb)) == sizeof(fatsb)
++ && fatsb.s_sig[0] == 0x55
++ && fatsb.s_sig[1] == 0xAA
++ && (fatsb.s_media & 0xF0) == 0xF0
++ && fatsb.s_extsig == 0x29
++ && (memcmp(fatsb.s_fs, "FAT12 ", 8) == 0
++ || memcmp(fatsb.s_fs, "FAT16 ", 8) == 0
++ || memcmp(fatsb.s_fs, "FAT ", 8) == 0
++ || memcmp(fatsb.s_fs, "\0\0\0\0\0\0\0\0", 8) == 0)
++ && memcmp(fatsb.s_fs2, "FAT32 ", 8) != 0) {
++
++ *label = NULL;
++
++ if (read_volume_label_fat(fd, &fatsb, label) != 0) {
++
++ /* If no root directory entry volume name was found use the one from the boot sector */
++ if (memcmp(fatsb.s_label, "NO NAME ", 11) != 0 &&
++ memcmp(fatsb.s_label, " ", 11) != 0 &&
++ memcmp(fatsb.s_label, "\0\0\0\0\0\0\0\0", 8) != 0) {
++
++ namesize = sizeof(fatsb.s_label);
++ if ((*label = calloc(namesize + 1, 1)) != NULL) {
++ memcpy(*label, fatsb.s_label, namesize);
++ (*label)[namesize] = 0;
++ remtrailspc(*label);
++ }
++
++ }
++ }
++
++ if (*label) {
++
++ /* Set UUID from serial */
++ uuid[0] = fatsb.s_serial[3];
++ uuid[1] = fatsb.s_serial[2];
++ uuid[2] = fatsb.s_serial[1];
++ uuid[3] = fatsb.s_serial[0];
++ memset(uuid+4, 0, 12);
++
++ rv = 0;
++ }
++ }
+
+ close(fd);
+ return rv;
+diff -uNr util-linux-2.12/mount/linux_fs.h ../patch/util-linux-2.12/mount/linux_fs.h
+--- util-linux-2.12/mount/linux_fs.h 2003-07-05 22:16:32.000000000 +0200
++++ ../patch/util-linux-2.12/mount/linux_fs.h 2003-10-20 18:07:06.000000000 +0200
+@@ -122,13 +122,65 @@
+ u_char s_dummy[3];
+ u_char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
+ /* mtools-3.9.4 writes "MTOOL394" */
+- u_char s_dummy2[32];
++ u_char s_ssec[2]; /* bytes per sector */
++ u_char s_scluster; /* sectors per cluster */
++ u_char s_rsecs[2]; /* reserved sectors */
++ u_char s_nfats; /* number of FATs */
++ u_char s_dirents[2]; /* maximum root directory entries */
++ u_char s_nsecs[2]; /* total number of sectors */
++ u_char s_media; /* media type, upper nibble is 0xF */
++ u_char s_spfat[2]; /* sectors per fat */
++
++ u_char s_dummy2[14];
++ u_char s_extsig; /* extended signature */
++ u_char s_serial[4]; /* serial number */
+ u_char s_label[11]; /* for DOS? */
+- u_char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */
++ u_char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */
+ /* OS/2 BM has "FAT " here. */
+- u_char s_dummy3[9];
+- u_char s_label2[11]; /* for Windows? */
+- u_char s_fs2[8]; /* garbage or "FAT32 " */
++
++ u_char s_dummy3[20];
++ u_char s_fs2[8]; /* "FAT32 " */
++
++ u_char s_dummy4[420];
++ u_char s_sig[2]; /* 55 AA */
++};
++
++struct fat32_super_block {
++ u_char s_dummy[3];
++ u_char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
++ /* mtools-3.9.4 writes "MTOOL394" */
++
++ u_char s_ssec[2]; /* bytes per sector */
++ u_char s_scluster; /* sectors per cluster */
++ u_char s_rsecs[2]; /* reserved sectors */
++ u_char s_nfats; /* number of FATs */
++ u_char s_dirents[2]; /* maximum root directory entries */
++ u_char s_nsecs[2]; /* total number of sectors */
++ u_char s_media; /* media type, upper nibble is 0xF */
++ u_char s_spfat_old[2]; /* sectors per fat */
++
++ u_char s_dummy2[12];
++ u_char s_spfat[4]; /* sectors per FAT */
++ u_char s_mirror[2]; /* mirror flag */
++ u_char s_version[2]; /* fs version */
++ u_char s_rcluster[4]; /* root directory cluster */
++
++ u_char s_dummy3[18];
++ u_char s_extsig; /* extended signature 0x29 */
++ u_char s_serial[4]; /* serial number */
++ u_char s_label[11]; /* label */
++ u_char s_fs[8]; /* filesystem type "FAT32 " */
++
++ u_char s_dummy4[420];
++ u_char s_sig[2]; /* 55 AA */
++};
++
++struct fat_dirent {
++ u_char s_filename[11]; /* Filename with extension */
++ u_char s_attr; /* File attribute flags */
++ u_char s_dummy[14];
++ u_char s_cluster[2]; /* Starting cluster */
++ u_char s_size[4]; /* File size */
+ };
+
+ #define XFS_SUPER_MAGIC "XFSB"
diff --git a/sys-apps/util-linux/files/util-linux-2.12-gcloop.patch b/sys-apps/util-linux/files/util-linux-2.12-gcloop.patch
new file mode 100644
index 0000000..97be88c
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-gcloop.patch
@@ -0,0 +1,116 @@
+diff -ruN util-linux-2.12.orig/mount/lomount.c util-linux-2.12/mount/lomount.c
+--- util-linux-2.12.orig/mount/lomount.c 2004-02-17 02:08:05.341716624 +0100
++++ util-linux-2.12/mount/lomount.c 2004-02-17 02:12:10.653423576 +0100
+@@ -60,7 +60,8 @@
+ info->lo_flags = info64->lo_flags;
+ info->lo_init[0] = info64->lo_init[0];
+ info->lo_init[1] = info64->lo_init[1];
+- if (info->lo_encrypt_type == LO_CRYPT_CRYPTOAPI)
++ if ((info->lo_encrypt_type == LO_CRYPT_CRYPTOAPI) ||
++ (info->lo_encrypt_type == LO_CRYPT_COMPRESS))
+ memcpy(info->lo_name, info64->lo_crypt_name, LO_NAME_SIZE);
+ else
+ memcpy(info->lo_name, info64->lo_file_name, LO_NAME_SIZE);
+@@ -321,7 +322,8 @@
+
+ int
+ set_loop(const char *device, const char *file, int offset,
+- const char *encryption, int pfd, int *loopro) {
++ const char *encnumber,const char *encryption,
++ int pfd, int *loopro) {
+ struct loop_info64 loopinfo64;
+ int fd, ffd, mode;
+ char *pass;
+@@ -344,8 +346,9 @@
+ memset(&loopinfo64, 0, sizeof(loopinfo64));
+
+ xstrncpy(loopinfo64.lo_file_name, file, LO_NAME_SIZE);
+-
++
+ if (encryption && *encryption) {
++
+ if (digits_only(encryption)) {
+ loopinfo64.lo_encrypt_type = atoi(encryption);
+ } else {
+@@ -386,6 +389,12 @@
+ }
+ }
+
++ if (encnumber && *encnumber) {
++
++ if (digits_only(encnumber))
++ loopinfo64.lo_encrypt_type = atoi(encnumber);
++ }
++
+ loopinfo64.lo_offset = offset;
+
+ #ifdef MCL_FUTURE
+@@ -601,7 +610,7 @@
+
+ int
+ main(int argc, char **argv) {
+- char *offset, *encryption, *passfd;
++ char *offset, *encryption, *encnumber, *passfd;
+ int delete, off, c;
+ int res = 0;
+ int ro = 0;
+@@ -612,7 +621,7 @@
+ textdomain(PACKAGE);
+
+ delete = off = 0;
+- offset = encryption = passfd = NULL;
++ offset = encryption = encnumber = passfd = NULL;
+ progname = argv[0];
+ while ((c = getopt(argc,argv,"de:E:o:p:v")) != -1) {
+ switch (c) {
+@@ -620,6 +629,7 @@
+ delete = 1;
+ break;
+ case 'E':
++ encnumber = optarg;
+ case 'e':
+ encryption = optarg;
+ break;
+@@ -651,7 +661,7 @@
+ if (passfd && sscanf(passfd,"%d",&pfd) != 1)
+ usage();
+ res = set_loop(argv[optind], argv[optind+1], off,
+- encryption, pfd, &ro);
++ encnumber, encryption, pfd, &ro);
+ }
+ return res;
+ }
+diff -ruN util-linux-2.12.orig/mount/lomount.h util-linux-2.12/mount/lomount.h
+--- util-linux-2.12.orig/mount/lomount.h 2004-02-17 02:08:05.339716928 +0100
++++ util-linux-2.12/mount/lomount.h 2004-02-17 02:08:14.921260312 +0100
+@@ -1,6 +1,6 @@
+ extern int verbose;
+ extern int set_loop(const char *, const char *, int, const char *,
+- int, int *);
++ const char *, int, int *);
+ extern int del_loop(const char *);
+ extern int is_loop_device(const char *);
+ extern char * find_unused_loop_device(void);
+diff -ruN util-linux-2.12.orig/mount/loop.h util-linux-2.12/mount/loop.h
+--- util-linux-2.12.orig/mount/loop.h 2004-02-17 02:08:05.341716624 +0100
++++ util-linux-2.12/mount/loop.h 2004-02-17 02:08:14.922260160 +0100
+@@ -2,6 +2,7 @@
+ #define LO_CRYPT_XOR 1
+ #define LO_CRYPT_DES 2
+ #define LO_CRYPT_CRYPTOAPI 18
++#define LO_CRYPT_COMPRESS 19
+
+ #define LOOP_SET_FD 0x4C00
+ #define LOOP_CLR_FD 0x4C01
+diff -ruN util-linux-2.12.orig/mount/mount.c util-linux-2.12/mount/mount.c
+--- util-linux-2.12.orig/mount/mount.c 2004-02-17 02:08:05.281725744 +0100
++++ util-linux-2.12/mount/mount.c 2004-02-17 02:08:14.924259856 +0100
+@@ -612,7 +612,7 @@
+ offset = opt_offset ? strtoul(opt_offset, NULL, 0) : 0;
+ if (opt_keygen)
+ pfd = use_keygen_prog(opt_keygen, keygen_args, _n_keygen_args);
+- if (set_loop(*loopdev, *loopfile, offset,
++ if (set_loop(*loopdev, *loopfile, offset, NULL,
+ opt_encryption, pfd, &loopro)) {
+ if (verbose)
+ printf(_("mount: failed setting up loop device\n"));
diff --git a/sys-apps/util-linux/files/util-linux-2.12-kernel-2.6.patch b/sys-apps/util-linux/files/util-linux-2.12-kernel-2.6.patch
new file mode 100644
index 0000000..3f03c55
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-kernel-2.6.patch
@@ -0,0 +1,87 @@
+diff -ruN util-linux-2.12.orig/disk-utils/blockdev.c util-linux-2.12/disk-utils/blockdev.c
+--- util-linux-2.12.orig/disk-utils/blockdev.c 2002-03-08 23:57:02.000000000 +0100
++++ util-linux-2.12/disk-utils/blockdev.c 2003-10-16 18:26:53.048373136 +0200
+@@ -9,6 +9,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <sys/ioctl.h>
++#include <linux/version.h>
+
+ #include "nls.h"
+
+@@ -24,8 +25,13 @@
+ #define BLKRASET _IO(0x12,98)
+ #define BLKRAGET _IO(0x12,99)
+ #define BLKSSZGET _IO(0x12,104)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+ #define BLKBSZGET _IOR(0x12,112,sizeof(int))
+ #define BLKBSZSET _IOW(0x12,113,sizeof(int))
++#else
++#define BLKBSZGET _IOR(0x12,112,int)
++#define BLKBSZSET _IOW(0x12,113,int)
++#endif
+ #endif
+
+ /* Maybe <linux/hdreg.h> could be included */
+diff -ruN util-linux-2.12.orig/disk-utils/elvtune.c util-linux-2.12/disk-utils/elvtune.c
+--- util-linux-2.12.orig/disk-utils/elvtune.c 2002-03-08 23:57:49.000000000 +0100
++++ util-linux-2.12/disk-utils/elvtune.c 2003-10-16 18:26:53.048373136 +0200
+@@ -26,6 +26,8 @@
+ #include <sys/ioctl.h>
+ #include <unistd.h>
+ #include <stdlib.h>
++#include <linux/version.h>
++
+ #include "nls.h"
+
+ /* this has to match with the kernel structure */
+@@ -37,8 +39,13 @@
+ int max_bomb_segments;
+ } blkelv_ioctl_arg_t;
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+ #define BLKELVGET _IOR(0x12,106,sizeof(blkelv_ioctl_arg_t))
+ #define BLKELVSET _IOW(0x12,107,sizeof(blkelv_ioctl_arg_t))
++#else
++#define BLKELVGET _IOR(0x12,106,blkelv_ioctl_arg_t)
++#define BLKELVSET _IOW(0x12,107,blkelv_ioctl_arg_t)
++#endif
+
+ static void
+ usage(void) {
+diff -ruN util-linux-2.12.orig/fdisk/common.h util-linux-2.12/fdisk/common.h
+--- util-linux-2.12.orig/fdisk/common.h 2003-07-13 15:59:53.000000000 +0200
++++ util-linux-2.12/fdisk/common.h 2003-10-16 18:29:11.365345760 +0200
+@@ -2,11 +2,18 @@
+
+ /* including <linux/fs.h> fails */
+ #include <sys/ioctl.h>
++#include <linux/version.h>
++
+ #define BLKRRPART _IO(0x12,95) /* re-read partition table */
+ #define BLKGETSIZE _IO(0x12,96) /* return device size */
+ #define BLKFLSBUF _IO(0x12,97) /* flush buffer cache */
+ #define BLKSSZGET _IO(0x12,104) /* get block device sector size */
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+ #define BLKGETSIZE64 _IOR(0x12,114,8) /* 8 = sizeof(u64) */
++#else
++#define BLKGETSIZE64 _IOR(0x12,114,unsigned long long)
++#endif
+
+ /* including <linux/hdreg.h> also fails */
+ struct hd_geometry {
+diff -ruN util-linux-2.12.orig/mount/my_dev_t.h util-linux-2.12/mount/my_dev_t.h
+--- util-linux-2.12.orig/mount/my_dev_t.h 2003-07-16 22:05:50.000000000 +0200
++++ util-linux-2.12/mount/my_dev_t.h 2003-10-16 18:26:53.049372984 +0200
+@@ -4,4 +4,10 @@
+ /* for ancient systems use "unsigned short" */
+
+ #include <linux/posix_types.h>
++#include <linux/version.h>
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
+ #define my_dev_t __kernel_dev_t
++#else
++#define my_dev_t int
++#endif
diff --git a/sys-apps/util-linux/files/util-linux-2.12-mips-lseek.patch b/sys-apps/util-linux/files/util-linux-2.12-mips-lseek.patch
new file mode 100644
index 0000000..3fcd5b5
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-mips-lseek.patch
@@ -0,0 +1,24 @@
+Because there is no llseek defined for mips n32, we will use lseek instead.
+
+--- util-linux-2.12r/fdisk/sfdisk.c.orig
++++ util-linux-2.12r/fdisk/sfdisk.c
+@@ -172,7 +172,7 @@
+ * Note: we use 512-byte sectors here, irrespective of the hardware ss.
+ */
+ #undef use_lseek
+-#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (__s390x__)
++#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (__s390x__) || defined (__mips__)
+ #define use_lseek
+ #endif
+
+--- util-linux-2.12r/partx/partx.c.orig
++++ util-linux-2.12r/partx/partx.c
+@@ -333,7 +333,7 @@
+ /*
+ * sseek: seek to specified sector
+ */
+-#if !defined (__alpha__) && !defined (__ia64__) && !defined (__s390x__) && !defined(__x86_64__)
++#if !defined (__alpha__) && !defined (__ia64__) && !defined (__s390x__) && !defined(__x86_64__) && !defined(__mips__)
+ #define NEED__llseek
+ #endif
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12-only-root-can-remount.patch b/sys-apps/util-linux/files/util-linux-2.12-only-root-can-remount.patch
new file mode 100644
index 0000000..2a1d44c
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-only-root-can-remount.patch
@@ -0,0 +1,11 @@
+--- util-linux-2.13-pre2/mount/umount.c
++++ util-linux-2.13-pre3/mount/umount.c
+@@ -707,7 +707,7 @@
+
+ if (getuid () != geteuid ()) {
+ suid = 1;
+- if (all || types || nomtab || force)
++ if (all || types || nomtab || force || remount)
+ die (2, _("umount: only root can do that"));
+ }
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12-selinux.diff.bz2 b/sys-apps/util-linux/files/util-linux-2.12-selinux.diff.bz2
new file mode 100644
index 0000000..6e5382b
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-selinux.diff.bz2
Binary files differ
diff --git a/sys-apps/util-linux/files/util-linux-2.12-swapon-unistd.patch b/sys-apps/util-linux/files/util-linux-2.12-swapon-unistd.patch
new file mode 100644
index 0000000..982ab1d
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12-swapon-unistd.patch
@@ -0,0 +1,11 @@
+--- mount/swapon.c.orig 2004-05-07 15:21:06.909712000 +0000
++++ mount/swapon.c 2004-05-07 15:21:28.319712000 +0000
+@@ -21,6 +21,7 @@
+ #include <mntent.h>
+ #include <errno.h>
+ #include <sys/stat.h>
++#include <unistd.h>
+ #include "swap_constants.h"
+ #include "swapargs.h"
+ #include "nls.h"
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12i-fat-LABEL-support.patch b/sys-apps/util-linux/files/util-linux-2.12i-fat-LABEL-support.patch
new file mode 100644
index 0000000..41b7139
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12i-fat-LABEL-support.patch
@@ -0,0 +1,69 @@
+--- mount-2.12-fat.patch.orig 2004-11-11 20:16:07.165232227 -0500
++++ mount-2.12-fat.patch 2004-11-11 20:18:47.717923660 -0500
+@@ -1,11 +1,10 @@
+ diff -uNr util-linux-2.12/mount/get_label_uuid.c ../patch/util-linux-2.12/mount/get_label_uuid.c
+ --- util-linux-2.12/mount/get_label_uuid.c 2002-11-26 12:18:01.000000000 +0100
+ +++ ../patch/util-linux-2.12/mount/get_label_uuid.c 2003-10-20 18:27:56.000000000 +0200
+-@@ -43,7 +43,139 @@
+- #endif
++@@ -43,6 +43,137 @@
++ return rc;
+ }
+
+--/* for now, only ext2, ext3, xfs, ocfs are supported */
+ +/* Remove trailing spaces */
+ +static void remtrailspc(char *label) {
+ + char *c;
+@@ -137,29 +136,23 @@
+ + return -1;
+ +}
+ +
+-+
+-+/* for now, only ext2, ext3, xfs, ocfs, fat, fat32 are supported */
+- int
+- get_label_uuid(const char *device, char **label, char *uuid) {
+- int fd;
+-@@ -54,8 +186,10 @@
+- struct jfs_super_block jfssb;
+- struct ocfs_volume_header ovh; /* Oracle */
++ /*
++ * Get both label and uuid.
++ * For now, only ext2, ext3, xfs, ocfs, ocfs2, reiserfs are supported
++@@ -54,6 +186,8 @@
+ struct ocfs_volume_label olbl;
++ struct ocfs2_super_block osb;
++ struct reiserfs_super_block reiserfssb;
+ + struct fat_super_block fatsb;
+ + struct fat32_super_block fat32sb;
+
+-- fd = open(device, O_RDONLY);
+-+ fd = open(device, O_RDONLY);
++ fd = open(device, O_RDONLY);
+ if (fd < 0)
+- return rv;
+-
+-@@ -111,7 +245,87 @@
+- memcpy(*label, jfssb.s_label, namesize);
++@@ -111,6 +245,87 @@
+ }
+ rv = 0;
+-- }
+-+ } else if (lseek(fd, 0, SEEK_SET) == 0
++ }
+++ else if (lseek(fd, 0, SEEK_SET) == 0
+ + && read(fd, (char*) &fat32sb, sizeof(fat32sb)) == sizeof(fat32sb)
+ + && fat32sb.s_sig[0] == 0x55
+ + && fat32sb.s_sig[1] == 0xAA
+@@ -240,9 +233,9 @@
+ + rv = 0;
+ + }
+ + }
+-
+- close(fd);
+- return rv;
++ else if (lseek(fd, REISERFS_DISK_OFFSET_IN_BYTES, SEEK_SET)
++ == REISERFS_DISK_OFFSET_IN_BYTES
++ && read(fd, (char *) &reiserfssb, sizeof(reiserfssb))
+ diff -uNr util-linux-2.12/mount/linux_fs.h ../patch/util-linux-2.12/mount/linux_fs.h
+ --- util-linux-2.12/mount/linux_fs.h 2003-07-05 22:16:32.000000000 +0200
+ +++ ../patch/util-linux-2.12/mount/linux_fs.h 2003-10-20 18:07:06.000000000 +0200
diff --git a/sys-apps/util-linux/files/util-linux-2.12i-ignore-managed.patch b/sys-apps/util-linux/files/util-linux-2.12i-ignore-managed.patch
new file mode 100644
index 0000000..b6cb567
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12i-ignore-managed.patch
@@ -0,0 +1,11 @@
+--- util-linux-2.12a/mount/mount.c.sopwith 2004-03-04 20:28:22.000000000 -0500
++++ util-linux-2.12a/mount/mount.c 2004-07-16 16:50:18.792814782 -0400
+@@ -191,6 +191,8 @@
+ { "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */
+ { "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */
+ #endif
++ { "kudzu", 0, 0, 0 }, /* Silently remove this option (backwards compat use only) */
++ { "managed", 0, 0, 0 }, /* Silently remove this option */
+ { NULL, 0, 0, 0 }
+ };
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12i-nfsv4.patch b/sys-apps/util-linux/files/util-linux-2.12i-nfsv4.patch
new file mode 100644
index 0000000..864449b
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12i-nfsv4.patch
@@ -0,0 +1,456 @@
+diff -ur util-linux-2.12i.orig/mount/Makefile util-linux-2.12i/mount/Makefile
+--- util-linux-2.12i.orig/mount/Makefile 2004-11-11 20:03:33.032897551 -0500
++++ util-linux-2.12i/mount/Makefile 2004-11-11 20:04:38.279986828 -0500
+@@ -29,2 +29,4 @@
+
++NFS_OBJS += nfs4mount.o
++GEN_FILES += nfs4mount.c
+ all: $(PROGS)
+diff -ur util-linux-2.12i.orig/mount/mount.c util-linux-2.12i/mount/mount.c
+--- util-linux-2.12i.orig/mount/mount.c 2004-11-11 20:03:33.033897369 -0500
++++ util-linux-2.12i/mount/mount.c 2004-11-11 20:03:40.384555521 -0500
+@@ -810,6 +810,19 @@
+ "without support for the type `nfs'"));
+ #endif
+ }
++#ifdef HAVE_NFS
++ /*
++ * NFSv4 support
++ */
++ if (!fake && types && streq (types, "nfs4")) {
++ mnt_err = nfs4mount(spec, node, &flags, &extra_opts, &mount_opts, bg);
++ if (mnt_err)
++ return mnt_err;
++#else
++ die (EX_SOFTWARE, _("mount: this version was compiled "
++ "without support for the type `nfs4'"));
++#endif
++ }
+
+ block_signals (SIG_BLOCK);
+
+diff -ur util-linux-2.12i.orig/mount/sundries.h util-linux-2.12i/mount/sundries.h
+--- util-linux-2.12i.orig/mount/sundries.h 2004-11-11 20:03:33.034897186 -0500
++++ util-linux-2.12i/mount/sundries.h 2004-11-11 20:03:40.386555156 -0500
+@@ -37,6 +37,8 @@
+ #ifdef HAVE_NFS
+ int nfsmount (const char *spec, const char *node, int *flags,
+ char **orig_opts, char **opt_args, int *version, int running_bg);
++int nfs4mount (const char *spec, const char *node, int *flags,
++ char **orig_opts, char **opt_args, int running_bg);
+ #endif
+
+ /* exit status - bits below are ORed */
+diff -puN /dev/null mount/nfs4_mount.h
+--- /dev/null 2003-01-08 17:56:04.000000000 -0500
++++ util-linux-2.11z-bfields/mount/nfs4_mount.h 2003-04-23 16:40:57.000000000 -0400
+@@ -0,0 +1,82 @@
++#ifndef _LINUX_NFS4_MOUNT_H
++#define _LINUX_NFS4_MOUNT_H
++
++/*
++ * linux/include/linux/nfs4_mount.h
++ *
++ * Copyright (C) 2002 Trond Myklebust
++ *
++ * structure passed from user-space to kernel-space during an nfsv4 mount
++ */
++
++/*
++ * WARNING! Do not delete or change the order of these fields. If
++ * a new field is required then add it to the end. The version field
++ * tracks which fields are present. This will ensure some measure of
++ * mount-to-kernel version compatibility. Some of these aren't used yet
++ * but here they are anyway.
++ */
++#define NFS4_MOUNT_VERSION 1
++
++struct nfs_string {
++ unsigned int len;
++ const char* data;
++};
++
++struct nfs4_mount_data {
++ int version; /* 1 */
++ int flags; /* 1 */
++ int rsize; /* 1 */
++ int wsize; /* 1 */
++ int timeo; /* 1 */
++ int retrans; /* 1 */
++ int acregmin; /* 1 */
++ int acregmax; /* 1 */
++ int acdirmin; /* 1 */
++ int acdirmax; /* 1 */
++
++ /* see the definition of 'struct clientaddr4' in RFC3010 */
++ struct nfs_string client_addr; /* 1 */
++
++ /* Mount path */
++ struct nfs_string mnt_path; /* 1 */
++
++ /* Server details */
++ struct nfs_string hostname; /* 1 */
++ /* Server IP address */
++ unsigned int host_addrlen; /* 1 */
++ struct sockaddr* host_addr; /* 1 */
++
++ /* Transport protocol to use */
++ int proto; /* 1 */
++
++ /* Pseudo-flavours to use for authentication. See RFC2623 */
++ int auth_flavourlen; /* 1 */
++ int *auth_flavours; /* 1 */
++};
++
++/* bits in the flags field */
++/* Note: the fields that correspond to existing NFSv2/v3 mount options
++ * should mirror the values from include/linux/nfs_mount.h
++ */
++
++#define NFS4_MOUNT_SOFT 0x0001 /* 1 */
++#define NFS4_MOUNT_INTR 0x0002 /* 1 */
++#define NFS4_MOUNT_NOCTO 0x0010 /* 1 */
++#define NFS4_MOUNT_NOAC 0x0020 /* 1 */
++#define NFS4_MOUNT_STRICTLOCK 0x1000 /* 1 */
++#define NFS4_MOUNT_FLAGMASK 0xFFFF
++
++/* pseudoflavors: */
++
++#define RPC_AUTH_GSS_KRB5 390003
++#define RPC_AUTH_GSS_KRB5I 390004
++#define RPC_AUTH_GSS_KRB5P 390005
++#define RPC_AUTH_GSS_LKEY 390006
++#define RPC_AUTH_GSS_LKEYI 390007
++#define RPC_AUTH_GSS_LKEYP 390008
++#define RPC_AUTH_GSS_SPKM 390009
++#define RPC_AUTH_GSS_SPKMI 390010
++#define RPC_AUTH_GSS_SPKMP 390011
++
++#endif
+diff -puN /dev/null mount/nfs4mount.c
+--- /dev/null 2003-01-08 17:56:04.000000000 -0500
++++ util-linux-2.11z-bfields/mount/nfs4mount.c 2003-04-23 17:28:54.000000000 -0400
+@@ -0,0 +1,323 @@
++/*
++ * nfs4mount.c -- Linux NFS mount
++ * Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no>
++ *
++ * 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.
++ *
++ * Note: this file based on the original nfsmount.c
++ */
++
++#include "../defines.h" /* for HAVE_rpcsvc_nfs_prot_h and HAVE_inet_aton */
++
++#include <linux/posix_types.h>
++#include <asm/posix_types.h>
++#undef __FD_CLR
++#undef __FD_SET
++#undef __FD_ISSET
++#undef __FD_ZERO
++
++#include <unistd.h>
++#include <stdio.h>
++#include <string.h>
++#include <errno.h>
++#include <netdb.h>
++#include <time.h>
++#include <sys/socket.h>
++#include <sys/time.h>
++#include <sys/utsname.h>
++#include <sys/stat.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
++
++#include "sundries.h"
++
++#include "mount_constants.h"
++#include "nfs4_mount.h"
++
++#include "nls.h"
++
++#ifndef NFS_PORT
++#define NFS_PORT 2049
++#endif
++
++static int parse_devname(char *hostdir, char **hostname, char **dirname)
++{
++ char *s;
++
++ if (!(s = strchr(hostdir, ':'))) {
++ fprintf(stderr,
++ _("mount: "
++ "directory to mount not in host:dir format\n"));
++ return -1;
++ }
++ *hostname = hostdir;
++ *dirname = s + 1;
++ *s = '\0';
++ /* Ignore all but first hostname in replicated mounts
++ until they can be fully supported. (mack@sgi.com) */
++ if ((s = strchr(hostdir, ','))) {
++ *s = '\0';
++ fprintf(stderr,
++ _("mount: warning: "
++ "multiple hostnames not supported\n"));
++ }
++ return 0;
++}
++
++static int fill_ipv4_sockaddr(const char *hostname, struct sockaddr_in *addr)
++{
++ struct hostent *hp;
++ addr->sin_family = AF_INET;
++
++ if (inet_aton(hostname, &addr->sin_addr))
++ return 0;
++ if ((hp = gethostbyname(hostname)) == NULL) {
++ fprintf(stderr, _("mount: can't get address for %s\n"),
++ hostname);
++ return -1;
++ }
++ if (hp->h_length > sizeof(struct in_addr)) {
++ fprintf(stderr,
++ _("mount: got bad hp->h_length\n"));
++ hp->h_length = sizeof(struct in_addr);
++ }
++ memcpy(&addr->sin_addr, hp->h_addr, hp->h_length);
++ return 0;
++}
++
++static int get_my_ipv4addr(char *ip_addr, int len)
++{
++ char myname[1024];
++ struct sockaddr_in myaddr;
++
++ if (gethostname(myname, sizeof(myname))) {
++ fprintf(stderr, _("mount: can't determine client address\n"));
++ return -1;
++ }
++ if (fill_ipv4_sockaddr(myname, &myaddr))
++ return -1;
++ snprintf(ip_addr, len, "%s", inet_ntoa(myaddr.sin_addr));
++ ip_addr[len-1] = '\0';
++ return 0;
++}
++
++int nfs4mount(const char *spec, const char *node, int *flags,
++ char **extra_opts, char **mount_opts,
++ int running_bg)
++{
++ static struct nfs4_mount_data data;
++ static char hostdir[1024];
++ static char ip_addr[16] = "127.0.0.1";
++ static struct sockaddr_in server_addr;
++ static int pseudoflavour = 0;
++
++ char *hostname, *dirname, *old_opts;
++ char new_opts[1024];
++ char *opt, *opteq;
++ char *s;
++ int val;
++ int port, bg, soft, intr;
++ int nocto, noac;
++ int retry;
++ int retval;
++
++ retval = EX_FAIL;
++ if (strlen(spec) >= sizeof(hostdir)) {
++ fprintf(stderr, _("mount: "
++ "excessively long host:dir argument\n"));
++ goto fail;
++ }
++ strcpy(hostdir, spec);
++ if (parse_devname(hostdir, &hostname, &dirname))
++ goto fail;
++
++ if (fill_ipv4_sockaddr(hostname, &server_addr))
++ goto fail;
++ if (get_my_ipv4addr(ip_addr, sizeof(ip_addr)))
++ goto fail;
++
++ /* add IP address to mtab options for use when unmounting */
++ s = inet_ntoa(server_addr.sin_addr);
++ old_opts = *extra_opts;
++ if (!old_opts)
++ old_opts = "";
++ if (strlen(old_opts) + strlen(s) + 10 >= sizeof(new_opts)) {
++ fprintf(stderr, _("mount: "
++ "excessively long option argument\n"));
++ goto fail;
++ }
++ snprintf(new_opts, sizeof(new_opts), "%s%saddr=%s",
++ old_opts, *old_opts ? "," : "", s);
++ *extra_opts = xstrdup(new_opts);
++
++ /* Set default options.
++ * rsize/wsize and timeo are left 0 in order to
++ * let the kernel decide.
++ */
++ memset(&data, 0, sizeof(data));
++ data.retrans = 3;
++ data.acregmin = 3;
++ data.acregmax = 60;
++ data.acdirmin = 30;
++ data.acdirmax = 60;
++ data.proto = IPPROTO_TCP;
++
++ bg = 0;
++ soft = 0;
++ intr = 0;
++ nocto = 0;
++ noac = 0;
++ retry = 10000; /* 10000 minutes ~ 1 week */
++
++ /*
++ * NFSv4 specifies that the default port should be 2049
++ */
++ port = NFS_PORT;
++
++ /* parse options */
++
++ for (opt = strtok(old_opts, ","); opt; opt = strtok(NULL, ",")) {
++ if ((opteq = strchr(opt, '='))) {
++ val = atoi(opteq + 1);
++ *opteq = '\0';
++ if (!strcmp(opt, "rsize"))
++ data.rsize = val;
++ else if (!strcmp(opt, "wsize"))
++ data.wsize = val;
++ else if (!strcmp(opt, "timeo"))
++ data.timeo = val;
++ else if (!strcmp(opt, "retrans"))
++ data.retrans = val;
++ else if (!strcmp(opt, "acregmin"))
++ data.acregmin = val;
++ else if (!strcmp(opt, "acregmax"))
++ data.acregmax = val;
++ else if (!strcmp(opt, "acdirmin"))
++ data.acdirmin = val;
++ else if (!strcmp(opt, "acdirmax"))
++ data.acdirmax = val;
++ else if (!strcmp(opt, "actimeo")) {
++ data.acregmin = val;
++ data.acregmax = val;
++ data.acdirmin = val;
++ data.acdirmax = val;
++ }
++ else if (!strcmp(opt, "retry"))
++ retry = val;
++ else if (!strcmp(opt, "port"))
++ port = val;
++ else if (!strcmp(opt, "proto")) {
++ if (!strncmp(opteq+1, "tcp", 3))
++ data.proto = IPPROTO_TCP;
++ else if (!strncmp(opteq+1, "udp", 3))
++ data.proto = IPPROTO_UDP;
++ else
++ printf(_("Warning: Unrecognized proto= option.\n"));
++ } else if (!strcmp(opt, "clientaddr")) {
++ if (strlen(opteq+1) >= sizeof(ip_addr))
++ printf(_("Invalid client address %s"),
++ opteq+1);
++ strncpy(ip_addr,opteq+1, sizeof(ip_addr));
++ ip_addr[sizeof(ip_addr)-1] = '\0';
++ } else if (!strcmp(opt, "sec")) {
++ if (!strncmp(opteq+1, "krb5i",5))
++ pseudoflavour = 390004;
++ else if (!strncmp(opteq+1, "krb5p",5))
++ pseudoflavour = 390005;
++ else if (!strncmp(opteq+1, "krb5",4))
++ pseudoflavour = 390003;
++ else {
++ printf(_("unknown security type %s\n"),
++ opteq+1);
++ goto fail;
++ }
++ } else if (!strcmp(opt, "addr")) {
++ /* ignore */;
++ } else {
++ printf(_("unknown nfs mount parameter: "
++ "%s=%d\n"), opt, val);
++ goto fail;
++ }
++ } else {
++ val = 1;
++ if (!strncmp(opt, "no", 2)) {
++ val = 0;
++ opt += 2;
++ }
++ if (!strcmp(opt, "bg"))
++ bg = val;
++ else if (!strcmp(opt, "fg"))
++ bg = !val;
++ else if (!strcmp(opt, "soft"))
++ soft = val;
++ else if (!strcmp(opt, "hard"))
++ soft = !val;
++ else if (!strcmp(opt, "intr"))
++ intr = val;
++ else if (!strcmp(opt, "cto"))
++ nocto = !val;
++ else if (!strcmp(opt, "ac"))
++ noac = !val;
++ else {
++ if (!sloppy) {
++ printf(_("unknown nfs mount option: "
++ "%s%s\n"), val ? "" : "no", opt);
++ goto fail;
++ }
++ }
++ }
++ }
++
++ data.flags = (soft ? NFS4_MOUNT_SOFT : 0)
++ | (intr ? NFS4_MOUNT_INTR : 0)
++ | (nocto ? NFS4_MOUNT_NOCTO : 0)
++ | (noac ? NFS4_MOUNT_NOAC : 0);
++
++ if (pseudoflavour != 0) {
++ data.auth_flavourlen = 1;
++ data.auth_flavours = &pseudoflavour;
++ }
++
++ data.client_addr.data = ip_addr;
++ data.client_addr.len = strlen(ip_addr);
++
++ data.mnt_path.data = dirname;
++ data.mnt_path.len = strlen(dirname);
++
++ data.hostname.data = hostname;
++ data.hostname.len = strlen(hostname);
++ data.host_addr = (struct sockaddr *)&server_addr;
++ data.host_addrlen = sizeof(server_addr);
++
++#ifdef NFS_MOUNT_DEBUG
++ printf("rsize = %d, wsize = %d, timeo = %d, retrans = %d\n",
++ data.rsize, data.wsize, data.timeo, data.retrans);
++ printf("acreg (min, max) = (%d, %d), acdir (min, max) = (%d, %d)\n",
++ data.acregmin, data.acregmax, data.acdirmin, data.acdirmax);
++ printf("port = %d, bg = %d, retry = %d, flags = %.8x\n",
++ port, bg, retry, data.flags);
++ printf("soft = %d, intr = %d, nocto = %d, noac = %d\n",
++ (data.flags & NFS4_MOUNT_SOFT) != 0,
++ (data.flags & NFS4_MOUNT_INTR) != 0,
++ (data.flags & NFS4_MOUNT_NOCTO) != 0,
++ (data.flags & NFS4_MOUNT_NOAC) != 0);
++ printf("proto = %s\n", (data.proto == IPPROTO_TCP) ? "tcp" : "udp");
++#endif
++
++ data.version = NFS4_MOUNT_VERSION;
++
++ *mount_opts = (char *) &data;
++ /* clean up */
++ return 0;
++
++fail:
++ return retval;
++}
diff --git a/sys-apps/util-linux/files/util-linux-2.12i-pic.patch b/sys-apps/util-linux/files/util-linux-2.12i-pic.patch
new file mode 100644
index 0000000..8fb91be
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12i-pic.patch
@@ -0,0 +1,59 @@
+diff -ur util-linux-2.12i.orig/fdisk/llseek.c util-linux-2.12i/fdisk/llseek.c
+--- util-linux-2.12i.orig/fdisk/llseek.c 2004-11-11 20:08:34.074942938 -0500
++++ util-linux-2.12i/fdisk/llseek.c 2004-11-11 20:09:43.040353443 -0500
+@@ -3,6 +3,9 @@
+ *
+ * Copyright (C) 1994 Remy Card. This file may be redistributed
+ * under the terms of the GNU Public License.
++ *
++ * Changes:
++ * 20030712 - Alexander Gabert <pappy@nikita.ath.cx> - adding PIC defines
+ */
+
+ #include <sys/types.h>
+@@ -19,7 +22,9 @@
+
+ #else /* HAVE_LLSEEK */
+
+-#if defined(__alpha__) || defined(__ia64__) || defined(__s390x__)
++/* do not use assembler to put together syscalls at compile time (for llseek for example) when using PIC */
++#if defined(__alpha__) || defined(__ia64__) || defined(__s390x__) \
++ || defined(__PIC__) || defined(__pic__)
+
+ #define my_llseek lseek
+
+diff -ur util-linux-2.12i.orig/fdisk/sfdisk.c util-linux-2.12i/fdisk/sfdisk.c
+--- util-linux-2.12i.orig/fdisk/sfdisk.c 2004-11-11 20:08:34.074942938 -0500
++++ util-linux-2.12i/fdisk/sfdisk.c 2004-11-11 20:11:07.242982424 -0500
+@@ -30,6 +30,7 @@
+ * 19990319 - Arnaldo Carvalho de Melo <acme@conectiva.com.br> - i18n
+ * 20040428 - Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com> - added PACKED
+ * 20040824 - David A. Wheeler <dwheeler@dwheeler.com> - warnings to stderr
++ * 20030712 - Alexander Gabert <pappy@nikita.ath.cx> - adding PIC defines
+ */
+
+ #define PROGNAME "sfdisk"
+@@ -172,7 +173,9 @@
+ * Note: we use 512-byte sectors here, irrespective of the hardware ss.
+ */
+ #undef use_lseek
+-#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (__s390x__)
++/* do not use the assembler constructed syscalls for seeking if compiled as PIC */
++#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) || defined (__s390x__) \
++ || defined(__PIC__) && defined(__pic__)
+ #define use_lseek
+ #endif
+
+diff -ur util-linux-2.12i.orig/partx/partx.c util-linux-2.12i/partx/partx.c
+--- util-linux-2.12i.orig/partx/partx.c 2004-11-11 20:08:34.155928155 -0500
++++ util-linux-2.12i/partx/partx.c 2004-11-11 20:12:34.740010020 -0500
+@@ -333,7 +333,8 @@
+ /*
+ * sseek: seek to specified sector
+ */
+-#if !defined (__alpha__) && !defined (__ia64__) && !defined (__s390x__) && !defined(__x86_64__)
++#if !defined (__alpha__) && !defined (__ia64__) && !defined (__s390x__) && !defined(__x86_64__) \
++ && !defined(__PIC__) && !defined(__pic__)
+ #define NEED__llseek
+ #endif
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12i-swapon-check-symlinks.patch b/sys-apps/util-linux/files/util-linux-2.12i-swapon-check-symlinks.patch
new file mode 100644
index 0000000..b9ed346
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12i-swapon-check-symlinks.patch
@@ -0,0 +1,33 @@
+--- util-linux-2.12b/mount/swapon.c.orig 2004-10-28 10:02:44.320023600 -0400
++++ util-linux-2.12b/mount/swapon.c 2004-10-28 10:02:14.384574000 -0400
+@@ -22,2 +22,3 @@
+ #include <stdlib.h>
++#include <sys/param.h>
+ #include <stdio.h>
+@@ -143,10 +144,26 @@
+ static int
+ is_in_proc_swaps(char *fname) {
+ int i;
++ struct stat fstatbuf;
+
+ for (i = 0; i < numSwaps; i++)
+ if (!strcmp(fname, swapFiles[i]))
+ return 1;
++
++ /* fallback:
++ * if the device in /etc/fstab is a symlink, the entry
++ * in /proc/swaps won't match because the kernel stores
++ * absolute pathnames. Here we compare dev_t's.
++ */
++ if (!lstat(fname, &fstatbuf))
++ if (S_ISLNK(fstatbuf.st_mode)) {
++ struct stat swapstatbuf;
++ for (i = 0; i < numSwaps; i++)
++ if (!stat(swapFiles[i], &swapstatbuf) && \
++ swapstatbuf.st_dev == fstatbuf.st_dev)
++ return 1;
++ }
++
+ return 0;
+ }
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12p-swapon-check-symlinks.patch b/sys-apps/util-linux/files/util-linux-2.12p-swapon-check-symlinks.patch
new file mode 100644
index 0000000..f421458
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12p-swapon-check-symlinks.patch
@@ -0,0 +1,34 @@
+--- util-linux-2.12b/mount/swapon.c
++++ util-linux-2.12b/mount/swapon.c
+@@ -7,2 +7,3 @@
+ #include <stdlib.h>
++#include <sys/param.h>
+ #include <stdio.h>
+@@ -137,10 +138,27 @@
+ static int
+ is_in_proc_swaps(const char *fname) {
+ int i;
++ struct stat fstatbuf;
+
+ for (i = 0; i < numSwaps; i++)
+ if (swapFiles[i] && !strcmp(fname, swapFiles[i]))
+ return 1;
++
++ /* fallback:
++ * if the device in /etc/fstab is a symlink, the entry
++ * in /proc/swaps won't match because the kernel stores
++ * absolute pathnames. Here we compare dev_t's.
++ */
++ if (!lstat(fname, &fstatbuf))
++ if (S_ISLNK(fstatbuf.st_mode)) {
++ struct stat swapstatbuf;
++ stat(fname, &fstatbuf);
++ for (i = 0; i < numSwaps; i++)
++ if (swapFiles[i] && !stat(swapFiles[i], &swapstatbuf) && \
++ swapstatbuf.st_rdev == fstatbuf.st_rdev)
++ return 1;
++ }
++
+ return 0;
+ }
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-debian-10cfdisk.patch b/sys-apps/util-linux/files/util-linux-2.12q-debian-10cfdisk.patch
new file mode 100644
index 0000000..6105fb1
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-debian-10cfdisk.patch
@@ -0,0 +1,49 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 10cfdisk.dpatch by LaMont Jones <lamont@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Buffer overruns with narrow terminal windows.
+
+@DPATCH@
+diff -urNad util-linux/fdisk/cfdisk.c /tmp/dpep.rEB26p/util-linux/fdisk/cfdisk.c
+--- util-linux/fdisk/cfdisk.c 2004-12-24 14:41:20.000000000 -0700
++++ /tmp/dpep.rEB26p/util-linux/fdisk/cfdisk.c 2004-12-24 15:00:00.503453740 -0700
+@@ -2100,7 +2100,7 @@
+ if (to_file) {
+ if ((fp = fopen(fname, "w")) == NULL) {
+ char errstr[LINE_LENGTH];
+- sprintf(errstr, _("Cannot open file '%s'"), fname);
++ snprintf(errstr, sizeof(errstr), _("Cannot open file '%s'"), fname);
+ print_warning(errstr);
+ return;
+ }
+@@ -2184,7 +2184,7 @@
+ if (to_file) {
+ if ((fp = fopen(fname, "w")) == NULL) {
+ char errstr[LINE_LENGTH];
+- sprintf(errstr, _("Cannot open file '%s'"), fname);
++ snprintf(errstr, sizeof(errstr), _("Cannot open file '%s'"), fname);
+ print_warning(errstr);
+ return;
+ }
+@@ -2638,9 +2638,9 @@
+ mvaddstr(WARNING_START, 0, line);
+
+
+- sprintf(line, "cfdisk %s", VERSION);
++ snprintf(line, COLS+1, "cfdisk %s", VERSION);
+ mvaddstr(HEADER_START, (COLS-strlen(line))/2, line);
+- sprintf(line, _("Disk Drive: %s"), disk_device);
++ snprintf(line, COLS+1, _("Disk Drive: %s"), disk_device);
+ mvaddstr(HEADER_START+2, (COLS-strlen(line))/2, line);
+ {
+ long long bytes = actual_size*(long long) SECTOR_SIZE;
+@@ -2654,7 +2654,7 @@
+ bytes, megabytes/K, (10*megabytes/K)%10);
+ }
+ mvaddstr(HEADER_START+3, (COLS-strlen(line))/2, line);
+- sprintf(line, _("Heads: %d Sectors per Track: %d Cylinders: %lld"),
++ snprintf(line, COLS+1, _("Heads: %d Sectors per Track: %d Cylinders: %lld"),
+ heads, sectors, cylinders);
+ mvaddstr(HEADER_START+4, (COLS-strlen(line))/2, line);
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-dont-umask.patch b/sys-apps/util-linux/files/util-linux-2.12q-dont-umask.patch
new file mode 100644
index 0000000..704c258
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-dont-umask.patch
@@ -0,0 +1,17 @@
+Don't force umask to 022 or the -o umask option doesn't work.
+
+Patch by Daniel Drake.
+
+http://bugs.gentoo.org/93671
+
+--- mount/mount.c
++++ mount/mount.c
+@@ -1491,8 +1491,6 @@ main(int argc, char *argv[]) {
+ if ((p = strrchr(progname, '/')) != NULL)
+ progname = p+1;
+
+- umask(022);
+-
+ /* People report that a mount called from init without console
+ writes error messages to /etc/mtab
+ Let us try to avoid getting fd's 0,1,2 */
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-i18n-update.patch b/sys-apps/util-linux/files/util-linux-2.12q-i18n-update.patch
new file mode 100644
index 0000000..a47810c
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-i18n-update.patch
@@ -0,0 +1,10 @@
+DELACOUR Guillaume reports:
+i18n: Typo in french translation of mount error
+http://bugs.gentoo.org/show_bug.cgi?id=75693
+--- po/fr.po
++++ po/fr.po
+@@ -8358,3 +8358,3 @@
+ msgid "%s looks like swapspace - not mounted"
+-msgstr "%s ressemble à un esapce de swap - n'a pas été monté"
++msgstr "%s ressemble à un espace de swap - n'a pas été monté"
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-more-fake-checks-v2.patch b/sys-apps/util-linux/files/util-linux-2.12q-more-fake-checks-v2.patch
new file mode 100644
index 0000000..f598a8d
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-more-fake-checks-v2.patch
@@ -0,0 +1,40 @@
+> Running `mount -fv /mnt/pnt` incorrectly updates /etc/mtab
+
+This one is bogus.
+
+Manpage:
+
+=====
+-f Causes everything to be done except for the actual system call;
+ if it's not obvious, this ``fakes'' mounting the file system. This option
+ is useful in conjunction with the -v flag to determine what the mount
+ command is trying to do. It can also be used to add entries for devices that
+ were mounted earlier with the -n option.
+=====
+
+Also, we need it in /etc/init.d/checkroot to regen /etc/mtab ...
+
+
+=======================================================================
+Running `mount -afvt type` incorrectly warns that 'nothing was mounted'
+
+--- mount/mount.c
++++ mount/mount.c
+#@@ -659,7 +659,7 @@
+# if (verbose)
+# print_one (&mnt);
+#
+#- if (!nomtab && mtab_is_writable()) {
+#+ if (!fake && !nomtab && mtab_is_writable()) {
+# if (flags & MS_REMOUNT)
+# update_mtab (mnt.mnt_dir, &mnt);
+# else {
+@@ -1629,7 +1629,7 @@
+ case 0:
+ /* mount -a */
+ result = do_mount_all (types, options, test_opts);
+- if (result == 0 && verbose)
++ if (result == 0 && verbose && !fake)
+ error(_("nothing was mounted"));
+ break;
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-no-m68k-fdisk.patch b/sys-apps/util-linux/files/util-linux-2.12q-no-m68k-fdisk.patch
new file mode 100644
index 0000000..6d3334f
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-no-m68k-fdisk.patch
@@ -0,0 +1,15 @@
+Disable building fdisk on m68k
+
+--- fdisk/Makefile
++++ fdisk/Makefile
+@@ -18,8 +18,10 @@
+ endif
+ endif
+
++ifneq "$(ARCH)" "m68k"
+ SBIN:=$(SBIN) fdisk
+ MAN8:=$(MAN8) fdisk.8
++endif
+
+ ifneq "$(ARCH)" "sparc"
+ SBIN:=$(SBIN) $(CFDISK) sfdisk
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-umount-dont-write-mtab-with-remount.patch b/sys-apps/util-linux/files/util-linux-2.12q-umount-dont-write-mtab-with-remount.patch
new file mode 100644
index 0000000..2b8f4ad
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-umount-dont-write-mtab-with-remount.patch
@@ -0,0 +1,18 @@
+Make umount respect the -n option when using -r
+
+Patch by Derick Swanepoel
+
+http://bugs.gentoo.org/98675
+
+--- mount/umount.c
++++ mount/umount.c
+@@ -349,7 +349,8 @@
+ remnt.mnt_type = remnt.mnt_fsname = NULL;
+ remnt.mnt_dir = xstrdup(node);
+ remnt.mnt_opts = xstrdup("ro");
+- update_mtab(node, &remnt);
++ if (!nomtab && mtab_is_writable())
++ update_mtab(node, &remnt);
+ return 0;
+ } else if (errno != EBUSY) { /* hmm ... */
+ perror("remount");
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-update-mtab-when-moving.patch b/sys-apps/util-linux/files/util-linux-2.12q-update-mtab-when-moving.patch
new file mode 100644
index 0000000..aa921f5
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-update-mtab-when-moving.patch
@@ -0,0 +1,33 @@
+Running `mount --move /foo /bar` would leave the old /foo entry in /etc/mtab
+and create a new /bar entry with wrong info.
+
+http://bugs.gentoo.org/104697
+
+--- 1/mount/mount.c
++++ 2/mount/mount.c
+@@ -665,6 +665,25 @@
+ else {
+ mntFILE *mfp;
+
++ /* when moving a mount point, we have to make sure the mtab
++ * gets updated properly. We get info about the old mount
++ * point, copy it to the new mount point, and then delete
++ * the old mount point. */
++ if (flags & MS_MOVE) {
++ const char *olddir = mnt.mnt_fsname;
++ struct mntentchn *oldmc = oldmc = getmntfile(olddir);
++ if (oldmc != NULL) {
++ mnt.mnt_fsname = xstrdup(oldmc->m.mnt_fsname);
++ mnt.mnt_type = oldmc->m.mnt_type;
++ mnt.mnt_opts = oldmc->m.mnt_opts;
++ mnt.mnt_freq = oldmc->m.mnt_freq;
++ mnt.mnt_passno = oldmc->m.mnt_passno;
++ }
++ update_mtab(olddir, NULL);
++ if (oldmc != NULL)
++ my_free(olddir);
++ }
++
+ lock_mtab();
+ mfp = my_setmntent(MOUNTED, "a+");
+ if (mfp == NULL || mfp->mntent_fp == NULL) {
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-update_mtab-fixes.patch b/sys-apps/util-linux/files/util-linux-2.12q-update_mtab-fixes.patch
new file mode 100644
index 0000000..7e1c9db
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-update_mtab-fixes.patch
@@ -0,0 +1,68 @@
+This fixes a few issues with update_mtab():
+- If it is a remount, and only mnt_opts needs updating, mc->m.mnt_opts is set
+ to point to instead->mnt_opts, rather than allocating a new string, which
+ would cause a double free if the caller actually freed the passed mnt_opts,
+ as we free mc->m.mnt_opts before returning to the caller.
+- Mostly the same issue as above. If mtab does not contain the new entry, then
+ absent->m is set to point to instead, which would have cause a double free
+ if absent was inserted properly into the linked list, since we free all
+ elements of absent before returning to the caller.
+- If mtab does not contain the new entry, then only mc0->prev is updated to
+ point to absent, but not the old mc0->prev's nxt pointer. Because we then
+ use the nxt pointers to write the new mtab, absent is not added to the new
+ mtab.
+- If mtab is empty, absent->prev should be set to mc0, and not mc0->prev, as
+ it will be NULL.
+- Memory leak if we have to abort before mc0 and co are freed.
+
+Patch by Martin Schlemmer <azarah@gentoo.org>
+
+
+--- util-linux-2.12q/mount/fstab.c 2005-09-14 15:30:10.000000000 +0200
++++ util-linux-2.12q.az/mount/fstab.c 2005-09-14 15:31:48.000000000 +0200
+@@ -604,15 +604,32 @@ update_mtab (const char *dir, struct my_
+ free(mc);
+ }
+ } else {
+- /* A remount */
+- mc->m.mnt_opts = instead->mnt_opts;
++ /* A remount. */
++ my_free(mc->m.mnt_opts);
++ /* Need to alloc memory, else we might
++ * run into issues if both we and the caller frees
++ * mnt_opts ... */
++ mc->m.mnt_opts = xstrdup(instead->mnt_opts);
+ }
+ } else if (instead) {
+ /* not found, add a new entry */
+ absent = xmalloc(sizeof(*absent));
+- absent->m = *instead;
++ /* Cannot just set absent->m to instead, as we free absent
++ * below, and the caller might free instead */
++ absent->m.mnt_fsname = xstrdup(instead->mnt_fsname);
++ absent->m.mnt_dir = xstrdup(instead->mnt_dir);
++ absent->m.mnt_type = xstrdup(instead->mnt_type);
++ absent->m.mnt_opts = xstrdup(instead->mnt_opts);
++ absent->m.mnt_freq = instead->mnt_freq;
++ absent->m.mnt_passno = instead->mnt_passno;
++
+ absent->nxt = mc0;
+- absent->prev = mc0->prev;
++ if (mc0->prev != NULL) {
++ absent->prev = mc0->prev;
++ mc0->prev->nxt = absent;
++ } else {
++ absent->prev = mc0;
++ }
+ mc0->prev = absent;
+ if (mc0->nxt == NULL)
+ mc0->nxt = absent;
+@@ -624,6 +641,8 @@ update_mtab (const char *dir, struct my_
+ int errsv = errno;
+ error (_("cannot open %s (%s) - mtab not updated"),
+ MOUNTED_TEMP, strerror (errsv));
++ /* Do not leak memory */
++ discard_mntentchn(mc0);
+ goto leave;
+ }
+
diff --git a/sys-apps/util-linux/files/util-linux-2.12q-use-update_mtab-for-fake.patch b/sys-apps/util-linux/files/util-linux-2.12q-use-update_mtab-for-fake.patch
new file mode 100644
index 0000000..5d0b436
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12q-use-update_mtab-for-fake.patch
@@ -0,0 +1,16 @@
+Use update_mtab() to update /etc/mtab on fake mounts (mount -f), else we get
+dup entries in /etc/mtab.
+
+Patch by Mike Frysinger <vapier@gentoo.org>
+
+--- util-linux-2.12q/mount/mount.c 2005-09-14 15:37:43.000000000 +0200
++++ util-linux-2.12q.az/mount/mount.c 2005-09-14 15:27:14.000000000 +0200
+@@ -662,7 +662,7 @@ update_mtab_entry(const char *spec, cons
+ print_one (&mnt);
+
+ if (!nomtab && mtab_is_writable()) {
+- if (flags & MS_REMOUNT)
++ if (fake || (flags & MS_REMOUNT))
+ update_mtab (mnt.mnt_dir, &mnt);
+ else {
+ mntFILE *mfp;
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h-loop-aes.patch b/sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h-loop-aes.patch
new file mode 100644
index 0000000..8c5bbc7
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h-loop-aes.patch
@@ -0,0 +1,18 @@
+fix building when asm/page.h is not available
+
+http://bugs.gentoo.org/168278
+
+the loop-aes patch adds this ...
+
+--- mount/swapon.c
++++ mount/swapon.c
+@@ -31,7 +31,9 @@
+ #include <sys/ioctl.h>
+ #include <sys/utsname.h>
+ #include <sys/time.h>
++#ifdef HAVE_asm_page_h
+ #include <asm/page.h>
++#endif
+ #include "xmalloc.h"
+ #include "swap_constants.h"
+ #include "swapargs.h"
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h.patch b/sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h.patch
new file mode 100644
index 0000000..21c0470
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-HAVE_asm_page_h.patch
@@ -0,0 +1,16 @@
+fix building when asm/page.h is not available
+
+http://bugs.gentoo.org/168278
+
+--- disk-utils/fsck.cramfs.c
++++ disk-utils/fsck.cramfs.c
+@@ -76,7 +76,9 @@
+
+ #define PAD_SIZE 512
+
++#ifdef HAVE_asm_page_h
+ #include <asm/page.h>
++#endif
+ #ifdef PAGE_SIZE
+ #define PAGE_CACHE_SIZE ((int) PAGE_SIZE)
+ #elif defined __ia64__
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-cal-dumb-terminal.patch b/sys-apps/util-linux/files/util-linux-2.12r-cal-dumb-terminal.patch
new file mode 100644
index 0000000..073506e
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-cal-dumb-terminal.patch
@@ -0,0 +1,37 @@
+If you try to use cal on a terminal which doesnt support highlighting,
+Senter and Sexit will be set to NULL instead of "" which will cause the
+resulting output to be off:
+
+$ env TERM=dumb cal
+ December 2005
+Su Mo Tu We Th Fr Sa
+ 1 2 3
+ 4 5 6 7 8 9 10
+111 13 14 15 16 17
+18 19 20 21 22 23 24
+25 26 27 28 29 30 31
+
+http://bugs.gentoo.org/112406
+
+--- util-linux/misc-utils/cal.c
++++ util-linux/misc-utils/cal.c
+@@ -89,7 +89,8 @@
+
+ static char *
+ my_tgetstr(char *s, char *ss) {
+- return tigetstr(ss);
++ char *ret = tigetstr(ss);
++ return (ret == NULL ? "" : ret);
+ }
+
+ #elif defined(HAVE_termcap)
+@@ -112,7 +113,8 @@
+
+ static char *
+ my_tgetstr(char *s, char *ss) {
+- return tgetstr(s, &strbuf);
++ char *ret = tgetstr(s, &strbuf);
++ return (ret == NULL ? "" : ret);
+ }
+
+ #endif
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-cracklib-words.patch b/sys-apps/util-linux/files/util-linux-2.12r-cracklib-words.patch
new file mode 100644
index 0000000..30bc7e0
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-cracklib-words.patch
@@ -0,0 +1,19 @@
+--- misc-utils/look.c
++++ misc-utils/look.c
+@@ -137,7 +137,15 @@
+ *++p = '\0';
+
+ if ((fd = open(file, O_RDONLY, 0)) < 0 || fstat(fd, &sb))
+- err("%s: %s", file, strerror(errno));
++ {
++ /* if opening the primary file failed, fall back to cracklib word files */
++ file = "/usr/share/dict/cracklib-words";
++ if ((fd = open(file, O_RDONLY, 0)) < 0 || fstat(fd, &sb)) {
++ file = "/usr/share/dict/cracklib-small";
++ if ((fd = open(file, O_RDONLY, 0)) < 0 || fstat(fd, &sb))
++ err("%s: %s\n\tplease emerge sys-apps/cracklib-words or sys-apps/miscfiles", file, strerror(errno));
++ }
++ }
+ front = mmap(NULL, (size_t) sb.st_size, PROT_READ,
+ #ifdef MAP_FILE
+ MAP_FILE |
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-fdisk-frame-pointers.patch b/sys-apps/util-linux/files/util-linux-2.12r-fdisk-frame-pointers.patch
new file mode 100644
index 0000000..1ad2916
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-fdisk-frame-pointers.patch
@@ -0,0 +1,12 @@
+--- fdisk/Makefile.orig 2005-10-15 14:30:56.000000000 +0000
++++ fdisk/Makefile 2005-10-15 14:33:02.000000000 +0000
+@@ -6,6 +6,9 @@
+ include ../make_include
+ include ../MCONFIG
+
++# fdisk when built with ssp and omiting -fomit-frame-pointer causes fdisk/cfdisk/sfdisk to not see the device
++CFLAGS += -fno-omit-frame-pointer
++
+ MAN8=
+ SBIN=
+ CFDISK=cfdisk
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-no-_syscall.patch b/sys-apps/util-linux/files/util-linux-2.12r-no-_syscall.patch
new file mode 100644
index 0000000..fb5ab38
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-no-_syscall.patch
@@ -0,0 +1,53 @@
+newer kernel headers stop exporting _syscall#() macro's, so let's insert
+some workarounds to handle this ...
+
+util-linux-2.13 doesnt use _syscall#() anymore
+
+http://bugs.gentoo.org/150852
+
+--- lib/my-syscall.h
++++ lib/my-syscall.h
+@@ -0,0 +1,12 @@
++#ifndef __MY_SYSCALL_H__
++#define __MY_SYSCALL_H__
++
++#ifndef _syscall5
++# define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \
++type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
++{ \
++ return (type) syscall(__NR_##name, arg1, arg2, arg3, arg4, arg5); \
++}
++#endif
++
++#endif
+--- fdisk/llseek.c
++++ fdisk/llseek.c
+@@ -10,6 +10,8 @@
+ #include <errno.h>
+ #include <unistd.h>
+
++#include "my-syscall.h"
++
+ extern long long ext2_llseek (unsigned int, long long, unsigned int);
+
+ #ifdef __linux__
+--- fdisk/sfdisk.c
++++ fdisk/sfdisk.c
+@@ -177,6 +177,7 @@
+ #endif
+
+ #ifndef use_lseek
++#include <my-syscall.h>
+ static __attribute__used
+ _syscall5(int, _llseek, unsigned int, fd, ulong, hi, ulong, lo,
+ loff_t *, res, unsigned int, wh);
+--- partx/partx.c
++++ partx/partx.c
+@@ -339,6 +339,7 @@
+
+ #ifdef NEED__llseek
+ #include <linux/unistd.h> /* _syscall */
++#include "../lib/my-syscall.h"
+ static
+ _syscall5(int, _llseek, uint, fd, ulong, hi, ulong, lo,
+ long long *, res, uint, wh);
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-umount-no-special.patch b/sys-apps/util-linux/files/util-linux-2.12r-umount-no-special.patch
new file mode 100644
index 0000000..2d2c1cf
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-umount-no-special.patch
@@ -0,0 +1,11 @@
+--- mount/umount.c
++++ mount/umount.c
+@@ -31,7 +31,7 @@
+ #include <arpa/inet.h>
+ #endif
+
+-#if defined(MNT_FORCE) && !defined(__sparc__) && !defined(__arm__)
++#if defined(MNT_FORCE)
+ /* Interesting ... it seems libc knows about MNT_FORCE and presumably
+ about umount2 as well -- need not do anything */
+ #else /* MNT_FORCE */
diff --git a/sys-apps/util-linux/files/util-linux-2.12r-umount-nosysfs.patch b/sys-apps/util-linux/files/util-linux-2.12r-umount-nosysfs.patch
new file mode 100644
index 0000000..eb0d405
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.12r-umount-nosysfs.patch
@@ -0,0 +1,11 @@
+--- util-linux-2.12r/mount/umount.c.orig 2006-03-03 11:29:57.000000000 -0500
++++ util-linux-2.12r/mount/umount.c 2006-03-03 11:30:07.000000000 -0500
+@@ -724,7 +724,7 @@
+ if (all) {
+ /* nodev stuff: sysfs, usbfs, oprofilefs, ... */
+ if (types == NULL)
+- types = "noproc,nodevfs,nodevpts";
++ types = "noproc,nodevfs,nodevpts,nosysfs";
+ result = umount_all (types, test_opts);
+ } else if (argc < 1) {
+ usage (stderr, 2);
diff --git a/sys-apps/util-linux/files/util-linux-2.13-ioprio-syscalls.patch b/sys-apps/util-linux/files/util-linux-2.13-ioprio-syscalls.patch
new file mode 100644
index 0000000..f558ff6
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.13-ioprio-syscalls.patch
@@ -0,0 +1,16 @@
+Just stub this cruft for crappy arches
+
+http://bugs.gentoo.org/190613
+
+--- schedutils/ionice.c
++++ schedutils/ionice.c
+@@ -39,7 +39,8 @@
+ # define __NR_ioprio_set 196
+ # define __NR_ioprio_get 218
+ # else
+-# error "Unsupported arch"
++# define __NR_ioprio_set -1
++# define __NR_ioprio_get -1
+ # endif
+
+ # define SYS_ioprio_get __NR_ioprio_get
diff --git a/sys-apps/util-linux/files/util-linux-2.13-locale.patch b/sys-apps/util-linux/files/util-linux-2.13-locale.patch
new file mode 100644
index 0000000..feb46f9
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.13-locale.patch
@@ -0,0 +1,121 @@
+http://bugs.gentoo.org/191111
+http://thread.gmane.org/gmane.linux.utilities.util-linux-ng/614
+
+Move all locale/nls related includes to nls.h and make sure they are only
+pulled in when ENABLE_NLS. When !ENABLE_NLS, don't include any locale/nls
+related headers and stub out setlocale() as well.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ include/nls.h | 5 ++++-
+ misc-utils/cal.c | 1 -
+ misc-utils/look.c | 1 -
+ misc-utils/write.c | 1 -
+ text-utils/colrm.c | 2 +-
+ text-utils/more.c | 1 -
+ text-utils/pg.c | 2 --
+ 7 files changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/include/nls.h b/include/nls.h
+index f571ca5..e9f7927 100644
+--- a/include/nls.h
++++ b/include/nls.h
+@@ -9,6 +9,8 @@ int main(int argc, char *argv[]);
+
+ #ifdef ENABLE_NLS
+ # include <libintl.h>
++# include <locale.h>
++# include <nl_types.h>
+ # define _(Text) gettext (Text)
+ # ifdef gettext_noop
+ # define N_(String) gettext_noop (String)
+@@ -16,9 +18,10 @@ int main(int argc, char *argv[]);
+ # define N_(String) (String)
+ # endif
+ #else
+-# include <locale.h>
+ # undef bindtextdomain
+ # define bindtextdomain(Domain, Directory) /* empty */
++# undef setlocale
++# define setlocale(Category, Locale) /* empty */
+ # undef textdomain
+ # define textdomain(Domain) /* empty */
+ # define _(Text) (Text)
+diff --git a/misc-utils/cal.c b/misc-utils/cal.c
+index f5ede93..77333d8 100644
+--- a/misc-utils/cal.c
++++ b/misc-utils/cal.c
+@@ -63,7 +63,6 @@
+ #include <string.h>
+ #include <time.h>
+ #include <unistd.h>
+-#include <locale.h>
+ #include "errs.h"
+ #include "nls.h"
+
+diff --git a/misc-utils/look.c b/misc-utils/look.c
+index 5c7e30c..9e25596 100644
+--- a/misc-utils/look.c
++++ b/misc-utils/look.c
+@@ -59,7 +59,6 @@
+ #include <strings.h>
+ #include <ctype.h>
+ #include <getopt.h>
+-#include <locale.h>
+ #include "pathnames.h"
+ #include "nls.h"
+
+diff --git a/misc-utils/write.c b/misc-utils/write.c
+index b3c96d1..46b8f0a 100644
+--- a/misc-utils/write.c
++++ b/misc-utils/write.c
+@@ -54,7 +54,6 @@
+ #include <pwd.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#include <locale.h>
+ #include <signal.h>
+ #include <sys/param.h>
+ #include <sys/signal.h>
+diff --git a/text-utils/colrm.c b/text-utils/colrm.c
+index 5e18a6f..e8b1ea4 100644
+--- a/text-utils/colrm.c
++++ b/text-utils/colrm.c
+@@ -40,8 +40,8 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <locale.h>
+
++#include "nls.h"
+ #include "widechar.h"
+
+ /*
+diff --git a/text-utils/more.c b/text-utils/more.c
+index 19c4417..5dcae7b 100644
+--- a/text-utils/more.c
++++ b/text-utils/more.c
+@@ -55,7 +55,6 @@
+ #include <sys/file.h>
+ #include <sys/wait.h>
+ #include <a.out.h>
+-#include <locale.h>
+ #include "xstrncpy.h"
+ #include "nls.h"
+ #include "widechar.h"
+diff --git a/text-utils/pg.c b/text-utils/pg.c
+index 10bdd15..3e1b25e 100644
+--- a/text-utils/pg.c
++++ b/text-utils/pg.c
+@@ -49,8 +49,6 @@
+ #include <unistd.h>
+ #include <signal.h>
+ #include <setjmp.h>
+-#include <locale.h>
+-#include <nl_types.h>
+ #include <libgen.h>
+
+ #ifdef HAVE_NCURSES_H
+--
+1.5.3.rc7
+
diff --git a/sys-apps/util-linux/files/util-linux-2.13-no-nls.patch b/sys-apps/util-linux/files/util-linux-2.13-no-nls.patch
new file mode 100644
index 0000000..f17debe
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.13-no-nls.patch
@@ -0,0 +1,11 @@
+--- include/nls.h
++++ include/nls.h
+@@ -17,6 +17,8 @@
+ # define bindtextdomain(Domain, Directory) /* empty */
+ # undef textdomain
+ # define textdomain(Domain) /* empty */
++# undef setlocale
++# define setlocale(category, locale) /* empty */
+ # define _(Text) (Text)
+ # define N_(Text) (Text)
+ #endif
diff --git a/sys-apps/util-linux/files/util-linux-2.13-script-SIGWINCH.patch b/sys-apps/util-linux/files/util-linux-2.13-script-SIGWINCH.patch
new file mode 100644
index 0000000..e8ed571
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.13-script-SIGWINCH.patch
@@ -0,0 +1,56 @@
+commit 2b8bbb5fb0f024ea3917fedbbbaf0fab1c1f6555
+Author: Karel Zak <kzak@redhat.com>
+Date: Fri Oct 5 12:22:13 2007 +0200
+
+ script: dies on SIGWINCH
+
+ The "doinput" process doesn't make a difference between SIGWINCH and
+ SIGCHILD. This process also sends unnecessary SIGWINCH to child (the
+ signal is ignored by child). Fixed.
+
+ Signed-off-by: Karel Zak <kzak@redhat.com>
+
+diff --git a/misc-utils/script.c b/misc-utils/script.c
+index d3272df..3b957d8 100644
+--- a/misc-utils/script.c
++++ b/misc-utils/script.c
+@@ -99,6 +99,7 @@ int tflg = 0;
+ static char *progname;
+
+ int die;
++int resized;
+
+ static void
+ die_if_link(char *fn) {
+@@ -235,8 +236,14 @@ doinput() {
+ if (die == 0 && child && kill(child, 0) == -1 && errno == ESRCH)
+ die = 1;
+
+- while (die == 0 && (cc = read(0, ibuf, BUFSIZ)) > 0)
+- (void) write(master, ibuf, cc);
++ while (die == 0) {
++ if ((cc = read(0, ibuf, BUFSIZ)) > 0)
++ (void) write(master, ibuf, cc);
++ else if (cc == -1 && errno == EINTR && resized)
++ resized = 0;
++ else
++ break;
++ }
+
+ done();
+ }
+@@ -255,11 +262,10 @@ finish(int dummy) {
+
+ void
+ resize(int dummy) {
++ resized = 1;
+ /* transmit window change information to the child */
+ (void) ioctl(0, TIOCGWINSZ, (char *)&win);
+ (void) ioctl(slave, TIOCSWINSZ, (char *)&win);
+-
+- kill(child, SIGWINCH);
+ }
+
+ /*
+
+
diff --git a/sys-apps/util-linux/files/util-linux-2.13-setuid-checks.patch b/sys-apps/util-linux/files/util-linux-2.13-setuid-checks.patch
new file mode 100644
index 0000000..a3758dd
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.13-setuid-checks.patch
@@ -0,0 +1,52 @@
+From: Ludwig Nussel <ludwig.nussel@suse.de>
+Date: Thu, 20 Sep 2007 12:57:20 +0000 (+0200)
+Subject: mount: doesn't drop privileges properly when calling helpers
+X-Git-Url: http://git.kernel.org/?p=utils%2Futil-linux-ng%2Futil-linux-ng.git;a=commitdiff_plain;h=ebbeb2c7ac1b00b6083905957837a271e80b187e
+
+mount: doesn't drop privileges properly when calling helpers
+
+{,u}mount calls setuid() and setgid() in the wrong order and doesn't checking
+the return value of set{u,g}id(() when running helpers like mount.nfs.
+
+Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
+Signed-off-by: Karel Zak <kzak@redhat.com>
+---
+
+diff --git a/mount/mount.c b/mount/mount.c
+index 40699f3..5bc2b30 100644
+--- a/mount/mount.c
++++ b/mount/mount.c
+@@ -634,8 +634,12 @@ check_special_mountprog(const char *spec, const char *node, const char *type, in
+ char *oo, *mountargs[10];
+ int i = 0;
+
+- setuid(getuid());
+- setgid(getgid());
++ if(setgid(getgid()) < 0)
++ die(EX_FAIL, _("mount: cannot set group id: %s"), strerror(errno));
++
++ if(setuid(getuid()) < 0)
++ die(EX_FAIL, _("mount: cannot set user id: %s"), strerror(errno));
++
+ oo = fix_opts_string (flags, extra_opts, NULL);
+ mountargs[i++] = mountprog; /* 1 */
+ mountargs[i++] = (char *) spec; /* 2 */
+diff --git a/mount/umount.c b/mount/umount.c
+index b3100c9..3221619 100644
+--- a/mount/umount.c
++++ b/mount/umount.c
+@@ -102,8 +102,12 @@ check_special_umountprog(const char *spec, const char *node,
+ char *umountargs[8];
+ int i = 0;
+
+- setuid(getuid());
+- setgid(getgid());
++ if(setgid(getgid()) < 0)
++ die(EX_FAIL, _("umount: cannot set group id: %s"), strerror(errno));
++
++ if(setuid(getuid()) < 0)
++ die(EX_FAIL, _("umount: cannot set user id: %s"), strerror(errno));
++
+ umountargs[i++] = umountprog;
+ umountargs[i++] = xstrdup(node);
+ if (nomtab)
diff --git a/sys-apps/util-linux/files/util-linux-2.13-uclibc.patch b/sys-apps/util-linux/files/util-linux-2.13-uclibc.patch
new file mode 100644
index 0000000..237e126
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-2.13-uclibc.patch
@@ -0,0 +1,71 @@
+--- login-utils/agetty.c
++++ login-utils/agetty.c
+@@ -884,7 +884,7 @@
+
+ case 'o':
+ {
+- char domainname[HOST_NAME_MAX+1];
++ char domainname[HOSTNAME_LENGTH+1];
+ #ifdef HAVE_GETDOMAINNAME
+ if (getdomainname(domainname, sizeof(domainname)))
+ #endif
+@@ -897,7 +897,7 @@
+ case 'O':
+ {
+ char *dom = "unknown_domain";
+- char host[HOST_NAME_MAX + 1];
++ char host[HOSTNAME_LENGTH + 1];
+ struct addrinfo hints, *info = NULL;
+
+ memset(&hints, 0, sizeof(hints));
+@@ -992,7 +992,7 @@
+ }
+ #endif
+ {
+- char hn[HOST_NAME_MAX+1];
++ char hn[HOSTNAME_LENGTH+1];
+ if (gethostname(hn, sizeof(hn)) == 0)
+ write(1, hn, strlen(hn));
+ }
+--- configure
++++ configure
+@@ -7663,7 +7663,10 @@
+ main ()
+ {
+
+-int test = SYS_sched_getaffinity;
++#if defined(__UCLIBC__) && __UCLIBC_SUBLEVEL__ <= 28
++#error taskset unusable
++#endif
++int test = SYS_sched_getaffinity;
+
+ ;
+ return 0;
+--- sys-utils/setarch.c
++++ sys-utils/setarch.c
+@@ -39,6 +39,10 @@
+ #include <sys/utsname.h>
+ #include "nls.h"
+
++#if defined(__UCLIBC__) && __UCLIBC_SUBLEVEL__ <= 28
++static const char *program_invocation_short_name;
++#endif
++
+ #define set_pers(pers) ((long)syscall(SYS_personality, pers))
+
+ struct {
+@@ -184,6 +188,14 @@
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
++#if defined(__UCLIBC__) && __UCLIBC_SUBLEVEL__ <= 28
++ program_invocation_short_name = strrchr(argv[0],'/');
++ if (program_invocation_short_name)
++ program_invocation_short_name++;
++ else
++ program_invocation_short_name = argv[0];
++#endif
++
+ if (argc < 1)
+ show_usage(_("Not enough arguments"));
+
diff --git a/sys-apps/util-linux/files/util-linux-no-kill.patch b/sys-apps/util-linux/files/util-linux-no-kill.patch
new file mode 100644
index 0000000..bd4638b
--- /dev/null
+++ b/sys-apps/util-linux/files/util-linux-no-kill.patch
@@ -0,0 +1,23 @@
+diff -urN util-linux-2.11z.old/misc-utils/Makefile util-linux-2.11z/misc-utils/Makefile
+--- util-linux-2.11z.old/misc-utils/Makefile 2002-11-02 05:51:02.000000000 -0800
++++ util-linux-2.11z/misc-utils/Makefile 2003-12-06 20:02:28.000000000 -0800
+@@ -34,11 +34,6 @@
+ MAN1:=$(MAN1) write.1
+ endif
+
+-ifeq "$(HAVE_KILL)" "no"
+-BIN:=$(BIN) kill
+-MAN1:=$(MAN1) kill.1
+-endif
+-
+ ifeq "$(HAVE_NCURSES)" "yes"
+ USRBIN:=$(USRBIN) setterm
+ MAN1:=$(MAN1) setterm.1
+@@ -81,7 +76,6 @@
+ cal: cal.o $(ERR_O)
+ chkdupexe: chkdupexe.pl
+ ddate: ddate.o
+-kill: kill.o procs.o
+ logger: logger.o
+ mcookie: mcookie.o $(LIB)/md5.o
+ mcookie.o: mcookie.c $(LIB)/md5.h
diff --git a/sys-apps/util-linux/util-linux-2.12r-r9.ebuild b/sys-apps/util-linux/util-linux-2.12r-r9.ebuild
new file mode 100644
index 0000000..bfc4b97
--- /dev/null
+++ b/sys-apps/util-linux/util-linux-2.12r-r9.ebuild
@@ -0,0 +1,212 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/util-linux-2.12r-r8.ebuild,v 1.8 2007/10/12 15:14:07 dertobi123 Exp $
+
+inherit eutils flag-o-matic toolchain-funcs
+
+OLD_CRYPT_VER=2.12i
+LOOP_AES_VER=3.1f
+DESCRIPTION="Various useful Linux utilities"
+HOMEPAGE="http://www.kernel.org/pub/linux/utils/util-linux/"
+SRC_URI="mirror://kernel/linux/utils/${PN}/${P}.tar.bz2
+ old-crypt? (
+ mirror://kernel/linux/utils/${PN}/${PN}-${OLD_CRYPT_VER}.tar.gz
+ mirror://gentoo/util-linux-${OLD_CRYPT_VER}-cryptoapi-losetup.patch.bz2
+ )
+ crypt? ( http://loop-aes.sourceforge.net/loop-AES/loop-AES-v${LOOP_AES_VER}.tar.bz2 )"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86"
+IUSE="crypt old-crypt nls static selinux perl"
+
+RDEPEND=">=sys-libs/ncurses-5.2-r2
+ >=sys-fs/e2fsprogs-1.34
+ selinux? ( sys-libs/libselinux )
+ crypt? ( app-crypt/hashalot )
+ perl? ( dev-lang/perl )
+ amd64? ( sys-apps/setarch )
+ mips? ( sys-apps/setarch )
+ ppc? ( sys-apps/setarch )
+ ppc64? ( sys-apps/setarch )
+ sparc? ( sys-apps/setarch )
+ !sys-apps/more"
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )
+ virtual/os-headers"
+
+OLD_CRYPT_P=${WORKDIR}/${PN}-${OLD_CRYPT_VER}
+
+yesno() { useq $1 && echo yes || echo no; }
+
+src_unpack() {
+ unpack ${A}
+
+ # Old crypt support
+ if use old-crypt ; then
+ cd "${OLD_CRYPT_P}"
+ ewarn "You should update your system as USE=old-crypt"
+ ewarn "support will be dropped in future versions."
+ epatch "${WORKDIR}"/util-linux-${OLD_CRYPT_VER}-cryptoapi-losetup.patch
+ fi
+
+ cd "${S}"
+
+ sed -i '/LDFLAGS.*-s/d' configure #191112
+
+ # crypto support
+ use crypt && epatch "${WORKDIR}"/loop-AES-v${LOOP_AES_VER}/${P}.diff
+
+ # Fall back to cracklib if default words file doesnt exist #114416
+ epatch "${FILESDIR}"/${PN}-2.12r-cracklib-words.patch
+
+ # Fix rare failures with -j4 or higher
+ epatch "${FILESDIR}"/${PN}-2.11z-parallel-make.patch
+
+ # Fix -f usage with -a and in general
+ epatch "${FILESDIR}"/${PN}-2.12q-more-fake-checks-v2.patch
+
+ # Fix mtab updates with `mount --move /foo /bar` #104697
+ epatch "${FILESDIR}"/${PN}-2.12q-update-mtab-when-moving.patch
+
+ # Respect -n with -r and umount #98675
+ epatch "${FILESDIR}"/${PN}-2.12q-umount-dont-write-mtab-with-remount.patch
+
+ # A few fixes to beat update_mtab() into submission.
+ epatch "${FILESDIR}"/${PN}-2.12q-update_mtab-fixes.patch
+
+ # Use update_mtab() to avoid dups in mtab for 'mount -f'
+ epatch "${FILESDIR}"/${PN}-2.12q-use-update_mtab-for-fake.patch
+
+ # Fix unreadable df output when using devfs ... this check is kind of
+ # a hack, but whatever, the output isnt critical at all :P
+ [[ -e /dev/.devfsd ]] && epatch "${FILESDIR}"/no-symlink-resolve.patch
+
+ # Add the O option to agetty to display DNS domainname in the issue
+ # file, thanks to Marius Mauch <genone@genone.de>, bug #22275.
+ #
+ # NOTE: Removing this will break future baselayout, so PLEASE
+ # consult with me before doing so.
+ epatch "${FILESDIR}"/${PN}-2.11z-agetty-domainname-option.patch
+
+ # Fix french translation typo #75693
+ epatch "${FILESDIR}"/${PN}-2.12q-i18n-update.patch
+
+ # Add NFS4 support (kernel 2.5/2.6)
+ epatch "${FILESDIR}"/${PN}-2.12i-nfsv4.patch
+
+ # ignore managed/kudzu options #70873
+ epatch "${FILESDIR}"/${PN}-2.12i-ignore-managed.patch
+
+ # swapon gets confused by symlinks in /dev #69162
+ epatch "${FILESDIR}"/${PN}-2.12p-swapon-check-symlinks.patch
+
+ # fix simple buffer overflow (from Debian)
+ epatch "${FILESDIR}"/${PN}-2.12q-debian-10cfdisk.patch
+
+ # don't build fdisk on m68k
+ epatch "${FILESDIR}"/${PN}-2.12q-no-m68k-fdisk.patch
+
+ # don't force umask to 022 #93671
+ epatch "${FILESDIR}"/${PN}-2.12q-dont-umask.patch
+
+ # fix cal display when using featureless terminals #112406
+ epatch "${FILESDIR}"/${PN}-2.12r-cal-dumb-terminal.patch
+
+ # Bug #108988 unable to always seek when omiting frame pointers
+ epatch "${FILESDIR}"/${PN}-2.12r-fdisk-frame-pointers.patch
+
+ # don't treat sparc/arm specially
+ epatch "${FILESDIR}"/${PN}-2.12r-umount-no-special.patch
+
+ # Patches from Fedora
+ epatch "${FILESDIR}"/${PN}-2.12r-umount-nosysfs.patch
+
+ # fix mips n32 (no llseek syscall)
+ epatch "${FILESDIR}"/${PN}-2.12-mips-lseek.patch
+
+ epatch "${FILESDIR}"/${PN}-2.13-setuid-checks.patch
+ epatch "${FILESDIR}"/${PN}-2.12r-no-_syscall.patch #150852
+ epatch "${FILESDIR}"/${PN}-2.12r-HAVE_asm_page_h.patch #168278
+ use crypt && epatch "${FILESDIR}"/${PN}-2.12r-HAVE_asm_page_h-loop-aes.patch
+
+#SDS
+ epatch "${FILESDIR}"/agetty-ds-x509-v2.patch || die
+#EDS
+
+ # Enable random features
+ local mconfigs="MCONFIG"
+ use old-crypt && mconfigs="${mconfigs} ${OLD_CRYPT_P}/MCONFIG"
+ sed -i \
+ -e "/^HAVE_SELINUX=/s:no:$(yesno selinux):" \
+ -e "/^DISABLE_NLS=/s:no:$(yesno !nls):" \
+ -e "/^HAVE_KILL=/s:no:yes:" \
+ -e "/^HAVE_SLN=/s:no:yes:" \
+ -e "/^HAVE_TSORT/s:no:yes:" \
+ -e "s:-pipe -O2 \$(CPUOPT) -fomit-frame-pointer:${CFLAGS}:" \
+ -e "s:CPU=.*:CPU=${CHOST%%-*}:" \
+ -e "s:SUIDMODE=.*4755:SUIDMODE=4711:" \
+ ${mconfigs} || die "MCONFIG sed"
+}
+
+src_compile() {
+ use static && append-ldflags -static
+ export CC="$(tc-getCC)"
+
+ econf || die "configure failed"
+ emake || die "emake failed"
+
+ cd partx
+ has_version '>=sys-kernel/linux-headers-2.6' && \
+ has_version '<sys-kernel/linux-headers-2.6.18' \
+ && append-flags -include linux/compiler.h
+ emake CFLAGS="${CFLAGS}" || die "make partx failed"
+
+ if use old-crypt ; then
+ cd "${OLD_CRYPT_P}"
+ econf || die "old configure failed"
+ emake -C lib || die "old lib failed"
+ emake -C mount losetup mount || die "old make failed"
+ fi
+}
+
+src_install() {
+ make install DESTDIR="${D}" || die "install failed"
+ dosym ../man8/agetty.8 /usr/share/man/man1/getty.1
+ dosbin partx/{addpart,delpart,partx} || die "dosbin"
+ use perl || rm -f "${D}"/usr/bin/chkdupexe
+ # required by autotools
+ dosym /bin/arch /usr/bin/arch
+
+ if use crypt || use old-crypt ; then
+ newinitd "${FILESDIR}"/crypto-loop.initd crypto-loop
+ newconfd "${FILESDIR}"/crypto-loop.confd crypto-loop
+ fi
+
+ # man-pages installs renice(1p) but util-linux does renice(8)
+ dosym ../man8/renice.8 /usr/share/man/man1/renice.1
+ # nfs-utils provides nfs(5) now
+ rm "${D}"/usr/share/man/man5/nfs.5 || die
+
+ dodoc HISTORY MAINTAINER README VERSION
+ docinto examples
+ dodoc example.files/*
+
+ if use old-crypt ; then
+ cd "${OLD_CRYPT_P}"/mount
+ into /
+ newbin mount mount-old-crypt || die
+ newbin losetup losetup-old-crypt || die
+ fperms 4711 /bin/{mount,losetup}-old-crypt
+ fi
+}
+
+pkg_postinst() {
+ if ! use old-crypt && use crypt ; then
+ ewarn "This version of util-linux includes crypto support"
+ ewarn "for loop-aes instead of the old cryptoapi."
+ ewarn "If you need the older support, please re-emerge"
+ ewarn "util-linux with USE=old-crypt. This will create"
+ ewarn "/sbin/mount-old-crypt and /sbin/losetup-old-crypt."
+ fi
+}
diff --git a/sys-apps/util-linux/util-linux-2.13.1.1-r1.ebuild b/sys-apps/util-linux/util-linux-2.13.1.1-r1.ebuild
new file mode 100644
index 0000000..eb6a789
--- /dev/null
+++ b/sys-apps/util-linux/util-linux-2.13.1.1-r1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/util-linux-2.13.1.1.ebuild,v 1.7 2008/04/28 17:01:56 dertobi123 Exp $
+
+EGIT_REPO_URI="git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git"
+inherit eutils
+[[ ${PV} == "9999" ]] && inherit git
+
+MY_PV=${PV/_/-}
+MY_P=${PN}-ng-${MY_PV}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="Various useful Linux utilities"
+HOMEPAGE="http://www.kernel.org/pub/linux/utils/util-linux-ng/"
+if [[ ${PV} == "9999" ]] ; then
+ SRC_URI=""
+else
+ SRC_URI="http://www.kernel.org/pub/linux/utils/util-linux-ng/v${PV:0:4}/${MY_P}.tar.bz2
+ loop-aes? ( http://loop-aes.sourceforge.net/loop-AES/loop-AES-v3.2c.tar.bz2 )"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86"
+IUSE="crypt loop-aes nls old-linux selinux slang unicode"
+
+RDEPEND="!sys-process/schedutils
+ !sys-apps/setarch
+ >=sys-libs/ncurses-5.2-r2
+ >=sys-fs/e2fsprogs-1.34
+ selinux? ( sys-libs/libselinux )
+ slang? ( sys-libs/slang )"
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )
+ virtual/os-headers"
+
+src_unpack() {
+ if [[ ${PV} == "9999" ]] ; then
+ git_src_unpack
+ cd "${S}"
+ ./autogen.sh || die
+ else
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${PN}-2.13-uclibc.patch #203711
+ use loop-aes && epatch "${WORKDIR}"/loop-AES-*/util-linux-ng-*.diff
+ use unicode && sed -i 's:-lncurses:-lncursesw:' */Makefile.in #208976
+ epatch "${FILESDIR}"/${PN}-2.13-ioprio-syscalls.patch #190613
+ fi
+
+#SDS
+ epatch "${FILESDIR}"/agetty-ds-x509-v2.patch || die
+#EDS
+}
+
+src_compile() {
+ econf \
+ --with-fsprobe=blkid \
+ $(use_enable nls) \
+ --enable-agetty \
+ --enable-cramfs \
+ $(use_enable old-linux elvtune) \
+ --disable-init \
+ --disable-kill \
+ --disable-last \
+ --disable-mesg \
+ --enable-partx \
+ --enable-raw \
+ --enable-rdev \
+ --enable-rename \
+ --disable-reset \
+ --disable-login-utils \
+ --enable-schedutils \
+ --disable-wall \
+ --enable-write \
+ --without-pam \
+ $(use_with selinux) \
+ $(use_with slang) \
+ || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake install DESTDIR="${D}" || die "install failed"
+ dodoc AUTHORS NEWS README* TODO docs/*
+
+ if use crypt ; then
+ newinitd "${FILESDIR}"/crypto-loop.initd crypto-loop || die
+ newconfd "${FILESDIR}"/crypto-loop.confd crypto-loop || die
+ fi
+}
+
+pkg_postinst() {
+ ewarn "USE=crypt has been changed to USE=loop-aes. If you need"
+ ewarn "support for it, make sure to update your USE accordingly."
+}
diff --git a/sys-apps/util-linux/util-linux-2.14.2-r1.ebuild b/sys-apps/util-linux/util-linux-2.14.2-r1.ebuild
new file mode 100644
index 0000000..edc3b9c
--- /dev/null
+++ b/sys-apps/util-linux/util-linux-2.14.2-r1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/util-linux-2.14.2.ebuild,v 1.3 2009/02/15 00:21:10 vapier Exp $
+
+EGIT_REPO_URI="git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git"
+inherit eutils
+[[ ${PV} == "9999" ]] && inherit git
+
+MY_PV=${PV/_/-}
+MY_P=${PN}-ng-${MY_PV}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="Various useful Linux utilities"
+HOMEPAGE="http://www.kernel.org/pub/linux/utils/util-linux-ng/"
+if [[ ${PV} == "9999" ]] ; then
+ SRC_URI=""
+else
+ SRC_URI="mirror://kernel/linux/utils/util-linux-ng/v${PV:0:4}/${MY_P}.tar.bz2
+ loop-aes? ( http://loop-aes.sourceforge.net/updates/util-linux-ng-2.14.2-20090214.diff.bz2 )"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86"
+IUSE="crypt loop-aes nls old-linux selinux slang uclibc unicode"
+
+RDEPEND="!sys-process/schedutils
+ !sys-apps/setarch
+ >=sys-libs/ncurses-5.2-r2
+ >=sys-libs/e2fsprogs-libs-1.41
+ selinux? ( sys-libs/libselinux )
+ slang? ( sys-libs/slang )"
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )
+ virtual/os-headers"
+
+src_unpack() {
+ if [[ ${PV} == "9999" ]] ; then
+ git_src_unpack
+ cd "${S}"
+ ./autogen.sh || die
+ else
+ unpack ${A}
+ cd "${S}"
+ #epatch "${FILESDIR}"/${PN}-2.13-uclibc.patch #203711
+ use loop-aes && epatch "${WORKDIR}"/util-linux-ng-*.diff
+ fi
+ use uclibc && sed -i -e s/versionsort/alphasort/g -e s/strverscmp.h/dirent.h/g mount/lomount.c
+
+#SDS
+ epatch "${FILESDIR}"/agetty-ds-x509-v2.patch || die
+#EDS
+}
+
+src_compile() {
+ econf \
+ --with-fsprobe=blkid \
+ $(use_enable nls) \
+ --enable-agetty \
+ --enable-cramfs \
+ $(use_enable old-linux elvtune) \
+ --disable-init \
+ --disable-kill \
+ --disable-last \
+ --disable-mesg \
+ --enable-partx \
+ --enable-raw \
+ --enable-rdev \
+ --enable-rename \
+ --disable-reset \
+ --disable-login-utils \
+ --enable-schedutils \
+ --disable-wall \
+ --enable-write \
+ --without-pam \
+ $(use unicode || echo --with-ncurses) \
+ $(use_with selinux) \
+ $(use_with slang) \
+ || die "configure failed"
+ emake || die "emake failed"
+}
+
+src_install() {
+ emake install DESTDIR="${D}" || die "install failed"
+ dodoc AUTHORS NEWS README* TODO docs/*
+
+ if use crypt ; then
+ newinitd "${FILESDIR}"/crypto-loop.initd crypto-loop || die
+ newconfd "${FILESDIR}"/crypto-loop.confd crypto-loop || die
+ fi
+}
+
+pkg_postinst() {
+ ewarn "The loop-aes code has been split out of USE=crypt and into USE=loop-aes."
+ ewarn "If you need support for it, make sure to update your USE accordingly."
+}
diff --git a/sys-apps/util-linux/util-linux-2.16.2-r1.ebuild b/sys-apps/util-linux/util-linux-2.16.2-r1.ebuild
new file mode 100644
index 0000000..ec9ad5c
--- /dev/null
+++ b/sys-apps/util-linux/util-linux-2.16.2-r1.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/util-linux-2.16.2.ebuild,v 1.5 2010/01/27 04:00:24 jer Exp $
+
+EAPI="2"
+
+EGIT_REPO_URI="git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git"
+inherit eutils toolchain-funcs libtool
+[[ ${PV} == "9999" ]] && inherit git autotools
+
+MY_PV=${PV/_/-}
+MY_P=${PN}-ng-${MY_PV}
+S=${WORKDIR}/${MY_P}
+
+DESCRIPTION="Various useful Linux utilities"
+HOMEPAGE="http://www.kernel.org/pub/linux/utils/util-linux-ng/"
+if [[ ${PV} == "9999" ]] ; then
+ SRC_URI=""
+ #KEYWORDS=""
+else
+ SRC_URI="mirror://kernel/linux/utils/util-linux-ng/v${PV:0:4}/${MY_P}.tar.bz2
+ loop-aes? ( http://dev.gentoo.org/~ssuominen/${PN}-2.16.1-loop-aes.patch.bz2 )"
+ KEYWORDS="~alpha amd64 ~arm hppa ~ia64 ~m68k ~mips ~ppc ppc64 ~s390 ~sh ~sparc x86"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="crypt loop-aes nls old-linux perl selinux slang uclibc unicode"
+
+RDEPEND="!sys-process/schedutils
+ !sys-apps/setarch
+ >=sys-libs/ncurses-5.2-r2
+ !<sys-libs/e2fsprogs-libs-1.41.8
+ !<sys-fs/e2fsprogs-1.41.8
+ perl? ( dev-lang/perl )
+ selinux? ( sys-libs/libselinux )
+ slang? ( sys-libs/slang )"
+DEPEND="${RDEPEND}
+ nls? ( sys-devel/gettext )
+ virtual/os-headers"
+
+src_prepare() {
+#SDS
+ epatch "${FILESDIR}"/agetty-ds-x509-v2.patch || die
+#EDS
+
+ if [[ ${PV} == "9999" ]] ; then
+ autopoint --force
+ eautoreconf
+ else
+ use loop-aes && epatch "${WORKDIR}"/${PN}-2.16.1-loop-aes.patch
+ fi
+ use uclibc && sed -i -e s/versionsort/alphasort/g -e s/strverscmp.h/dirent.h/g mount/lomount.c
+ elibtoolize
+}
+
+src_configure() {
+ econf \
+ $(use_enable nls) \
+ --enable-agetty \
+ --enable-cramfs \
+ $(use_enable old-linux elvtune) \
+ --disable-init \
+ --disable-kill \
+ --disable-last \
+ --disable-mesg \
+ --enable-partx \
+ --enable-raw \
+ --enable-rdev \
+ --enable-rename \
+ --disable-reset \
+ --disable-login-utils \
+ --enable-schedutils \
+ --disable-wall \
+ --enable-write \
+ --without-pam \
+ $(use unicode || echo --with-ncurses) \
+ $(use_with selinux) \
+ $(use_with slang) \
+ $(tc-has-tls || echo --disable-tls)
+}
+
+src_install() {
+ emake install DESTDIR="${D}" || die "install failed"
+ dodoc AUTHORS NEWS README* TODO docs/*
+
+ if ! use perl ; then #284093
+ rm "${D}"/usr/bin/chkdupexe || die
+ rm "${D}"/usr/share/man/man1/chkdupexe.1 || die
+ fi
+
+ # need the libs in /
+ gen_usr_ldscript -a blkid uuid
+ # e2fsprogs-libs didnt install .la files, and .pc work fine
+ rm -f "${D}"/usr/$(get_libdir)/*.la
+
+ if use crypt ; then
+ newinitd "${FILESDIR}"/crypto-loop.initd crypto-loop || die
+ newconfd "${FILESDIR}"/crypto-loop.confd crypto-loop || die
+ fi
+}
diff --git a/sys-auth/pam_x509/Manifest b/sys-auth/pam_x509/Manifest
new file mode 100644
index 0000000..70e0deb
--- /dev/null
+++ b/sys-auth/pam_x509/Manifest
@@ -0,0 +1,11 @@
+AUX pam_x509-ds-compile.patch 3702 SHA256 4be0898de84d1dff848932fe7b9e31e13537172c7cd756009fc1b110396497ec SHA512 09a04217249a2bca6f395285ea667cc8103f5f2f5e7cd8fc80984c10d42e4949e1e6daed35e9d867b74ad304165a7a66faeea6313aa9f5eb84cf74c0847c1311 WHIRLPOOL 709eee85f20373816ab491168238b3860e81bb96c7c906e321517c0d6d1e373428a11a62e8491a5ed927017999bb30a72bd458619aec62ef8e46e8e108b75d34
+AUX pam_x509-ds-compile2.patch 3700 SHA256 b2a386a4f8dccca0377bed83432a2836c1312bd503356f197052788e26c813f4 SHA512 a7900e7b700f066078534e21acc11ed39cdf8bc4fb83825ce754e8aecc8ee61eca5a1151ac363a07cdff5f8c89963d6293683bb67c76cb0b969db4f0edfd0d39 WHIRLPOOL 0cb14e8894d8f001260eff762ee71f33005f0f6d71c9a255d45ba297b175ffa40a1cd961e3f67d82c040ce1988f39ab7a643fbc20caf14cd60765177331f5b68
+AUX pam_x509-ds-obexftp.patch 2414 SHA256 f16e7ba3809a6e94b879f7294736aa3473765c4d3627ff24fabdffdef5413dbc SHA512 2e47896a7971ebfc9430a522cc62194edb46c8a8d1035c4fbf9712a537a1c0dbef7cee578549341a3dd44d9c6da3993fa061aab94bba671ad3a6068a64fe9c2a WHIRLPOOL 78a94df81448946a17b850ebd350de556d3ec3d54bf62f6ffb6aa5e8befe2ff3768a42a669d73b90899ca22864f449f9fe9864f5414977932a6fe6575a5389cb
+AUX pam_x509-ds_syslog.patch 1406 SHA256 bfd5ce2377689d0834ef29955251a4ccd7002783dfb6c08ab350a8b3797b8a9a SHA512 72b1080fac02141c23f7fbb011204c4e5856e5398f93bef0d2f0ecbd330e70bbe2709787376805bc6e6e8cfa35d822f10cc521ff685437f3ea8726363e80827a WHIRLPOOL e67fc1ff0922a52bd9bd569a4332d21030ad54c07351306b9e87c7cd9042e5523bef8b3f48c59071d501ec62f26d4d8357bdd6dbe1de32350a9065288fb18886
+AUX x509-auth 151 SHA256 4a0d04e30745582d999684fd38d1a253d1f912905a6bcb4e1ad6ac4828ef25e8 SHA512 f3bebfd7a54f48728b5399e4f6dd8e7f2dfcecfc85f133693b02dd634a3dad6d4394c9c9e38d9965fc70e307d530c255a38b3ab1c609eb344f60f4c6ba864ae9 WHIRLPOOL 7392d0399359ab4153038ed4ad94cbfa08b9838bcb34ae08d5c34f34e2017ee7f956f650a6647c1d9bd6b082b276ca98ed8bfd7c5fd87c7aa606a0252c783cba
+AUX x509.config 7 SHA256 ce40a1b49ac0713da57c3c80bbf7e76a936d87fbcb304a494ba3bc96e307f1d2 SHA512 3d72e5880f14c95ee22cbf61e5b95f7a1a13d9be4c6111ea480210469b21962c0f464d7968919d311fa867290746ad250ae689cc7517ca9c059e034009fc16af WHIRLPOOL 0f7d9ecab63a8402b2f6bd508f28f2c6f191834838e50d2c7e70710611779dedfbead20503b285a302b8661467b2029858d0958a40f66a41cfaffd0d76fd207c
+DIST pam_x509-1.0.2.tar.bz2 36241 SHA256 4ed4fb10b60719862021c857032523333f6a16dd12343591e8922fb1b8dd539f SHA512 1d555d90e2b28f5758a7dcac85e8e2a24275afeeb126b1080ff8b542aa81b1770dbe693c0183c966a342ff57c3133a32a09cc914a75b66c7821b378350d9dfd3 WHIRLPOOL b907189f1778e6d5c606ad60f62d5bce436416f9a5e3cdf15722cf721d0ba35b096c07974f96b5c8b1854dca1b3278d9bb824616a56a340c0cc43ba69f17d74f
+EBUILD pam_x509-1.0.2-r1.ebuild 1181 SHA256 2b7d26175e31b50884b2d83b575215c023ae252bf775c4debb4893400a631d69 SHA512 b6d4c93923f35d1e22c7d44465a47523b3b34bd68ea3b0978edf0f47b98321370c2482e15fcfe93b3af1c625f52ab1088a1480bf8946c8f06c12672b697a46f3 WHIRLPOOL b4097f6af2e3bf07930c5bf9fa9e2c025ba325897a44f227eb3b02d9936077ea64fbc78cbecabf4051bcd5aa3c336e9963052c14a6491f9494f6cd3c20f699ac
+EBUILD pam_x509-1.0.2-r2.ebuild 1189 SHA256 70aad19d9faf4c72fd9ea2c30e6c7aed7a301c7eb5e4eede42941c284a6f0932 SHA512 0142c5c54b6ad58f4a0cc9e60ff44fffec4441685319c78ab3b7503879238f8a3d3318467207f01ff79e87331c8ced7054ddb9a7a5c907a4b991f1a44a139359 WHIRLPOOL 4297aadb01dab7263c68264d0e6b5fd4cebc40abcb2690972f1d6ffa3736f0bf5d7c66100679fb77b769b293170e5c60669ecafc869c53df69decae45398d725
+EBUILD pam_x509-1.0.2-r3.ebuild 1380 SHA256 16575b1e4250e6076e5c8001ed54f6ef5401b3fbaed1b37505c56991e23af8ef SHA512 145a73693630d7049874092f42cefa2a6766e2eb2b7256dff92dc6c41ff239f5ff622c8189b6a73736963eab69e038a7d092f001f1689d2c8fe978159229d76b WHIRLPOOL 94375429dab630c90b1b0970eba285fdfa02cfafd0e797187ca9944600f9ba4e512e30b144e5bfca0fbb69d1f703a0ce0d9b4564bc7ef65a065ff0c3dd19f2fe
+EBUILD pam_x509-1.0.2-r4.ebuild 1318 SHA256 06b651fb1f3183842fb3ba67b29d41bc7ffe1312c2f6e572c8fa632c18ea17a2 SHA512 c2354a763d1dd0b1055f78d66793845cd613d9f5f212470d007301ea18e76010718500bcc81a925f9ebe76823ddbd6be2326179b6c8890c84ccdece5124959e0 WHIRLPOOL 601f3554fbde86b6ec6e7de39836e1f09aaf77e7911e3a069e5f0ea1a076cdfa6798842fe793905a396b499e8d6a2f228ccb3d7e2de35907895cce120c23cc40
diff --git a/sys-auth/pam_x509/files/pam_x509-ds-compile.patch b/sys-auth/pam_x509/files/pam_x509-ds-compile.patch
new file mode 100644
index 0000000..59f6e89
--- /dev/null
+++ b/sys-auth/pam_x509/files/pam_x509-ds-compile.patch
@@ -0,0 +1,103 @@
+diff -dPNur pam_x509-1.0.2/Makefile pam_x509-1.0.2-new/Makefile
+--- pam_x509-1.0.2/Makefile 2007-04-22 12:31:55.000000000 +0200
++++ pam_x509-1.0.2-new/Makefile 2007-04-22 12:51:15.000000000 +0200
+@@ -6,8 +6,10 @@
+
+ ifeq ($(BT),yes)
+ OBJECTS += rfcomm.o
+- LIBS += -lbluetooth -lobexftp -lcobexbfb -lbfb `openobex-config --libs`
+- CFLAGS += -D_BLUETOOTH `openobex-config --cflags`
++# LIBS += -lbluetooth -lobexftp -lcobexbfb -lbfb `openobex-config --libs`
++# CFLAGS += -D_BLUETOOTH `openobex-config --cflags`
++ CFLAGS += -D_BLUETOOTH
++ LIBS += -lbluetooth -lobexftp -lmulticobex -lbfb -lopenobex
+ endif
+
+ pam_x509: $(OBJECTS)
+diff -dPNur pam_x509-1.0.2/pam_x509.c pam_x509-1.0.2-new/pam_x509.c
+--- pam_x509-1.0.2/pam_x509.c 2006-06-12 13:55:19.000000000 +0200
++++ pam_x509-1.0.2-new/pam_x509.c 2007-04-22 12:52:42.000000000 +0200
+@@ -1,7 +1,9 @@
+ #define PAM_SM_AUTH
+ #include <stdio.h>
+ #include <unistd.h>
++#include <string.h>
+ #include <stdarg.h>
++#include <alloca.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+
+diff -dPNur pam_x509-1.0.2/pass.c pam_x509-1.0.2-new/pass.c
+--- pam_x509-1.0.2/pass.c 2003-10-17 00:51:55.000000000 +0200
++++ pam_x509-1.0.2-new/pass.c 2007-04-22 12:51:51.000000000 +0200
+@@ -1,4 +1,5 @@
+ #include <stdio.h>
++#include <string.h>
+
+ #include "sslauth.h"
+
+diff -dPNur pam_x509-1.0.2/rfcomm.c pam_x509-1.0.2-new/rfcomm.c
+--- pam_x509-1.0.2/rfcomm.c 2006-06-12 14:24:23.000000000 +0200
++++ pam_x509-1.0.2-new/rfcomm.c 2007-04-22 13:14:20.000000000 +0200
+@@ -17,16 +17,28 @@
+ #include <bluetooth/rfcomm.h>
+
+ #include <obexftp/client.h>
+-#include <cobexbfb/cobex_bfb.h>
+
+-#ifdef obexftp_cli_connect
++#if defined(obexftp_cli_connect)
++# include <cobexbfb/cobex_bfb.h>
+ # define obexftp_cli_connect_wrapper(cli) obexftp_cli_connect(cli, NULL, 0)
+ # define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_cli_open(OBEX_TRANS_BLUETOOTH, ctrans, cb, param)
+ # define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path, 1)
++# define obexftp_cli_close_wrapper obexftp_cli_close
++# define obexftp_cli_disconnect_wrapper obexftp_cli_disconnect
++#elif defined(obexftp_connect)
++# include <multicobex/multi_cobex.h>
++# define obexftp_cli_connect_wrapper(cli) obexftp_connect(cli, NULL, 0)
++# define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_open(OBEX_TRANS_BLUETOOTH, ctrans, cb, param)
++# define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path, 1)
++# define obexftp_cli_close_wrapper obexftp_close
++# define obexftp_cli_disconnect_wrapper obexftp_disconnect
+ #else
++# include <cobexbfb/cobex_bfb.h>
+ # define obexftp_cli_connect_wrapper(cli) obexftp_cli_connect(cli)
+ # define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_cli_open(cb, ctrans, param)
+ # define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path)
++# define obexftp_cli_close_wrapper obexftp_cli_close
++# define obexftp_cli_disconnect_wrapper obexftp_cli_disconnect
+ #endif
+
+ /*
+@@ -75,7 +87,7 @@
+ #ifdef _DEBUG
+ _pam_log(LOG_NOTICE,"Error connecting client over %s!",tty);
+ #endif
+- obexftp_cli_close(cli);
++ obexftp_cli_close_wrapper(cli);
+ if (ctrans) cobex_free(ctrans);
+ return 0;
+ }
+@@ -87,8 +99,8 @@
+ #ifdef _DEBUG
+ _pam_log(LOG_NOTICE,"Can't get list file over %s!",tty);
+ #endif
+- obexftp_cli_disconnect (cli);
+- obexftp_cli_close(cli);
++ obexftp_cli_disconnect_wrapper (cli);
++ obexftp_cli_close_wrapper(cli);
+ if (ctrans) cobex_free(ctrans);
+ return 0;
+ }
+@@ -121,8 +133,8 @@
+ }
+ fclose(f);
+
+- obexftp_cli_disconnect (cli);
+- obexftp_cli_close(cli);
++ obexftp_cli_disconnect_wrapper (cli);
++ obexftp_cli_close_wrapper(cli);
+ if (ctrans) cobex_free(ctrans);
+ return res;
+ }
diff --git a/sys-auth/pam_x509/files/pam_x509-ds-compile2.patch b/sys-auth/pam_x509/files/pam_x509-ds-compile2.patch
new file mode 100644
index 0000000..5c0fa70
--- /dev/null
+++ b/sys-auth/pam_x509/files/pam_x509-ds-compile2.patch
@@ -0,0 +1,103 @@
+diff -dPNur pam_x509-1.0.2/Makefile pam_x509-1.0.2-new/Makefile
+--- pam_x509-1.0.2/Makefile 2007-04-22 12:31:55.000000000 +0200
++++ pam_x509-1.0.2-new/Makefile 2007-04-22 12:51:15.000000000 +0200
+@@ -6,8 +6,10 @@
+
+ ifeq ($(BT),yes)
+ OBJECTS += rfcomm.o
+- LIBS += -lbluetooth -lobexftp -lcobexbfb -lbfb `openobex-config --libs`
+- CFLAGS += -D_BLUETOOTH `openobex-config --cflags`
++# LIBS += -lbluetooth -lobexftp -lcobexbfb -lbfb `openobex-config --libs`
++# CFLAGS += -D_BLUETOOTH `openobex-config --cflags`
++ CFLAGS += -D_BLUETOOTH
++ LIBS += -lbluetooth -lobexftp -lcobexbfb -lbfb -lopenobex
+ endif
+
+ pam_x509: $(OBJECTS)
+diff -dPNur pam_x509-1.0.2/pam_x509.c pam_x509-1.0.2-new/pam_x509.c
+--- pam_x509-1.0.2/pam_x509.c 2006-06-12 13:55:19.000000000 +0200
++++ pam_x509-1.0.2-new/pam_x509.c 2007-04-22 12:52:42.000000000 +0200
+@@ -1,7 +1,9 @@
+ #define PAM_SM_AUTH
+ #include <stdio.h>
+ #include <unistd.h>
++#include <string.h>
+ #include <stdarg.h>
++#include <alloca.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+
+diff -dPNur pam_x509-1.0.2/pass.c pam_x509-1.0.2-new/pass.c
+--- pam_x509-1.0.2/pass.c 2003-10-17 00:51:55.000000000 +0200
++++ pam_x509-1.0.2-new/pass.c 2007-04-22 12:51:51.000000000 +0200
+@@ -1,4 +1,5 @@
+ #include <stdio.h>
++#include <string.h>
+
+ #include "sslauth.h"
+
+diff -dPNur pam_x509-1.0.2/rfcomm.c pam_x509-1.0.2-new/rfcomm.c
+--- pam_x509-1.0.2/rfcomm.c 2006-06-12 14:24:23.000000000 +0200
++++ pam_x509-1.0.2-new/rfcomm.c 2007-04-22 13:14:20.000000000 +0200
+@@ -17,16 +17,28 @@
+ #include <bluetooth/rfcomm.h>
+
+ #include <obexftp/client.h>
+-#include <cobexbfb/cobex_bfb.h>
+
+-#ifdef obexftp_cli_connect
++#if defined(obexftp_cli_connect)
++# include <cobexbfb/cobex_bfb.h>
+ # define obexftp_cli_connect_wrapper(cli) obexftp_cli_connect(cli, NULL, 0)
+ # define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_cli_open(OBEX_TRANS_BLUETOOTH, ctrans, cb, param)
+ # define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path, 1)
++# define obexftp_cli_close_wrapper obexftp_cli_close
++# define obexftp_cli_disconnect_wrapper obexftp_cli_disconnect
++#elif defined(obexftp_connect)
++# include <multicobex/multi_cobex.h>
++# define obexftp_cli_connect_wrapper(cli) obexftp_connect(cli, NULL, 0)
++# define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_open(OBEX_TRANS_BLUETOOTH, ctrans, cb, param)
++# define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path, 1)
++# define obexftp_cli_close_wrapper obexftp_close
++# define obexftp_cli_disconnect_wrapper obexftp_disconnect
+ #else
++# include <cobexbfb/cobex_bfb.h>
+ # define obexftp_cli_connect_wrapper(cli) obexftp_cli_connect(cli)
+ # define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_cli_open(cb, ctrans, param)
+ # define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path)
++# define obexftp_cli_close_wrapper obexftp_cli_close
++# define obexftp_cli_disconnect_wrapper obexftp_cli_disconnect
+ #endif
+
+ /*
+@@ -75,7 +87,7 @@
+ #ifdef _DEBUG
+ _pam_log(LOG_NOTICE,"Error connecting client over %s!",tty);
+ #endif
+- obexftp_cli_close(cli);
++ obexftp_cli_close_wrapper(cli);
+ if (ctrans) cobex_free(ctrans);
+ return 0;
+ }
+@@ -87,8 +99,8 @@
+ #ifdef _DEBUG
+ _pam_log(LOG_NOTICE,"Can't get list file over %s!",tty);
+ #endif
+- obexftp_cli_disconnect (cli);
+- obexftp_cli_close(cli);
++ obexftp_cli_disconnect_wrapper (cli);
++ obexftp_cli_close_wrapper(cli);
+ if (ctrans) cobex_free(ctrans);
+ return 0;
+ }
+@@ -121,8 +133,8 @@
+ }
+ fclose(f);
+
+- obexftp_cli_disconnect (cli);
+- obexftp_cli_close(cli);
++ obexftp_cli_disconnect_wrapper (cli);
++ obexftp_cli_close_wrapper(cli);
+ if (ctrans) cobex_free(ctrans);
+ return res;
+ }
diff --git a/sys-auth/pam_x509/files/pam_x509-ds-obexftp.patch b/sys-auth/pam_x509/files/pam_x509-ds-obexftp.patch
new file mode 100644
index 0000000..eca5658
--- /dev/null
+++ b/sys-auth/pam_x509/files/pam_x509-ds-obexftp.patch
@@ -0,0 +1,74 @@
+diff -dPNur pam_x509-1.0.1/Makefile pam_x509-1.0.1-new/Makefile
+--- pam_x509-1.0.1/Makefile 2006-01-04 12:56:14.000000000 +0000
++++ pam_x509-1.0.1-new/Makefile 2006-01-04 13:35:20.000000000 +0000
+@@ -2,13 +2,13 @@
+
+ all: pam_x509
+
+-
++CFLAGS += -fPIC
+ OBJECTS=sslapp.o sslauth.o pam_x509.o pass.o
+
+ ifeq ($(BT),yes)
+ OBJECTS += rfcomm.o
+ LIBS += -lbluetooth -lobexftp -lcobexbfb -lbfb `openobex-config --libs`
+- CFLAGS += -D_BLUETOOTH
++ CFLAGS += -D_BLUETOOTH `openobex-config --cflags`
+ endif
+
+ pam_x509: $(OBJECTS)
+@@ -23,7 +23,7 @@
+ pass.o: pass.c sslauth.h
+
+ rfcomm.o: rfcomm.c sslauth.h
+- gcc -c `openobex-config --cflags` rfcomm.c
++ gcc -c $(CFLAGS) rfcomm.c
+
+
+ clean:
+diff -dPNur pam_x509-1.0.1/rfcomm.c pam_x509-1.0.1-new/rfcomm.c
+--- pam_x509-1.0.1/rfcomm.c 2003-10-18 15:28:13.000000000 +0000
++++ pam_x509-1.0.1-new/rfcomm.c 2006-01-04 13:32:17.000000000 +0000
+@@ -19,6 +19,15 @@
+ #include <obexftp/client.h>
+ #include <cobexbfb/cobex_bfb.h>
+
++#ifdef obexftp_cli_connect
++# define obexftp_cli_connect_wrapper(cli) obexftp_cli_connect(cli, NULL, 0)
++# define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_cli_open(OBEX_TRANS_BLUETOOTH, ctrans, cb, param)
++# define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path, 1)
++#else
++# define obexftp_cli_connect_wrapper(cli) obexftp_cli_connect(cli)
++# define obexftp_cli_open_wrapper(cb, ctrans, param) obexftp_cli_open(cb, ctrans, param)
++# define obexftp_setpath_wrapper(cli, path) obexftp_setpath(cli, path)
++#endif
+
+ /*
+ static void print_dev_info(struct rfcomm_dev_info *di)
+@@ -53,7 +62,7 @@
+ strcpy(lfile,tmp_dir); lpos=lfile+strlen(lfile); *lpos='/'; lpos++; *lpos=0;
+
+ ctrans = cobex_ctrans (tty);
+- cli = obexftp_cli_open (info_cb, ctrans, NULL);
++ cli = obexftp_cli_open_wrapper (info_cb, ctrans, NULL);
+ if (!cli) {
+ #ifdef _DEBUG
+ _pam_log(LOG_NOTICE,"Error opening obexftp-client connection over %s!",tty);
+@@ -62,7 +71,7 @@
+ return 0;
+ }
+
+- if (obexftp_cli_connect (cli) < 0) {
++ if (obexftp_cli_connect_wrapper (cli) < 0) {
+ #ifdef _DEBUG
+ _pam_log(LOG_NOTICE,"Error connecting client over %s!",tty);
+ #endif
+@@ -84,7 +93,7 @@
+ return 0;
+ }
+
+- if (obexftp_setpath(cli, bt_path)>=0) {
++ if (obexftp_setpath_wrapper(cli, bt_path)>=0) {
+ while(!feof(f)) {
+ fgets(stmp,MAX_LINE_SIZE-1,f);
+ for(spos=stmp;((*spos==' ')||(*spos=='\t'));spos++);
diff --git a/sys-auth/pam_x509/files/pam_x509-ds_syslog.patch b/sys-auth/pam_x509/files/pam_x509-ds_syslog.patch
new file mode 100644
index 0000000..f49142c
--- /dev/null
+++ b/sys-auth/pam_x509/files/pam_x509-ds_syslog.patch
@@ -0,0 +1,45 @@
+diff -dPNur pam_x509-1.0.2/pam_x509.c pam_x509-1.0.2-new/pam_x509.c
+--- pam_x509-1.0.2/pam_x509.c 2006-06-12 13:55:19.000000000 +0200
++++ pam_x509-1.0.2-new/pam_x509.c 2009-03-19 21:58:35.000000000 +0100
+@@ -4,6 +4,7 @@
+ #include <stdarg.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <syslog.h>
+
+ #include "sslauth.h"
+
+diff -dPNur pam_x509-1.0.2/pass.c pam_x509-1.0.2-new/pass.c
+--- pam_x509-1.0.2/pass.c 2003-10-17 00:51:55.000000000 +0200
++++ pam_x509-1.0.2-new/pass.c 2009-03-19 22:39:51.000000000 +0100
+@@ -24,6 +24,8 @@
+ free(reply); \
+ } while (0)
+
++#include <syslog.h>
++
+ static int return_null_password(char *buf) {
+ if (buf) buf[0]=0;
+ return 0;
+diff -dPNur pam_x509-1.0.2/rfcomm.c pam_x509-1.0.2-new/rfcomm.c
+--- pam_x509-1.0.2/rfcomm.c 2006-06-12 14:24:23.000000000 +0200
++++ pam_x509-1.0.2-new/rfcomm.c 2009-03-19 21:58:26.000000000 +0100
+@@ -8,6 +8,7 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <syslog.h>
+
+ #include "sslauth.h"
+
+diff -dPNur pam_x509-1.0.2/sslauth.c pam_x509-1.0.2-new/sslauth.c
+--- pam_x509-1.0.2/sslauth.c 2006-06-12 13:56:51.000000000 +0200
++++ pam_x509-1.0.2-new/sslauth.c 2009-03-19 21:58:13.000000000 +0100
+@@ -5,6 +5,7 @@
+ #include <dirent.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
++#include <syslog.h>
+
+ #include <openssl/ssl.h>
+ #include <openssl/safestack.h>
diff --git a/sys-auth/pam_x509/files/x509-auth b/sys-auth/pam_x509/files/x509-auth
new file mode 100644
index 0000000..8ae8eda
--- /dev/null
+++ b/sys-auth/pam_x509/files/x509-auth
@@ -0,0 +1,3 @@
+auth required /lib/security/pam_env.so
+auth sufficient /lib/security/pam_x509.so
+auth required /lib/security/pam_deny.so
diff --git a/sys-auth/pam_x509/files/x509.config b/sys-auth/pam_x509/files/x509.config
new file mode 100644
index 0000000..6256418
--- /dev/null
+++ b/sys-auth/pam_x509/files/x509.config
@@ -0,0 +1 @@
+/CN:-r
diff --git a/sys-auth/pam_x509/pam_x509-1.0.2-r1.ebuild b/sys-auth/pam_x509/pam_x509-1.0.2-r1.ebuild
new file mode 100644
index 0000000..7b21cd6
--- /dev/null
+++ b/sys-auth/pam_x509/pam_x509-1.0.2-r1.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam_usb/pam_usb-0.3.2.ebuild,v 1.3 2005/09/16 11:16:21 agriffis Exp $
+
+inherit eutils pam
+
+DESCRIPTION="PAM X509 password-less authentication module"
+SRC_URI="http://dside.dyndns.org/files/darklin/darksoft/${P}.tar.bz2"
+HOMEPAGE="http://pam-x509.sourceforge.net/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+DEPEND="dev-libs/openssl
+ sys-libs/pam
+ net-wireless/bluez-libs
+ net-wireless/bluez-utils
+ dev-libs/openobex
+ app-mobilephone/obexftp
+ sys-apps/hotplug-base
+ dev-lang/perl"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/pam_x509-ds-compile.patch
+ perl -pi -e "s|BT=\w+|BT=yes|g" Makefile
+}
+
+src_compile() {
+ emake || die "make failed"
+}
+
+src_install() {
+ cd ${S}
+
+ dodir /etc/hotplug.d /etc/pam.d /etc/pam_usb
+
+ dodir /lib/security /etc/pam.d /var/spool/x509 /mnt/auth || die
+ install -c -m 755 pam_x509.so ${D}/lib/security || die
+ install -m 644 ${FILESDIR}/x509-auth ${D}/etc/pam.d || die
+ install -m 644 ${FILESDIR}/x509.config ${D}/etc || die
+ ln -s securetty ${D}/etc/x509.securetty || die
+}
diff --git a/sys-auth/pam_x509/pam_x509-1.0.2-r2.ebuild b/sys-auth/pam_x509/pam_x509-1.0.2-r2.ebuild
new file mode 100644
index 0000000..c9e1465
--- /dev/null
+++ b/sys-auth/pam_x509/pam_x509-1.0.2-r2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam_usb/pam_usb-0.3.2.ebuild,v 1.3 2005/09/16 11:16:21 agriffis Exp $
+
+inherit eutils pam
+
+DESCRIPTION="PAM X509 password-less authentication module"
+SRC_URI="http://dside.dyndns.org/files/darklin/darksoft/${P}.tar.bz2"
+HOMEPAGE="http://pam-x509.sourceforge.net/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+DEPEND="dev-libs/openssl
+ sys-libs/pam
+ net-wireless/bluez-libs
+ net-wireless/bluez-utils
+ dev-libs/openobex
+ app-mobilephone/obexftp
+ sys-apps/hotplug-base
+ dev-lang/perl"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/pam_x509-ds-compile2.patch || die
+ perl -pi -e "s|BT=\w+|BT=yes|g" Makefile
+}
+
+src_compile() {
+ emake || die "make failed"
+}
+
+src_install() {
+ cd ${S}
+
+ dodir /etc/hotplug.d /etc/pam.d /etc/pam_usb
+
+ dodir /lib/security /etc/pam.d /var/spool/x509 /mnt/auth || die
+ install -c -m 755 pam_x509.so ${D}/lib/security || die
+ install -m 644 ${FILESDIR}/x509-auth ${D}/etc/pam.d || die
+ install -m 644 ${FILESDIR}/x509.config ${D}/etc || die
+ ln -s securetty ${D}/etc/x509.securetty || die
+}
diff --git a/sys-auth/pam_x509/pam_x509-1.0.2-r3.ebuild b/sys-auth/pam_x509/pam_x509-1.0.2-r3.ebuild
new file mode 100644
index 0000000..0b88d47
--- /dev/null
+++ b/sys-auth/pam_x509/pam_x509-1.0.2-r3.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam_usb/pam_usb-0.3.2.ebuild,v 1.3 2005/09/16 11:16:21 agriffis Exp $
+
+inherit eutils pam
+
+DESCRIPTION="PAM X509 password-less authentication module"
+SRC_URI="http://dside.dyndns.org/files/darklin/darksoft/${P}.tar.bz2"
+HOMEPAGE="http://pam-x509.sourceforge.net/"
+
+IUSE="bluetooth"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+DEPEND="dev-libs/openssl
+ sys-libs/pam
+ bluetooth? (
+ net-wireless/bluez-libs
+ net-wireless/bluez-utils
+ dev-libs/openobex
+ app-mobilephone/obexftp
+ sys-apps/hotplug-base
+ )
+ dev-lang/perl"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/pam_x509-ds-compile2.patch || die
+ epatch ${FILESDIR}/pam_x509-ds_syslog.patch || die
+
+ if use bluetooth; then
+ perl -pi -e "s|BT=\w+|BT=yes|g" Makefile
+ else
+ perl -pi -e "s|BT=\w+|BT=no|g" Makefile
+ fi
+}
+
+src_compile() {
+ emake || die "make failed"
+}
+
+src_install() {
+ cd ${S}
+
+ dodir /etc/hotplug.d /etc/pam.d /etc/pam_usb
+
+ dodir /lib/security /etc/pam.d /var/spool/x509 /mnt/auth || die
+ install -c -m 755 pam_x509.so ${D}/lib/security || die
+ install -m 644 ${FILESDIR}/x509-auth ${D}/etc/pam.d || die
+ install -m 644 ${FILESDIR}/x509.config ${D}/etc || die
+ ln -s securetty ${D}/etc/x509.securetty || die
+}
diff --git a/sys-auth/pam_x509/pam_x509-1.0.2-r4.ebuild b/sys-auth/pam_x509/pam_x509-1.0.2-r4.ebuild
new file mode 100644
index 0000000..a78b78c
--- /dev/null
+++ b/sys-auth/pam_x509/pam_x509-1.0.2-r4.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-auth/pam_usb/pam_usb-0.3.2.ebuild,v 1.3 2005/09/16 11:16:21 agriffis Exp $
+
+inherit eutils pam
+
+DESCRIPTION="PAM X509 password-less authentication module"
+SRC_URI="http://dside.dyndns.org/files/darklin/darksoft/${P}.tar.bz2"
+HOMEPAGE="http://pam-x509.sourceforge.net/"
+
+IUSE="bluetooth"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+DEPEND="dev-libs/openssl
+ sys-libs/pam
+ bluetooth? (
+ net-wireless/bluez
+ dev-libs/openobex
+ app-mobilephone/obexftp
+ )
+ dev-lang/perl"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+ epatch ${FILESDIR}/pam_x509-ds-compile2.patch || die
+ epatch ${FILESDIR}/pam_x509-ds_syslog.patch || die
+
+ if use bluetooth; then
+ perl -pi -e "s|BT=\w+|BT=yes|g" Makefile
+ else
+ perl -pi -e "s|BT=\w+|BT=no|g" Makefile
+ fi
+}
+
+src_compile() {
+ emake || die "make failed"
+}
+
+src_install() {
+ cd ${S}
+
+ dodir /etc/hotplug.d /etc/pam.d /etc/pam_usb
+
+ dodir /lib/security /etc/pam.d /var/spool/x509 /mnt/auth || die
+ install -c -m 755 pam_x509.so ${D}/lib/security || die
+ install -m 644 ${FILESDIR}/x509-auth ${D}/etc/pam.d || die
+ install -m 644 ${FILESDIR}/x509.config ${D}/etc || die
+ ln -s securetty ${D}/etc/x509.securetty || die
+}
diff --git a/sys-boot/usb-creator/Manifest b/sys-boot/usb-creator/Manifest
new file mode 100644
index 0000000..9a2e3b3
--- /dev/null
+++ b/sys-boot/usb-creator/Manifest
@@ -0,0 +1,2 @@
+DIST usb-creator_0.2.26.tar.gz 477983 RMD160 4207927b63263dbd34581b45517d5dcb1ba195c2 SHA1 45358b32be6c755a8eb605bb94d48c0b34962425 SHA256 c470bbd8e71b888167fe487dceeea024d0d254ce1a76b772e85cdcc834979b05
+EBUILD usb-creator-0.2.26.ebuild 1319 RMD160 861aec7524bf7da942afd69f95c60c3b99e67d1a SHA1 bac0b09da880c531dd94f73f7b81aa8d56290bc0 SHA256 77cbb3fedfe13b8cc18699670a5b2ed68579027756a3e7aa6ac1750356314d46
diff --git a/sys-boot/usb-creator/usb-creator-0.2.26.ebuild b/sys-boot/usb-creator/usb-creator-0.2.26.ebuild
new file mode 100644
index 0000000..c0f99c3
--- /dev/null
+++ b/sys-boot/usb-creator/usb-creator-0.2.26.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=3
+
+SUPPORT_PYTHON_ABIS="1"
+PYTHON_DEPEND="2"
+RESTRICT_PYTHON_ABIS="3.*"
+inherit distutils
+
+DESCRIPTION="create a startup disk using a CD or disc image"
+HOMEPAGE="http://launchpad.net/usb-creator"
+SRC_URI="https://launchpad.net/ubuntu/+archive/primary/+files/${PN}_${PV}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="gtk kde"
+
+DEPEND="sys-devel/gettext
+ dev-python/python-distutils-extra"
+RDEPEND="${DEPEND}
+ gtk? ( dev-python/pygtk )
+ kde? ( dev-python/PyQt4 )"
+
+S="${WORKDIR}/${PN}.trunk"
+
+src_install() {
+ distutils_src_install
+ ! use kde && find "${D}" -name '*kde*' -exec rm -rf '{}' \;
+ ! use gtk && find "${D}" -name '*gtk*' -exec rm -rf '{}' \;
+ use gtk && {
+ insinto /usr/share/icons/hicolor/16x16/apps
+ newins "${S}"/debian/Debian/usb-creator-gtk-16x16.xpm usb-creator-gtk.xpm
+ insinto /usr/share/icons/hicolor/32x32/apps
+ newins "${S}"/debian/Debian/usb-creator-gtk-32x32.xpm usb-creator-gtk.xpm
+ }
+ use kde && {
+ insinto /usr/share/icons/hicolor/16x16/apps
+ newins "${S}"/debian/Debian/usb-creator-kde-16x16.xpm usb-creator-kde.xpm
+ insinto /usr/share/icons/hicolor/32x32/apps
+ newins "${S}"/debian/Debian/usb-creator-kde-32x32.xpm usb-creator-kde.xpm
+ }
+}
diff --git a/sys-cluster/glusterfs/Manifest b/sys-cluster/glusterfs/Manifest
new file mode 100644
index 0000000..5093096
--- /dev/null
+++ b/sys-cluster/glusterfs/Manifest
@@ -0,0 +1,12 @@
+AUX 50glusterfs-mode-gentoo.el 169 SHA256 2467d044665d16dd95f78f7a7a104099ce00849cd0a2a86b110fe4c91b316a9d SHA512 f90b3f49f53c08db5596a6795df64a834b390602a79fb79b56f6cfb6191c7ca8ce2bedd2885d049575e26cc3b321f80e2786e99055c02682f4fbf454d5ed5804 WHIRLPOOL fb4abfc0c07ddc8805430446bd901b95a9951f53711da647e87ea8c26bece8ed9c7bb17b33cfa9b114ba2a64a055f275202d520cf37ee0c178d005d07ff80173
+AUX glusterd-r2.initd 756 SHA256 5fee2ab663249573f1f37d8b32ba8d609028446d12bdcfd925d763803cd88d47 SHA512 ad0f69cde665515b8cd2ce0ceeb2d6abdbf84dd2a2cde4f883a76b44fe61c18261ef4120f6e11eb6ef4a61b9361fd2eb6e5a3a62e98c78c086b4d177e3115b57 WHIRLPOOL 731dbd0bcf7f30b16c83ed08751b5768e5185c2231f55bc051ff0c2396856a7ed1a0db271f6bc18c9533c427aaa103503113806bf9a857c76e703cbc64f965ec
+AUX glusterfs-3.4.0-silent_rules.patch 553 SHA256 08a55b2f54050ad47dae1a953fc1f1410842556bf2464ab15e7df9019ab24de5 SHA512 67fe230a667084f30960d4ed79f58c7da93edde086ca8614cb3f7160901cb87da471cce932cfae470033c5dfc92b00ed69fd0e32238bc0e9af770e1946f511ce WHIRLPOOL e596ee4c6fae6cb7f843501b55e832791d612547f81d5e6adf4e96ea8cc4fc20fd71d5164f7fe42a74ed0b8e7036643cd5b684317f98bfd610b91dbe4c4c3684
+AUX glusterfs-3.5.1-Add-libraries-using-LIBADD-instead-of-LDFLAGS.patch 2145 SHA256 10b0ad92f61996f7ca0e0bf12b383813c4cd2013d95d8b6e1ab53a18853a9e05 SHA512 22d4ead173579698a23b7d66e566e61410e5bc0178b1dc0b7346b18d7e8cf33a44873b83a09e6dab32b06e7df8285da4bb7eb730626c61c1b3d28e9e8ce86f00 WHIRLPOOL e8e5572a5861478c718cd0b89c74159e3b13f6ef204eb3e3b2d8af8ddd296bc71469648ae957f0dd4e18de187e6fcd3e1910ea9ec5a707b78f61af8c88c9bb9b
+AUX glusterfs-3.5.1-build-shared-only.patch 25227 SHA256 203d834d63845e0324585d99dbe0a34deda7a2b06949223787359946440e8ad2 SHA512 6ea22772c9dec330c63d5665a861537536fec6a66cecccad36f0123cc35818d31096bce5561d6ea3d2318327c0f28831bc81d83b489e71432dfcf8879ee56fd9 WHIRLPOOL d983d70170ca78be7a7533f96334baf6127864e63d17e1597f164db60ac5d52d4fb1a78a9d2d7cae998946fc9a4dd8eb2d3fef68de749fcb2f8e5e7079967d16
+AUX glusterfs-3.6.5-build-shared-only.patch 27261 SHA256 b2d73ffb27f07bf762e8f67bdbbbdd3a7eef62049ec346a2ab84a9171e55c053 SHA512 cbaa02845022cb32aab1e419d13f8291b59aa6de78ccdd944af52d05defcd4ae9bb891c0f303f7d4870056e0777d70507b137aa9e38a4a13a267925a3cbc0277 WHIRLPOOL ab0b75e36a0f3011618e87dc9490471c9a759cd65985074a3046be5bb3609830018ca50d82de4db8b783424c46768d4b2fe0c906271cb5e2a01fec264b0f26e1
+AUX glusterfs-r1.initd 3072 SHA256 ee75831e6c81f5944adf15e7bf3b929972581031ae4d782e50bb69c4edf2845b SHA512 79594885b78ba9f2aa3bceea2df4abff0d0249fbdab1b4054051060463e4c630daeccb75b69ba96138614b93fa585ce5967534d3cb72e986fd160f951c2e19da WHIRLPOOL 4d4bc5f987879b2ef63bda994be846871eed96cf6e7a506e3b37389dead717a44a01459c36280de59f3ba8742f97c3ddcfc995c3e1df18f75fd950beaa48f7ec
+AUX glusterfs.confd 129 SHA256 a9023ba1112ceb4597c654228f0beb0053ed695aeb32c65e0749a7157fab563d SHA512 657c478dd3a60c144543821acd6a87f804d258d4679007aad5108790449e43eda7e0de8e8c0c8e13357a35afbb0d09065423101e5234285a9b96c9ac8b2e33b4 WHIRLPOOL 114f076456845087bf4dc28fb179cfea335f5f03b1d16098d836b5b0487c46fba4ee48d0bfab8cff7b2326b9585b327271d5c1d402db8289cafdf29f70ac063d
+AUX glusterfs.logrotate 611 SHA256 ec29f5830f6108fca793d6ac90bb49e644a991a073a736ccb76fd05f9a9f60a2 SHA512 568728fe77acecb686286b0be6c086fe3448d054d26da15c3846726a8f845ae963e6756c517b413a9eb4d6b646c61972887a35e89846d2d90d364b755e471791 WHIRLPOOL 10ced84d8035e3e7e5aaa013cd7c0c9761999e8ddca41ff2df3ed2be7a78add579d5c2b17a27b86d9a6fafdb607b9d175725208af72585d9fdc66b3bdb5fed3d
+AUX glusterfs.vim 139 SHA256 f214c1c8a01c9184b535fa7ae307200a8a1dc83fd42e92bdd57a7b1cae1dc099 SHA512 6ea3b56b71d7e206a57611dd68160b6b9242a19b5c927560f60881dc28d250f7958c50f788a7b9a41fb46010fdac2d67a8289b909ed1f05b793c900f37ccbfb7 WHIRLPOOL 3006d9fea924fe274ac00dc5d711cfe642f347808889c3d5dbde764f0f0cd2ab27509fa75d37b95ccd98c33bc1db8d082e5d16a26e0f888b7189f9738b6ff963
+DIST glusterfs-3.9.1.tar.gz 8810650 SHA256 896fdbaf6696a90cfd5ce1e338e158669d0f6c839b13f3a1844e44907f88e30a SHA512 ffd786567be73b6b0c3569dc24769cb2bc1aed17675747d1192f96da755acde63d8f2ab8bbad6f1ba687a8484d0a9b7dd71fe0cce7fab0fa7b8b0dae9576a1cc WHIRLPOOL c65ef50c25827ead64fd61803b69377151791b3d3343690d5f3d8ed18f8c7172cbbe66944e6dd2b78e18aa1f0da24dec667917849d214008113d2aba7e660b89
+EBUILD glusterfs-3.9.1.ebuild 6369 SHA256 7029679bfca275b8ad0eb1b408f69381758f9b75a8d807d0f20cd9cd3714b26b SHA512 e0c936adb66eb94794d12672af2ef1b4cb438013d7a31456e614f0948eec911341910726d1371cfae721b863d66c01231306d30e6df161b5f6d6fa3609678b41 WHIRLPOOL 078d04821afeaf15219bbed36be14a3a7d1c43842ab01f08aa3ba476d6f259a7186335ab4f1301e1bb23040816141ca634e4f1391837dc4a23559db6bf2cc36f
diff --git a/sys-cluster/glusterfs/files/50glusterfs-mode-gentoo.el b/sys-cluster/glusterfs/files/50glusterfs-mode-gentoo.el
new file mode 100644
index 0000000..c14b0d8
--- /dev/null
+++ b/sys-cluster/glusterfs/files/50glusterfs-mode-gentoo.el
@@ -0,0 +1,5 @@
+
+;;; puppet-mode site-lisp configuration
+
+(add-to-list 'load-path "@SITELISP@")
+(autoload 'glusterfs-mode "glusterfs-mode" "Major mode for editing glusterfs manifests")
diff --git a/sys-cluster/glusterfs/files/glusterd-r2.initd b/sys-cluster/glusterfs/files/glusterd-r2.initd
new file mode 100644
index 0000000..bd33651
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterd-r2.initd
@@ -0,0 +1,33 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+description="Gluster elastic volume management daemon"
+command="/usr/sbin/glusterd"
+pidfile="/var/run/${SVCNAME}.pid"
+command_args="-N"
+
+command_background="yes"
+
+depend() {
+ need net
+ before netmount
+}
+
+start_pre() {
+ # Ensure that the GlusterFS auxiliary mount parent directory exists
+ checkpath --directory --owner root:root --mode 0700 /var/run/gluster
+}
+
+start_post() {
+ local c=0
+ ebegin "Waiting for glusterd to start up"
+ while ! /usr/sbin/gluster volume list &>/dev/null && [ "${c}" -lt "${glusterd_max_wait_start-60}" ]; do
+ (( ++c ))
+ done
+ [ "${c}" -lt "${glusterd_max_wait_start-60}" ]
+ eend $?
+
+ return 0
+}
diff --git a/sys-cluster/glusterfs/files/glusterfs-3.4.0-silent_rules.patch b/sys-cluster/glusterfs/files/glusterfs-3.4.0-silent_rules.patch
new file mode 100644
index 0000000..1b79e0d
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs-3.4.0-silent_rules.patch
@@ -0,0 +1,23 @@
+--- configure.ac 2013-07-12 19:43:26.000000000 +0200
++++ configure.ac2 2013-07-25 13:58:48.294091861 +0200
+@@ -10,20 +10,6 @@
+
+ AM_INIT_AUTOMAKE
+
+-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
+-
+-if make --help 2>&1 | grep -q no-print-directory; then
+- AM_MAKEFLAGS="$AM_MAKEFLAGS --no-print-directory";
+-fi
+-
+-if make --help 2>&1 | grep -q quiet; then
+- AM_MAKEFLAGS="$AM_MAKEFLAGS --quiet"
+-fi
+-
+-if libtool --help 2>&1 | grep -q quiet; then
+- AM_LIBTOOLFLAGS="--quiet";
+-fi
+-
+ AC_CONFIG_HEADERS([config.h])
+
+ AC_CONFIG_FILES([Makefile
diff --git a/sys-cluster/glusterfs/files/glusterfs-3.5.1-Add-libraries-using-LIBADD-instead-of-LDFLAGS.patch b/sys-cluster/glusterfs/files/glusterfs-3.5.1-Add-libraries-using-LIBADD-instead-of-LDFLAGS.patch
new file mode 100644
index 0000000..5c4df0c
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs-3.5.1-Add-libraries-using-LIBADD-instead-of-LDFLAGS.patch
@@ -0,0 +1,54 @@
+From 8bfe3752c3a0a4db49a879048cdd089da6c45ed0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tiziano=20M=C3=BCller?= <tm@dev-zero.ch>
+Date: Thu, 26 Jun 2014 19:04:54 +0200
+Subject: [PATCH] Add libraries using LIBADD instead of LDFLAGS
+
+---
+ xlators/encryption/crypt/src/Makefile.am | 6 +++---
+ xlators/features/compress/src/Makefile.am | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/xlators/encryption/crypt/src/Makefile.am b/xlators/encryption/crypt/src/Makefile.am
+index b13f650..d7ebac6 100644
+--- a/xlators/encryption/crypt/src/Makefile.am
++++ b/xlators/encryption/crypt/src/Makefile.am
+@@ -3,10 +3,10 @@ if ENABLE_CRYPT_XLATOR
+ xlator_LTLIBRARIES = crypt.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/encryption
+
+-crypt_la_LDFLAGS = -module -avoid-version -lssl -lcrypto
++crypt_la_LDFLAGS = -module -avoid-version
+
+ crypt_la_SOURCES = keys.c data.c metadata.c atom.c crypt.c
+-crypt_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
++crypt_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -lssl -lcrypto
+
+ noinst_HEADERS = crypt-common.h crypt-mem-types.h crypt.h metadata.h
+
+@@ -21,4 +21,4 @@ else
+ noinst_DIST = keys.c data.c metadata.c atom.c crypt.c
+ noinst_HEADERS = crypt-common.h crypt-mem-types.h crypt.h metadata.h
+
+-endif
+\ No newline at end of file
++endif
+diff --git a/xlators/features/compress/src/Makefile.am b/xlators/features/compress/src/Makefile.am
+index 0bf757c..d3abe03 100644
+--- a/xlators/features/compress/src/Makefile.am
++++ b/xlators/features/compress/src/Makefile.am
+@@ -4,10 +4,10 @@ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+ noinst_HEADERS = cdc.h cdc-mem-types.h
+
+-cdc_la_LDFLAGS = -module -avoid-version $(LIBZ_LIBS)
++cdc_la_LDFLAGS = -module -avoid-version
+
+ cdc_la_SOURCES = cdc.c cdc-helper.c
+-cdc_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
++cdc_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBZ_LIBS)
+
+ AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src -fPIC -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D$(GF_HOST_OS) \
+ -shared -nostartfiles $(LIBZ_CFLAGS)
+--
+1.9.2
+
diff --git a/sys-cluster/glusterfs/files/glusterfs-3.5.1-build-shared-only.patch b/sys-cluster/glusterfs/files/glusterfs-3.5.1-build-shared-only.patch
new file mode 100644
index 0000000..9acf0d7
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs-3.5.1-build-shared-only.patch
@@ -0,0 +1,576 @@
+diff --git a/rpc/rpc-transport/rdma/src/Makefile.am b/rpc/rpc-transport/rdma/src/Makefile.am
+index 2bf7cf2..8e52d70 100644
+--- a/rpc/rpc-transport/rdma/src/Makefile.am
++++ b/rpc/rpc-transport/rdma/src/Makefile.am
+@@ -3,7 +3,7 @@
+ transport_LTLIBRARIES = rdma.la
+ transportdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/rpc-transport
+
+-rdma_la_LDFLAGS = -module -avoid-version
++rdma_la_LDFLAGS = -module -avoid-version -shared
+
+ rdma_la_SOURCES = rdma.c name.c
+ rdma_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
+diff --git a/rpc/rpc-transport/socket/src/Makefile.am b/rpc/rpc-transport/socket/src/Makefile.am
+index 71e6ed6..b481fe9 100644
+--- a/rpc/rpc-transport/socket/src/Makefile.am
++++ b/rpc/rpc-transport/socket/src/Makefile.am
+@@ -3,7 +3,7 @@ noinst_HEADERS = socket.h name.h
+ rpctransport_LTLIBRARIES = socket.la
+ rpctransportdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/rpc-transport
+
+-socket_la_LDFLAGS = -module -avoid-version
++socket_la_LDFLAGS = -module -avoid-version -shared
+
+ socket_la_SOURCES = socket.c name.c
+ socket_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -lssl
+diff --git a/xlators/cluster/afr/src/Makefile.am b/xlators/cluster/afr/src/Makefile.am
+index 35d18a6..959fea8 100644
+--- a/xlators/cluster/afr/src/Makefile.am
++++ b/xlators/cluster/afr/src/Makefile.am
+@@ -7,11 +7,11 @@ afr_common_source = afr-dir-read.c afr-dir-write.c afr-inode-read.c \
+ afr-self-heal-algorithm.c afr-lk-common.c afr-self-heald.c \
+ $(top_builddir)/xlators/lib/src/libxlator.c
+
+-afr_la_LDFLAGS = -module -avoid-version
++afr_la_LDFLAGS = -module -avoid-version -shared
+ afr_la_SOURCES = $(afr_common_source) afr.c
+ afr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-pump_la_LDFLAGS = -module -avoid-version
++pump_la_LDFLAGS = -module -avoid-version -shared
+ pump_la_SOURCES = $(afr_common_source) pump.c
+ pump_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+diff --git a/xlators/cluster/dht/src/Makefile.am b/xlators/cluster/dht/src/Makefile.am
+index 174bea8..cab9993 100644
+--- a/xlators/cluster/dht/src/Makefile.am
++++ b/xlators/cluster/dht/src/Makefile.am
+@@ -12,13 +12,13 @@ dht_la_SOURCES = $(dht_common_source) dht.c
+ nufa_la_SOURCES = $(dht_common_source) nufa.c
+ switch_la_SOURCES = $(dht_common_source) switch.c
+
+-dht_la_LDFLAGS = -module -avoid-version
++dht_la_LDFLAGS = -module -avoid-version -shared
+ dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-nufa_la_LDFLAGS = -module -avoid-version
++nufa_la_LDFLAGS = -module -avoid-version -shared
+ nufa_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-switch_la_LDFLAGS = -module -avoid-version
++switch_la_LDFLAGS = -module -avoid-version -shared
+ switch_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+ noinst_HEADERS = dht-common.h dht-mem-types.h \
+diff --git a/xlators/cluster/stripe/src/Makefile.am b/xlators/cluster/stripe/src/Makefile.am
+index 2d15142..6989de9 100644
+--- a/xlators/cluster/stripe/src/Makefile.am
++++ b/xlators/cluster/stripe/src/Makefile.am
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = stripe.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/cluster
+
+-stripe_la_LDFLAGS = -module -avoid-version
++stripe_la_LDFLAGS = -module -avoid-version -shared
+
+ stripe_la_SOURCES = stripe.c stripe-helpers.c \
+ $(top_builddir)/xlators/lib/src/libxlator.c
+diff --git a/xlators/debug/error-gen/src/Makefile.am b/xlators/debug/error-gen/src/Makefile.am
+index 5075c59..a7681c4 100644
+--- a/xlators/debug/error-gen/src/Makefile.am
++++ b/xlators/debug/error-gen/src/Makefile.am
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = error-gen.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/debug
+
+-error_gen_la_LDFLAGS = -module -avoid-version
++error_gen_la_LDFLAGS = -module -avoid-version -shared
+
+ error_gen_la_SOURCES = error-gen.c
+ error_gen_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/debug/io-stats/src/Makefile.am b/xlators/debug/io-stats/src/Makefile.am
+index 332d790..bf62017 100644
+--- a/xlators/debug/io-stats/src/Makefile.am
++++ b/xlators/debug/io-stats/src/Makefile.am
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = io-stats.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/debug
+
+-io_stats_la_LDFLAGS = -module -avoid-version
++io_stats_la_LDFLAGS = -module -avoid-version -shared
+
+ io_stats_la_SOURCES = io-stats.c
+ io_stats_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/debug/trace/src/Makefile.am b/xlators/debug/trace/src/Makefile.am
+index 7b2597b..2030ed4 100644
+--- a/xlators/debug/trace/src/Makefile.am
++++ b/xlators/debug/trace/src/Makefile.am
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = trace.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/debug
+
+-trace_la_LDFLAGS = -module -avoid-version
++trace_la_LDFLAGS = -module -avoid-version -shared
+
+ trace_la_SOURCES = trace.c
+ trace_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/encryption/crypt/src/Makefile.am b/xlators/encryption/crypt/src/Makefile.am
+index d7ebac6..66ae6f5 100644
+--- a/xlators/encryption/crypt/src/Makefile.am
++++ b/xlators/encryption/crypt/src/Makefile.am
+@@ -3,7 +3,7 @@ if ENABLE_CRYPT_XLATOR
+ xlator_LTLIBRARIES = crypt.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/encryption
+
+-crypt_la_LDFLAGS = -module -avoid-version
++crypt_la_LDFLAGS = -module -avoid-version -shared
+
+ crypt_la_SOURCES = keys.c data.c metadata.c atom.c crypt.c
+ crypt_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -lssl -lcrypto
+diff --git a/xlators/encryption/rot-13/src/Makefile.am b/xlators/encryption/rot-13/src/Makefile.am
+index 94e8d18..d13894e 100644
+--- a/xlators/encryption/rot-13/src/Makefile.am
++++ b/xlators/encryption/rot-13/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = rot-13.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/encryption
+
+-rot_13_la_LDFLAGS = -module -avoid-version
++rot_13_la_LDFLAGS = -module -avoid-version -shared
+
+ rot_13_la_SOURCES = rot-13.c
+ rot_13_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/changelog/src/Makefile.am b/xlators/features/changelog/src/Makefile.am
+index 54c21ac..d98f43f 100644
+--- a/xlators/features/changelog/src/Makefile.am
++++ b/xlators/features/changelog/src/Makefile.am
+@@ -5,7 +5,7 @@ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+ noinst_HEADERS = changelog-helpers.h changelog-mem-types.h changelog-rt.h \
+ changelog-misc.h changelog-encoders.h changelog-notifier.h
+
+-changelog_la_LDFLAGS = -module -avoid-version
++changelog_la_LDFLAGS = -module -avoid-version -shared
+
+ changelog_la_SOURCES = changelog.c changelog-rt.c changelog-helpers.c \
+ changelog-encoders.c changelog-notifier.c
+diff --git a/xlators/features/compress/src/Makefile.am b/xlators/features/compress/src/Makefile.am
+index d3abe03..659cd49 100644
+--- a/xlators/features/compress/src/Makefile.am
++++ b/xlators/features/compress/src/Makefile.am
+@@ -4,7 +4,7 @@ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+ noinst_HEADERS = cdc.h cdc-mem-types.h
+
+-cdc_la_LDFLAGS = -module -avoid-version
++cdc_la_LDFLAGS = -module -avoid-version -shared
+
+ cdc_la_SOURCES = cdc.c cdc-helper.c
+ cdc_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBZ_LIBS)
+diff --git a/xlators/features/gfid-access/src/Makefile.am b/xlators/features/gfid-access/src/Makefile.am
+index db53aff..4eeaa4f 100644
+--- a/xlators/features/gfid-access/src/Makefile.am
++++ b/xlators/features/gfid-access/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = gfid-access.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-gfid_access_la_LDFLAGS = -module -avoid-version
++gfid_access_la_LDFLAGS = -module -avoid-version -shared
+
+ gfid_access_la_SOURCES = gfid-access.c
+ gfid_access_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/index/src/Makefile.am b/xlators/features/index/src/Makefile.am
+index 73bb897..5519798 100644
+--- a/xlators/features/index/src/Makefile.am
++++ b/xlators/features/index/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = index.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-index_la_LDFLAGS = -module -avoid-version
++index_la_LDFLAGS = -module -avoid-version -shared
+
+ index_la_SOURCES = index.c
+ index_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/locks/src/Makefile.am b/xlators/features/locks/src/Makefile.am
+index 0f79731..eda6a05 100644
+--- a/xlators/features/locks/src/Makefile.am
++++ b/xlators/features/locks/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = locks.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-locks_la_LDFLAGS = -module -avoid-version
++locks_la_LDFLAGS = -module -avoid-version -shared
+
+ locks_la_SOURCES = common.c posix.c entrylk.c inodelk.c reservelk.c \
+ clear.c
+diff --git a/xlators/features/mac-compat/src/Makefile.am b/xlators/features/mac-compat/src/Makefile.am
+index f8567ed..a283eb0 100644
+--- a/xlators/features/mac-compat/src/Makefile.am
++++ b/xlators/features/mac-compat/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = mac-compat.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-mac_compat_la_LDFLAGS = -module -avoid-version
++mac_compat_la_LDFLAGS = -module -avoid-version -shared
+
+ mac_compat_la_SOURCES = mac-compat.c
+ mac_compat_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/marker/src/Makefile.am b/xlators/features/marker/src/Makefile.am
+index a7c6764..477fe0f 100644
+--- a/xlators/features/marker/src/Makefile.am
++++ b/xlators/features/marker/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = marker.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-marker_la_LDFLAGS = -module -avoid-version
++marker_la_LDFLAGS = -module -avoid-version -shared
+
+ marker_la_SOURCES = marker.c marker-quota.c marker-quota-helper.c marker-common.c
+ marker_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/protect/src/Makefile.am b/xlators/features/protect/src/Makefile.am
+index 968e88c..84ceec2 100644
+--- a/xlators/features/protect/src/Makefile.am
++++ b/xlators/features/protect/src/Makefile.am
+@@ -2,15 +2,15 @@ xlator_LTLIBRARIES = prot_dht.la prot_client.la prot_server.la
+
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-prot_dht_la_LDFLAGS = -module -avoid-version
++prot_dht_la_LDFLAGS = -module -avoid-version -shared
+ prot_dht_la_SOURCES = prot_dht.c
+ prot_dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-prot_client_la_LDFLAGS = -module -avoid-version
++prot_client_la_LDFLAGS = -module -avoid-version -shared
+ prot_client_la_SOURCES = prot_client.c
+ prot_client_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-prot_server_la_LDFLAGS = -module -avoid-version
++prot_server_la_LDFLAGS = -module -avoid-version -shared
+ prot_server_la_SOURCES = prot_server.c
+ prot_server_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+diff --git a/xlators/features/qemu-block/src/Makefile.am b/xlators/features/qemu-block/src/Makefile.am
+index 08a7b62..30639e0 100644
+--- a/xlators/features/qemu-block/src/Makefile.am
++++ b/xlators/features/qemu-block/src/Makefile.am
+@@ -2,7 +2,7 @@ if ENABLE_QEMU_BLOCK
+ xlator_LTLIBRARIES = qemu-block.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-qemu_block_la_LDFLAGS = -module -avoid-version
++qemu_block_la_LDFLAGS = -module -avoid-version -shared
+ qemu_block_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(GLIB_LIBS) -lz -lrt
+
+ qemu_block_la_SOURCES_qemu = \
+diff --git a/xlators/features/quiesce/src/Makefile.am b/xlators/features/quiesce/src/Makefile.am
+index 15e4662..b3cd9d1 100644
+--- a/xlators/features/quiesce/src/Makefile.am
++++ b/xlators/features/quiesce/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = quiesce.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-quiesce_la_LDFLAGS = -module -avoid-version
++quiesce_la_LDFLAGS = -module -avoid-version -shared
+
+ quiesce_la_SOURCES = quiesce.c
+ quiesce_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/quota/src/Makefile.am b/xlators/features/quota/src/Makefile.am
+index 7165adc..06905f3 100644
+--- a/xlators/features/quota/src/Makefile.am
++++ b/xlators/features/quota/src/Makefile.am
+@@ -1,8 +1,8 @@
+ xlator_LTLIBRARIES = quota.la quotad.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-quota_la_LDFLAGS = -module -avoid-version
+-quotad_la_LDFLAGS = -module -avoid-version
++quota_la_LDFLAGS = -module -avoid-version -shared
++quotad_la_LDFLAGS = -module -avoid-version -shared
+
+ quota_la_SOURCES = quota.c quota-enforcer-client.c
+ quota_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/features/read-only/src/Makefile.am b/xlators/features/read-only/src/Makefile.am
+index 4c14621..a3f79fa 100644
+--- a/xlators/features/read-only/src/Makefile.am
++++ b/xlators/features/read-only/src/Makefile.am
+@@ -4,12 +4,12 @@ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+ noinst_HEADERS = read-only-common.h
+
+-read_only_la_LDFLAGS = -module -avoid-version
++read_only_la_LDFLAGS = -module -avoid-version -shared
+
+ read_only_la_SOURCES = read-only.c read-only-common.c
+ read_only_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-worm_la_LDFLAGS = -module -avoid-version
++worm_la_LDFLAGS = -module -avoid-version -shared
+
+ worm_la_SOURCES = read-only-common.c worm.c
+ worm_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/mgmt/glusterd/src/Makefile.am b/xlators/mgmt/glusterd/src/Makefile.am
+index a6f49ae..b071280 100644
+--- a/xlators/mgmt/glusterd/src/Makefile.am
++++ b/xlators/mgmt/glusterd/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = glusterd.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/mgmt
+ glusterd_la_CPPFLAGS = $(AM_CPPFLAGS) "-DFILTERDIR=\"$(libdir)/glusterfs/$(PACKAGE_VERSION)/filter\""
+-glusterd_la_LDFLAGS = -module -avoid-version
++glusterd_la_LDFLAGS = -module -avoid-version -shared
+ if ENABLE_BD_XLATOR
+ glusterd_la_LDFLAGS += -llvm2app
+ endif
+diff --git a/xlators/mount/fuse/src/Makefile.am b/xlators/mount/fuse/src/Makefile.am
+index 653121d..3f221d8 100644
+--- a/xlators/mount/fuse/src/Makefile.am
++++ b/xlators/mount/fuse/src/Makefile.am
+@@ -24,7 +24,7 @@ endif
+ fuse_la_SOURCES = fuse-helpers.c fuse-resolve.c fuse-bridge.c \
+ $(CONTRIBDIR)/fuse-lib/misc.c $(mount_source)
+
+-fuse_la_LDFLAGS = -module -avoid-version
++fuse_la_LDFLAGS = -module -avoid-version -shared
+ fuse_la_LIBADD = @GF_FUSE_LDADD@
+
+ AM_CPPFLAGS = $(GF_CPPFLAGS) \
+diff --git a/xlators/nfs/server/src/Makefile.am b/xlators/nfs/server/src/Makefile.am
+index 62fbf65..1995f67 100644
+--- a/xlators/nfs/server/src/Makefile.am
++++ b/xlators/nfs/server/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = server.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/nfs
+ nfsrpclibdir = $(top_srcdir)/rpc/rpc-lib/src
+-server_la_LDFLAGS = -module -avoid-version
++server_la_LDFLAGS = -module -avoid-version -shared
+ server_la_SOURCES = nfs.c nfs-common.c nfs-fops.c nfs-inodes.c \
+ nfs-generics.c mount3.c nfs3-fh.c nfs3.c nfs3-helpers.c nlm4.c \
+ nlmcbk_svc.c mount3udp_svc.c acl3.c
+diff --git a/xlators/performance/io-cache/src/Makefile.am b/xlators/performance/io-cache/src/Makefile.am
+index 155be99..ba0738c 100644
+--- a/xlators/performance/io-cache/src/Makefile.am
++++ b/xlators/performance/io-cache/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = io-cache.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-io_cache_la_LDFLAGS = -module -avoid-version
++io_cache_la_LDFLAGS = -module -avoid-version -shared
+
+ io_cache_la_SOURCES = io-cache.c page.c ioc-inode.c
+ io_cache_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/io-threads/src/Makefile.am b/xlators/performance/io-threads/src/Makefile.am
+index d63042e..aba1fdb 100644
+--- a/xlators/performance/io-threads/src/Makefile.am
++++ b/xlators/performance/io-threads/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = io-threads.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-io_threads_la_LDFLAGS = -module -avoid-version
++io_threads_la_LDFLAGS = -module -avoid-version -shared
+
+ io_threads_la_SOURCES = io-threads.c
+ io_threads_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/md-cache/src/Makefile.am b/xlators/performance/md-cache/src/Makefile.am
+index 8c9f5a8..4d714fa 100644
+--- a/xlators/performance/md-cache/src/Makefile.am
++++ b/xlators/performance/md-cache/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = md-cache.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-md_cache_la_LDFLAGS = -module -avoid-version
++md_cache_la_LDFLAGS = -module -avoid-version -shared
+
+ md_cache_la_SOURCES = md-cache.c
+ md_cache_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/open-behind/src/Makefile.am b/xlators/performance/open-behind/src/Makefile.am
+index 1252857..568434a 100644
+--- a/xlators/performance/open-behind/src/Makefile.am
++++ b/xlators/performance/open-behind/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = open-behind.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-open_behind_la_LDFLAGS = -module -avoid-version
++open_behind_la_LDFLAGS = -module -avoid-version -shared
+
+ open_behind_la_SOURCES = open-behind.c
+ open_behind_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/quick-read/src/Makefile.am b/xlators/performance/quick-read/src/Makefile.am
+index 4906f40..8d42116 100644
+--- a/xlators/performance/quick-read/src/Makefile.am
++++ b/xlators/performance/quick-read/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = quick-read.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-quick_read_la_LDFLAGS = -module -avoid-version
++quick_read_la_LDFLAGS = -module -avoid-version -shared
+
+ quick_read_la_SOURCES = quick-read.c
+ quick_read_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/read-ahead/src/Makefile.am b/xlators/performance/read-ahead/src/Makefile.am
+index be80ae7..eae0540 100644
+--- a/xlators/performance/read-ahead/src/Makefile.am
++++ b/xlators/performance/read-ahead/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = read-ahead.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-read_ahead_la_LDFLAGS = -module -avoid-version
++read_ahead_la_LDFLAGS = -module -avoid-version -shared
+
+ read_ahead_la_SOURCES = read-ahead.c page.c
+ read_ahead_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/readdir-ahead/src/Makefile.am b/xlators/performance/readdir-ahead/src/Makefile.am
+index 539d6ed..020b670 100644
+--- a/xlators/performance/readdir-ahead/src/Makefile.am
++++ b/xlators/performance/readdir-ahead/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = readdir-ahead.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-readdir_ahead_la_LDFLAGS = -module -avoid-version
++readdir_ahead_la_LDFLAGS = -module -avoid-version -shared
+
+ readdir_ahead_la_SOURCES = readdir-ahead.c
+ readdir_ahead_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/symlink-cache/src/Makefile.am b/xlators/performance/symlink-cache/src/Makefile.am
+index 4091c32..0d600d6 100644
+--- a/xlators/performance/symlink-cache/src/Makefile.am
++++ b/xlators/performance/symlink-cache/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = symlink-cache.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/testing/performance
+
+-symlink_cache_la_LDFLAGS = -module -avoid-version
++symlink_cache_la_LDFLAGS = -module -avoid-version -shared
+
+ symlink_cache_la_SOURCES = symlink-cache.c
+ symlink_cache_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/performance/write-behind/src/Makefile.am b/xlators/performance/write-behind/src/Makefile.am
+index 6c829d8..746e5c1 100644
+--- a/xlators/performance/write-behind/src/Makefile.am
++++ b/xlators/performance/write-behind/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = write-behind.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-write_behind_la_LDFLAGS = -module -avoid-version
++write_behind_la_LDFLAGS = -module -avoid-version -shared
+
+ write_behind_la_SOURCES = write-behind.c
+ write_behind_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/playground/template/src/Makefile.am b/xlators/playground/template/src/Makefile.am
+index 21f1c5f..3161bc8 100644
+--- a/xlators/playground/template/src/Makefile.am
++++ b/xlators/playground/template/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = template.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/testing/features
+
+-template_la_LDFLAGS = -module -avoid-version
++template_la_LDFLAGS = -module -avoid-version -shared
+
+ template_la_SOURCES = template.c
+ template_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/protocol/auth/addr/src/Makefile.am b/xlators/protocol/auth/addr/src/Makefile.am
+index 426e7c2..fa7234d 100644
+--- a/xlators/protocol/auth/addr/src/Makefile.am
++++ b/xlators/protocol/auth/addr/src/Makefile.am
+@@ -1,7 +1,7 @@
+ auth_LTLIBRARIES = addr.la
+ authdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/auth
+
+-addr_la_LDFLAGS = -module -avoid-version
++addr_la_LDFLAGS = -module -avoid-version -shared
+
+ addr_la_SOURCES = addr.c
+ addr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/protocol/auth/login/src/Makefile.am b/xlators/protocol/auth/login/src/Makefile.am
+index d84db91..022739d 100644
+--- a/xlators/protocol/auth/login/src/Makefile.am
++++ b/xlators/protocol/auth/login/src/Makefile.am
+@@ -1,7 +1,7 @@
+ auth_LTLIBRARIES = login.la
+ authdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/auth
+
+-login_la_LDFLAGS = -module -avoid-version
++login_la_LDFLAGS = -module -avoid-version -shared
+
+ login_la_SOURCES = login.c
+ login_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff --git a/xlators/protocol/client/src/Makefile.am b/xlators/protocol/client/src/Makefile.am
+index cf89d42..8f2612c 100644
+--- a/xlators/protocol/client/src/Makefile.am
++++ b/xlators/protocol/client/src/Makefile.am
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = client.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/protocol
+
+-client_la_LDFLAGS = -module -avoid-version
++client_la_LDFLAGS = -module -avoid-version -shared
+
+ client_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
+ $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \
+diff --git a/xlators/protocol/server/src/Makefile.am b/xlators/protocol/server/src/Makefile.am
+index 6a18bf0..9a0393f 100644
+--- a/xlators/protocol/server/src/Makefile.am
++++ b/xlators/protocol/server/src/Makefile.am
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = server.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/protocol
+
+-server_la_LDFLAGS = -module -avoid-version
++server_la_LDFLAGS = -module -avoid-version -shared
+
+ server_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
+ $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \
+diff --git a/xlators/storage/bd/src/Makefile.am b/xlators/storage/bd/src/Makefile.am
+index 3d93f74..589185d 100644
+--- a/xlators/storage/bd/src/Makefile.am
++++ b/xlators/storage/bd/src/Makefile.am
+@@ -2,7 +2,7 @@ if ENABLE_BD_XLATOR
+ xlator_LTLIBRARIES = bd.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/storage
+
+-bd_la_LDFLAGS = -module -avoid-version
++bd_la_LDFLAGS = -module -avoid-version -shared
+ LIBBD = -llvm2app -lrt
+ bd_la_SOURCES = bd.c bd-helper.c bd-aio.c
+ bd_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBBD) $(LIBAIO)
+diff --git a/xlators/storage/posix/src/Makefile.am b/xlators/storage/posix/src/Makefile.am
+index 88efcc7..79ca903 100644
+--- a/xlators/storage/posix/src/Makefile.am
++++ b/xlators/storage/posix/src/Makefile.am
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = posix.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/storage
+
+-posix_la_LDFLAGS = -module -avoid-version
++posix_la_LDFLAGS = -module -avoid-version -shared
+
+ posix_la_SOURCES = posix.c posix-helpers.c posix-handle.c posix-aio.c
+ posix_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBAIO)
+diff --git a/xlators/system/posix-acl/src/Makefile.am b/xlators/system/posix-acl/src/Makefile.am
+index 11c939f..561c52d 100644
+--- a/xlators/system/posix-acl/src/Makefile.am
++++ b/xlators/system/posix-acl/src/Makefile.am
+@@ -1,6 +1,6 @@
+ xlator_LTLIBRARIES = posix-acl.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/system
+-posix_acl_la_LDFLAGS = -module -avoid-version
++posix_acl_la_LDFLAGS = -module -avoid-version -shared
+ posix_acl_la_SOURCES = posix-acl.c posix-acl-xattr.c
+ posix_acl_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
diff --git a/sys-cluster/glusterfs/files/glusterfs-3.6.5-build-shared-only.patch b/sys-cluster/glusterfs/files/glusterfs-3.6.5-build-shared-only.patch
new file mode 100644
index 0000000..af5332b
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs-3.6.5-build-shared-only.patch
@@ -0,0 +1,547 @@
+diff -ur a/rpc/rpc-transport/rdma/src/Makefile.am b/rpc/rpc-transport/rdma/src/Makefile.am
+--- a/rpc/rpc-transport/rdma/src/Makefile.am 2015-08-28 10:56:17.750192744 +0200
++++ b/rpc/rpc-transport/rdma/src/Makefile.am 2015-08-28 11:00:36.322686236 +0200
+@@ -3,7 +3,7 @@
+ transport_LTLIBRARIES = rdma.la
+ transportdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/rpc-transport
+
+-rdma_la_LDFLAGS = -module -avoid-version -nostartfiles
++rdma_la_LDFLAGS = -module -avoid-version -nostartfiles -shared
+
+ rdma_la_SOURCES = rdma.c name.c
+ rdma_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
+Only in b/rpc/rpc-transport/rdma/src: Makefile.am.orig
+Only in b/rpc/rpc-transport/rdma/src: Makefile.am.rej
+diff -ur a/rpc/rpc-transport/socket/src/Makefile.am b/rpc/rpc-transport/socket/src/Makefile.am
+--- a/rpc/rpc-transport/socket/src/Makefile.am 2015-08-28 10:56:17.750192744 +0200
++++ b/rpc/rpc-transport/socket/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -3,7 +3,7 @@
+ rpctransport_LTLIBRARIES = socket.la
+ rpctransportdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/rpc-transport
+
+-socket_la_LDFLAGS = -module -avoid-version
++socket_la_LDFLAGS = -module -avoid-version -shared
+
+ socket_la_SOURCES = socket.c name.c
+ socket_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -lssl
+diff -ur a/xlators/cluster/afr/src/Makefile.am b/xlators/cluster/afr/src/Makefile.am
+--- a/xlators/cluster/afr/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/cluster/afr/src/Makefile.am 2015-08-28 11:01:31.603219323 +0200
+@@ -10,11 +10,11 @@
+ afr-self-heal-entry.c afr-self-heal-metadata.c afr-self-heald.c \
+ afr-self-heal-name.c
+
+-afr_la_LDFLAGS = -module -avoid-version
++afr_la_LDFLAGS = -module -avoid-version -shared
+ afr_la_SOURCES = $(afr_common_source) $(AFR_SELFHEAL_SOURCES) afr.c
+ afr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-pump_la_LDFLAGS = -module -avoid-version
++pump_la_LDFLAGS = -module -avoid-version -shared
+ pump_la_SOURCES = $(afr_common_source) $(AFR_SELFHEAL_SOURCES) pump.c
+ pump_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+Only in b/xlators/cluster/afr/src: Makefile.am.orig
+Only in b/xlators/cluster/afr/src: Makefile.am.rej
+diff -ur a/xlators/cluster/dht/src/Makefile.am b/xlators/cluster/dht/src/Makefile.am
+--- a/xlators/cluster/dht/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/cluster/dht/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -11,13 +11,13 @@
+ nufa_la_SOURCES = $(dht_common_source) nufa.c
+ switch_la_SOURCES = $(dht_common_source) switch.c
+
+-dht_la_LDFLAGS = -module -avoid-version
++dht_la_LDFLAGS = -module -avoid-version -shared
+ dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-nufa_la_LDFLAGS = -module -avoid-version
++nufa_la_LDFLAGS = -module -avoid-version -shared
+ nufa_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-switch_la_LDFLAGS = -module -avoid-version
++switch_la_LDFLAGS = -module -avoid-version -shared
+ switch_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+ noinst_HEADERS = dht-common.h dht-mem-types.h dht-messages.h dht-helper.h \
+Only in b/xlators/cluster/dht/src: Makefile.am.orig
+diff -ur a/xlators/cluster/stripe/src/Makefile.am b/xlators/cluster/stripe/src/Makefile.am
+--- a/xlators/cluster/stripe/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/cluster/stripe/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = stripe.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/cluster
+
+-stripe_la_LDFLAGS = -module -avoid-version
++stripe_la_LDFLAGS = -module -avoid-version -shared
+
+ stripe_la_SOURCES = stripe.c stripe-helpers.c \
+ $(top_builddir)/xlators/lib/src/libxlator.c
+Only in b/xlators/cluster/stripe/src: Makefile.am.orig
+diff -ur a/xlators/debug/error-gen/src/Makefile.am b/xlators/debug/error-gen/src/Makefile.am
+--- a/xlators/debug/error-gen/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/debug/error-gen/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = error-gen.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/debug
+
+-error_gen_la_LDFLAGS = -module -avoid-version
++error_gen_la_LDFLAGS = -module -avoid-version -shared
+
+ error_gen_la_SOURCES = error-gen.c
+ error_gen_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/debug/io-stats/src/Makefile.am b/xlators/debug/io-stats/src/Makefile.am
+--- a/xlators/debug/io-stats/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/debug/io-stats/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = io-stats.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/debug
+
+-io_stats_la_LDFLAGS = -module -avoid-version
++io_stats_la_LDFLAGS = -module -avoid-version -shared
+
+ io_stats_la_SOURCES = io-stats.c
+ io_stats_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/debug/trace/src/Makefile.am b/xlators/debug/trace/src/Makefile.am
+--- a/xlators/debug/trace/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/debug/trace/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = trace.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/debug
+
+-trace_la_LDFLAGS = -module -avoid-version
++trace_la_LDFLAGS = -module -avoid-version -shared
+
+ trace_la_SOURCES = trace.c
+ trace_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/encryption/crypt/src/Makefile.am b/xlators/encryption/crypt/src/Makefile.am
+--- a/xlators/encryption/crypt/src/Makefile.am 2015-08-28 11:18:28.073021439 +0200
++++ b/xlators/encryption/crypt/src/Makefile.am 2015-08-28 11:16:28.051864039 +0200
+@@ -3,7 +3,7 @@
+ xlator_LTLIBRARIES = crypt.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/encryption
+
+-crypt_la_LDFLAGS = -module -avoid-version
++crypt_la_LDFLAGS = -module -avoid-version -shared
+
+ crypt_la_SOURCES = keys.c data.c metadata.c atom.c crypt.c
+ crypt_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la -lssl -lcrypto
+Only in b/xlators/encryption/crypt/src: Makefile.am.orig
+Only in b/xlators/encryption/crypt/src: Makefile.am.rej
+diff -ur a/xlators/encryption/rot-13/src/Makefile.am b/xlators/encryption/rot-13/src/Makefile.am
+--- a/xlators/encryption/rot-13/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/encryption/rot-13/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = rot-13.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/encryption
+
+-rot_13_la_LDFLAGS = -module -avoid-version
++rot_13_la_LDFLAGS = -module -avoid-version -shared
+
+ rot_13_la_SOURCES = rot-13.c
+ rot_13_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/changelog/src/Makefile.am b/xlators/features/changelog/src/Makefile.am
+--- a/xlators/features/changelog/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/changelog/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -5,7 +5,7 @@
+ noinst_HEADERS = changelog-helpers.h changelog-mem-types.h changelog-rt.h \
+ changelog-misc.h changelog-encoders.h changelog-notifier.h
+
+-changelog_la_LDFLAGS = -module -avoid-version
++changelog_la_LDFLAGS = -module -avoid-version -shared
+
+ changelog_la_SOURCES = changelog.c changelog-rt.c changelog-helpers.c \
+ changelog-encoders.c changelog-notifier.c changelog-barrier.c
+Only in b/xlators/features/changelog/src: Makefile.am.orig
+diff -ur a/xlators/features/compress/src/Makefile.am b/xlators/features/compress/src/Makefile.am
+--- a/xlators/features/compress/src/Makefile.am 2015-08-28 11:18:28.073021439 +0200
++++ b/xlators/features/compress/src/Makefile.am 2015-08-28 11:17:19.492360095 +0200
+@@ -4,7 +4,7 @@
+
+ noinst_HEADERS = cdc.h cdc-mem-types.h
+
+-cdc_la_LDFLAGS = -module -avoid-version
++cdc_la_LDFLAGS = -module -avoid-version -shared
+
+ cdc_la_SOURCES = cdc.c cdc-helper.c
+ cdc_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBZ_LIBS)
+Only in b/xlators/features/compress/src: Makefile.am.rej
+diff -ur a/xlators/features/gfid-access/src/Makefile.am b/xlators/features/gfid-access/src/Makefile.am
+--- a/xlators/features/gfid-access/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/gfid-access/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = gfid-access.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-gfid_access_la_LDFLAGS = -module -avoid-version
++gfid_access_la_LDFLAGS = -module -avoid-version -shared
+
+ gfid_access_la_SOURCES = gfid-access.c
+ gfid_access_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/index/src/Makefile.am b/xlators/features/index/src/Makefile.am
+--- a/xlators/features/index/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/index/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = index.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-index_la_LDFLAGS = -module -avoid-version
++index_la_LDFLAGS = -module -avoid-version -shared
+
+ index_la_SOURCES = index.c
+ index_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/locks/src/Makefile.am b/xlators/features/locks/src/Makefile.am
+--- a/xlators/features/locks/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/locks/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = locks.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-locks_la_LDFLAGS = -module -avoid-version
++locks_la_LDFLAGS = -module -avoid-version -shared
+
+ locks_la_SOURCES = common.c posix.c entrylk.c inodelk.c reservelk.c \
+ clear.c
+diff -ur a/xlators/features/mac-compat/src/Makefile.am b/xlators/features/mac-compat/src/Makefile.am
+--- a/xlators/features/mac-compat/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/mac-compat/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = mac-compat.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-mac_compat_la_LDFLAGS = -module -avoid-version
++mac_compat_la_LDFLAGS = -module -avoid-version -shared
+
+ mac_compat_la_SOURCES = mac-compat.c
+ mac_compat_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/marker/src/Makefile.am b/xlators/features/marker/src/Makefile.am
+--- a/xlators/features/marker/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/marker/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = marker.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-marker_la_LDFLAGS = -module -avoid-version
++marker_la_LDFLAGS = -module -avoid-version -shared
+
+ marker_la_SOURCES = marker.c marker-quota.c marker-quota-helper.c marker-common.c
+ marker_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/protect/src/Makefile.am b/xlators/features/protect/src/Makefile.am
+--- a/xlators/features/protect/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/protect/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,15 +2,15 @@
+
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-prot_dht_la_LDFLAGS = -module -avoid-version
++prot_dht_la_LDFLAGS = -module -avoid-version -shared
+ prot_dht_la_SOURCES = prot_dht.c
+ prot_dht_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-prot_client_la_LDFLAGS = -module -avoid-version
++prot_client_la_LDFLAGS = -module -avoid-version -shared
+ prot_client_la_SOURCES = prot_client.c
+ prot_client_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-prot_server_la_LDFLAGS = -module -avoid-version
++prot_server_la_LDFLAGS = -module -avoid-version -shared
+ prot_server_la_SOURCES = prot_server.c
+ prot_server_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+diff -ur a/xlators/features/qemu-block/src/Makefile.am b/xlators/features/qemu-block/src/Makefile.am
+--- a/xlators/features/qemu-block/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/qemu-block/src/Makefile.am 2015-08-28 11:03:19.464259458 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = qemu-block.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-qemu_block_la_LDFLAGS = -module -avoid-version
++qemu_block_la_LDFLAGS = -module -avoid-version -shared
+ qemu_block_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(GLIB_LIBS) $(ZLIB_LIBS) -lrt
+
+ qemu_block_la_SOURCES_qemu = \
+Only in b/xlators/features/qemu-block/src: Makefile.am.orig
+Only in b/xlators/features/qemu-block/src: Makefile.am.rej
+diff -ur a/xlators/features/quiesce/src/Makefile.am b/xlators/features/quiesce/src/Makefile.am
+--- a/xlators/features/quiesce/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/quiesce/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = quiesce.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-quiesce_la_LDFLAGS = -module -avoid-version
++quiesce_la_LDFLAGS = -module -avoid-version -shared
+
+ quiesce_la_SOURCES = quiesce.c
+ quiesce_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/quota/src/Makefile.am b/xlators/features/quota/src/Makefile.am
+--- a/xlators/features/quota/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/quota/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,8 +1,8 @@
+ xlator_LTLIBRARIES = quota.la quotad.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features
+
+-quota_la_LDFLAGS = -module -avoid-version
+-quotad_la_LDFLAGS = -module -avoid-version
++quota_la_LDFLAGS = -module -avoid-version -shared
++quotad_la_LDFLAGS = -module -avoid-version -shared
+
+ quota_la_SOURCES = quota.c quota-enforcer-client.c
+ quota_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/features/read-only/src/Makefile.am b/xlators/features/read-only/src/Makefile.am
+--- a/xlators/features/read-only/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/features/read-only/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -4,12 +4,12 @@
+
+ noinst_HEADERS = read-only-common.h
+
+-read_only_la_LDFLAGS = -module -avoid-version
++read_only_la_LDFLAGS = -module -avoid-version -shared
+
+ read_only_la_SOURCES = read-only.c read-only-common.c
+ read_only_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
+-worm_la_LDFLAGS = -module -avoid-version
++worm_la_LDFLAGS = -module -avoid-version -shared
+
+ worm_la_SOURCES = read-only-common.c worm.c
+ worm_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/mgmt/glusterd/src/Makefile.am b/xlators/mgmt/glusterd/src/Makefile.am
+--- a/xlators/mgmt/glusterd/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/mgmt/glusterd/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = glusterd.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/mgmt
+ glusterd_la_CPPFLAGS = $(AM_CPPFLAGS) "-DFILTERDIR=\"$(libdir)/glusterfs/$(PACKAGE_VERSION)/filter\""
+-glusterd_la_LDFLAGS = -module -avoid-version
++glusterd_la_LDFLAGS = -module -avoid-version -shared
+ if ENABLE_BD_XLATOR
+ glusterd_la_LDFLAGS += -llvm2app
+ endif
+diff -ur a/xlators/mount/fuse/src/Makefile.am b/xlators/mount/fuse/src/Makefile.am
+--- a/xlators/mount/fuse/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/mount/fuse/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -26,7 +26,7 @@
+ fuse_la_SOURCES = fuse-helpers.c fuse-resolve.c fuse-bridge.c \
+ $(CONTRIBDIR)/fuse-lib/misc.c $(mount_source)
+
+-fuse_la_LDFLAGS = -module -avoid-version
++fuse_la_LDFLAGS = -module -avoid-version -shared
+ fuse_la_LIBADD = @GF_FUSE_LDADD@
+
+ AM_CPPFLAGS = $(GF_CPPFLAGS) \
+Only in b/xlators/mount/fuse/src: Makefile.am.orig
+diff -ur a/xlators/nfs/server/src/Makefile.am b/xlators/nfs/server/src/Makefile.am
+--- a/xlators/nfs/server/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/nfs/server/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = server.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/nfs
+ nfsrpclibdir = $(top_srcdir)/rpc/rpc-lib/src
+-server_la_LDFLAGS = -module -avoid-version
++server_la_LDFLAGS = -module -avoid-version -shared
+ server_la_SOURCES = nfs.c nfs-common.c nfs-fops.c nfs-inodes.c \
+ nfs-generics.c mount3.c nfs3-fh.c nfs3.c nfs3-helpers.c nlm4.c \
+ nlmcbk_svc.c mount3udp_svc.c acl3.c
+diff -ur a/xlators/performance/io-cache/src/Makefile.am b/xlators/performance/io-cache/src/Makefile.am
+--- a/xlators/performance/io-cache/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/io-cache/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = io-cache.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-io_cache_la_LDFLAGS = -module -avoid-version
++io_cache_la_LDFLAGS = -module -avoid-version -shared
+
+ io_cache_la_SOURCES = io-cache.c page.c ioc-inode.c
+ io_cache_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/io-threads/src/Makefile.am b/xlators/performance/io-threads/src/Makefile.am
+--- a/xlators/performance/io-threads/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/io-threads/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = io-threads.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-io_threads_la_LDFLAGS = -module -avoid-version
++io_threads_la_LDFLAGS = -module -avoid-version -shared
+
+ io_threads_la_SOURCES = io-threads.c
+ io_threads_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/md-cache/src/Makefile.am b/xlators/performance/md-cache/src/Makefile.am
+--- a/xlators/performance/md-cache/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/md-cache/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = md-cache.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-md_cache_la_LDFLAGS = -module -avoid-version
++md_cache_la_LDFLAGS = -module -avoid-version -shared
+
+ md_cache_la_SOURCES = md-cache.c
+ md_cache_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/open-behind/src/Makefile.am b/xlators/performance/open-behind/src/Makefile.am
+--- a/xlators/performance/open-behind/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/open-behind/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = open-behind.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-open_behind_la_LDFLAGS = -module -avoid-version
++open_behind_la_LDFLAGS = -module -avoid-version -shared
+
+ open_behind_la_SOURCES = open-behind.c
+ open_behind_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/quick-read/src/Makefile.am b/xlators/performance/quick-read/src/Makefile.am
+--- a/xlators/performance/quick-read/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/quick-read/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = quick-read.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-quick_read_la_LDFLAGS = -module -avoid-version
++quick_read_la_LDFLAGS = -module -avoid-version -shared
+
+ quick_read_la_SOURCES = quick-read.c
+ quick_read_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/read-ahead/src/Makefile.am b/xlators/performance/read-ahead/src/Makefile.am
+--- a/xlators/performance/read-ahead/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/performance/read-ahead/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = read-ahead.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-read_ahead_la_LDFLAGS = -module -avoid-version
++read_ahead_la_LDFLAGS = -module -avoid-version -shared
+
+ read_ahead_la_SOURCES = read-ahead.c page.c
+ read_ahead_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/readdir-ahead/src/Makefile.am b/xlators/performance/readdir-ahead/src/Makefile.am
+--- a/xlators/performance/readdir-ahead/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/readdir-ahead/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = readdir-ahead.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-readdir_ahead_la_LDFLAGS = -module -avoid-version
++readdir_ahead_la_LDFLAGS = -module -avoid-version -shared
+
+ readdir_ahead_la_SOURCES = readdir-ahead.c
+ readdir_ahead_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/symlink-cache/src/Makefile.am b/xlators/performance/symlink-cache/src/Makefile.am
+--- a/xlators/performance/symlink-cache/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/symlink-cache/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = symlink-cache.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/testing/performance
+
+-symlink_cache_la_LDFLAGS = -module -avoid-version
++symlink_cache_la_LDFLAGS = -module -avoid-version -shared
+
+ symlink_cache_la_SOURCES = symlink-cache.c
+ symlink_cache_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/performance/write-behind/src/Makefile.am b/xlators/performance/write-behind/src/Makefile.am
+--- a/xlators/performance/write-behind/src/Makefile.am 2015-08-28 10:56:17.730192551 +0200
++++ b/xlators/performance/write-behind/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = write-behind.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/performance
+
+-write_behind_la_LDFLAGS = -module -avoid-version
++write_behind_la_LDFLAGS = -module -avoid-version -shared
+
+ write_behind_la_SOURCES = write-behind.c
+ write_behind_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/playground/template/src/Makefile.am b/xlators/playground/template/src/Makefile.am
+--- a/xlators/playground/template/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/playground/template/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = template.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/testing/features
+
+-template_la_LDFLAGS = -module -avoid-version
++template_la_LDFLAGS = -module -avoid-version -shared
+
+ template_la_SOURCES = template.c
+ template_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/protocol/auth/addr/src/Makefile.am b/xlators/protocol/auth/addr/src/Makefile.am
+--- a/xlators/protocol/auth/addr/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/protocol/auth/addr/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ auth_LTLIBRARIES = addr.la
+ authdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/auth
+
+-addr_la_LDFLAGS = -module -avoid-version
++addr_la_LDFLAGS = -module -avoid-version -shared
+
+ addr_la_SOURCES = addr.c
+ addr_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/protocol/auth/login/src/Makefile.am b/xlators/protocol/auth/login/src/Makefile.am
+--- a/xlators/protocol/auth/login/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/protocol/auth/login/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ auth_LTLIBRARIES = login.la
+ authdir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/auth
+
+-login_la_LDFLAGS = -module -avoid-version
++login_la_LDFLAGS = -module -avoid-version -shared
+
+ login_la_SOURCES = login.c
+ login_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+diff -ur a/xlators/protocol/client/src/Makefile.am b/xlators/protocol/client/src/Makefile.am
+--- a/xlators/protocol/client/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/protocol/client/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = client.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/protocol
+
+-client_la_LDFLAGS = -module -avoid-version
++client_la_LDFLAGS = -module -avoid-version -shared
+
+ client_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
+ $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \
+diff -ur a/xlators/protocol/server/src/Makefile.am b/xlators/protocol/server/src/Makefile.am
+--- a/xlators/protocol/server/src/Makefile.am 2015-08-28 10:56:17.740192649 +0200
++++ b/xlators/protocol/server/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,7 +1,7 @@
+ xlator_LTLIBRARIES = server.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/protocol
+
+-server_la_LDFLAGS = -module -avoid-version
++server_la_LDFLAGS = -module -avoid-version -shared
+
+ server_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \
+ $(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \
+diff -ur a/xlators/storage/bd/src/Makefile.am b/xlators/storage/bd/src/Makefile.am
+--- a/xlators/storage/bd/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/storage/bd/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = bd.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/storage
+
+-bd_la_LDFLAGS = -module -avoid-version
++bd_la_LDFLAGS = -module -avoid-version -shared
+ LIBBD = -llvm2app -lrt
+ bd_la_SOURCES = bd.c bd-helper.c bd-aio.c
+ bd_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBBD) $(LIBAIO)
+diff -ur a/xlators/storage/posix/src/Makefile.am b/xlators/storage/posix/src/Makefile.am
+--- a/xlators/storage/posix/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/storage/posix/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -2,7 +2,7 @@
+ xlator_LTLIBRARIES = posix.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/storage
+
+-posix_la_LDFLAGS = -module -avoid-version
++posix_la_LDFLAGS = -module -avoid-version -shared
+
+ posix_la_SOURCES = posix.c posix-helpers.c posix-handle.c posix-aio.c
+ posix_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la $(LIBAIO)
+diff -ur a/xlators/system/posix-acl/src/Makefile.am b/xlators/system/posix-acl/src/Makefile.am
+--- a/xlators/system/posix-acl/src/Makefile.am 2015-08-28 10:56:17.720192456 +0200
++++ b/xlators/system/posix-acl/src/Makefile.am 2015-08-28 10:59:35.752102136 +0200
+@@ -1,6 +1,6 @@
+ xlator_LTLIBRARIES = posix-acl.la
+ xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/system
+-posix_acl_la_LDFLAGS = -module -avoid-version
++posix_acl_la_LDFLAGS = -module -avoid-version -shared
+ posix_acl_la_SOURCES = posix-acl.c posix-acl-xattr.c
+ posix_acl_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
+
diff --git a/sys-cluster/glusterfs/files/glusterfs-r1.initd b/sys-cluster/glusterfs/files/glusterfs-r1.initd
new file mode 100644
index 0000000..717ee79
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs-r1.initd
@@ -0,0 +1,122 @@
+#!/sbin/openrc-run
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+if [[ "${SVCNAME}" != "glusterfs" ]]
+then
+ GLUSTERFS_NAME="${SVCNAME#glusterfs.}"
+else
+ GLUSTERFS_NAME="glusterfs"
+fi
+
+GLUSTERFS_PIDFILE="/var/run/${SVCNAME}.pid"
+
+eval 'GLUSTERFS_LOGFILE="${'${GLUSTERFS_NAME}'_log:-/var/log/glusterfs/'${GLUSTERFS_NAME}'.log}"'
+eval 'GLUSTERFS_VOLFILE="${'${GLUSTERFS_NAME}'_vol:-/etc/glusterfs/'${GLUSTERFS_NAME}'.vol}"'
+eval 'GLUSTERFS_SERVER="${'${GLUSTERFS_NAME}'_server}"'
+eval 'GLUSTERFS_PORT="${'${GLUSTERFS_NAME}'_port:-6996}"'
+eval 'GLUSTERFS_TRANSPORT="${'${GLUSTERFS_NAME}'_transport:-socket}"'
+eval 'GLUSTERFS_OPTS="${'${GLUSTERFS_NAME}'_opts}"'
+eval 'GLUSTERFS_MOUNTPOINT="${'${GLUSTERFS_NAME}'_mountpoint}"'
+
+depend() {
+ need net
+ [[ -n "${GLUSTERFS_MOUNTPOINT}" ]] && need fuse
+ use dns
+ before netmount
+ after firewall ntp-client ntpd
+}
+
+checkconfig() {
+ if [[ -z "${GLUSTERFS_NAME}" ]]
+ then
+ eerror "The service name is not properly formatted."
+ return 1
+ fi
+
+ if [[ -z "${GLUSTERFS_SERVER}" ]]
+ then
+ if [[ -z "${GLUSTERFS_VOLFILE}" ]]
+ then
+ eerror "No GlusterFS volume file source has been defined. Edit /etc/conf.d/glusterfs"
+ eerror "and configure a volume file source for ${SVCNAME}."
+ return 1
+ else
+ if [[ ! -f "${GLUSTERFS_VOLFILE}" ]]
+ then
+ eerror "Cannot find volume file: ${GLUSTERFS_VOLFILE}"
+ return 1
+ fi
+ fi
+ fi
+
+ if [[ -n "${GLUSTERFS_MOUNTPOINT}" && ! -d "${GLUSTERFS_MOUNTPOINT}" ]]
+ then
+ eerror "The mountpoint ${GLUSTERFS_MOUNTPOINT} does not exist."
+ return 1
+ fi
+}
+
+start() {
+ local status daemon
+
+ checkconfig || return 1
+
+ ebegin "Starting GlusterFS (${SVCNAME})"
+ eindent
+
+ if [[ -z "${GLUSTERFS_MOUNTPOINT}" ]]
+ then
+ einfo "Starting in server mode ..."
+ daemon="glusterfsd"
+ else
+ einfo "Starting in client mode. Mounting filesystem ..."
+ daemon="glusterfs"
+ fi
+
+ if [[ -n "${GLUSTERFS_SERVER}" ]]
+ then
+ einfo "Using server supplied volume file"
+ start-stop-daemon --start --pidfile ${GLUSTERFS_PIDFILE} \
+ --exec /usr/sbin/${daemon} -- \
+ --pid-file=${GLUSTERFS_PIDFILE} \
+ --log-file=${GLUSTERFS_LOGFILE} \
+ --volfile-server=${GLUSTERFS_SERVER} \
+ --volfile-server-port=${GLUSTERFS_PORT} \
+ --volfile-server-transport=${GLUSTERFS_TRANSPORT} \
+ ${GLUSTERFS_OPTS} ${GLUSTERFS_MOUNTPOINT}
+ status="$?"
+ else
+ einfo "Using local volume file"
+ start-stop-daemon --start --pidfile ${GLUSTERFS_PIDFILE} \
+ --exec /usr/sbin/${daemon} -- \
+ --pid-file=${GLUSTERFS_PIDFILE} \
+ --log-file=${GLUSTERFS_LOGFILE} \
+ --volfile=${GLUSTERFS_VOLFILE} \
+ ${GLUSTERFS_OPTS} ${GLUSTERFS_MOUNTPOINT}
+ status="$?"
+ fi
+
+ eoutdent
+ eend ${status}
+}
+
+stop() {
+ local status
+
+ ebegin "Stopping GlusterFS (${SVCNAME})"
+ eindent
+ if [[ -z "${GLUSTERFS_MOUNTPOINT}" ]]
+ then
+ einfo "Stopping server process ..."
+ start-stop-daemon --stop --pidfile ${GLUSTERFS_PIDFILE}
+ status="$?"
+ else
+ einfo "Unmounting ${GLUSTERFS_MOUNTPOINT} ..."
+ umount "${GLUSTERFS_MOUNTPOINT}"
+ status="$?"
+ fi
+ eoutdent
+ eend ${status}
+}
diff --git a/sys-cluster/glusterfs/files/glusterfs.confd b/sys-cluster/glusterfs/files/glusterfs.confd
new file mode 100644
index 0000000..257d0a8
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs.confd
@@ -0,0 +1,6 @@
+#glusterfsd_mountpoint=""
+#glusterfsd_log=""
+#glusterfsd_vol=""
+#glusterfsd_port=""
+#glusterfsd_transport=""
+#glusterfsd_opts=""
diff --git a/sys-cluster/glusterfs/files/glusterfs.logrotate b/sys-cluster/glusterfs/files/glusterfs.logrotate
new file mode 100644
index 0000000..07ae7b9
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs.logrotate
@@ -0,0 +1,34 @@
+# Rotate client logs
+/var/log/glusterfs/*.log {
+ weekly
+ rotate 52
+ missingok
+
+ # compress the logs, but from the .2 onwards
+ compress
+ delaycompress
+ notifempty
+
+ sharedscripts
+ postrotate
+ /usr/bin/killall -HUP glusterfs > /dev/null 2>&1 || true
+ /usr/bin/killall -HUP glusterd > /dev/null 2>&1 || true
+ endscript
+}
+
+# Rotate server logs
+/var/log/glusterfs/bricks/*.log {
+ weekly
+ rotate 52
+ missingok
+
+ # compress the logs, but from the .2 onwards
+ compress
+ delaycompress
+ notifempty
+
+ sharedscripts
+ postrotate
+ /usr/bin/killall -HUP glusterfsd > /dev/null 2>&1 || true
+ endscript
+}
diff --git a/sys-cluster/glusterfs/files/glusterfs.vim b/sys-cluster/glusterfs/files/glusterfs.vim
new file mode 100644
index 0000000..bbb9cb1
--- /dev/null
+++ b/sys-cluster/glusterfs/files/glusterfs.vim
@@ -0,0 +1,8 @@
+if &compatible || v:version < 603
+ finish
+endif
+
+
+" GlusterFS Volume files
+au BufNewFile,BufRead *.vol
+ \ set filetype=glusterfs
diff --git a/sys-cluster/glusterfs/glusterfs-3.9.1.ebuild b/sys-cluster/glusterfs/glusterfs-3.9.1.ebuild
new file mode 100644
index 0000000..dd7fd27
--- /dev/null
+++ b/sys-cluster/glusterfs/glusterfs-3.9.1.ebuild
@@ -0,0 +1,212 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+AUTOTOOLS_AUTORECONF=1
+
+inherit autotools-utils elisp-common eutils multilib python-single-r1 systemd versionator
+
+DESCRIPTION="GlusterFS is a powerful network/cluster filesystem"
+HOMEPAGE="http://www.gluster.org/"
+SRC_URI="http://download.gluster.org/pub/gluster/${PN}/$(get_version_component_range '1-2')/${PV}/${P}.tar.gz"
+
+LICENSE="|| ( GPL-2 LGPL-3+ )"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~ppc64 x86"
+IUSE="bd-xlator crypt-xlator debug emacs +fuse +georeplication glupy infiniband qemu-block rsyslog static-libs +syslog systemtap test +tiering vim-syntax +xml"
+
+REQUIRED_USE="georeplication? ( ${PYTHON_REQUIRED_USE} )
+ glupy? ( ${PYTHON_REQUIRED_USE} )"
+
+# the tests must be run as root
+RESTRICT="test"
+
+# sys-apps/util-linux is required for libuuid
+RDEPEND="bd-xlator? ( sys-fs/lvm2 )
+ emacs? ( virtual/emacs )
+ fuse? ( >=sys-fs/fuse-2.7.0 )
+ georeplication? ( ${PYTHON_DEPS} )
+ infiniband? ( sys-fabric/libibverbs:* sys-fabric/librdmacm:* )
+ qemu-block? ( dev-libs/glib:2 )
+ systemtap? ( dev-util/systemtap )
+ tiering? ( dev-db/sqlite:3 )
+ xml? ( dev-libs/libxml2 )
+ sys-libs/readline:=
+ dev-libs/libaio
+ dev-libs/openssl:=[-bindist]
+ dev-libs/userspace-rcu:=
+ || ( sys-libs/glibc sys-libs/argp-standalone )
+ sys-apps/util-linux"
+DEPEND="${RDEPEND}
+ virtual/acl
+ virtual/pkgconfig
+ sys-devel/bison
+ sys-devel/flex
+ test? ( >=dev-util/cmocka-1.0.1
+ app-benchmarks/dbench
+ dev-vcs/git
+ net-fs/nfs-utils
+ virtual/perl-Test-Harness
+ dev-libs/yajl
+ sys-fs/xfsprogs
+ sys-apps/attr )"
+
+SITEFILE="50${PN}-mode-gentoo.el"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.4.0-silent_rules.patch"
+)
+
+DOCS=( AUTHORS ChangeLog NEWS README.md THANKS )
+
+# Maintainer notes:
+# * The build system will always configure & build argp-standalone but it'll never use it
+# if the argp.h header is found in the system. Which should be the case with
+# glibc or if argp-standalone is installed.
+
+pkg_setup() {
+ python_setup "python2*"
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ # build rpc-transport and xlators only once as shared libs
+ find rpc/rpc-transport xlators -name Makefile.am -print0 \
+ | xargs -0 sed -i -e 's|.*_la_LDFLAGS = .*|\0 -shared|'
+
+ # fix execution permissions
+ chmod +x libglusterfs/src/gen-defaults.py || die
+
+ autotools-utils_src_prepare
+}
+
+src_configure() {
+ local myeconfargs=(
+ --disable-dependency-tracking
+ --disable-silent-rules
+ --disable-fusermount
+ $(use_enable debug)
+ $(use_enable bd-xlator)
+ $(use_enable crypt-xlator)
+ $(use_enable fuse fuse-client)
+ $(use_enable georeplication)
+ $(use_enable glupy)
+ $(use_enable infiniband ibverbs)
+ $(use_enable qemu-block)
+ $(use_enable static-libs static)
+ $(use_enable syslog)
+ $(use_enable systemtap)
+ $(use_enable test cmocka)
+ $(use_enable tiering)
+ $(use_enable xml xml-output)
+ --docdir=/usr/share/doc/${PF}
+ --localstatedir=/var
+ )
+ autotools-utils_src_configure
+}
+
+src_compile() {
+ autotools-utils_src_compile
+
+ use emacs && elisp-compile extras/glusterfs-mode.el
+}
+
+src_install() {
+ autotools-utils_src_install
+
+ rm \
+ "${D}"/etc/glusterfs/glusterfs-{georep-,}logrotate \
+ "${D}"/etc/glusterfs/gluster-rsyslog-*.conf \
+ "${D}"/usr/share/doc/${PF}/glusterfs{-mode.el,.vim} || die "removing false files failed"
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/glusterfs.logrotate glusterfs
+
+ if use rsyslog ; then
+ insinto /etc/rsyslog.d
+ newins extras/gluster-rsyslog-7.2.conf 60-gluster.conf
+ fi
+
+ if use emacs ; then
+ elisp-install ${PN} extras/glusterfs-mode.el*
+ elisp-site-file-install "${FILESDIR}/${SITEFILE}"
+ fi
+
+ if use vim-syntax ; then
+ insinto /usr/share/vim/vimfiles/ftdetect; doins "${FILESDIR}"/${PN}.vim
+ insinto /usr/share/vim/vimfiles/syntax; doins extras/${PN}.vim
+ fi
+
+ # insert some other tools which might be useful
+ insinto /usr/share/glusterfs/scripts
+ doins \
+ extras/backend-{cleanup,xattr-sanitize}.sh \
+ extras/clear_xattrs.sh \
+ extras/migrate-unify-to-distribute.sh
+
+ # correct permissions on installed scripts
+ # fperms 0755 /usr/share/glusterfs/scripts/*.sh
+ chmod 0755 "${ED}"/usr/share/glusterfs/scripts/*.sh || die
+
+ if use georeplication ; then
+ # move the gsync-sync-gfid tool to a binary path
+ # and set a symlink to be compliant with all other distros
+ mv "${ED}"/usr/{share/glusterfs/scripts/gsync-sync-gfid,libexec/glusterfs/} || die
+ dosym ../../../libexec/glusterfs/gsync-sync-gfid /usr/share/glusterfs/scripts/gsync-sync-gfid
+ fi
+
+ newinitd "${FILESDIR}/${PN}-r1.initd" glusterfsd
+ newinitd "${FILESDIR}/glusterd-r2.initd" glusterd
+ newconfd "${FILESDIR}/${PN}.confd" glusterfsd
+
+ keepdir /var/log/${PN}
+ keepdir /var/lib/glusterd
+
+ # QA
+ rm -rf "${ED}/var/run/" || die
+ use static-libs || find "${ED}"/usr/$(get_libdir)/ -type f -name '*.la' -delete
+
+ # fix all shebang for python2 #560750
+ python_fix_shebang "${ED}"
+
+ # upstream already has a patch ready, to be removed once available, http://review.gluster.org/#/c/9458/
+ echo "d /run/gluster 0755 root root -" > "${T}/gluster.tmpfiles" || die
+ systemd_newtmpfilesd "${T}/gluster.tmpfiles" gluster.conf
+}
+
+src_test() {
+ ./run-tests.sh || die
+}
+
+pkg_postinst() {
+ elog "Starting with ${PN}-3.1.0, you can use the glusterd daemon to configure your"
+ elog "volumes dynamically. To do so, simply use the gluster CLI after running:"
+ elog " /etc/init.d/glusterd start"
+ echo
+ elog "For static configurations, the glusterfsd startup script can be multiplexed."
+ elog "The default startup script uses /etc/conf.d/glusterfsd to configure the"
+ elog "separate service. To create additional instances of the glusterfsd service"
+ elog "simply create a symlink to the glusterfsd startup script."
+ echo
+ elog "Example:"
+ elog " # ln -s glusterfsd /etc/init.d/glusterfsd2"
+ elog " # ${EDITOR} /etc/glusterfs/glusterfsd2.vol"
+ elog "You can now treat glusterfsd2 like any other service"
+ echo
+ ewarn "You need to use a ntp client to keep the clocks synchronized across all"
+ ewarn "of your servers. Setup a NTP synchronizing service before attempting to"
+ ewarn "run GlusterFS."
+
+ elog
+ elog "If you are upgrading from a previous version of ${PN}, please read:"
+ elog " http://www.gluster.org/community/documentation/index.php/Upgrade_to_3.5"
+
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}
diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest
new file mode 100644
index 0000000..9ed4f60
--- /dev/null
+++ b/sys-libs/glibc/Manifest
@@ -0,0 +1,25 @@
+AUX 2.10/glibc-2.10-gentoo-chk_fail.c 9407 SHA256 7745c0f5d37b37959b43b41e39762fc35b877161bc5740d9d3e9a83021acbc0e SHA512 d1c51c573353b3b8ae6ab1bcc8c10eda5cad8b98fc7ab4848e4fbd8a8736174f3c3fd1b72dd80c72b1e54be78f1cae4dc1ab8130df25aa6d1495e5cbbaf3b9f6 WHIRLPOOL 32028ddeb422d89c0523fec994413e67c6afd9fcfdaf147d3d6a28bd02f8feabda9571ced4509253b7061a95bb2c16cecf94a4274671b33909ff545b1787f101
+AUX 2.10/glibc-2.10-hardened-configure-picdefault.patch 865 SHA256 b50b29f85d88011555bbcbe6046e6600be9344f2d78412b14aebdea515420774 SHA512 e0a09f77b209a72ab577fe1e62126609fdddedf3fba0eec749c4b506cdf793779b48390f055a3594892120f694291f8340c0b6f51862e94c03fd516897138be7 WHIRLPOOL d1b8e1536696350e0ed9eaf9a923daa7c004ef40ae94c1c3ba3d6cb293f1c19364cefbe8491089061124cbe26a9fded9f3d38d89f1bda56d408162e53702e8d4
+AUX 2.10/glibc-2.10-hardened-inittls-nosysenter.patch 8823 SHA256 dcf78c6524c222dbee907200a8878aff727e29d43a4962b977a16d85752e5c10 SHA512 0605b7964af87d1d6bdccea5c4d1bfe6267d4401b8bbf0c8bb689663e6bb3ef92eebad8be6c23ffdf6632a4d5e6098d8a403c3e84ffb21b5e87b5b1d1ec3512d WHIRLPOOL 635261b547883bbfbe23c802fcf97916dee823b367f96732ccecd7506dff004b87f2d36d97ed398510711330f3a53f039a14e226d20a681cc201a8c7a3450833
+AUX 2.10/glibc-2.10-hardened-ssp-compat.patch 4802 SHA256 bd6f0aa8eace0a935731749e101d5fe30210f9edb65f2f5ccd425cef581ddce4 SHA512 16fc6cbf366c3a0f476f28da8d4e465b1d894f68d33ebdb02de60d6b22bdc6341915d8529952fa4213b11c377302f18a63c462898fe0e4b13f5ec9e3ceda96c7 WHIRLPOOL 059e84269286b285261cc57846b34462524661fef3582396a6b301ee2dd156d2511c88f17f52679e4d5fd96ae0ed6673c8b75a32048e40efa87fad34da6cc066
+AUX 2.16/glibc-2.16-hardened-pie.patch 1570 SHA256 9a8d8a8268605251782b1fba509cda090f39f56edc8a5497c7b4acfc428041f7 SHA512 1dff16b1ce4ba6246336d19fac21ea6e8d5710e138a23603fa6b79896d895834b6d28bb1948c83648120ca1d038805db7dd7138ba3e28e9071254d6320cdc092 WHIRLPOOL f96487ac4bd95a99e9e70204c686c3f19bb8238cfd4a9856b031be58ac23927886f228a8b4add14213e0489a204c51ebbeb8a376311305025116b8ae45fc90c2
+AUX 2.16/glibc-rh1183535.patch 4610 SHA256 877dd39fe70f05972b41992044dd8eeac29e6261396ca11797f7ef36f43b74d9 SHA512 894d9d0b685f540fa955aaf245d0cd12c1c71aeb9f6adc42c67bb741ea6a7e940882c9022bcd9c51f61cef8d4143e1ec385490fcac256b1599adee3500ba717a WHIRLPOOL 1c842c4eb1de21b4f4f3abdb80b827664a5c618eb46950d49de18f6783774aa33780d06d27d2ef0a9911fec01b944b60f898f2f0139710586d311a35922a3204
+AUX 2.6/glibc-2.6-gentoo-stack_chk_fail.c 9545 SHA256 1410ded812be80d452eada5f9d6b9bd7bdb504c14f01cc27dce3e36b6f92b92a SHA512 360b77df2d19d14060e19e763878297bf042eccd5206ce4829a33c78c982b59b46144116d237a7cac73a22dd6cb4987c8dd50f1d16003baa22c2cb2942d2cbdf WHIRLPOOL 44e14dacdd258c46201a44c2c6aae4d975b960a914c24e49f2b39dae960636512049daa052d3cd8e8d93819d263327c28eac947efdb5d9e240d1bc6e9964016f
+AUX eblits/common.eblit 10757 SHA256 215864e0d2cf57239efab1fd903b4410892698651b4d8c7e0a2fbcc09da8a5e6 SHA512 bc08d1cf6ac17dd526bfeb175fcc1079389ee53901e892c39688381bba8bbcc69516ae92becf170f75f816e246e59bbed1aba9d327f1069a2ab7f9c9fb265c2c WHIRLPOOL 276d2d477616427d124b41160c4692af7242dc7fb172c1b5ea8cf65a868f69122193a6ec2a6f842b67aca0c9fd9aacbf9b0f88436f0c5f00434e5f89554351db
+AUX eblits/pkg_postinst.eblit 1081 SHA256 21c349d6999841b277dd00ed6f2bf4b33d14724510da3c15a99e775cb71bd180 SHA512 b491761a0923b779535b4a5abf6e00efb6f2c0bbb68e7fb01b2cad54034b63ddfa271afce16b17b17b53ac809ed869c55f94c44443d661052779770f4302318b WHIRLPOOL 8e3a3f35a4cefa903bc578d2fb6b22506f3ac94939f9ad1e703f470b13ba0fd3353061e38e3142ecb5c693749c84d4a1e4f4a5920e36ce20dc2f7e3b6b67ed9f
+AUX eblits/pkg_preinst.eblit 2608 SHA256 e49f274efe309b4bfed88195d413afa3363f40fb6c2caf50b4ab8ce5ab548864 SHA512 debfe0679d51eff7a154f7772179cf6bfe01beacf63fe101370c172e71b0524da0ceb7b0571e69a8050e5b75953b1d4c8968e1982ff4bc7362caeedde0be595e WHIRLPOOL 7b5c69c319651d860b3495d658b7275308f69504050699aada21ce5ecdd3114c1ea50ee7eac4436ee33738d02a0eb4bc6fff41484ff840aa2400bdd484ae3e93
+AUX eblits/pkg_setup.eblit 3964 SHA256 dee8e88f26fbe8a1dca329a5119e0efe407f6417933ed564f3940c32c8c95fbb SHA512 7951670d99915699f2f02ef91eb78b4a6ebda8190c53bf4724cde36ebf6d9646d200423edc185067d5cc9fae00ae4f388d277e9283bcf503630659d2868c87ef WHIRLPOOL f60784e42e37907d07e64abf62f5fc37a086b4262842ab6c183449fb3bb2d0977478784c449b954e1a89f865796955a7161a680f474ff59939664eaae4842c82
+AUX eblits/src_compile.eblit 712 SHA256 2f7250659b1ea316dd67a0baa229b9248693b55738416e242bcacbd6efec96b2 SHA512 f812075621013eb9db7748e16997f7785e6029f691147ef63c9c5e4c0ec98ca47cad81a9aa135e69dd57296454d158191deced0cb47201343698d9495b8dd34e WHIRLPOOL 0692b14ac23a7f995e68c15fc91643bd72707f4072e319460a31014a91fe789794b10ac155021b48f02b9bea636305408ec56bb161664a21ec7f5ff86ccff7fe
+AUX eblits/src_configure.eblit 7352 SHA256 edf770bfcdf428b3d648da30f253e089abbb6920f0955f7962d932646660f61c SHA512 12cd060ec7b497df7a9e47c5a7c228a610289953e8c401489b3cf26228c0aae7ba95a24ee117b99c85673c8368a436d45619b98b243ebda653a87808ce2ae25b WHIRLPOOL 985962dbe5ed1201d290dc75281ae4facb9053d892664e8f7e371b2eb65fb4ecf5d50714f3f1de1c9ce32e50a3f7fd52a7535491304da49bbcb8988f28d13355
+AUX eblits/src_install.eblit 7927 SHA256 d0c6dc3c96dce898bdef54a3211828526aeb7ed93d39f817ba81c84b4d183926 SHA512 f2f9775e2a6788ac894e917c96179360c4209e3c48f394741a7a977481a34a01e1db2fc474589e24c49d61427bb6e6b88de4d015a9e59868c520d1afe9eeefa3 WHIRLPOOL cb52b17487d58cae8fbb1069c0783de9318841ef510501f9c65ca3f62cae3d2bbbb0a34b2ca1416928604d180e8e944d83e817212883e3bfe727c1626c85f17a
+AUX eblits/src_prepare.eblit 2344 SHA256 7898682539bc85f126e491bc9c9a727cc5d922680f91dd409aec50c068ca93aa SHA512 30d706f26475db2dfe8cfaaa003c3a21988328ba0cc7cdca439d248c968430308d8d0afefa60302315d4c76011e4de51925307ee19d15eba10e24f1ede2b956f WHIRLPOOL 3a5ad0de18649805d97b0d78ea33e52608e7b6694ac567313db9e09da18a0bca9b95a027fe0181b50738b5bfe83ac49254d29b077cef36fb311a9707683261b5
+AUX eblits/src_test.eblit 808 SHA256 8a652acb87e941fe767ddfbe0e0a42e3b5f208f5408606c5d9de22a85b1f8ebe SHA512 b8a37cd8294f5b6d2735d9971e7bc4bde1a7671540d6f76764d06203f5f179c143c487f57c57747c8e72e7a1d89d05928df51331a44f46d4290e9b89449eed63 WHIRLPOOL c33b33b71431f3438fbe350c8c1d3c67d17fdccef61687bc645397635875d09af8b4e2b545a4405429c2b8ee4a012fd753205e4b5ce3bb2f93e4341d34a18eb4
+AUX eblits/src_unpack.eblit 3209 SHA256 82b23ecfe2fc3b7e93545af4b67e2525e1ee3c9f2d4eac3af435cf44e8254da4 SHA512 4f9cb34be2869864c0f814141bf1b6504b4138c3c672dd1fef9c5ad448c6fabab98445551cb364035978898c9e7829168ef702b068b4dadf325cf925c70ab42f WHIRLPOOL bdcf238477e6148dcdb8371eee40cb8ee920e039848e1088923922e615529fea70089fb5f1094630269d3a876c4752f41d0433b2948f5b5283a532938c9858df
+AUX nscd 1621 SHA256 6165db3a2fcb251d4f3655c0461e018ce9c92a37f7f22a8fd2b75178b5435bc8 SHA512 3e1255ab014b3806112120000c3d2189a7c1c69dcd6639d5ce55e96bec721683a22b141982f6a6c6d44b14481c33fbbaa470863bef04e9b9eab7ccad1ddd5d95 WHIRLPOOL b7152f8d888fca13a16ea403c44eadbf1da2249dae3add11f73999259061824460a5479aa7e58c012bd737b62ecc81814109832cee33638279d90d4c08bfdbdc
+AUX nscd.service 337 SHA256 de7bc9946309d34f0ab44aa22a4d3cf259fe91c57e8000d741cb09ecd3a6caa0 SHA512 2001100f3b054843c69b6fd2d38852c7c824282aa8998c25a3c0352db993705429d25c70d8ce6cb3579f836b7089644c520acac423ebd69cb1b36e94a77c5bea WHIRLPOOL f01d191971b0dc45f541c9ebaaa1a40f3497e2cc838cff6a20a7b1828d726c248abbd94322a5a5ff30c33ddb7d9086cd4d2ba3bdc1811fed59ff292ef3983a72
+AUX nscd.tmpfilesd 111 SHA256 f0f64c4612d2097173854d2ec2e94ecbf4b77c7a6e94d950874e37346aa90d72 SHA512 53b80b331e1a85d8ee16eb2ce547a7249e944926c3d1cdd4a47a5301a5c842ffc7ec1e3dc0a731542a8facf8261c1c57121802d01741aa89898a3476c09da340 WHIRLPOOL cf1fed1a7e2ac1623a84f1cfa2062645afe3f791da2f4ace3859d12aa05df0e282b4c2e367a460015956ac2a8d01fee4cda84917a3adf2c38561dff200335270
+AUX nsswitch.conf 503 SHA256 6c38b8642d5da884327ad678d0351d57be3621562253bd9711394bad87e45e2d SHA512 c13714110f3ccc9a2270f51d0da9293ab19b9df368092d19b1a84d5051d888297bd9439a322eca1ea60d6d5e58952797d803a368a295f2db6d5e97e173907373 WHIRLPOOL 0d37755ba5928ff894c355b3fdcf7079f19c1cb7a4f3676634084da89c74d7175823a4659b8c66d8dc1395d086991857162822ddf977dbe8dff9a59bccab821e
+DIST glibc-2.16.0-patches-12.tar.bz2 95047 SHA256 e8fd08ee1af5ba4c2999657ea7ec3a0669c10fcf36151874a22f9d8e20d535ed SHA512 f377043d51e7b1d9d74af2ae1d40543329b9d6d5e07f7f9d84b1db9773f61864dc1f52253a952b2618bfe170f9cae32fdf748919460605bafaea6bc0c1f1befe WHIRLPOOL 69fe1b2a9ca0f2521bb59089cfccb7393c3fdd335498ab397d17dcb441a8ea0c579a35e3f175025d2c348b72d08ce496a0ed6d577bc1e0b5a65eb5fcef88e04c
+DIST glibc-2.16.0.tar.xz 9990512 SHA256 1edc36aa2a6cb7127971fce8e02eecffe9c7956297ad3ef10dd4c09f486d5924 SHA512 be9acc11b77ab3c01d5766fe626a6a51bc3192ac98f9554fbb5c37120cfc6f636c0b7a80beddc180f13b32ad06051d24c1999fa2e64eeb724d55a9498f0f634e WHIRLPOOL 9bfd4358a4488080e12e08deca5fca59c1555853d1c1978b7d1bb3b480eb8fb125dccab38c55644248ae5e18b0167aec85f8a7850bab9e11f980aae6f171eac3
+DIST glibc-ports-2.16.0.tar.xz 925916 SHA256 93a10ac3b9ab70ccc59dfe50a4747d48a7e92f9481656f8a37558a2767ac02f3 SHA512 8653ad9f5cf239a55eb2e236f9510ba227e910168efefd74df8e4951f2e1e4bca69598bc23daa6581e0ba94fe334ac625524fb22f0d38c2a07e373eda1db821b WHIRLPOOL 60b0cb559e28bcab9c6625ccd24a13ecfc301cc055d7e18d1324627912b528ca8cc7c2f999e1e979d2685e407879b1bfffdb61f1536d91fa143cffb7ded72a8a
+EBUILD glibc-2.16.0-r1.ebuild 7575 SHA256 008a3a40a5f486f9ecd5f703bdf80bba3f214700ea0d017b891e23b9bbd8b220 SHA512 f5d7e6d6c1133980358337c1fd4db12f29e8c29d9ad36f8eae126291bd0cf4fa9dd87ed46fa4e3b43c66fd58497db0a5f20ad074b5fcafd2930568e4a072274c WHIRLPOOL 6ee95ffe3f4fc1371e8ca62d8c031dcbd600d55ee7bdec71d98c085869fddd3a55719ea07f636715e92c62996075ba5ddb3185a2dd1eccd27cb7673f61611cc3
diff --git a/sys-libs/glibc/files/2.10/glibc-2.10-gentoo-chk_fail.c b/sys-libs/glibc/files/2.10/glibc-2.10-gentoo-chk_fail.c
new file mode 100644
index 0000000..37711e8
--- /dev/null
+++ b/sys-libs/glibc/files/2.10/glibc-2.10-gentoo-chk_fail.c
@@ -0,0 +1,315 @@
+/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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.
+
+ The GNU C 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 the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Copyright (C) 2006-2008 Gentoo Foundation Inc.
+ * License terms as above.
+ *
+ * Hardened Gentoo SSP and FORTIFY handler
+ *
+ * An SSP failure handler that does not use functions from the rest of
+ * glibc; it uses the INTERNAL_SYSCALL methods directly. This ensures
+ * no possibility of recursion into the handler.
+ *
+ * Direct all bug reports to http://bugs.gentoo.org/
+ *
+ * Re-written from the glibc-2.3 Hardened Gentoo SSP handler
+ * by Kevin F. Quinn - <kevquinn[@]gentoo.org>
+ *
+ * The following people contributed to the glibc-2.3 Hardened
+ * Gentoo SSP and FORTIFY handler, from which this implementation draws much:
+ *
+ * Ned Ludd - <solar[@]gentoo.org>
+ * Alexander Gabert - <pappy[@]gentoo.org>
+ * The PaX Team - <pageexec[@]freemail.hu>
+ * Peter S. Mazinger - <ps.m[@]gmx.net>
+ * Yoann Vandoorselaere - <yoann[@]prelude-ids.org>
+ * Robert Connolly - <robert[@]linuxfromscratch.org>
+ * Cory Visi <cory[@]visi.name>
+ * Mike Frysinger <vapier[@]gentoo.org>
+ * Magnus Granberg <zorry[@]ume.nu>
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <sys/types.h>
+
+#include <sysdep-cancel.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+#include <kernel-features.h>
+
+#include <alloca.h>
+/* from sysdeps */
+#include <socketcall.h>
+/* for the stuff in bits/socket.h */
+#include <sys/socket.h>
+#include <sys/un.h>
+
+/* Sanity check on SYSCALL macro names - force compilation
+ * failure if the names used here do not exist
+ */
+#if !defined __NR_socketcall && !defined __NR_socket
+# error Cannot do syscall socket or socketcall
+#endif
+#if !defined __NR_socketcall && !defined __NR_connect
+# error Cannot do syscall connect or socketcall
+#endif
+#ifndef __NR_write
+# error Cannot do syscall write
+#endif
+#ifndef __NR_close
+# error Cannot do syscall close
+#endif
+#ifndef __NR_getpid
+# error Cannot do syscall getpid
+#endif
+#ifndef __NR_kill
+# error Cannot do syscall kill
+#endif
+#ifndef __NR_exit
+# error Cannot do syscall exit
+#endif
+#ifdef SSP_SMASH_DUMPS_CORE
+# define ENABLE_SSP_SMASH_DUMPS_CORE 1
+# if !defined _KERNEL_NSIG && !defined _NSIG
+# error No _NSIG or _KERNEL_NSIG for rt_sigaction
+# endif
+# if !defined __NR_sigaction && !defined __NR_rt_sigaction
+# error Cannot do syscall sigaction or rt_sigaction
+# endif
+/* Although rt_sigaction expects sizeof(sigset_t) - it expects the size
+ * of the _kernel_ sigset_t which is not the same as the user sigset_t.
+ * Most arches have this as _NSIG bits - mips has _KERNEL_NSIG bits for
+ * some reason.
+ */
+# ifdef _KERNEL_NSIG
+# define _SSP_NSIG _KERNEL_NSIG
+# else
+# define _SSP_NSIG _NSIG
+# endif
+#else
+# define _SSP_NSIG 0
+# define ENABLE_SSP_SMASH_DUMPS_CORE 0
+#endif
+
+/* Define DO_SIGACTION - default to newer rt signal interface but
+ * fallback to old as needed.
+ */
+#ifdef __NR_rt_sigaction
+# define DO_SIGACTION(signum, act, oldact) \
+ INLINE_SYSCALL(rt_sigaction, 4, signum, act, oldact, _SSP_NSIG/8)
+#else
+# define DO_SIGACTION(signum, act, oldact) \
+ INLINE_SYSCALL(sigaction, 3, signum, act, oldact)
+#endif
+
+/* Define DO_SOCKET/DO_CONNECT functions to deal with socketcall vs socket/connect */
+#if defined(__NR_socket) && defined(__NR_connect)
+# define USE_OLD_SOCKETCALL 0
+#else
+# define USE_OLD_SOCKETCALL 1
+#endif
+
+/* stub out the __NR_'s so we can let gcc optimize away dead code */
+#ifndef __NR_socketcall
+# define __NR_socketcall 0
+#endif
+#ifndef __NR_socket
+# define __NR_socket 0
+#endif
+#ifndef __NR_connect
+# define __NR_connect 0
+#endif
+#define DO_SOCKET(result, domain, type, protocol) \
+ do { \
+ if (USE_OLD_SOCKETCALL) { \
+ socketargs[0] = domain; \
+ socketargs[1] = type; \
+ socketargs[2] = protocol; \
+ socketargs[3] = 0; \
+ result = INLINE_SYSCALL(socketcall, 2, SOCKOP_socket, socketargs); \
+ } else \
+ result = INLINE_SYSCALL(socket, 3, domain, type, protocol); \
+ } while (0)
+#define DO_CONNECT(result, sockfd, serv_addr, addrlen) \
+ do { \
+ if (USE_OLD_SOCKETCALL) { \
+ socketargs[0] = sockfd; \
+ socketargs[1] = (unsigned long int)serv_addr; \
+ socketargs[2] = addrlen; \
+ socketargs[3] = 0; \
+ result = INLINE_SYSCALL(socketcall, 2, SOCKOP_connect, socketargs); \
+ } else \
+ result = INLINE_SYSCALL(connect, 3, sockfd, serv_addr, addrlen); \
+ } while (0)
+
+#ifndef _PATH_LOG
+# define _PATH_LOG "/dev/log"
+#endif
+
+static const char path_log[] = _PATH_LOG;
+
+/* For building glibc with SSP switched on, define __progname to a
+ * constant if building for the run-time loader, to avoid pulling
+ * in more of libc.so into ld.so
+ */
+#ifdef IS_IN_rtld
+static char *__progname = "<rtld>";
+#else
+extern char *__progname;
+#endif
+
+/* Common handler code, used by chk_fail
+ * Inlined to ensure no self-references to the handler within itself.
+ * Data static to avoid putting more than necessary on the stack,
+ * to aid core debugging.
+ */
+__attribute__ ((__noreturn__ , __always_inline__))
+static inline void
+__hardened_gentoo_chk_fail(char func[], int damaged)
+{
+#define MESSAGE_BUFSIZ 256
+ static pid_t pid;
+ static int plen, i;
+ static char message[MESSAGE_BUFSIZ];
+ static const char msg_ssa[] = ": buffer overflow attack";
+ static const char msg_inf[] = " in function ";
+ static const char msg_ssd[] = "*** buffer overflow detected ***: ";
+ static const char msg_terminated[] = " - terminated\n";
+ static const char msg_report[] = "Report to http://bugs.gentoo.org/\n";
+ static const char msg_unknown[] = "<unknown>";
+ static int log_socket, connect_result;
+ static struct sockaddr_un sock;
+ static unsigned long int socketargs[4];
+
+ /* Build socket address
+ */
+ sock.sun_family = AF_UNIX;
+ i = 0;
+ while ((path_log[i] != '\0') && (i<(sizeof(sock.sun_path)-1))) {
+ sock.sun_path[i] = path_log[i];
+ i++;
+ }
+ sock.sun_path[i] = '\0';
+
+ /* Try SOCK_DGRAM connection to syslog */
+ connect_result = -1;
+ DO_SOCKET(log_socket, AF_UNIX, SOCK_DGRAM, 0);
+ if (log_socket != -1)
+ DO_CONNECT(connect_result, log_socket, &sock, sizeof(sock));
+ if (connect_result == -1) {
+ if (log_socket != -1)
+ INLINE_SYSCALL(close, 1, log_socket);
+ /* Try SOCK_STREAM connection to syslog */
+ DO_SOCKET(log_socket, AF_UNIX, SOCK_STREAM, 0);
+ if (log_socket != -1)
+ DO_CONNECT(connect_result, log_socket, &sock, sizeof(sock));
+ }
+
+ /* Build message. Messages are generated both in the old style and new style,
+ * so that log watchers that are configured for the old-style message continue
+ * to work.
+ */
+#define strconcat(str) \
+ {i=0; while ((str[i] != '\0') && ((i+plen)<(MESSAGE_BUFSIZ-1))) \
+ {\
+ message[plen+i]=str[i];\
+ i++;\
+ }\
+ plen+=i;}
+
+ /* R.Henderson post-gcc-4 style message */
+ plen = 0;
+ strconcat(msg_ssd);
+ if (__progname != (char *)0)
+ strconcat(__progname)
+ else
+ strconcat(msg_unknown);
+ strconcat(msg_terminated);
+
+ /* Write out error message to STDERR, to syslog if open */
+ INLINE_SYSCALL(write, 3, STDERR_FILENO, message, plen);
+ if (connect_result != -1)
+ INLINE_SYSCALL(write, 3, log_socket, message, plen);
+
+ /* Dr. Etoh pre-gcc-4 style message */
+ plen = 0;
+ if (__progname != (char *)0)
+ strconcat(__progname)
+ else
+ strconcat(msg_unknown);
+ strconcat(msg_ssa);
+ strconcat(msg_inf);
+ if (func != NULL)
+ strconcat(func)
+ else
+ strconcat(msg_unknown);
+ strconcat(msg_terminated);
+ /* Write out error message to STDERR, to syslog if open */
+ INLINE_SYSCALL(write, 3, STDERR_FILENO, message, plen);
+ if (connect_result != -1)
+ INLINE_SYSCALL(write, 3, log_socket, message, plen);
+
+ /* Direct reports to bugs.gentoo.org */
+ plen=0;
+ strconcat(msg_report);
+ message[plen++]='\0';
+
+ /* Write out error message to STDERR, to syslog if open */
+ INLINE_SYSCALL(write, 3, STDERR_FILENO, message, plen);
+ if (connect_result != -1)
+ INLINE_SYSCALL(write, 3, log_socket, message, plen);
+
+ if (log_socket != -1)
+ INLINE_SYSCALL(close, 1, log_socket);
+
+ /* Suicide */
+ pid = INLINE_SYSCALL(getpid, 0);
+
+ if (ENABLE_SSP_SMASH_DUMPS_CORE) {
+ static struct sigaction default_abort_act;
+ /* Remove any user-supplied handler for SIGABRT, before using it */
+ default_abort_act.sa_handler = SIG_DFL;
+ default_abort_act.sa_sigaction = NULL;
+ __sigfillset(&default_abort_act.sa_mask);
+ default_abort_act.sa_flags = 0;
+ if (DO_SIGACTION(SIGABRT, &default_abort_act, NULL) == 0)
+ INLINE_SYSCALL(kill, 2, pid, SIGABRT);
+ }
+
+ /* Note; actions cannot be added to SIGKILL */
+ INLINE_SYSCALL(kill, 2, pid, SIGKILL);
+
+ /* In case the kill didn't work, exit anyway
+ * The loop prevents gcc thinking this routine returns
+ */
+ while (1)
+ INLINE_SYSCALL(exit, 0);
+}
+
+__attribute__ ((__noreturn__))
+void __chk_fail(void)
+{
+ __hardened_gentoo_chk_fail(NULL, 0);
+}
+
diff --git a/sys-libs/glibc/files/2.10/glibc-2.10-hardened-configure-picdefault.patch b/sys-libs/glibc/files/2.10/glibc-2.10-hardened-configure-picdefault.patch
new file mode 100644
index 0000000..e75ccc7
--- /dev/null
+++ b/sys-libs/glibc/files/2.10/glibc-2.10-hardened-configure-picdefault.patch
@@ -0,0 +1,30 @@
+Prevent default-fPIE from confusing configure into thinking
+PIC code is default. This causes glibc to build both PIC and
+non-PIC code as normal, which on the hardened compiler generates
+PIC and PIE.
+
+Patch by Kevin F. Quinn <kevquinn@gentoo.org>
+Fixed for glibc 2.10 by Magnus Granberg <zorry@ume.nu>
+
+--- configure.in
++++ configure.in
+@@ -2145,7 +2145,7 @@
+ # error PIC is default.
+ #endif
+ EOF
+-if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
++if eval "${CC-cc} -fno-PIE -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
+ libc_cv_pic_default=no
+ fi
+ rm -f conftest.*])
+--- configure
++++ configure
+@@ -7698,7 +7698,7 @@
+ # error PIC is default.
+ #endif
+ EOF
+-if eval "${CC-cc} -S conftest.c 2>&5 1>&5"; then
++if eval "${CC-cc} -fno-PIE -S conftest.c 2>&5 1>&5"; then
+ libc_cv_pic_default=no
+ fi
+ rm -f conftest.*
diff --git a/sys-libs/glibc/files/2.10/glibc-2.10-hardened-inittls-nosysenter.patch b/sys-libs/glibc/files/2.10/glibc-2.10-hardened-inittls-nosysenter.patch
new file mode 100644
index 0000000..cb6d8e3
--- /dev/null
+++ b/sys-libs/glibc/files/2.10/glibc-2.10-hardened-inittls-nosysenter.patch
@@ -0,0 +1,274 @@
+When building glibc PIE (which is not something upstream support),
+several modifications are necessary to the glibc build process.
+
+First, any syscalls in PIEs must be of the PIC variant, otherwise
+textrels ensue. Then, any syscalls made before the initialisation
+of the TLS will fail on i386, as the sysenter variant on i386 uses
+the TLS, giving rise to a chicken-and-egg situation. This patch
+defines a PIC syscall variant that doesn't use sysenter, even when the sysenter
+version is normally used, and uses the non-sysenter version for the brk
+syscall that is performed by the TLS initialisation. Further, the TLS
+initialisation is moved in this case prior to the initialisation of
+dl_osversion, as that requires further syscalls.
+
+csu/libc-start.c: Move initial TLS initialization to before the
+initialisation of dl_osversion, when INTERNAL_SYSCALL_NOSYSENTER is defined
+
+csu/libc-tls.c: Use the no-sysenter version of sbrk when
+INTERNAL_SYSCALL_NOSYSENTER is defined.
+
+misc/sbrk.c: Define a no-sysenter version of sbrk, using the no-sysenter
+version of brk - if INTERNAL_SYSCALL_NOSYSENTER is defined.
+
+misc/brk.c: Define a no-sysenter version of brk if
+INTERNAL_SYSCALL_NOSYSENTER is defined.
+
+sysdeps/unix/sysv/linux/i386/sysdep.h: Define INTERNAL_SYSCALL_NOSYSENTER
+Make INTERNAL_SYSCALL always use the PIC variant, even if not SHARED.
+
+Patch by Kevin F. Quinn <kevquinn@gentoo.org>
+Fixed for 2.10 by Magnus Granberg <zorry@ume.nu>
+
+--- csu/libc-start.c
++++ csu/libc-start.c
+@@ -28,6 +28,7 @@
+ extern int __libc_multiple_libcs;
+
+ #include <tls.h>
++#include <sysdep.h>
+ #ifndef SHARED
+ # include <dl-osinfo.h>
+ extern void __pthread_initialize_minimal (void);
+@@ -129,6 +130,11 @@
+ # endif
+ _dl_aux_init (auxvec);
+ # endif
++# ifdef INTERNAL_SYSCALL_NOSYSENTER
++ /* Do the initial TLS initialization before _dl_osversion,
++ since the latter uses the uname syscall. */
++ __pthread_initialize_minimal ();
++# endif
+ # ifdef DL_SYSDEP_OSCHECK
+ if (!__libc_multiple_libcs)
+ {
+@@ -138,10 +144,12 @@
+ }
+ # endif
+
++# ifndef INTERNAL_SYSCALL_NOSYSENTER
+ /* Initialize the thread library at least a bit since the libgcc
+ functions are using thread functions if these are available and
+ we need to setup errno. */
+ __pthread_initialize_minimal ();
++# endif
+
+ /* Set up the stack checker's canary. */
+ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard ();
+--- csu/libc-tls.c
++++ csu/libc-tls.c
+@@ -23,6 +23,7 @@
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <sys/param.h>
++#include <sysdep.h>
+
+
+ #ifdef SHARED
+@@ -29,6 +30,9 @@
+ #error makefile bug, this file is for static only
+ #endif
+
++#ifdef INTERNAL_SYSCALL_NOSYSENTER
++extern void *__sbrk_nosysenter (intptr_t __delta);
++#endif
+ extern ElfW(Phdr) *_dl_phdr;
+ extern size_t _dl_phnum;
+
+@@ -141,14 +145,26 @@
+
+ The initialized value of _dl_tls_static_size is provided by dl-open.c
+ to request some surplus that permits dynamic loading of modules with
+- IE-model TLS. */
++ IE-model TLS.
++
++ Where the normal sbrk would use a syscall that needs the TLS (i386)
++ use the special non-sysenter version instead. */
+ #if TLS_TCB_AT_TP
+ tcb_offset = roundup (memsz + GL(dl_tls_static_size), tcbalign);
++# ifdef INTERNAL_SYSCALL_NOSYSENTER
++ tlsblock = __sbrk_nosysenter (tcb_offset + tcbsize + max_align);
++# else
+ tlsblock = __sbrk (tcb_offset + tcbsize + max_align);
++# endif
+ #elif TLS_DTV_AT_TP
+ tcb_offset = roundup (tcbsize, align ?: 1);
++# ifdef INTERNAL_SYSCALL_NOSYSENTER
++ tlsblock = __sbrk_nosysenter (tcb_offset + memsz + max_align
++ + TLS_PRE_TCB_SIZE + GL(dl_tls_static_size));
++# else
+ tlsblock = __sbrk (tcb_offset + memsz + max_align
+ + TLS_PRE_TCB_SIZE + GL(dl_tls_static_size));
++# endif
+ tlsblock += TLS_PRE_TCB_SIZE;
+ #else
+ /* In case a model with a different layout for the TCB and DTV
+--- misc/sbrk.c
++++ misc/sbrk.c
+@@ -18,6 +18,7 @@
+ #include <errno.h>
+ #include <stdint.h>
+ #include <unistd.h>
++#include <sysdep.h>
+
+ /* Defined in brk.c. */
+ extern void *__curbrk;
+@@ -29,6 +30,35 @@
+ /* Extend the process's data space by INCREMENT.
+ If INCREMENT is negative, shrink data space by - INCREMENT.
+ Return start of new space allocated, or -1 for errors. */
++#ifdef INTERNAL_SYSCALL_NOSYSENTER
++/* This version is used by csu/libc-tls.c whem initialising the TLS
++ if the SYSENTER version requires the TLS (which it does on i386).
++ Obviously using the TLS before it is initialised is broken. */
++extern int __brk_nosysenter (void *addr);
++void *
++__sbrk_nosysenter (intptr_t increment)
++{
++ void *oldbrk;
++
++ /* If this is not part of the dynamic library or the library is used
++ via dynamic loading in a statically linked program update
++ __curbrk from the kernel's brk value. That way two separate
++ instances of __brk and __sbrk can share the heap, returning
++ interleaved pieces of it. */
++ if (__curbrk == NULL || __libc_multiple_libcs)
++ if (__brk_nosysenter (0) < 0) /* Initialize the break. */
++ return (void *) -1;
++
++ if (increment == 0)
++ return __curbrk;
++
++ oldbrk = __curbrk;
++ if (__brk_nosysenter (oldbrk + increment) < 0)
++ return (void *) -1;
++
++ return oldbrk;
++}
++#endif
+ void *
+ __sbrk (intptr_t increment)
+ {
+--- sysdeps/unix/sysv/linux/i386/brk.c
++++ sysdeps/unix/sysv/linux/i386/brk.c
+@@ -31,6 +31,30 @@
+ linker. */
+ weak_alias (__curbrk, ___brk_addr)
+
++#ifdef INTERNAL_SYSCALL_NOSYSENTER
++/* This version is used by csu/libc-tls.c whem initialising the TLS
++ * if the SYSENTER version requires the TLS (which it does on i386).
++ * Obviously using the TLS before it is initialised is broken. */
++int
++__brk_nosysenter (void *addr)
++{
++ void *__unbounded newbrk;
++
++ INTERNAL_SYSCALL_DECL (err);
++ newbrk = (void *__unbounded) INTERNAL_SYSCALL_NOSYSENTER (brk, err, 1,
++ __ptrvalue (addr));
++
++ __curbrk = newbrk;
++
++ if (newbrk < addr)
++ {
++ __set_errno (ENOMEM);
++ return -1;
++ }
++
++ return 0;
++}
++#endif
+ int
+ __brk (void *addr)
+ {
+--- sysdeps/unix/sysv/linux/i386/sysdep.h
++++ sysdeps/unix/sysv/linux/i386/sysdep.h
+@@ -187,7 +187,7 @@
+ /* The original calling convention for system calls on Linux/i386 is
+ to use int $0x80. */
+ #ifdef I386_USE_SYSENTER
+-# ifdef SHARED
++# if defined SHARED || defined __PIC__
+ # define ENTER_KERNEL call *%gs:SYSINFO_OFFSET
+ # else
+ # define ENTER_KERNEL call *_dl_sysinfo
+@@ -358,7 +358,7 @@
+ possible to use more than four parameters. */
+ #undef INTERNAL_SYSCALL
+ #ifdef I386_USE_SYSENTER
+-# ifdef SHARED
++# if defined SHARED || defined __PIC__
+ # define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+ register unsigned int resultvar; \
+@@ -384,6 +384,18 @@
+ : "0" (name), "i" (offsetof (tcbhead_t, sysinfo)) \
+ ASMFMT_##nr(args) : "memory", "cc"); \
+ (int) resultvar; })
++# define INTERNAL_SYSCALL_NOSYSENTER(name, err, nr, args...) \
++ ({ \
++ register unsigned int resultvar; \
++ EXTRAVAR_##nr \
++ asm volatile ( \
++ LOADARGS_NOSYSENTER_##nr \
++ "movl %1, %%eax\n\t" \
++ "int $0x80\n\t" \
++ RESTOREARGS_NOSYSENTER_##nr \
++ : "=a" (resultvar) \
++ : "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
++ (int) resultvar; })
+ # else
+ # define INTERNAL_SYSCALL(name, err, nr, args...) \
+ ({ \
+@@ -447,12 +459,20 @@
+
+ #define LOADARGS_0
+ #ifdef __PIC__
+-# if defined I386_USE_SYSENTER && defined SHARED
++# if defined I386_USE_SYSENTER && ( defined SHARED || defined __PIC__ )
+ # define LOADARGS_1 \
+ "bpushl .L__X'%k3, %k3\n\t"
+ # define LOADARGS_5 \
+ "movl %%ebx, %4\n\t" \
+ "movl %3, %%ebx\n\t"
++# define LOADARGS_NOSYSENTER_1 \
++ "bpushl .L__X'%k2, %k2\n\t"
++# define LOADARGS_NOSYSENTER_2 LOADARGS_NOSYSENTER_1
++# define LOADARGS_NOSYSENTER_3 LOADARGS_3
++# define LOADARGS_NOSYSENTER_4 LOADARGS_3
++# define LOADARGS_NOSYSENTER_5 \
++ "movl %%ebx, %3\n\t" \
++ "movl %2, %%ebx\n\t"
+ # else
+ # define LOADARGS_1 \
+ "bpushl .L__X'%k2, %k2\n\t"
+@@ -474,11 +495,18 @@
+
+ #define RESTOREARGS_0
+ #ifdef __PIC__
+-# if defined I386_USE_SYSENTER && defined SHARED
++# if defined I386_USE_SYSENTER && ( defined SHARED || defined __PIC__ )
+ # define RESTOREARGS_1 \
+ "bpopl .L__X'%k3, %k3\n\t"
+ # define RESTOREARGS_5 \
+ "movl %4, %%ebx"
++# define RESTOREARGS_NOSYSENTER_1 \
++ "bpopl .L__X'%k2, %k2\n\t"
++# define RESTOREARGS_NOSYSENTER_2 RESTOREARGS_NOSYSENTER_1
++# define RESTOREARGS_NOSYSENTER_3 RESTOREARGS_3
++# define RESTOREARGS_NOSYSENTER_4 RESTOREARGS_3
++# define RESTOREARGS_NOSYSENTER_5 \
++ "movl %3, %%ebx"
+ # else
+ # define RESTOREARGS_1 \
+ "bpopl .L__X'%k2, %k2\n\t"
diff --git a/sys-libs/glibc/files/2.10/glibc-2.10-hardened-ssp-compat.patch b/sys-libs/glibc/files/2.10/glibc-2.10-hardened-ssp-compat.patch
new file mode 100644
index 0000000..a1c9eef
--- /dev/null
+++ b/sys-libs/glibc/files/2.10/glibc-2.10-hardened-ssp-compat.patch
@@ -0,0 +1,168 @@
+Add backwards compat support for gcc-3.x ssp ... older ssp versions
+used __guard and __stack_smash_handler symbols while gcc-4.1 and newer
+uses __stack_chk_guard and __stack_chk_fail.
+
+--- config.h.in
++++ config.h.in
+@@ -42,6 +42,9 @@
+ assembler instructions per line. Default is `;' */
+ #undef ASM_LINE_SEP
+
++/* Define if we want to enable support for old ssp symbols */
++#undef ENABLE_OLD_SSP_COMPAT
++
+ /* Define if not using ELF, but `.init' and `.fini' sections are available. */
+ #undef HAVE_INITFINI
+
+--- configure
++++ configure
+@@ -1378,6 +1378,9 @@ Optional Features:
+ --enable-kernel=VERSION compile for compatibility with kernel not older than
+ VERSION
+ --enable-all-warnings enable all useful warnings gcc can issue
++ --disable-old-ssp-compat
++ enable support for older ssp symbols
++ [default=no]
+ --enable-multi-arch enable single DSO with optimizations for multiple
+ architectures
+ --enable-experimental-malloc
+@@ -6462,6 +6465,20 @@ fi
+ $as_echo "$libc_cv_ssp" >&6; }
+
+
++# Check whether --enable-old-ssp-compat or --disable-old-ssp-compat was given.
++if test "${enable_old_ssp_compat+set}" = set; then
++ enableval="$enable_old_ssp_compat"
++ enable_old_ssp_compat=$enableval
++else
++ enable_old_ssp_compat=no
++fi;
++if test "x$enable_old_ssp_compat" = "xyes"; then
++ cat >>confdefs.h <<\_ACEOF
++#define ENABLE_OLD_SSP_COMPAT 1
++_ACEOF
++
++fi
++
+ { $as_echo "$as_me:$LINENO: checking for -fgnu89-inline" >&5
+ $as_echo_n "checking for -fgnu89-inline... " >&6; }
+ if test "${libc_cv_gnu89_inline+set}" = set; then
+--- configure.in
++++ configure.in
+@@ -1641,6 +1641,15 @@ fi
+ rm -f conftest*])
+ AC_SUBST(libc_cv_ssp)
+
++AC_ARG_ENABLE([old-ssp-compat],
++ AC_HELP_STRING([--enable-old-ssp-compat],
++ [enable support for older ssp symbols @<:@default=no@:>@]),
++ [enable_old_ssp_compat=$enableval],
++ [enable_old_ssp_compat=no])
++if test "x$enable_old_ssp_compat" = "xyes"; then
++ AC_DEFINE(ENABLE_OLD_SSP_COMPAT)
++fi
++
+ AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
+ cat > conftest.c <<EOF
+ int foo;
+--- csu/libc-start.c
++++ csu/libc-start.c
+@@ -37,6 +37,9 @@ extern void __pthread_initialize_minimal
+ uintptr_t __stack_chk_guard attribute_relro;
+ # endif
+ #endif
++#ifdef ENABLE_OLD_SSP_COMPAT
++uintptr_t __guard attribute_relro;
++#endif
+
+ #ifdef HAVE_PTR_NTHREADS
+ /* We need atomic operations. */
+@@ -141,6 +145,9 @@ LIBC_START_MAIN (int (*main) (int, char
+
+ /* Set up the stack checker's canary. */
+ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
++#ifdef ENABLE_OLD_SSP_COMPAT
++ __guard = stack_chk_guard;
++#endif
+ # ifdef THREAD_SET_STACK_GUARD
+ THREAD_SET_STACK_GUARD (stack_chk_guard);
+ # else
+--- csu/Versions
++++ csu/Versions
+@@ -17,6 +17,12 @@ libc {
+ # New special glibc functions.
+ gnu_get_libc_release; gnu_get_libc_version;
+ }
++ GLIBC_2.3.2 {
++%ifdef ENABLE_OLD_SSP_COMPAT
++ # global objects and functions for the old propolice patch in gcc
++ __guard;
++%endif
++ }
+ GLIBC_PRIVATE {
+ %if HAVE___THREAD
+ # This version is for the TLS symbol, GLIBC_2.0 is the old object symbol.
+--- debug/Versions
++++ debug/Versions
+@@ -10,6 +10,12 @@ libc {
+ # These are to support some gcc features.
+ __cyg_profile_func_enter; __cyg_profile_func_exit;
+ }
++%ifdef ENABLE_OLD_SSP_COMPAT
++ GLIBC_2.3.2 {
++ # backwards ssp compat support; alias to __stack_chk_fail
++ __stack_smash_handler;
++ }
++%endif
+ GLIBC_2.3.4 {
+ __chk_fail;
+ __memcpy_chk; __memmove_chk; __mempcpy_chk; __memset_chk; __stpcpy_chk;
+--- elf/rtld.c
++++ elf/rtld.c
+@@ -89,6 +89,9 @@ INTDEF(_dl_argv)
+ in thread local area. */
+ uintptr_t __stack_chk_guard attribute_relro;
+ #endif
++#ifdef ENABLE_OLD_SSP_COMPAT
++uintptr_t __guard attribute_relro;
++#endif
+
+ /* Only exported for architectures that don't store the pointer guard
+ value in thread local area. */
+@@ -1817,6 +1821,9 @@ ERROR: ld.so: object '%s' cannot be load
+
+ /* Set up the stack checker's canary. */
+ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
++#ifdef ENABLE_OLD_SSP_COMPAT
++ __guard = stack_chk_guard;
++#endif
+ #ifdef THREAD_SET_STACK_GUARD
+ THREAD_SET_STACK_GUARD (stack_chk_guard);
+ #else
+--- elf/Versions
++++ elf/Versions
+@@ -43,6 +43,12 @@ ld {
+ # runtime interface to TLS
+ __tls_get_addr;
+ }
++%ifdef ENABLE_OLD_SSP_COMPAT
++ GLIBC_2.3.2 {
++ # backwards ssp compat support
++ __guard;
++ }
++%endif
+ GLIBC_2.4 {
+ # stack canary
+ __stack_chk_guard;
+--- Versions.def
++++ Versions.def
+@@ -109,6 +109,9 @@ ld {
+ GLIBC_2.0
+ GLIBC_2.1
+ GLIBC_2.3
++%ifdef ENABLE_OLD_SSP_COMPAT
++ GLIBC_2.3.2
++%endif
+ GLIBC_2.4
+ GLIBC_PRIVATE
+ }
diff --git a/sys-libs/glibc/files/2.16/glibc-2.16-hardened-pie.patch b/sys-libs/glibc/files/2.16/glibc-2.16-hardened-pie.patch
new file mode 100644
index 0000000..a850a61
--- /dev/null
+++ b/sys-libs/glibc/files/2.16/glibc-2.16-hardened-pie.patch
@@ -0,0 +1,39 @@
+2012-11-11 Magnus Granberg <zorry@gentoo.org>
+
+ #442712
+ * Makeconfig (+link): Set to +link-pie.
+ (+link-static-before-libc): Change $(static-start-installed-name) to
+ S$(static-start-installed-name).
+ (+prector): Set to +prectorS.
+ (+postctor): Set to +postctorS.
+
+--- libc/Makeconfig
++++ libc/Makeconfig
+@@ -447,11 +447,12 @@
+ $(common-objpfx)libc% $(+postinit),$^) \
+ $(link-extra-libs) $(link-libc) $(+postctorS) $(+postinit)
+ endif
+++link = $(+link-pie)
+ # Command for statically linking programs with the C library.
+ ifndef +link-static
+ +link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
+ $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+- $(addprefix $(csu-objpfx),$(static-start-installed-name)) \
++ $(addprefix $(csu-objpfx),S$(static-start-installed-name)) \
+ $(+preinit) $(+prector) \
+ $(filter-out $(addprefix $(csu-objpfx),start.o \
+ $(start-installed-name))\
+@@ -549,11 +550,10 @@
+ ifeq ($(elf),yes)
+ +preinit = $(addprefix $(csu-objpfx),crti.o)
+ +postinit = $(addprefix $(csu-objpfx),crtn.o)
+-+prector = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbegin.o`
+-+postctor = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtend.o`
+-# Variants of the two previous definitions for linking PIE programs.
+ +prectorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtbeginS.o`
+ +postctorS = `$(CC) $(sysdep-LDFLAGS) --print-file-name=crtendS.o`
+++prector = $(+prectorS)
+++postctor = $(+postctorS)
+ +interp = $(addprefix $(elf-objpfx),interp.os)
+ endif
+ csu-objpfx = $(common-objpfx)csu/
diff --git a/sys-libs/glibc/files/2.16/glibc-rh1183535.patch b/sys-libs/glibc/files/2.16/glibc-rh1183535.patch
new file mode 100644
index 0000000..2cd5b1b
--- /dev/null
+++ b/sys-libs/glibc/files/2.16/glibc-rh1183535.patch
@@ -0,0 +1,166 @@
+commit d5dd6189d506068ed11c8bfa1e1e9bffde04decd
+Author: Andreas Schwab <schwab@suse.de>
+Date: Mon Jan 21 17:41:28 2013 +0100
+
+ Fix parsing of numeric hosts in gethostbyname_r
+
+diff --git a/nss/digits_dots.c b/nss/digits_dots.c
+index 2b86295..e007ef4 100644
+--- a/nss/digits_dots.c
++++ b/nss/digits_dots.c
+@@ -46,7 +46,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ {
+ if (h_errnop)
+ *h_errnop = NETDB_INTERNAL;
+- *result = NULL;
++ if (buffer_size == NULL)
++ *status = NSS_STATUS_TRYAGAIN;
++ else
++ *result = NULL;
+ return -1;
+ }
+
+@@ -83,14 +86,16 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ }
+
+ size_needed = (sizeof (*host_addr)
+- + sizeof (*h_addr_ptrs) + strlen (name) + 1);
++ + sizeof (*h_addr_ptrs)
++ + sizeof (*h_alias_ptr) + strlen (name) + 1);
+
+ if (buffer_size == NULL)
+ {
+ if (buflen < size_needed)
+ {
++ *status = NSS_STATUS_TRYAGAIN;
+ if (h_errnop != NULL)
+- *h_errnop = TRY_AGAIN;
++ *h_errnop = NETDB_INTERNAL;
+ __set_errno (ERANGE);
+ goto done;
+ }
+@@ -109,7 +114,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ *buffer_size = 0;
+ __set_errno (save);
+ if (h_errnop != NULL)
+- *h_errnop = TRY_AGAIN;
++ *h_errnop = NETDB_INTERNAL;
+ *result = NULL;
+ goto done;
+ }
+@@ -149,7 +154,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ if (! ok)
+ {
+ *h_errnop = HOST_NOT_FOUND;
+- if (buffer_size)
++ if (buffer_size == NULL)
++ *status = NSS_STATUS_NOTFOUND;
++ else
+ *result = NULL;
+ goto done;
+ }
+@@ -190,7 +197,7 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ if (buffer_size == NULL)
+ *status = NSS_STATUS_SUCCESS;
+ else
+- *result = resbuf;
++ *result = resbuf;
+ goto done;
+ }
+
+@@ -201,15 +208,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+
+ if ((isxdigit (name[0]) && strchr (name, ':') != NULL) || name[0] == ':')
+ {
+- const char *cp;
+- char *hostname;
+- typedef unsigned char host_addr_t[16];
+- host_addr_t *host_addr;
+- typedef char *host_addr_list_t[2];
+- host_addr_list_t *h_addr_ptrs;
+- size_t size_needed;
+- int addr_size;
+-
+ switch (af)
+ {
+ default:
+@@ -225,7 +223,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ /* This is not possible. We cannot represent an IPv6 address
+ in an `struct in_addr' variable. */
+ *h_errnop = HOST_NOT_FOUND;
+- *result = NULL;
++ if (buffer_size == NULL)
++ *status = NSS_STATUS_NOTFOUND;
++ else
++ *result = NULL;
+ goto done;
+
+ case AF_INET6:
+@@ -233,42 +234,6 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ break;
+ }
+
+- size_needed = (sizeof (*host_addr)
+- + sizeof (*h_addr_ptrs) + strlen (name) + 1);
+-
+- if (buffer_size == NULL && buflen < size_needed)
+- {
+- if (h_errnop != NULL)
+- *h_errnop = TRY_AGAIN;
+- __set_errno (ERANGE);
+- goto done;
+- }
+- else if (buffer_size != NULL && *buffer_size < size_needed)
+- {
+- char *new_buf;
+- *buffer_size = size_needed;
+- new_buf = realloc (*buffer, *buffer_size);
+-
+- if (new_buf == NULL)
+- {
+- save = errno;
+- free (*buffer);
+- __set_errno (save);
+- *buffer = NULL;
+- *buffer_size = 0;
+- *result = NULL;
+- goto done;
+- }
+- *buffer = new_buf;
+- }
+-
+- memset (*buffer, '\0', size_needed);
+-
+- host_addr = (host_addr_t *) *buffer;
+- h_addr_ptrs = (host_addr_list_t *)
+- ((char *) host_addr + sizeof (*host_addr));
+- hostname = (char *) h_addr_ptrs + sizeof (*h_addr_ptrs);
+-
+ for (cp = name;; ++cp)
+ {
+ if (!*cp)
+@@ -281,7 +246,9 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf,
+ if (inet_pton (AF_INET6, name, host_addr) <= 0)
+ {
+ *h_errnop = HOST_NOT_FOUND;
+- if (buffer_size)
++ if (buffer_size == NULL)
++ *status = NSS_STATUS_NOTFOUND;
++ else
+ *result = NULL;
+ goto done;
+ }
+diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
+index 1067744..44d00f4 100644
+--- a/nss/getXXbyYY_r.c
++++ b/nss/getXXbyYY_r.c
+@@ -179,6 +179,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
+ case -1:
+ return errno;
+ case 1:
++#ifdef NEED_H_ERRNO
++ any_service = true;
++#endif
+ goto done;
+ }
+ #endif
diff --git a/sys-libs/glibc/files/2.6/glibc-2.6-gentoo-stack_chk_fail.c b/sys-libs/glibc/files/2.6/glibc-2.6-gentoo-stack_chk_fail.c
new file mode 100644
index 0000000..217bf1a
--- /dev/null
+++ b/sys-libs/glibc/files/2.6/glibc-2.6-gentoo-stack_chk_fail.c
@@ -0,0 +1,321 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C 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.
+
+ The GNU C 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 the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Copyright (C) 2006-2007 Gentoo Foundation Inc.
+ * License terms as above.
+ *
+ * Hardened Gentoo SSP handler
+ *
+ * An SSP failure handler that does not use functions from the rest of
+ * glibc; it uses the INTERNAL_SYSCALL methods directly. This ensures
+ * no possibility of recursion into the handler.
+ *
+ * Direct all bug reports to http://bugs.gentoo.org/
+ *
+ * Re-written from the glibc-2.3 Hardened Gentoo SSP handler
+ * by Kevin F. Quinn - <kevquinn[@]gentoo.org>
+ *
+ * The following people contributed to the glibc-2.3 Hardened
+ * Gentoo SSP handler, from which this implementation draws much:
+ *
+ * Ned Ludd - <solar[@]gentoo.org>
+ * Alexander Gabert - <pappy[@]gentoo.org>
+ * The PaX Team - <pageexec[@]freemail.hu>
+ * Peter S. Mazinger - <ps.m[@]gmx.net>
+ * Yoann Vandoorselaere - <yoann[@]prelude-ids.org>
+ * Robert Connolly - <robert[@]linuxfromscratch.org>
+ * Cory Visi <cory[@]visi.name>
+ * Mike Frysinger <vapier[@]gentoo.org>
+ */
+
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+
+#include <sys/types.h>
+
+#include <sysdep-cancel.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+#include <kernel-features.h>
+
+#include <alloca.h>
+/* from sysdeps */
+#include <socketcall.h>
+/* for the stuff in bits/socket.h */
+#include <sys/socket.h>
+#include <sys/un.h>
+
+
+/* Sanity check on SYSCALL macro names - force compilation
+ * failure if the names used here do not exist
+ */
+#if !defined __NR_socketcall && !defined __NR_socket
+# error Cannot do syscall socket or socketcall
+#endif
+#if !defined __NR_socketcall && !defined __NR_connect
+# error Cannot do syscall connect or socketcall
+#endif
+#ifndef __NR_write
+# error Cannot do syscall write
+#endif
+#ifndef __NR_close
+# error Cannot do syscall close
+#endif
+#ifndef __NR_getpid
+# error Cannot do syscall getpid
+#endif
+#ifndef __NR_kill
+# error Cannot do syscall kill
+#endif
+#ifndef __NR_exit
+# error Cannot do syscall exit
+#endif
+#ifdef SSP_SMASH_DUMPS_CORE
+# define ENABLE_SSP_SMASH_DUMPS_CORE 1
+# if !defined _KERNEL_NSIG && !defined _NSIG
+# error No _NSIG or _KERNEL_NSIG for rt_sigaction
+# endif
+# if !defined __NR_sigaction && !defined __NR_rt_sigaction
+# error Cannot do syscall sigaction or rt_sigaction
+# endif
+/* Although rt_sigaction expects sizeof(sigset_t) - it expects the size
+ * of the _kernel_ sigset_t which is not the same as the user sigset_t.
+ * Most arches have this as _NSIG bits - mips has _KERNEL_NSIG bits for
+ * some reason.
+ */
+# ifdef _KERNEL_NSIG
+# define _SSP_NSIG _KERNEL_NSIG
+# else
+# define _SSP_NSIG _NSIG
+# endif
+#else
+# define _SSP_NSIG 0
+# define ENABLE_SSP_SMASH_DUMPS_CORE 0
+#endif
+
+/* Define DO_SIGACTION - default to newer rt signal interface but
+ * fallback to old as needed.
+ */
+#ifdef __NR_rt_sigaction
+# define DO_SIGACTION(signum, act, oldact) \
+ INLINE_SYSCALL(rt_sigaction, 4, signum, act, oldact, _SSP_NSIG/8)
+#else
+# define DO_SIGACTION(signum, act, oldact) \
+ INLINE_SYSCALL(sigaction, 3, signum, act, oldact)
+#endif
+
+/* Define DO_SOCKET/DO_CONNECT functions to deal with socketcall vs socket/connect */
+#if defined(__NR_socket) && defined(__NR_connect)
+# define USE_OLD_SOCKETCALL 0
+#else
+# define USE_OLD_SOCKETCALL 1
+#endif
+/* stub out the __NR_'s so we can let gcc optimize away dead code */
+#ifndef __NR_socketcall
+# define __NR_socketcall 0
+#endif
+#ifndef __NR_socket
+# define __NR_socket 0
+#endif
+#ifndef __NR_connect
+# define __NR_connect 0
+#endif
+#define DO_SOCKET(result, domain, type, protocol) \
+ do { \
+ if (USE_OLD_SOCKETCALL) { \
+ socketargs[0] = domain; \
+ socketargs[1] = type; \
+ socketargs[2] = protocol; \
+ socketargs[3] = 0; \
+ result = INLINE_SYSCALL(socketcall, 2, SOCKOP_socket, socketargs); \
+ } else \
+ result = INLINE_SYSCALL(socket, 3, domain, type, protocol); \
+ } while (0)
+#define DO_CONNECT(result, sockfd, serv_addr, addrlen) \
+ do { \
+ if (USE_OLD_SOCKETCALL) { \
+ socketargs[0] = sockfd; \
+ socketargs[1] = (unsigned long int)serv_addr; \
+ socketargs[2] = addrlen; \
+ socketargs[3] = 0; \
+ result = INLINE_SYSCALL(socketcall, 2, SOCKOP_connect, socketargs); \
+ } else \
+ result = INLINE_SYSCALL(connect, 3, sockfd, serv_addr, addrlen); \
+ } while (0)
+
+#ifndef _PATH_LOG
+# define _PATH_LOG "/dev/log"
+#endif
+
+static const char path_log[] = _PATH_LOG;
+
+/* For building glibc with SSP switched on, define __progname to a
+ * constant if building for the run-time loader, to avoid pulling
+ * in more of libc.so into ld.so
+ */
+#ifdef IS_IN_rtld
+static char *__progname = "<rtld>";
+#else
+extern char *__progname;
+#endif
+
+
+/* Common handler code, used by stack_chk_fail and __stack_smash_handler
+ * Inlined to ensure no self-references to the handler within itself.
+ * Data static to avoid putting more than necessary on the stack,
+ * to aid core debugging.
+ */
+__attribute__ ((__noreturn__ , __always_inline__))
+static inline void
+__hardened_gentoo_stack_chk_fail(char func[], int damaged)
+{
+#define MESSAGE_BUFSIZ 256
+ static pid_t pid;
+ static int plen, i;
+ static char message[MESSAGE_BUFSIZ];
+ static const char msg_ssa[] = ": stack smashing attack";
+ static const char msg_inf[] = " in function ";
+ static const char msg_ssd[] = "*** stack smashing detected ***: ";
+ static const char msg_terminated[] = " - terminated\n";
+ static const char msg_report[] = "Report to http://bugs.gentoo.org/\n";
+ static const char msg_unknown[] = "<unknown>";
+ static int log_socket, connect_result;
+ static struct sockaddr_un sock;
+ static unsigned long int socketargs[4];
+
+ /* Build socket address
+ */
+ sock.sun_family = AF_UNIX;
+ i = 0;
+ while ((path_log[i] != '\0') && (i<(sizeof(sock.sun_path)-1))) {
+ sock.sun_path[i] = path_log[i];
+ i++;
+ }
+ sock.sun_path[i] = '\0';
+
+ /* Try SOCK_DGRAM connection to syslog */
+ connect_result = -1;
+ DO_SOCKET(log_socket, AF_UNIX, SOCK_DGRAM, 0);
+ if (log_socket != -1)
+ DO_CONNECT(connect_result, log_socket, &sock, sizeof(sock));
+ if (connect_result == -1) {
+ if (log_socket != -1)
+ INLINE_SYSCALL(close, 1, log_socket);
+ /* Try SOCK_STREAM connection to syslog */
+ DO_SOCKET(log_socket, AF_UNIX, SOCK_STREAM, 0);
+ if (log_socket != -1)
+ DO_CONNECT(connect_result, log_socket, &sock, sizeof(sock));
+ }
+
+ /* Build message. Messages are generated both in the old style and new style,
+ * so that log watchers that are configured for the old-style message continue
+ * to work.
+ */
+#define strconcat(str) \
+ {i=0; while ((str[i] != '\0') && ((i+plen)<(MESSAGE_BUFSIZ-1))) \
+ {\
+ message[plen+i]=str[i];\
+ i++;\
+ }\
+ plen+=i;}
+
+ /* R.Henderson post-gcc-4 style message */
+ plen = 0;
+ strconcat(msg_ssd);
+ if (__progname != (char *)0)
+ strconcat(__progname)
+ else
+ strconcat(msg_unknown);
+ strconcat(msg_terminated);
+
+ /* Write out error message to STDERR, to syslog if open */
+ INLINE_SYSCALL(write, 3, STDERR_FILENO, message, plen);
+ if (connect_result != -1)
+ INLINE_SYSCALL(write, 3, log_socket, message, plen);
+
+ /* Dr. Etoh pre-gcc-4 style message */
+ plen = 0;
+ if (__progname != (char *)0)
+ strconcat(__progname)
+ else
+ strconcat(msg_unknown);
+ strconcat(msg_ssa);
+ strconcat(msg_inf);
+ if (func != NULL)
+ strconcat(func)
+ else
+ strconcat(msg_unknown);
+ strconcat(msg_terminated);
+ /* Write out error message to STDERR, to syslog if open */
+ INLINE_SYSCALL(write, 3, STDERR_FILENO, message, plen);
+ if (connect_result != -1)
+ INLINE_SYSCALL(write, 3, log_socket, message, plen);
+
+ /* Direct reports to bugs.gentoo.org */
+ plen=0;
+ strconcat(msg_report);
+ message[plen++]='\0';
+
+ /* Write out error message to STDERR, to syslog if open */
+ INLINE_SYSCALL(write, 3, STDERR_FILENO, message, plen);
+ if (connect_result != -1)
+ INLINE_SYSCALL(write, 3, log_socket, message, plen);
+
+ if (log_socket != -1)
+ INLINE_SYSCALL(close, 1, log_socket);
+
+ /* Suicide */
+ pid = INLINE_SYSCALL(getpid, 0);
+
+ if (ENABLE_SSP_SMASH_DUMPS_CORE) {
+ static struct sigaction default_abort_act;
+ /* Remove any user-supplied handler for SIGABRT, before using it */
+ default_abort_act.sa_handler = SIG_DFL;
+ default_abort_act.sa_sigaction = NULL;
+ __sigfillset(&default_abort_act.sa_mask);
+ default_abort_act.sa_flags = 0;
+ if (DO_SIGACTION(SIGABRT, &default_abort_act, NULL) == 0)
+ INLINE_SYSCALL(kill, 2, pid, SIGABRT);
+ }
+
+ /* Note; actions cannot be added to SIGKILL */
+ INLINE_SYSCALL(kill, 2, pid, SIGKILL);
+
+ /* In case the kill didn't work, exit anyway
+ * The loop prevents gcc thinking this routine returns
+ */
+ while (1)
+ INLINE_SYSCALL(exit, 0);
+}
+
+__attribute__ ((__noreturn__))
+void __stack_chk_fail(void)
+{
+ __hardened_gentoo_stack_chk_fail(NULL, 0);
+}
+
+#ifdef ENABLE_OLD_SSP_COMPAT
+__attribute__ ((__noreturn__))
+void __stack_smash_handler(char func[], int damaged)
+{
+ __hardened_gentoo_stack_chk_fail(func, damaged);
+}
+#endif
diff --git a/sys-libs/glibc/files/eblits/common.eblit b/sys-libs/glibc/files/eblits/common.eblit
new file mode 100644
index 0000000..2f7471e
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/common.eblit
@@ -0,0 +1,343 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/common.eblit,v 1.45 2014/10/18 23:09:51 vapier Exp $
+
+alt_prefix() {
+ is_crosscompile && echo /usr/${CTARGET}
+}
+
+if [[ ${EAPI:-0} == [012] ]] ; then
+ : ${ED:=${D}}
+ : ${EROOT:=${ROOT}}
+fi
+# This indirection is for binpkgs. #523332
+_nonfatal() { nonfatal "$@" ; }
+if [[ ${EAPI:-0} == [0123] ]] ; then
+ nonfatal() { "$@" ; }
+ _nonfatal() { "$@" ; }
+fi
+
+# We need to be able to set alternative headers for
+# compiling for non-native platform
+# Will also become useful for testing kernel-headers without screwing up
+# the whole system.
+# note: intentionally undocumented.
+alt_headers() {
+ echo ${ALT_HEADERS:=$(alt_prefix)/usr/include}
+}
+alt_build_headers() {
+ if [[ -z ${ALT_BUILD_HEADERS} ]] ; then
+ ALT_BUILD_HEADERS=$(alt_headers)
+ if tc-is-cross-compiler ; then
+ ALT_BUILD_HEADERS=${SYSROOT}$(alt_headers)
+ if [[ ! -e ${ALT_BUILD_HEADERS}/linux/version.h ]] ; then
+ local header_path=$(echo '#include <linux/version.h>' | $(tc-getCPP ${CTARGET}) ${CFLAGS} 2>&1 | grep -o '[^"]*linux/version.h')
+ ALT_BUILD_HEADERS=${header_path%/linux/version.h}
+ fi
+ fi
+ fi
+ echo "${ALT_BUILD_HEADERS}"
+}
+
+alt_libdir() {
+ echo $(alt_prefix)/$(get_libdir)
+}
+alt_usrlibdir() {
+ echo $(alt_prefix)/usr/$(get_libdir)
+}
+
+builddir() {
+ echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
+}
+
+setup_target_flags() {
+ # This largely mucks with compiler flags. None of which should matter
+ # when building up just the headers.
+ just_headers && return 0
+
+ case $(tc-arch) in
+ x86)
+ # -march needed for #185404 #199334
+ if ! glibc_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n' 2>/dev/null ; then
+ local t=${CTARGET_OPT:-${CTARGET}}
+ t=${t%%-*}
+ filter-flags '-march=*'
+ export CFLAGS="-march=${t} ${CFLAGS}"
+ einfo "Auto adding -march=${t} to CFLAGS #185404"
+ fi
+ ;;
+ amd64)
+ # -march needed for #185404 #199334
+ if ! glibc_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n' 2>/dev/null ; then
+ local t=${CTARGET_OPT:-${CTARGET}}
+ t=${t%%-*}
+ filter-flags '-march=*'
+ # ugly, ugly, ugly. ugly.
+ CFLAGS_x86=$(CFLAGS=${CFLAGS_x86} filter-flags '-march=*'; echo "${CFLAGS}")
+ export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
+ einfo "Auto adding -march=${t} to CFLAGS_x86 #185404"
+ fi
+ ;;
+ ppc)
+ append-flags "-freorder-blocks"
+ ;;
+ sparc)
+ # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though.
+ filter-flags "-fcall-used-g7"
+ append-flags "-fcall-used-g6"
+ filter-flags "-mvis"
+
+ GLIBCMAJOR=$(get_version_component_range 1 ${PV})
+ GLIBCMINOR=$(get_version_component_range 2 ${PV})
+
+ # set CTARGET_OPT so glibc can use cpu-specific .S files for better performance
+ # - UltraSPARC T1 (niagara) support requires >= glibc 2.8
+ # - UltraSPARC T2 (niagara2) support requires >= glibc 2.7
+
+ if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler; } ; then
+ case ${ABI}:${CTARGET} in
+ sparc64:*|\
+ default:sparc64*)
+ filter-flags -Wa,-xarch -Wa,-A
+
+ if is-flagq "-mcpu=niagara2" && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.7 ]] ; then
+ CTARGET_OPT="sparc64v2-unknown-linux-gnu"
+ append-flags "-Wa,-xarch=v9b"
+ export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b"
+ elif { is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2" ; } && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.6 ]] ; then
+ CTARGET_OPT="sparc64v-unknown-linux-gnu"
+ append-flags "-Wa,-xarch=v9b"
+ export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b"
+ elif is-flagq "-mcpu=ultrasparc3" || is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2"; then
+ CTARGET_OPT="sparc64b-unknown-linux-gnu"
+ append-flags "-Wa,-xarch=v9b"
+ export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b"
+ else
+ CTARGET_OPT="sparc64-unknown-linux-gnu"
+ append-flags "-Wa,-xarch=v9a"
+ export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9a"
+ fi
+ ;;
+ *)
+ if is-flagq "-mcpu=niagara2" && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.7 ]] ; then
+ CTARGET_OPT="sparcv9v2-unknown-linux-gnu"
+ elif { is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2" ; } && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.6 ]] ; then
+ CTARGET_OPT="sparcv9v-unknown-linux-gnu"
+ elif is-flagq "-mcpu=ultrasparc3" || is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2"; then
+ CTARGET_OPT="sparcv9b-unknown-linux-gnu"
+ else
+ CTARGET_OPT="sparcv9-unknown-linux-gnu"
+ fi
+ ;;
+ esac
+ else
+ if is-flagq "-mcpu=niagara2" && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.7 ]] ; then
+ CTARGET_OPT="sparcv9v2-unknown-linux-gnu"
+ elif { is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2" ; } && [[ ${GLIBCMAJOR}.${GLIBCMINOR} > 2.6 ]] ; then
+ CTARGET_OPT="sparcv9v-unknown-linux-gnu"
+ elif is-flagq "-mcpu=ultrasparc3" || is-flagq "-mcpu=niagara" || is-flagq "-mcpu=niagara2"; then
+ CTARGET_OPT="sparcv9b-unknown-linux-gnu"
+ elif { is_crosscompile && want_nptl; } || is-flagq "-mcpu=ultrasparc2" || is-flagq "-mcpu=ultrasparc"; then
+ CTARGET_OPT="sparcv9-unknown-linux-gnu"
+ fi
+ fi
+ ;;
+ esac
+}
+
+setup_flags() {
+ # Make sure host make.conf doesn't pollute us
+ if is_crosscompile || tc-is-cross-compiler ; then
+ CHOST=${CTARGET} strip-unsupported-flags
+ fi
+
+ # Store our CFLAGS because it's changed depending on which CTARGET
+ # we are building when pulling glibc on a multilib profile
+ CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
+ CFLAGS=${CFLAGS_BASE}
+ CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
+ CXXFLAGS=${CXXFLAGS_BASE}
+ ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
+ ASFLAGS=${ASFLAGS_BASE}
+
+ # Over-zealous CFLAGS can often cause problems. What may work for one
+ # person may not work for another. To avoid a large influx of bugs
+ # relating to failed builds, we strip most CFLAGS out to ensure as few
+ # problems as possible.
+ strip-flags
+ strip-unsupported-flags
+ filter-flags -m32 -m64 -mabi=*
+
+ # Bug 492892.
+ filter-flags -frecord-gcc-switches
+
+ unset CBUILD_OPT CTARGET_OPT
+ if use multilib ; then
+ CTARGET_OPT=$(get_abi_CTARGET)
+ [[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
+ fi
+
+ setup_target_flags
+
+ if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
+ CBUILD_OPT=${CTARGET_OPT}
+ fi
+
+ # Lock glibc at -O2 -- linuxthreads needs it and we want to be
+ # conservative here. -fno-strict-aliasing is to work around #155906
+ filter-flags -O?
+ append-flags -O2 -fno-strict-aliasing
+
+ # Can't build glibc itself with fortify code. Newer versions add
+ # this flag for us, so no need to do it manually.
+ version_is_at_least 2.16 ${PV} || append-cppflags -U_FORTIFY_SOURCE
+
+ # building glibc with SSP is fraught with difficulty, especially
+ # due to __stack_chk_fail_local which would mean significant changes
+ # to the glibc build process. See bug #94325 #293721
+ # Note we have to handle both user-given CFLAGS and gcc defaults via
+ # spec rules here. We can't simply add -fno-stack-protector as it gets
+ # added before user flags, and we can't just filter-flags because
+ # _filter_hardened doesn't support globs.
+ filter-flags -fstack-protector*
+ gcc-specs-ssp && append-flags $(test-flags -fno-stack-protector)
+
+ if use hardened && gcc-specs-pie ; then
+ # Force PIC macro definition for all compilations since they're all
+ # either -fPIC or -fPIE with the default-PIE compiler.
+ append-cppflags -DPIC
+ else
+ # Don't build -fPIE without the default-PIE compiler and the
+ # hardened-pie patch
+ filter-flags -fPIE
+ fi
+}
+
+want_nptl() {
+ [[ -z ${LT_VER} ]] && return 0
+ want_tls || return 1
+ use nptl || return 1
+
+ # Older versions of glibc had incomplete arch support for nptl.
+ # But if you're building those now, you can handle USE=nptl yourself.
+ return 0
+}
+
+want_linuxthreads() {
+ [[ -z ${LT_VER} ]] && return 1
+ use linuxthreads
+}
+
+want_tls() {
+ # Archs that can use TLS (Thread Local Storage)
+ case $(tc-arch) in
+ x86)
+ # requires i486 or better #106556
+ [[ ${CTARGET} == i[4567]86* ]] && return 0
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+want__thread() {
+ want_tls || return 1
+
+ # For some reason --with-tls --with__thread is causing segfaults on sparc32.
+ [[ ${PROFILE_ARCH} == "sparc" ]] && return 1
+
+ [[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD}
+
+ # only test gcc -- cant test linking yet
+ tc-has-tls -c ${CTARGET}
+ WANT__THREAD=$?
+
+ return ${WANT__THREAD}
+}
+
+use_multiarch() {
+ # Make sure binutils is new enough to support indirect functions #336792
+ # This funky sed supports gold and bfd linkers.
+ local bver nver
+ bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
+ case $(tc-arch ${CTARGET}) in
+ amd64|x86) nver="2.20" ;;
+ arm) nver="2.22" ;;
+ hppa) nver="2.23" ;;
+ ppc|ppc64) nver="2.20" ;;
+ # ifunc was added in 2.23, but glibc also needs machinemode which is in 2.24.
+ s390) nver="2.24" ;;
+ sparc) nver="2.21" ;;
+ *) return 1 ;;
+ esac
+ version_is_at_least ${nver} ${bver}
+}
+
+# Setup toolchain variables that had historically
+# been defined in the profiles for these archs.
+setup_env() {
+ # silly users
+ unset LD_RUN_PATH
+ unset LD_ASSUME_KERNEL
+
+ multilib_env ${CTARGET_OPT:-${CTARGET}}
+ if is_crosscompile || tc-is-cross-compiler ; then
+ if ! use multilib ; then
+ MULTILIB_ABIS=${DEFAULT_ABI}
+ else
+ MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
+ fi
+
+ # If the user has CFLAGS_<CTARGET> in their make.conf, use that,
+ # and fall back on CFLAGS.
+ local VAR=CFLAGS_${CTARGET//[-.]/_}
+ CFLAGS=${!VAR-${CFLAGS}}
+ fi
+
+ setup_flags
+
+ export ABI=${ABI:-${DEFAULT_ABI:-default}}
+
+ local VAR=CFLAGS_${ABI}
+ # We need to export CFLAGS with abi information in them because glibc's
+ # configure script checks CFLAGS for some targets (like mips). Keep
+ # around the original clean value to avoid appending multiple ABIs on
+ # top of each other.
+ : ${__GLIBC_CC:=$(tc-getCC ${CTARGET_OPT:-${CTARGET}})}
+ export __GLIBC_CC CC="${__GLIBC_CC} ${!VAR}"
+}
+
+foreach_abi() {
+ setup_env
+
+ local ret=0
+ local abilist=""
+ if use multilib ; then
+ abilist=$(get_install_abis)
+ else
+ abilist=${DEFAULT_ABI}
+ fi
+ evar_push ABI
+ export ABI
+ for ABI in ${abilist:-default} ; do
+ setup_env
+ einfo "Running $1 for ABI ${ABI}"
+ $1
+ : $(( ret |= $? ))
+ done
+ evar_pop
+ return ${ret}
+}
+
+just_headers() {
+ is_crosscompile && use crosscompile_opts_headers-only
+}
+
+glibc_banner() {
+ local b="Gentoo ${PVR}"
+ [[ -n ${SNAP_VER} ]] && b+=" snapshot ${SNAP_VER}"
+ [[ -n ${BRANCH_UPDATE} ]] && b+=" branch ${BRANCH_UPDATE}"
+ [[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" p${PATCH_VER}"
+ echo "${b}"
+}
diff --git a/sys-libs/glibc/files/eblits/pkg_postinst.eblit b/sys-libs/glibc/files/eblits/pkg_postinst.eblit
new file mode 100644
index 0000000..9e5447d
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/pkg_postinst.eblit
@@ -0,0 +1,27 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/pkg_postinst.eblit,v 1.2 2012/04/15 20:04:44 vapier Exp $
+
+eblit-glibc-pkg_postinst() {
+ # nothing to do if just installing headers
+ just_headers && return
+
+ if ! tc-is-cross-compiler && [[ -x ${ROOT}/usr/sbin/iconvconfig ]] ; then
+ # Generate fastloading iconv module configuration file.
+ "${ROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}"
+ fi
+
+ if ! is_crosscompile && [[ ${ROOT} == "/" ]] ; then
+ # Reload init ... if in a chroot or a diff init package, ignore
+ # errors from this step #253697
+ /sbin/telinit U 2>/dev/null
+
+ # if the host locales.gen contains no entries, we'll install everything
+ local locale_list="${ROOT}etc/locale.gen"
+ if [[ -z $(locale-gen --list --config "${locale_list}") ]] ; then
+ ewarn "Generating all locales; edit /etc/locale.gen to save time/space"
+ locale_list="${ROOT}usr/share/i18n/SUPPORTED"
+ fi
+ locale-gen -j $(makeopts_jobs) --config "${locale_list}"
+ fi
+}
diff --git a/sys-libs/glibc/files/eblits/pkg_preinst.eblit b/sys-libs/glibc/files/eblits/pkg_preinst.eblit
new file mode 100644
index 0000000..0fcb24a
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/pkg_preinst.eblit
@@ -0,0 +1,69 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/pkg_preinst.eblit,v 1.13 2014/08/10 03:35:56 vapier Exp $
+
+# Simple test to make sure our new glibc isnt completely broken.
+# Make sure we don't test with statically built binaries since
+# they will fail. Also, skip if this glibc is a cross compiler.
+#
+# If coreutils is built with USE=multicall, some of these files
+# will just be wrapper scripts, not actual ELFs we can test.
+glibc_sanity_check() {
+ cd / #228809
+
+ # We enter ${D} so to avoid trouble if the path contains
+ # special characters; for instance if the path contains the
+ # colon character (:), then the linker will try to split it
+ # and look for the libraries in an unexpected place. This can
+ # lead to unsafe code execution if the generated prefix is
+ # within a world-writable directory.
+ # (e.g. /var/tmp/portage:${HOSTNAME})
+ pushd "${ED}"/$(get_libdir) >/dev/null
+
+ local x striptest
+ for x in cal date env free ls true uname uptime ; do
+ x=$(type -p ${x})
+ [[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
+ striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
+ case ${striptest} in
+ *"statically linked"*) continue;;
+ *"ASCII text"*) continue;;
+ esac
+ ./ld-*.so --library-path . ${x} > /dev/null \
+ || die "simple run test (${x}) failed"
+ done
+
+ popd >/dev/null
+}
+
+eblit-glibc-pkg_preinst() {
+ # nothing to do if just installing headers
+ just_headers && return
+
+ # prepare /etc/ld.so.conf.d/ for files
+ mkdir -p "${EROOT}"/etc/ld.so.conf.d
+
+ # Default /etc/hosts.conf:multi to on for systems with small dbs.
+ if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
+ sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
+ elog "Defaulting /etc/host.conf:multi to on"
+ fi
+
+ [[ ${ROOT} != "/" ]] && return 0
+ [[ -d ${D}/$(get_libdir) ]] || return 0
+ glibc_sanity_check
+
+ # Make sure devpts is mounted correctly for use w/out setuid pt_chown.
+ if in_iuse suid && ! use suid ; then
+ if awk '$3 == "devpts" && $4 ~ /[, ]gid=5[, ]/ { exit 1 }' /proc/mounts ; then
+ eerror "In order to use glibc with USE=-suid, you must make sure that"
+ eerror "you have devpts mounted at /dev/pts with the gid=5 option."
+ eerror "Openrc should do this for you, so you should check /etc/fstab"
+ eerror "and make sure you do not have any invalid settings there."
+ # Do not die on older kernels as devpts did not export these settings #489520.
+ if version_is_at_least 2.6.25 $(uname -r) ; then
+ die "mount & fix your /dev/pts settings"
+ fi
+ fi
+ fi
+}
diff --git a/sys-libs/glibc/files/eblits/pkg_setup.eblit b/sys-libs/glibc/files/eblits/pkg_setup.eblit
new file mode 100644
index 0000000..7701a56
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/pkg_setup.eblit
@@ -0,0 +1,125 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/pkg_setup.eblit,v 1.14 2014/10/17 17:30:04 vapier Exp $
+
+glibc_compile_test() {
+ local ret save_cflags=${CFLAGS}
+ CFLAGS+=" $1"
+ shift
+
+ pushd "${T}" >/dev/null
+
+ rm -f glibc-test*
+ printf '%b' "$*" > glibc-test.c
+
+ _nonfatal emake -s glibc-test
+ ret=$?
+
+ popd >/dev/null
+
+ CFLAGS=${save_cflags}
+ return ${ret}
+}
+
+glibc_run_test() {
+ local ret
+
+ if [[ ${EMERGE_FROM} == "binary" ]] ; then
+ # ignore build failures when installing a binary package #324685
+ glibc_compile_test "" "$@" 2>/dev/null || return 0
+ else
+ if ! glibc_compile_test "" "$@" ; then
+ ewarn "Simple build failed ... assuming this is desired #324685"
+ return 0
+ fi
+ fi
+
+ pushd "${T}" >/dev/null
+
+ ./glibc-test
+ ret=$?
+ rm -f glibc-test*
+
+ popd >/dev/null
+
+ return ${ret}
+}
+
+eblit-glibc-pkg_setup() {
+ # prevent native builds from downgrading ... maybe update to allow people
+ # to change between diff -r versions ? (2.3.6-r4 -> 2.3.6-r2)
+ if [[ ${MERGE_TYPE} != "buildonly" ]] && \
+ [[ ${ROOT} == "/" ]] && \
+ [[ ${CBUILD} == ${CHOST} ]] && \
+ [[ ${CHOST} == ${CTARGET} ]] ; then
+ if has_version '>'${CATEGORY}/${PF} ; then
+ eerror "Sanity check to keep you from breaking your system:"
+ eerror " Downgrading glibc is not supported and a sure way to destruction"
+# die "aborting to save your system"
+ fi
+
+ if ! glibc_run_test '#include <pwd.h>\nint main(){return getpwuid(0)==0;}\n'
+ then
+ eerror "Your patched vendor kernel is broken. You need to get an"
+ eerror "update from whoever is providing the kernel to you."
+ eerror "http://sourceware.org/bugzilla/show_bug.cgi?id=5227"
+ eerror "http://bugs.gentoo.org/262698"
+ die "keeping your system alive, say thank you"
+ fi
+
+ if ! glibc_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n'
+ then
+ eerror "Your old kernel is broken. You need to update it to"
+ eerror "a newer version as syscall(<bignum>) will break."
+ eerror "http://bugs.gentoo.org/279260"
+ die "keeping your system alive, say thank you"
+ fi
+ fi
+
+ # users have had a chance to phase themselves, time to give em the boot
+ if [[ -e ${EROOT}/etc/locale.gen ]] && [[ -e ${EROOT}/etc/locales.build ]] ; then
+ eerror "You still haven't deleted ${EROOT}/etc/locales.build."
+ eerror "Do so now after making sure ${EROOT}/etc/locale.gen is kosher."
+ die "lazy upgrader detected"
+ fi
+
+ if [[ ${CTARGET} == i386-* ]] ; then
+ eerror "i386 CHOSTs are no longer supported."
+ eerror "Chances are you don't actually want/need i386."
+ eerror "Please read http://www.gentoo.org/doc/en/change-chost.xml"
+ die "please fix your CHOST"
+ fi
+
+ if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
+ ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
+ ewarn "This will result in a 50% performance penalty when running with a 32bit"
+ ewarn "hypervisor, which is probably not what you want."
+ fi
+
+ use hardened && ! gcc-specs-pie && \
+ ewarn "PIE hardening not applied, as your compiler doesn't default to PIE"
+
+ # Make sure host system is up to date #394453
+ if has_version '<sys-libs/glibc-2.13' && \
+ [[ -n $(scanelf -qys__guard -F'#s%F' "${EROOT}"/lib*/l*-*.so) ]]
+ then
+ ebegin "Scanning system for __guard to see if you need to rebuild first ..."
+ local files=$(
+ scanelf -qys__guard -F'#s%F' \
+ "${EROOT}"/*bin/ \
+ "${EROOT}"/lib* \
+ "${EROOT}"/usr/*bin/ \
+ "${EROOT}"/usr/lib* | \
+ egrep -v \
+ -e "^${EROOT}/lib.*/(libc|ld)-2.*.so$" \
+ -e "^${EROOT}/sbin/(ldconfig|sln)$"
+ )
+ [[ -z ${files} ]]
+ if ! eend $? ; then
+ eerror "Your system still has old SSP __guard symbols. You need to"
+ eerror "rebuild all the packages that provide these files first:"
+ eerror "${files}"
+ die "old __guard detected"
+ fi
+ fi
+}
diff --git a/sys-libs/glibc/files/eblits/src_compile.eblit b/sys-libs/glibc/files/eblits/src_compile.eblit
new file mode 100644
index 0000000..7704d83
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/src_compile.eblit
@@ -0,0 +1,24 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_compile.eblit,v 1.45 2014/09/10 18:45:21 vapier Exp $
+
+[[ ${EAPI:-0} == [01] ]] && source "${FILESDIR}/eblits/src_configure.eblit"
+
+toolchain-glibc_src_compile() {
+ local t
+ for t in linuxthreads nptl ; do
+ if want_${t} ; then
+ [[ ${EAPI:-0} == [01] ]] && glibc_do_configure ${t}
+ emake -C "$(builddir ${t})" || die "make ${t} for ${ABI} failed"
+ fi
+ done
+}
+
+eblit-glibc-src_compile() {
+ if just_headers ; then
+ [[ ${EAPI:-0} == [01] ]] && toolchain-glibc_headers_configure
+ return
+ fi
+
+ foreach_abi toolchain-glibc_src_compile
+}
diff --git a/sys-libs/glibc/files/eblits/src_configure.eblit b/sys-libs/glibc/files/eblits/src_configure.eblit
new file mode 100644
index 0000000..5a85488
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/src_configure.eblit
@@ -0,0 +1,252 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_configure.eblit,v 1.3 2014/12/31 08:20:02 vapier Exp $
+
+dump_toolchain_settings() {
+ echo
+
+ einfo "$*"
+
+ local v
+ for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC {AS,C,CPP,CXX,LD}FLAGS ; do
+ einfo " $(printf '%15s' ${v}:) ${!v}"
+ done
+
+ export CC=$(tc-getCC ${CTARGET})
+ # Glibc does not work with gold (for various reasons) #269274.
+ if $(tc-getLD ${CTARGET}) --version | grep -q 'GNU gold' ; then
+ local d="${T}/bfd-linker"
+ mkdir -p "${d}"
+ ln -sf $(which ${CTARGET}-ld.bfd) "${d}"/ld
+ CC+=" -B${d}"
+ fi
+ einfo " $(printf '%15s' 'Manual CC:') ${CC}"
+ echo
+}
+
+glibc_do_configure() {
+ dump_toolchain_settings "Configuring glibc for $1"
+
+ local myconf=()
+
+ # set addons
+ pushd "${S}" > /dev/null
+ local addons=$(echo */configure | sed \
+ -e 's:/configure::g' \
+ -e 's:\(linuxthreads\|nptl\|rtkaio\|glibc-compat\)\( \|$\)::g' \
+ -e 's: \+$::' \
+ -e 's! !,!g' \
+ -e 's!^!,!' \
+ -e '/^,\*$/d')
+ [[ -d ports ]] && addons+=",ports"
+ popd > /dev/null
+
+ myconf+=( $(use_enable hardened stackguard-randomization) )
+ if has_version '<sys-libs/glibc-2.13' ; then
+ myconf+=( --enable-old-ssp-compat )
+ fi
+
+ [[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
+
+ if [[ $1 == "linuxthreads" ]] ; then
+ if want_tls ; then
+ myconf+=( --with-tls )
+
+ if ! want__thread || use glibc-compat20 || [[ ${LT_KER_VER} == 2.[02].* ]] ; then
+ myconf+=( --without-__thread )
+ else
+ myconf+=( --with-__thread )
+ fi
+ else
+ myconf+=( --without-tls --without-__thread )
+ fi
+
+ myconf+=( --disable-sanity-checks )
+ addons="linuxthreads${addons}"
+ myconf+=( --enable-kernel=${LT_KER_VER} )
+ elif [[ $1 == "nptl" ]] ; then
+ # Newer versions require nptl, so there is no addon for it.
+ version_is_at_least 2.20 || addons="nptl${addons}"
+ myconf+=( --enable-kernel=${NPTL_KERN_VER} )
+ else
+ die "invalid pthread option"
+ fi
+ myconf+=( --enable-add-ons="${addons#,}" )
+
+ # Since SELinux support is only required for nscd, only enable it if:
+ # 1. USE selinux
+ # 2. only for the primary ABI on multilib systems
+ # 3. Not a crosscompile
+ if ! is_crosscompile && use selinux ; then
+ if use multilib ; then
+ if is_final_abi ; then
+ myconf+=( --with-selinux )
+ else
+ myconf+=( --without-selinux )
+ fi
+ else
+ myconf+=( --with-selinux )
+ fi
+ else
+ myconf+=( --without-selinux )
+ fi
+
+ # Force a few tests where we always know the answer but
+ # configure is incapable of finding it.
+ if is_crosscompile ; then
+ export \
+ libc_cv_c_cleanup=yes \
+ libc_cv_forced_unwind=yes
+ fi
+
+ myconf+=(
+ --without-cvs
+ --enable-bind-now
+ --build=${CBUILD_OPT:-${CBUILD}}
+ --host=${CTARGET_OPT:-${CTARGET}}
+ $(use_enable profile)
+ $(use_with gd)
+ --with-headers=$(alt_build_headers)
+ --prefix=/usr
+ --libdir=/usr/$(get_libdir)
+ --mandir=/usr/share/man
+ --infodir=/usr/share/info
+ --libexecdir=/usr/$(get_libdir)/misc/glibc
+ --with-bugurl=http://bugs.gentoo.org/
+ --with-pkgversion="$(glibc_banner)"
+ $(use_multiarch || echo --disable-multi-arch)
+ --enable-obsolete-rpc
+ $(in_iuse systemtap && use_enable systemtap)
+ $(in_iuse nscd && use_enable nscd)
+ ${EXTRA_ECONF}
+ )
+
+ # There is no configure option for this and we need to export it
+ # since the glibc build will re-run configure on itself
+ export libc_cv_slibdir=/$(get_libdir)
+
+ # We take care of patching our binutils to use both hash styles,
+ # and many people like to force gnu hash style only, so disable
+ # this overriding check. #347761
+ export libc_cv_hashstyle=no
+
+ # Overtime, generating info pages can be painful. So disable this for
+ # versions older than the latest stable to avoid the issue (this ver
+ # should be updated from time to time). #464394 #465816
+ if ! version_is_at_least 2.17 ; then
+ export ac_cv_prog_MAKEINFO=:
+ fi
+
+ local builddir=$(builddir "$1")
+ mkdir -p "${builddir}"
+ cd "${builddir}"
+ set -- "${S}"/configure "${myconf[@]}"
+ echo "$@"
+ "$@" || die "failed to configure glibc"
+
+ # ia64 static cross-compilers are a pita in so much that they
+ # can't produce static ELFs (as the libgcc.a is broken). so
+ # disable building of the programs for those targets if it
+ # doesn't work.
+ # XXX: We could turn this into a compiler test, but ia64 is
+ # the only one that matters, so this should be fine for now.
+ if is_crosscompile && [[ ${CTARGET} == ia64* ]] ; then
+ sed -i '1i+link-static = touch $@' config.make
+ fi
+
+ # If we're trying to migrate between ABI sets, we need
+ # to lie and use a local copy of gcc. Like if the system
+ # is built with MULTILIB_ABIS="amd64 x86" but we want to
+ # add x32 to it, gcc/glibc don't yet support x32.
+ if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib ; then
+ echo 'main(){}' > "${T}"/test.c
+ if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
+ sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
+ mkdir -p sunrpc
+ cp $(which rpcgen) sunrpc/cross-rpcgen || die
+ touch -t 202001010101 sunrpc/cross-rpcgen || die
+ fi
+ fi
+}
+
+toolchain-glibc_headers_configure() {
+ export ABI=default
+
+ local builddir=$(builddir "headers")
+ mkdir -p "${builddir}"
+ cd "${builddir}"
+
+ # if we don't have a compiler yet, we cant really test it now ...
+ # hopefully they don't affect header geneation, so let's hope for
+ # the best here ...
+ local v vars=(
+ ac_cv_header_cpuid_h=yes
+ libc_cv_{386,390,alpha,arm,hppa,ia64,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
+ libc_cv_asm_cfi_directives=yes
+ libc_cv_broken_visibility_attribute=no
+ libc_cv_c_cleanup=yes
+ libc_cv_forced_unwind=yes
+ libc_cv_gcc___thread=yes
+ libc_cv_mlong_double_128=yes
+ libc_cv_mlong_double_128ibm=yes
+ libc_cv_ppc_machine=yes
+ libc_cv_ppc_rel16=yes
+ libc_cv_predef_{fortify_source,stack_protector}=no
+ libc_cv_visibility_attribute=yes
+ libc_cv_z_combreloc=yes
+ libc_cv_z_execstack=yes
+ libc_cv_z_initfirst=yes
+ libc_cv_z_nodelete=yes
+ libc_cv_z_nodlopen=yes
+ libc_cv_z_relro=yes
+ libc_mips_abi=${ABI}
+ libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
+ )
+ einfo "Forcing cached settings:"
+ for v in "${vars[@]}" ; do
+ einfo " ${v}"
+ export ${v}
+ done
+
+ local ports="" myconf=()
+ myconf+=(
+ --disable-sanity-checks
+ --enable-hacker-mode
+ --without-cvs
+ --enable-bind-now
+ --build=${CBUILD_OPT:-${CBUILD}}
+ --host=${CTARGET_OPT:-${CTARGET}}
+ --with-headers=$(alt_build_headers)
+ --prefix=/usr
+ ${EXTRA_ECONF}
+ )
+
+ local addons
+ [[ -d ${S}/ports ]] && addons+=",ports"
+ # Newer versions require nptl, so there is no addon for it.
+ version_is_at_least 2.20 || addons+=",nptl"
+ myconf+=( --enable-add-ons="${addons#,}" )
+
+ # Nothing is compiled here which would affect the headers for the target.
+ # So forcing CC/CFLAGS is sane.
+ set -- "${S}"/configure "${myconf[@]}"
+ echo "$@"
+ CC="$(tc-getBUILD_CC)" \
+ CFLAGS="-O1 -pipe" \
+ CPPFLAGS="-U_FORTIFY_SOURCE" \
+ LDFLAGS="" \
+ "$@" || die "failed to configure glibc"
+}
+
+toolchain-glibc_src_configure() {
+ if just_headers ; then
+ toolchain-glibc_headers_configure
+ else
+ want_linuxthreads && glibc_do_configure linuxthreads
+ want_nptl && glibc_do_configure nptl
+ fi
+}
+
+eblit-glibc-src_configure() {
+ foreach_abi toolchain-glibc_src_configure
+}
diff --git a/sys-libs/glibc/files/eblits/src_install.eblit b/sys-libs/glibc/files/eblits/src_install.eblit
new file mode 100644
index 0000000..8030d93
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/src_install.eblit
@@ -0,0 +1,244 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_install.eblit,v 1.38 2014/09/10 18:15:55 vapier Exp $
+
+toolchain-glibc_src_install() {
+ local builddir=$(builddir $(want_linuxthreads && echo linuxthreads || echo nptl))
+ cd "${builddir}"
+
+ emake install_root="${D}$(alt_prefix)" install || die
+
+ if want_linuxthreads && want_nptl ; then
+ einfo "Installing NPTL to $(alt_libdir)/tls/..."
+ cd "$(builddir nptl)"
+ dodir $(alt_libdir)/tls $(alt_usrlibdir)/nptl
+
+ local l src_lib
+ for l in libc libm librt libpthread libthread_db ; do
+ # take care of shared lib first ...
+ l=${l}.so
+ if [[ -e ${l} ]] ; then
+ src_lib=${l}
+ else
+ src_lib=$(eval echo */${l})
+ fi
+ cp -a ${src_lib} "${ED}"$(alt_libdir)/tls/${l} || die "copying nptl ${l}"
+ fperms a+rx $(alt_libdir)/tls/${l}
+ dosym ${l} $(alt_libdir)/tls/$(scanelf -qSF'%S#F' ${src_lib})
+
+ # then grab the linker script or the symlink ...
+ if [[ -L ${ED}$(alt_usrlibdir)/${l} ]] ; then
+ dosym $(alt_libdir)/tls/${l} $(alt_usrlibdir)/nptl/${l}
+ else
+ sed \
+ -e "s:/${l}:/tls/${l}:g" \
+ -e "s:/${l/%.so/_nonshared.a}:/nptl/${l/%.so/_nonshared.a}:g" \
+ "${ED}"$(alt_usrlibdir)/${l} > "${ED}"$(alt_usrlibdir)/nptl/${l}
+ fi
+
+ # then grab the static lib ...
+ src_lib=${src_lib/%.so/.a}
+ [[ ! -e ${src_lib} ]] && src_lib=${src_lib/%.a/_pic.a}
+ cp -a ${src_lib} "${ED}"$(alt_usrlibdir)/nptl/ || die "copying nptl ${src_lib}"
+ src_lib=${src_lib/%.a/_nonshared.a}
+ if [[ -e ${src_lib} ]] ; then
+ cp -a ${src_lib} "${ED}"$(alt_usrlibdir)/nptl/ || die "copying nptl ${src_lib}"
+ fi
+ done
+
+ # use the nptl linker instead of the linuxthreads one as the linuxthreads
+ # one may lack TLS support and that can be really bad for business
+ cp -a elf/ld.so "${ED}"$(alt_libdir)/$(scanelf -qSF'%S#F' elf/ld.so) || die "copying nptl interp"
+ fi
+
+ # We'll take care of the cache ourselves
+ rm -f "${ED}"/etc/ld.so.cache
+
+ # Everything past this point just needs to be done once ...
+ is_final_abi || return 0
+
+ # Make sure the non-native interp can be found on multilib systems even
+ # if the main library set isn't installed into the right place. Maybe
+ # we should query the active gcc for info instead of hardcoding it ?
+ local i ldso_abi ldso_name
+ local ldso_abi_list=(
+ # x86
+ amd64 /lib64/ld-linux-x86-64.so.2
+ x32 /libx32/ld-linux-x32.so.2
+ x86 /lib/ld-linux.so.2
+ # mips
+ o32 /lib/ld.so.1
+ n32 /lib32/ld.so.1
+ n64 /lib64/ld.so.1
+ # powerpc
+ ppc /lib/ld.so.1
+ ppc64 /lib64/ld64.so.1
+ # s390
+ s390 /lib/ld.so.1
+ s390x /lib/ld64.so.1
+ # sparc
+ sparc32 /lib/ld-linux.so.2
+ sparc64 /lib64/ld-linux.so.2
+ )
+ case $(tc-endian) in
+ little)
+ ldso_abi_list+=(
+ # arm
+ arm64 /lib/ld-linux-aarch64.so.1
+ )
+ ;;
+ big)
+ ldso_abi_list+=(
+ # arm
+ arm64 /lib/ld-linux-aarch64_be.so.1
+ )
+ ;;
+ esac
+ if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
+ dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
+ fi
+ for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
+ ldso_abi=${ldso_abi_list[i]}
+ has ${ldso_abi} $(get_install_abis) || continue
+
+ ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
+ if [[ ! -L ${D}/${ldso_name} && ! -e ${D}/${ldso_name} ]] ; then
+ dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
+ fi
+ done
+
+ # With devpts under Linux mounted properly, we do not need the pt_chown
+ # binary to be setuid. This is because the default owners/perms will be
+ # exactly what we want.
+ if in_iuse suid && ! use suid ; then
+ find "${D}" -name pt_chown -exec chmod -s {} +
+ fi
+
+ #################################################################
+ # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
+ # Make sure we install some symlink hacks so that when we build
+ # a 2nd stage cross-compiler, gcc finds the target system
+ # headers correctly. See gcc/doc/gccinstall.info
+ if is_crosscompile ; then
+ # We need to make sure that /lib and /usr/lib always exists.
+ # gcc likes to use relative paths to get to its multilibs like
+ # /usr/lib/../lib64/. So while we don't install any files into
+ # /usr/lib/, we do need it to exist.
+ cd "${ED}"$(alt_libdir)/..
+ [[ -e lib ]] || mkdir lib
+ cd "${ED}"$(alt_usrlibdir)/..
+ [[ -e lib ]] || mkdir lib
+
+ dosym usr/include $(alt_prefix)/sys-include
+ return 0
+ fi
+
+ # Files for Debian-style locale updating
+ dodir /usr/share/i18n
+ sed \
+ -e "/^#/d" \
+ -e "/SUPPORTED-LOCALES=/d" \
+ -e "s: \\\\::g" -e "s:/: :g" \
+ "${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
+ || die "generating /usr/share/i18n/SUPPORTED failed"
+ cd "${WORKDIR}"/extra/locale
+ dosbin locale-gen || die
+ doman *.[0-8]
+ insinto /etc
+ doins locale.gen || die
+
+ # Make sure all the ABI's can find the locales and so we only
+ # have to generate one set
+ local a
+ keepdir /usr/$(get_libdir)/locale
+ for a in $(get_install_abis) ; do
+ if [[ ! -e ${ED}/usr/$(get_abi_LIBDIR ${a})/locale ]] ; then
+ dosym /usr/$(get_libdir)/locale /usr/$(get_abi_LIBDIR ${a})/locale
+ fi
+ done
+
+ cd "${S}"
+
+ # Install misc network config files
+ insinto /etc
+ doins nscd/nscd.conf posix/gai.conf nss/nsswitch.conf || die
+ doins "${WORKDIR}"/extra/etc/*.conf || die
+
+ if ! in_iuse nscd || use nscd ; then
+ doinitd "${WORKDIR}"/extra/etc/nscd || die
+
+ local nscd_args=(
+ -e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
+ )
+ version_is_at_least 2.16 || nscd_args+=( -e 's: --foreground : :' )
+ sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
+
+ # Newer versions of glibc include the nscd.service themselves.
+ # TODO: Drop the $FILESDIR copy once 2.19 goes stable.
+ if version_is_at_least 2.19 ; then
+ systemd_dounit nscd/nscd.service || die
+ systemd_newtmpfilesd nscd/nscd.tmpfiles nscd.conf || die
+ else
+ systemd_dounit "${FILESDIR}"/nscd.service || die
+ systemd_newtmpfilesd "${FILESDIR}"/nscd.tmpfilesd nscd.conf || die
+ fi
+ else
+ # Do this since extra/etc/*.conf above might have nscd.conf.
+ rm -f "${ED}"/etc/nscd.conf
+ fi
+
+ echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
+ doenvd "${T}"/00glibc || die
+
+ for d in BUGS ChangeLog* CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
+ [[ -s ${d} ]] && dodoc ${d}
+ done
+
+ # Prevent overwriting of the /etc/localtime symlink. We'll handle the
+ # creation of the "factory" symlink in pkg_postinst().
+ rm -f "${ED}"/etc/localtime
+}
+
+toolchain-glibc_headers_install() {
+ local builddir=$(builddir "headers")
+ cd "${builddir}"
+ emake install_root="${D}$(alt_prefix)" install-headers || die
+ if ! version_is_at_least 2.16 ; then
+ insinto $(alt_headers)/bits
+ doins bits/stdio_lim.h || die
+ fi
+ insinto $(alt_headers)/gnu
+ doins "${S}"/include/gnu/stubs.h || die "doins include gnu"
+ # Make sure we install the sys-include symlink so that when
+ # we build a 2nd stage cross-compiler, gcc finds the target
+ # system headers correctly. See gcc/doc/gccinstall.info
+ dosym usr/include /usr/${CTARGET}/sys-include
+}
+
+src_strip() {
+ # gdb is lame and requires some debugging information to remain in
+ # libpthread, so we need to strip it by hand. libthread_db makes no
+ # sense stripped as it is only used when debugging.
+ local pthread=$(has splitdebug ${FEATURES} && echo "libthread_db" || echo "lib{pthread,thread_db}")
+ env \
+ -uRESTRICT \
+ CHOST=${CTARGET} \
+ STRIP_MASK="/*/{,tls/}${pthread}*" \
+ prepallstrip
+ # if user has stripping enabled and does not have split debug turned on,
+ # then leave the debugging sections in libpthread.
+ if ! has nostrip ${FEATURES} && ! has splitdebug ${FEATURES} ; then
+ ${STRIP:-${CTARGET}-strip} --strip-debug "${ED}"/*/libpthread-*.so
+ fi
+}
+
+eblit-glibc-src_install() {
+ if just_headers ; then
+ export ABI=default
+ toolchain-glibc_headers_install
+ return
+ fi
+
+ foreach_abi toolchain-glibc_src_install
+ src_strip
+}
diff --git a/sys-libs/glibc/files/eblits/src_prepare.eblit b/sys-libs/glibc/files/eblits/src_prepare.eblit
new file mode 100644
index 0000000..dc57fae
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/src_prepare.eblit
@@ -0,0 +1,63 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_prepare.eblit,v 1.1 2014/09/10 05:59:03 vapier Exp $
+
+eblit-glibc-src_prepare() {
+ # XXX: We should do the branchupdate, before extracting the manpages and
+ # infopages else it does not help much (mtimes change if there is a change
+ # to them with branchupdate)
+ if [[ -n ${BRANCH_UPDATE} ]] ; then
+ epatch "${DISTDIR}"/glibc-${RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2
+
+ # Snapshot date patch
+ einfo "Patching version to display snapshot date ..."
+ sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h
+ fi
+
+ # tag, glibc is it
+ if ! version_is_at_least 2.17 ; then
+ [[ -e csu/Banner ]] && die "need new banner location"
+ glibc_banner > csu/Banner
+ fi
+ if [[ -n ${PATCH_VER} ]] && ! use vanilla ; then
+ EPATCH_MULTI_MSG="Applying Gentoo Glibc Patchset ${RELEASE_VER}-${PATCH_VER} ..." \
+ EPATCH_EXCLUDE=${GLIBC_PATCH_EXCLUDE} \
+ EPATCH_SUFFIX="patch" \
+ ARCH=$(tc-arch) \
+ epatch "${WORKDIR}"/patches
+ fi
+
+ if just_headers ; then
+ if [[ -e ports/sysdeps/mips/preconfigure ]] ; then
+ # mips peeps like to screw with us. if building headers,
+ # we don't have a real compiler, so we can't let them
+ # insert -mabi on us.
+ sed -i '/CPPFLAGS=.*-mabi/s|.*|:|' ports/sysdeps/mips/preconfigure || die
+ find ports/sysdeps/mips/ -name Makefile -exec sed -i '/^CC.*-mabi=/s:-mabi=.*:-D_MIPS_SZPTR=32:' {} +
+ fi
+ fi
+
+ epatch_user
+
+ gnuconfig_update
+
+ # Glibc is stupid sometimes, and doesn't realize that with a
+ # static C-Only gcc, -lgcc_eh doesn't exist.
+ # http://sourceware.org/ml/libc-alpha/2003-09/msg00100.html
+ # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html
+ # But! Finally fixed in recent versions:
+ # http://sourceware.org/ml/libc-alpha/2012-05/msg01865.html
+ if ! version_is_at_least 2.16 ; then
+ echo 'int main(){}' > "${T}"/gcc_eh_test.c
+ if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then
+ sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh"
+ fi
+ fi
+
+ cd "${WORKDIR}"
+ find . -type f '(' -size 0 -o -name "*.orig" ')' -delete
+ find . -name configure -exec touch {} +
+
+ # Fix permissions on some of the scripts.
+ chmod u+x "${S}"/scripts/*.sh
+}
diff --git a/sys-libs/glibc/files/eblits/src_test.eblit b/sys-libs/glibc/files/eblits/src_test.eblit
new file mode 100644
index 0000000..210cca3
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/src_test.eblit
@@ -0,0 +1,30 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_test.eblit,v 1.9 2014/09/17 22:53:43 vapier Exp $
+
+glibc_src_test() {
+ cd "$(builddir $1)"
+ nonfatal emake -j1 check && return 0
+ einfo "make check failed - re-running with --keep-going to get the rest of the results"
+ nonfatal emake -j1 -k check
+ ewarn "make check failed for ${ABI}-${CTARGET}-$1"
+ return 1
+}
+
+toolchain-glibc_src_test() {
+ local ret=0 t
+ for t in linuxthreads nptl ; do
+ if want_${t} ; then
+ glibc_src_test ${t}
+ : $(( ret |= $? ))
+ fi
+ done
+ return ${ret}
+}
+
+eblit-glibc-src_test() {
+ # Give tests more time to complete.
+ export TIMEOUTFACTOR=5
+
+ foreach_abi toolchain-glibc_src_test || die "tests failed"
+}
diff --git a/sys-libs/glibc/files/eblits/src_unpack.eblit b/sys-libs/glibc/files/eblits/src_unpack.eblit
new file mode 100644
index 0000000..94f33b5
--- /dev/null
+++ b/sys-libs/glibc/files/eblits/src_unpack.eblit
@@ -0,0 +1,121 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/eblits/src_unpack.eblit,v 1.27 2014/09/10 05:59:03 vapier Exp $
+
+[[ ${EAPI:-0} == [01] ]] && source "${FILESDIR}/eblits/src_prepare.eblit"
+
+int_to_KV() {
+ local version=$1 major minor micro
+ major=$((version / 65536))
+ minor=$(((version % 65536) / 256))
+ micro=$((version % 256))
+ echo ${major}.${minor}.${micro}
+}
+
+eend_KV() {
+ [[ $(KV_to_int $1) -ge $(KV_to_int $2) ]]
+ eend $?
+}
+
+get_kheader_version() {
+ printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
+ $(tc-getCPP ${CTARGET}) -I "${EPREFIX}/$(alt_build_headers)" - | \
+ tail -n 1
+}
+
+check_nptl_support() {
+ # don't care about the compiler here as we arent using it
+ just_headers && return
+
+ local run_kv build_kv want_kv
+ run_kv=$(int_to_KV $(get_KV))
+ build_kv=$(int_to_KV $(get_kheader_version))
+ want_kv=${NPTL_KERN_VER}
+
+ ebegin "Checking gcc for __thread support"
+ if ! eend $(want__thread ; echo $?) ; then
+ echo
+ eerror "Could not find a gcc that supports the __thread directive!"
+ eerror "Please update your binutils/gcc and try again."
+ die "No __thread support in gcc!"
+ fi
+
+ if ! is_crosscompile && ! tc-is-cross-compiler ; then
+ # Building fails on an non-supporting kernel
+ ebegin "Checking kernel version (${run_kv} >= ${want_kv})"
+ if ! eend_KV ${run_kv} ${want_kv} ; then
+ echo
+ eerror "You need a kernel of at least ${want_kv} for NPTL support!"
+ die "Kernel version too low!"
+ fi
+ fi
+
+ ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
+ if ! eend_KV ${build_kv} ${want_kv} ; then
+ echo
+ eerror "You need linux-headers of at least ${want_kv} for NPTL support!"
+ die "linux-headers version too low!"
+ fi
+}
+
+unpack_pkg() {
+ local a=${PN}
+ [[ -n ${SNAP_VER} ]] && a="${a}-${RELEASE_VER}"
+ [[ -n $1 ]] && a="${a}-$1"
+ if [[ -n ${SNAP_VER} ]] ; then
+ a="${a}-${SNAP_VER}"
+ else
+ if [[ -n $2 ]] ; then
+ a="${a}-$2"
+ else
+ a="${a}-${RELEASE_VER}"
+ fi
+ fi
+ if has ${a}.tar.xz ${A} ; then
+ unpacker ${a}.tar.xz
+ else
+ unpack ${a}.tar.bz2
+ fi
+ [[ -n $1 ]] && { mv ${a} $1 || die ; }
+}
+
+toolchain-glibc_src_unpack() {
+ # Check NPTL support _before_ we unpack things to save some time
+ want_nptl && check_nptl_support
+
+ if [[ -n ${EGIT_REPO_URIS} ]] ; then
+ local i d
+ for ((i=0; i<${#EGIT_REPO_URIS[@]}; ++i)) ; do
+ EGIT_REPO_URI=${EGIT_REPO_URIS[$i]}
+ EGIT_SOURCEDIR=${EGIT_SOURCEDIRS[$i]}
+ git-2_src_unpack
+ done
+ else
+ unpack_pkg
+ fi
+
+ cd "${S}"
+ touch locale/C-translit.h #185476 #218003
+ [[ -n ${LT_VER} ]] && unpack_pkg linuxthreads ${LT_VER}
+ [[ -n ${PORTS_VER} ]] && unpack_pkg ports ${PORTS_VER}
+ [[ -n ${LIBIDN_VER} ]] && unpack_pkg libidn
+
+ if [[ -n ${PATCH_VER} ]] ; then
+ cd "${WORKDIR}"
+ unpack glibc-${RELEASE_VER}-patches-${PATCH_VER}.tar.bz2
+ # pull out all the addons
+ local d
+ for d in extra/*/configure ; do
+ d=${d%/configure}
+ [[ -d ${S}/${d} ]] && die "${d} already exists in \${S}"
+ mv "${d}" "${S}" || die "moving ${d} failed"
+ done
+ fi
+}
+
+eblit-glibc-src_unpack() {
+ setup_env
+
+ toolchain-glibc_src_unpack
+ [[ ${EAPI:-0} == [01] ]] && cd "${S}" && eblit-glibc-src_prepare
+}
diff --git a/sys-libs/glibc/files/nscd b/sys-libs/glibc/files/nscd
new file mode 100755
index 0000000..b102de0
--- /dev/null
+++ b/sys-libs/glibc/files/nscd
@@ -0,0 +1,64 @@
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/nscd,v 1.7 2007/02/23 12:09:39 uberlord Exp $
+
+depend() {
+ use dns ldap net slapd
+}
+
+checkconfig() {
+ if [ ! -d /var/run/nscd ] ; then
+ mkdir -p /var/run/nscd
+ chmod 755 /var/run/nscd
+ fi
+ if [ -z "${NSCD_PERMS_OK}" ] && [ "$(stat -c %a /var/run/nscd)" != "755" ] ; then
+ echo ""
+ ewarn "nscd run dir is not world readable, you should reset the perms:"
+ ewarn "chmod 755 /var/run/nscd"
+ ewarn "chmod a+rw /var/run/nscd/socket"
+ echo ""
+ ewarn "To disable this warning, set 'NSCD_PERMS_OK' in /etc/conf.d/nscd"
+ echo ""
+ fi
+}
+
+start() {
+ checkconfig
+
+ ebegin "Starting Name Service Cache Daemon"
+ local secure=`while read curline ; do
+ table=${curline%:*}
+ entries=${curline##$table:}
+ table=${table%%[^a-z]*}
+ case $table in
+ passwd*|group*|hosts)
+ for entry in $entries ; do
+ case $entry in
+ nisplus*)
+ /usr/sbin/nscd_nischeck $table || \
+ /echo "-S $table,yes"
+ ;;
+ esac
+ done
+ ;;
+ esac
+ done < /etc/nsswitch.conf`
+ local pidfile="$(strings /usr/sbin/nscd | grep nscd.pid)"
+ mkdir -p "$(dirname ${pidfile})"
+ save_options pidfile "${pidfile}"
+ start-stop-daemon --start --quiet \
+ --exec /usr/sbin/nscd --pidfile "${pidfile}" \
+ -- $secure
+ eend $?
+}
+
+stop() {
+ local pidfile="$(get_options pidfile)"
+ [ -n "${pidfile}" ] && pidfile="--pidfile ${pidfile}"
+ ebegin "Shutting down Name Service Cache Daemon"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/nscd ${pidfile}
+ eend $?
+}
+
+# vim:ts=4
diff --git a/sys-libs/glibc/files/nscd.service b/sys-libs/glibc/files/nscd.service
new file mode 100644
index 0000000..25a3b1d
--- /dev/null
+++ b/sys-libs/glibc/files/nscd.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Name Service Cache Daemon
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/nscd -F
+ExecStop=/usr/sbin/nscd --shutdown
+ExecReload=/usr/sbin/nscd -i passwd
+ExecReload=/usr/sbin/nscd -i group
+ExecReload=/usr/sbin/nscd -i hosts
+ExecReload=/usr/sbin/nscd -i services
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sys-libs/glibc/files/nscd.tmpfilesd b/sys-libs/glibc/files/nscd.tmpfilesd
new file mode 100644
index 0000000..52edbba
--- /dev/null
+++ b/sys-libs/glibc/files/nscd.tmpfilesd
@@ -0,0 +1,4 @@
+# Configuration to create /run/nscd directory
+# Used as part of systemd's tmpfiles
+
+d /run/nscd 0755 root root
diff --git a/sys-libs/glibc/files/nsswitch.conf b/sys-libs/glibc/files/nsswitch.conf
new file mode 100644
index 0000000..eb16961
--- /dev/null
+++ b/sys-libs/glibc/files/nsswitch.conf
@@ -0,0 +1,24 @@
+# /etc/nsswitch.conf:
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/nsswitch.conf,v 1.1 2005/05/17 00:52:41 vapier Exp $
+
+passwd: compat
+shadow: compat
+group: compat
+
+# passwd: db files nis
+# shadow: db files nis
+# group: db files nis
+
+hosts: files dns
+networks: files dns
+
+services: db files
+protocols: db files
+rpc: db files
+ethers: db files
+netmasks: files
+netgroup: files
+bootparams: files
+
+automount: files
+aliases: files
diff --git a/sys-libs/glibc/glibc-2.16.0-r1.ebuild b/sys-libs/glibc/glibc-2.16.0-r1.ebuild
new file mode 100644
index 0000000..f070bd6
--- /dev/null
+++ b/sys-libs/glibc/glibc-2.16.0-r1.ebuild
@@ -0,0 +1,228 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.16.0.ebuild,v 1.34 2014/03/14 09:11:35 vapier Exp $
+
+inherit eutils versionator toolchain-funcs flag-o-matic gnuconfig multilib systemd unpacker multiprocessing
+
+DESCRIPTION="GNU libc6 (also called glibc2) C library"
+HOMEPAGE="http://www.gnu.org/software/libc/libc.html"
+
+LICENSE="LGPL-2.1+ BSD HPND inner-net"
+KEYWORDS="~alpha amd64 arm -hppa ia64 ~mips ppc ppc64 ~s390 ~sh ~sparc x86"
+RESTRICT="strip" # strip ourself #46186
+EMULTILIB_PKG="true"
+
+# Configuration variables
+RELEASE_VER=""
+BRANCH_UPDATE=""
+SNAP_VER=""
+case ${PV} in
+9999*)
+ EGIT_REPO_URIS=( "git://sourceware.org/git/glibc.git" "git://sourceware.org/git/glibc-ports.git" )
+ EGIT_SOURCEDIRS=( "${S}" "${S}/ports" )
+ inherit git-2
+ ;;
+*_p*)
+ RELEASE_VER=${PV%_p*}
+ SNAP_VER=${PV#*_p}
+ ;;
+*)
+ RELEASE_VER=${PV}
+ ;;
+esac
+LIBIDN_VER="" # it's integrated into the main tarball now
+PATCH_VER="12" # Gentoo patchset
+PORTS_VER=${RELEASE_VER} # version of glibc ports addon
+NPTL_KERN_VER=${NPTL_KERN_VER:-"2.6.16"} # min kernel version nptl requires
+
+IUSE="debug gd hardened multilib selinux suid systemtap profile vanilla crosscompile_opts_headers-only"
+[[ -n ${RELEASE_VER} ]] && S=${WORKDIR}/glibc-${RELEASE_VER}${SNAP_VER:+-${SNAP_VER}}
+
+# Here's how the cross-compile logic breaks down ...
+# CTARGET - machine that will target the binaries
+# CHOST - machine that will host the binaries
+# CBUILD - machine that will build the binaries
+# If CTARGET != CHOST, it means you want a libc for cross-compiling.
+# If CHOST != CBUILD, it means you want to cross-compile the libc.
+# CBUILD = CHOST = CTARGET - native build/install
+# CBUILD != (CHOST = CTARGET) - cross-compile a native build
+# (CBUILD = CHOST) != CTARGET - libc for cross-compiler
+# CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler
+# For install paths:
+# CHOST = CTARGET - install into /
+# CHOST != CTARGET - install into /usr/CTARGET/
+
+export CBUILD=${CBUILD:-${CHOST}}
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+ if [[ ${CATEGORY} == cross-* ]] ; then
+ export CTARGET=${CATEGORY#cross-}
+ fi
+fi
+
+[[ ${CTARGET} == hppa* ]] && NPTL_KERN_VER=${NPTL_KERN_VER/2.6.16/2.6.20}
+
+is_crosscompile() {
+ [[ ${CHOST} != ${CTARGET} ]]
+}
+
+# Why SLOT 2.2 you ask yourself while sippin your tea ?
+# Everyone knows 2.2 > 0, duh.
+SLOT="2.2"
+
+# General: We need a new-enough binutils/gcc to match upstream baseline.
+# arch: we need to make sure our binutils/gcc supports TLS.
+DEPEND=">=app-misc/pax-utils-0.1.10
+ !<sys-apps/sandbox-1.6
+ !<sys-apps/portage-2.1.2
+ selinux? ( sys-libs/libselinux )"
+RDEPEND="!sys-kernel/ps3-sources
+ selinux? ( sys-libs/libselinux )
+ !sys-libs/nss-db"
+
+if [[ ${CATEGORY} == cross-* ]] ; then
+ DEPEND+=" !crosscompile_opts_headers-only? (
+ >=${CATEGORY}/binutils-2.20
+ >=${CATEGORY}/gcc-4.3
+ )"
+ [[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
+else
+ DEPEND+="
+ >=sys-devel/binutils-2.20
+ >=sys-devel/gcc-4.3
+ virtual/os-headers
+ !vanilla? ( >=sys-libs/timezone-data-2012c )"
+ RDEPEND+="
+ vanilla? ( !sys-libs/timezone-data )
+ !vanilla? ( sys-libs/timezone-data )"
+fi
+
+SRC_URI=$(
+ upstream_uris() {
+ echo mirror://gnu/glibc/$1 ftp://sourceware.org/pub/glibc/{releases,snapshots}/$1 mirror://gentoo/$1
+ }
+ gentoo_uris() {
+ local devspace="HTTP~vapier/dist/URI HTTP~azarah/glibc/URI"
+ devspace=${devspace//HTTP/http://dev.gentoo.org/}
+ echo mirror://gentoo/$1 ${devspace//URI/$1}
+ }
+
+ TARNAME=${PN}
+ if [[ -n ${SNAP_VER} ]] ; then
+ TARNAME="${PN}-${RELEASE_VER}"
+ [[ -n ${PORTS_VER} ]] && PORTS_VER=${SNAP_VER}
+ upstream_uris ${TARNAME}-${SNAP_VER}.tar.bz2
+ elif [[ -z ${EGIT_REPO_URIS} ]] ; then
+ upstream_uris ${TARNAME}-${RELEASE_VER}.tar.xz
+ fi
+ [[ -n ${LIBIDN_VER} ]] && upstream_uris glibc-libidn-${LIBIDN_VER}.tar.bz2
+ [[ -n ${PORTS_VER} ]] && upstream_uris ${TARNAME}-ports-${PORTS_VER}.tar.xz
+ [[ -n ${BRANCH_UPDATE} ]] && gentoo_uris glibc-${RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2
+ [[ -n ${PATCH_VER} ]] && gentoo_uris glibc-${RELEASE_VER}-patches-${PATCH_VER}.tar.bz2
+)
+
+# eblit-include [--skip] <function> [version]
+eblit-include() {
+ local skipable=false
+ [[ $1 == "--skip" ]] && skipable=true && shift
+ [[ $1 == pkg_* ]] && skipable=true
+
+ local e v func=$1 ver=$2
+ [[ -z ${func} ]] && die "Usage: eblit-include <function> [version]"
+ for v in ${ver:+-}${ver} -${PVR} -${PV} "" ; do
+ e="${FILESDIR}/eblits/${func}${v}.eblit"
+ if [[ -e ${e} ]] ; then
+ source "${e}"
+ return 0
+ fi
+ done
+ ${skipable} && return 0
+ die "Could not locate requested eblit '${func}' in ${FILESDIR}/eblits/"
+}
+
+# eblit-run-maybe <function>
+# run the specified function if it is defined
+eblit-run-maybe() {
+ [[ $(type -t "$@") == "function" ]] && "$@"
+}
+
+# eblit-run <function> [version]
+# aka: src_unpack() { eblit-run src_unpack ; }
+eblit-run() {
+ eblit-include --skip common "${*:2}"
+ eblit-include "$@"
+ eblit-run-maybe eblit-$1-pre
+ eblit-${PN}-$1
+ eblit-run-maybe eblit-$1-post
+}
+
+src_unpack() { eblit-run src_unpack ; }
+src_compile() { eblit-run src_compile ; }
+src_test() { eblit-run src_test ; }
+src_install() { eblit-run src_install ; }
+
+# FILESDIR might not be available during binpkg install
+for x in setup {pre,post}inst ; do
+ e="${FILESDIR}/eblits/pkg_${x}.eblit"
+ if [[ -e ${e} ]] ; then
+ . "${e}"
+ eval "pkg_${x}() { eblit-run pkg_${x} ; }"
+ fi
+done
+
+eblit-src_unpack-post() {
+#SDS
+ cd "${S}"
+ epatch "${FILESDIR}"/2.16/glibc-rh1183535.patch || die
+#EDS
+
+ if use hardened ; then
+ cd "${S}"
+ einfo "Patching to get working PIE binaries on PIE (hardened) platforms"
+ gcc-specs-pie && epatch "${FILESDIR}"/2.16/glibc-2.16-hardened-pie.patch
+ epatch "${FILESDIR}"/2.10/glibc-2.10-hardened-configure-picdefault.patch
+ epatch "${FILESDIR}"/2.10/glibc-2.10-hardened-inittls-nosysenter.patch
+
+ einfo "Installing Hardened Gentoo SSP and FORTIFY_SOURCE handler"
+ cp -f "${FILESDIR}"/2.6/glibc-2.6-gentoo-stack_chk_fail.c \
+ debug/stack_chk_fail.c || die
+ cp -f "${FILESDIR}"/2.10/glibc-2.10-gentoo-chk_fail.c \
+ debug/chk_fail.c || die
+
+ if use debug ; then
+ # When using Hardened Gentoo stack handler, have smashes dump core for
+ # analysis - debug only, as core could be an information leak
+ # (paranoia).
+ sed -i \
+ -e '/^CFLAGS-backtrace.c/ iCFLAGS-stack_chk_fail.c = -DSSP_SMASH_DUMPS_CORE' \
+ debug/Makefile \
+ || die "Failed to modify debug/Makefile for debug stack handler"
+ sed -i \
+ -e '/^CFLAGS-backtrace.c/ iCFLAGS-chk_fail.c = -DSSP_SMASH_DUMPS_CORE' \
+ debug/Makefile \
+ || die "Failed to modify debug/Makefile for debug fortify handler"
+ fi
+
+ # Build nscd with ssp-all
+ sed -i \
+ -e 's:-fstack-protector$:-fstack-protector-all:' \
+ nscd/Makefile \
+ || die "Failed to ensure nscd builds with ssp-all"
+ fi
+}
+
+eblit-pkg_preinst-post() {
+ if [[ ${CTARGET} == arm* ]] ; then
+ # Backwards compat support for renaming hardfp ldsos #417287
+ local oldso='/lib/ld-linux.so.3'
+ local nldso='/lib/ld-linux-armhf.so.3'
+ if [[ -e ${D}${nldso} ]] ; then
+ if scanelf -qRyi "${ROOT}$(alt_prefix)"/*bin/ | grep -s "^${oldso}" ; then
+ ewarn "Symlinking old ldso (${oldso}) to new ldso (${nldso})."
+ ewarn "Please rebuild all packages using this old ldso as compat"
+ ewarn "support will be dropped in the future."
+ ln -s "${nldso##*/}" "${D}$(alt_prefix)${oldso}"
+ fi
+ fi
+ fi
+}
diff --git a/www-apps/loggerhead/Manifest b/www-apps/loggerhead/Manifest
new file mode 100644
index 0000000..f5a0796
--- /dev/null
+++ b/www-apps/loggerhead/Manifest
@@ -0,0 +1,4 @@
+AUX loggerhead.confd 70 BLAKE2B 9ad36fe68d6caabcdac1701fbaf5109a0b0a8f4b91110e55346642e3c399bfe6ac0b53046d12f0b8764becab19d878a00a3aaa3e9dfc7892bcf8361b23efbd20 SHA512 22a3d6558f7096174f8ab457176e49c3fbe53ea194e2e7f2ef21dcd025fbab2da9f28a0ee1ee1670acdbb44bbd34ff632b8d3df5d68de1259da90b14496a736d
+AUX loggerhead.init 556 BLAKE2B ed56b385df8be33f268dda92eae3c55d6259dda8c20a1bc44f7e330173b8062318e364507eba585104fcf24194176e1ed803f6a8a126aa78a30b22be485c7034 SHA512 a5f7307c58773201427c343f286d4e825e3f3815097f0d9840dfed1493b910930b57bd125c4c9d3cfba6f126d979eaac30b29460b7748801362272b3618e2b5a
+DIST loggerhead-1.18.1.tar.gz 695475 BLAKE2B d423de99558647363129adf7736a652e1f5f4796033f4bad90e9d28a426a2d29f8cf979f3c337ed49246fd94d2c58a66f2d261cb9e3730a2676a04551e170f0a SHA512 d265b3470bd744266ae8ee4c90a749b875b528f88924bae28f03417cbe460b82ea8649b00371b50dad679be386d56063f02a78b0f73466edb04aa75612df79e4
+EBUILD loggerhead-1.18.1.ebuild 836 BLAKE2B 1c7cafbd86358f00a284fae180509f80e22a5d92fdabfb633d3a538751fe09068b97ad670f76ba1dc7ab137acae9cb9eb8071eda9cbb27f1a606f20799da552d SHA512 dde59180184d10f047e54b36a1401f4fd62a4f3383c04f6a936da2085cc3281173b554ce9750f6d2a25e67820143ac85ba5b316f61737212b0cbe7c271e32e9a
diff --git a/www-apps/loggerhead/files/loggerhead.confd b/www-apps/loggerhead/files/loggerhead.confd
new file mode 100644
index 0000000..9665bf3
--- /dev/null
+++ b/www-apps/loggerhead/files/loggerhead.confd
@@ -0,0 +1,3 @@
+
+# Additional options for Loggerhead start
+LOGGERHEAD_OPTS="/var/bzr"
diff --git a/www-apps/loggerhead/files/loggerhead.init b/www-apps/loggerhead/files/loggerhead.init
new file mode 100644
index 0000000..2eceefd
--- /dev/null
+++ b/www-apps/loggerhead/files/loggerhead.init
@@ -0,0 +1,27 @@
+#!/sbin/runscript
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+PIDFILE=/var/run/loggerhead.pid
+LOGDIR=/var/log/loggerhead
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting loggerhead"
+ start-stop-daemon --start --quiet --background \
+ --make-pidfile --pidfile ${PIDFILE} \
+ --exec /usr/bin/serve-branches -- --log-folder=${LOGDIR} \
+ ${LOGGERHEAD_OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping loggerhead"
+ start-stop-daemon --stop --quiet \
+ --pidfile ${PIDFILE}
+ eend $?
+}
diff --git a/www-apps/loggerhead/loggerhead-1.18.1.ebuild b/www-apps/loggerhead/loggerhead-1.18.1.ebuild
new file mode 100644
index 0000000..33c34a3
--- /dev/null
+++ b/www-apps/loggerhead/loggerhead-1.18.1.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 versionator
+
+PV_BASE=$(get_version_component_range 1-2)
+
+DESCRIPTION="A web viewer for projects in Bazaar"
+HOMEPAGE="https://launchpad.net/loggerhead"
+SRC_URI="http://launchpad.net/${PN}/${PV_BASE}/${PV}/+download/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 amd64"
+IUSE="apache2 search"
+
+DEPEND=">=dev-python/paste-1.6
+ apache2? ( >=dev-python/pastedeploy-1.3 )"
+RDEPEND="${DEPEND}
+ >=dev-vcs/bzr-1.13
+ dev-python/simpletal
+ dev-python/simplejson
+ search? ( dev-vcs/bzr-search )"
+
+S="${WORKDIR}"/${P}
+
+src_install() {
+ distutils_src_install
+ newinitd "${FILESDIR}"/loggerhead.init loggerhead
+ newconfd "${FILESDIR}"/loggerhead.confd loggerhead
+}
diff --git a/www-apps/trac/Manifest b/www-apps/trac/Manifest
new file mode 100644
index 0000000..befc224
--- /dev/null
+++ b/www-apps/trac/Manifest
@@ -0,0 +1,6 @@
+AUX postinst-en.txt 1331 BLAKE2B 45313107abc05238160eeda67db0aab4917d18ee0e4d7882cecf66ecd287fed4c9f3798b2c7588e2514f6406fb3949ebfddc73695e48c6bf53781784a06364f1 SHA512 6bde40a16545462ef0d8654ffc860e031f5978a253b0fe68df24b18a281f396fd560e4b39a6c53ecee52c9be941ca83dccd1aee9a98dccf570a9f5b0f0c6bbaf
+AUX postupgrade-en.txt 665 BLAKE2B a504090cabc4d8645c31d1aecc7419059b84b8ba9a7b42331f53fe1953d3e5bb44ed0327411acbc711eb31a06e4bc83b7577d6d7d054ee74bfbccfadb58685ea SHA512 bc4684dff491d6140d7d97a1de6cc2773d5f834054bc3d8c122c5d6777f543a08f93e4142c50dcbda862d75ba5c19ffd49ca37876e57df4ee19869099a346a4f
+AUX tracd.confd 359 BLAKE2B 5bf14f9828f3eb22c39a27dd20da219032cc3157d45b16a54a0a6530923c694f7a424c08c09458fdf9e422a3819a7e30619a1c82966ac5aafa2355528e666e3f SHA512 38a961fe59b690eb91e20143aaea6aa1becda8c2afa103599d14ff86c7aae88f06b57b342302de1f067dac5d99024b9cc72896a84349e09b3ff40c9a20f97bb1
+AUX tracd.initd 823 BLAKE2B 4325de1322cda7885539859c2b2ea3d27acaf636bde728c50fcc4c769acec308e6b56d3449109171ce9bdd2bdda9f9364f93c7069debd0a0ecb1009ce0bbf29b SHA512 88a2c92fc1f947d794e68b158db1786cd9c2891de5d3d0d5b738e1245f35998e17741176ecd2a9562d21058f480668cfa61628c7a7b4bccf62e1373728db5be6
+DIST Trac-1.2.4.tar.gz 5336976 BLAKE2B 32cb62c89e0f56de98a38bed7634d79f02cce32d3d6f9bd93e870f346c12f59d7aeb60edea3235c3216788b649208e17cc2e76f1408cc1cb3e6914a60353a04a SHA512 72f8e588c8dffb6b8dd77e1a1f2e9e165d5e7cc69b8c77507d2dba595d5292d348867cc7a9d13c55ce46e5c9c5b3b8db4f50d01ed1af4cb307c143cb28c39757
+EBUILD trac-1.2.4.ebuild 2543 BLAKE2B e3175974d6f020820dbbd696701a157a15f4f79c9f02c63ec287121a2ba78a6c0c4e56589da9940a4d01c04a37113a6bd68fa80a1838b216820037b12f5dfea3 SHA512 a81bbff75a6b89449968dd237e3d7ee5885bd595d045a0f5cf49e709c1413f1a0e1a69dd79a2ef4a862cf94c0b681b064b54d17b35992295b4ccbb5d3dad68f8
diff --git a/www-apps/trac/files/postinst-en.txt b/www-apps/trac/files/postinst-en.txt
new file mode 100644
index 0000000..2a4012b
--- /dev/null
+++ b/www-apps/trac/files/postinst-en.txt
@@ -0,0 +1,41 @@
+Install Instructions
+====================
+
+This is brief and generic information about Trac.
+
+See the releases notes at http://trac.edgewall.org/wiki/TracDev/ReleaseNotes
+for the Trac version you have installed to learn about software changes and
+possible caveats.
+
+Web Server
+----------
+
+Trac installation depends on the web server you are using.
+
+FastCGI users: see http://trac.edgewall.org/wiki/TracFastCgi
+
+CGI users: see http://trac.edgewall.org/wiki/TracCgi
+
+Apache 2 and mod_python users: you have to manually emerge
+www-apache/mod_python. See http://trac.edgewall.org/wiki/TracModPython
+
+You can also use Trac without having to install a web server. See
+http://trac.edgewall.org/wiki/TracStandalone to know more.
+
+Trac relies on the web server for users authentication. Please refer to the
+Trac wiki and to your web server documentation to set up authentication.
+
+Trac environments
+-----------------
+
+To complete the install, create your first Trac environment by running this
+command:
+
+ trac-admin /var/lib/trac/<project-name> initenv
+
+Don't forget to review the configuration file! It is located at
+/var/lib/trac/<project-name>/conf/trac.ini. Consult its reference at
+http://trac.edgewall.org/wiki/TracIni
+
+See http://trac.edgewall.org/wiki/TracEnvironment to know more about Trac
+environments and how to configure them.
diff --git a/www-apps/trac/files/postupgrade-en.txt b/www-apps/trac/files/postupgrade-en.txt
new file mode 100644
index 0000000..1f5c8ea
--- /dev/null
+++ b/www-apps/trac/files/postupgrade-en.txt
@@ -0,0 +1,19 @@
+Upgrade Instructions
+====================
+
+This is brief and generic information about Trac.
+
+See the releases notes at http://trac.edgewall.org/wiki/TracDev/ReleaseNotes
+for the Trac version you have installed to learn about software changes and
+possible caveats.
+
+If you are upgrading from a previous Trac version, please follow the
+instructions here:
+
+ http://trac.edgewall.org/wiki/TracUpgrade
+
+You will need to run trac-admin commands (upgrade, wiki upgrade...) for each
+Trac environment you have.
+
+You might also want to check for new configuration options by comparing trac.ini
+file with trac.ini.sample file in the conf/ directory in each Trac environment.
diff --git a/www-apps/trac/files/tracd.confd b/www-apps/trac/files/tracd.confd
new file mode 100644
index 0000000..2cb9d29
--- /dev/null
+++ b/www-apps/trac/files/tracd.confd
@@ -0,0 +1,13 @@
+# The commented variables in this file are the defaults that are used
+# in the init-script. You don't need to uncomment them except to
+# customize them to different values.
+
+# Port for tracd
+#TRACD_PORT="8000"
+
+# Options for tracd
+#TRACD_OPTS="--env-parent-dir /var/lib/trac/"
+
+# User and group as which to run tracd
+#TRACD_USER="tracd"
+#TRACD_GROUP="tracd"
diff --git a/www-apps/trac/files/tracd.initd b/www-apps/trac/files/tracd.initd
new file mode 100644
index 0000000..c5a5432
--- /dev/null
+++ b/www-apps/trac/files/tracd.initd
@@ -0,0 +1,26 @@
+#!/sbin/openrc-run
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting tracd"
+ # tracd fails to create pidfile if started as non-root user, thus we are asking
+ # s-s-d to do that. To have correct pid we avoid -d option of tracd and use
+ # --background option of s-s-d.
+ start-stop-daemon --start --user ${TRACD_USER:-tracd} --group ${TRACD_GROUP:-tracd} \
+ --pidfile /var/run/tracd.pid --make-pidfile --background \
+ --env PYTHON_EGG_CACHE="/var/lib/trac/egg-cache" \
+ --exec /usr/bin/tracd -- \
+ -p ${TRACD_PORT:-8000} ${TRACD_OPTS:---env-parent-dir /var/lib/trac/}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping tracd"
+ start-stop-daemon --stop --quiet --pidfile /var/run/tracd.pid
+ eend $?
+}
diff --git a/www-apps/trac/trac-1.2.4.ebuild b/www-apps/trac/trac-1.2.4.ebuild
new file mode 100644
index 0000000..0889b3e
--- /dev/null
+++ b/www-apps/trac/trac-1.2.4.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+PYTHON_REQ_USE='sqlite?'
+
+DISTUTILS_SINGLE_IMPL=Yes
+
+inherit distutils-r1 eutils user webapp
+
+MY_PV=${PV/_p/.post}
+MY_P=Trac-${MY_PV}
+
+DESCRIPTION="Enhanced wiki and issue tracking system for software development projects"
+HOMEPAGE="http://trac.edgewall.com/ https://pypi.org/project/Trac/"
+SRC_URI="http://ftp.edgewall.com/pub/trac/${MY_P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~ppc64 x86 ~x86-fbsd"
+IUSE="cgi fastcgi i18n +highlight +restructuredtext mysql postgres +sqlite subversion"
+REQUIRED_USE="|| ( mysql postgres sqlite )"
+
+RDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/genshi[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ i18n? ( >=dev-python/Babel-0.9.5[${PYTHON_USEDEP}] )
+ highlight? (
+ || (
+ dev-python/pygments[${PYTHON_USEDEP}]
+ app-text/silvercity
+ app-text/pytextile
+ app-text/enscript
+ )
+ )
+ restructuredtext? ( dev-python/docutils[${PYTHON_USEDEP}] )
+ mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+ postgres? ( >=dev-python/psycopg-2[${PYTHON_USEDEP}] )
+ sqlite? ( >=dev-db/sqlite-3.3.4:3 )
+ subversion? ( dev-vcs/subversion[python,${PYTHON_USEDEP}] )
+ "
+DEPEND="${RDEPEND}"
+
+S="${WORKDIR}/${MY_P}"
+
+# Tests depend on twill, a broken package
+RESTRICT="test"
+
+WEBAPP_MANUAL_SLOT="yes"
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+ webapp_pkg_setup
+
+ enewgroup tracd
+ enewuser tracd -1 -1 -1 tracd
+}
+
+python_prepare_all() {
+ distutils-r1_python_prepare_all
+}
+
+src_test() {
+ distutils-r1_src_test
+}
+
+python_test() {
+ PYTHONPATH=. "${PYTHON}" trac/test.py || die "Tests fail with ${EPYTHON}"
+}
+
+python_test_all() {
+ if use i18n; then
+ make check
+ fi
+}
+
+# the default src_compile just calls setup.py build
+# currently, this switches i18n catalog compilation based on presence of Babel
+
+src_install() {
+ webapp_src_preinst
+ distutils-r1_src_install
+
+ # project environments might go in here
+ keepdir /var/lib/trac
+
+ # Use this as the egg-cache for tracd
+ dodir /var/lib/trac/egg-cache
+ keepdir /var/lib/trac/egg-cache
+ fowners tracd:tracd /var/lib/trac/egg-cache
+
+ # documentation
+ dodoc -r contrib
+
+ # tracd init script
+ newconfd "${FILESDIR}"/tracd.confd tracd
+ newinitd "${FILESDIR}"/tracd.initd tracd
+
+ for lang in en; do
+ webapp_postinst_txt ${lang} "${FILESDIR}"/postinst-${lang}.txt
+ webapp_postupgrade_txt ${lang} "${FILESDIR}"/postupgrade-${lang}.txt
+ done
+
+ webapp_src_install
+}
+
+pkg_postinst() {
+ webapp_pkg_postinst
+}
diff --git a/x11-drivers/nvidia-drivers/Manifest b/x11-drivers/nvidia-drivers/Manifest
new file mode 100644
index 0000000..66a5419
--- /dev/null
+++ b/x11-drivers/nvidia-drivers/Manifest
@@ -0,0 +1,2 @@
+EBUILD nvidia-drivers-399-r1.ebuild 257 BLAKE2B 17844646e14c2bb30704c57bae45c63a709ce82af7404eff58b4d6afae9a852f449666ef17c0aa879f981bd6a73d2e9ad2ed7e849eb13b4c77eecb11305da685 SHA512 659a4876e8a8f8fd7d7028db6378e8b0cc6a64116823e7aa3e3d1fedf611a467c8d36041bff0021d2d75d0ba9ec34866ac2c92a63519f7931e49527d9918b81a
+EBUILD nvidia-drivers-430.40-r1.ebuild 275 BLAKE2B 9b0eef8d3deb93cccf79d2816115212f69429a45693f876dd2d1ec11b7a0e53016f7c7ae8fea417ad88127b1259a1fd8f949b38c9e633ee8fa0559beef81619a SHA512 67a151b3687cc5416b0fce5c7e9650739ea40f41913f8c10fd7c4642264e708b9302741434a11a4dd8ebadfc66a90940841d95875efebc5c859000983f9bbed1
diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-399-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-399-r1.ebuild
new file mode 100644
index 0000000..caa8d8b
--- /dev/null
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-399-r1.ebuild
@@ -0,0 +1,12 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="NVIDIA Drivers Override"
+SLOT="0"
+LICENSE="GPL-2 NVIDIA-r2"
+KEYWORDS="amd64 x86"
+
+IUSE="tools static-libs"
diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-430.40-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-430.40-r1.ebuild
new file mode 100644
index 0000000..0413d7f
--- /dev/null
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-430.40-r1.ebuild
@@ -0,0 +1,15 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+EAPI=6
+
+inherit eutils
+
+DESCRIPTION="NVIDIA Drivers Override"
+SLOT="0/${PV%.*}"
+
+LICENSE="GPL-2 NVIDIA-r2"
+KEYWORDS="amd64 x86"
+
+IUSE="tools static-libs"
diff --git a/x11-libs/gtk+/Manifest b/x11-libs/gtk+/Manifest
new file mode 100644
index 0000000..fb53237
--- /dev/null
+++ b/x11-libs/gtk+/Manifest
@@ -0,0 +1,42 @@
+AUX gtk+-1.2-locale_fix.patch 419 BLAKE2B 63ac434efd157c988bc9661c0c67c9803a60a473c4a768ee6ec5046b6f34977b37d3e36490c8ccac44ad0cd00e333eb83c23787a554b02ddb113de6a87bc68d9 SHA512 7350d2b60e4d66219ec57ce56f9e2cd3c9c2b5c399d8e35c49243a0383b3455ba4225257bcd1303ad5b4ef98ea6b6ff401afde43b1b3841eeac2527443f7cd33
+AUX gtk+-1.2.10-alt-linkage.patch 3397 BLAKE2B 117884c2092f759be0264ece131b5ca160ee1174f636ceb873919e413642216341712547acca515fdedd0cdf4d0be8a4202635fc69b8ed47f26f65c19b8d3946 SHA512 4408d158df7652e4a324639ea6b65845aa0c8c4fd2f441efaefc18f20274a261b3f8ffdcfbbaa68342d007339605dc2edf73bd4271943f8afd2d8ae25f9d4a73
+AUX gtk+-1.2.10-as-needed.patch 19865 BLAKE2B ba24ecbacecb77571ed595ffcff9b882493239d42f1f2636db94875d1daa0e3a8613329fc88f314474f89b11c92ed3f4e56e3fdace45189738bda9760b0c3df6 SHA512 e69ab1a967218889dda64e8a87a390140ab70585b0ad031c3d6cbd5431857c0bf9c76300bb0f9ca8dfd703c0297c618d806795df1f18a5ab23fe3f06fb11c5a2
+AUX gtk+-1.2.10-automake.diff 7312 BLAKE2B fc69f6fa4d816516bc5c032faa9b6b3d7c6adb855f322675274aa82fb43b2b78615739cad04b629efc3bca400142f69ca58f6e96802b41a8e6b17dbf6812a5b6 SHA512 65540b0580c31c0289957e7708969732f034529dccae176abce6d498cba04404237ea01a05a868e1e980a9f3eb83752609eea2e098b5802cbe94a71fbabcd595
+AUX gtk+-1.2.10-cvs-border.patch 3134 BLAKE2B 2a76463367985bd871bcfbe571cc9adbad644db9f0ecc25a147eb898a76da14bfb159a6a61e6deaf78771adfa98bc00ffa68baa4a32307dbff5e13a940eff1f9 SHA512 abc15fbbcc08a5d604ca4377a10c8b856bb607b8e75dcf68ca6d15843de1a99d531dd8cb041b6a4ca5d0f7dc1f47461f503e28a24e56e685c3e5a58748132ad1
+AUX gtk+-1.2.10-cvs-dndnewwindow.patch 792 BLAKE2B 5bbf213bc47f06d1f88aa65a89bc207985ab709b5a52cf3134f9488062a57d185dc6fc14af2d09d9e050b299c8cfaea17e84c5393119ae4f30a2eb1bcc5ec51e SHA512 72003120e133ff602a01f264328e0819f4bb9a47890245fd404adefb3bddf937537dc012051c485b0a92cba61ff21a1dc09622f8fb0d8fc13101c8fba8019553
+AUX gtk+-1.2.10-cvs-expose.patch 808 BLAKE2B 23b33f32df4ffd7a932d32fef068853b4f31f9a5031318f6623f72dcc3d27dac08cab8792aedf7e35d70bc2202194ec22bbef6f627d2036e3f2bdbe65624f44c SHA512 198c1a50bbe1457b09f9504bd0d74a3071741b5cb0497160af192d78cecd194770f41949c2f02c5137bede69afc52e270ac08e6904aa9db7c4ad0a262c81ca6f
+AUX gtk+-1.2.10-cvs-focus.patch 841 BLAKE2B 5ad5f4c22cd04d7e6bdf073d6b593d41b14bd6f0fcaf72c2c1f98bc4abdd1996fbebb0c2d3b96d3490aa7d2cac1c427d471c5a7eee3230e4591b9559cb4a1ee2 SHA512 246b2dd6176976d7d7c789c90c39b1e0ea528ac5893b54d9358cc18d2fba30632b389b77c0aa445a4776f64430521ce0ecc6cbfd61f88c70d666f15b758e43aa
+AUX gtk+-1.2.10-cvs-labelvariable.patch 358 BLAKE2B af09b9005b9ded825e8cd60906d5583624c36c6675a2cc7aa5678380ff2e7c8ae3fc0ac490e2be48594dfcd3225db5405698c492bba5786b470a1f447d6b729b SHA512 6e903e0fb56f2c3b112f7e8c5d3ffff71c3faf2449b65de4ee0a6aa929e6cfc9194845234b44194c16b45592b9ea4193bf91a67c2245688ab07f4c12173b15a0
+AUX gtk+-1.2.10-cvs-netwmpid.patch 671 BLAKE2B 68d59832779a5536f0cf1dca873c0b2ee62cc1b44f0389d1eee3c48f1681a387df600a85a611eb81e839e68b5317ac3e44bfcd44249eaa0e1d55f9e7854fe7dd SHA512 b00c0c888900498e9e624c09c5a432bc275717c11daa55c3b557d3b68e7000256167c2dca90b00e2915b4c2af766d9fcbc0a236675dfa90b47eb86e1dd0f9ecc
+AUX gtk+-1.2.10-cvs-rclocale.patch 3757 BLAKE2B 10261c74a6409f8ed278d5ddfe1a9b3fd1efbcb4560b1379a6fa0545b54a9d62c74a2e779fa120cfa3c7044f7608fa60153929294f0b1ab8ee1a47c0d7c780fc SHA512 36a46c90d9a48dd3ef2b33eb38a0963913a5d414fdbae055775f14356200b5cc1942635b28e360b14cd8826066147248f587b5bc10bfc8aa73b2d1aaf367fcda
+AUX gtk+-1.2.10-m4.patch 220 BLAKE2B 70a7f1bfb12fd9ccff65d014e4fc7c4e4f8417f20dd9870a54ad773d4f781966ec0270fa7e1a60fced36678aafe734b1e48ea31ede75b5286e74ae84038cee53 SHA512 4900aad1e8b84f3fa9bc497455fe28d521950708e33274da5776f18444f19bdb383d65406142550f2fc6fb7bffe5ac5fd7b1c40ac2d008ab166a1a0c6a8b1d8b
+AUX gtk+-1.2.10-mdk-argb.patch 346 BLAKE2B 51ef234bb309ad4c8141740712e04c12f23f2bf3dffb2733eeb8002f6dff821c17144438099b19d47f9c1ebc1d0f2b6eec01b78409c36e7a56c42b3e5288d1e7 SHA512 273ad42b6493815b163b1d22c80142cbb584e84b4d0cde024986139c5006af07f5849ffe1e2c8147777213921797b0e6cbb19a036352ba457f07438f88228a47
+AUX gtk+-1.2.10-mdk-defaultcolor.patch 1134 BLAKE2B b3797e5e5937ce0e55c788f92faa8280fe3b1ecc44332996fedee7c61b90532c56a3d47fab846d03d77ef116de64d14ec3440273817b6f4c65040e50c9b599d3 SHA512 8ee26856992732eb9e625adc8bff445c87f1c0996b90075a4df67465bc52dc013e6ccdb7479c1046a52e3096a0d55e0b320dd76d53ce0f2cee7e531aa686ce4a
+AUX gtk+-1.2.10-mdk-fileselectorfallback.patch 1273 BLAKE2B 30860bf460172cd14c166a62c1444e1494a7e8275a29f2412eb2949d914b1f3c3c823e2ad2fd9a1ca9c2c6c644ee273f6c64807af143abb6f4991db303606945 SHA512 9637871f84e310a4d6fb83eee1d1401af71ff39e9d5cf388fe600ee98b87e643b7a0ccf30d212e4f7630d4e58f93e7140100787c84523bcafa9a340b3418b244
+AUX gtk+-1.2.10-mdk-gtklist.patch 1940 BLAKE2B c11518207f4ed12ab90b5d192b4ede54a01c7a2d5fa7e0991bdd5a106b94511c23e29f93baa4afab6e432cf7bb4618ecf64cf6459d375fcdbee7dc0f02d249ef SHA512 4215619b27a85678fcfc0de15a09685c5af3f6cc2304fad8f69f0c077666ebe27566b3c58a83bef54a14f7d8d2908fee39afe570065703a8fcc6c4435f96d4b4
+AUX gtk+-1.2.10-mdk-gtkrc_files.patch 17215 BLAKE2B a4adcc0e34d1f4797ca7dd6d09f4280d27451202967e1814599f2043d60fd97e49a64a04a8a340fc7c5a4671a5eb9ea3e0c36e090477b49eaa971d1cd3bb96c0 SHA512 1d65622cbbaab3186a635772291648ea86d81f6f163217fc26e9ea1c9889b0294e8cba98b1b588081c944225f6931d42f4213d8ab79f238fee52b74554553202
+AUX gtk+-1.2.10-mdk-libdir.patch 376 BLAKE2B 34326a1750a6dc94d8d425d383e6d5474d38aaa059bbadc7485cbf1de24235bbf36f06ae6ca76361c588e4530ced6ba603677110b84893cfb709bcc55308438e SHA512 7118701a0f59f1019336d9876b2e68b8891b9392c9e53ecdb8e5626e2bf8c6b42a2f0213d8655464593113cf3aa1544bbb53c364f480475d63faf1843b4fae66
+AUX gtk+-1.2.10-mdk-themeswitch.patch 2350 BLAKE2B 38b6e535af81deabfa7330c936409a5c748446f090f184df6ff048286ade9f50dedc9035f37874c3f15d8ff4045c40d0fc061594dfe262f3045a4c0d77d46853 SHA512 b86c153136c9629c10eb49ccdb6723728f0f27e2f766dd6c02246d068ea7a69060ab33523ea187e967b21b0e8f19516aa4fa32ca253ef8b0706a2da5835f9948
+AUX gtk+-1.2.10-rh-alignment.patch 654 BLAKE2B 9d6133077dd9d7a0fb922da0ef2c6ab8fb91fe26049a7b10e37ee41a0f1ed7e56bde3b3e4caf7accc3705e3a478ccc6b8f12149a2d973c61cc38aa119e61f7cd SHA512 3d0fb80acb19ec0bc61b177cee33b57c5c8474c5802416ffe32539450fb16755e3b1342aad60e7ceb2e86a24136020373ddf22728102cb9f4700d9649b762935
+AUX gtk+-1.2.10-rh-bellvolume.patch 222 BLAKE2B 7b22bb3cc712ee42b6981ed408f9fb8747d3722de3a14adee5baf9b767cf11391aa5ae8d794ccf8d1f0f32804352245fc8497973ce13e3198b33be9c2abec8d3 SHA512 681869e3636e8eceec3f0f636fcf91792932e3b976aff698531c005b525f10ea03aa167d377cbeb51b89d358040ae8adf1c5b1f201de31fc0329be7589297dc2
+AUX gtk+-1.2.10-rh-clistfocusrow.patch 1143 BLAKE2B 5bdd3a838730fa3ff7c760519db46f97b1ca4fa9dde97c4613cef6142049b3eab1d53024cdec346280d39d85f1517525ebbb80a54fa074c97409ac9948ad2175 SHA512 74ca9ac15d84d42784e82e249dabae5eba5b0ed664577aed6ccb8b1f9b5403c2c8ee3cbea200857d7d0adad0e18b1242bdcff81a468a24f9ddf8abf064691104
+AUX gtk+-1.2.10-rh-ctext.patch 3652 BLAKE2B 21987434494ee8f3b04b00319c793cf3a3996fc360a55c267ccce7c5a0eb755bee77a6e176a71376a12ada3a45792deea9e2c64d5d724cc22437b22512b091fc SHA512 3702da7de2886bfe22613b3cab6666cd2ef82394875fcb70ca6b576bb9acf445cc9d353fa81e177025f5ec7ea416e1c0ba803242d2fd01f13ca8ba64f64ebf97
+AUX gtk+-1.2.10-rh-deletedir.patch 5054 BLAKE2B 56f59983723761e17e852a4830d3f7ccd0c1423996e7d542d9d78c128d295c73ecb255f8025a296b3e54d7d4721a5acaf724910519461cab57163c12620c27a8 SHA512 e80804fd29309346912c3838f93be224dcc1cb3b42c5bc1204792d9e2f42b2c7dbf247fa37bc83c2dedf9c1566797698fdbc020759b7d2a7f244974fd39f9755
+AUX gtk+-1.2.10-rh-encoding.patch 4335 BLAKE2B a3484acdffd6507b23c5aebfb9b1bada35b8240ceff10ce177e08fe35e481ea0ec4805553afeb889f01125b3550780f1aa710824cbc36af3ce52e5c1c2167403 SHA512 400b7f359e022557f487f4b6baccdd483c90343240cecbf97e92b75b2b608ddcf452eaca4048039b7b9f7b0941f8e7c1edb663a22fe4bbe66edb3bd173169bc0
+AUX gtk+-1.2.10-rh-fontwarning.patch 1388 BLAKE2B cd82042a18570f174e9ef77c2a9cea497aeee171f98385105c84f6b6c5286553b36713e50ff8227b2ed6a0d33ffaa80cc82732490da7fade34659288cf595c47 SHA512 98ed7a0b5ef7676da35116e8fd8e79ee64de581e283e96b022a476a4c600718dc36b1ae96444200e783db731b1f85f8d1c104c39cc5273a4f73e1cfa5f789eac
+AUX gtk+-1.2.10-rh-kpenter.patch 1743 BLAKE2B 0984711df592fa316673b3135bbdb11b66da5e2fa5644b7e9edd038cf9cad6736fd3a8d52fb4372aa4c5fc8a0236a685911c3e7a7aaeb54a3f84634d574fb41a SHA512 6e9d30914a90f83b26264c182914e81902b22cebffbcfd1213fa9bf94d265141c00b76ef38573c900f53faa2cc1b74a57d6e650a39b16f90f0a896fb79f1f7f1
+AUX gtk+-1.2.10-rh-localecrash.patch 674 BLAKE2B 48c3c8db111878900881900f299f0392bb01e6c383103086780094cdbaa2ccd034c86c88020e159afabd5f5402d754b84b996276285de944b21b2981470dfcf5 SHA512 f152704f6886b1b6de7457a827c72fd139a3a0c911b65c637e84c1493f5b3ba7259c3bc7f61d46e167c8f49e19c06470420c6896ca4e7e0326d6e226ff84ce11
+AUX gtk+-1.2.10-rh-m4.patch 417 BLAKE2B 344fdc11482e990ff8afd501020d278a4e7e2656445a51d6d20f4178b318f01f3fbe65b568c3c6d0e0e8762321798c2947e6208abb20ec087ba92d5739377ec8 SHA512 8ca88eaf52fc1c838f23a8e845e8127e3fed892f32f1c3b7e4aa866383b8456cb6465255d8c35643cc89cdaa164bee9c265ebf4539213fa1aa227bb0e62f414b
+AUX gtk+-1.2.10-rh-missingchar.patch 976 BLAKE2B 5dd9bdd7b2d4059f11fb58007a00d938befb2d735432b1adc8e67257c87cfab46546d8332df58d638dcefbf06fd40903835560cd017653ea0dc98a35ce8d4201 SHA512 bfec0b3944c26644882b5dbe8a8887f51659769db6341e9a1abb2b2e1837e67e5993a8779782e56ac164a4757febb4fd1be52b892dc5779388dbbf9d3c56cf55
+AUX gtk+-1.2.10-rh-pixmapref.patch 540 BLAKE2B e4e1eca342e97aa72c51b0128ad2640db53f020dad75a94263c1c3e32c4263a7678449e7b91e76ad3c978d479bc717d916989aa666d9f19ad0759e1641aeaa13 SHA512 6ef7341c3e6ea2e9985f40477839a9d591d7c8727d6069596e07768d086f142b967b6faec1163b3a5038c4c6713c86d3b92c820ece10bd409f2b88978e079d08
+AUX gtk+-1.2.10-rh-troughpaint.patch 613 BLAKE2B bcc5b683f19528d78680d65830017e7ef22b24e6f3e6f3600928f3fcbf4e4c84bdb000e483123e38a4da39e55edb8aacd31c576b45faa76b2d4c9d63617c7f93 SHA512 d39bb917035f6eb68a61fef356fcdb9c43c522e28c583f416e82e5d4d091910fae1f56a8c9d82482a5381c76a57cbad9ed7556d0f3c0e04fd2ea65eb6b5aa45c
+AUX gtk+-1.2.6-ximian-noborder.patch 2168 BLAKE2B b0534c8bb5dc2161d08cbd51e34c2bf56a704abdee63b0ee7875cb66a45c6014264c2e36732e35b4d1c2f8dfd742c68b682712cc3bb7775ac4055970de2b4f15 SHA512 7a11cbe7db66e9aace133d83c09402c5e9703c358ba67966cad2c96f5efcefaad70c341dd6702e303c89a95f2304648eacd7cfadb01154b5c5c443f5c006a803
+AUX gtk+-1.2.8-advanced-gtkfilesel.patch 41292 BLAKE2B 05682a74ec8faf622ece7a472621b63c6bbdb1860660928b91f100d3b9961768d03f7df45a3a676b38fd14a0ab5667c66c0d6eb065b7a599d895370b0dcbc334 SHA512 51f87accf3c7e20b9cd6341d402555e939716054e018a1a04caba4b33b85dd454a0625cdcd815662bdd79ea9a156c9a2ef91317cf67cf3b1b30b72ad2d5ac092
+AUX gtk+-1.2.9-be.patch 11736 BLAKE2B a21a7ecdedae81921e09ab66a9d80be176c0c88216925b81523d69ce865e64d47ec16118c458c7ba299371fe399017a495aecd19df69591bb01ab746ee31167e SHA512 2e206e5ee72270d1ae613d9f7c87f1d6a232137cfcbdf39a22932a285da9e2bfeb8630a97f3b3b074f5673b2805bacfd18f0de2f8090aa6968ed060c56d23201
+AUX gtk+-1.2.9-rc.patch 5168 BLAKE2B 79897d3f55fd70fe2d9c38bfc644600b2d122e486c8ecd2b082673bf6ceea13e371af7bcc81d3baec99508de63fa13577edd0aa7618beec45916806dc863b594 SHA512 b8e9045dd5ae378b77b6bae48f2403bc26184e180cb65da2718e0beaf1e47562d578507e965f8c9f6d00f4ab020be8cde0c88492ac9ac84e225be7d7b520c462
+AUX gtk+-1.2.9-rc2.patch 1253 BLAKE2B 3bd293dd3db4fd0409a9ad482b00eba100f887ced5ec44201c6b228d73b0e6b1b95471b7e275482ff5a5b7880e13cc375c498ef0c65bdb4e62c9e2913f6cf3db SHA512 de1a2eee899654081075ca74d2f9d2b46a327a90ee03aea858cc6b6db89bc76ec3bd17567189e3b69699bbd3254f8b4d552926823f554d5bd7a3732e1974e7c1
+AUX gtk+-ds-gentooalt.patch 16835 BLAKE2B 7a620287bce5b8fb004a7b99d5ff600537c557c2ab0442073ef526eeb1170e34ddfd1f6347a819becdff6d77b102315c3fadaf723aadc39e0a56721cc3926fb1 SHA512 3f3627e806a6d561e153fabc3cf917ec12ddfb5a32361b2719da38c4491fcc070d2cd4df7fae74170a8789a1344536bc56d334a8faf53d07a2b84d539a13f352
+AUX gtkrc 627 BLAKE2B 57af25dcadfa09ea784ac485db383753deda23c42ce22582f03041abf7a061e70eced09592ab0750786bea3555d760febc913762b8369b50b327fbd03d918279 SHA512 9fb246b8e483cfb5f8d3666397d50547ad0cdaa8bdf5737e67e14dd100952438ac93396f0d752306c02aa4934453a43eb360093c4e323e99bbe0706c40171dc4
+DIST gtk+-1.2.10-r8-gentoo.diff.bz2 81223 BLAKE2B 6c83789e1322a19f806052a49a969155bb50e99bbdf26253f4da0311c3333c4242dd15e7c944a2aea69d35be3bbd0832ba28c3ae15b67db28645eb797030d5b1 SHA512 aaef9275ff6330a9fe1cbe1e40def181329d79cd33eb2b2ff5ae9cba5fa57e706716233ac7515f621d913f81343eb8244c6669e6411f7d50ca69187bf8d4fd86
+DIST gtk+-1.2.10.tar.gz 2868322 BLAKE2B e6c36b089159d126d2e8f4ae6f282252336e38781a3f1a99500341b88df79124b7b9696a526d308f43591d01e77d16a8f28dad9c6c93e20c3ea85c98861f9b69 SHA512 6a05062520954287b0e24a95169d18c216145ee79d1fa7f54222db32c8e39e011e3dc49886d3bc4de1cc1ebd71f5744e41891cde8d5c2759f637e71c390a235f
+EBUILD gtk+-1.2.10-r15.ebuild 4286 BLAKE2B 1860e60336929544ab4348d0e66911e164878e53868b2343e9404eef0c2b48725c60c6e3d3802725ed094e95984b894208eb101b5a1afd7723559a21310f5678 SHA512 60b9257067f144d0ce7fa5b8c132f5036902f801c743f7656ce5952faa4e5dec197070ad0fdf79da717b8a1a3db4be32475b2cfef56c5f1a23765db29f92bee3
diff --git a/x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch b/x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch
new file mode 100644
index 0000000..a3fd198
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2-locale_fix.patch
@@ -0,0 +1,19 @@
+--- gtk/gtkrc.c.~1.40.2.17.~ 2001-07-10 20:06:35.000000000 +0200
++++ gtk/gtkrc.c 2003-03-05 16:56:10.000000000 +0100
+@@ -453,7 +453,7 @@
+
+ if (!initted)
+ {
+- char *locale = setlocale (LC_CTYPE, NULL);
++ char *locale = g_strdup (setlocale (LC_CTYPE, NULL));
+ char *p;
+
+ initted = TRUE;
+@@ -558,6 +558,7 @@
+
+ if (tmp) g_free (tmp);
+ }
++ g_free (locale);
+ }
+
+ i = 0;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch b/x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch
new file mode 100644
index 0000000..04a967c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-alt-linkage.patch
@@ -0,0 +1,85 @@
+diff -uprk.orig gtk+-1.2.10.orig/gdk.pc.in gtk+-1.2.10/gdk.pc.in
+--- gtk+-1.2.10.orig/gdk.pc.in 2000-11-30 04:18:35 +0300
++++ gtk+-1.2.10/gdk.pc.in 2004-08-26 18:05:20 +0400
+@@ -7,5 +7,5 @@ Name: GDK
+ Description: GIMP Drawing Kit
+ Version: @VERSION@
+ Requires: glib
+-Libs: -L${libdir} @x_ldflags@ -lgdk @INTLLIBS@ @GDK_WLIBS@ @x_libs@ -lm
++Libs: -L${libdir} @x_ldflags@ -lgdk
+ Cflags: -I${includedir}/gtk-1.2 @x_cflags@
+diff -uprk.orig gtk+-1.2.10.orig/gtk/Makefile.am gtk+-1.2.10/gtk/Makefile.am
+--- gtk+-1.2.10.orig/gtk/Makefile.am 2004-08-26 17:09:34 +0400
++++ gtk+-1.2.10/gtk/Makefile.am 2004-08-26 18:05:20 +0400
+@@ -32,7 +32,7 @@ libgtk_la_LDFLAGS = @STRIP_BEGIN@ \
+ @x_libs@ \
+ -lm \
+ @STRIP_END@
+-# $(top_builddir)/gdk/libgdk.la
++libgtk_la_LIBADD = $(top_builddir)/gdk/libgdk.la
+
+
+ #
+@@ -424,10 +424,9 @@ uninstall-local:
+ # test programs, not to be installed
+ #
+ noinst_PROGRAMS = testgtk testinput testselection testrgb testdnd simple # testthreads
+-DEPS = libgtk.la $(top_builddir)/gdk/libgdk.la
++DEPS = libgtk.la
+ LDADDS = @STRIP_BEGIN@ \
+ libgtk.la \
+- $(top_builddir)/gdk/libgdk.la \
+ @x_ldflags@ \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+diff -uprk.orig gtk+-1.2.10.orig/gtk/Makefile.in gtk+-1.2.10/gtk/Makefile.in
+--- gtk+-1.2.10.orig/gtk/Makefile.in 2004-08-26 17:09:34 +0400
++++ gtk+-1.2.10/gtk/Makefile.in 2004-08-26 18:10:32 +0400
+@@ -137,7 +137,6 @@ lib_LTLIBRARIES = libgtk.la
+ libgtkincludedir = $(includedir)/gtk-1.2/gtk
+ libgtk_la_LDFLAGS = @STRIP_BEGIN@ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) -release $(LT_RELEASE) -export-dynamic @GLIB_DEPLIBS@ @x_ldflags@ @x_libs@ -lm @STRIP_END@
+
+-# $(top_builddir)/gdk/libgdk.la
+
+ #
+ # setup source file variables
+@@ -198,8 +197,8 @@ gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.e
+ # test programs, not to be installed
+ #
+ noinst_PROGRAMS = testgtk testinput testselection testrgb testdnd simple # testthreads
+-DEPS = libgtk.la $(top_builddir)/gdk/libgdk.la
+-LDADDS = @STRIP_BEGIN@ libgtk.la $(top_builddir)/gdk/libgdk.la @x_ldflags@ @x_libs@ @GDK_WLIBS@ @GLIB_LIBS@ -lm @STRIP_END@
++DEPS = libgtk.la
++LDADDS = @STRIP_BEGIN@ libgtk.la @x_ldflags@ @x_libs@ @GDK_WLIBS@ @GLIB_LIBS@ -lm @STRIP_END@
+
+ testgtk_DEPENDENCIES = $(DEPS)
+ testinput_DEPENDENCIES = $(DEPS)
+@@ -228,7 +227,8 @@ X_CFLAGS = @X_CFLAGS@
+ X_LIBS = @X_LIBS@
+ X_EXTRA_LIBS = @X_EXTRA_LIBS@
+ X_PRE_LIBS = @X_PRE_LIBS@
+-libgtk_la_LIBADD =
++libgtk_la_LIBADD = $(top_builddir)/gdk/libgdk.la
++libgtk_la_DEPENDENCIES = $(top_builddir)/gdk/libgdk.la
+ libgtk_la_OBJECTS = gtkaccelgroup.lo gtkaccellabel.lo gtkadjustment.lo \
+ gtkalignment.lo gtkarg.lo gtkarrow.lo gtkaspectframe.lo gtkbin.lo \
+ gtkbindings.lo gtkbbox.lo gtkbox.lo gtkbutton.lo gtkcalendar.lo \
+diff -uprk.orig gtk+-1.2.10.orig/gtk-config.in gtk+-1.2.10/gtk-config.in
+--- gtk+-1.2.10.orig/gtk-config.in 2000-10-21 22:20:40 +0400
++++ gtk+-1.2.10/gtk-config.in 2004-08-26 18:18:31 +0400
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+
+-glib_libs="@glib_libs@"
++glib_libs=
+ glib_cflags="@glib_cflags@"
+ glib_thread_libs="@glib_thread_libs@"
+ glib_thread_cflags="@glib_thread_cflags@"
+@@ -107,6 +107,6 @@ if test "$echo_libs" = "yes"; then
+ fi
+ done
+
+- echo $libdirs @x_ldflags@ -lgtk -lgdk $my_glib_libs @INTLLIBS@ @x_libs@ @GDK_WLIBS@ -lm
++ echo $libdirs @x_ldflags@ -lgtk $my_glib_libs
+ fi
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch b/x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch
new file mode 100644
index 0000000..aa295f2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-as-needed.patch
@@ -0,0 +1,696 @@
+--- gtk+-1.2.10/acinclude.m4.orig 2006-05-24 23:23:51.000000000 -0700
++++ gtk+-1.2.10/acinclude.m4 2006-05-24 23:23:19.000000000 -0700
+@@ -672,7 +672,7 @@
+ AC_DEFINE(HAVE_STPCPY)
+ fi
+
+- AM_LC_MESSAGES
++ gt_LC_MESSAGES
+ AM_GTK_WITH_NLS
+
+ if test "x$CATOBJEXT" != "x"; then
+--- gtk+-1.2.10/gtk.m4.orig 2006-05-24 23:32:00.000000000 -0700
++++ gtk+-1.2.10/gtk.m4 2006-05-24 23:36:16.000000000 -0700
+@@ -1,6 +1,11 @@
+ # Configure paths for GTK+
+ # Owen Taylor 97-11-3
+-
++AC_DEFUN([GTK_AC_DIVERT_BEFORE_HELP],
++[ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])],
++ [ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])],
++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++$1
++AC_DIVERT_POP()])])])
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
+--- gtk+-1.2.10/configure.in.orig 2006-05-25 05:45:06.000000000 -0700
++++ gtk+-1.2.10/configure.in 2006-05-25 05:44:08.000000000 -0700
+@@ -1,6 +1,8 @@
++builtin(include,gtk.m4)
++
++
+ # Process this file with autoconf to produce a configure script.
+ AC_INIT(gdk/gdktypes.h)
+-
+ # In the following, there are a the following variants
+ # of GLib cflags and libs variables
+ #
+@@ -12,12 +14,11 @@
+ # glib_thread_cflags: cflags to store in gtk-config for gtk-config gthread
+ # glib_thread_libs: libs to store in gtk-config for gtk-config gthread
+
++AC_CANONICAL_TARGET
+ # Save this value here, since automake will set cflags later
+ cflags_set=${CFLAGS+set}
+
+-dnl we need to AC_DIVERT_PUSH/AC_DIVERT_POP these variable definitions so they
+-dnl are available for $ac_help expansion (don't we all *love* autoconf?)
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++GTK_AC_DIVERT_BEFORE_HELP([
+ #
+ # Making releases:
+ # GTK_MICRO_VERSION += 1;
+@@ -32,9 +33,8 @@
+ GTK_MICRO_VERSION=10
+ GTK_INTERFACE_AGE=1
+ GTK_BINARY_AGE=10
+-GTK_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION
+-dnl
+-AC_DIVERT_POP()dnl
++GTK_VERSION="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION"
++])
+
+ AC_SUBST(GTK_MAJOR_VERSION)
+ AC_SUBST(GTK_MINOR_VERSION)
+@@ -44,9 +44,9 @@
+ AC_SUBST(GTK_VERSION)
+
+ # libtool versioning
+-LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
++LT_RELEASE="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION"
+ LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
+-LT_REVISION=$GTK_INTERFACE_AGE
++LT_REVISION="$GTK_INTERFACE_AGE"
+ LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
+ AC_SUBST(LT_RELEASE)
+ AC_SUBST(LT_CURRENT)
+@@ -54,11 +54,8 @@
+ AC_SUBST(LT_AGE)
+
+ # For automake.
+-VERSION=$GTK_VERSION
+-PACKAGE=gtk+
+-
+-# Save this value here, since automake will set cflags later
+-cflags_set=${CFLAGS+set}
++VERSION="$GTK_VERSION"
++PACKAGE="gtk+"
+
+ dnl Initialize automake stuff
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
+@@ -67,42 +64,40 @@
+ AM_CONFIG_HEADER(config.h)
+
+ dnl Initialize libtool
+-AM_PROG_LIBTOOL
++AC_PROG_LIBTOOL
+
+ dnl Initialize maintainer mode
+ AM_MAINTAINER_MODE
+
+-AC_CANONICAL_HOST
+-
+ dnl figure debugging default, prior to $ac_help setup
+-dnl
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++
++GTK_AC_DIVERT_BEFORE_HELP([
+ if test `expr $GTK_MINOR_VERSION \% 2` = 1 ; then
+- debug_default=yes
++ debug_default="yes"
+ else
+- debug_default=minimum
++ debug_default="minimum"
+ fi
+-AC_DIVERT_POP()dnl
+-
++])
+ dnl declare --enable-* args and collect ac_help strings
+-AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
++AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,
++ [enable_debug="$debug_default"])
+ AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]],
+- echo $enable_shm, enable_shm="yes")
+-AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
+- , enable_ansi=no)
++ [echo "$enable_shm"],[enable_shm="yes"])
++AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],,[enable_ansi="no"])
+ AC_ARG_WITH(glib, [ --with-glib=DIR Use uninstalled copy of glib])
+-AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
+- , enable_xim="yes")
+-AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],
+- , enable_xim_inst="maybe")
+-AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
++AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],,[enable_xim="yes"])
++AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],,
++ [enable_xim_inst="maybe"])
++AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,
++ [enable_rebuilds="yes"])
+ AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ])
+-
+ AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ])
+-AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,with_native_locale=no)
++AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,
++ [with_native_locale="no"])
++
+
+ if test "x$enable_debug" = "xyes"; then
+- test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
++ test "$cflags_set" = "set" || CFLAGS="$CFLAGS -g"
+ GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
+ else
+ if test "x$enable_debug" = "xno"; then
+@@ -113,16 +108,14 @@
+ fi
+
+ AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}")
+-
+ # Build time sanity check...
+ AM_SANITY_CHECK
+
+ # Checks for programs.
+ AC_PROG_CC
+ AC_ISC_POSIX
+-AM_PROG_CC_STDC
++AC_PROG_CC_STDC
+ AC_PROG_INSTALL
+-AC_PROG_MAKE_SET
+
+ changequote(,)dnl
+ if test "x$GCC" = "xyes"; then
+@@ -144,7 +137,6 @@
+ fi
+ fi
+ changequote([,])dnl
+-
+ # Honor aclocal flags
+ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+@@ -158,8 +150,7 @@
+ AC_CHECK_PROG(INDENT, indent, indent)
+
+ REBUILD=\#
+-if test "x$enable_rebuilds" = "xyes" && \
+- test -n "$PERL" && \
++if test "x$enable_rebuilds" = "xyes" && test -n "$PERL" && \
+ $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
+ test -n "$AWK" ; then
+ REBUILD=
+@@ -194,55 +185,58 @@
+
+ dnl Check for nl_langinfo and CODESET
+ AC_MSG_CHECKING([for nl_langinfo (CODESET)])
+-AC_TRY_COMPILE([#include <langinfo.h>],
++AC_TRY_COMPILE([#include <langinfo.h>
++ ],
+ [char *codeset = nl_langinfo (CODESET);],
+ AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
+- have_codeset=yes,
+- have_codeset=no)
++ have_codeset="yes",
++ have_codeset="no"
++)
+ AC_MSG_RESULT($have_codeset)
+
+ dnl The DU4 header files don't provide library prototypes unless
+ dnl -std1 is given to the native cc.
+ AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
+
+-gtk_save_LIBS=$LIBS
++gtk_save_LIBS="$LIBS"
+ LIBS="$LIBS -lm"
+ AC_TRY_RUN([#include <math.h>
+ int main (void) { return (log(1) != log(1.)); }],
+ AC_MSG_RESULT(none needed),
+- gtk_save_CFLAGS=$CFLAGS
++ [gtk_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -std1"
+ AC_TRY_RUN([#include <math.h>
+ int main (void) { return (log(1) != log(1.)); }],
+ AC_MSG_RESULT(-std1),
+ AC_MSG_RESULT()
+- CFLAGS=$gtk_save_CFLAGS
+- AC_MSG_WARN(
+- [No ANSI prototypes found in library. (-std1 didn't work.)]),
+- true
+- ),
++ CFLAGS="$gtk_save_CFLAGS"
++ AC_MSG_WARN([No ANSI prototypes found in library. (-std1 didn't work.)]),
++ true)],
+ AC_MSG_RESULT(none needed)
+ )
+-LIBS=$gtk_save_LIBS
++LIBS="$gtk_save_LIBS"
+
+ dnl NeXTStep cc seems to need this
+ AC_MSG_CHECKING([for extra flags for POSIX compliance])
+-AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
++AC_TRY_COMPILE([#include <dirent.h>
++ ],[DIR *dir;],
+ AC_MSG_RESULT(none needed),
+- gtk_save_CFLAGS=$CFLAGS
++ [gtk_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -posix"
+- AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
++ AC_TRY_COMPILE([#include <dirent.h>
++ ],[DIR *dir;],
+ AC_MSG_RESULT(-posix),
+ AC_MSG_RESULT()
+- CFLAGS=$gtk_save_CFLAGS
+- AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
++ CFLAGS="$gtk_save_CFLAGS"
++ AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])]))
+
+-if test x$with_glib = xyes ; then
+- AC_MSG_ERROR([
+-*** Directory must be specified for --with-glib])
++
++
++if test "x$with_glib" = "xyes" ; then
++ AC_MSG_ERROR([*** Directory must be specified for --with-glib])
+ fi
+
+-if test x$with_glib = x ; then
++if test "x$with_glib" = "x" ; then
+ # Look for separately installed glib
+
+ AM_PATH_GLIB(1.2.8,,
+@@ -261,7 +255,7 @@
+ else
+ # Use uninstalled glib (assume they got the version right)
+
+- GLIB_CONFIG=$with_glib/glib-config
++ GLIB_CONFIG="$with_glib/glib-config"
+ if test -x $GLIB_CONFIG ; then
+ :
+ else
+@@ -277,9 +271,9 @@
+ glib_release=`$GLIB_CONFIG --version | sed 's%\\.[[0-9]]*$%%'`
+
+ # canonicalize relative paths
+- case $with_glib in
++ case "$with_glib" in
+ /*)
+- glib_dir=$with_glib
++ glib_dir="$with_glib"
+ ;;
+ *)
+ glib_dir="\$(top_builddir)/$with_glib"
+@@ -312,61 +306,56 @@
+ saved_ldflags="$LDFLAGS"
+
+ CFLAGS="$CFLAGS $X_CFLAGS"
+-LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
++LDFLAGS="$LDFLAGS $X_LDFLAGS"
+
+ if test "x$no_x" = "xyes"; then
+ AC_MSG_ERROR([
+ *** X libraries or include files not found. Check 'config.log' for
+ *** more details.])
+ fi
+-
+ # Checks for libraries.
+ # Check for the X11 library
+-AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS",
++AC_CHECK_LIB(X11,XOpenDisplay,
++ x_libs="-lX11 $X_EXTRA_LIBS",
+ AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]),
+- $X_EXTRA_LIBS)
+-
++ $X_EXTRA_LIBS
++)
+ if test "x$enable_shm" = "xyes"; then
+ # Check for the Xext library (needed for XShm extention)
+ AC_CHECK_LIB(Xext, XShmAttach,
+ x_libs="-lXext $x_libs",
+ # On AIX, it is in XextSam instead, but we still need -lXext
+- AC_CHECK_LIB(XextSam, XShmAttach,
++ [AC_CHECK_LIB(XextSam, XShmAttach,
+ x_libs="-lXextSam -lXext $x_libs",
+- no_xext_lib=yes, $x_libs),
+- $x_libs)
++ no_xext_lib="yes",
++ $x_libs
++ )],
++ $x_libs
++ )
+ fi
+-
+ # Check for shaped window extension
+-
+ AC_CHECK_LIB(Xext, XShapeCombineMask,
+- if test -z "`echo $x_libs | grep "\-lXext" 2> /dev/null`"; then
++ if test -z "`echo $x_libs | grep \-lXext 2> /dev/null`"; then
+ x_libs="-lXext $x_libs"
+ fi
+- AC_DEFINE(HAVE_SHAPE_EXT),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_SHAPE_EXT),,
++ $x_libs
++)
+ # Check for XConvertCase (X11R6 specific)
+-
+ AC_CHECK_LIB(X11, XConvertCase,
+- AC_DEFINE(HAVE_XCONVERTCASE),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_XCONVERTCASE),,
++ $x_libs
++)
+ # Check for XIM support.
+-
+-AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,
+- : ,
++AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,,
+ enable_xim_inst="no",
+- $x_libs)
+-
++ $x_libs
++)
+ # On Solaris, calling XRegisterIMInstantiateCallback seems to
+ # cause an immediate segfault, so we disable it, unless
+ # the user specifically forces it to be on.
+-
+-if test x$enable_xim_inst = xmaybe ; then
+- case host in
++if test "x$enable_xim_inst" = "xmaybe" ; then
++ case "$host" in
+ *-*-solaris*)
+ enable_xim_inst="no"
+ ;;
+@@ -384,16 +373,15 @@
+ fi
+
+ x_cflags="$X_CFLAGS"
+-x_ldflags="$X_LDFLAGS $X_LIBS"
++x_ldflags="$X_LDFLAGS"
+
+ # set up things for XInput
+-
+ if test "x$with_xinput" = "xgxi"; then
+ AC_MSG_WARN([
+ *** The generic XInput support has not been tested for several years
+ *** and is not known to work with any currently available X servers])
+ AC_DEFINE(XINPUT_GXI)
+- xinput_progs=gxid
++ xinput_progs="gxid"
+ x_libs="-lXi $x_libs"
+ elif test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then
+ AC_DEFINE(XINPUT_XFREE)
+@@ -413,77 +401,72 @@
+
+ if test "x$enable_shm" = "xyes"; then
+ # Check for shared memory
+- AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
+- AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
++ AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc="yes")
++ AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm="yes")
+
+ # Check for the X shared memory extension header file
+ AC_MSG_CHECKING(X11/extensions/XShm.h)
+ if test "x$no_xext_lib" = "xyes"; then
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ else
+ if test -f "$x_includes/X11/extensions/XShm.h"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_XSHM_H)
+ else
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ fi
+ fi
+ fi
+-
+ # Check if X_LOCALE definition is necessary
+-
+ AC_MSG_CHECKING(need -DX_LOCALE)
+
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <locale.h>
+-
+-int
+-main ()
++ int main ()
+ {
+ return setlocale (LC_ALL, "${with_locale}") == NULL;
+ }],
+-need_x_locale=no,
+-need_x_locale=yes,
+-need_x_locale=no)
++ need_x_locale="no",
++ need_x_locale="yes",
++ need_x_locale="no"
++)
+ AC_MSG_RESULT($need_x_locale)
+
+-use_native_locale=no
+-if test $need_x_locale = yes; then
++use_native_locale="no"
++if test "$need_x_locale" = "yes"; then
+ GTK_LOCALE_FLAGS="-DX_LOCALE"
+ else
+- if test x$with_native_locale = xyes ; then
++ if test "x$with_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(functioning locale support)
+
+- AC_TRY_COMPILE([#include <stdlib.h>],[
+- char c;
++ AC_TRY_COMPILE([#include <stdlib.h>],
++ [char c;
+ if (MB_CUR_MAX == 1) {
+ wctomb(&c, 42);
+- }
+- ],use_native_locale=yes,)
+-
++ }],
++ use_native_locale="yes"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+ fi
+
+-if test x$use_native_locale = xyes ; then
++if test "x$use_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(if sizeof(wchar_t) == 4)
+
+- AC_TRY_RUN([
+- #include <stdlib.h>
+-
+- int
+- main ()
++ AC_TRY_RUN([#include <stdlib.h>
++ int main ()
+ {
+ return (sizeof(wchar_t) == 4) ? 0 : 1;
+- }],
+- ,use_native_locale=no,:)
++ }],,
++ use_native_locale="no"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+
+-if test $use_native_locale = yes ; then
++if test "$use_native_locale" = "yes" ; then
+ AC_DEFINE(USE_NATIVE_LOCALE)
+ fi
+
+@@ -502,13 +485,17 @@
+
+ # Check if <sys/select.h> needs to be included for fd_set
+ AC_MSG_CHECKING([for fd_set])
+-AC_TRY_COMPILE([#include <sys/types.h>],
+- [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_COMPILE([#include <sys/types.h>
++ ],
++ [fd_set readMask, writeMask;],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_MSG_RESULT([yes, found in sys/types.h])
+ else
+- AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
+- if test $gtk_ok = yes; then
++ AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok="yes")
++ if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_SYS_SELECT_H)
+ AC_MSG_RESULT([yes, found in sys/select.h])
+ else
+@@ -520,30 +507,35 @@
+ # Duplicate `widechar' tests from `glib'.
+ # Check for wchar.h
+ AC_MSG_CHECKING(for wchar.h)
+-AC_TRY_CPP([#include <wchar.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wchar.h>
++ ],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCHAR_H,1,[Define if wchar.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # Check for wctype.h (for iswalnum)
+ AC_MSG_CHECKING(for wctype.h)
+-AC_TRY_CPP([#include <wctype.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wctype.h>], gtk_ok="yes", gtk_ok="no")
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCTYPE_H,1,[Define if wctype.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # in Solaris 2.5, `iswalnum' is in -lw
+ GDK_WLIBS=
+-AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS=-lw)])
++AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS="-lw")])
+
+ # The following is necessary for Linux libc-5.4.38
+ oLIBS="$LIBS"
+ LIBS="$LIBS $GDK_WLIBS"
+ AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
+-AC_TRY_LINK([#include <stdlib.h>],[
+-#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
++AC_TRY_LINK([#include <stdlib.h>
++ ],
++ [#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
+ # ifdef HAVE_WCTYPE_H
+ # include <wctype.h>
+ # else
+@@ -554,11 +546,13 @@
+ #else
+ # define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
+ #endif
+-iswalnum((wchar_t) 0);
+-], gtk_ok=yes, gtk_ok=no)
++ iswalnum((wchar_t) 0);],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
+ LIBS="$oLIBS"
+
+-if test $gtk_ok = no; then
++if test "$gtk_ok" = "no"; then
+ AC_DEFINE(HAVE_BROKEN_WCTYPE,1,[Define if the wctype function is broken])
+ GDK_WLIBS=
+ fi
+@@ -580,5 +574,5 @@
+ gtk/Makefile
+ gtk/gtkfeatures.h
+ gdk.pc
+-gtk+.pc
+-], [chmod +x gtk-config])
++gtk+.pc],
++[chmod +x gtk-config])
+--- gtk+-1.2.10/gdk/Makefile.am.orig 2006-05-19 02:41:18.000000000 -0700
++++ gtk+-1.2.10/gdk/Makefile.am 2006-05-19 02:11:54.000000000 -0700
+@@ -21,12 +21,11 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+
++libgdk_la_LIBADD = @GLIB_DEPLIBS@ @x_libs@ -lm
++
+ #
+ # setup source file variables
+ #
+@@ -104,14 +103,13 @@
+ EXTRA_PROGRAMS = gxid
+ bin_PROGRAMS = @xinput_progs@
+ LDADDS = @STRIP_BEGIN@ \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+ -lm \
+ @STRIP_END@
+ gxid_SOURCES = gxid.c
+ gxid_LDADD = $(LDADDS)
+-
++gxid_LDFLAGS = @x_ldflags@
+
+ .PHONY: files
+
+--- gtk+-1.2.10/gtk/Makefile.am.orig 2006-05-25 07:40:45.000000000 -0700
++++ gtk+-1.2.10/gtk/Makefile.am 2006-05-25 07:43:20.000000000 -0700
+@@ -27,13 +27,15 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+-# $(top_builddir)/gdk/libgdk.la
+-
++libgtk_la_LIBADD = @STRIP_BEGIN@ \
++ $(top_builddir)/gdk/libgdk.la \
++ @x_libs@ \
++ @GDK_WLIBS@ \
++ @GLIB_LIBS@ \
++ -lm \
++ @STRIP_END@
+
+ #
+ # setup source file variables
+@@ -374,14 +376,17 @@
+
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja \
++# removed references to non-existent gtkrc files - tsh
++gtkconf_DATA = \
++ gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja \
+ gtkrc.ko gtkrc.ru gtkrc.th gtkrc.uk \
+- gtkrc.utf-8 gtkrc.iso-8859-2 \
+- gtkrc.iso-8859-3 gtkrc.iso-8859-5 gtkrc.iso-8859-7 \
+- gtkrc.iso-8859-9 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+- gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+- gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps \
+- gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++ gtkrc.iso-8859-2 gtkrc.iso-8859-5 \
++ gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
++ gtkrc.iso-8859-15 gtkrc.zh_TW.big5 \
++ gtkrc.zh_CN gtkrc.cp1251 gtkrc.cp1255 \
++ gtkrc.ka_GE.georgianacademy \
++ gtkrc.ka_GE.georgianps \
++ gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii
+
+ # We create a dummy theme for the default GTK+ theme
+ install-data-local:
+@@ -428,7 +433,6 @@
+ LDADDS = @STRIP_BEGIN@ \
+ libgtk.la \
+ $(top_builddir)/gdk/libgdk.la \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+@@ -441,12 +445,20 @@
+ testdnd_DEPENDENCIES = $(DEPS)
+ simple_DEPENDENCIES = $(DEPS)
+ #testthreads_DEPENDENCIES = $(DEPS)
++
+ testgtk_LDADD = $(LDADDS)
++testgtk_LDFLAGS=@x_ldflags@
+ testinput_LDADD = $(LDADDS)
++testinput_LDFLAGS = @x_ldflags@
+ testselection_LDADD = $(LDADDS)
++testselection_LDFLAGS = @x_ldflags@
+ testrgb_LDADD = $(LDADDS)
++testrgb_LDFLAGS = @x_ldflags@
+ testdnd_LDADD = $(LDADDS)
++testdnd_LDFLAGS = @x_ldflags@
+ simple_LDADD = $(LDADDS)
++simple_LDFLAGS = @x_ldflags@
++
+ #testthreads_LDADD = $(LDADDS)
+
+ .PHONY: files test test-debug
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-automake.diff b/x11-libs/gtk+/files/gtk+-1.2.10-automake.diff
new file mode 100644
index 0000000..e089f56
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-automake.diff
@@ -0,0 +1,293 @@
+diff -dPNur gtk+-1.2.10/docs/Makefile.am gtk+-1.2.10-ds/docs/Makefile.am
+--- gtk+-1.2.10/docs/Makefile.am 2014-10-01 19:39:24.369668923 +0200
++++ gtk+-1.2.10-ds/docs/Makefile.am 2014-10-01 19:42:46.667975511 +0200
+@@ -166,7 +166,7 @@
+ echo $$p; \
+ done
+
+-EXTRA_DIST += \
++EXTRA_DIST = \
+ Changes-1.2.txt \
+ debugging.txt \
+ developers.txt \
+diff -dPNur gtk+-1.2.10/gdk/Makefile.am gtk+-1.2.10-ds/gdk/Makefile.am
+--- gtk+-1.2.10/gdk/Makefile.am 2014-10-01 19:39:24.364668816 +0200
++++ gtk+-1.2.10-ds/gdk/Makefile.am 2014-10-01 19:44:27.190115302 +0200
+@@ -1,14 +1,13 @@
+ ## Makefile.am for gtk+/gdk
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DG_LOG_DOMAIN=\"Gdk\" \
+ -I$(top_srcdir) \
+ @GTK_DEBUG_FLAGS@ \
+ @GTK_XIM_FLAGS@ \
+ @GTK_LOCALE_FLAGS@ \
+ @GLIB_CFLAGS@ \
+- @x_cflags@ \
+-@STRIP_END@
++ @x_cflags@
+
+ #
+ # libraries to compile and install
+@@ -17,12 +16,11 @@
+
+ # libtool stuff: set version and export symbols for resolving
+ libgdkincludedir = $(includedir)/gtk-1.2/gdk
+-libgdk_la_LDFLAGS = @STRIP_BEGIN@ \
++libgdk_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @x_ldflags@ \
+-@STRIP_END@
++ @x_ldflags@
+
+ libgdk_la_LIBADD = @GLIB_DEPLIBS@ @x_libs@ -lm
+
+@@ -30,7 +28,7 @@
+ # setup source file variables
+ #
+ # GDK header files for public installation (non-generated)
+-gdk_public_h_sources = @STRIP_BEGIN@ \
++gdk_public_h_sources = \
+ gdk.h \
+ gdkcursors.h \
+ gdkrgb.h \
+@@ -38,9 +36,9 @@
+ gdkkeysyms.h \
+ gdkprivate.h \
+ gdktypes.h \
+- gdkx.h \
+-@STRIP_END@
+-gdk_c_sources = @STRIP_BEGIN@ \
++ gdkx.h
++
++gdk_c_sources = \
+ gdk.c \
+ gdkcc.c \
+ gdkcolor.c \
+@@ -71,17 +69,16 @@
+ MwmUtil.h \
+ gxid_lib.h \
+ gxid_proto.h \
+- gxid_lib.c \
+-@STRIP_END@
++ gxid_lib.c
+
+ #
+ # setup GDK sources and their dependancies
+ #
+ libgdkinclude_HEADERS = $(gdk_public_h_sources)
+ libgdk_la_SOURCES = $(gdk_c_sources)
+-MAINTAINERCLEANFILES +=
+-EXTRA_HEADERS +=
+-EXTRA_DIST +=
++MAINTAINERCLEANFILES =
++EXTRA_HEADERS =
++EXTRA_DIST =
+ EXTRA_DIST +=
+
+ #
+@@ -102,11 +99,10 @@
+ #
+ EXTRA_PROGRAMS = gxid
+ bin_PROGRAMS = @xinput_progs@
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+- -lm \
+-@STRIP_END@
++ -lm
+ gxid_SOURCES = gxid.c
+ gxid_LDADD = $(LDADDS)
+ gxid_LDFLAGS = @x_ldflags@
+diff -dPNur gtk+-1.2.10/gtk/Makefile.am gtk+-1.2.10-ds/gtk/Makefile.am
+--- gtk+-1.2.10/gtk/Makefile.am 2014-10-01 19:39:24.394669455 +0200
++++ gtk+-1.2.10-ds/gtk/Makefile.am 2014-10-01 19:45:06.767957759 +0200
+@@ -1,6 +1,6 @@
+ ## Makefile.am for gtk+/gtk
+
+-INCLUDES = @STRIP_BEGIN@ \
++INCLUDES = \
+ -DG_LOG_DOMAIN=\"Gtk\" \
+ -DGTK_DISABLE_COMPAT_H \
+ -DGTK_LIBDIR=\"$(libdir)\" \
+@@ -12,8 +12,7 @@
+ @GTK_XIM_FLAGS@ \
+ @GTK_LOCALE_FLAGS@ \
+ @GLIB_CFLAGS@ \
+- @x_cflags@ \
+-@STRIP_END@
++ @x_cflags@
+
+
+ #
+@@ -23,25 +22,23 @@
+
+ # libtool stuff: set version and export symbols for resolving
+ libgtkincludedir = $(includedir)/gtk-1.2/gtk
+-libgtk_la_LDFLAGS = @STRIP_BEGIN@ \
++libgtk_la_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @x_ldflags@ \
+-@STRIP_END@
+-libgtk_la_LIBADD = @STRIP_BEGIN@ \
++ @x_ldflags@
++libgtk_la_LIBADD = \
+ $(top_builddir)/gdk/libgdk.la \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+- -lm \
+- @STRIP_END@
++ -lm
+
+ #
+ # setup source file variables
+ #
+ # GTK+ header files for public installation (non-generated)
+-gtk_public_h_sources = @STRIP_BEGIN@ \
++gtk_public_h_sources = \
+ gtk.h \
+ gtkaccelgroup.h \
+ gtkaccellabel.h \
+@@ -150,13 +147,13 @@
+ gtkvscrollbar.h \
+ gtkvseparator.h \
+ gtkwidget.h \
+- gtkwindow.h \
+-@STRIP_END@
++ gtkwindow.h
++
+ # GTK+ header files that don't get installed
+-gtk_private_h_sources = @STRIP_BEGIN@ \
+-@STRIP_END@
++gtk_private_h_sources =
++
+ # GTK+ C sources to build the library from
+-gtk_c_sources = @STRIP_BEGIN@ \
++gtk_c_sources = \
+ gtkaccelgroup.c \
+ gtkaccellabel.c \
+ gtkadjustment.c \
+@@ -264,8 +261,8 @@
+ gtkwidget.c \
+ gtkwindow.c \
+ fnmatch.c \
+- fnmatch.h \
+-@STRIP_END@
++ fnmatch.h
++
+ # we use our own built_sources variable rules to avoid automake's
+ # BUILT_SOURCES oddities
+ # we generate frequently rebuild files piggyback on a stamp file, so sources
+@@ -273,7 +270,7 @@
+ # content
+ #
+ # built sources that don't get installed
+-gtk_built_sources = @STRIP_BEGIN@ \
++gtk_built_sources = \
+ stamp-gtk.defs \
+ stamp-gtktypebuiltins.h \
+ stamp-gtkmarshal.h \
+@@ -281,17 +278,17 @@
+ gtktypebuiltins_ids.c \
+ gtktypebuiltins_evals.c \
+ gtkmarshal.c \
+- gtk.defs \
+-@STRIP_END@
++ gtk.defs
++
+ # built sources that get installed with the header files
+-gtk_built_public_sources = @STRIP_BEGIN@ \
++gtk_built_public_sources = \
+ gtkmarshal.h \
+- gtktypebuiltins.h \
+-@STRIP_END@
++ gtktypebuiltins.h
++
+ # non-header sources (headers should be specified in the above variables)
+ # that don't serve as direct make target sources, i.e. they don't have
+ # their own .lo rules and don't get publically installed
+-gtk_extra_sources = @STRIP_BEGIN@ \
++gtk_extra_sources = \
+ gtkfeatures.h.in \
+ makeenums.pl \
+ makeenums.awk \
+@@ -300,22 +297,21 @@
+ gtkargcollector.c \
+ gtk-boxed.defs \
+ genmarshal.pl \
+- gtkmarshal.list \
+-@STRIP_END@
++ gtkmarshal.list
++
+ # Extra headers that are used for enum type array/id generation
+-gdk_headers = @STRIP_BEGIN@ \
++gdk_headers = \
+ ../gdk/gdktypes.h \
+- ../gdk/gdkrgb.h \
+-@STRIP_END@
++ ../gdk/gdkrgb.h
+
+ #
+ # setup GTK+ sources and their dependancies
+ #
+ libgtkinclude_HEADERS = $(gtk_public_h_sources) $(gtk_built_public_sources) gtkfeatures.h
+ libgtk_la_SOURCES = $(gtk_c_sources)
+-MAINTAINERCLEANFILES += $(gtk_built_public_sources) $(gtk_built_sources)
+-EXTRA_HEADERS +=
+-EXTRA_DIST += $(gtk_private_h_sources)
++MAINTAINERCLEANFILES = $(gtk_built_public_sources) $(gtk_built_sources)
++EXTRA_HEADERS =
++EXTRA_DIST = $(gtk_private_h_sources)
+ EXTRA_DIST += $(gtk_built_sources) $(gtk_built_public_sources) $(gtk_extra_sources)
+
+ #
+@@ -323,7 +319,7 @@
+ #
+ # setup autogeneration dependancies
+ gen_sources = xgen-gdef xgen-gtbh xgen-gtbvc xgen-gtbic xgen-gtbec xgen-gmh xgen-gmc
+-CLEANFILES += $(gen_sources)
++CLEANFILES = $(gen_sources)
+ COPYING: $(gtk_built_public_sources) $(gtk_built_sources)
+ $(OBJECTS): COPYING # this is our oldest-source-stamp
+ # initial creation of the real stamp-* files
+@@ -430,14 +426,14 @@
+ #
+ noinst_PROGRAMS = testgtk testinput testselection testrgb testdnd simple # testthreads
+ DEPS = libgtk.la $(top_builddir)/gdk/libgdk.la
+-LDADDS = @STRIP_BEGIN@ \
++LDADDS = \
+ libgtk.la \
+ $(top_builddir)/gdk/libgdk.la \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+- -lm \
+-@STRIP_END@
++ -lm
++
+ testgtk_DEPENDENCIES = $(DEPS)
+ testinput_DEPENDENCIES = $(DEPS)
+ testselection_DEPENDENCIES = $(DEPS)
+@@ -478,7 +474,7 @@
+ cd $$builddir; cd $(srcdir); \
+ $(SHELL) $$top_builddir/libtool --mode=execute gdb $$builddir/testgtk
+
+-EXTRA_DIST += @STRIP_BEGIN@ \
++EXTRA_DIST += \
+ testgtk.1 \
+ testgtkrc \
+ testgtkrc2 \
+@@ -499,5 +495,4 @@
+ check-y.xpm \
+ check-n.xpm \
+ test.xpm \
+- $(gtkconf_DATA) \
+-@STRIP_END@
++ $(gtkconf_DATA)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch
new file mode 100644
index 0000000..c165f7a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-border.patch
@@ -0,0 +1,66 @@
+--- gtk+-1.2.10/gtk/gtkoptionmenu.c.border Mon Feb 12 21:36:37 2001
++++ gtk+-1.2.10/gtk/gtkoptionmenu.c Wed Feb 13 18:26:17 2002
+@@ -342,30 +342,26 @@
+ GtkWidget *child;
+ GtkAllocation child_allocation;
+ GtkOptionMenuProps props;
++ gint border_width;
+
+- g_return_if_fail (widget != NULL);
+- g_return_if_fail (GTK_IS_OPTION_MENU (widget));
+- g_return_if_fail (allocation != NULL);
+-
+ gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
++ border_width = GTK_CONTAINER (widget)->border_width;
+
+ widget->allocation = *allocation;
+ if (GTK_WIDGET_REALIZED (widget))
+ gdk_window_move_resize (widget->window,
+- allocation->x, allocation->y,
+- allocation->width, allocation->height);
++ allocation->x + border_width, allocation->y + border_width,
++ allocation->width - 2 * border_width, allocation->height - 2 * border_width);
+
+ child = GTK_BIN (widget)->child;
+ if (child && GTK_WIDGET_VISIBLE (child))
+ {
+- child_allocation.x = (GTK_CONTAINER (widget)->border_width +
+- GTK_WIDGET (widget)->style->klass->xthickness) + 1;
+- child_allocation.y = (GTK_CONTAINER (widget)->border_width +
+- GTK_WIDGET (widget)->style->klass->ythickness) + 1;
+- child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2 -
++ child_allocation.x = GTK_WIDGET (widget)->style->klass->xthickness + 1;
++ child_allocation.y = GTK_WIDGET (widget)->style->klass->ythickness + 1;
++ child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2 - border_width * 2 -
+ props.indicator_width - props.indicator_left_spacing - props.indicator_right_spacing -
+ CHILD_LEFT_SPACING - CHILD_RIGHT_SPACING - 2);
+- child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2 -
++ child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2 - border_width * 2 -
+ CHILD_TOP_SPACING - CHILD_BOTTOM_SPACING - 2);
+ child_allocation.x += CHILD_LEFT_SPACING;
+ child_allocation.y += CHILD_TOP_SPACING;
+@@ -380,6 +376,7 @@
+ {
+ GdkRectangle button_area;
+ GtkOptionMenuProps props;
++ gint border_width;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_OPTION_MENU (widget));
+@@ -388,11 +385,12 @@
+ if (GTK_WIDGET_DRAWABLE (widget))
+ {
+ gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
++ border_width = GTK_CONTAINER (widget)->border_width;
+
+- button_area.x = GTK_CONTAINER (widget)->border_width + 1;
+- button_area.y = GTK_CONTAINER (widget)->border_width + 1;
+- button_area.width = widget->allocation.width - button_area.x * 2;
+- button_area.height = widget->allocation.height - button_area.y * 2;
++ button_area.x = 1;
++ button_area.y = 1;
++ button_area.width = widget->allocation.width - button_area.x * 2 - border_width * 2;
++ button_area.height = widget->allocation.height - button_area.y * 2 - border_width * 2;
+
+ /* This is evil, and should be elimated here and in the button
+ * code. The point is to clear the focus, and make it
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch
new file mode 100644
index 0000000..f3b8071
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-dndnewwindow.patch
@@ -0,0 +1,24 @@
+--- gtk+-1.2.10/gdk/gdkdnd.c.newwindow Tue Mar 14 00:41:53 2000
++++ gtk+-1.2.10/gdk/gdkdnd.c Wed Feb 13 18:40:04 2002
+@@ -275,12 +275,16 @@
+ GUINT_TO_POINTER (xce->above));
+ if (above_node && node->prev != above_node)
+ {
++ /* Put the window above (before in the list) above_node
++ */
+ cache->children = g_list_remove_link (cache->children, node);
+- node->next = above_node->next;
+- if (node->next)
+- node->next->prev = node;
+- node->prev = above_node;
+- above_node->next = node;
++ node->prev = above_node->prev;
++ if (node->prev)
++ node->prev->next = node;
++ else
++ cache->children = node;
++ node->next = above_node;
++ above_node->prev = node;
+ }
+ }
+ }
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch
new file mode 100644
index 0000000..7fa625a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-expose.patch
@@ -0,0 +1,29 @@
+--- gtk+-1.2.10/gdk/gdkevents.c.expose Sun Dec 3 17:02:49 2000
++++ gtk+-1.2.10/gdk/gdkevents.c Wed Feb 13 17:53:38 2002
+@@ -383,6 +383,7 @@
+ struct _GdkExposeInfo
+ {
+ Window window;
++ Window toplevel_window;
+ gboolean seen_nonmatching;
+ };
+
+@@ -401,7 +402,9 @@
+ * expose events.
+ */
+ if (xevent->xany.type != Expose &&
+- xevent->xany.type != GravityNotify)
++ xevent->xany.type != GravityNotify &&
++ (xevent->xany.type != ConfigureNotify ||
++ xevent->xany.window == info->toplevel_window))
+ {
+ info->seen_nonmatching = TRUE;
+ }
+@@ -429,6 +432,7 @@
+ GdkEvent event;
+
+ info.window = xevent->xany.window;
++ info.toplevel_window = GDK_WINDOW_XWINDOW (gdk_window_get_toplevel (window));
+ info.seen_nonmatching = FALSE;
+
+ rect1.x = xevent->xexpose.x;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch
new file mode 100644
index 0000000..96c3662
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-focus.patch
@@ -0,0 +1,17 @@
+--- gtk-1.2.10/gtk/gtkwindow.c.orig Sat Mar 10 00:39:16 2001
++++ gtk-1.2.10/gtk/gtkwindow.c Thu Apr 26 00:30:52 2001
+@@ -985,7 +985,13 @@
+ break;
+ case EnterNotify:
+ case LeaveNotify:
+- if (xev->xcrossing.detail != NotifyInferior &&
++ /* We only track the actual destination of keyboard events for real
++ * toplevels, not for embedded toplevels such as GtkPlug. The reason for
++ * this is that GtkPlug redirects events so the widget may effectively not
++ * have the focus even if it actually has the focus.
++ */
++ if (gdk_window_get_parent (GTK_WIDGET (window)->window) == GDK_ROOT_PARENT () &&
++ xev->xcrossing.detail != NotifyInferior &&
+ xev->xcrossing.focus && !window->window_has_focus)
+ {
+ window->window_has_pointer_focus = (xev->xany.type == EnterNotify) ? TRUE : FALSE;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch
new file mode 100644
index 0000000..5fa0e0b
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-labelvariable.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gtk/gtklabel.c.labelvariable Mon Apr 2 05:12:38 2001
++++ gtk+-1.2.10/gtk/gtklabel.c Wed Feb 13 17:57:15 2002
+@@ -1004,7 +1004,7 @@
+ *r = 0;
+
+ result_str = gdk_wcstombs (string_wc);
+- if (string)
++ if (result_str)
+ {
+ gtk_label_set_text_internal (label, result_str, string_wc);
+ gtk_label_set_pattern (label, pattern);
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch
new file mode 100644
index 0000000..a9c7bbf
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-netwmpid.patch
@@ -0,0 +1,28 @@
+--- gtk-1.2.10/gdkwindow.c Tue Jan 22 16:42:19 2002
++++ gtk/gdk/gdkwindow.c Sat Oct 13 17:10:16 2001
+@@ -28,6 +28,9 @@
+ #include <X11/Xutil.h>
+ #include <X11/Xatom.h>
+ #include <netinet/in.h>
++#include <sys/types.h>
++#include <unistd.h>
++
+ #include "gdk.h"
+ #include "config.h"
+ #include "gdkinput.h"
+@@ -488,6 +491,15 @@
+ XFree (class_hint);
+ }
+
++ {
++ gulong pid = getpid ();
++
++ XChangeProperty (private->xdisplay, private->xwindow,
++ gdk_atom_intern ("_NET_WM_PID", FALSE),
++ XA_CARDINAL, 32,
++ PropModeReplace,
++ (guchar *)&pid, 1);
++ }
+
+ return window;
+ }
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch
new file mode 100644
index 0000000..2340efd
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-cvs-rclocale.patch
@@ -0,0 +1,133 @@
+--- gtk+-1.2.10/gtk/gtkrc.c.encoding Thu Mar 15 13:41:40 2001
++++ gtk+-1.2.10/gtk/gtkrc.c Thu Jul 5 12:48:48 2001
+@@ -33,6 +33,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <langinfo.h>
+
+ #include "gtkrc.h"
+ #include "gtkbindings.h"
+@@ -440,7 +441,7 @@
+ void
+ gtk_rc_init (void)
+ {
+- static gchar *locale_suffixes[3];
++ static gchar *locale_suffixes[8];
+ static gint n_locale_suffixes = 0;
+
+ gint i, j;
+@@ -449,9 +450,7 @@
+
+ if (!initted)
+ {
+- gint length;
+-
+- char *locale = setlocale (LC_CTYPE, NULL);
++ char *locale = g_strdup (setlocale (LC_CTYPE, NULL));
+ char *p;
+
+ initted = TRUE;
+@@ -470,39 +469,84 @@
+ * We normalize the charset into a standard form,
+ * which has all '-' and '_' characters removed,
+ * and is lowercase.
++ *
++ * the search is done in that order:
++ * gtkrc.ll_cc.lowercasecodeset
++ * gtkrc.ll_cc.normalizedcodeset
++ * gtkrc.ll.lowercasecodeset
++ * gtkrc.ll.normalizedcodeset
++ * gtkrc.lowercasecodeset
++ * gtkrc.normalizedcodeset
++ * gtkrc.ll_cc
++ * gtkrc.ll
++ *
+ */
+- gchar *normalized_locale;
++ char *codeset = NULL;
++ char *normalized_codeset = NULL;
++ char *cc = NULL;
++ char *ll;
+
+ p = strchr (locale, '@');
+- length = p ? (p -locale) : strlen (locale);
++ if (p)
++ *p = '\0';
+
++ codeset = nl_langinfo (CODESET);
++
+ p = strchr (locale, '.');
++ if (!codeset && p)
++ codeset = p + 1;
+ if (p)
++ *p = '\0';
++
++ if (codeset)
+ {
+- gchar *tmp1 = g_strndup (locale, p - locale + 1);
+- gchar *tmp2 = _gtk_normalize_codeset (p + 1, length - (p - locale + 1));
++ codeset = g_strdup (codeset);
+
+- normalized_locale = g_strconcat (tmp1, tmp2, NULL);
+- g_free (tmp1);
+- g_free (tmp2);
+-
+- locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_locale);
+- length = p - locale;
++ p = codeset;
++ while (*p)
++ {
++ /* tolower not used, because some locales are not
++ * compatible with C locale in lowercasing ascii
++ */
++ if (*p >= 'A' && *p <= 'Z')
++ *p = (*p) - 'A' + 'a';
++ p++;
++ }
++
++ normalized_codeset = _gtk_normalize_codeset(codeset, strlen (codeset));
++ if (strcmp (normalized_codeset, codeset) == 0)
++ normalized_codeset = NULL;
+ }
+- else
+- normalized_locale = g_strndup (locale, length);
+
+- p = strchr (normalized_locale, '_');
++ p = strchr (locale, '_');
+ if (p)
+ {
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+- length = p - normalized_locale;
++ cc = p + 1;
++ *p = '\0';
+ }
+-
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+
+- g_free (normalized_locale);
++ ll = locale;
++
++ if (cc && codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", codeset, NULL);
++ if (cc && normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", codeset, NULL);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (codeset);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_codeset);
++ if (cc)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, NULL);
++ locale_suffixes[n_locale_suffixes++] = g_strdup (ll);
++
++ g_free (codeset);
+ }
++
++ g_free (locale);
+ }
+
+ i = 0;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-m4.patch b/x11-libs/gtk+/files/gtk+-1.2.10-m4.patch
new file mode 100644
index 0000000..37fb7c2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-m4.patch
@@ -0,0 +1,9 @@
+Fix aclocal warnings:
+/usr/share/aclocal/gtk.m4:7: warning: underquoted definition of AM_PATH_GTK
+--- gtk+-1.2.10/gtk.m4
++++ gtk+-1.2.10/gtk.m4
+@@ -6,3 +6,3 @@
+ dnl
+-AC_DEFUN(AM_PATH_GTK,
++AC_DEFUN([AM_PATH_GTK],
+ [dnl
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch
new file mode 100644
index 0000000..de4a3cf
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-argb.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gdk/gdk.c.argb 2006-07-25 18:30:47.000000000 +0200
++++ gtk+-1.2.10/gdk/gdk.c 2006-07-25 18:32:24.000000000 +0200
+@@ -408,6 +408,8 @@
+ }
+
+ GDK_NOTE (MISC, g_message ("progname: \"%s\"", g_get_prgname ()));
++
++ putenv("XLIB_SKIP_ARGB_VISUALS=1");
+
+ gdk_display = XOpenDisplay (gdk_display_name);
+ if (!gdk_display)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch
new file mode 100644
index 0000000..14ebbb2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-defaultcolor.patch
@@ -0,0 +1,19 @@
+--- gtk+-1.2.10/gtk/gtkstyle.c.orig 2003-01-22 15:41:57.000000000 +0100
++++ gtk+-1.2.10/gtk/gtkstyle.c 2003-01-22 16:27:31.000000000 +0100
+@@ -326,11 +326,11 @@
+ static GdkColor gtk_default_selected_fg = { 0, 0xffff, 0xffff, 0xffff };
+ static GdkColor gtk_default_insensitive_fg = { 0, 0x7530, 0x7530, 0x7530 };
+
+-static GdkColor gtk_default_normal_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };
+-static GdkColor gtk_default_active_bg = { 0, 0xc350, 0xc350, 0xc350 };
+-static GdkColor gtk_default_prelight_bg = { 0, 0xea60, 0xea60, 0xea60 };
+-static GdkColor gtk_default_selected_bg = { 0, 0, 0, 0x9c40 };
+-static GdkColor gtk_default_insensitive_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };
++static GdkColor gtk_default_normal_bg = { 0, 0xdcdc, 0xdada, 0xd5d5 };
++static GdkColor gtk_default_active_bg = { 0, 0xbaba, 0xb5b5, 0xabab };
++static GdkColor gtk_default_prelight_bg = { 0, 0xeeee, 0xebeb, 0xe7e7 };
++static GdkColor gtk_default_selected_bg = { 0, 0x4b4b, 0x6969, 0x8383 };
++static GdkColor gtk_default_insensitive_bg = { 0, 0xdcdc, 0xdada, 0xd5d5 };
+
+ GtkStyle*
+ gtk_style_copy (GtkStyle *style)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch
new file mode 100644
index 0000000..c2d895c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-fileselectorfallback.patch
@@ -0,0 +1,46 @@
+--- gtk+-1.2.10/gtk/gtkfilesel.c.fileselectorfallback 2002-09-11 11:25:27.000000000 +0200
++++ gtk+-1.2.10/gtk/gtkfilesel.c 2002-09-11 13:05:39.000000000 +0200
+@@ -1578,6 +1578,7 @@
+ {
+ gchar getcwd_buf[2*MAXPATHLEN];
+ CompletionState *new_state;
++ gint fallback = 0;
+
+ new_state = g_new (CompletionState, 1);
+
+@@ -1594,6 +1595,7 @@
+ * a root directory, right? Right? (Probably not portable to non-Unix)
+ */
+ strcpy (getcwd_buf, "/");
++ fallback = 1;
+ }
+
+ tryagain:
+@@ -1616,7 +1618,26 @@
+ if (!new_state->reference_dir)
+ {
+ /* Directories changing from underneath us, grumble */
+- strcpy (getcwd_buf, "/");
++ if (fallback == 0) {
++ strcpy (getcwd_buf, "/");
++ fallback = 1;
++ }
++ else {
++ if (fallback == 1) { /* last try with user home dir */
++ if (g_get_home_dir ()) {
++ strcpy (getcwd_buf, g_get_home_dir ());
++ }
++ fallback = 2;
++ }
++ else {
++ g_error ("no readable fallback directory found for GtkFileSelector, exiting");
++ }
++ }
++ /* don't leak updated_text and the_completion.text */
++ if (new_state->the_completion.text)
++ g_free (new_state->the_completion.text);
++ if (new_state->updated_text)
++ g_free (new_state->updated_text);
+ goto tryagain;
+ }
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch
new file mode 100644
index 0000000..c07447b
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtklist.patch
@@ -0,0 +1,62 @@
+--- gtk+-1.2.10/gtk/gtklist.c.gtklist Wed Jan 31 22:19:29 2001
++++ gtk+-1.2.10/gtk/gtklist.c Wed Feb 13 18:19:31 2002
+@@ -1299,7 +1299,7 @@
+ if (start_list->prev)
+ new_focus_child = start_list->prev->data;
+ else if (list->children)
+- new_focus_child = list->children->prev->data;
++ new_focus_child = list->children->data;
+
+ if (GTK_WIDGET_HAS_FOCUS (container->focus_child))
+ grab_focus = TRUE;
+@@ -1312,16 +1312,20 @@
+ widget = tmp_list->data;
+ tmp_list = tmp_list->next;
+
++ gtk_widget_ref (widget);
++
+ if (widget->state == GTK_STATE_SELECTED)
+ gtk_list_unselect_child (list, widget);
+
++ gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
++ gtk_widget_unparent (widget);
++
+ if (widget == list->undo_focus_child)
+ list->undo_focus_child = NULL;
+ if (widget == list->last_focus_child)
+ list->last_focus_child = NULL;
+
+- gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
+- gtk_widget_unparent (widget);
++ gtk_widget_unref (widget);
+ }
+
+ g_list_free (start_list);
+@@ -1431,6 +1435,7 @@
+ widget = tmp_list->data;
+ tmp_list = tmp_list->next;
+
++ gtk_widget_ref (widget);
+ if (no_unref)
+ gtk_widget_ref (widget);
+
+@@ -1449,14 +1454,16 @@
+ }
+ }
+
++ gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
++ list->children = g_list_remove (list->children, widget);
++ gtk_widget_unparent (widget);
++
+ if (widget == list->undo_focus_child)
+ list->undo_focus_child = NULL;
+ if (widget == list->last_focus_child)
+ list->last_focus_child = NULL;
+
+- gtk_signal_disconnect_by_data (GTK_OBJECT (widget), (gpointer) list);
+- list->children = g_list_remove (list->children, widget);
+- gtk_widget_unparent (widget);
++ gtk_widget_unref (widget);
+ }
+
+ if (new_focus_child && new_focus_child != old_focus_child)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch
new file mode 100644
index 0000000..d7018b7
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-gtkrc_files.patch
@@ -0,0 +1,371 @@
+--- gtk+-1.2.10/gtk/gtkrc.hy_AM.utf8.rclocale Thu Feb 14 17:16:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.hy_AM.utf8 Thu Feb 14 17:19:33 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-armnet helvetica-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-artsounk-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.ja_JP.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.ja_JP.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-sazanami mincho-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-kochi mincho-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.tg_TJ.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.tg_TJ.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,9 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-bookman-light-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-urw bookman l-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.tr.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.tr Wed Feb 13 16:52:34 2002
+@@ -1,8 +0,0 @@
+-style "gtk-default-tr" {
+- fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-tr"
+-
+--- gtk+-1.2.10/gtk/gtkrc.zh_TW.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.zh_TW.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-AR PL Mingti2L Big5-medium-r-normal--16-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.utf-8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.utf-8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-nimbus sans l-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.ko_KR.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.ko_KR.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-baekmuk gulim-medium-r-normal--16-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.zh_CN.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.zh_CN Wed Feb 13 16:52:34 2002
+@@ -7,7 +7,7 @@
+ #
+
+ style "gtk-default-zh-cn" {
+- fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
+ -*-*-medium-r-normal--16-*-*-*-*-*-gb2312.1980-0,*-r-*"
+ }
+ class "GtkWidget" style "gtk-default-zh-cn"
+--- gtk+-1.2.10/gtk/gtkrc.az.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.az Wed Feb 13 16:52:34 2002
+@@ -2,7 +2,9 @@
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9e,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9e,*-r-*"
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9e,\
++ -*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -urw-nimbus sans l-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
+ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso10646-1,\
+ -*-arial-medium-r-normal--12-*-*-*-*-*-iso10646-1,*-r-*"
+ }
+--- gtk+-1.2.10/gtk/gtkrc.az_AZ.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.az_AZ.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -urw-nimbus sans l-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.el_GR.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.el_GR.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-kerkis-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.iso-8859-9.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso-8859-9 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default-tr" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9,*-r-*"
++}
++class "GtkWidget" style "gtk-default-tr"
++
+--- gtk+-1.2.10/gtk/gtkrc.eo.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.eo Wed Feb 13 16:52:34 2002
+@@ -1,8 +0,0 @@
+-style "gtk-default-eo" {
+- fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-3,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-3,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-eo"
+-
+--- gtk+-1.2.10/gtk/gtkrc.ru.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.ru Wed Feb 13 16:52:34 2002
+@@ -1,8 +1,9 @@
+ style "gtk-default-ru" {
+- fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -cronyx-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,*-r-*"
++ fontset = "-*-arial-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
++ -adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-*,\
++ -*-arial-medium-r-normal--14-*-*-*-*-*-koi8-r,\
++ -cronyx-helvetica-medium-r-normal--14-*-*-*-*-*-koi8-r,\
++ *-r-*"
+ }
+ class "GtkWidget" style "gtk-default-ru"
+
+--- gtk+-1.2.10/gtk/gtkrc.th_TH.utf8.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.th_TH.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,15 @@
++# $(gtkconfigdir)/gtkrc.th
++#
++# This file defines the fontsets for Thai language (th) using
++# the UTF-8 charset encoding.
++#
++# 2004, Pablo Saratxaga <pablo@mandrakesoft.com>
++#
++
++style "gtk-default-th" {
++ fontset = "-*-norasi-medium-r-normal--18-*-*-*-*-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default-th"
++
+--- gtk+-1.2.10/gtk/gtkrc.th.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.th Wed Feb 13 16:52:34 2002
+@@ -8,8 +8,8 @@
+
+ style "gtk-default-th" {
+- fontset = "-*-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-1,\
+- -*-phaisarn-medium-r-normal--14-*-*-*-*-*-tis620.2533-1,\
+- -*-*-medium-r-normal--14-*-*-*-*-*-tis620.2533-1,*-r-*"
++ fontset = "-*-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
++ -*-norasi-medium-r-normal--18-*-*-*-*-*-tis620-0,\
++ -*-*-medium-r-normal--16-*-*-*-*-*-tis620-0,*-r-*"
+ }
+ class "GtkWidget" style "gtk-default-th"
+
+--- gtk+-1.2.10/gtk/Makefile.am.rclocale Fri Feb 2 18:09:02 2001
++++ gtk+-1.2.10/gtk/Makefile.am Wed Feb 13 16:52:34 2002
+@@ -374,11 +374,16 @@
+
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
+- gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
+- gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
++gtkconf_DATA = gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja \
++ gtkrc.ko gtkrc.ru gtkrc.th gtkrc.th_TH.utf8 gtkrc.uk \
++ gtkrc.utf-8 gtkrc.iso-8859-2 \
++ gtkrc.iso-8859-3 gtkrc.iso-8859-5 gtkrc.iso-8859-7 \
++ gtkrc.iso-8859-9 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+ gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+ gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps \
++ gtkrc.az_AZ.utf8 gtkrc.ja_JP.utf8 gtkrc.ko_KR.utf8 gtkrc.hy_AM.utf8 \
++ gtkrc.tg_TJ.utf8 gtkrc.zh_CN.utf8 gtkrc.zh_TW.utf8 gtkrc.ka_GE.utf8 \
++ gtkrc.el_GR.utf8 gtkrc.am_ET.utf8 gtkrc.vi_VN.utf8 \
+ gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+
+ # We create a dummy theme for the default GTK+ theme
+@@ -409,9 +414,13 @@
+ ln -s gtkrc.iso-8859-14 gtkrc.cy ; \
+ ln -s gtkrc.iso-8859-14 gtkrc.ga ; \
+ ln -s gtkrc.iso-8859-15 gtkrc.et ; \
+- ln -s gtkrc.ka_GE.georgianps gtkrc.ka ; \
++ ln -s gtkrc.ka_GE.utf8 gtkrc.ka ; \
+ ln -s gtkrc.vi_VN.viscii gtkrc.vi_VN.viscii111 ; \
+- ln -s gtkrc.vi_VN.tcvn gtkrc.vi ; \
++ ln -s gtkrc.vi_VN.utf8 gtkrc.vi ; \
++ ln -s gtkrc.zh_CN gtkrc.zh_SG ; \
++ ln -s gtkrc.zh_CN.utf8 gtkrc.zh_SG.utf8 ; \
++ ln -s gtkrc.zh_TW.big5 gtkrc.zh_HK ; \
++ ln -s gtkrc.zh_TW.utf8 gtkrc.zh_TW.utf8 ; \
+ ln -s gtkrc.cp1251 gtkrc.be ; \
+ ln -s gtkrc.cp1251 gtkrc.bg
+
+--- gtk+-1.2.10/gtk/gtkrc.ja.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.ja Wed Feb 13 16:52:34 2002
+@@ -1,5 +1,5 @@
+ style "gtk-default-ja" {
+- fontset = "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1,\
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
+ -ricoh-ms mincho-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,\
+ -misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,\
+ *-r-*"
+--- gtk+-1.2.10/gtk/gtkrc.el.rclocale Mon May 8 20:49:18 2000
++++ gtk+-1.2.10/gtk/gtkrc.el Wed Feb 13 16:52:34 2002
+@@ -1,8 +0,0 @@
+-style "gtk-default-el" {
+- fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-7,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-7,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-el"
+-
+--- gtk+-1.2.10/gtk/gtkrc.vi_VN.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.vi_VN.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,8 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -urw-nimbus sans l-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.am_ET.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.am_ET.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-gf zemen unicode-medium-r-normal--14-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.ka_GE.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.ka_GE.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset = "-*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/Makefile.in.rclocale Mon Apr 2 05:14:13 2001
++++ gtk+-1.2.10/gtk/Makefile.in Wed Feb 13 16:52:34 2002
+@@ -191,8 +191,7 @@
+ CLEANFILES = $(gen_sources)
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+-
++gtkconf_DATA = gtkrc.az gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.th gtkrc.th_TH.utf8 gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.utf8 gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255 gtkrc.utf-8 gtkrc.iso-8859-3 gtkrc.iso-8859-7 gtkrc.iso-8859-9 gtkrc.az_AZ.utf8 gtkrc.ja_JP.utf8 gtkrc.ko_KR.utf8 gtkrc.tg_TJ.utf8 gtkrc.zh_CN.utf8 gtkrc.zh_TW.utf8 gtkrc.ka_GE.utf8 gtkrc.hy_AM.utf8 gtkrc.el_GR.utf8 gtkrc.am_ET.utf8
+
+ #
+ # test programs, not to be installed
+@@ -1505,9 +1504,13 @@
+ ln -s gtkrc.iso-8859-14 gtkrc.cy ; \
+ ln -s gtkrc.iso-8859-14 gtkrc.ga ; \
+ ln -s gtkrc.iso-8859-15 gtkrc.et ; \
+- ln -s gtkrc.ka_GE.georgianps gtkrc.ka ; \
++ ln -s gtkrc.ka_GE.utf8 gtkrc.ka ; \
+ ln -s gtkrc.vi_VN.viscii gtkrc.vi_VN.viscii111 ; \
+- ln -s gtkrc.vi_VN.tcvn gtkrc.vi ; \
++ ln -s gtkrc.vi_VN.utf8 gtkrc.vi ; \
++ ln -s gtkrc.zh_CN gtkrc.zh_SG ; \
++ ln -s gtkrc.zh_CN.utf8 gtkrc.zh_SG.utf8 ; \
++ ln -s gtkrc.zh_TW.big5 gtkrc.zh_HK ; \
++ ln -s gtkrc.zh_TW.utf8 gtkrc.zh_TW.utf8 ; \
+ ln -s gtkrc.cp1251 gtkrc.be ; \
+ ln -s gtkrc.cp1251 gtkrc.bg
+
+--- gtk+-1.2.10/gtk/gtkrc.zh_CN.utf8.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.zh_CN.utf8 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,7 @@
++style "gtk-default" {
++ fontset ="-*-AR PL SungtiL GB-medium-r-normal--16-*-*-*-p-*-iso10646-1,\
++ -*-clearlyu-medium-r-normal--17-*-*-*-p-*-iso10646-1,\
++ -*-r-*-iso10646-1,*"
++}
++class "GtkWidget" style "gtk-default"
++
+--- gtk+-1.2.10/gtk/gtkrc.zh_TW.big5.rclocale Fri Nov 3 23:40:27 2000
++++ gtk+-1.2.10/gtk/gtkrc.zh_TW.big5 Wed Feb 13 16:52:34 2002
+@@ -10,8 +10,8 @@
+ # the lowercasing of "big5" is done on purpose, if you change it it won't work
+
+ style "gtk-default-zh-tw" {
+- fontset = "-adobe-helvetica-medium-r-normal--16-*-*-*-*-*-iso8859-1,\
+- -taipei-*-medium-r-normal--*-*-*-*-*-*-big5-0,\
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
++ -taipei-*-medium-r-normal--16-*-*-*-*-*-big5-0,\
+ -*-*-medium-r-normal--16-*-*-*-*-*-big5-0,*-r-*"
+ }
+ class "GtkWidget" style "gtk-default-zh-tw"
+--- gtk+-1.2.10/gtk/gtkrc.iso-8859-7.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso-8859-7 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,9 @@
++style "gtk-default-el" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso8859-7,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-7,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-7,*-r-*"
++}
++class "GtkWidget" style "gtk-default-el"
++
+--- gtk+-1.2.10/gtk/gtkrc.ko.rclocale Tue Oct 19 13:39:25 1999
++++ gtk+-1.2.10/gtk/gtkrc.ko Wed Feb 13 16:52:34 2002
+@@ -1,8 +1,8 @@
+ style "gtk-default-ko" {
+- fontset = "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*,\
+- -*-gulim-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,\
+- -*-kodig-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,\
+- -*-*-medium-r-normal--*-120-*-*-*-*-ksc5601.1987-0,*"
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-*,\
++ -*-gulim-medium-r-normal--*-140-*-*-*-*-ksc5601.1987-0,\
++ -*-kodig-medium-r-normal--*-140-*-*-*-*-ksc5601.1987-0,\
++ -*-*-medium-r-normal--*-140-*-*-*-*-ksc5601.1987-0,*"
+ }
+ class "GtkWidget" style "gtk-default-ko"
+
+--- gtk+-1.2.10/gtk/gtkrc.iso-8859-3.rclocale Wed Feb 13 16:52:34 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso-8859-3 Wed Feb 13 16:52:34 2002
+@@ -0,0 +1,10 @@
++style "gtk-default-eo" {
++ fontset = "-*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-bpg glaho international-medium-r-normal--12-*-*-*-p-*-iso8859-3,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-3,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-3,*-r-*"
++}
++class "GtkWidget" style "gtk-default-eo"
++
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch
new file mode 100644
index 0000000..b32cbdb
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-libdir.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gtk-config.in.libdir 2002-06-17 18:07:31.000000000 +0200
++++ gtk+-1.2.10/gtk-config.in 2002-06-17 18:07:50.000000000 +0200
+@@ -96,7 +96,7 @@
+
+ if test "$echo_libs" = "yes"; then
+ my_glib_libs=
+- libdirs=-L@libdir@
++ libdirs=
+ for i in $glib_libs ; do
+ if test $i != -L@libdir@ ; then
+ if test -z "$my_glib_libs" ; then
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch
new file mode 100644
index 0000000..5bf8490
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-mdk-themeswitch.patch
@@ -0,0 +1,88 @@
+--- gtk+-1.2.10/gtk/gtkwindow.c.themeswitch Mon Aug 13 13:42:05 2001
++++ gtk+-1.2.10/gtk/gtkwindow.c Mon Aug 13 13:42:05 2001
+@@ -859,13 +859,60 @@
+ GTK_OBJECT_CLASS(parent_class)->finalize (object);
+ }
+
++
++static void
++reread_rc_files ()
++{
++ if (gtk_rc_reparse_all ())
++ {
++ /* If the above returned true, some of our RC files are out
++ * of date, so we need to reset all our widgets. Our other
++ * toplevel windows will also get the message, but by
++ * then, the RC file will up to date, so we have to tell
++ * them now.
++ */
++ GList *toplevels;
++
++ toplevels = gtk_container_get_toplevels();
++ while (toplevels)
++ {
++ gtk_widget_reset_rc_styles (toplevels->data);
++ toplevels = toplevels->next;
++ }
++ }
++}
++
+ static void
+ gtk_window_show (GtkWidget *widget)
+ {
+ GtkWindow *window = GTK_WINDOW (widget);
+ GtkContainer *container = GTK_CONTAINER (window);
+ gboolean need_resize;
++ GList *toplevels;
++ gboolean had_visible = FALSE;
+
++ /* If we have no windows shown at this point, then check for
++ * theme changes before showing the window. We really should
++ * be checking realized, not shown, but shown => realized,
++ * and checking in realize might cause reentrancy problems.
++ *
++ * Plus, this allows us to get the new size right before
++ * realizing.
++ */
++ toplevels = gtk_container_get_toplevels ();
++ while (toplevels)
++ {
++ if (GTK_WIDGET_VISIBLE (toplevels->data))
++ {
++ had_visible = TRUE;
++ break;
++ }
++ toplevels = toplevels->next;
++ }
++
++ if (!had_visible)
++ reread_rc_files ();
++
+ GTK_WIDGET_SET_FLAGS (widget, GTK_VISIBLE);
+
+ need_resize = container->need_resize || !GTK_WIDGET_REALIZED (widget);
+@@ -1480,23 +1527,7 @@
+ }
+ }
+
+- if (gtk_rc_reparse_all ())
+- {
+- /* If the above returned true, some of our RC files are out
+- * of date, so we need to reset all our widgets. Our other
+- * toplevel windows will also get the message, but by
+- * then, the RC file will up to date, so we have to tell
+- * them now.
+- */
+- GList *toplevels;
+-
+- toplevels = gtk_container_get_toplevels();
+- while (toplevels)
+- {
+- gtk_widget_reset_rc_styles (toplevels->data);
+- toplevels = toplevels->next;
+- }
+- }
++ reread_rc_files ();
+ }
+
+ static gint
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch
new file mode 100644
index 0000000..7d90898
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-alignment.patch
@@ -0,0 +1,29 @@
+--- gtk+-1.2.10/gtk/gtktypeutils.h.alignment Fri Aug 18 17:36:34 2000
++++ gtk+-1.2.10/gtk/gtktypeutils.h Tue Jul 3 21:07:40 2001
+@@ -191,6 +191,13 @@
+ GtkTypeClass *klass;
+ };
+
++#ifdef __GNUC__
++struct _GtkTypeClassDummyAlign
++{
++ GtkType type;
++ guint *signals;
++};
++#endif /* __GNUC__ */
+
+ /* A GtkTypeClass defines the minimum structure requirements for
+ * a types class. Classes returned from gtk_type_class () and
+@@ -203,7 +210,11 @@
+ * one unique identifier per class.
+ */
+ GtkType type;
+-};
++}
++#ifdef __GNUC__
++__attribute__ ((aligned (__alignof (struct _GtkTypeClassDummyAlign))))
++#endif /* __GNUC__ */
++;
+
+
+ struct _GtkArg
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch
new file mode 100644
index 0000000..c64293c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-bellvolume.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gdk/gdk.c.bellvolume Wed Jan 15 12:32:25 2003
++++ gtk+-1.2.10/gdk/gdk.c Wed Jan 15 12:32:28 2003
+@@ -989,7 +989,7 @@
+ void
+ gdk_beep (void)
+ {
+- XBell(gdk_display, 100);
++ XBell(gdk_display, 0);
+ }
+
+ /*
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch
new file mode 100644
index 0000000..afae023
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-clistfocusrow.patch
@@ -0,0 +1,30 @@
+Index: gtk/gtkclist.c
+===================================================================
+RCS file: /cvs/gnome/gtk+/gtk/gtkclist.c,v
+retrieving revision 1.156.2.25
+retrieving revision 1.156.2.26
+diff -u -p -r1.156.2.25 -r1.156.2.26
+--- gtk/gtkclist.c 1 Mar 2001 00:18:20 -0000 1.156.2.25
++++ gtk/gtkclist.c 14 Dec 2002 04:17:03 -0000 1.156.2.26
+@@ -2800,10 +2800,6 @@ real_remove_row (GtkCList *clist,
+ clist->row_list_end = g_list_previous (list);
+ g_list_remove (list, clist_row);
+
+- /*if (clist->focus_row >=0 &&
+- (row <= clist->focus_row || clist->focus_row >= clist->rows))
+- clist->focus_row--;*/
+-
+ if (row < ROW_FROM_YPIXEL (clist, 0))
+ clist->voffset += clist->row_height + CELL_SPACING;
+
+@@ -4331,7 +4327,9 @@ sync_selection (GtkCList *clist,
+ clist->focus_row += d;
+ if (clist->focus_row == -1 && clist->rows >= 1)
+ clist->focus_row = 0;
+- else if (clist->focus_row >= clist->rows)
++ else if (d < 0 && clist->focus_row >= clist->rows - 1)
++ clist->focus_row = clist->rows - 2;
++ else if (clist->focus_row >= clist->rows) /* Paranoia */
+ clist->focus_row = clist->rows - 1;
+ }
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch
new file mode 100644
index 0000000..28fca0c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-ctext.patch
@@ -0,0 +1,140 @@
+--- gtk+-1.2.10/gdk/gdkselection.c.ctext Thu Jul 5 12:41:42 2001
++++ gtk+-1.2.10/gdk/gdkselection.c Thu Jul 5 12:45:25 2001
+@@ -191,73 +191,6 @@
+ gdk_send_xevent (requestor, False, NoEventMask, (XEvent*) &xevent);
+ }
+
+-
+-/* The output of XmbTextPropertyToTextList may include stuff not valid
+- * for COMPOUND_TEXT. This routine tries to correct this by:
+- *
+- * a) Canonicalizing CR LF and CR to LF
+- * b) Stripping out all other non-allowed control characters
+- *
+- * See the COMPOUND_TEXT spec distributed with X for explanations
+- * what is allowed.
+- */
+-static gchar *
+-sanitize_ctext (const char *str,
+- gint *length)
+-{
+- gchar *result = g_malloc (*length + 1);
+- gint out_length = 0;
+- gint i;
+- const guchar *ustr = (const guchar *)str;
+-
+- for (i=0; i < *length; i++)
+- {
+- guchar c = ustr[i];
+-
+- if (c == '\r')
+- {
+- result[out_length++] = '\n';
+- if (i + 1 < *length && ustr[i + 1] == '\n')
+- i++;
+- }
+- else if (c == 27 /* ESC */)
+- {
+- /* Check for "extended segments, which can contain arbitrary
+- * octets. See CTEXT spec, section 6.
+- */
+-
+- if (i + 5 < *length &&
+- ustr[i + 1] == '%' &&
+- ustr[i + 2] == '/' &&
+- (ustr[i + 3] >= 48 && ustr[i + 3] <= 52) &&
+- ustr[i + 4] >= 128 &&
+- ustr[i + 5] >= 128)
+- {
+- int extra_len = 6 + (ustr[i + 4] - 128) * 128 + ustr[i + 5] - 128;
+- extra_len = MAX (extra_len, *length - i);
+-
+- memcpy (result + out_length, ustr + i, extra_len);
+- out_length += extra_len;
+- i += extra_len - 1;
+- }
+- else
+- result[out_length++] = c;
+- }
+- else if (c == '\n' || c == '\t' || c == 27 /* ESC */ ||
+- (c >= 32 && c <= 127) || /* GL */
+- c == 155 /* CONTROL SEQUENCE INTRODUCER */ ||
+- (c >= 160 && c <= 255)) /* GR */
+- {
+- result[out_length++] = c;
+- }
+- }
+-
+- result[out_length] = '\0';
+- *length = out_length;
+-
+- return result;
+-}
+-
+ gint
+ gdk_text_property_to_text_list (GdkAtom encoding, gint format,
+ guchar *text, gint length,
+@@ -266,32 +199,16 @@
+ XTextProperty property;
+ gint count = 0;
+ gint res;
+- gchar *sanitized_text = NULL;
+
+ if (!list)
+ return 0;
+
+ property.encoding = encoding;
+ property.format = format;
+-
+- if (encoding == gdk_atom_intern ("COMPOUND_TEXT", FALSE) && format == 8)
+- {
+- gint sanitized_text_length = length;
+-
+- property.value = sanitized_text = sanitize_ctext (text, &sanitized_text_length);
+- property.nitems = sanitized_text_length;
+- }
+- else
+- {
+- property.value = text;
+- property.nitems = length;
+- }
+-
++ property.value = text;
++ property.nitems = length;
+ res = XmbTextPropertyToTextList (GDK_DISPLAY(), &property, list, &count);
+
+- if (sanitized_text)
+- g_free (sanitized_text);
+-
+ if (res == XNoMemory || res == XLocaleNotSupported ||
+ res == XConverterNotFound)
+ return 0;
+@@ -314,8 +231,6 @@
+ {
+ gint res;
+ XTextProperty property;
+- gint sanitized_text_length;
+- gchar *sanitized_text;
+
+ res = XmbTextListToTextProperty (GDK_DISPLAY(),
+ (char **)&str, 1, XCompoundTextStyle,
+@@ -334,17 +249,10 @@
+ *encoding = property.encoding;
+ if (format)
+ *format = property.format;
+-
+- sanitized_text_length = property.nitems;
+- sanitized_text = sanitize_ctext (property.value, &sanitized_text_length);
+-
+ if (ctext)
+- *ctext = sanitized_text;
+- else
+- g_free (sanitized_text);
+-
++ *ctext = g_strdup (property.value);
+ if (length)
+- *length = sanitized_text_length;
++ *length = property.nitems;
+
+ if (property.value)
+ XFree (property.value);
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch
new file mode 100644
index 0000000..7a1151c
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-deletedir.patch
@@ -0,0 +1,188 @@
+--- gtk+-1.2.10/gtk/gtkfilesel.c.deletedir Thu Feb 15 23:36:19 2001
++++ gtk+-1.2.10/gtk/gtkfilesel.c Wed Apr 17 20:36:25 2002
+@@ -325,7 +325,8 @@
+
+ static void gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+- gint try_complete);
++ gboolean try_complete,
++ gboolean reset_entry);
+ static void gtk_file_selection_abort (GtkFileSelection *fs);
+
+ static void gtk_file_selection_update_history_menu (GtkFileSelection *fs,
+@@ -522,7 +523,7 @@
+ }
+ else
+ {
+- gtk_file_selection_populate (filesel, "", FALSE);
++ gtk_file_selection_populate (filesel, "", FALSE, TRUE);
+ }
+
+ gtk_widget_grab_focus (filesel->selection_entry);
+@@ -637,7 +638,7 @@
+ name = last_slash + 1;
+ }
+
+- gtk_file_selection_populate (filesel, buf, FALSE);
++ gtk_file_selection_populate (filesel, buf, FALSE, TRUE);
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), name);
+@@ -673,7 +674,7 @@
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
+- gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
++ gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE, TRUE);
+ }
+
+ static void
+@@ -806,7 +807,7 @@
+ g_free (full_path);
+
+ gtk_widget_destroy (fs->fileop_dialog);
+- gtk_file_selection_populate (fs, "", FALSE);
++ gtk_file_selection_populate (fs, "", FALSE, FALSE);
+ }
+
+ static void
+@@ -903,7 +904,7 @@
+ g_free (full_path);
+
+ gtk_widget_destroy (fs->fileop_dialog);
+- gtk_file_selection_populate (fs, "", FALSE);
++ gtk_file_selection_populate (fs, "", FALSE, TRUE);
+ }
+
+ static void
+@@ -1009,8 +1010,9 @@
+ g_free (new_filename);
+ g_free (old_filename);
+
++ gtk_file_selection_populate (fs, "", FALSE, FALSE);
++ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), file);
+ gtk_widget_destroy (fs->fileop_dialog);
+- gtk_file_selection_populate (fs, "", FALSE);
+ }
+
+ static void
+@@ -1112,7 +1114,7 @@
+
+ text = g_strdup (text);
+
+- gtk_file_selection_populate (fs, text, TRUE);
++ gtk_file_selection_populate (fs, text, TRUE, TRUE);
+
+ g_free (text);
+
+@@ -1124,7 +1126,6 @@
+ return FALSE;
+ }
+
+-
+ static void
+ gtk_file_selection_history_callback (GtkWidget *widget, gpointer data)
+ {
+@@ -1142,7 +1143,7 @@
+
+ if (callback_arg->menu_item == widget)
+ {
+- gtk_file_selection_populate (fs, callback_arg->directory, FALSE);
++ gtk_file_selection_populate (fs, callback_arg->directory, FALSE, FALSE);
+ break;
+ }
+
+@@ -1272,7 +1273,7 @@
+ gpointer user_data)
+ {
+ GtkFileSelection *fs = NULL;
+- gchar *filename, *temp = NULL;
++ gchar *filename = NULL;
+
+ g_return_if_fail (GTK_IS_CLIST (widget));
+
+@@ -1280,39 +1281,23 @@
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+- gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp);
+- filename = g_strdup (temp);
+-
+- if (filename)
+- {
+- if (bevent)
+- switch (bevent->type)
+- {
+- case GDK_2BUTTON_PRESS:
+- gtk_file_selection_populate (fs, filename, FALSE);
+- break;
+-
+- default:
+- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+- break;
+- }
+- else
+- gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+-
+- g_free (filename);
+- }
++ gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &filename);
++
++ if (filename && bevent && bevent->type == GDK_2BUTTON_PRESS)
++ gtk_file_selection_populate (fs, filename, FALSE, FALSE);
+ }
+
+ static void
+ gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+- gint try_complete)
++ gboolean try_complete,
++ gboolean reset_entry)
+ {
+ CompletionState *cmpl_state;
+ PossibleCompletion* poss;
+ gchar* filename;
+ gint row;
+- gchar* rem_path = rel_path;
++ gchar* rem_path;
+ gchar* sel_text;
+ gchar* text[2];
+ gint did_recurse = FALSE;
+@@ -1323,6 +1308,8 @@
+
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
++
++ rem_path = rel_path = g_strdup (rel_path);
+
+ cmpl_state = (CompletionState*) fs->cmpl_state;
+ poss = cmpl_completion_matches (rel_path, &rem_path, cmpl_state);
+@@ -1422,7 +1409,7 @@
+
+ did_recurse = TRUE;
+
+- gtk_file_selection_populate (fs, dir_name, TRUE);
++ gtk_file_selection_populate (fs, dir_name, TRUE, TRUE);
+
+ g_free (dir_name);
+ }
+@@ -1441,7 +1428,7 @@
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), rem_path);
+ }
+ }
+- else
++ else if (reset_entry)
+ {
+ if (fs->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
+@@ -1466,8 +1453,9 @@
+ {
+ gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
+ }
+-
+ }
++
++ g_free (rel_path);
+ }
+
+ static void
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch
new file mode 100644
index 0000000..ca645f3
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-encoding.patch
@@ -0,0 +1,148 @@
+--- gtk+-1.2.10/gtk/gtkrc.c.encoding Thu Mar 15 13:41:40 2001
++++ gtk+-1.2.10/gtk/gtkrc.c Fri Jul 26 16:49:24 2002
+@@ -33,6 +33,7 @@
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <langinfo.h>
+
+ #include "gtkrc.h"
+ #include "gtkbindings.h"
+@@ -440,7 +441,7 @@
+ void
+ gtk_rc_init (void)
+ {
+- static gchar *locale_suffixes[3];
++ static gchar *locale_suffixes[8];
+ static gint n_locale_suffixes = 0;
+
+ gint i, j;
+@@ -449,9 +450,7 @@
+
+ if (!initted)
+ {
+- gint length;
+-
+- char *locale = setlocale (LC_CTYPE, NULL);
++ char *locale = g_strdup (setlocale (LC_CTYPE, NULL));
+ char *p;
+
+ initted = TRUE;
+@@ -470,39 +469,88 @@
+ * We normalize the charset into a standard form,
+ * which has all '-' and '_' characters removed,
+ * and is lowercase.
++ *
++ * the search is done in that order:
++ * gtkrc.ll_cc.lowercasecodeset
++ * gtkrc.ll_cc.normalizedcodeset
++ * gtkrc.ll.lowercasecodeset
++ * gtkrc.ll.normalizedcodeset
++ * gtkrc.lowercasecodeset
++ * gtkrc.normalizedcodeset
++ * gtkrc.ll_cc
++ * gtkrc.ll
++ *
+ */
+- gchar *normalized_locale;
++ char *codeset = NULL;
++ char *normalized_codeset = NULL;
++ char *cc = NULL;
++ char *ll;
+
+ p = strchr (locale, '@');
+- length = p ? (p -locale) : strlen (locale);
++ if (p)
++ *p = '\0';
+
++ codeset = nl_langinfo (CODESET);
++
+ p = strchr (locale, '.');
++ if (!codeset && p)
++ codeset = p + 1;
+ if (p)
++ *p = '\0';
++
++ if (codeset)
+ {
+- gchar *tmp1 = g_strndup (locale, p - locale + 1);
+- gchar *tmp2 = _gtk_normalize_codeset (p + 1, length - (p - locale + 1));
++ codeset = g_strdup (codeset);
+
+- normalized_locale = g_strconcat (tmp1, tmp2, NULL);
+- g_free (tmp1);
+- g_free (tmp2);
+-
+- locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_locale);
+- length = p - locale;
++ p = codeset;
++ while (*p)
++ {
++ /* tolower not used, because some locales are not
++ * compatible with C locale in lowercasing ascii
++ */
++ if (*p >= 'A' && *p <= 'Z')
++ *p = (*p) - 'A' + 'a';
++ p++;
++ }
++
++ normalized_codeset = _gtk_normalize_codeset(codeset, strlen (codeset));
++ if (strcmp (normalized_codeset, codeset) == 0)
++ {
++ g_free (normalized_codeset);
++ normalized_codeset = NULL;
++ }
+ }
+- else
+- normalized_locale = g_strndup (locale, length);
+
+- p = strchr (normalized_locale, '_');
++ p = strchr (locale, '_');
+ if (p)
+ {
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+- length = p - normalized_locale;
++ cc = p + 1;
++ *p = '\0';
+ }
+-
+- locale_suffixes[n_locale_suffixes++] = g_strndup (normalized_locale, length);
+
+- g_free (normalized_locale);
++ ll = locale;
++
++ if (cc && codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", codeset, NULL);
++ if (cc && normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", codeset, NULL);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, ".", normalized_codeset, NULL);
++ if (codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (codeset);
++ if (normalized_codeset)
++ locale_suffixes[n_locale_suffixes++] = g_strdup (normalized_codeset);
++ if (cc)
++ locale_suffixes[n_locale_suffixes++] = g_strconcat (ll, "_", cc, NULL);
++ locale_suffixes[n_locale_suffixes++] = g_strdup (ll);
++
++ g_free (normalized_codeset);
++ g_free (codeset);
+ }
++
++ g_free (locale);
+ }
+
+ i = 0;
+--- gtk+-1.2.10/gtk/gtkrc.iso88599.encoding Fri Jul 26 16:47:04 2002
++++ gtk+-1.2.10/gtk/gtkrc.iso88599 Fri Jul 26 16:47:04 2002
+@@ -0,0 +1,8 @@
++style "gtk-default-iso-8859-9" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-9,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-9,*-r-*"
++}
++class "GtkWidget" style "gtk-default-iso-8859-9"
++
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch
new file mode 100644
index 0000000..c3f6b27
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-fontwarning.patch
@@ -0,0 +1,41 @@
+--- gtk+-1.2.10/gdk/gdkfont.c.fontwarning 2002-07-30 15:38:52.000000000 +0200
++++ gtk+-1.2.10/gdk/gdkfont.c 2002-07-30 15:43:43.000000000 +0200
+@@ -26,6 +26,8 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/Xos.h>
++#include <langinfo.h>
++#include <locale.h>
+ #include "gdk.h"
+ #include "gdkprivate.h"
+
+@@ -173,9 +175,26 @@
+ if (missing_charset_count)
+ {
+ gint i;
+- g_warning ("Missing charsets in FontSet creation\n");
+- for (i=0;i<missing_charset_count;i++)
+- g_warning (" %s\n", missing_charset_list[i]);
++ const char *codeset;
++
++ codeset = nl_langinfo (CODESET);
++
++ /* Hack - UTF-8 is likely to be rendered with a list of
++ * possible legacy fallback charsets, so a failure here
++ * shouldn't be warned about. But we don't want to suppress
++ * this warning in general, since for other character sets
++ * it gives a useful indication of what went wrong.
++ */
++ if (g_strcasecmp (codeset, "utf-8") != 0 &&
++ g_strcasecmp (codeset, "utf8") != 0)
++ {
++ g_printerr ("The font \"%s\" does not support all the required character sets for the current locale \"%s\"\n",
++ fontset_name, setlocale (LC_ALL, NULL));
++ for (i=0;i<missing_charset_count;i++)
++ g_printerr (" (Missing character set \"%s\")\n",
++ missing_charset_list[i]);
++ }
++
+ XFreeStringList (missing_charset_list);
+ }
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch
new file mode 100644
index 0000000..a72fcb2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-kpenter.patch
@@ -0,0 +1,52 @@
+--- gtk+-1.2.10/gtk/gtkentry.c.kpenter Sat Jul 21 20:27:08 2001
++++ gtk+-1.2.10/gtk/gtkentry.c Sat Jul 21 20:27:16 2001
+@@ -1184,6 +1184,7 @@
+ }
+ break;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ return_val = TRUE;
+ gtk_widget_activate (widget);
+ break;
+--- gtk+-1.2.10/gtk/gtktext.c.kpenter Sat Jul 21 20:28:56 2001
++++ gtk+-1.2.10/gtk/gtktext.c Sat Jul 21 20:29:17 2001
+@@ -2055,6 +2055,7 @@
+ case GDK_Up: scroll_int (text, -KEY_SCROLL_PIXELS); break;
+ case GDK_Down: scroll_int (text, +KEY_SCROLL_PIXELS); break;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ if (event->state & GDK_CONTROL_MASK)
+ gtk_signal_emit_by_name (GTK_OBJECT (text), "activate");
+ else
+@@ -2161,6 +2162,7 @@
+ gtk_editable_insert_text (editable, "\t", 1, &position);
+ break;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ if (event->state & GDK_CONTROL_MASK)
+ gtk_signal_emit_by_name (GTK_OBJECT (text), "activate");
+ else
+--- gtk+-1.2.10/gtk/gtkmenushell.c.kpenter Sat Jul 21 20:27:59 2001
++++ gtk+-1.2.10/gtk/gtkmenushell.c Sat Jul 21 20:28:05 2001
+@@ -258,6 +258,11 @@
+ GTK_TYPE_BOOL,
+ TRUE);
+ gtk_binding_entry_add_signal (binding_set,
++ GDK_KP_Enter, 0,
++ "activate_current", 1,
++ GTK_TYPE_BOOL,
++ TRUE);
++ gtk_binding_entry_add_signal (binding_set,
+ GDK_space, 0,
+ "activate_current", 1,
+ GTK_TYPE_BOOL,
+--- gtk+-1.2.10/gtk/gtknotebook.c.kpenter Sat Jul 21 20:28:30 2001
++++ gtk+-1.2.10/gtk/gtknotebook.c Sat Jul 21 20:28:38 2001
+@@ -1369,6 +1369,7 @@
+ gtk_notebook_switch_focus_tab (notebook, list);
+ return TRUE;
+ case GDK_Return:
++ case GDK_KP_Enter:
+ case GDK_space:
+ gtk_notebook_page_select (GTK_NOTEBOOK (widget));
+ return TRUE;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch
new file mode 100644
index 0000000..368380b
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-localecrash.patch
@@ -0,0 +1,20 @@
+--- gtk+-1.2.10/gdk/gdkselection.c.localecrash Thu Aug 22 16:50:01 2002
++++ gtk+-1.2.10/gdk/gdkselection.c Thu Aug 22 17:50:46 2002
+@@ -238,12 +238,14 @@
+ if (res != Success)
+ {
+ property.encoding = None;
+- property.format = None;
++ property.format = 8;
+ property.value = NULL;
+ property.nitems = 0;
+- }
+
+- g_assert (property.encoding == gdk_atom_intern ("COMPOUND_TEXT", FALSE) && property.format == 8);
++ g_warning ("Error converting string to compound text.\n"
++ "This might mean that your locale setting is supported\n"
++ "by the C library but not by Xlib.");
++ }
+
+ if (encoding)
+ *encoding = property.encoding;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch
new file mode 100644
index 0000000..3e7ae15
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-m4.patch
@@ -0,0 +1,11 @@
+--- gtk+-1.2.10/gtk.m4.underquoted 2004-08-15 22:20:34.253447389 +0100
++++ gtk+-1.2.10/gtk.m4 2004-08-15 22:20:47.874844660 +0100
+@@ -4,7 +4,7 @@
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
+-AC_DEFUN(AM_PATH_GTK,
++AC_DEFUN([AM_PATH_GTK],
+ [dnl
+ dnl Get the cflags and libraries from the gtk-config script
+ dnl
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch
new file mode 100644
index 0000000..0d76f93
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-missingchar.patch
@@ -0,0 +1,33 @@
+--- gtk+-1.2.10/gdk/gdkfont.c.missingchar Mon Aug 13 13:37:52 2001
++++ gtk+-1.2.10/gdk/gdkfont.c Mon Aug 13 13:39:30 2001
+@@ -461,7 +461,6 @@
+ GdkFontPrivate *private;
+ XCharStruct *chars;
+ gint width;
+- guint ch = character & 0xff; /* get rid of sign-extension */
+ XFontStruct *xfont;
+ XFontSet fontset;
+
+@@ -474,21 +473,7 @@
+ case GDK_FONT_FONT:
+ /* only 8 bits characters are considered here */
+ xfont = (XFontStruct *) private->xfont;
+- if ((xfont->min_byte1 == 0) &&
+- (xfont->max_byte1 == 0) &&
+- (ch >= xfont->min_char_or_byte2) &&
+- (ch <= xfont->max_char_or_byte2))
+- {
+- chars = xfont->per_char;
+- if (chars)
+- width = chars[ch - xfont->min_char_or_byte2].width;
+- else
+- width = xfont->min_bounds.width;
+- }
+- else
+- {
+- width = XTextWidth (xfont, &character, 1);
+- }
++ width = XTextWidth (xfont, &character, 1);
+ break;
+ case GDK_FONT_FONTSET:
+ fontset = (XFontSet) private->xfont;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch
new file mode 100644
index 0000000..0a6c3b2
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-pixmapref.patch
@@ -0,0 +1,14 @@
+--- gtk+-1.2.10/gtk/gtkstyle.c.pixmapref Tue Feb 20 11:46:58 2001
++++ gtk+-1.2.10/gtk/gtkstyle.c Sun Aug 12 15:42:06 2001
+@@ -348,8 +348,9 @@
+ new_style->bg[i] = style->bg[i];
+ new_style->text[i] = style->text[i];
+ new_style->base[i] = style->base[i];
+-
+- new_style->bg_pixmap[i] = style->bg_pixmap[i];
++
++ if (style->bg_pixmap[i] && !(style->rc_style && style->rc_style->bg_pixmap_name[i]))
++ new_style->bg_pixmap[i] = gdk_pixmap_ref (style->bg_pixmap[i]);
+ }
+
+ gdk_font_unref (new_style->font);
diff --git a/x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch b/x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch
new file mode 100644
index 0000000..6c01495
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.10-rh-troughpaint.patch
@@ -0,0 +1,14 @@
+--- gtk+/gtk/gtkrange.c 22 Feb 2001 20:38:14 -0000 1.26.2.3
++++ gtk+/gtk/gtkrange.c 19 Jul 2002 15:41:58 -0000
+@@ -829,7 +828,10 @@ gtk_range_expose (GtkWidget *widget
+ (event->area.x + event->area.width <=
+ widget->allocation.width - trough_border) &&
+ (event->area.y + event->area.height <=
+- widget->allocation.height - trough_border)))
++ widget->allocation.height - trough_border)) ||
++ gtk_style_get_prop_experimental (widget->style,
++ "GtkRange::always_draw_trough",
++ 0))
+ gtk_range_draw_trough (range);
+ }
+ else if (event->window == widget->window)
diff --git a/x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch b/x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch
new file mode 100644
index 0000000..296a80e
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.6-ximian-noborder.patch
@@ -0,0 +1,74 @@
+--- gtk+-1.2.6/gtk/gtkmenubar.c.noborder Tue Feb 1 02:41:57 2000
++++ gtk+-1.2.6/gtk/gtkmenubar.c Tue Feb 1 02:42:11 2000
+@@ -217,6 +217,8 @@
+ GList *children;
+ gint nchildren;
+ GtkRequisition child_requisition;
++ gint xthickness;
++ gint ythickness;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_MENU_BAR (widget));
+@@ -256,12 +258,21 @@
+ }
+ }
+
++ if (menu_bar->shadow_type == GTK_SHADOW_NONE)
++ {
++ xthickness = 0;
++ ythickness = 0;
++ }
++ else
++ {
++ xthickness = widget->style->klass->xthickness;
++ ythickness = widget->style->klass->ythickness;
++ }
++
+ requisition->width += (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->xthickness +
+- BORDER_SPACING) * 2;
++ xthickness + BORDER_SPACING) * 2;
+ requisition->height += (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->ythickness +
+- BORDER_SPACING) * 2;
++ ythickness + BORDER_SPACING) * 2;
+
+ if (nchildren > 0)
+ requisition->width += 2 * CHILD_SPACING * (nchildren - 1);
+@@ -279,6 +290,8 @@
+ GtkAllocation child_allocation;
+ GtkRequisition child_requisition;
+ guint offset;
++ gint xthickness;
++ gint ythickness;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_MENU_BAR (widget));
+@@ -295,14 +308,23 @@
+
+ if (menu_shell->children)
+ {
++ if (menu_bar->shadow_type == GTK_SHADOW_NONE)
++ {
++ xthickness = 0;
++ ythickness = 0;
++ }
++ else
++ {
++ xthickness = widget->style->klass->xthickness;
++ ythickness = widget->style->klass->ythickness;
++ }
++
+ child_allocation.x = (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->xthickness +
+- BORDER_SPACING);
++ xthickness + BORDER_SPACING);
+ offset = child_allocation.x; /* Window edge to menubar start */
+
+ child_allocation.y = (GTK_CONTAINER (menu_bar)->border_width +
+- widget->style->klass->ythickness +
+- BORDER_SPACING);
++ ythickness + BORDER_SPACING);
+ child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2);
+
+ children = menu_shell->children;
diff --git a/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch b/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
new file mode 100644
index 0000000..278e99a
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.8-advanced-gtkfilesel.patch
@@ -0,0 +1,1407 @@
+*** ../old/gtk+-1.2.8/gtk/gtkfilesel.h Sun Feb 13 01:59:45 2000
+--- gtk/gtkfilesel.h Wed Jul 26 10:19:19 2000
+***************
+*** 57,69 ****
+--- 57,73 ----
+ GtkWidget *selection_text;
+ GtkWidget *main_vbox;
+ GtkWidget *ok_button;
+ GtkWidget *cancel_button;
+ GtkWidget *help_button;
++
++ /* These are not used. Just fillers in the class structure */
+ GtkWidget *history_pulldown;
+ GtkWidget *history_menu;
+ GList *history_list;
++ /* ***************** */
++
+ GtkWidget *fileop_dialog;
+ GtkWidget *fileop_entry;
+ gchar *fileop_file;
+ gpointer cmpl_state;
+
+***************
+*** 71,81 ****
+ GtkWidget *fileop_del_file;
+ GtkWidget *fileop_ren_file;
+
+ GtkWidget *button_area;
+ GtkWidget *action_area;
+!
+ };
+
+ struct _GtkFileSelectionClass
+ {
+ GtkWindowClass parent_class;
+--- 75,92 ----
+ GtkWidget *fileop_del_file;
+ GtkWidget *fileop_ren_file;
+
+ GtkWidget *button_area;
+ GtkWidget *action_area;
+!
+! GtkWidget *history_combo;
+! GList *prev_history;
+! GList *next_history;
+! GtkWidget *mask_entry;
+! gchar *mask;
+! gchar *saved_entry;
+!
+ };
+
+ struct _GtkFileSelectionClass
+ {
+ GtkWindowClass parent_class;
+*** ../old/gtk+-1.2.8/gtk/gtkfilesel.c Thu Jan 27 09:39:54 2000
+--- gtk/gtkfilesel.c Wed Jul 26 10:19:19 2000
+***************
+*** 52,61 ****
+--- 52,63 ----
+ #include "gtkmenu.h"
+ #include "gtkmenuitem.h"
+ #include "gtkoptionmenu.h"
+ #include "gtkclist.h"
+ #include "gtkdialog.h"
++ #include "gtkcombo.h"
++ #include "gtkframe.h"
+ #include "gtkintl.h"
+
+ #define DIR_LIST_WIDTH 180
+ #define DIR_LIST_HEIGHT 180
+ #define FILE_LIST_WIDTH 180
+***************
+*** 150,159 ****
+--- 152,165 ----
+ */
+ gchar *text;
+ gint is_a_completion;
+ gint is_directory;
+
++ gint file_size;
++ gint file_time;
++ gint uid;
++ gint gid;
+ /* Private fields
+ */
+ gint text_alloc;
+ };
+
+***************
+*** 304,318 ****
+ gint column,
+ GdkEventButton *bevent,
+ gpointer user_data);
+
+ static void gtk_file_selection_dir_button (GtkWidget *widget,
+! gint row,
+! gint column,
+ GdkEventButton *bevent,
+ gpointer data);
+
+ static void gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+ gint try_complete);
+ static void gtk_file_selection_abort (GtkFileSelection *fs);
+
+--- 310,330 ----
+ gint column,
+ GdkEventButton *bevent,
+ gpointer user_data);
+
+ static void gtk_file_selection_dir_button (GtkWidget *widget,
+! gint row,
+! gint column,
+ GdkEventButton *bevent,
+ gpointer data);
+
++ static void gtk_file_selection_undir_button (GtkWidget *widget,
++ gint row,
++ gint column,
++ GdkEventButton *bevent,
++ gpointer data);
++
+ static void gtk_file_selection_populate (GtkFileSelection *fs,
+ gchar *rel_path,
+ gint try_complete);
+ static void gtk_file_selection_abort (GtkFileSelection *fs);
+
+***************
+*** 321,337 ****
+--- 333,447 ----
+
+ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
+ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
+
++ static gboolean gtk_file_selection_history_combo_callback (GtkWidget *widget, GdkEventKey *event, gpointer data);
++ static gboolean gtk_file_selection_history_combo_list_key_handler(GtkWidget *widget,
++ GdkEventKey *event,
++ gpointer user_data);
++ static gboolean gtk_file_selection_history_combo_list_callback (GtkWidget *thelist,
++ GdkEventButton *event,
++ gpointer user_data);
++ static void gtk_file_selection_mask_entry_callback (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_create_dir (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_delete_file (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_rename_file (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_home_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_up_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_prev_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_next_button (GtkWidget *widget, gpointer data);
++ static void gtk_file_selection_refresh_button (GtkWidget *widget, gpointer data);
++
++ static gint gtk_file_selection_match_char (gchar, gchar *mask);
++ static gint gtk_file_selection_match_mask (gchar *,gchar *);
+
+
+ static GtkWindowClass *parent_class = NULL;
+
+ /* Saves errno when something cmpl does fails. */
+ static gint cmpl_errno;
+
++ /* General notes:
++ * Make prev and next inactive if their respective *
++ * histories are empty.
++ * Add facilities for handling hidden files and *
++ * directories *
++ * Add an api to access the mask, and hidden files *
++ * check box? (prob not in 1.2.x series) *
++ */
++
++ /* Routine for applying mask to filenames *
++ * Need to be optimized to minimize recursion *
++ * help the for loop by looking for the next *
++ * instance of the mask character following *
++ * the '*'. ei *.c -- look for '.' *
++ * Also, swap all *? pairs (-> ?*), as that *
++ * will make it possible to look ahead (? *
++ * makes it very nondeterministic as in *?.c *
++ * which really is ?*.c *
++ * Allow multiply masks, separted by commas *
++ * Allow more flexible [] handling (ie [a-zA-Z] *
++ * *
++ */
++ static gint gtk_file_selection_match_char (gchar text, gchar *mask){
++ gchar *maskc;
++ gint x;
++ gint s;
++
++ if (mask[0] == '[')
++ {
++ if (!strchr (mask,']')) return 0;
++ maskc = g_strdup(mask + 1); /* get the portion of mask inside []*/
++
++ (*(strchr (maskc,']'))) = 0;
++ s = strlen ((char *)maskc);
++
++ for (x = 0; x < s; x++){
++ if (text == maskc[x])
++ {
++ g_free (maskc);
++ return s + 2;
++ }
++ }
++ g_free (maskc);
++ return 0;
++ }
++
++ if (mask[0] == '?') return 1;
++ if (mask[0] == text) return 1;
++
++ return 0;
++ }
++
++
++ static gint gtk_file_selection_match_mask (gchar *text, gchar *mask){
++
++ int mc;
++ int tc;
++
++ tc = 0; mc = 0;
++
++ if (mask[0] == 0 && text[0] == 0) return 1;
++
++ if (mask[0] == '*')
++ {
++ for (tc = 0; tc <= strlen(text); tc++)
++ {
++ if (gtk_file_selection_match_mask (text + tc, mask + 1))
++ return 1;
++ }
++ return 0;
++ }
++ mc = gtk_file_selection_match_char (text[0], mask);
++
++ if(mc)
++ return gtk_file_selection_match_mask (text + 1, mask + mc);
++ else
++ return 0;
++ }
++
+ GtkType
+ gtk_file_selection_get_type (void)
+ {
+ static GtkType file_selection_type = 0;
+
+***************
+*** 372,389 ****
+--- 482,514 ----
+ {
+ GtkWidget *entry_vbox;
+ GtkWidget *label;
+ GtkWidget *list_hbox;
+ GtkWidget *confirm_area;
++ GtkWidget *vbox;
++ GtkWidget *hbox;
+ GtkWidget *pulldown_hbox;
+ GtkWidget *scrolled_win;
++ GtkWidget *mask_label;
++ GtkWidget *bigframe;
++ GtkWidget *label_lookingin;
++ GtkWidget *up_button;
++ GtkWidget *home_button;
++ GtkWidget *prev_button;
++ GtkWidget *next_button;
++ GtkWidget *refresh_button;
+
+ char *dir_title [2];
+ char *file_title [2];
+
+ filesel->cmpl_state = cmpl_init_state ();
+
++ filesel->mask=NULL;
++ filesel->prev_history=NULL;
++ filesel->next_history=NULL;
++ filesel->saved_entry=NULL;
++
+ /* The dialog-sized vertical box */
+ filesel->main_vbox = gtk_vbox_new (FALSE, 10);
+ gtk_container_set_border_width (GTK_CONTAINER (filesel), 10);
+ gtk_container_add (GTK_CONTAINER (filesel), filesel->main_vbox);
+ gtk_widget_show (filesel->main_vbox);
+***************
+*** 397,440 ****
+ gtk_widget_show (filesel->button_area);
+
+ gtk_file_selection_show_fileop_buttons(filesel);
+
+ /* hbox for pulldown menu */
+! pulldown_hbox = gtk_hbox_new (TRUE, 5);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
+ gtk_widget_show (pulldown_hbox);
+
+! /* Pulldown menu */
+! filesel->history_pulldown = gtk_option_menu_new ();
+! gtk_widget_show (filesel->history_pulldown);
+! gtk_box_pack_start (GTK_BOX (pulldown_hbox), filesel->history_pulldown,
+! FALSE, FALSE, 0);
+!
+ /* The horizontal box containing the directory and file listboxes */
+ list_hbox = gtk_hbox_new (FALSE, 5);
+! gtk_box_pack_start (GTK_BOX (filesel->main_vbox), list_hbox, TRUE, TRUE, 0);
+ gtk_widget_show (list_hbox);
+
+ /* The directories clist */
+ dir_title[0] = _("Directories");
+ dir_title[1] = NULL;
+ filesel->dir_list = gtk_clist_new_with_titles (1, (gchar**) dir_title);
+ gtk_widget_set_usize (filesel->dir_list, DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
+! (GtkSignalFunc) gtk_file_selection_dir_button,
+ (gpointer) filesel);
+ gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+! gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
+! gtk_box_pack_start (GTK_BOX (list_hbox), scrolled_win, TRUE, TRUE, 0);
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
+ /* The files clist */
+ file_title[0] = _("Files");
+ file_title[1] = NULL;
+ filesel->file_list = gtk_clist_new_with_titles (1, (gchar**) file_title);
+ gtk_widget_set_usize (filesel->file_list, FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+--- 522,654 ----
+ gtk_widget_show (filesel->button_area);
+
+ gtk_file_selection_show_fileop_buttons(filesel);
+
+ /* hbox for pulldown menu */
+! pulldown_hbox = gtk_hbox_new (FALSE, 5);
+ gtk_box_pack_start (GTK_BOX (filesel->main_vbox), pulldown_hbox, FALSE, FALSE, 0);
+ gtk_widget_show (pulldown_hbox);
+
+! /* The combo box that replaces the pulldown menu */
+! label_lookingin = gtk_label_new (_("Looking in:"));
+! gtk_widget_show (label_lookingin);
+! gtk_box_pack_start (GTK_BOX (pulldown_hbox), label_lookingin, FALSE, FALSE, 0);
+!
+! filesel->history_combo = gtk_combo_new();
+! gtk_widget_show(filesel->history_combo);
+! gtk_combo_set_value_in_list(GTK_COMBO(filesel->history_combo),FALSE,FALSE);
+! gtk_box_pack_start (GTK_BOX(pulldown_hbox),filesel->history_combo,
+! TRUE,TRUE, 0);
+! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->entry),"key-press-event",
+! (GtkSignalFunc) gtk_file_selection_history_combo_callback,
+! (gpointer) filesel);
+!
+! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->list),"button-press-event",
+! (GtkSignalFunc) gtk_file_selection_history_combo_list_callback,
+! (gpointer) filesel);
+!
+! gtk_signal_connect(GTK_OBJECT(((GtkCombo *)filesel->history_combo)->list),"key-press-event",
+! (GtkSignalFunc) gtk_file_selection_history_combo_list_key_handler,
+! (gpointer) filesel);
+!
+! /* frame to put the following hbox in */
+! bigframe = gtk_frame_new (NULL);
+! gtk_widget_show (bigframe);
+! gtk_box_pack_start (GTK_BOX (filesel->main_vbox), bigframe, TRUE, TRUE, 0);
+!
+ /* The horizontal box containing the directory and file listboxes */
+ list_hbox = gtk_hbox_new (FALSE, 5);
+! gtk_container_add (GTK_CONTAINER(bigframe), list_hbox);
+! gtk_container_set_border_width (GTK_CONTAINER (list_hbox), 5);
+ gtk_widget_show (list_hbox);
+
++ /* vbox to put the buttons and directory listing in */
++ vbox = gtk_vbox_new (FALSE, 0);
++ gtk_widget_show (vbox);
++ gtk_box_pack_start (GTK_BOX (list_hbox), vbox, FALSE, FALSE, 0);
++
++ hbox = gtk_hbox_new (FALSE, 0);
++ gtk_widget_show (hbox);
++ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
++
++ home_button = gtk_button_new_with_label (_("Home"));
++ gtk_widget_show (home_button);
++ gtk_signal_connect (GTK_OBJECT (home_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_home_button,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox), home_button, TRUE,TRUE, 0);
++
++ prev_button = gtk_button_new_with_label (_("Prev"));
++ gtk_signal_connect (GTK_OBJECT (prev_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_prev_button,
++ (gpointer) filesel);
++ gtk_widget_show (prev_button);
++ gtk_box_pack_start (GTK_BOX (hbox), prev_button, TRUE,TRUE, 0);
++
++ up_button = gtk_button_new_with_label (_("Up"));
++ gtk_signal_connect (GTK_OBJECT (up_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_up_button,
++ (gpointer) filesel);
++ gtk_widget_show (up_button);
++ gtk_box_pack_start (GTK_BOX (hbox), up_button, TRUE,TRUE, 0);
++
++ next_button = gtk_button_new_with_label (_("Next"));
++ gtk_widget_show (next_button);
++ gtk_signal_connect (GTK_OBJECT (next_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_next_button,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox), next_button, TRUE,TRUE, 0);
++
++ refresh_button = gtk_button_new_with_label (_("Refresh"));
++ gtk_widget_show (refresh_button);
++ gtk_signal_connect (GTK_OBJECT (refresh_button), "clicked",
++ (GtkSignalFunc) gtk_file_selection_refresh_button,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox), refresh_button, TRUE, TRUE, 0);
++
+ /* The directories clist */
+ dir_title[0] = _("Directories");
+ dir_title[1] = NULL;
+ filesel->dir_list = gtk_clist_new_with_titles (1, (gchar**) dir_title);
+ gtk_widget_set_usize (filesel->dir_list, DIR_LIST_WIDTH, DIR_LIST_HEIGHT);
+ gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
+! (GtkSignalFunc) gtk_file_selection_dir_button,
+! (gpointer) filesel);
+! gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "unselect_row",
+! (GtkSignalFunc) gtk_file_selection_undir_button,
+ (gpointer) filesel);
+ gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->dir_list);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+! gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE,TRUE, 5);
+ gtk_widget_show (filesel->dir_list);
+ gtk_widget_show (scrolled_win);
+
++ /* vbox area for mask entry and files clist */
++ vbox = gtk_vbox_new (FALSE, 0);
++ gtk_widget_show (vbox);
++ gtk_box_pack_start (GTK_BOX (list_hbox), vbox, TRUE, TRUE, 0);
++
++ hbox = gtk_hbox_new (FALSE, 5);
++ gtk_widget_show (hbox);
++ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
++
++ mask_label = gtk_label_new (_("Mask:"));
++ gtk_widget_show (mask_label);
++ gtk_box_pack_start (GTK_BOX (hbox), mask_label, FALSE, FALSE, 0);
++
++ filesel->mask_entry = gtk_entry_new ();
++ gtk_widget_show (filesel->mask_entry);
++ gtk_signal_connect(GTK_OBJECT(filesel->mask_entry),"activate",
++ (GtkSignalFunc) gtk_file_selection_mask_entry_callback,
++ (gpointer) filesel);
++ gtk_box_pack_start (GTK_BOX (hbox),filesel->mask_entry, TRUE, TRUE, 0);
++
++
+ /* The files clist */
+ file_title[0] = _("Files");
+ file_title[1] = NULL;
+ filesel->file_list = gtk_clist_new_with_titles (1, (gchar**) file_title);
+ gtk_widget_set_usize (filesel->file_list, FILE_LIST_WIDTH, FILE_LIST_HEIGHT);
+***************
+*** 445,456 ****
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+! gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5);
+! gtk_box_pack_start (GTK_BOX (list_hbox), scrolled_win, TRUE, TRUE, 0);
+ gtk_widget_show (filesel->file_list);
+ gtk_widget_show (scrolled_win);
+
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+--- 659,669 ----
+
+ scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+ gtk_container_add (GTK_CONTAINER (scrolled_win), filesel->file_list);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
+! gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 5);
+ gtk_widget_show (filesel->file_list);
+ gtk_widget_show (scrolled_win);
+
+ /* action area for packing buttons into. */
+ filesel->action_area = gtk_hbox_new (TRUE, 0);
+***************
+*** 653,698 ****
+
+ void
+ gtk_file_selection_complete (GtkFileSelection *filesel,
+ const gchar *pattern)
+ {
+ g_return_if_fail (filesel != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
+ g_return_if_fail (pattern != NULL);
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
+! gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
+ }
+
+ static void
+ gtk_file_selection_destroy (GtkObject *object)
+ {
+ GtkFileSelection *filesel;
+ GList *list;
+- HistoryCallbackArg *callback_arg;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (object));
+
+ filesel = GTK_FILE_SELECTION (object);
+
+ if (filesel->fileop_dialog)
+! gtk_widget_destroy (filesel->fileop_dialog);
+
+! if (filesel->history_list)
+ {
+! list = filesel->history_list;
+ while (list)
+! {
+! callback_arg = list->data;
+! g_free (callback_arg->directory);
+! g_free (callback_arg);
+ list = list->next;
+! }
+! g_list_free (filesel->history_list);
+! filesel->history_list = NULL;
+ }
+
+ cmpl_free_state (filesel->cmpl_state);
+ filesel->cmpl_state = NULL;
+
+--- 866,949 ----
+
+ void
+ gtk_file_selection_complete (GtkFileSelection *filesel,
+ const gchar *pattern)
+ {
++ gchar *new_pattern;
++ gint x;
++
+ g_return_if_fail (filesel != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (filesel));
+ g_return_if_fail (pattern != NULL);
+
+ if (filesel->selection_entry)
+ gtk_entry_set_text (GTK_ENTRY (filesel->selection_entry), pattern);
+!
+! if(strchr(pattern,'*') || strchr(pattern,'?'))
+! {
+! for(x=strlen(pattern);x>=0;x--)
+! {
+! if(pattern[x]=='/') break;
+! }
+! gtk_entry_set_text(GTK_ENTRY(filesel->mask_entry),g_strdup(pattern+x+1));
+!
+! if(filesel->mask) g_free(filesel->mask);
+!
+! filesel->mask=g_strdup(pattern+x+1);
+! new_pattern=g_strdup(pattern);
+! new_pattern[x+1]=0;
+! gtk_file_selection_populate (filesel, (gchar*) new_pattern, TRUE);
+! g_free(new_pattern);
+! }
+! else
+! {
+! gtk_file_selection_populate (filesel, (gchar*) pattern, TRUE);
+! }
+ }
+
+ static void
+ gtk_file_selection_destroy (GtkObject *object)
+ {
+ GtkFileSelection *filesel;
+ GList *list;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (object));
+
+ filesel = GTK_FILE_SELECTION (object);
+
+ if (filesel->fileop_dialog)
+! gtk_widget_destroy (filesel->fileop_dialog);
+
+! if (filesel->next_history)
+ {
+! list = filesel->next_history;
+ while (list)
+! {
+! g_free (list->data);
+ list = list->next;
+! }
+! }
+! g_list_free (filesel->next_history);
+! filesel->next_history = NULL;
+!
+! if (filesel->prev_history)
+! {
+! list = filesel->prev_history;
+! while (list)
+! {
+! g_free (list->data);
+! list = list->next;
+! }
+! }
+! g_list_free (filesel->prev_history);
+! filesel->prev_history = NULL;
+!
+! if (filesel->mask)
+! {
+! g_free (filesel->mask);
+! filesel->mask = NULL;
+ }
+
+ cmpl_free_state (filesel->cmpl_state);
+ filesel->cmpl_state = NULL;
+
+***************
+*** 1091,1103 ****
+ char *text;
+
+ g_return_val_if_fail (widget != NULL, FALSE);
+ g_return_val_if_fail (event != NULL, FALSE);
+
+ if (event->keyval == GDK_Tab)
+ {
+- fs = GTK_FILE_SELECTION (user_data);
+ text = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
+
+ text = g_strdup (text);
+
+ gtk_file_selection_populate (fs, text, TRUE);
+--- 1342,1355 ----
+ char *text;
+
+ g_return_val_if_fail (widget != NULL, FALSE);
+ g_return_val_if_fail (event != NULL, FALSE);
+
++ fs = GTK_FILE_SELECTION (user_data);
++
+ if (event->keyval == GDK_Tab)
+ {
+ text = gtk_entry_get_text (GTK_ENTRY (fs->selection_entry));
+
+ text = g_strdup (text);
+
+ gtk_file_selection_populate (fs, text, TRUE);
+***************
+*** 1106,1217 ****
+
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
+
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+
+
+ static void
+! gtk_file_selection_history_callback (GtkWidget *widget, gpointer data)
+! {
+ GtkFileSelection *fs = data;
+- HistoryCallbackArg *callback_arg;
+ GList *list;
+
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+! list = fs->history_list;
+!
+! while (list) {
+! callback_arg = list->data;
+!
+! if (callback_arg->menu_item == widget)
+! {
+! gtk_file_selection_populate (fs, callback_arg->directory, FALSE);
+! break;
+! }
+!
+! list = list->next;
+! }
+ }
+
+! static void
+! gtk_file_selection_update_history_menu (GtkFileSelection *fs,
+! gchar *current_directory)
+! {
+! HistoryCallbackArg *callback_arg;
+! GtkWidget *menu_item;
+ GList *list;
+! gchar *current_dir;
+! gint dir_len;
+! gint i;
+!
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+- g_return_if_fail (current_directory != NULL);
+-
+- list = fs->history_list;
+
+! if (fs->history_menu)
+ {
+! while (list) {
+! callback_arg = list->data;
+! g_free (callback_arg->directory);
+! g_free (callback_arg);
+! list = list->next;
+! }
+! g_list_free (fs->history_list);
+! fs->history_list = NULL;
+
+- gtk_widget_destroy (fs->history_menu);
+ }
+!
+! fs->history_menu = gtk_menu_new();
+
+! current_dir = g_strdup (current_directory);
+
+! dir_len = strlen (current_dir);
+
+! for (i = dir_len; i >= 0; i--)
+ {
+! /* the i == dir_len is to catch the full path for the first
+! * entry. */
+! if ( (current_dir[i] == '/') || (i == dir_len))
+! {
+! /* another small hack to catch the full path */
+! if (i != dir_len)
+! current_dir[i + 1] = '\0';
+! menu_item = gtk_menu_item_new_with_label (current_dir);
+!
+! callback_arg = g_new (HistoryCallbackArg, 1);
+! callback_arg->menu_item = menu_item;
+!
+! /* since the autocompletion gets confused if you don't
+! * supply a trailing '/' on a dir entry, set the full
+! * (current) path to "" which just refreshes the filesel */
+! if (dir_len == i) {
+! callback_arg->directory = g_strdup ("");
+! } else {
+! callback_arg->directory = g_strdup (current_dir);
+! }
+!
+! fs->history_list = g_list_append (fs->history_list, callback_arg);
+!
+! gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
+! (GtkSignalFunc) gtk_file_selection_history_callback,
+! (gpointer) fs);
+! gtk_menu_append (GTK_MENU (fs->history_menu), menu_item);
+! gtk_widget_show (menu_item);
+ }
+ }
+
+! gtk_option_menu_set_menu (GTK_OPTION_MENU (fs->history_pulldown),
+! fs->history_menu);
+ g_free (current_dir);
+ }
+
+ static void
+ gtk_file_selection_file_button (GtkWidget *widget,
+--- 1358,1617 ----
+
+ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
+
+ return TRUE;
+ }
++ if (fs->saved_entry)
++ {
++ gtk_clist_unselect_all ((GtkCList *) (fs->dir_list));
++ gtk_entry_set_text(GTK_ENTRY(fs->selection_entry),fs->saved_entry);
++ g_free (fs->saved_entry);
++ fs->saved_entry = NULL;
++ }
++
+
+ return FALSE;
+ }
+
++ static void
++ gtk_file_selection_home_button (GtkWidget *widget, gpointer data){
++ GList *list;
++
++ GtkFileSelection *fs=data;
++
++ list = fs->next_history;
++ if (list)
++ {
++ g_free (list->data);
++ list = list->next;
++ }
++ g_list_free (fs->next_history);
++ fs->next_history = NULL;
++
++ gtk_file_selection_populate (fs,"~/",FALSE);
++ }
+
+ static void
+! gtk_file_selection_up_button (GtkWidget *widget, gpointer data){
+ GtkFileSelection *fs = data;
+ GList *list;
+
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+! list = fs->next_history;
+! if (list)
+! {
+! g_free (list->data);
+! list = list->next;
+! }
+! g_list_free (fs->next_history);
+! fs->next_history = NULL;
+!
+! gtk_file_selection_populate (fs, "../", FALSE); /*change directories. */
+!
+ }
+
+! static void
+! gtk_file_selection_prev_button (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+ GList *list;
+! GList *first;
+! gchar *path;
+!
+ g_return_if_fail (fs != NULL);
+ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+! list = fs->prev_history;
+!
+! if (list && g_list_length(list) > 1)
+ {
+! first = list; /* get first element */
+! list = list->next; /* pop off current directory */
+!
+! list->prev = NULL; /* make this the new head. */
+!
+! fs->prev_history = list; /* update prev_history list */
+! fs->next_history = g_list_prepend(fs->next_history,first->data); /* put it on next_history */
+!
+! first->next = NULL; /* orphan the old first node */
+! g_list_free (first); /* free the node (data is now in use by next_history) */
+!
+!
+!
+! path = g_malloc(strlen(list->data)+4); /* plenty of space */
+! strcpy(path,list->data); /* get the 2nd path in the history */
+! strcat(path,"/"); /* append a '/' */
+! gtk_file_selection_populate (fs, path, FALSE); /* change directories. */
+! g_free (path);
+! }
+! }
+!
+! static void
+! gtk_file_selection_next_button (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+! GList *list;
+! GList *first;
+! gchar *path;
+!
+! g_return_if_fail (fs != NULL);
+! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+!
+! list = fs->next_history;
+!
+! if (list && g_list_length(list) > 0)
+! {
+! first = list; /*get first element*/
+! list = list->next; /*pop off current directory*/
+!
+! if (list)
+! list->prev = NULL;
+!
+! fs->next_history = list; /*update prev_history list*/
+!
+! path = g_malloc(strlen(first->data)+4); /*plenty of space*/
+! strcpy(path,first->data);
+! strcat(path,"/"); /*append a / */
+! gtk_file_selection_populate (fs, path, FALSE); /*change directories.*/
+! g_free(path);
+!
+! first->next = NULL; /* orphan the old first node */
+! g_list_free (first); /* free the node (data is now in use by next_history) */
+
+ }
+! }
+
+! void static
+! gtk_file_selection_refresh_button (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+
+! g_return_if_fail (fs != NULL);
+! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+!
+! gtk_file_selection_populate (fs,"",FALSE);
+! }
+
+! static void
+! gtk_file_selection_mask_entry_callback (GtkWidget *widget, gpointer data){
+! GtkFileSelection *fs = data;
+!
+! if(fs->mask)
+! g_free (fs->mask);
+!
+! fs->mask = g_strdup(gtk_entry_get_text (GTK_ENTRY(fs->mask_entry)));
+!
+! if (strlen(fs->mask) == 0)
+ {
+! g_free (fs->mask);
+! fs->mask = NULL;
+! }
+!
+! gtk_file_selection_refresh_button (widget,data);
+! }
+!
+! static gboolean gtk_file_selection_history_combo_list_key_handler(GtkWidget *widget,
+! GdkEventKey *event,
+! gpointer user_data)
+! {
+! /*
+! g_print("Key pressed! \n");
+! */
+!
+! return TRUE;
+! }
+!
+! static gboolean gtk_file_selection_history_combo_list_callback (GtkWidget *thelist,
+! GdkEventButton *event,
+! gpointer user_data)
+! {
+!
+! GtkFileSelection *fs = user_data;
+! GList *list;
+! gchar *path;
+!
+! list = fs->next_history;
+! if(list)
+! {
+! g_free (list->data);
+! list = list->next;
+! }
+! g_list_free (fs->next_history);
+! fs->next_history = NULL;
+!
+! path = g_malloc(strlen(gtk_entry_get_text(GTK_ENTRY (((GtkCombo *)fs->history_combo)->entry)))+4);
+! strcpy (path,gtk_entry_get_text(GTK_ENTRY( ((GtkCombo *)fs->history_combo)->entry)));
+! strcat (path,"/");
+!
+! gtk_file_selection_populate (fs,path,TRUE);
+!
+! g_free (path);
+!
+! return TRUE;
+! }
+!
+! static gboolean
+! gtk_file_selection_history_combo_callback (GtkWidget *widget, GdkEventKey *event, gpointer data)
+! {
+! GtkEntry *entry=(GtkEntry *)widget;
+! GtkFileSelection *fs=data;
+! GList *list;
+! gchar *path;
+!
+! g_return_val_if_fail (fs != NULL,FALSE);
+! g_return_val_if_fail (GTK_IS_FILE_SELECTION (fs),FALSE);
+!
+!
+! if (event->keyval == GDK_Return)
+! {
+! list = fs->next_history;
+! if (list)
+! {
+! g_free (list->data);
+! list = list->next;
+ }
++ g_list_free (fs->next_history);
++ fs->next_history = NULL;
++
++ path = g_malloc(strlen(gtk_entry_get_text(entry))+4);
++ strcpy (path,gtk_entry_get_text(entry));
++ strcat (path,"/");
++ gtk_file_selection_populate (fs,path,TRUE);
++ g_free (path);
++ gtk_signal_emit_stop_by_name (GTK_OBJECT (widget), "key_press_event");
++ return TRUE;
+ }
++ else
++ {
++ return FALSE;
++ }
++
++ }
++
++ static void
++ gtk_file_selection_update_history_menu (GtkFileSelection *fs,
++ gchar *current_directory)
++ {
++ gchar *current_dir;
+
+! g_return_if_fail (fs != NULL);
+! g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+! g_return_if_fail (current_directory != NULL);
+!
+! current_dir = g_strdup (current_directory);
+!
+! if(fs->prev_history)
+! {
+! if (strcmp((fs->prev_history)->data,current_dir))
+! { /*if this item isn't on the top of the list */
+! fs->prev_history = g_list_prepend(fs->prev_history,g_strdup(current_dir));
+! }
+! } else {
+! fs->prev_history = g_list_prepend(fs->prev_history,g_strdup(current_dir));
+! }
+!
+! gtk_combo_set_popdown_strings (GTK_COMBO (fs->history_combo),fs->prev_history);
+!
+ g_free (current_dir);
+ }
+
+ static void
+ gtk_file_selection_file_button (GtkWidget *widget,
+***************
+*** 1245,1255 ****
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+!
+ g_free (filename);
+ }
+ }
+
+ static void
+--- 1645,1655 ----
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+!
+ g_free (filename);
+ }
+ }
+
+ static void
+***************
+*** 1257,1266 ****
+--- 1657,1667 ----
+ gint row,
+ gint column,
+ GdkEventButton *bevent,
+ gpointer user_data)
+ {
++ GList *list;
+ GtkFileSelection *fs = NULL;
+ gchar *filename, *temp = NULL;
+
+ g_return_if_fail (GTK_IS_CLIST (widget));
+
+***************
+*** 1275,1293 ****
+ {
+ if (bevent)
+ switch (bevent->type)
+ {
+ case GDK_2BUTTON_PRESS:
+ gtk_file_selection_populate (fs, filename, FALSE);
+ break;
+!
+ default:
+! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+
+ g_free (filename);
+ }
+ }
+
+--- 1676,1758 ----
+ {
+ if (bevent)
+ switch (bevent->type)
+ {
+ case GDK_2BUTTON_PRESS:
++ list = fs->next_history;
++ if (list)
++ {
++ g_free (list->data);
++ list = list->next;
++ }
++ g_list_free (fs->next_history);
++ fs->next_history = NULL;
++
+ gtk_file_selection_populate (fs, filename, FALSE);
++ gtk_entry_set_text(GTK_ENTRY(fs->selection_entry),fs->saved_entry);
++ g_free (fs->saved_entry);
++ fs->saved_entry = NULL;
+ break;
+!
+ default:
+! /* here we need to add the "filename" to the beginning of what's already
+! in the entry. Save what's in the entry, then restore it on the double click
+! */
+! if (fs->saved_entry) g_free (fs->saved_entry);
+! fs->saved_entry=g_strdup(gtk_entry_get_text(GTK_ENTRY (fs->selection_entry)));
+!
+! temp=g_strconcat(filename,fs->saved_entry,NULL);
+! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), temp);
+! g_free (temp);
+!
+ break;
+ }
+ else
+ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
++
++ g_free (filename);
++ }
++ }
++
++ static void
++ gtk_file_selection_undir_button (GtkWidget *widget,
++ gint row,
++ gint column,
++ GdkEventButton *bevent,
++ gpointer user_data)
++ {
++ GtkFileSelection *fs = NULL;
++ gchar *filename, *temp = NULL;
++
++ g_return_if_fail (GTK_IS_CLIST (widget));
++
++ fs = GTK_FILE_SELECTION (user_data);
++ g_return_if_fail (fs != NULL);
++ g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
++
++ gtk_clist_get_text (GTK_CLIST (fs->dir_list), row, 0, &temp);
++ filename = g_strdup (temp);
++
++ if (filename)
++ {
++ if (bevent)
++ switch (bevent->type)
++ {
++ default:
++ /* here we need to add the "filename" to the beginning of what's already
++ in the entry. Save what's in the entry, then restore it on the double click
++ */
++ if (fs->saved_entry)
++ {
++ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry),fs->saved_entry);
++ g_free (fs->saved_entry);
++ fs->saved_entry = NULL;
++ }
++ break;
++ }
++ else
++ gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename); //?????
+
+ g_free (filename);
+ }
+ }
+
+***************
+*** 1344,1388 ****
+ gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,file_list_width);
+
+ while (poss)
+ {
+ if (cmpl_is_a_completion (poss))
+! {
+! possible_count += 1;
+!
+! filename = cmpl_this_completion (poss);
+
+ text[0] = filename;
+
+! if (cmpl_is_directory (poss))
+! {
+! if (strcmp (filename, "./") != 0 &&
+! strcmp (filename, "../") != 0)
+ {
+ int width = gdk_string_width(fs->dir_list->style->font,
+ filename);
+ row = gtk_clist_append (GTK_CLIST (fs->dir_list), text);
+ if(width > dir_list_width)
+ {
+ dir_list_width = width;
+ gtk_clist_set_column_width(GTK_CLIST(fs->dir_list),0,
+ width);
+ }
+! }
+ }
+! else
+ {
+! int width = gdk_string_width(fs->file_list->style->font,
+! filename);
+! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
+! if(width > file_list_width)
+! {
+! file_list_width = width;
+! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
+! width);
+! }
+! }
+ }
+
+ poss = cmpl_next_completion (cmpl_state);
+ }
+
+--- 1809,1871 ----
+ gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,file_list_width);
+
+ while (poss)
+ {
+ if (cmpl_is_a_completion (poss))
+! {
+! possible_count += 1;
+!
+! filename = cmpl_this_completion (poss);
+
+ text[0] = filename;
+
+! if (cmpl_is_directory (poss))
+! {
+! if (strcmp (filename, "./") != 0 &&
+! strcmp (filename, "../") != 0)
+ {
+ int width = gdk_string_width(fs->dir_list->style->font,
+ filename);
+ row = gtk_clist_append (GTK_CLIST (fs->dir_list), text);
+ if(width > dir_list_width)
+ {
+ dir_list_width = width;
+ gtk_clist_set_column_width(GTK_CLIST(fs->dir_list),0,
+ width);
+ }
+! }
+ }
+! else
+ {
+! if(fs->mask)
+! {
+! if (gtk_file_selection_match_mask(filename,fs->mask))
+! {
+! int width = gdk_string_width(fs->file_list->style->font,
+! filename);
+! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
+! if(width > file_list_width)
+! {
+! file_list_width = width;
+! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
+! width);
+! }
+! }
+! }
+! else
+! {
+! int width = gdk_string_width(fs->file_list->style->font,
+! filename);
+! row = gtk_clist_append (GTK_CLIST (fs->file_list), text);
+! if(width > file_list_width)
+! {
+! file_list_width = width;
+! gtk_clist_set_column_width(GTK_CLIST(fs->file_list),0,
+! width);
+! }
+! }
+! }
+ }
+
+ poss = cmpl_next_completion (cmpl_state);
+ }
+
+***************
+*** 1430,1440 ****
+ }
+ }
+ else
+ {
+ if (fs->selection_entry)
+! gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");
+ }
+
+ if (!did_recurse)
+ {
+ if (fs->selection_entry)
+--- 1913,1925 ----
+ }
+ }
+ else
+ {
+ if (fs->selection_entry)
+! /* Here we need to take the old filename and keep it!*/
+! /*gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), "");*/
+! ;
+ }
+
+ if (!did_recurse)
+ {
+ if (fs->selection_entry)
+***************
+*** 1448,1462 ****
+
+ gtk_label_set_text (GTK_LABEL (fs->selection_text), sel_text);
+ g_free (sel_text);
+ }
+
+! if (fs->history_pulldown)
+! {
+! gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
+! }
+!
+ }
+ }
+
+ static void
+ gtk_file_selection_abort (GtkFileSelection *fs)
+--- 1933,1944 ----
+
+ gtk_label_set_text (GTK_LABEL (fs->selection_text), sel_text);
+ g_free (sel_text);
+ }
+
+! gtk_file_selection_update_history_menu (fs, cmpl_reference_position (cmpl_state));
+!
+ }
+ }
+
+ static void
+ gtk_file_selection_abort (GtkFileSelection *fs)
+***************
+*** 2758,2762 ****
+--- 3240,3306 ----
+ if(err == CMPL_ERRNO_TOO_LONG)
+ return "Name too long";
+ else
+ return g_strerror (err);
+ }
++
++
++ /* Testing area */
++ #ifdef TORRIE_DEBUG
++
++ /* Get the selected filename and print it to the console */
++ void file_ok_sel( GtkWidget *w,
++ GtkFileSelection *fs )
++ {
++ g_print ("%s\n", gtk_file_selection_get_filename (GTK_FILE_SELECTION (fs)));
++ }
++
++ void destroy( GtkWidget *widget,
++ gpointer data )
++ {
++ gtk_main_quit ();
++ }
++
++ int main( int argc,
++ char *argv[] )
++ {
++ GtkWidget *filew;
++
++ gtk_init (&argc, &argv);
++
++ /* Create a new file selection widget */
++ filew = gtk_file_selection_new ("Michael's Glorious File Selector");
++ // gtk_file_selection_complete(GTK_FILE_SELECTION(filew),"bob");
++
++
++ gtk_signal_connect (GTK_OBJECT (filew), "destroy",
++ (GtkSignalFunc) destroy, &filew);
++ /* Connect the ok_button to file_ok_sel function */
++ gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
++ "clicked", (GtkSignalFunc) file_ok_sel, filew );
++
++ /* Connect the cancel_button to destroy the widget */
++ gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION
++ (filew)->cancel_button),
++ "clicked", (GtkSignalFunc) gtk_widget_destroy,
++ GTK_OBJECT (filew));
++
++
++ gtk_widget_show(filew);
++
++ /*
++ g_print("%d",gtk_file_selection_match_mask("mask.c","m*.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.c","m???.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.c","m??*.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c???"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","m*.c*"));
++ g_print("%d",gtk_file_selection_match_mask("mask.cout","n*.c???"));
++ g_print("%d",gtk_file_selection_match_mask("mask.c","[mn]*"));
++ g_print("%d",gtk_file_selection_match_mask("COPYING","*.xpm"));
++ */
++ gtk_main ();
++
++ return 0;
++ }
++ /* example-end */
++ #endif
diff --git a/x11-libs/gtk+/files/gtk+-1.2.9-be.patch b/x11-libs/gtk+/files/gtk+-1.2.9-be.patch
new file mode 100644
index 0000000..7fde598
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.9-be.patch
@@ -0,0 +1,506 @@
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.am gtk+-1.2.9/gtk/Makefile.am
+--- gtk+-1.2.9.orig/gtk/Makefile.am Fri Feb 2 20:09:02 2001
++++ gtk+-1.2.9/gtk/Makefile.am Sat Mar 3 02:14:27 2001
+@@ -374,7 +374,7 @@
+
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
++gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
+ gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
+ gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+ gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.in gtk+-1.2.9/gtk/Makefile.in
+--- gtk+-1.2.9.orig/gtk/Makefile.in Fri Mar 2 22:49:26 2001
++++ gtk+-1.2.9/gtk/Makefile.in Sat Mar 3 02:14:50 2001
+@@ -191,7 +191,7 @@
+ CLEANFILES = $(gen_sources)
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+
+
+ #
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.be gtk+-1.2.9/gtk/gtkrc.be
+--- gtk+-1.2.9.orig/gtk/gtkrc.be Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.be Sat Mar 3 02:11:56 2001
+@@ -0,0 +1,8 @@
++style "gtk-default-cp1251" {
++ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,\
++ -*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*"
++}
++class "GtkWidget" style "gtk-default-cp1251"
++
+diff -urN gtk+-1.2.9.orig/po/be.po gtk+-1.2.9/po/be.po
+--- gtk+-1.2.9.orig/po/be.po Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/po/be.po Sat Mar 3 02:11:56 2001
+@@ -0,0 +1,466 @@
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) 1999 Free Software Foundation, Inc.
++# Sergey Panov <sipan@mit.edu>, 1999.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: gtk+ 1.3.0\n"
++"POT-Creation-Date: 2000-05-19 07:11+0200\n"
++"PO-Revision-Date: 1999-10-05 00:56-0400\n"
++"Last-Translator: Sergey Panov <sipan@mit.edu>\n"
++"Language-Team: Russian <ru@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=cp1251\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: gtk/gtkcolorsel.c:221
++msgid "Hue:"
++msgstr "Òîí:"
++
++#: gtk/gtkcolorsel.c:222
++msgid "Saturation:"
++msgstr "Íàñûùåííîñòü:"
++
++#: gtk/gtkcolorsel.c:223
++msgid "Value:"
++msgstr "Çíà÷åíèå:"
++
++#: gtk/gtkcolorsel.c:224
++msgid "Red:"
++msgstr "Êðàñíûé:"
++
++#: gtk/gtkcolorsel.c:225
++msgid "Green:"
++msgstr "Çåëåíûé:"
++
++#: gtk/gtkcolorsel.c:226
++msgid "Blue:"
++msgstr "Ñèíèé:"
++
++#: gtk/gtkcolorsel.c:227
++msgid "Opacity:"
++msgstr "Ïëîòíîñòü:"
++
++#. The OK button
++#: gtk/gtkcolorsel.c:1727 gtk/gtkfilesel.c:469 gtk/gtkfontsel.c:3492
++#: gtk/gtkgamma.c:416
++msgid "OK"
++msgstr "OK"
++
++#. The Cancel button
++#: gtk/gtkcolorsel.c:1733 gtk/gtkfilesel.c:476 gtk/gtkfilesel.c:856
++#: gtk/gtkfilesel.c:956 gtk/gtkfilesel.c:1071 gtk/gtkfontsel.c:3505
++#: gtk/gtkgamma.c:424
++msgid "Cancel"
++msgstr "Îòìåíèòü"
++
++#: gtk/gtkcolorsel.c:1738
++msgid "Help"
++msgstr "Ñïðàâêà"
++
++#. The directories clist
++#: gtk/gtkfilesel.c:418
++msgid "Directories"
++msgstr "Êàòàëîãè"
++
++#. The files clist
++#: gtk/gtkfilesel.c:437
++msgid "Files"
++msgstr "Ôàéëû"
++
++#: gtk/gtkfilesel.c:507 gtk/gtkfilesel.c:1466
++#, c-format
++msgid "Directory unreadable: %s"
++msgstr "Êàòàëîã íå ÷èòàåì: %s"
++
++#: gtk/gtkfilesel.c:539
++msgid "Create Dir"
++msgstr "Ñîçäàòü êàòàëîã"
++
++#: gtk/gtkfilesel.c:550 gtk/gtkfilesel.c:925
++msgid "Delete File"
++msgstr "Óäàëèòü ôàéë"
++
++#: gtk/gtkfilesel.c:561 gtk/gtkfilesel.c:1029
++msgid "Rename File"
++msgstr "Ïåðåèìåíîâàòü ôàéë"
++
++#.
++#. gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
++#. (GtkSignalFunc) gtk_file_selection_fileop_destroy,
++#. (gpointer) fs);
++#.
++#: gtk/gtkfilesel.c:722
++msgid "Error"
++msgstr "Îøèáêà"
++
++#. close button
++#: gtk/gtkfilesel.c:745 gtk/gtkinputdialog.c:354
++msgid "Close"
++msgstr "Çàêðûòü"
++
++#: gtk/gtkfilesel.c:820
++msgid "Create Directory"
++msgstr "Ñîçäàòü êàòàëîã"
++
++#: gtk/gtkfilesel.c:834
++msgid "Directory name:"
++msgstr "Èìÿ êàòàëîãà:"
++
++#. buttons
++#: gtk/gtkfilesel.c:847
++msgid "Create"
++msgstr "Ñîçäàòü"
++
++#. buttons
++#: gtk/gtkfilesel.c:947
++msgid "Delete"
++msgstr "Óäàëèòü"
++
++#. buttons
++#: gtk/gtkfilesel.c:1062
++msgid "Rename"
++msgstr "Ïåðåèìåíîâàòü"
++
++#: gtk/gtkfilesel.c:1445
++msgid "Selection: "
++msgstr "Âûáîð: "
++
++#: gtk/gtkfontsel.c:210
++msgid "Foundry:"
++msgstr "Êîëëåêöèÿ:"
++
++#: gtk/gtkfontsel.c:211
++msgid "Family:"
++msgstr "Ñåìåéñòâî:"
++
++#: gtk/gtkfontsel.c:212
++msgid "Weight:"
++msgstr "Íàñûùåííîñòü:"
++
++#: gtk/gtkfontsel.c:213
++msgid "Slant:"
++msgstr "Íàêëîí:"
++
++#: gtk/gtkfontsel.c:214
++msgid "Set Width:"
++msgstr "Øèðèíà:"
++
++#: gtk/gtkfontsel.c:215
++msgid "Add Style:"
++msgstr "Äîïîëíèòåëüíûé ñòèëü:"
++
++#: gtk/gtkfontsel.c:216
++msgid "Pixel Size:"
++msgstr "Ðàçìåð â ïèêñåëàõ:"
++
++#: gtk/gtkfontsel.c:217
++msgid "Point Size:"
++msgstr "Ïîòî÷å÷íûé ðàçìåð:"
++
++#: gtk/gtkfontsel.c:218
++msgid "Resolution X:"
++msgstr "Ðàçðåøåíèå ïî X:"
++
++#: gtk/gtkfontsel.c:219
++msgid "Resolution Y:"
++msgstr "Ðàçðåøåíèå ïî Y:"
++
++#: gtk/gtkfontsel.c:220
++msgid "Spacing:"
++msgstr "Ïðîïîðöèîíàëüíîñòü:"
++
++#: gtk/gtkfontsel.c:221
++msgid "Average Width:"
++msgstr "Ñðåäíÿÿ øèðèíà:"
++
++#: gtk/gtkfontsel.c:222
++msgid "Charset:"
++msgstr "Êîäèðîâêà:"
++
++#. Number of internationalized titles here must match number
++#. of NULL initializers above
++#: gtk/gtkfontsel.c:459
++msgid "Font Property"
++msgstr "Ñâîéñòâà øðèôòà"
++
++#: gtk/gtkfontsel.c:460
++msgid "Requested Value"
++msgstr "Çàïðîøåííîå çíà÷åíèå"
++
++#: gtk/gtkfontsel.c:461
++msgid "Actual Value"
++msgstr "Íàñòîÿùåå çíà÷åíèå"
++
++#: gtk/gtkfontsel.c:494
++msgid "Font"
++msgstr "Øðèôò"
++
++#: gtk/gtkfontsel.c:504 gtk/gtkfontsel.c:2181 gtk/gtkfontsel.c:2411
++msgid "Font:"
++msgstr "Øðèôò:"
++
++#: gtk/gtkfontsel.c:509
++msgid "Font Style:"
++msgstr "Ñòèëü øðèôòà:"
++
++#: gtk/gtkfontsel.c:514
++msgid "Size:"
++msgstr "Ðàçìåð:"
++
++#: gtk/gtkfontsel.c:646 gtk/gtkfontsel.c:868
++msgid "Reset Filter"
++msgstr "Ïåðåóñòàíîâèòü ôèëüòð"
++
++#: gtk/gtkfontsel.c:660
++msgid "Metric:"
++msgstr "Ìåòðèêà:"
++
++#: gtk/gtkfontsel.c:664
++msgid "Points"
++msgstr "Òî÷åê"
++
++#: gtk/gtkfontsel.c:671
++msgid "Pixels"
++msgstr "Ïèêñåë"
++
++#. create the text entry widget
++#: gtk/gtkfontsel.c:687
++msgid "Preview:"
++msgstr "Ïðèìåð:"
++
++#: gtk/gtkfontsel.c:716
++msgid "Font Information"
++msgstr "Èíôîðìàöèÿ î øðèôòå"
++
++#: gtk/gtkfontsel.c:749
++msgid "Requested Font Name:"
++msgstr "Çàïðîøåííîå èìÿ øðèôòà:"
++
++#: gtk/gtkfontsel.c:760
++msgid "Actual Font Name:"
++msgstr "Íàñòîÿùåå èìÿ øðèôòà:"
++
++#: gtk/gtkfontsel.c:771
++#, c-format
++msgid "%i fonts available with a total of %i styles."
++msgstr "èìååòñÿ %i øðèôòîâ â %i ñòèëÿõ."
++
++#: gtk/gtkfontsel.c:786
++msgid "Filter"
++msgstr "Ôèëüòð"
++
++#: gtk/gtkfontsel.c:799
++msgid "Font Types:"
++msgstr "Òèïû øðèôòîâ:"
++
++#: gtk/gtkfontsel.c:807
++msgid "Bitmap"
++msgstr "Ðàñòð"
++
++#: gtk/gtkfontsel.c:813
++msgid "Scalable"
++msgstr "Ìàñøòàáèðóåìûé"
++
++#: gtk/gtkfontsel.c:819
++msgid "Scaled Bitmap"
++msgstr "Ìàñøòàáèðîâàííûé ðàñòð"
++
++#: gtk/gtkfontsel.c:890
++msgid "*"
++msgstr "*"
++
++#. Convert '(nil)' weights to 'regular', since it looks nicer.
++#: gtk/gtkfontsel.c:1215
++msgid "(nil)"
++msgstr "(nil)"
++
++#: gtk/gtkfontsel.c:1215
++msgid "regular"
++msgstr "ïðÿìîé"
++
++#: gtk/gtkfontsel.c:1220 gtk/gtkfontsel.c:1973
++msgid "italic"
++msgstr "êóðñèâ"
++
++#: gtk/gtkfontsel.c:1221 gtk/gtkfontsel.c:1974
++msgid "oblique"
++msgstr "íàêëîííûé"
++
++#: gtk/gtkfontsel.c:1222 gtk/gtkfontsel.c:1975
++msgid "reverse italic"
++msgstr "îáðàòíûé êóðñèâ"
++
++#: gtk/gtkfontsel.c:1223 gtk/gtkfontsel.c:1976
++msgid "reverse oblique"
++msgstr "îáðàòíûé íàêëîííûé"
++
++#: gtk/gtkfontsel.c:1224 gtk/gtkfontsel.c:1977
++msgid "other"
++msgstr "äðóãèå"
++
++#: gtk/gtkfontsel.c:1231
++msgid "[M]"
++msgstr "[M]"
++
++#: gtk/gtkfontsel.c:1232
++msgid "[C]"
++msgstr "[C]"
++
++#: gtk/gtkfontsel.c:1793
++msgid "The selected font is not available."
++msgstr "Âûáðàííûé øðèôò íåäîñòóïåí."
++
++#: gtk/gtkfontsel.c:1799
++msgid "The selected font is not a valid font."
++msgstr "Âûáðàí íåïðàâèëüíûé øðèôò."
++
++#: gtk/gtkfontsel.c:1857
++msgid "This is a 2-byte font and may not be displayed correctly."
++msgstr "Ýòî 2-õ áàéòíûé øðèôò, âîçìîæíû ïðîáëåìû ñ íà÷åðòàíèåì."
++
++#: gtk/gtkfontsel.c:1961 gtk/gtkinputdialog.c:607
++msgid "(unknown)"
++msgstr "(íåèçâåñòåí)"
++
++#: gtk/gtkfontsel.c:1972
++msgid "roman"
++msgstr "ïðÿìîé"
++
++#: gtk/gtkfontsel.c:1984
++msgid "proportional"
++msgstr "ïðîïîðöèîíàëüíûé"
++
++#: gtk/gtkfontsel.c:1985
++msgid "monospaced"
++msgstr "ìîíîøèðèííûé"
++
++#: gtk/gtkfontsel.c:1986
++msgid "char cell"
++msgstr "char cell"
++
++#: gtk/gtkfontsel.c:2186
++msgid "Font: (Filter Applied)"
++msgstr "Øðèôò: (Îòôèëüòðîâàí)"
++
++#: gtk/gtkfontsel.c:2662
++msgid "MAX_FONTS exceeded. Some fonts may be missing."
++msgstr "MAX_FONTS ïðåâûøåí. Íåêîòîðûå øðèôòû ìîãóò îòñóòñòâîâàòü."
++
++#: gtk/gtkfontsel.c:3499
++msgid "Apply"
++msgstr "Ïðèìåíèòü"
++
++#: gtk/gtkfontsel.c:3521
++msgid "Font Selection"
++msgstr "Âûáîð øðèôòà"
++
++#: gtk/gtkgamma.c:396
++msgid "Gamma"
++msgstr "Ãàììà"
++
++#: gtk/gtkgamma.c:403
++msgid "Gamma value"
++msgstr "Ãàììà âåëè÷èíà"
++
++#. shell and main vbox
++#: gtk/gtkinputdialog.c:200
++msgid "Input"
++msgstr "Ââîä"
++
++#: gtk/gtkinputdialog.c:208
++msgid "No input devices"
++msgstr "Íåò óñòðîéñòâà ââîäà"
++
++#: gtk/gtkinputdialog.c:237
++msgid "Device:"
++msgstr "Óñòðîéñòâî:"
++
++#: gtk/gtkinputdialog.c:253
++msgid "Disabled"
++msgstr "Âûêëþ÷åí"
++
++#: gtk/gtkinputdialog.c:261
++msgid "Screen"
++msgstr "Ýêðàí"
++
++#: gtk/gtkinputdialog.c:269
++msgid "Window"
++msgstr "Îêíî"
++
++#: gtk/gtkinputdialog.c:277
++msgid "Mode: "
++msgstr "Ðåæèì: "
++
++#. The axis listbox
++#: gtk/gtkinputdialog.c:307
++msgid "Axes"
++msgstr "Îñè"
++
++#. Keys listbox
++#: gtk/gtkinputdialog.c:323
++msgid "Keys"
++msgstr "Êëàâèøè"
++
++#. We create the save button in any case, so that clients can
++#. connect to it, without paying attention to whether it exits
++#: gtk/gtkinputdialog.c:345
++msgid "Save"
++msgstr "Ñîõðàíèòü"
++
++#: gtk/gtkinputdialog.c:500
++msgid "X"
++msgstr "X"
++
++#: gtk/gtkinputdialog.c:501
++msgid "Y"
++msgstr "Y"
++
++#: gtk/gtkinputdialog.c:502
++msgid "Pressure"
++msgstr "Íàæèì"
++
++#: gtk/gtkinputdialog.c:503
++msgid "X Tilt"
++msgstr "Íàêëîí X"
++
++#: gtk/gtkinputdialog.c:504
++msgid "Y Tilt"
++msgstr "Íàêëîí Y"
++
++#: gtk/gtkinputdialog.c:544
++msgid "none"
++msgstr "íåò"
++
++#: gtk/gtkinputdialog.c:578 gtk/gtkinputdialog.c:614
++msgid "(disabled)"
++msgstr "(îòìåíåí)"
++
++#. and clear button
++#: gtk/gtkinputdialog.c:692
++msgid "clear"
++msgstr "î÷èñòèòü"
++
++#: gtk/gtknotebook.c:2059 gtk/gtknotebook.c:4131
++#, c-format
++msgid "Page %u"
++msgstr "Ñòðàíèöà %u"
++
++#: gtk/gtkrc.c:1702
++#, c-format
++msgid "Unable to locate image file in pixmap_path: \"%s\" line %d"
++msgstr "Ôàéë ñ èçîáðàæåíèåì íå íàéäåí â pixmap_path: \"%s\", ñòðîêà %d"
++
++#: gtk/gtkrc.c:1705
++#, c-format
++msgid "Unable to locate image file in pixmap_path: \"%s\""
++msgstr "Ôàéë ñ èçîáðàæåíèåì íå íàéäåí â pixmap_path: \"%s\""
++
++#: gtk/gtkthemes.c:79
++#, c-format
++msgid "Unable to locate loadable module in module_path: \"%s\","
++msgstr "Çàãðóæàåìûé ìîäóëü íå íàéäåí â module_path: \"%s\","
++
++#: gtk/gtktipsquery.c:180
++msgid "--- No Tip ---"
++msgstr "--- Íåò ïîäñêàçêè ---"
diff --git a/x11-libs/gtk+/files/gtk+-1.2.9-rc.patch b/x11-libs/gtk+/files/gtk+-1.2.9-rc.patch
new file mode 100644
index 0000000..8702443
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.9-rc.patch
@@ -0,0 +1,105 @@
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.am gtk+-1.2.9/gtk/Makefile.am
+--- gtk+-1.2.9.orig/gtk/Makefile.am Sat Mar 3 02:19:46 2001
++++ gtk+-1.2.9/gtk/Makefile.am Sat Mar 3 02:18:16 2001
+@@ -375,11 +375,13 @@
+
+ gtkconfdir = $(sysconfdir)/gtk
+ gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja \
+- gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
++ gtkrc.ko gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 \
+ gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 \
+ gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 \
+ gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps \
+- gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++ gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255 \
++ gtkrc.ru_RU.koi8r gtkrc.ru_RU.cp1251 gtkrc.ru_RU.pt154
++
+
+ # We create a dummy theme for the default GTK+ theme
+ install-data-local:
+diff -urN gtk+-1.2.9.orig/gtk/Makefile.in gtk+-1.2.9/gtk/Makefile.in
+--- gtk+-1.2.9.orig/gtk/Makefile.in Sat Mar 3 02:19:46 2001
++++ gtk+-1.2.9/gtk/Makefile.in Sat Mar 3 02:19:07 2001
+@@ -191,7 +191,7 @@
+ CLEANFILES = $(gen_sources)
+
+ gtkconfdir = $(sysconfdir)/gtk
+-gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
++gtkconf_DATA = gtkrc.az gtkrc.be gtkrc.el gtkrc.eo gtkrc.he gtkrc.hy gtkrc.ja gtkrc.ko gtkrc.ru_RU.koi8r gtkrc.ru_RU.cp1251 gtkrc.ru_RU.pt154 gtkrc.tr gtkrc.th gtkrc.uk gtkrc.iso-8859-2 gtkrc.iso-8859-5 gtkrc.iso-8859-13 gtkrc.iso-8859-14 gtkrc.iso-8859-15 gtkrc.zh_CN gtkrc.zh_TW.big5 gtkrc.ka_GE.georgianacademy gtkrc.ka_GE.georgianps gtkrc.vi_VN.tcvn gtkrc.vi_VN.viscii gtkrc.cp1251 gtkrc.cp1255
+
+
+ #
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.be gtk+-1.2.9/gtk/gtkrc.be
+--- gtk+-1.2.9.orig/gtk/gtkrc.be Sat Mar 3 02:19:46 2001
++++ gtk+-1.2.9/gtk/gtkrc.be Sat Mar 3 02:16:54 2001
+@@ -1,8 +1,6 @@
+ style "gtk-default-cp1251" {
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*"
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251"
+ }
+ class "GtkWidget" style "gtk-default-cp1251"
+
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru gtk+-1.2.9/gtk/gtkrc.ru
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru Mon May 8 22:49:18 2000
++++ gtk+-1.2.9/gtk/gtkrc.ru Thu Jan 1 03:00:00 1970
+@@ -1,8 +0,0 @@
+-style "gtk-default-ru" {
+- fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -cronyx-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,*-r-*"
+-}
+-class "GtkWidget" style "gtk-default-ru"
+-
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.cp1251 gtk+-1.2.9/gtk/gtkrc.ru_RU.cp1251
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.cp1251 Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.ru_RU.cp1251 Sat Mar 3 02:16:54 2001
+@@ -0,0 +1,6 @@
++style "gtk-default-cp1251" {
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251"
++}
++class "GtkWidget" style "gtk-default-cp1251"
++
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.koi8r gtk+-1.2.9/gtk/gtkrc.ru_RU.koi8r
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.koi8r Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.ru_RU.koi8r Sat Mar 3 02:16:54 2001
+@@ -0,0 +1,6 @@
++style "gtk-default-koi8-r" {
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-*"
++}
++class "GtkWidget" style "gtk-default-koi8-r"
++
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.pt154 gtk+-1.2.9/gtk/gtkrc.ru_RU.pt154
+--- gtk+-1.2.9.orig/gtk/gtkrc.ru_RU.pt154 Thu Jan 1 03:00:00 1970
++++ gtk+-1.2.9/gtk/gtkrc.ru_RU.pt154 Sat Mar 3 02:16:54 2001
+@@ -0,0 +1,6 @@
++style "gtk-default-pt154" {
++ fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-*,\
++ -*-*-medium-r-normal--12-*-*-*-*-*-paratype-cp154"
++}
++class "GtkWidget" style "gtk-default-pt154"
++
+diff -urN gtk+-1.2.9.orig/gtk/gtkrc.uk gtk+-1.2.9/gtk/gtkrc.uk
+--- gtk+-1.2.9.orig/gtk/gtkrc.uk Mon May 8 22:49:18 2000
++++ gtk+-1.2.9/gtk/gtkrc.uk Sat Mar 3 02:16:54 2001
+@@ -4,13 +4,12 @@
+ # the KOI8-U charset encoding.
+ #
+ # 1999, Pablo Saratxaga <pablo@mandrakesoft.com>
++# 2000, Changed by AEN <aen@logic.ru>
+ #
+
+ style "gtk-default-uk" {
+ fontset = "-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-*,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--14-*-*-*-*-*-koi8-u,\
+- -*-arial-medium-r-normal--14-*-*-*-*-*-koi8-u,*-r-*"
++ -*-helvetica-medium-r-normal--14-*-*-*-*-*-koi8-u"
+ }
+ class "GtkWidget" style "gtk-default-uk"
+
diff --git a/x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch b/x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch
new file mode 100644
index 0000000..976552e
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-1.2.9-rc2.patch
@@ -0,0 +1,27 @@
+diff -ur gtk+-1.2.9.orig/gtk/gtkrc.cp1251 gtk+-1.2.9/gtk/gtkrc.cp1251
+--- gtk+-1.2.9.orig/gtk/gtkrc.cp1251 Sun Jun 18 17:55:15 2000
++++ gtk+-1.2.9/gtk/gtkrc.cp1251 Sat Mar 3 02:51:18 2001
+@@ -1,8 +1,6 @@
+ style "gtk-default-cp1251" {
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251,*-r-*"
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-microsoft-cp1251"
+ }
+ class "GtkWidget" style "gtk-default-cp1251"
+
+diff -ur gtk+-1.2.9.orig/gtk/gtkrc.iso-8859-5 gtk+-1.2.9/gtk/gtkrc.iso-8859-5
+--- gtk+-1.2.9.orig/gtk/gtkrc.iso-8859-5 Mon May 8 22:49:18 2000
++++ gtk+-1.2.9/gtk/gtkrc.iso-8859-5 Sat Mar 3 02:55:40 2001
+@@ -6,9 +6,7 @@
+
+ style "gtk-default-iso-8859-5" {
+ fontset = "-*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-1,\
+- -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-5,\
+- -*-arial-medium-r-normal--12-*-*-*-*-*-iso8859-5,*-r-*"
++ -*-helvetica-medium-r-normal--12-*-*-*-*-*-iso8859-5"
+ }
+ class "GtkWidget" style "gtk-default-iso-8859-5"
+
diff --git a/x11-libs/gtk+/files/gtk+-ds-gentooalt.patch b/x11-libs/gtk+/files/gtk+-ds-gentooalt.patch
new file mode 100644
index 0000000..8ad08cd
--- /dev/null
+++ b/x11-libs/gtk+/files/gtk+-ds-gentooalt.patch
@@ -0,0 +1,597 @@
+diff -dPNur gtk+-1.2.10/acinclude.m4 gtk+-1.2.10-new/acinclude.m4
+--- gtk+-1.2.10/acinclude.m4 2000-02-03 02:07:42.000000000 +0100
++++ gtk+-1.2.10-new/acinclude.m4 2007-06-24 01:09:06.000000000 +0200
+@@ -670,7 +670,7 @@
+ AC_DEFINE(HAVE_STPCPY)
+ fi
+
+- AM_LC_MESSAGES
++ gt_LC_MESSAGES
+ AM_GTK_WITH_NLS
+
+ if test "x$CATOBJEXT" != "x"; then
+diff -dPNur gtk+-1.2.10/configure.in gtk+-1.2.10-new/configure.in
+--- gtk+-1.2.10/configure.in 2001-03-15 21:31:58.000000000 +0100
++++ gtk+-1.2.10-new/configure.in 2007-06-24 01:09:06.000000000 +0200
+@@ -1,6 +1,8 @@
++builtin(include,gtk.m4)
++
++
+ # Process this file with autoconf to produce a configure script.
+ AC_INIT(gdk/gdktypes.h)
+-
+ # In the following, there are a the following variants
+ # of GLib cflags and libs variables
+ #
+@@ -12,12 +14,11 @@
+ # glib_thread_cflags: cflags to store in gtk-config for gtk-config gthread
+ # glib_thread_libs: libs to store in gtk-config for gtk-config gthread
+
++AC_CANONICAL_TARGET
+ # Save this value here, since automake will set cflags later
+ cflags_set=${CFLAGS+set}
+
+-dnl we need to AC_DIVERT_PUSH/AC_DIVERT_POP these variable definitions so they
+-dnl are available for $ac_help expansion (don't we all *love* autoconf?)
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++GTK_AC_DIVERT_BEFORE_HELP([
+ #
+ # Making releases:
+ # GTK_MICRO_VERSION += 1;
+@@ -32,9 +33,8 @@
+ GTK_MICRO_VERSION=10
+ GTK_INTERFACE_AGE=1
+ GTK_BINARY_AGE=10
+-GTK_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION
+-dnl
+-AC_DIVERT_POP()dnl
++GTK_VERSION="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION"
++])
+
+ AC_SUBST(GTK_MAJOR_VERSION)
+ AC_SUBST(GTK_MINOR_VERSION)
+@@ -44,9 +44,9 @@
+ AC_SUBST(GTK_VERSION)
+
+ # libtool versioning
+-LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
++LT_RELEASE="$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION"
+ LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
+-LT_REVISION=$GTK_INTERFACE_AGE
++LT_REVISION="$GTK_INTERFACE_AGE"
+ LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
+ AC_SUBST(LT_RELEASE)
+ AC_SUBST(LT_CURRENT)
+@@ -54,11 +54,8 @@
+ AC_SUBST(LT_AGE)
+
+ # For automake.
+-VERSION=$GTK_VERSION
+-PACKAGE=gtk+
+-
+-# Save this value here, since automake will set cflags later
+-cflags_set=${CFLAGS+set}
++VERSION="$GTK_VERSION"
++PACKAGE="gtk+"
+
+ dnl Initialize automake stuff
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
+@@ -67,42 +64,40 @@
+ AM_CONFIG_HEADER(config.h)
+
+ dnl Initialize libtool
+-AM_PROG_LIBTOOL
++AC_PROG_LIBTOOL
+
+ dnl Initialize maintainer mode
+ AM_MAINTAINER_MODE
+
+-AC_CANONICAL_HOST
+-
+ dnl figure debugging default, prior to $ac_help setup
+-dnl
+-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++
++GTK_AC_DIVERT_BEFORE_HELP([
+ if test `expr $GTK_MINOR_VERSION \% 2` = 1 ; then
+- debug_default=yes
++ debug_default="yes"
+ else
+- debug_default=minimum
++ debug_default="minimum"
+ fi
+-AC_DIVERT_POP()dnl
+-
++])
+ dnl declare --enable-* args and collect ac_help strings
+-AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
++AC_ARG_ENABLE(debug, [ --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,
++ [enable_debug="$debug_default"])
+ AC_ARG_ENABLE(shm, [ --enable-shm support shared memory if available [default=yes]],
+- echo $enable_shm, enable_shm="yes")
+-AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],
+- , enable_ansi=no)
++ [echo "$enable_shm"],[enable_shm="yes"])
++AC_ARG_ENABLE(ansi, [ --enable-ansi turn on strict ansi [default=no]],,[enable_ansi="no"])
+ AC_ARG_WITH(glib, [ --with-glib=DIR Use uninstalled copy of glib])
+-AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],
+- , enable_xim="yes")
+-AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],
+- , enable_xim_inst="maybe")
+-AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,enable_rebuilds=yes)
++AC_ARG_ENABLE(xim, [ --enable-xim support XIM [default=yes]],,[enable_xim="yes"])
++AC_ARG_ENABLE(xim_inst, [ --disable-xim-inst does not use xim instantiate callback],,
++ [enable_xim_inst="maybe"])
++AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogeneration rules],,
++ [enable_rebuilds="yes"])
+ AC_ARG_WITH(locale, [ --with-locale=LOCALE locale name you want to use ])
+-
+ AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ])
+-AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,with_native_locale=no)
++AC_ARG_WITH(native_locale, [ --with-native-locale=[yes/no] Use native locale support [default=no]],,
++ [with_native_locale="no"])
++
+
+ if test "x$enable_debug" = "xyes"; then
+- test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
++ test "$cflags_set" = "set" || CFLAGS="$CFLAGS -g"
+ GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
+ else
+ if test "x$enable_debug" = "xno"; then
+@@ -113,16 +108,14 @@
+ fi
+
+ AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}")
+-
+ # Build time sanity check...
+ AM_SANITY_CHECK
+
+ # Checks for programs.
+ AC_PROG_CC
+ AC_ISC_POSIX
+-AM_PROG_CC_STDC
++AC_PROG_CC_STDC
+ AC_PROG_INSTALL
+-AC_PROG_MAKE_SET
+
+ changequote(,)dnl
+ if test "x$GCC" = "xyes"; then
+@@ -144,7 +137,6 @@
+ fi
+ fi
+ changequote([,])dnl
+-
+ # Honor aclocal flags
+ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+
+@@ -158,8 +150,7 @@
+ AC_CHECK_PROG(INDENT, indent, indent)
+
+ REBUILD=\#
+-if test "x$enable_rebuilds" = "xyes" && \
+- test -n "$PERL" && \
++if test "x$enable_rebuilds" = "xyes" && test -n "$PERL" && \
+ $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
+ test -n "$AWK" ; then
+ REBUILD=
+@@ -252,7 +243,7 @@
+ else
+ # Use uninstalled glib (assume they got the version right)
+
+- GLIB_CONFIG=$with_glib/glib-config
++ GLIB_CONFIG="$with_glib/glib-config"
+ if test -x $GLIB_CONFIG ; then
+ :
+ else
+@@ -268,9 +259,9 @@
+ glib_release=`$GLIB_CONFIG --version | sed 's%\\.[[0-9]]*$%%'`
+
+ # canonicalize relative paths
+- case $with_glib in
++ case "$with_glib" in
+ /*)
+- glib_dir=$with_glib
++ glib_dir="$with_glib"
+ ;;
+ *)
+ glib_dir="\$(top_builddir)/$with_glib"
+@@ -303,61 +294,56 @@
+ saved_ldflags="$LDFLAGS"
+
+ CFLAGS="$CFLAGS $X_CFLAGS"
+-LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
++LDFLAGS="$LDFLAGS $X_LDFLAGS"
+
+ if test "x$no_x" = "xyes"; then
+ AC_MSG_ERROR([
+ *** X libraries or include files not found. Check 'config.log' for
+ *** more details.])
+ fi
+-
+ # Checks for libraries.
+ # Check for the X11 library
+-AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS",
++AC_CHECK_LIB(X11,XOpenDisplay,
++ x_libs="-lX11 $X_EXTRA_LIBS",
+ AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]),
+- $X_EXTRA_LIBS)
+-
++ $X_EXTRA_LIBS
++)
+ if test "x$enable_shm" = "xyes"; then
+ # Check for the Xext library (needed for XShm extention)
+ AC_CHECK_LIB(Xext, XShmAttach,
+ x_libs="-lXext $x_libs",
+ # On AIX, it is in XextSam instead, but we still need -lXext
+- AC_CHECK_LIB(XextSam, XShmAttach,
++ [AC_CHECK_LIB(XextSam, XShmAttach,
+ x_libs="-lXextSam -lXext $x_libs",
+- no_xext_lib=yes, $x_libs),
+- $x_libs)
++ no_xext_lib="yes",
++ $x_libs
++ )],
++ $x_libs
++ )
+ fi
+-
+ # Check for shaped window extension
+-
+ AC_CHECK_LIB(Xext, XShapeCombineMask,
+- if test -z "`echo $x_libs | grep "\-lXext" 2> /dev/null`"; then
++ if test -z "`echo $x_libs | grep \-lXext 2> /dev/null`"; then
+ x_libs="-lXext $x_libs"
+ fi
+- AC_DEFINE(HAVE_SHAPE_EXT),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_SHAPE_EXT),,
++ $x_libs
++)
+ # Check for XConvertCase (X11R6 specific)
+-
+ AC_CHECK_LIB(X11, XConvertCase,
+- AC_DEFINE(HAVE_XCONVERTCASE),
+- ,
+- $x_libs)
+-
++ AC_DEFINE(HAVE_XCONVERTCASE),,
++ $x_libs
++)
+ # Check for XIM support.
+-
+-AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,
+- : ,
++AC_CHECK_LIB(X11, XUnregisterIMInstantiateCallback,,
+ enable_xim_inst="no",
+- $x_libs)
+-
++ $x_libs
++)
+ # On Solaris, calling XRegisterIMInstantiateCallback seems to
+ # cause an immediate segfault, so we disable it, unless
+ # the user specifically forces it to be on.
+-
+-if test x$enable_xim_inst = xmaybe ; then
+- case host in
++if test "x$enable_xim_inst" = "xmaybe" ; then
++ case "$host" in
+ *-*-solaris*)
+ enable_xim_inst="no"
+ ;;
+@@ -375,16 +361,15 @@
+ fi
+
+ x_cflags="$X_CFLAGS"
+-x_ldflags="$X_LDFLAGS $X_LIBS"
++x_ldflags="$X_LDFLAGS"
+
+ # set up things for XInput
+-
+ if test "x$with_xinput" = "xgxi"; then
+ AC_MSG_WARN([
+ *** The generic XInput support has not been tested for several years
+ *** and is not known to work with any currently available X servers])
+ AC_DEFINE(XINPUT_GXI)
+- xinput_progs=gxid
++ xinput_progs="gxid"
+ x_libs="-lXi $x_libs"
+ elif test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then
+ AC_DEFINE(XINPUT_XFREE)
+@@ -404,77 +389,72 @@
+
+ if test "x$enable_shm" = "xyes"; then
+ # Check for shared memory
+- AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
+- AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
++ AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc="yes")
++ AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm="yes")
+
+ # Check for the X shared memory extension header file
+ AC_MSG_CHECKING(X11/extensions/XShm.h)
+ if test "x$no_xext_lib" = "xyes"; then
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ else
+ if test -f "$x_includes/X11/extensions/XShm.h"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_XSHM_H)
+ else
+ AC_MSG_RESULT(no)
+- no_xshm=yes
++ no_xshm="yes"
+ fi
+ fi
+ fi
+-
+ # Check if X_LOCALE definition is necessary
+-
+ AC_MSG_CHECKING(need -DX_LOCALE)
+
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <locale.h>
+-
+-int
+-main ()
++ int main ()
+ {
+ return setlocale (LC_ALL, "${with_locale}") == NULL;
+ }],
+-need_x_locale=no,
+-need_x_locale=yes,
+-need_x_locale=no)
++ need_x_locale="no",
++ need_x_locale="yes",
++ need_x_locale="no"
++)
+ AC_MSG_RESULT($need_x_locale)
+
+-use_native_locale=no
+-if test $need_x_locale = yes; then
++use_native_locale="no"
++if test "$need_x_locale" = "yes"; then
+ GTK_LOCALE_FLAGS="-DX_LOCALE"
+ else
+- if test x$with_native_locale = xyes ; then
++ if test "x$with_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(functioning locale support)
+
+- AC_TRY_COMPILE([#include <stdlib.h>],[
+- char c;
++ AC_TRY_COMPILE([#include <stdlib.h>],
++ [char c;
+ if (MB_CUR_MAX == 1) {
+ wctomb(&c, 42);
+- }
+- ],use_native_locale=yes,)
+-
++ }],
++ use_native_locale="yes"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+ fi
+
+-if test x$use_native_locale = xyes ; then
++if test "x$use_native_locale" = "xyes" ; then
+ AC_MSG_CHECKING(if sizeof(wchar_t) == 4)
+
+- AC_TRY_RUN([
+- #include <stdlib.h>
+-
+- int
+- main ()
++ AC_TRY_RUN([#include <stdlib.h>
++ int main ()
+ {
+ return (sizeof(wchar_t) == 4) ? 0 : 1;
+- }],
+- ,use_native_locale=no,:)
++ }],,
++ use_native_locale="no"
++ )
+ AC_MSG_RESULT($use_native_locale)
+ fi
+
+-if test $use_native_locale = yes ; then
++if test "$use_native_locale" = "yes" ; then
+ AC_DEFINE(USE_NATIVE_LOCALE)
+ fi
+
+@@ -493,13 +473,17 @@
+
+ # Check if <sys/select.h> needs to be included for fd_set
+ AC_MSG_CHECKING([for fd_set])
+-AC_TRY_COMPILE([#include <sys/types.h>],
+- [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_COMPILE([#include <sys/types.h>
++ ],
++ [fd_set readMask, writeMask;],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_MSG_RESULT([yes, found in sys/types.h])
+ else
+- AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
+- if test $gtk_ok = yes; then
++ AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok="yes")
++ if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_SYS_SELECT_H)
+ AC_MSG_RESULT([yes, found in sys/select.h])
+ else
+@@ -511,30 +495,35 @@
+ # Duplicate `widechar' tests from `glib'.
+ # Check for wchar.h
+ AC_MSG_CHECKING(for wchar.h)
+-AC_TRY_CPP([#include <wchar.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wchar.h>
++ ],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCHAR_H,1,[Define if wchar.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # Check for wctype.h (for iswalnum)
+ AC_MSG_CHECKING(for wctype.h)
+-AC_TRY_CPP([#include <wctype.h>], gtk_ok=yes, gtk_ok=no)
+-if test $gtk_ok = yes; then
++AC_TRY_CPP([#include <wctype.h>], gtk_ok="yes", gtk_ok="no")
++if test "$gtk_ok" = "yes"; then
+ AC_DEFINE(HAVE_WCTYPE_H,1,[Define if wctype.h exists])
+ fi
+ AC_MSG_RESULT($gtk_ok)
+
+ # in Solaris 2.5, `iswalnum' is in -lw
+ GDK_WLIBS=
+-AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS=-lw)])
++AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS="-lw")])
+
+ # The following is necessary for Linux libc-5.4.38
+ oLIBS="$LIBS"
+ LIBS="$LIBS $GDK_WLIBS"
+ AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
+-AC_TRY_LINK([#include <stdlib.h>],[
+-#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
++AC_TRY_LINK([#include <stdlib.h>
++ ],
++ [#if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
+ # ifdef HAVE_WCTYPE_H
+ # include <wctype.h>
+ # else
+@@ -545,11 +534,13 @@
+ #else
+ # define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
+ #endif
+-iswalnum((wchar_t) 0);
+-], gtk_ok=yes, gtk_ok=no)
++ iswalnum((wchar_t) 0);],
++ gtk_ok="yes",
++ gtk_ok="no"
++)
+ LIBS="$oLIBS"
+
+-if test $gtk_ok = no; then
++if test "$gtk_ok" = "no"; then
+ AC_DEFINE(HAVE_BROKEN_WCTYPE,1,[Define if the wctype function is broken])
+ GDK_WLIBS=
+ fi
+@@ -571,5 +562,5 @@
+ gtk/Makefile
+ gtk/gtkfeatures.h
+ gdk.pc
+-gtk+.pc
+-], [chmod +x gtk-config])
++gtk+.pc],
++[chmod +x gtk-config])
+diff -dPNur gtk+-1.2.10/gdk/Makefile.am gtk+-1.2.10-new/gdk/Makefile.am
+--- gtk+-1.2.10/gdk/Makefile.am 2000-10-21 20:20:40.000000000 +0200
++++ gtk+-1.2.10-new/gdk/Makefile.am 2007-06-24 01:09:06.000000000 +0200
+@@ -21,12 +21,11 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+
++libgdk_la_LIBADD = @GLIB_DEPLIBS@ @x_libs@ -lm
++
+ #
+ # setup source file variables
+ #
+@@ -104,14 +103,13 @@
+ EXTRA_PROGRAMS = gxid
+ bin_PROGRAMS = @xinput_progs@
+ LDADDS = @STRIP_BEGIN@ \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GLIB_LIBS@ \
+ -lm \
+ @STRIP_END@
+ gxid_SOURCES = gxid.c
+ gxid_LDADD = $(LDADDS)
+-
++gxid_LDFLAGS = @x_ldflags@
+
+ .PHONY: files
+
+diff -dPNur gtk+-1.2.10/gtk/Makefile.am gtk+-1.2.10-new/gtk/Makefile.am
+--- gtk+-1.2.10/gtk/Makefile.am 2001-02-02 18:09:02.000000000 +0100
++++ gtk+-1.2.10-new/gtk/Makefile.am 2007-06-24 01:09:06.000000000 +0200
+@@ -27,13 +27,15 @@
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE) \
+ -export-dynamic \
+- @GLIB_DEPLIBS@ \
+ @x_ldflags@ \
+- @x_libs@ \
+- -lm \
+ @STRIP_END@
+-# $(top_builddir)/gdk/libgdk.la
+-
++libgtk_la_LIBADD = @STRIP_BEGIN@ \
++ $(top_builddir)/gdk/libgdk.la \
++ @x_libs@ \
++ @GDK_WLIBS@ \
++ @GLIB_LIBS@ \
++ -lm \
++ @STRIP_END@
+
+ #
+ # setup source file variables
+@@ -426,7 +428,6 @@
+ LDADDS = @STRIP_BEGIN@ \
+ libgtk.la \
+ $(top_builddir)/gdk/libgdk.la \
+- @x_ldflags@ \
+ @x_libs@ \
+ @GDK_WLIBS@ \
+ @GLIB_LIBS@ \
+@@ -439,12 +440,20 @@
+ testdnd_DEPENDENCIES = $(DEPS)
+ simple_DEPENDENCIES = $(DEPS)
+ #testthreads_DEPENDENCIES = $(DEPS)
++
+ testgtk_LDADD = $(LDADDS)
++testgtk_LDFLAGS=@x_ldflags@
+ testinput_LDADD = $(LDADDS)
++testinput_LDFLAGS = @x_ldflags@
+ testselection_LDADD = $(LDADDS)
++testselection_LDFLAGS = @x_ldflags@
+ testrgb_LDADD = $(LDADDS)
++testrgb_LDFLAGS = @x_ldflags@
+ testdnd_LDADD = $(LDADDS)
++testdnd_LDFLAGS = @x_ldflags@
+ simple_LDADD = $(LDADDS)
++simple_LDFLAGS = @x_ldflags@
++
+ #testthreads_LDADD = $(LDADDS)
+
+ .PHONY: files test test-debug
+diff -dPNur gtk+-1.2.10/gtk.m4 gtk+-1.2.10-new/gtk.m4
+--- gtk+-1.2.10/gtk.m4 1999-02-18 17:43:35.000000000 +0100
++++ gtk+-1.2.10-new/gtk.m4 2007-06-24 01:09:06.000000000 +0200
+@@ -1,6 +1,11 @@
+ # Configure paths for GTK+
+ # Owen Taylor 97-11-3
+-
++AC_DEFUN([GTK_AC_DIVERT_BEFORE_HELP],
++[ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])],
++ [ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])],
++ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
++$1
++AC_DIVERT_POP()])])])
+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+ dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+ dnl
diff --git a/x11-libs/gtk+/files/gtkrc b/x11-libs/gtk+/files/gtkrc
new file mode 100644
index 0000000..8d17834
--- /dev/null
+++ b/x11-libs/gtk+/files/gtkrc
@@ -0,0 +1,39 @@
+style "default"
+
+{
+ font = "-*-lucida-medium-r-normal-*-*-100-*-*-*-*-*-*"
+}
+
+style "button" = "default"
+
+{
+ bg[PRELIGHT] = { 0.7, 0.7, 0.9 }
+}
+
+style "treeitem"
+{
+bg[ACTIVE] = { 0.7, 0.7, 0.9 }
+}
+
+style "scrollbar" = "button"
+{
+ bg[ACTIVE] = {0.6, 0.6, 0.6 }
+}
+
+style "status" {
+ bg[PRELIGHT] = { 0.3, 1.0, 0.3 }
+}
+
+style "gtk-tooltips" {
+ bg[NORMAL] = "#ffff60"
+}
+
+class "GtkWidget" style "default"
+class "GtkButton" style "button"
+class "GtkItem" style "button"
+class "GtkProgressBar" style "status"
+class "GtkScrollbar" style "scrollbar"
+class "GtkTreeItem" style "treeitem"
+widget "gtk-tooltips" style "gtk-tooltips"
+
+
diff --git a/x11-libs/gtk+/gtk+-1.2.10-r15.ebuild b/x11-libs/gtk+/gtk+-1.2.10-r15.ebuild
new file mode 100644
index 0000000..bac36ea
--- /dev/null
+++ b/x11-libs/gtk+/gtk+-1.2.10-r15.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-1.2.10-r12.ebuild,v 1.12 2007/01/06 05:09:58 geoman Exp $
+
+GNOME_TARBALL_SUFFIX="gz"
+WANT_AUTOMAKE=1.11
+inherit eutils toolchain-funcs autotools
+
+DESCRIPTION="The GIMP Toolkit"
+HOMEPAGE="http://www.gtk.org/"
+SRC_URI="ftp://ftp.gtk.org/pub/gtk/v1.2/gtk+-1.2.10.tar.gz http://www.ibiblio.org/gentoo/distfiles/gtk+-1.2.10-r8-gentoo.diff.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="1"
+KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 sh sparc x86 ~x86-fbsd"
+IUSE="nls debug"
+
+# Supported languages and translated documentation
+# Be sure all languages are prefixed with a single space!
+MY_AVAILABLE_LINGUAS=" az ca cs da de el es et eu fi fr ga gl hr hu it ja ko lt nl nn no pl pt_BR pt ro ru sk sl sr sv tr uk vi"
+IUSE="${IUSE} ${MY_AVAILABLE_LINGUAS// / linguas_}"
+
+RDEPEND="=dev-libs/glib-1.2*
+ || (
+ ( x11-libs/libXi x11-libs/libXt )
+ virtual/x11
+ )"
+DEPEND="${RDEPEND}
+ || (
+ ( x11-proto/inputproto x11-proto/xextproto )
+ virtual/x11
+ )
+ nls? ( sys-devel/gettext dev-util/intltool )"
+
+src_unpack() {
+ unpack ${P}.tar.gz
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-m4.patch
+ epatch "${DISTDIR}"/gtk+-1.2.10-r8-gentoo.diff.bz2
+ epatch "${FILESDIR}"/${PN}-1.2-locale_fix.patch
+ epatch "${FILESDIR}"/${P}-as-needed.patch
+# epatch "${FILESDIR}"/gtk+-ds-gentooalt.patch
+
+## epatch "${FILESDIR}"/gtk+-1.2.10-alt-linkage.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-cvs-border.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-cvs-dndnewwindow.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-cvs-expose.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-cvs-focus.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-cvs-labelvariable.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-cvs-netwmpid.patch
+### epatch "${FILESDIR}"/gtk+-1.2.10-cvs-rclocale.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-mdk-argb.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-mdk-defaultcolor.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-mdk-fileselectorfallback.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-mdk-gtklist.patch
+### epatch "${FILESDIR}"/gtk+-1.2.10-mdk-gtkrc_files.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-mdk-libdir.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-mdk-themeswitch.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-rh-alignment.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-bellvolume.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-clistfocusrow.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-ctext.patch
+### epatch "${FILESDIR}"/gtk+-1.2.10-rh-deletedir.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-rh-encoding.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-fontwarning.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-kpenter.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-localecrash.patch
+# epatch "${FILESDIR}"/gtk+-1.2.10-rh-m4.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-missingchar.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-pixmapref.patch
+ epatch "${FILESDIR}"/gtk+-1.2.10-rh-troughpaint.patch
+# epatch "${FILESDIR}"/gtk+-1.2.6-ximian-noborder.patch
+# epatch "${FILESDIR}"/gtk+-1.2.8-advanced-gtkfilesel.patch
+# epatch "${FILESDIR}"/gtk+-1.2.9-be.patch
+# epatch "${FILESDIR}"/gtk+-1.2.9-rc2.patch
+# epatch "${FILESDIR}"/gtk+-1.2.9-rc.patch
+
+ epatch "${FILESDIR}"/gtk+-1.2.10-automake.diff
+
+ eautoreconf
+}
+
+src_compile() {
+ local myconf=
+ use nls || myconf="${myconf} --disable-nls"
+ strip-linguas ${MY_AVAILABLE_LINGUAS}
+
+ if use debug ; then
+ myconf="${myconf} --enable-debug=yes"
+ else
+ myconf="${myconf} --enable-debug=minimum"
+ fi
+
+ econf \
+ --sysconfdir=/etc \
+ --with-xinput=xfree \
+ --with-x \
+ ${myconf} || die
+
+ rm -f "${S}"/libtool
+ cp /usr/bin/libtool "${S}"/
+ SED="sed" emake CC="$(tc-getCC)" || die
+}
+
+src_install() {
+ SED="sed" make install DESTDIR="${D}" || die
+
+ dodoc AUTHORS ChangeLog* HACKING
+ dodoc NEWS* README* TODO
+ docinto docs
+ cd docs
+ dodoc *.txt *.gif text/*
+ dohtml -r html
+
+ #install nice, clean-looking gtk+ style
+ insinto /usr/share/themes/Gentoo/gtk
+ doins "${FILESDIR}"/gtkrc
+}
+
+pkg_postinst() {
+ if [[ -e /etc/X11/gtk/gtkrc ]] ; then
+ ewarn "Older versions added /etc/X11/gtk/gtkrc which changed settings for"
+ ewarn "all themes it seems. Please remove it manually as it will not due"
+ ewarn "to /env protection."
+ fi
+
+ echo ""
+ einfo "The old gtkrc is available through the new Gentoo gtk theme."
+}
diff --git a/x11-libs/vte/Manifest b/x11-libs/vte/Manifest
new file mode 100644
index 0000000..ed66318
--- /dev/null
+++ b/x11-libs/vte/Manifest
@@ -0,0 +1,4 @@
+AUX vte-0.30.1-alt-meta.patch 2490 RMD160 33e285f9288bf9f320e3e6d247b15abca20b55c0 SHA1 5f611947b0c7de2e21ab3f8f3f4387f32160e56a SHA256 31a46fee8fe59bd1d6df54bc502b608fe80da57bf3786e2dc6e9856a4e793ed6
+AUX vte-0.30.1-ds-mc.diff 1477 RMD160 3ea015dd3dec285f4acfa5b8ca75d3ece52b3c7d SHA1 ec9ec963d39599c07dcba927e6a202b82e05f3bc SHA256 01e56bf5a801ce641ff3873b34b01a073b6daf2ca4fb112801ad810a405f7418
+DIST vte-0.30.1.tar.xz 951688 RMD160 f4de2cf9a1fdeb583cb849eed3d231ae8450369c SHA1 e8d4894f3acb572519e59baf621856e7ffb3e1fa SHA256 bbe421de3015935c22f685eea0eb8be2c1fecd5021c1f822996b8f0a282f6b64
+EBUILD vte-0.30.1-r3.ebuild 1501 RMD160 dfa92453aa8059b76860247bff3aef2c652fcc33 SHA1 aa08a9b365cf35af440b105709ecfe4ef7a876ad SHA256 3ff50d644c744067e2498f7035f1f74ed66780015a587b965f65c1a4769321c3
diff --git a/x11-libs/vte/files/vte-0.30.1-alt-meta.patch b/x11-libs/vte/files/vte-0.30.1-alt-meta.patch
new file mode 100644
index 0000000..bd364be
--- /dev/null
+++ b/x11-libs/vte/files/vte-0.30.1-alt-meta.patch
@@ -0,0 +1,74 @@
+From 180dcc578e13c6096e277fb853e7162db640f207 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Tue, 15 Nov 2011 03:06:40 -0500
+Subject: [PATCH] Map both gdk's Meta and Alt to vte's Meta for >=gtk+-3.2.2
+ compatibility
+
+Also, since VTE_META_MASK is now a mask with multiple bits set, code that
+compares gdk key modifiers to VTE_META_MASK by numerical equality is no
+longer guaranteed to work. Therefore, for such comparisons a new function,
+vte_keymap_fixup_modifiers, is introduced; it ensures that if any bits
+matching matching VTE_META_MASK are set, then all are set.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=663779
+---
+ src/keymap.c | 15 +++++++++++++--
+ src/keymap.h | 2 +-
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/src/keymap.c b/src/keymap.c
+index 9a21669..95b4c5b 100644
+--- a/src/keymap.c
++++ b/src/keymap.c
+@@ -990,6 +990,17 @@ static const struct _vte_keymap_group {
+ {GDK_KEY (F35), _vte_keymap_GDK_F35},
+ };
+
++/* Restrict modifiers to the specified mask and ensure that VTE_META_MASK,
++ * despite being a compound mask, is treated as indivisible. */
++GdkModifierType
++_vte_keymap_fixup_modifiers(GdkModifierType modifiers,
++ GdkModifierType mask)
++{
++ if (modifiers & VTE_META_MASK)
++ modifiers |= VTE_META_MASK;
++ return modifiers & mask;
++}
++
+ /* Map the specified keyval/modifier setup, dependent on the mode, to either
+ * a literal string or a capability name. */
+ void
+@@ -1104,7 +1115,7 @@ _vte_keymap_map(guint keyval,
+ } else {
+ fkey_mode = fkey_default;
+ }
+- modifiers &= (GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
++ modifiers = _vte_keymap_fixup_modifiers(modifiers, GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
+
+ /* Search for the conditions. */
+ for (i = 0; entries[i].normal_length || entries[i].special[0]; i++)
+@@ -1375,7 +1386,7 @@ _vte_keymap_key_add_key_modifiers(guint keyval,
+ return;
+ }
+
+- switch (modifiers & significant_modifiers) {
++ switch (_vte_keymap_fixup_modifiers(modifiers, significant_modifiers)) {
+ case 0:
+ modifier = 0;
+ break;
+diff --git a/src/keymap.h b/src/keymap.h
+index 243e22e..21d9b8e 100644
+--- a/src/keymap.h
++++ b/src/keymap.h
+@@ -27,7 +27,7 @@
+
+ G_BEGIN_DECLS
+
+-#define VTE_META_MASK GDK_META_MASK
++#define VTE_META_MASK (GDK_META_MASK | GDK_MOD1_MASK)
+ #define VTE_NUMLOCK_MASK GDK_MOD2_MASK
+
+ /* Map the specified keyval/modifier setup, dependent on the mode, to either
+--
+1.7.8.rc3
+
diff --git a/x11-libs/vte/files/vte-0.30.1-ds-mc.diff b/x11-libs/vte/files/vte-0.30.1-ds-mc.diff
new file mode 100644
index 0000000..effeff2
--- /dev/null
+++ b/x11-libs/vte/files/vte-0.30.1-ds-mc.diff
@@ -0,0 +1,43 @@
+diff -dPNur vte-0.30.1/src/vte.c vte-0.30.1-ds/src/vte.c
+--- vte-0.30.1/src/vte.c 2011-09-26 14:32:48.000000000 +0200
++++ vte-0.30.1-ds/src/vte.c 2012-01-23 02:12:16.000000000 +0100
+@@ -5389,7 +5390,9 @@
+ break;
+ case GDK_KEY (KP_Insert):
+ case GDK_KEY (Insert):
+- if (modifiers & GDK_SHIFT_MASK) {
++ //printf("%lx %s\n", modifiers, terminal->window_title);
++ if (strncmp(terminal->window_title, "mc", 2)) {
++ if (modifiers & GDK_SHIFT_MASK) {
+ if (modifiers & GDK_CONTROL_MASK) {
+ vte_terminal_paste_clipboard(terminal);
+ handled = TRUE;
+@@ -5399,10 +5402,27 @@
+ handled = TRUE;
+ suppress_meta_esc = TRUE;
+ }
+- } else if (modifiers & GDK_CONTROL_MASK) {
++ } else if (modifiers & GDK_CONTROL_MASK) {
+ vte_terminal_copy_clipboard(terminal);
+ handled = TRUE;
+ suppress_meta_esc = TRUE;
++ }
++ }
++
++ if ((modifiers & (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) == (GDK_CONTROL_MASK|GDK_SHIFT_MASK)) {
++ vte_terminal_paste_primary(terminal);
++ handled = TRUE;
++ suppress_meta_esc = TRUE;
++ } else if (modifiers & (GDK_MOD1_MASK|GDK_META_MASK|0x2000)) {
++ if (modifiers & GDK_CONTROL_MASK) {
++ vte_terminal_copy_clipboard(terminal);
++ handled = TRUE;
++ suppress_meta_esc = TRUE;
++ } else if (modifiers & GDK_SHIFT_MASK) {
++ vte_terminal_paste_clipboard(terminal);
++ handled = TRUE;
++ suppress_meta_esc = TRUE;
++ }
+ }
+ break;
+ /* Keypad/motion keys. */
diff --git a/x11-libs/vte/vte-0.30.1-r3.ebuild b/x11-libs/vte/vte-0.30.1-r3.ebuild
new file mode 100644
index 0000000..b852849
--- /dev/null
+++ b/x11-libs/vte/vte-0.30.1-r3.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/vte/vte-0.30.1-r2.ebuild,v 1.1 2011/11/18 08:48:37 tetromino Exp $
+
+EAPI="4"
+GCONF_DEBUG="yes"
+GNOME2_LA_PUNT="yes"
+
+inherit eutils gnome2
+
+DESCRIPTION="GNOME terminal widget"
+HOMEPAGE="http://git.gnome.org/browse/vte"
+
+LICENSE="LGPL-2"
+SLOT="2.90"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
+IUSE="debug doc glade +introspection"
+
+PDEPEND="x11-libs/gnome-pty-helper"
+RDEPEND=">=dev-libs/glib-2.26:2
+ >=x11-libs/gtk+-3.1.9:3[introspection?]
+ >=x11-libs/pango-1.22.0
+
+ sys-libs/ncurses
+ x11-libs/libX11
+ x11-libs/libXft
+
+ glade? ( >=dev-util/glade-3.9:3.10 )
+ introspection? ( >=dev-libs/gobject-introspection-0.9.0 )"
+DEPEND="${RDEPEND}
+ >=dev-util/intltool-0.35
+ >=dev-util/pkgconfig-0.9
+ sys-devel/gettext
+ doc? ( >=dev-util/gtk-doc-1.13 )"
+
+pkg_setup() {
+ # Python bindings are via gobject-introspection
+ # Ex: from gi.repository import Vte
+ G2CONF="${G2CONF}
+ --disable-gnome-pty-helper
+ --disable-deprecation
+ --disable-maintainer-mode
+ --disable-static
+ $(use_enable debug)
+ $(use_enable glade glade-catalogue)
+ $(use_enable introspection)"
+ DOCS="AUTHORS ChangeLog HACKING NEWS README"
+}
+
+src_prepare() {
+ # https://bugzilla.gnome.org/show_bug.cgi?id=663779
+ epatch "${FILESDIR}/${PN}-0.30.1-alt-meta.patch"
+#SDS
+ epatch "${FILESDIR}/${PN}-0.30.1-ds-mc.diff" || die
+#EDS
+
+ gnome2_src_prepare
+}
diff --git a/x11-plugins/gkrellm-xkb/Manifest b/x11-plugins/gkrellm-xkb/Manifest
new file mode 100644
index 0000000..cf82c04
--- /dev/null
+++ b/x11-plugins/gkrellm-xkb/Manifest
@@ -0,0 +1,3 @@
+AUX gkrellm-xkb-ds-subs.patch 705 RMD160 e699094bc8d44c0ae8cc06fe121b9b6f2a61db82 SHA1 1a0994e6446953f6d635e9f74903342a8a463185 SHA256 4ad4c14f40538caebb8ca24755b763fc0ca9bfb795e7720ed610a432b5079c43
+DIST gkrellm-xkb-1.05.tar.gz 37775 RMD160 91bed24ee1768e11b47ce922f349664fcabb3ceb SHA1 2a1e57dfa076e6bab27f52b7acfc628cf98ae129 SHA256 0216f3a18fbefad0f672034b80f97545a9db35c575660b7be1a4978317481981
+EBUILD gkrellm-xkb-1.05-r1.ebuild 742 RMD160 c64a72640ff087e66d18eae046d702e53db4f223 SHA1 dd6093bf400c6924303f1eaab9d499fa8ecbc986 SHA256 fa51fa42dad4dedff50668612522fcf8912cdfaa61e8d38a456f8abab4dc4e05
diff --git a/x11-plugins/gkrellm-xkb/files/gkrellm-xkb-ds-subs.patch b/x11-plugins/gkrellm-xkb/files/gkrellm-xkb-ds-subs.patch
new file mode 100644
index 0000000..59698e2
--- /dev/null
+++ b/x11-plugins/gkrellm-xkb/files/gkrellm-xkb-ds-subs.patch
@@ -0,0 +1,12 @@
+diff -dPNur gkrellm-xkb-1.05/main.c gkrellm-xkb-1.05-new/main.c
+--- gkrellm-xkb-1.05/main.c 2004-02-21 20:26:36.000000000 +0400
++++ gkrellm-xkb-1.05-new/main.c 2006-12-04 15:03:42.000000000 +0400
+@@ -585,7 +585,7 @@
+ int i;
+ i = 0;
+ while (global_flag_map[i].country_code) {
+- if (g_ascii_strcasecmp(global_flag_map[i].country_code, xkb_rules[pos]) == 0) {
++ if (STARTS_WITH(xkb_rules[pos], global_flag_map[i].country_code)) {
+ group->flag_xpm = global_flag_map[i].flag_pointer;
+ /* fprintf(stderr, "xkb_find_flag_from_rules: found flag: %s\n", xkb_rules[pos]); */
+ return True;
diff --git a/x11-plugins/gkrellm-xkb/gkrellm-xkb-1.05-r1.ebuild b/x11-plugins/gkrellm-xkb/gkrellm-xkb-1.05-r1.ebuild
new file mode 100644
index 0000000..a5587eb
--- /dev/null
+++ b/x11-plugins/gkrellm-xkb/gkrellm-xkb-1.05-r1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-plugins/gkrellm-xkb/gkrellm-xkb-1.05.ebuild,v 1.3 2006/05/29 23:10:48 robbat2 Exp $
+
+inherit eutils
+
+DESCRIPTION="XKB keyboard switcher for gkrellm2"
+HOMEPAGE="http://sweb.cz/tripie/gkrellm/xkb/"
+SRC_URI="http://sweb.cz/tripie/gkrellm/xkb/dist/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="x86 ~amd64"
+IUSE=""
+
+DEPEND=">=app-admin/gkrellm-2"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epatch ${FILESDIR}/gkrellm-xkb-ds-subs.patch || die
+}
+
+src_compile() {
+ emake || die "emake failed"
+}
+
+src_install() {
+ insinto /usr/lib/gkrellm2/plugins
+ doins xkb.so
+ dodoc AUTHORS LICENSE ChangeLog
+}
diff --git a/x11-plugins/wmauda/Manifest b/x11-plugins/wmauda/Manifest
new file mode 100644
index 0000000..6389a20
--- /dev/null
+++ b/x11-plugins/wmauda/Manifest
@@ -0,0 +1,3 @@
+AUX link-against-missing-libraries.patch 855 SHA256 42622a9aff646ce4c0d701f7f64d21eb105032eed0faf2d17e1288d145b9b12e SHA512 c417bc11173782273b934ad96be16f155062d1d1e7305897fbc8a4b96d01142e58f45c70200cbe75ed2ff8b188c3e99164e1c12be9026facf77d81919a2c2375 WHIRLPOOL 0694db52d948ee9eca6a2fe548d75c09520d78876b940f3f883e0bc381ab95f027f81832cadc0b16f70191c807effc907ea90ba12b146f5d6324b6f1c9f649eb
+DIST wmauda-0.8.tar.gz 18196 SHA256 50a8156a98aedfac3687af9cf0cdd1f2976ec5cfb7887a6612886b0ca1fa767b SHA512 27124a57552b76f52689a1e99d6caf1e76982b6b7513e9a7cd83132d2f8645d2c77acb15048dc6e015af95d97f100f43068167049a56b54057964542c0a691a5 WHIRLPOOL db90a94799b1c94645f3d2947c061ab247938cca630824856a4bf99196648d622179db3380c6654789866424b249cc1184d0d91fe3672c175067f5f813ba7eb0
+EBUILD wmauda-0.8.ebuild 990 SHA256 b012ebc6bfd3962c127b16375d0eaabb1331bc487d1ed6ba780e6d9fbf1d38d8 SHA512 00c62081ef177a117ce457682ec799fa88e4fe87678ae12c435e5e11481b1861e1ebb9753fee42680ae45179d028944bd099c7d79307c4afcb91cad1c7160b06 WHIRLPOOL 121348512addf6c2f48545099d51589471e1bb5dba3862ec08bd8d2b02e94b9c0a0fb7631ff05f447a81399c712e4d9425bde8eaed5934229c20bf4f4f9037e1
diff --git a/x11-plugins/wmauda/files/link-against-missing-libraries.patch b/x11-plugins/wmauda/files/link-against-missing-libraries.patch
new file mode 100644
index 0000000..ec34567
--- /dev/null
+++ b/x11-plugins/wmauda/files/link-against-missing-libraries.patch
@@ -0,0 +1,22 @@
+Description: link against libdbus-glib-1 and libX11
+Author: Sebastian Ramacher <sramacher@debian.org>
+Bug-Debian: http://bugs.debian.org/713481
+Last-Update: 2013-07-19
+
+--- a/Makefile
++++ b/Makefile
+@@ -7,11 +7,11 @@
+ PIXMAP_DIR := $(PREFIX)/share/pixmaps
+ MANPAGE_DIR := $(PREFIX)/share/man/man1
+
+-CFLAGS += $(shell pkg-config audacious --cflags) $(shell pkg-config dbus-1 --cflags)
+-LIBS := $(shell pkg-config audacious --libs) $(shell pkg-config audclient --libs) $(shell pkg-config dbus-1 --libs)
++CFLAGS += $(shell pkg-config dbus-glib-1 --cflags)
++LIBS := $(shell pkg-config audclient --libs) $(shell pkg-config dbus-glib-1 --libs)
+
+ CFLAGS += $(shell pkg-config gtk+-2.0 --cflags)
+-LIBS += $(shell pkg-config gtk+-2.0 --libs)
++LIBS += $(shell pkg-config gtk+-2.0 --libs) -lX11
+
+ OBJS = wmauda.o
+ HEADERS = config.h dock-master.xpm
diff --git a/x11-plugins/wmauda/wmauda-0.8.ebuild b/x11-plugins/wmauda/wmauda-0.8.ebuild
new file mode 100644
index 0000000..f0fbfa9
--- /dev/null
+++ b/x11-plugins/wmauda/wmauda-0.8.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmauda/wmauda-0.7.ebuild,v 1.4 2008/01/15 17:58:26 opfer Exp $
+
+EAPI=2
+inherit eutils toolchain-funcs
+
+DESCRIPTION="Dockable applet for WindowMaker that controls Audacious."
+HOMEPAGE="http://www.netswarm.net"
+SRC_URI="http://www.netswarm.net/misc/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+RDEPEND="dev-libs/dbus-glib
+ x11-libs/libX11
+ >=x11-libs/gtk+-2
+ media-libs/libaudclient"
+
+DEPEND="${RDEPEND}
+ x11-proto/xproto
+ dev-util/pkgconfig"
+
+src_unpack() {
+ unpack "${P}.tar.gz" || die "unpacking failed"
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/link-against-missing-libraries.patch || die "patch failed"
+}
+
+src_compile() {
+ tc-export CC
+ emake || die "emake failed."
+}
+
+src_install () {
+ emake DESTDIR="${D}" PREFIX="/usr" install || die "emake install failed."
+ dodoc AUTHORS README
+}
diff --git a/x11-plugins/wmvolman/Manifest b/x11-plugins/wmvolman/Manifest
new file mode 100644
index 0000000..04bf7f6
--- /dev/null
+++ b/x11-plugins/wmvolman/Manifest
@@ -0,0 +1,4 @@
+AUX wmvolman-2.0.1-ds-include.diff 640 SHA256 cbc9e74d887524e1ac7de3c82582b0e362d05446f463f31342b945dbff37d421 SHA512 d057e5fcce00fa11ecaa3650af01a8568a843abb3f229ddaff9679e31cfc2b96e0731236baa82f7467be297b223fb4fb6e5762d7c43b4cd2e5da6a03aa21e00a WHIRLPOOL 8eb8a197bfeec274e0c3a9e2b3ed8fcfb43681baad588ee405f2e899470eaeef0d307b1ac0c7fa9653407eca9f890d932a7b25d9151d58b4f465e3be210efb01
+DIST 2.0.1.tar.gz 39940 SHA256 625c2911fd296dd4ce021f7902e64162544d75bd948145fc015cca8546b728ad SHA512 63e04a8d213c7978cc2adf489adb94ff1048991d47a148bb12fa9ef8533935802b34226366b44f82eaff5820ff65b77895598533289f8e3156035732db36f5c7 WHIRLPOOL 125d5a9ca763ddd60c7014733cc373c6c1083e57172742c14cff63d2a34a2c780bcdcc733891fef8038b36491d2fe116c0a9e040f025006d6a85249772d0b601
+EBUILD wmvolman-2.0.1-r1.ebuild 950 SHA256 cef16109a5b2e55f85eff8e1df21cdc6e7320b816f6dc69c48492e96ad9afaf0 SHA512 1893fd37101d6d3e66dbe9cc781edf77e6c57f758e6b06d4471e599db797fab885efafff569b3eb4e669fc132f7cac516870af5485b77890a5b1923e67de74cb WHIRLPOOL 4bc759a91cf93dfc392f28019bb535518221b34d11667c575e2fe98aef89ee07c924cafd63c408defa2407d7720818501af0ccf67cd46c88338fe49c0ad57467
+EBUILD wmvolman-2.0.1.ebuild 853 SHA256 7625c211500d0ec07477c114f2443602602a70b66345f9ca55c817ccc488cbf2 SHA512 0bd08b22194705da035959a680cbab302c33f76181890ae9b5acf4e7dec3fe61de526fcec2c79ba2134052c4966161770e4964ea044ba44e800c2b3033c26be7 WHIRLPOOL 2127bfb13308e5bca0cd5cfdb6de670f3ada2da71283c992b8e34895ff3a25a0e4b4674fffbee8528b2306ca1ccee7e46bfc991bf40cf41c1fd9d0ea5d922eaf
diff --git a/x11-plugins/wmvolman/files/wmvolman-2.0.1-ds-include.diff b/x11-plugins/wmvolman/files/wmvolman-2.0.1-ds-include.diff
new file mode 100644
index 0000000..bc7cf67
--- /dev/null
+++ b/x11-plugins/wmvolman/files/wmvolman-2.0.1-ds-include.diff
@@ -0,0 +1,10 @@
+diff -dPNur wmvolman-2.0.1/src/Makefile.am wmvolman-2.0.1-ds/src/Makefile.am
+--- wmvolman-2.0.1/src/Makefile.am 2013-04-02 11:32:29.000000000 +0200
++++ wmvolman-2.0.1-ds/src/Makefile.am 2017-01-29 15:47:48.757744590 +0100
+@@ -4,5 +4,5 @@
+ bin_PROGRAMS = wmvolman
+
+ wmvolman_SOURCES = main.c ui.h ui.c udisks.h udisks.c
+-wmvolman_CFLAGS = -DWMVM_ICONS_DIR=\"$(pkgdatadir)\" @X_CFLAGS@ @GLIB2_CFLAGS@ @GIO_CFLAGS@ @UDISKS_CFLAGS@
++wmvolman_CFLAGS = -DWMVM_ICONS_DIR=\"$(pkgdatadir)\" @X_CFLAGS@ @GLIB2_CFLAGS@ @GIO_CFLAGS@ @UDISKS_CFLAGS@ -I/usr/include/libdockapp
+ wmvolman_LDADD = $(LIBOBJS) @X_LIBS@ @GLIB2_LIBS@ @GIO_LIBS@ @UDISKS_LIBS@
diff --git a/x11-plugins/wmvolman/wmvolman-2.0.1-r1.ebuild b/x11-plugins/wmvolman/wmvolman-2.0.1-r1.ebuild
new file mode 100644
index 0000000..7a78a59
--- /dev/null
+++ b/x11-plugins/wmvolman/wmvolman-2.0.1-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmauda/wmauda-0.3.ebuild,v 1.1 2006/10/31 05:03:51 vericgar Exp $
+
+EAPI=5
+inherit eutils autotools
+
+DESCRIPTION="Dockable applet for WindowMaker that handles hotpluggable devices and removable media."
+SRC_URI="https://github.com/raorn/${PN}/archive/${PV}.tar.gz"
+HOMEPAGE="http://people.altlinux.ru/~raorn/wmvolman.html"
+
+DEPEND="sys-fs/udisks:2
+ >=x11-libs/libdockapp-0.6.0
+ >=dev-libs/glib-2.31.13"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/wmvolman-2.0.1-ds-include.diff || die "patch failed"
+}
+
+src_compile() {
+ eautoreconf || die
+ econf --prefix="/usr"
+ emake || die
+}
+
+src_install () {
+ make DESTDIR="${D}" PREFIX="/usr" install || die "make install failed"
+ dodoc README AUTHORS NEWS
+}
diff --git a/x11-plugins/wmvolman/wmvolman-2.0.1.ebuild b/x11-plugins/wmvolman/wmvolman-2.0.1.ebuild
new file mode 100644
index 0000000..47f6bd9
--- /dev/null
+++ b/x11-plugins/wmvolman/wmvolman-2.0.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-plugins/wmauda/wmauda-0.3.ebuild,v 1.1 2006/10/31 05:03:51 vericgar Exp $
+
+EAPI=5
+inherit eutils autotools
+
+DESCRIPTION="Dockable applet for WindowMaker that handles hotpluggable devices and removable media."
+SRC_URI="https://github.com/raorn/${PN}/archive/${PV}.tar.gz"
+HOMEPAGE="http://people.altlinux.ru/~raorn/wmvolman.html"
+
+DEPEND="sys-fs/udisks:2
+ >=x11-libs/libdockapp-0.6.0
+ >=dev-libs/glib-2.31.13"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="x86 amd64"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+}
+
+src_compile() {
+ eautoreconf || die
+ econf --prefix="/usr"
+ emake || die
+}
+
+src_install () {
+ make DESTDIR="${D}" PREFIX="/usr" install || die "make install failed"
+ dodoc README AUTHORS NEWS
+}
diff --git a/x11-terms/xterm/Manifest b/x11-terms/xterm/Manifest
new file mode 100644
index 0000000..f41f243
--- /dev/null
+++ b/x11-terms/xterm/Manifest
@@ -0,0 +1,28 @@
+AUX xterm-197-alt-keysym-index.patch.bz2 354 RMD160 0d9c6dde482efcf8666c7d5ffa1c4675ead3efb9 SHA1 cb5b4c7241f2d95cbbf234e7760bdd4a945bc70d SHA256 d7025b8225b711393949a98282c1d9e9b5832277e80bd59cab617e0d82c1e729
+AUX xterm-199-alt-meta-mod.patch.bz2 692 RMD160 839adad8d91a55956c703dcd495992106e150cc6 SHA1 406be01d971485e45f67ddb3946d45e558605839 SHA256 423466b0961d948d80a2ccb0b067cb15bf2a1f53b41c7eb87bd34cdf400aaabe
+AUX xterm-199-biarch-utmp.patch.bz2 326 RMD160 e9baad8e8afb204d9d5e6f522285ffc5672bb316 SHA1 032002942055c2a97c359c0435dd9b810171d750 SHA256 56d200a8d507967943552dca649bbef0f6bc0e15e359fa6888b6587ab12797cd
+AUX xterm-LANG.patch 1698 RMD160 8f442cbb3d39cd18645f656970d717c5bab84a2d SHA1 4ff6b11ac3ac8b590c7da294bd0c12dabd9013eb SHA256 b2e646c2f4c86cd8132a5a54a362363453f1f02a4f976751c41d7418b3d772c5
+AUX xterm-ds-config-278.patch 3509 RMD160 2d4231f34862f5fca6eff2dcf606f56e96316d43 SHA1 d965ebd9485829ed3ab97032d1350afda3ee10a6 SHA256 1f00ca7c2cd58c331ac64b283d5eb6bc7abb63560b4c3f8c8a416efd47bffb84
+AUX xterm-ds-config.patch 3026 RMD160 dd37dcf72980ee8fb3e162c0d744302274a0a8c0 SHA1 97bf54d7e4fd94f96b821d892076c20928744f38 SHA256 2317a3b521c4f2e586b46144f1ac2a10c151993d5fc04a15cca18d1173e71084
+AUX xterm-ds-copy-225.patch 1478 RMD160 e1fe530ec7c00b5b43a9e1910f872687542f1288 SHA1 a7362380ec7c8806c42f1230f41ca4266f70b18a SHA256 9ee6afbddf26fae1625d54bf9adf8ed30df33b675d95a3128a90f9fe8b74f6be
+AUX xterm-ds-copy-243.patch 1467 RMD160 af5e9328eaf247252f45f0616e643e3e0cb2da2c SHA1 20be1497e48196c1dc5a9c8d151732081396c12d SHA256 e57940b1675c146c6bd149371e92d4e98869b1d457d4a21ed324429e443e31ce
+AUX xterm-ds-copy.patch 1292 RMD160 09bbd5df49a84d095baf90e21c39a8429fe64539 SHA1 ed3e49519ea60cb6c685d9597456c08191987462 SHA256 c61394b4736e69f516173179344200e6ff7130f42573a2e48f4697f3cfc33048
+AUX xterm-ds-input-225.patch 405 RMD160 cd3db8a71e09c8e1ad47adacef90bbb7791ddb8f SHA1 0bd8a63499fcf34b2bb9f28e5fe81b7a3748c85d SHA256 79de426f66e89a7ea419b4e5efc535fa36e6d6598e0e31fa6da362c9249f75c4
+AUX xterm-ds-input.patch 284 RMD160 90c6215006241d8d7690752b92886ef4febe7016 SHA1 4ce7afb3865916fb3e7e0ad468edba2524c42f18 SHA256 954814e335cdd60adc3b2e6a6ab2881802272c1554ee1f1da546f713ca39b5a4
+AUX xterm-ds-metaesc.patch 300 RMD160 47ab6dcb4ef4a19ee1998fe5cd701feea79cc7b1 SHA1 00334f1c910c4c623ee59069e9489e5526bbb832 SHA256 8e590fc34b79fed733b4464e501d60e85bed4811e9649dacade51c2cffc72ab9
+AUX xterm-ds-paste-225.patch 420 RMD160 d0409d2200a5653a12a5eaa3fa97ac0eb4accf64 SHA1 42901b4ca49982e57ff2e83660d8a2ec49a6f685 SHA256 7534f3ae11ddcbb6ca1a373de4cd46d71e8f61252ec6b269f7525cceb3207264
+AUX xterm-ds-paste-278.patch 452 RMD160 a2c7075c4191dca93cfaee9afa759363ca5c0bcd SHA1 343f69f3d5220458ee01a59dadc89806e536bbbf SHA256 b5be53bcf3d1fd1f832c11c9aeb3231d69907efb15762edea703b7d26b193c7a
+AUX xterm-ds-paste.patch 438 RMD160 054d27dba5472a11637a12743ac84ad1e9e4714c SHA1 7fdfcb8a45f43092d7f0b5055f1eef29e68841a9 SHA256 9eb6f56e5035a075f8a2cc7961a931b9a75a3c3976ceade1e1431ac03f686586
+AUX xterm-ds-sm-243.patch 3796 RMD160 029fefce2bdf3ca76c140529087b9cfb6953cad2 SHA1 5e138c2e3053603841c01a4a473bd3ff6c51f2e2 SHA256 e11828ee573fa58ade9c26ce066f1afcc0ef8c6e7c34acb131c4b42c3c2a7f73
+AUX xterm-ds-sm.patch 3587 RMD160 2182a966d3c4d9bea2830b4a52c789c42bbd8fbc SHA1 3c07c5caa298eebac368577692fd8cbedc45210d SHA256 59371083ce9a362fb555a96c65c04e3af664aaeb31feaf1cf965102cdeb81668
+AUX xterm-ds-utf8mode.patch 476 RMD160 7e072e1881fbba1283131b24594b5e41e7e02248 SHA1 8012064ed4bf82b6e194ed6039f7a44de1f6e420 SHA256 84bb2867dfd9d7e9dfcedfa0a4c541bc0db272f2838dc75aa107608414ef633f
+AUX xterm215-ds-copy.patch 1460 RMD160 00e40d82fe220414e9359bd240630046a3a6c64c SHA1 4b251d14547b689be51f0d665acb7ecf290630ca SHA256 fb050a025159d8c09ecee036817fe92d23d927a19ed33588168d5bbd0906d3c5
+DIST xterm-215.tgz 784236 RMD160 458c14aa97503bdac5da3881491de14e2d87f52a SHA1 d2cb4919d3a2bada27c5ff6e32727b9aecb2266a SHA256 4564c646a4a4f56e49e8c8cda1d4aa027e228db2d4bb2a4ad0f055f34373734f
+DIST xterm-225.tgz 821717 RMD160 ceba9372d85ef1a74f3a2ebeb37199bc80949006 SHA1 55598c979da15fe219ddd07bfdd15eb08460026b SHA256 d21ca1b0c9f47da42944b1d1c06f50c7f8ac541cd6047edacfc5837e331af47e
+DIST xterm-243.tgz 874033 RMD160 0099382feb4c6b97fb37fa77edebfb6903a38835 SHA1 2d21f9ac13df846053b43d9fcf6ae70eaa63715a SHA256 2621e7362713b588d1ec035f969194f160896b77f6455a26fd81dcc6e29b9877
+DIST xterm-278.tgz 996716 RMD160 f8b7370530979453489891aae49f9788ab54e322 SHA1 753ad19e1a0979e875eb2dc2db60f1fb270486ee SHA256 1372f9afe07bc35bfd47482db146c649223dadd0b472da31f8c337ab37f90585
+EBUILD xterm-215-r3.ebuild 3242 RMD160 1a7e869845ea71d3b4669b05e1f216283ec8ecf6 SHA1 94ee2651413aef84211c48fddddbf93748d8c49e SHA256 08c1d0e0c8ccdfb5c88a1c14ee1f06821f0d2a9e886c5b28503c331da24867ab
+EBUILD xterm-225-r1.ebuild 3172 RMD160 10cf5341611568c6e1b7a9e6e4e2df288f6cbe36 SHA1 542f17d5aa3c12089805eb9c8ea652ecdfd2cb22 SHA256 e5accd0166ca0e646f33511dc92cfbb4192c15675a8582b938149d8a737053b8
+EBUILD xterm-243-r1.ebuild 3261 RMD160 7c6e0c7fbd7e6cf1327e0c08d269abfa4e635220 SHA1 f7d2a43c00a0964b948d80bde27caacecb5a5e4b SHA256 a42a0eb235b5f293bb2111ebb835735c3935c590b492581bf6f29eba5922500d
+EBUILD xterm-278-r1.ebuild 3122 RMD160 e883b11422d123afa9cc66c06abf44fbebd4a5f1 SHA1 4bb6ed2d203f8785902b690c61f51048bf7066dd SHA256 539d28289e226ed9268f5adc053f99be6d1bbaef8319933506909ee50c686567
+EBUILD xterm-278-r2.ebuild 3180 RMD160 558828972b1e6bacdab99d243b0374d79b12f96a SHA1 ad851815dd4274fcf26c4b796d98ab5cefeef191 SHA256 b0f26d1b14fcd5ff38180f603195ccf9b29a43df0019acab94d7c26587bc53c7
diff --git a/x11-terms/xterm/files/xterm-197-alt-keysym-index.patch.bz2 b/x11-terms/xterm/files/xterm-197-alt-keysym-index.patch.bz2
new file mode 100644
index 0000000..a011d9f
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-197-alt-keysym-index.patch.bz2
Binary files differ
diff --git a/x11-terms/xterm/files/xterm-199-alt-meta-mod.patch.bz2 b/x11-terms/xterm/files/xterm-199-alt-meta-mod.patch.bz2
new file mode 100644
index 0000000..0be45fd
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-199-alt-meta-mod.patch.bz2
Binary files differ
diff --git a/x11-terms/xterm/files/xterm-199-biarch-utmp.patch.bz2 b/x11-terms/xterm/files/xterm-199-biarch-utmp.patch.bz2
new file mode 100644
index 0000000..d3dfce2
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-199-biarch-utmp.patch.bz2
Binary files differ
diff --git a/x11-terms/xterm/files/xterm-LANG.patch b/x11-terms/xterm/files/xterm-LANG.patch
new file mode 100644
index 0000000..d344d5b
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-LANG.patch
@@ -0,0 +1,41 @@
+The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in
+option parsing, it may break.
+
+http://bugs.gentoo.org/105369
+
+--- xterm/configure
++++ xterm/configure
+@@ -46,6 +46,16 @@
+ infodir='${prefix}/info'
+ mandir='${prefix}/man'
+
++# NLS nuisances.
++# Only set these to C if already set. These must not be set unconditionally
++# because not all systems understand e.g. LANG=C (notably SCO).
++# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
++# Non-C LC_CTYPE values break the ctype check.
++if test "${LANG+set}" = set; then LANG=C; export LANG; fi
++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
++if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
++if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
++
+ # Initialize some other variables.
+ subdirs=
+ MFLAGS= MAKEFLAGS=
+@@ -502,16 +512,6 @@
+ esac
+ done
+
+-# NLS nuisances.
+-# Only set these to C if already set. These must not be set unconditionally
+-# because not all systems understand e.g. LANG=C (notably SCO).
+-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+-# Non-C LC_CTYPE values break the ctype check.
+-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+-
+ # confdefs.h avoids OS command line length limits that DEFS can exceed.
+ rm -rf conftest* confdefs.h
+ # AIX cpp loses on an empty file, so make sure it contains at least a newline.
diff --git a/x11-terms/xterm/files/xterm-ds-config-278.patch b/x11-terms/xterm/files/xterm-ds-config-278.patch
new file mode 100644
index 0000000..98d8e13
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-config-278.patch
@@ -0,0 +1,86 @@
+diff -dPNur xterm-278/XTerm.ad xterm-278-ds/XTerm.ad
+--- xterm-278/XTerm.ad 2011-07-11 12:52:16.000000000 +0200
++++ xterm-278-ds/XTerm.ad 2012-01-22 16:21:47.000000000 +0100
+@@ -101,21 +101,23 @@
+ *vtMenu*vthide*Label: Hide VT Window
+ *vtMenu*altscreen*Label: Show Alternate Screen
+
+-*fontMenu.Label: VT Fonts
+-*fontMenu*fontdefault*Label: Default
+-*fontMenu*font1*Label: Unreadable
+-*VT100.font1: nil2
+-*IconFont: nil2
+-*fontMenu*font2*Label: Tiny
+-*VT100.font2: 5x7
+-*fontMenu*font3*Label: Small
+-*VT100.font3: 6x10
+-*fontMenu*font4*Label: Medium
+-*VT100.font4: 7x13
+-*fontMenu*font5*Label: Large
+-*VT100.font5: 9x15
+-*fontMenu*font6*Label: Huge
+-*VT100.font6: 10x20
++*fontMenu.Label: VT Fonts
++*fontMenu*fontdefault*Label: Default
++*fontMenu*font1*Label: Large
++*VT100*font1: -xos4-terminus-medium-r-normal--32-320-72-72-c-160-koi8-r
++#*fontMenu*font2*Label: KOI8
++#*VT100*font2: -sony-fixed-medium-r-normal--24-170-100-100-c-120-koi8-1
++*fontMenu*font2*Label: KOI8
++*VT100*font2: koi9x15
++*fontMenu*font3*Label: WIN
++*VT100*font3: win9x15
++*fontMenu*font4*Label: ALT
++*VT100*font4: alt9x15
++*fontMenu*font5*Label: ISO
++*VT100*font5: iso9x15
++*fontMenu*font6*Label: Unreadable
++*VT100*font6: koinil2
++
+ *fontMenu*fontescape*Label: Escape Sequence
+ *fontMenu*fontsel*Label: Selection
+ !fontescape and fontsel overridden by application
+@@ -135,12 +137,13 @@
+ *fontMenu*allow-title-ops*Label: Allow Title Ops
+ *fontMenu*allow-window-ops*Label: Allow Window Ops
+
+-*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
+-*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
+-*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
+-*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
+-*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
+-*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
++*VT100.utf8Fonts.font: -misc-fixed-medium-r-normal*-90-iso10646-1
++#*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
++#*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
++#*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
++#*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
++#*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
++#*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
+
+ *tekMenu.Label: Tek Options
+ *tekMenu*tektextlarge*Label: Large Characters
+@@ -159,6 +162,13 @@
+ *tek4014*font3: 6x13
+ *tek4014*fontSmall: 6x10
+
++*.vt100.wideChars: on
++*.vt100.font: -xos4-terminus-medium-r-normal--24-240-72-72-c-120-koi8-r
++#*.vt100.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
++*.vt100.encodingMode: locale
++*.PtyInitialErase: on
++*.backarrowKeyIsErase: on
++
+ ! If xterm is built with a toolbar, the widget hierarchy looks like this,
+ ! showing widget name / class names. The complete menu hierarchy is built
+ ! at startup because it is needed to make the layout work for the menubar:
+@@ -254,3 +264,9 @@
+ !*allowTcapOps: false
+ !*allowTitleOps: false
+ !*allowWindowOps: false
++
++*metaSendsEscape: true
++
++XTerm*VT100.Translations: #override\n\
++ Ctrl Shift <KeyPress> Insert:insert-selection(SELECT, CUT_BUFFER0)\n\
++ Shift <KeyPress> Insert:insert()\n
diff --git a/x11-terms/xterm/files/xterm-ds-config.patch b/x11-terms/xterm/files/xterm-ds-config.patch
new file mode 100644
index 0000000..f47b7ea
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-config.patch
@@ -0,0 +1,73 @@
+diff -dPNur xterm-207/XTerm.ad xterm-207-new/XTerm.ad
+--- xterm-207/XTerm.ad 2005-11-03 13:17:27.000000000 +0000
++++ xterm-207-new/XTerm.ad 2005-12-26 13:56:48.000000000 +0000
+@@ -70,21 +70,20 @@
+ *vtMenu*vthide*Label: Hide VT Window
+ *vtMenu*altscreen*Label: Show Alternate Screen
+
+-*fontMenu.Label: VT Fonts
+-*fontMenu*fontdefault*Label: Default
+-*fontMenu*font1*Label: Unreadable
+-*VT100.font1: nil2
+-*IconFont: nil2
+-*fontMenu*font2*Label: Tiny
+-*VT100.font2: 5x7
+-*fontMenu*font3*Label: Small
+-*VT100.font3: 6x10
+-*fontMenu*font4*Label: Medium
+-*VT100.font4: 7x13
+-*fontMenu*font5*Label: Large
+-*VT100.font5: 9x15
+-*fontMenu*font6*Label: Huge
+-*VT100.font6: 10x20
++*fontMenu.Label: VT Fonts
++*fontMenu*fontdefault*Label: Default
++*fontMenu*font1*Label: Unreadable
++*VT100*font1: koinil2
++*fontMenu*font2*Label: UTF8
++*VT100*font2: -misc-fixed-medium-r-normal*-90-iso10646-1
++*fontMenu*font3*Label: WIN
++*VT100*font3: win9x15
++*fontMenu*font4*Label: ALT
++*VT100*font4: alt9x15
++*fontMenu*font5*Label: KOI8
++*VT100*font5: koi9x15
++*fontMenu*font6*Label: ISO
++*VT100*font6: iso9x15
+ *fontMenu*fontescape*Label: Escape Sequence
+ *fontMenu*fontsel*Label: Selection
+ !fontescape and fontsel overridden by application
+@@ -94,12 +93,13 @@
+ *fontMenu*render-font*Label: TrueType Fonts
+ *fontMenu*utf8-mode*Label: UTF-8
+
+-*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
+-*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
+-*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
+-*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
+-*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
+-*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
++*VT100.utf8Fonts.font: -misc-fixed-medium-r-normal*-90-iso10646-1
++#*VT100.utf8Fonts.font2: -misc-fixed-medium-r-normal--8-80-75-75-c-50-iso10646-1
++#*VT100.utf8Fonts.font: -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
++#*VT100.utf8Fonts.font3: -misc-fixed-medium-r-normal--14-130-75-75-c-70-iso10646-1
++#*VT100.utf8Fonts.font4: -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso10646-1
++#*VT100.utf8Fonts.font5: -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1
++#*VT100.utf8Fonts.font6: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1
+
+ *tekMenu.Label: Tek Options
+ *tekMenu*tektextlarge*Label: Large Characters
+@@ -118,6 +118,13 @@
+ *tek4014*font3: 6x13
+ *tek4014*fontSmall: 6x10
+
++*.vt100.wideChars: on
++*.vt100.font: koi9x15
++#*.vt100.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
++*.vt100.encodingMode: locale
++*.PtyInitialErase: on
++*.backarrowKeyIsErase: on
++
+ ! If xterm is built with a toolbar, the widget hierarchy looks like this,
+ ! showing widget name / class names. The complete menu hierarchy is built
+ ! at startup because it is needed to make the layout work for the menubar:
diff --git a/x11-terms/xterm/files/xterm-ds-copy-225.patch b/x11-terms/xterm/files/xterm-ds-copy-225.patch
new file mode 100644
index 0000000..bcd8ad5
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-copy-225.patch
@@ -0,0 +1,36 @@
+diff -dPNur xterm-225/button.c xterm-225-new/button.c
+--- xterm-225/button.c 2007-03-20 00:42:48.000000000 +0100
++++ xterm-225-new/button.c 2007-04-03 00:54:58.000000000 +0200
+@@ -3179,28 +3179,28 @@
+ }
+ }
+ #if OPT_WIDE_CHARS
+- else if (screen->wide_chars && *target == XA_STRING) {
++ else if (screen->utf8_mode && *target == XA_STRING) {
+ TRACE(("ConvertSelection XA_STRING - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStringStyle);
+- } else if (screen->wide_chars && *target == XA_UTF8_STRING(dpy)) {
++ } else if (screen->utf8_mode && *target == XA_UTF8_STRING(dpy)) {
+ TRACE(("ConvertSelection XA_UTF8_STRING(dpy) - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XUTF8StringStyle);
+- } else if (screen->wide_chars && *target == XA_TEXT(dpy)) {
++ } else if (screen->utf8_mode && *target == XA_TEXT(dpy)) {
+ TRACE(("ConvertSelection XA_TEXT(dpy) - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStdICCTextStyle);
+- } else if (screen->wide_chars && *target == XA_COMPOUND_TEXT(dpy)) {
++ } else if (screen->utf8_mode && *target == XA_COMPOUND_TEXT(dpy)) {
+ TRACE(("ConvertSelection XA_COMPOUND_TEXT(dpy) - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
diff --git a/x11-terms/xterm/files/xterm-ds-copy-243.patch b/x11-terms/xterm/files/xterm-ds-copy-243.patch
new file mode 100644
index 0000000..ca489b6
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-copy-243.patch
@@ -0,0 +1,36 @@
+diff -dPNur xterm-243/button.c xterm-243-copy/button.c
+--- xterm-243/button.c 2009-03-27 01:00:56.000000000 +0100
++++ xterm-243-copy/button.c 2009-06-14 05:41:44.000000000 +0200
+@@ -3475,28 +3475,28 @@
+ }
+ }
+ #if OPT_WIDE_CHARS
+- else if (screen->wide_chars && *target == XA_STRING) {
++ else if (screen->utf8_mode && *target == XA_STRING) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStringStyle);
+ TRACE(("...Xutf8TextListToTextProperty:%d\n", result));
+- } else if (screen->wide_chars && *target == XA_UTF8_STRING(dpy)) {
++ } else if (screen->utf8_mode && *target == XA_UTF8_STRING(dpy)) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XUTF8StringStyle);
+ TRACE(("...Xutf8TextListToTextProperty:%d\n", result));
+- } else if (screen->wide_chars && *target == XA_TEXT(dpy)) {
++ } else if (screen->utf8_mode && *target == XA_TEXT(dpy)) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStdICCTextStyle);
+ TRACE(("...Xutf8TextListToTextProperty:%d\n", result));
+- } else if (screen->wide_chars && *target == XA_COMPOUND_TEXT(dpy)) {
++ } else if (screen->utf8_mode && *target == XA_COMPOUND_TEXT(dpy)) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
diff --git a/x11-terms/xterm/files/xterm-ds-copy.patch b/x11-terms/xterm/files/xterm-ds-copy.patch
new file mode 100644
index 0000000..c866984
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-copy.patch
@@ -0,0 +1,33 @@
+diff -dPNur xterm-179/button.c xterm-179-new/button.c
+--- xterm-179/button.c 2003-12-06 00:32:53.000000000 +0100
++++ xterm-179-new/button.c 2003-12-06 00:31:36.000000000 +0100
+@@ -2481,25 +2481,25 @@
+ result = True;
+ }
+ #if OPT_WIDE_CHARS
+- else if (screen->wide_chars && *target == XA_STRING) {
++ else if (screen->utf8_mode && *target == XA_STRING) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStringStyle);
+- } else if (screen->wide_chars && *target == XA_UTF8_STRING(d)) {
++ } else if (screen->utf8_mode && *target == XA_UTF8_STRING(d)) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XUTF8StringStyle);
+- } else if (screen->wide_chars && *target == XA_TEXT(d)) {
++ } else if (screen->utf8_mode && *target == XA_TEXT(d)) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStdICCTextStyle);
+- } else if (screen->wide_chars && *target == XA_COMPOUND_TEXT(d)) {
++ } else if (screen->utf8_mode && *target == XA_COMPOUND_TEXT(d)) {
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
diff --git a/x11-terms/xterm/files/xterm-ds-input-225.patch b/x11-terms/xterm/files/xterm-ds-input-225.patch
new file mode 100644
index 0000000..dcd25aa
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-input-225.patch
@@ -0,0 +1,12 @@
+diff -dPNur xterm-225/input.c xterm-225-new/input.c
+--- xterm-225/input.c 2007-03-20 00:58:54.000000000 +0100
++++ xterm-225-new/input.c 2007-04-03 01:01:44.000000000 +0200
+@@ -498,7 +498,7 @@
+ /*
+ * Exclude the keys already covered by a modifier.
+ */
+- if (kd->is_fkey
++ if (0 && kd->is_fkey
+ || IsEditFunctionKey(kd->keysym)
+ || IsKeypadKey(kd->keysym)
+ || IsCursorKey(kd->keysym)
diff --git a/x11-terms/xterm/files/xterm-ds-input.patch b/x11-terms/xterm/files/xterm-ds-input.patch
new file mode 100644
index 0000000..8ca0b5d
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-input.patch
@@ -0,0 +1,11 @@
+diff -dPNur xterm-179/input.c xterm-179-new/input.c
+--- xterm-179/input.c 2003-05-18 20:47:32.000000000 -0400
++++ xterm-179-new/input.c 2003-07-19 04:20:31.000000000 -0400
+@@ -500,6 +500,7 @@
+ #if OPT_VT52_MODE
+ && screen->ansi_level != 0
+ #endif
++ && 0
+ ) {
+ /*
+ * Modifier codes:
diff --git a/x11-terms/xterm/files/xterm-ds-metaesc.patch b/x11-terms/xterm/files/xterm-ds-metaesc.patch
new file mode 100644
index 0000000..34996cf
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-metaesc.patch
@@ -0,0 +1,9 @@
+diff -dPNur xterm-243/XTerm.ad xterm-243-new/XTerm.ad
+--- xterm-243/XTerm.ad 2009-02-13 01:14:13.000000000 +0100
++++ xterm-243-new/XTerm.ad 2009-06-14 07:05:49.000000000 +0200
+@@ -210,3 +210,5 @@
+ !*allowTcapOps: false
+ !*allowTitleOps: false
+ !*allowWindowOps: false
++
++*metaSendsEscape: true
diff --git a/x11-terms/xterm/files/xterm-ds-paste-225.patch b/x11-terms/xterm/files/xterm-ds-paste-225.patch
new file mode 100644
index 0000000..9d004fd
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-paste-225.patch
@@ -0,0 +1,12 @@
+diff -dPNur xterm-225/button.c xterm-225-new/button.c
+--- xterm-225/button.c 2007-03-20 00:42:48.000000000 +0100
++++ xterm-225-new/button.c 2007-04-03 00:50:40.000000000 +0200
+@@ -1586,7 +1586,7 @@
+ text_prop.nitems = *length;
+
+ #if OPT_WIDE_CHARS
+- if (screen->wide_chars) {
++ if (screen->utf8_mode) {
+ if (*type == XA_UTF8_STRING(dpy) ||
+ *type == XA_STRING ||
+ *type == XA_COMPOUND_TEXT(dpy)) {
diff --git a/x11-terms/xterm/files/xterm-ds-paste-278.patch b/x11-terms/xterm/files/xterm-ds-paste-278.patch
new file mode 100644
index 0000000..75b2d3a
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-paste-278.patch
@@ -0,0 +1,12 @@
+diff -dPNur xterm-278/button.c xterm-278-ds/button.c
+--- xterm-278/button.c 2012-01-07 03:00:35.000000000 +0100
++++ xterm-278-ds/button.c 2012-01-22 07:39:01.000000000 +0100
+@@ -1989,7 +1989,7 @@
+ text_prop.nitems));
+
+ #if OPT_WIDE_CHARS
+- if (XSupportsLocale() && screen->wide_chars) {
++ if (XSupportsLocale() && screen->utf8_mode) {
+ if (*type == XA_UTF8_STRING(dpy) ||
+ *type == XA_STRING ||
+ *type == XA_COMPOUND_TEXT(dpy)) {
diff --git a/x11-terms/xterm/files/xterm-ds-paste.patch b/x11-terms/xterm/files/xterm-ds-paste.patch
new file mode 100644
index 0000000..9d31268
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-paste.patch
@@ -0,0 +1,12 @@
+diff -dPNur xterm-172/button.c xterm-172-new/button.c
+--- xterm-172/button.c 2002-10-05 13:57:11.000000000 -0400
++++ xterm-172-new/button.c 2003-07-12 11:25:39.000000000 -0400
+@@ -1364,7 +1364,7 @@
+ text_prop.nitems = *length;
+
+ #if OPT_WIDE_CHARS
+- if (screen->wide_chars) {
++ if (screen->utf8_mode) {
+ if (*type == XA_UTF8_STRING(XtDisplay(w)) ||
+ *type == XA_STRING ||
+ *type == XA_COMPOUND_TEXT(XtDisplay(w))) {
diff --git a/x11-terms/xterm/files/xterm-ds-sm-243.patch b/x11-terms/xterm/files/xterm-ds-sm-243.patch
new file mode 100644
index 0000000..bb35ee2
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-sm-243.patch
@@ -0,0 +1,144 @@
+diff -dPNur xterm-243/menu.c xterm-243-sm/menu.c
+--- xterm-243/menu.c 2009-03-28 18:27:57.000000000 +0100
++++ xterm-243-sm/menu.c 2009-06-14 05:54:26.000000000 +0200
+@@ -186,6 +186,10 @@
+ static void do_font_loadable PROTO_XT_CALLBACK_ARGS;
+ #endif
+
++#if OPT_WIDE_CHARS
++static void do_font_multibyte PROTO_XT_CALLBACK_ARGS;
++#endif
++
+ #if OPT_HP_FUNC_KEYS
+ static void do_hp_fkeys PROTO_XT_CALLBACK_ARGS;
+ #endif
+@@ -245,6 +249,15 @@
+ static void do_font_utf8_title PROTO_XT_CALLBACK_ARGS;
+ #endif
+
++static void
++UpdateMenuItem(
++#if OPT_TRACE
++ const char *func,
++#endif
++ MenuEntry * menu,
++ int which,
++ Bool val);
++
+ /*
+ * The order of entries MUST match the values given in menu.h
+ */
+@@ -365,6 +378,7 @@
+ { "render-font", do_font_renderfont,NULL },
+ #endif
+ #if OPT_WIDE_CHARS
++ { "font-multibyte", do_font_multibyte, NULL },
+ { "utf8-mode", do_font_utf8_mode,NULL },
+ { "utf8-title", do_font_utf8_title,NULL },
+ #endif
+@@ -697,6 +711,14 @@
+ }
+ }
+ #endif
++#if OPT_WIDE_CHARS
++ if ((term->screen.utf8_mode>255)||(!term->screen.wide_chars)) {
++ SetItemSensitivity(fontMenuEntries[fontMenu_font_multibyte].widget,
++ False);
++ } else {
++ update_font_multibyte();
++ }
++#endif
+ }
+ break;
+
+@@ -1560,6 +1582,23 @@
+ }
+ #endif
+
++#if OPT_WIDE_CHARS
++static void
++do_font_multibyte(Widget gw GCC_UNUSED,
++ XtPointer closure GCC_UNUSED,
++ XtPointer data GCC_UNUSED)
++{
++ term->screen.font_multibyte = !term->screen.font_multibyte;
++ if (term->screen.font_multibyte) {
++ term->screen.utf8_mode=1;
++ } else {
++ term->screen.utf8_mode=0;
++ }
++ update_font_multibyte();
++ Redraw();
++}
++#endif
++
+ /*
+ * tek menu
+ */
+@@ -2221,6 +2260,18 @@
+ }
+ #endif
+
++#if OPT_WIDE_CHARS
++void
++HandleFontMultibyte(Widget w,
++ XEvent * event GCC_UNUSED,
++ String * params,
++ Cardinal * param_count)
++{
++ handle_toggle(do_font_multibyte, (int) term->screen.font_multibyte,
++ params, *param_count, w, (XtPointer) 0, (XtPointer) 0);
++}
++#endif
++
+ #if OPT_BOX_CHARS
+ void
+ HandleFontBoxChars(Widget w,
+diff -dPNur xterm-243/menu.h xterm-243-sm/menu.h
+--- xterm-243/menu.h 2009-02-13 20:55:26.000000000 +0100
++++ xterm-243-sm/menu.h 2009-06-14 05:57:56.000000000 +0200
+@@ -90,6 +90,7 @@
+ extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS;
+ extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS;
+ extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS;
++extern void HandleFontMultibyte PROTO_XT_ACTIONS_ARGS;
+ extern void HandleHardReset PROTO_XT_ACTIONS_ARGS;
+ extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS;
+ extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS;
+@@ -264,6 +265,9 @@
+ fontMenu_font_loadable,
+ #endif
+ #endif
++#if OPT_WIDE_CHARS
++ fontMenu_font_multibyte,
++#endif
+
+ #if OPT_RENDERFONT || OPT_WIDE_CHARS
+ fontMenu_line2,
+@@ -470,6 +474,15 @@
+ #define FS2MI(n) (n) /* font_size_to_menu_item */
+ #define MI2FS(n) (n) /* menu_item_to_font_size */
+
++#if OPT_WIDE_CHARS
++#define update_font_multibyte() \
++ UpdateMenuItem (fontMenuEntries, \
++ fontMenu_font_multibyte, \
++ term->screen.font_multibyte)
++#else
++#define update_font_multibyte() /* nothing */
++#endif
++
+ #if OPT_TEK4014
+ extern void set_tekfont_menu_item(int n,int val);
+ #else
+diff -dPNur xterm-243/ptyx.h xterm-243-sm/ptyx.h
+--- xterm-243/ptyx.h 2009-03-24 23:20:06.000000000 +0100
++++ xterm-243-sm/ptyx.h 2009-06-14 05:59:38.000000000 +0200
+@@ -1358,6 +1358,7 @@
+ int unicode_font; /* font uses unicode encoding */
+ int utf_count; /* state of utf_char */
+ IChar utf_char; /* in-progress character */
++ int font_multibyte; /* is UTF mode switched on */
+ int last_written_col;
+ int last_written_row;
+ XChar2b *draw_buf; /* drawXtermText() data */
diff --git a/x11-terms/xterm/files/xterm-ds-sm.patch b/x11-terms/xterm/files/xterm-ds-sm.patch
new file mode 100644
index 0000000..12c1258
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-sm.patch
@@ -0,0 +1,129 @@
+diff -dPNur xterm-207-new/menu.c xterm-207/menu.c
+--- xterm-207-new/menu.c 2005-11-13 23:10:36.000000000 +0000
++++ xterm-207/menu.c 2005-12-26 13:58:51.000000000 +0000
+@@ -175,6 +175,10 @@
+ static void do_font_loadable PROTO_XT_CALLBACK_ARGS;
+ #endif
+
++#if OPT_WIDE_CHARS
++static void do_font_multibyte PROTO_XT_CALLBACK_ARGS;
++#endif
++
+ #if OPT_HP_FUNC_KEYS
+ static void do_hp_fkeys PROTO_XT_CALLBACK_ARGS;
+ #endif
+@@ -339,6 +343,7 @@
+ { "render-font", do_font_renderfont,NULL },
+ #endif
+ #if OPT_WIDE_CHARS
++ { "font-multibyte", do_font_multibyte, NULL },
+ { "utf8-mode", do_font_utf8_mode,NULL },
+ #endif
+ #endif /* toggles for other font extensions */
+@@ -683,6 +688,15 @@
+ #if OPT_WIDE_CHARS
+ update_font_utf8_mode();
+ #endif
++#if OPT_WIDE_CHARS
++ if ((term->screen.utf8_mode==2)||(!term->screen.wide_chars)) {
++ set_sensitivity(mw,
++ fontMenuEntries[fontMenu_font_multibyte].widget,
++ False);
++ } else {
++ update_font_multibyte();
++ }
++#endif
+ }
+ FindFontSelection(NULL, True);
+ set_sensitivity(mw,
+@@ -1423,6 +1437,23 @@
+ }
+ #endif
+
++#if OPT_WIDE_CHARS
++static void
++do_font_multibyte(Widget gw GCC_UNUSED,
++ XtPointer closure GCC_UNUSED,
++ XtPointer data GCC_UNUSED)
++{
++ term->screen.font_multibyte = !term->screen.font_multibyte;
++ if (term->screen.font_multibyte) {
++ term->screen.utf8_mode=1;
++ } else {
++ term->screen.utf8_mode=0;
++ }
++ update_font_multibyte();
++ Redraw();
++}
++#endif
++
+ /*
+ * tek menu
+ */
+@@ -2054,6 +2085,18 @@
+ }
+ #endif
+
++#if OPT_WIDE_CHARS
++void
++HandleFontMultibyte(Widget w,
++ XEvent * event GCC_UNUSED,
++ String * params,
++ Cardinal * param_count)
++{
++ handle_toggle(do_font_multibyte, (int) term->screen.font_multibyte,
++ params, *param_count, w, (XtPointer) 0, (XtPointer) 0);
++}
++#endif
++
+ #if OPT_BOX_CHARS
+ void
+ HandleFontBoxChars(Widget w,
+diff -dPNur xterm-207-new/menu.h xterm-207/menu.h
+--- xterm-207-new/menu.h 2005-11-03 13:17:28.000000000 +0000
++++ xterm-207/menu.h 2005-12-26 13:58:51.000000000 +0000
+@@ -87,6 +87,7 @@
+ extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS;
+ extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS;
+ extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS;
++extern void HandleFontMultibyte PROTO_XT_ACTIONS_ARGS;
+ extern void HandleHardReset PROTO_XT_ACTIONS_ARGS;
+ extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS;
+ extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS;
+@@ -252,6 +253,9 @@
+ fontMenu_font_loadable,
+ #endif
+ #endif
++#if OPT_WIDE_CHARS
++ fontMenu_font_multibyte,
++#endif
+
+ #if OPT_RENDERFONT || OPT_WIDE_CHARS
+ fontMenu_line2,
+@@ -430,6 +434,15 @@
+ #define FS2MI(n) (n) /* font_size_to_menu_item */
+ #define MI2FS(n) (n) /* menu_item_to_font_size */
+
++#if OPT_WIDE_CHARS
++#define update_font_multibyte() \
++ update_menu_item (term->screen.fontMenu, \
++ fontMenuEntries[fontMenu_font_multibyte].widget, \
++ term->screen.font_multibyte)
++#else
++#define update_font_multibyte() /* nothing */
++#endif
++
+ #if OPT_TEK4014
+ extern void set_tekfont_menu_item(int n,int val);
+ #else
+diff -dPNur xterm-207-new/ptyx.h xterm-207/ptyx.h
+--- xterm-207-new/ptyx.h 2005-11-03 13:17:28.000000000 +0000
++++ xterm-207/ptyx.h 2005-12-26 13:59:17.000000000 +0000
+@@ -1237,6 +1237,7 @@
+ int unicode_font; /* font uses unicode encoding */
+ int utf_count; /* state of utf_char */
+ IChar utf_char; /* in-progress character */
++ int font_multibyte; /* is UTF mode switched on */
+ int last_written_col;
+ int last_written_row;
+ #endif
diff --git a/x11-terms/xterm/files/xterm-ds-utf8mode.patch b/x11-terms/xterm/files/xterm-ds-utf8mode.patch
new file mode 100644
index 0000000..2dacec7
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-utf8mode.patch
@@ -0,0 +1,12 @@
+diff -dPNur xterm-207/menu.c xterm-207-new/menu.c
+--- xterm-207/menu.c 2005-12-26 14:00:13.000000000 +0000
++++ xterm-207-new/menu.c 2005-12-26 14:02:30.000000000 +0000
+@@ -689,7 +689,7 @@
+ update_font_utf8_mode();
+ #endif
+ #if OPT_WIDE_CHARS
+- if ((term->screen.utf8_mode==2)||(!term->screen.wide_chars)) {
++ if ((term->screen.utf8_mode>255)||(!term->screen.wide_chars)) {
+ set_sensitivity(mw,
+ fontMenuEntries[fontMenu_font_multibyte].widget,
+ False);
diff --git a/x11-terms/xterm/files/xterm215-ds-copy.patch b/x11-terms/xterm/files/xterm215-ds-copy.patch
new file mode 100644
index 0000000..2029430
--- /dev/null
+++ b/x11-terms/xterm/files/xterm215-ds-copy.patch
@@ -0,0 +1,36 @@
+diff -dPNur xterm-215/button.c xterm-215-new/button.c
+--- xterm-215/button.c 2006-07-25 01:12:23.000000000 +0500
++++ xterm-215-new/button.c 2006-07-25 01:13:31.000000000 +0500
+@@ -3121,28 +3121,28 @@
+ }
+ }
+ #if OPT_WIDE_CHARS
+- else if (screen->wide_chars && *target == XA_STRING) {
++ else if (screen->utf8_mode && *target == XA_STRING) {
+ TRACE(("ConvertSelection XA_STRING - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStringStyle);
+- } else if (screen->wide_chars && *target == XA_UTF8_STRING(d)) {
++ } else if (screen->utf8_mode && *target == XA_UTF8_STRING(d)) {
+ TRACE(("ConvertSelection XA_UTF8_STRING(d) - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XUTF8StringStyle);
+- } else if (screen->wide_chars && *target == XA_TEXT(d)) {
++ } else if (screen->utf8_mode && *target == XA_TEXT(d)) {
+ TRACE(("ConvertSelection XA_TEXT(d) - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
+ type, value, length, format,
+ Xutf8TextListToTextProperty,
+ XStdICCTextStyle);
+- } else if (screen->wide_chars && *target == XA_COMPOUND_TEXT(d)) {
++ } else if (screen->utf8_mode && *target == XA_COMPOUND_TEXT(d)) {
+ TRACE(("ConvertSelection XA_COMPOUND_TEXT(d) - wide\n"));
+ result =
+ _ConvertSelectionHelper(w,
diff --git a/x11-terms/xterm/xterm-215-r3.ebuild b/x11-terms/xterm/xterm-215-r3.ebuild
new file mode 100644
index 0000000..9f5aef2
--- /dev/null
+++ b/x11-terms/xterm/xterm-215-r3.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-terms/xterm/xterm-215-r1.ebuild,v 1.1 2006/07/11 10:53:47 exg Exp $
+
+inherit flag-o-matic
+
+DESCRIPTION="Terminal Emulator for X Windows"
+HOMEPAGE="http://dickey.his.com/xterm/"
+SRC_URI="http://dside.dyndns.org/files/darklin/${P}.tgz"
+
+LICENSE="X11"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd"
+IUSE="truetype Xaw3d unicode toolbar paste64"
+
+RDEPEND="|| ( ( x11-libs/libX11
+ x11-libs/libXrender
+ x11-libs/libXt
+ x11-libs/libXmu
+ x11-libs/libxkbfile
+ x11-libs/libXft
+ x11-libs/libXaw
+ unicode? ( x11-apps/luit ) )
+ virtual/x11 )
+ Xaw3d? ( x11-libs/Xaw3d )
+ sys-libs/libutempter"
+
+DEPEND="${RDEPEND}
+ || ( x11-proto/xproto virtual/x11 )"
+
+
+pkg_setup() {
+ if has_version "x11-libs/libX11"; then
+ DEFAULTS_DIR="/usr/share/X11/app-defaults"
+ else
+ DEFAULTS_DIR="/etc/X11/app-defaults"
+ fi
+}
+
+#SDS
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+#MDK
+# epatch ${FILESDIR}/xterm-199-biarch-utmp.patch.bz2
+ epatch ${FILESDIR}/xterm-197-alt-keysym-index.patch.bz2
+ epatch ${FILESDIR}/xterm-199-alt-meta-mod.patch.bz2
+
+#DarkLin
+ epatch ${FILESDIR}/xterm-ds-config.patch
+ epatch ${FILESDIR}/xterm-ds-sm.patch
+ epatch ${FILESDIR}/xterm-ds-paste.patch
+ epatch ${FILESDIR}/xterm-ds-input.patch
+ epatch ${FILESDIR}/xterm215-ds-copy.patch
+ epatch ${FILESDIR}/xterm-ds-utf8mode.patch
+}
+#EDS
+
+
+src_compile() {
+ filter-flags "-fstack-protector"
+
+ local myconf=""
+
+ if has_version "x11-libs/libX11"; then
+ myconf="--disable-narrowproto"
+ fi
+
+ econf \
+ --libdir=/etc \
+ --with-x \
+ --with-utempter \
+ --disable-setuid \
+ --disable-full-tgetent \
+ --disable-imake \
+ --enable-ansi-color \
+ --enable-256-color \
+ --enable-broken-osc \
+ --enable-broken-st \
+ --enable-load-vt-fonts \
+ --enable-i18n \
+ --enable-wide-chars \
+ --enable-doublechars \
+ --enable-warnings \
+ --enable-tcap-query \
+ --enable-logging \
+ --enable-dabbrev \
+ --with-app-defaults=${DEFAULTS_DIR} \
+ $(use_enable toolbar) \
+ $(use_enable truetype freetype) \
+ $(use_enable unicode luit) $(use_enable unicode mini-luit) \
+ $(use_with Xaw3d) \
+ $(use_enable paste64) \
+ ${myconf} \
+ || die
+
+ emake || die "failed to compile xterm"
+}
+
+src_install() {
+ make DESTDIR=${D} install || die
+ dodoc README{,.i18n} ctlseqs.txt xterm.log.html
+
+ # Fix permissions -- it grabs them from live system, and they can
+ # be suid or sgid like they were in pre-unix98 pty or pre-utempter days,
+ # respectively (#69510).
+ # (info from Thomas Dickey) - Donnie Berkholz <spyderous@gentoo.org>
+ fperms 0755 /usr/bin/xterm
+
+ # restore the navy blue
+ sed -i "s:blue2$:blue:" ${D}${DEFAULTS_DIR}/XTerm-color
+
+ # Fix for bug #91453 at Thomas Dickey's suggestion:
+ echo "*allowWindowOps: false" >> ${D}/${DEFAULTS_DIR}/XTerm
+ echo "*allowWindowOps: false" >> ${D}/${DEFAULTS_DIR}/UXTerm
+}
+
+pkg_postinst() {
+ if use paste64 ; then
+ elog "bracketed paste mode requires the allowWindowOps resource to be true"
+ elog "which is false by default for security reasons (see bug #91453)."
+ elog "To be able to use it add 'allowWindowOps: true' to your resources"
+ fi
+}
diff --git a/x11-terms/xterm/xterm-225-r1.ebuild b/x11-terms/xterm/xterm-225-r1.ebuild
new file mode 100644
index 0000000..849fb16
--- /dev/null
+++ b/x11-terms/xterm/xterm-225-r1.ebuild
@@ -0,0 +1,113 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-terms/xterm/xterm-225.ebuild,v 1.1 2007/03/24 19:58:16 seemant Exp $
+
+inherit flag-o-matic
+
+DESCRIPTION="Terminal Emulator for X Windows"
+HOMEPAGE="http://dickey.his.com/xterm/"
+SRC_URI="ftp://invisible-island.net/${PN}/${P}.tgz"
+
+LICENSE="X11"
+SLOT="0"
+KEYWORDS="~alpha !amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc !x86 ~x86-fbsd"
+IUSE="truetype Xaw3d unicode toolbar paste64"
+
+RDEPEND="x11-libs/libX11
+ x11-libs/libXrender
+ x11-libs/libXt
+ x11-libs/libXmu
+ x11-libs/libxkbfile
+ x11-libs/libXft
+ x11-libs/libXaw
+ unicode? ( x11-apps/luit )
+ Xaw3d? ( x11-libs/Xaw3d )
+ sys-libs/libutempter"
+DEPEND="${RDEPEND}
+ x11-proto/xproto"
+
+pkg_setup() {
+ DEFAULTS_DIR="/usr/share/X11/app-defaults"
+}
+
+#SDS
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+#MDK
+# epatch ${FILESDIR}/xterm-199-biarch-utmp.patch.bz2
+ epatch ${FILESDIR}/xterm-197-alt-keysym-index.patch.bz2
+# epatch ${FILESDIR}/xterm-199-alt-meta-mod.patch.bz2
+
+#DarkLin
+ epatch ${FILESDIR}/xterm-ds-config.patch
+ epatch ${FILESDIR}/xterm-ds-sm.patch
+ epatch ${FILESDIR}/xterm-ds-paste-225.patch
+ epatch ${FILESDIR}/xterm-ds-input-225.patch
+ epatch ${FILESDIR}/xterm-ds-copy-225.patch
+ epatch ${FILESDIR}/xterm-ds-utf8mode.patch
+}
+#EDS
+
+
+src_compile() {
+ filter-flags "-fstack-protector"
+ replace-flags "-Os" "-O2" # work around gcc-4.1.1-r[01] bugs
+
+ econf --libdir=/etc \
+ --with-x \
+ --with-utempter \
+ --disable-setuid \
+ --disable-full-tgetent \
+ --disable-imake \
+ --disable-narrowproto \
+ --enable-ansi-color \
+ --enable-256-color \
+ --enable-broken-osc \
+ --enable-broken-st \
+ --enable-load-vt-fonts \
+ --enable-i18n \
+ --enable-wide-chars \
+ --enable-doublechars \
+ --enable-warnings \
+ --enable-tcap-query \
+ --enable-logging \
+ --enable-dabbrev \
+ --with-app-defaults=${DEFAULTS_DIR} \
+ $(use_enable toolbar) \
+ $(use_enable truetype freetype) \
+ $(use_enable unicode luit) $(use_enable unicode mini-luit) \
+ $(use_with Xaw3d) \
+ $(use_enable paste64)
+
+ emake || die "emake failed."
+}
+
+# Parallel make causes File exists error and dies. Forcing -j1 for now.
+src_install() {
+ emake -j1 DESTDIR="${D}" install || die "emake install failed."
+ dodoc README{,.i18n} ctlseqs.txt
+ dohtml xterm.log.html
+
+ # Fix permissions -- it grabs them from live system, and they can
+ # be suid or sgid like they were in pre-unix98 pty or pre-utempter days,
+ # respectively (#69510).
+ # (info from Thomas Dickey) - Donnie Berkholz <spyderous@gentoo.org>
+ fperms 0755 /usr/bin/xterm
+
+ # restore the navy blue
+ sed -i "s:blue2$:blue:" ${D}${DEFAULTS_DIR}/XTerm-color
+
+ # Fix for bug #91453 at Thomas Dickey's suggestion:
+ echo "*allowWindowOps: false" >> ${D}/${DEFAULTS_DIR}/XTerm
+ echo "*allowWindowOps: false" >> ${D}/${DEFAULTS_DIR}/UXTerm
+}
+
+pkg_postinst() {
+ if use paste64 ; then
+ elog "bracketed paste mode requires the allowWindowOps resource to be true"
+ elog "which is false by default for security reasons (see bug #91453)."
+ elog "To be able to use it add 'allowWindowOps: true' to your resources"
+ fi
+}
diff --git a/x11-terms/xterm/xterm-243-r1.ebuild b/x11-terms/xterm/xterm-243-r1.ebuild
new file mode 100644
index 0000000..2e869cf
--- /dev/null
+++ b/x11-terms/xterm/xterm-243-r1.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-terms/xterm/xterm-243.ebuild,v 1.1 2009/05/05 12:41:03 ssuominen Exp $
+
+EAPI=2
+inherit flag-o-matic
+
+DESCRIPTION="Terminal Emulator for X Windows"
+HOMEPAGE="http://dickey.his.com/xterm/"
+SRC_URI="ftp://invisible-island.net/${PN}/${P}.tgz"
+
+LICENSE="X11"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd"
+IUSE="truetype Xaw3d unicode toolbar"
+
+RDEPEND="x11-libs/libX11
+ x11-libs/libXrender
+ x11-libs/libXt
+ x11-libs/libXmu
+ x11-libs/libxkbfile
+ x11-libs/libXft
+ x11-libs/libXaw
+ x11-apps/xmessage
+ unicode? ( x11-apps/luit )
+ Xaw3d? ( x11-libs/Xaw3d )
+ sys-libs/libutempter"
+DEPEND="${RDEPEND}
+ x11-proto/xproto"
+
+pkg_setup() {
+ DEFAULTS_DIR="/usr/share/X11/app-defaults"
+}
+
+#SDS
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+#MDK
+# epatch ${FILESDIR}/xterm-199-biarch-utmp.patch.bz2
+# epatch ${FILESDIR}/xterm-197-alt-keysym-index.patch.bz2
+# epatch ${FILESDIR}/xterm-199-alt-meta-mod.patch.bz2
+
+#DarkLin
+ epatch ${FILESDIR}/xterm-ds-metaesc.patch || die
+ epatch ${FILESDIR}/xterm-ds-config.patch || die
+ epatch ${FILESDIR}/xterm-ds-sm-243.patch || die
+ epatch ${FILESDIR}/xterm-ds-paste-225.patch || die
+ epatch ${FILESDIR}/xterm-ds-input-225.patch || die
+ epatch ${FILESDIR}/xterm-ds-copy-243.patch || die
+# Embedded in SM patch
+## epatch ${FILESDIR}/xterm-ds-utf8mode.patch
+}
+#EDS
+
+src_configure() {
+ filter-flags "-fstack-protector"
+ replace-flags "-Os" "-O2" # work around gcc-4.1.1-r[01] bugs
+
+ econf --libdir=/etc \
+ --with-x \
+ --with-utempter \
+ --disable-setuid \
+ --disable-full-tgetent \
+ --disable-imake \
+ --disable-narrowproto \
+ --enable-ansi-color \
+ --enable-256-color \
+ --enable-broken-osc \
+ --enable-broken-st \
+ --enable-load-vt-fonts \
+ --enable-i18n \
+ --enable-wide-chars \
+ --enable-doublechars \
+ --enable-warnings \
+ --enable-tcap-query \
+ --enable-logging \
+ --enable-dabbrev \
+ --with-app-defaults=${DEFAULTS_DIR} \
+ --x-libraries="${ROOT}usr/lib" \
+ $(use_enable toolbar) \
+ $(use_enable truetype freetype) \
+ $(use_enable unicode luit) $(use_enable unicode mini-luit) \
+ $(use_with Xaw3d)
+}
+
+# Parallel make causes File exists error and dies. Forcing -j1 for now.
+src_install() {
+ emake -j1 DESTDIR="${D}" install || die "emake install failed"
+ dodoc README{,.i18n} ctlseqs.txt
+ dohtml xterm.log.html
+
+ # Fix permissions -- it grabs them from live system, and they can
+ # be suid or sgid like they were in pre-unix98 pty or pre-utempter days,
+ # respectively (#69510).
+ # (info from Thomas Dickey) - Donnie Berkholz <spyderous@gentoo.org>
+ fperms 0755 /usr/bin/xterm
+
+ # restore the navy blue
+ sed -i "s:blue2$:blue:" "${D}"${DEFAULTS_DIR}/XTerm-color
+
+ # Fix for bug #91453 at Thomas Dickey's suggestion:
+ echo "*allowWindowOps: false" >> "${D}"/${DEFAULTS_DIR}/XTerm
+ echo "*allowWindowOps: false" >> "${D}"/${DEFAULTS_DIR}/UXTerm
+}
+
+pkg_postinst() {
+ elog "bracketed paste mode requires the allowWindowOps resource to be true"
+ elog "which is false by default for security reasons (see bug #91453)."
+ elog "To be able to use it add 'allowWindowOps: true' to your resources"
+}
diff --git a/x11-terms/xterm/xterm-278-r1.ebuild b/x11-terms/xterm/xterm-278-r1.ebuild
new file mode 100644
index 0000000..63a1bd9
--- /dev/null
+++ b/x11-terms/xterm/xterm-278-r1.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-terms/xterm/xterm-278.ebuild,v 1.1 2012/01/19 19:01:38 ssuominen Exp $
+
+EAPI=4
+inherit eutils multilib
+
+DESCRIPTION="Terminal Emulator for X Windows"
+HOMEPAGE="http://dickey.his.com/xterm/"
+SRC_URI="ftp://invisible-island.net/${PN}/${P}.tgz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="toolbar truetype unicode Xaw3d"
+
+COMMON_DEPEND="kernel_linux? ( sys-libs/libutempter )
+ kernel_FreeBSD? ( sys-libs/libutempter )
+ >=sys-libs/ncurses-5.7-r7
+ x11-apps/xmessage
+ x11-libs/libX11
+ x11-libs/libXaw
+ x11-libs/libXft
+ x11-libs/libxkbfile
+ x11-libs/libXmu
+ x11-libs/libXrender
+ x11-libs/libXt
+ unicode? ( x11-apps/luit )
+ Xaw3d? ( x11-libs/libXaw3d )"
+RDEPEND="${COMMON_DEPEND}
+ media-fonts/font-misc-misc"
+DEPEND="${COMMON_DEPEND}
+ dev-util/pkgconfig
+ x11-proto/kbproto
+ x11-proto/xproto"
+
+pkg_setup() {
+ DEFAULTS_DIR="${EPREFIX}"/usr/share/X11/app-defaults
+}
+
+#SDS
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+#MDK
+# epatch ${FILESDIR}/xterm-199-biarch-utmp.patch.bz2
+# epatch ${FILESDIR}/xterm-197-alt-keysym-index.patch.bz2
+# epatch ${FILESDIR}/xterm-199-alt-meta-mod.patch.bz2
+
+#DarkLin
+ epatch ${FILESDIR}/xterm-ds-config-278.patch || die
+ epatch ${FILESDIR}/xterm-ds-paste-278.patch || die
+ epatch ${FILESDIR}/xterm-ds-input-225.patch || die
+ epatch ${FILESDIR}/xterm-ds-copy-243.patch || die
+# Embedded in SM patch
+## epatch ${FILESDIR}/xterm-ds-utf8mode.patch
+# Since 278 is provided internaly
+## epatch ${FILESDIR}/xterm-ds-sm-243.patch || die
+# Incorporated into the config patch
+## epatch ${FILESDIR}/xterm-ds-metaesc.patch || die
+}
+#EDS
+
+src_configure() {
+ # looking for reason why crosscompile failed? try restoring this:
+ # --x-libraries="${ROOT}usr/$(get_libdir)"
+ # -ssuominen, 2011
+
+ econf \
+ --libdir="${EPREFIX}"/etc \
+ --disable-full-tgetent \
+ --with-app-defaults=${DEFAULTS_DIR} \
+ --disable-setuid \
+ --disable-setgid \
+ --with-utempter \
+ --with-x \
+ $(use_with Xaw3d) \
+ --disable-imake \
+ --enable-256-color \
+ --enable-broken-osc \
+ --enable-broken-st \
+ --enable-exec-xterm \
+ $(use_enable truetype freetype) \
+ --enable-i18n \
+ --enable-load-vt-fonts \
+ --enable-logging \
+ $(use_enable toolbar) \
+ $(use_enable unicode mini-luit) \
+ $(use_enable unicode luit) \
+ --enable-wide-chars \
+ --enable-dabbrev \
+ --enable-warnings
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ dodoc README{,.i18n} ctlseqs.txt
+ dohtml xterm.log.html
+ domenu *.desktop
+
+ # Fix permissions -- it grabs them from live system, and they can
+ # be suid or sgid like they were in pre-unix98 pty or pre-utempter days,
+ # respectively (#69510).
+ # (info from Thomas Dickey) - Donnie Berkholz <spyderous@gentoo.org>
+ fperms 0755 /usr/bin/xterm
+
+ # restore the navy blue
+ sed -i -e "s:blue2$:blue:" "${ED}"${DEFAULTS_DIR}/XTerm-color
+}
diff --git a/x11-terms/xterm/xterm-278-r2.ebuild b/x11-terms/xterm/xterm-278-r2.ebuild
new file mode 100644
index 0000000..fdb5eb8
--- /dev/null
+++ b/x11-terms/xterm/xterm-278-r2.ebuild
@@ -0,0 +1,114 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-terms/xterm/xterm-278.ebuild,v 1.1 2012/01/19 19:01:38 ssuominen Exp $
+
+EAPI=4
+inherit eutils multilib
+
+DESCRIPTION="Terminal Emulator for X Windows"
+HOMEPAGE="http://dickey.his.com/xterm/"
+SRC_URI="ftp://invisible-island.net/${PN}/${P}.tgz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc x86 ~x86-fbsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="toolbar truetype unicode Xaw3d"
+
+COMMON_DEPEND="kernel_linux? ( sys-libs/libutempter )
+ kernel_FreeBSD? ( sys-libs/libutempter )
+ >=sys-libs/ncurses-5.7-r7
+ x11-apps/xmessage
+ x11-libs/libX11
+ x11-libs/libXaw
+ x11-libs/libXft
+ x11-libs/libxkbfile
+ x11-libs/libXmu
+ x11-libs/libXrender
+ x11-libs/libXt
+ unicode? ( x11-apps/luit )
+ Xaw3d? ( x11-libs/libXaw3d )"
+RDEPEND="${COMMON_DEPEND}
+ media-fonts/font-misc-misc"
+DEPEND="${COMMON_DEPEND}
+ dev-util/pkgconfig
+ x11-proto/kbproto
+ x11-proto/xproto"
+
+pkg_setup() {
+ DEFAULTS_DIR="${EPREFIX}"/usr/share/X11/app-defaults
+}
+
+#SDS
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+
+#MDK
+# epatch ${FILESDIR}/xterm-199-biarch-utmp.patch.bz2
+# epatch ${FILESDIR}/xterm-197-alt-keysym-index.patch.bz2
+# epatch ${FILESDIR}/xterm-199-alt-meta-mod.patch.bz2
+
+#DarkLin
+ epatch ${FILESDIR}/xterm-ds-config-278.patch || die
+ epatch ${FILESDIR}/xterm-ds-paste-278.patch || die
+ epatch ${FILESDIR}/xterm-ds-input-225.patch || die
+ epatch ${FILESDIR}/xterm-ds-copy-243.patch || die
+# Embedded in SM patch
+## epatch ${FILESDIR}/xterm-ds-utf8mode.patch
+# Since 278 is provided internaly
+## epatch ${FILESDIR}/xterm-ds-sm-243.patch || die
+# Incorporated into the config patch
+## epatch ${FILESDIR}/xterm-ds-metaesc.patch || die
+}
+#EDS
+
+src_configure() {
+ # looking for reason why crosscompile failed? try restoring this:
+ # --x-libraries="${ROOT}usr/$(get_libdir)"
+ # -ssuominen, 2011
+
+#SDS
+ --disable-maximize
+#EDS
+ econf \
+ --libdir="${EPREFIX}"/etc \
+ --disable-full-tgetent \
+ --with-app-defaults=${DEFAULTS_DIR} \
+ --disable-setuid \
+ --disable-setgid \
+ --with-utempter \
+ --with-x \
+ $(use_with Xaw3d) \
+ --disable-imake \
+ --enable-256-color \
+ --enable-broken-osc \
+ --enable-broken-st \
+ --enable-exec-xterm \
+ $(use_enable truetype freetype) \
+ --enable-i18n \
+ --enable-load-vt-fonts \
+ --enable-logging \
+ $(use_enable toolbar) \
+ $(use_enable unicode mini-luit) \
+ $(use_enable unicode luit) \
+ --enable-wide-chars \
+ --enable-dabbrev \
+ --disable-maximize \
+ --enable-warnings
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ dodoc README{,.i18n} ctlseqs.txt
+ dohtml xterm.log.html
+ domenu *.desktop
+
+ # Fix permissions -- it grabs them from live system, and they can
+ # be suid or sgid like they were in pre-unix98 pty or pre-utempter days,
+ # respectively (#69510).
+ # (info from Thomas Dickey) - Donnie Berkholz <spyderous@gentoo.org>
+ fperms 0755 /usr/bin/xterm
+
+ # restore the navy blue
+ sed -i -e "s:blue2$:blue:" "${ED}"${DEFAULTS_DIR}/XTerm-color
+}
diff --git a/x11-themes/ds-engines/Manifest b/x11-themes/ds-engines/Manifest
new file mode 100644
index 0000000..c8c2104
--- /dev/null
+++ b/x11-themes/ds-engines/Manifest
@@ -0,0 +1,7 @@
+AUX eazel-engine-0.3-disablecapplet.patch.bz2 660 RMD160 84ce22976e97ccf157befb62b97d03fa4ace7894 SHA1 fc43f77e1d2cef49545eb041aa32a2e11e575c54 SHA256 a1f5de001e9935287841c9080f52ea494a48ff5b2e66270249abc101b4e4f8d4
+AUX eazel-engine-0.3-gcc3.4.patch.bz2 317 RMD160 d015ffb1280693fa9c899c6a5f1f5bbf89b31dc4 SHA1 c1b28c6ee55c6728dfcec4d56b1c2e7bebf02cde SHA256 f9bb548471b9555279078d51709897842ef7fabddd003b2dd43e51ce70bf6a13
+DIST Wonderland1-0.47.tar.bz2 184699 RMD160 d9222717039b8c14f9874ab48db806893a1454d6 SHA1 7da1fb2f09a5882e9110275de85bebbab6b2496d SHA256 e5a0507cdd643d5449563cc9d801e835fd4702acfeb77382b36dd4046cd352fe
+DIST eazel-engine-0.3.tar.bz2 169938 RMD160 6a370e1316158bd92113283cb83d357b48010fbb SHA1 e1ebc566e92ecc43e81fd3addda17b5ba78a344d SHA256 7f9362227a8e7dc53467a56b792eed0cbd77783cc6ce505b0acd872bb07745cd
+EBUILD ds-engines-1.0-r1.ebuild 1090 RMD160 99e155faa41c11256686c3c47ebff95de78ed75f SHA1 a2317facdc398a239439472c783a39aa0fab7ac0 SHA256 f18edd5945a27379ff9079c73bd8e3a79f215b60a216c29f910390ef7c9665ad
+EBUILD ds-engines-1.0-r2.ebuild 1171 RMD160 2b2a568f0d78a04d9b7419da2ee8af8fddebbd19 SHA1 b1c5c8becee3bc6d10eb129675c40c9b4e7af8c9 SHA256 a78b3f052b76a776cecda7f6c8ac3e3fbc5e7e51205801faa7aa69058c30032e
+EBUILD ds-engines-1.0.ebuild 1046 RMD160 0ff6d21356cdb8eac936da098c2fc28407974665 SHA1 048fbe8200c1c30832688fb54ba708049a316c4a SHA256 2a868c71b8f075a793b63decd3a909ed59905cf7c947b273ca6553c58307c212
diff --git a/x11-themes/ds-engines/ds-engines-1.0-r1.ebuild b/x11-themes/ds-engines/ds-engines-1.0-r1.ebuild
new file mode 100644
index 0000000..c143b21
--- /dev/null
+++ b/x11-themes/ds-engines/ds-engines-1.0-r1.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="GTK Engines"
+HOMEPAGE="http://www.windowmaker.org/"
+
+THEME_URI="http://dside.dyndns.org/files/darklin/themes"
+SRC_URI="${THEME_URI}/eazel-engine-0.3.tar.bz2
+ ${THEME_URI}/Wonderland1-0.47.tar.bz2"
+
+# ${THEME_URI}/ThinIce.tar.bz2
+
+DEPEND="media-libs/gdk-pixbuf
+ =gnome-base/libglade-0*"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="alpha amd64 ppc sparc x86"
+
+src_unpack() {
+ mkdir ${S}
+ cd ${S}
+ for i in ${SRC_URI} ; do
+ bn=`basename $i`
+ unpack ${bn}
+ done
+
+ cd eazel-engine-0.3 || die
+ epatch ${FILESDIR}/eazel-engine-0.3-disablecapplet.patch.bz2 || die
+ epatch ${FILESDIR}/eazel-engine-0.3-gcc3.4.patch.bz2 || die
+
+ rm ltmain.sh
+ aclocal
+ autoheader
+ automake --add-missing --copy
+ autoconf
+}
+
+src_compile() {
+ cd ${S}
+
+ for name in *; do
+ cd $name || die
+ econf || die
+ emake || die
+ cd ..
+ done
+}
+
+src_install () {
+ cd ${S}
+
+ for name in *; do
+ cd $name || die
+ emake install DESTDIR=${D} || die
+ cd ..
+ done
+}
diff --git a/x11-themes/ds-engines/ds-engines-1.0-r2.ebuild b/x11-themes/ds-engines/ds-engines-1.0-r2.ebuild
new file mode 100644
index 0000000..a155e14
--- /dev/null
+++ b/x11-themes/ds-engines/ds-engines-1.0-r2.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="GTK Engines"
+HOMEPAGE="http://www.windowmaker.org/"
+
+THEME_URI="http://dside.dyndns.org/files/darklin/themes"
+SRC_URI="${THEME_URI}/eazel-engine-0.3.tar.bz2
+ ${THEME_URI}/Wonderland1-0.47.tar.bz2"
+
+# ${THEME_URI}/ThinIce.tar.bz2
+
+DEPEND="media-libs/gdk-pixbuf
+ =gnome-base/libglade-0*"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="alpha amd64 ppc sparc x86"
+
+src_unpack() {
+ mkdir ${S}
+ cd ${S}
+ for i in ${SRC_URI} ; do
+ bn=`basename $i`
+ unpack ${bn}
+ done
+
+ cd eazel-engine-0.3 || die
+ epatch ${FILESDIR}/eazel-engine-0.3-disablecapplet.patch.bz2 || die
+ epatch ${FILESDIR}/eazel-engine-0.3-gcc3.4.patch.bz2 || die
+
+ rm ltmain.sh
+ rm Makefile.in
+ rm Makefile
+
+ libtoolize --copy
+
+ aclocal-1.11
+ autoheader-1.11
+ automake-1.11 --add-missing --copy
+ automake-1.11
+ autoconf
+}
+
+src_compile() {
+ cd ${S}
+
+ for name in *; do
+ cd $name || die
+ econf || die
+ emake || die
+ cd ..
+ done
+}
+
+src_install () {
+ cd ${S}
+
+ for name in *; do
+ cd $name || die
+ emake install DESTDIR=${D} || die
+ cd ..
+ done
+}
diff --git a/x11-themes/ds-engines/ds-engines-1.0.ebuild b/x11-themes/ds-engines/ds-engines-1.0.ebuild
new file mode 100644
index 0000000..45d2aeb
--- /dev/null
+++ b/x11-themes/ds-engines/ds-engines-1.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit eutils
+
+DESCRIPTION="GTK Engines"
+HOMEPAGE="http://www.windowmaker.org/"
+
+THEME_URI="http://dside.dyndns.org/files/darklin/themes"
+SRC_URI="${THEME_URI}/eazel-engine-0.3.tar.bz2
+ ${THEME_URI}/Wonderland1-0.47.tar.bz2"
+
+# ${THEME_URI}/ThinIce.tar.bz2
+# =gnome-base/control-center-1.4*
+
+DEPEND="media-libs/gdk-pixbuf
+ =gnome-base/libglade-0*"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="alpha amd64 ppc sparc x86"
+
+src_unpack() {
+ mkdir ${S}
+ cd ${S}
+ for i in ${SRC_URI} ; do
+ bn=`basename $i`
+ unpack ${bn}
+ done
+
+ cd eazel-engine-0.3 || die
+ epatch ${FILESDIR}/eazel-engine-0.3-disablecapplet.patch.bz2 || die
+ epatch ${FILESDIR}/eazel-engine-0.3-gcc3.4.patch.bz2 || die
+}
+
+src_compile() {
+ cd ${S}
+
+ for name in *; do
+ cd $name || die
+ econf || die
+ emake || die
+ cd ..
+ done
+}
+
+src_install () {
+ cd ${S}
+
+ for name in *; do
+ cd $name || die
+ emake install DESTDIR=${D} || die
+ cd ..
+ done
+}
diff --git a/x11-themes/ds-engines/files/eazel-engine-0.3-disablecapplet.patch.bz2 b/x11-themes/ds-engines/files/eazel-engine-0.3-disablecapplet.patch.bz2
new file mode 100644
index 0000000..9e483fc
--- /dev/null
+++ b/x11-themes/ds-engines/files/eazel-engine-0.3-disablecapplet.patch.bz2
Binary files differ
diff --git a/x11-themes/ds-engines/files/eazel-engine-0.3-gcc3.4.patch.bz2 b/x11-themes/ds-engines/files/eazel-engine-0.3-gcc3.4.patch.bz2
new file mode 100644
index 0000000..c9777f1
--- /dev/null
+++ b/x11-themes/ds-engines/files/eazel-engine-0.3-gcc3.4.patch.bz2
Binary files differ
diff --git a/x11-themes/ds-themes/Manifest b/x11-themes/ds-themes/Manifest
new file mode 100644
index 0000000..ac29e95
--- /dev/null
+++ b/x11-themes/ds-themes/Manifest
@@ -0,0 +1,6 @@
+AUX gtkrc 10602 RMD160 58b365658d7bf552fb4b0dcf58dbca5b3bdc28d5 SHA1 8844c0a9ba4387813502c240b3ed7cd5bad97e62 SHA256 48ffa622d586fdffcc3031c9fc1bb6fa529837a0890965d677675dc48a00303e
+DIST aquax-gtk2-default-1.0-rc1.tar.gz 130143 RMD160 bc2bd69c295a990017e3428aacc90bbc7eaf80ae SHA1 04f1dbad87702e2483422b9c42a48449f31c2633 SHA256 1f9600f070c745b116cecf5a376eb668a55177cb96a2e321864277a6254cbc34
+DIST gnuaquase-default-0.5.tar.gz 102182 RMD160 04c84e6f6ea6416de40d542f27c1396b24c52379 SHA1 e9321d9a675ea21a1dba76b86f3f872e75111ec2 SHA256 84880da6589d91e8ce995bafeda1031cae2325bb7a0cb16ad426a1aab5207f32
+DIST gtk-themes-extra-4.tar.bz2 728399 RMD160 566da2886d44ce837df578f0a735d5bc74e33714 SHA1 7a1d3c1ad22dd452985af3beea24c5e504b401ae SHA256 ca52389a3c3579c0b508c2416a83a511d2b8fcbc7e4ac0a0a09e455e65ef557d
+DIST h2o-gtk2-default-2.0.tar.gz 211621 RMD160 521c190707c46d96d99efc501de36211aa9cc1a3 SHA1 477435bc54e1abc0c9527b5289d5f94071f681f9 SHA256 d09e2563fb7d9b16061eba3507009cd545ebf1bdc4cf1c0e111ee91a07104b46
+EBUILD ds-themes-1.0.ebuild 827 RMD160 754c3779e3fc08318a27da4d8dc61144d98b1883 SHA1 8b7aa44cc445f79072f7f16a09491de9a146e072 SHA256 c6cad6b2ea9f9c9a2a9302939ffe27364f605428f80040035c57813d5e2af1fa
diff --git a/x11-themes/ds-themes/ds-themes-1.0.ebuild b/x11-themes/ds-themes/ds-themes-1.0.ebuild
new file mode 100644
index 0000000..3c93f46
--- /dev/null
+++ b/x11-themes/ds-themes/ds-themes-1.0.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+DESCRIPTION="GTK themes"
+HOMEPAGE="http://www.windowmaker.org/"
+
+THEME_URI="http://dside.dyndns.org/files/darklin/themes"
+SRC_URI="${THEME_URI}/aquax-gtk2-default-1.0-rc1.tar.gz
+ ${THEME_URI}/gnuaquase-default-0.5.tar.gz
+ ${THEME_URI}/h2o-gtk2-default-2.0.tar.gz
+ ${THEME_URI}/gtk-themes-extra-4.tar.bz2"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="alpha amd64 ppc sparc x86"
+
+src_unpack() {
+ mkdir ${S}
+ cd ${S}
+ for i in ${SRC_URI} ; do
+ bn=`basename $i`
+ unpack ${bn}
+ done
+}
+
+src_install () {
+ dodir /usr/share/themes
+ cp -pR * ${D}/usr/share/themes/
+ chown -R root:0 ${D}/usr/share/themes/
+ chmod -R o-w ${D}/usr/share/themes/
+
+ dodir /etc/gtk
+ install -m 644 ${FILESDIR}/gtkrc ${D}/etc/gtk/
+}
diff --git a/x11-themes/ds-themes/files/gtkrc b/x11-themes/ds-themes/files/gtkrc
new file mode 100644
index 0000000..c547c43
--- /dev/null
+++ b/x11-themes/ds-themes/files/gtkrc
@@ -0,0 +1,474 @@
+# The syntax in the engine sections is a mess. Here are some hints:
+
+# gradient : '{' direction gradient-color-list '}'
+# | '<' INT '>' -- palette ref
+
+# direction : /* nothing */
+# | VERTICAL
+# | HORIZONTAL
+
+# gradient-color-list : color
+# : color ',' gradient-color-list
+# : color '[' weight ']' gradient-color-list
+
+# weight : FLOAT
+# | INT
+
+# color : "#RRGGBB"
+# | '{' FLOAT ',' FLOAT ',' FLOAT '}'
+# | '<' color-ext '>'
+
+# color-ext : STRING -- file in $HOME to read color from
+# | '<' INT '>' -- use indexed palette entry
+# | '<' INT ',' FLOAT '>' -- multiply palette entry
+
+# Allow the engine module to be loaded no matter what --prefix GTK+
+# was configured with
+module_path ".:/usr/lib/gtk/themes/engines"
+
+# Default style for all widgets to build from
+style "default"
+{
+ font = "-adobe-helvetica-medium-r-normal-*-*-120-*-*-p-*-iso8859-1"
+
+ fg[NORMAL] = "#000000"
+ fg[ACTIVE] = "#000000"
+ fg[PRELIGHT] = "#000000"
+ fg[INSENSITIVE] = "#000000"
+ fg[SELECTED] = "#ffffff"
+
+ bg[NORMAL] = "#dcdcdc"
+ bg[ACTIVE] = "#ababab"
+ bg[PRELIGHT] = "#f2f2f2"
+ bg[INSENSITIVE] = "#ffffff"
+ bg[SELECTED] = "#0A5F89"
+
+ text[NORMAL] = "#000000"
+ text[ACTIVE] = "#000000"
+ text[PRELIGHT] = "#000000"
+ text[SELECTED] = "#000000"
+ text[INSENSITIVE] = "#000000"
+
+ base[NORMAL] = "#ffffff"
+ base[PRELIGHT] = "#ffffff"
+ base[INSENSITIVE] = "#ffffff"
+
+ engine "eazel-engine" {
+
+ # The focus/selection color
+ palette[0] = { "#dcdcdc" }
+
+ # The gradient used for recoloring images
+ palette[1] = { "#000000", <0>, "#ffffff" }
+
+ # Used for recolouring inactive images
+ palette[2] = { "#000000", "#888888", "#ffffff" }
+
+ # Set these colors here, so we can just reference the palette
+# bg[SELECTED] = <0>
+# base[SELECTED] = <0>
+
+# focus_color = <0>
+# insensitive_colors = "#636563", "#cecfce"
+
+ # Create the default (only) stock image table. This maps from
+ # identifiers used in the engine to reference image parts to
+ # the actual images, and sets attributes of the images
+ stock
+ {
+ "CHECK" {
+ image = "check-default.png"
+ }
+ "CHECK_FOCUS" {
+ image = "check-default-focus.png"
+ recolor = <1>
+ }
+ "CHECK_HI" {
+ image = "check-hilight.png"
+ }
+ "CHECK_HI_FOCUS" {
+ image = "check-hilight-focus.png"
+ recolor = <1>
+ }
+ "CHECK_PRESSED" {
+ image = "check-pressed.png"
+ }
+ "CHECK_PRESSED_FOCUS" {
+ image = "check-pressed-focus.png"
+ recolor = <1>
+ }
+ "CHECK_DISABLED" {
+ image = "check-insensitive.png"
+ }
+ "CHECK_ACTIVE" {
+ image = "check-active-default.png"
+ }
+ "CHECK_ACTIVE_FOCUS" {
+ image = "check-active-default-focus.png"
+ recolor = <1>
+ }
+ "CHECK_ACTIVE_HI" {
+ image = "check-active-hilight.png"
+ }
+ "CHECK_ACTIVE_HI_FOCUS" {
+ image = "check-active-hilight-focus.png"
+ recolor = <1>
+ }
+ "CHECK_ACTIVE_PRESSED" {
+ image = "check-active-pressed.png"
+ }
+ "CHECK_ACTIVE_PRESSED_FOCUS" {
+ image = "check-active-pressed-focus.png"
+ recolor = <1>
+ }
+ "CHECK_ACTIVE_DISABLED" {
+ image = "check-active-insensitive.png"
+ }
+ "OPTION" {
+ image = "radio-default.png"
+ }
+ "OPTION_FOCUS" {
+ image = "radio-default-focus.png"
+ recolor = <1>
+ }
+ "OPTION_HI" {
+ image = "radio-hilight.png"
+ }
+ "OPTION_HI_FOCUS" {
+ image = "radio-hilight-focus.png"
+ recolor = <1>
+ }
+ "OPTION_PRESSED" {
+ image = "radio-pressed.png"
+ }
+ "OPTION_PRESSED_FOCUS" {
+ image = "radio-pressed-focus.png"
+ recolor = <1>
+ }
+ "OPTION_DISABLED" {
+ image = "radio-insensitive.png"
+ }
+ "OPTION_ACTIVE" {
+ image = "radio-active-default.png"
+ }
+ "OPTION_ACTIVE_FOCUS" {
+ image = "radio-active-default-focus.png"
+ recolor = <1>
+ }
+ "OPTION_ACTIVE_HI" {
+ image = "radio-active-hilight.png"
+ }
+ "OPTION_ACTIVE_HI_FOCUS" {
+ image = "radio-active-hilight-focus.png"
+ recolor = <1>
+ }
+ "OPTION_ACTIVE_PRESSED" {
+ image = "radio-active-pressed.png"
+ }
+ "OPTION_ACTIVE_PRESSED_FOCUS" {
+ image = "radio-active-pressed-focus.png"
+ recolor = <1>
+ }
+ "OPTION_ACTIVE_DISABLED" {
+ image = "radio-active-insensitive.png"
+ }
+ "H_TROUGH" {
+ image = "scroller-h-trough.png"
+ border = { 28, 28, 2, 2 }
+ }
+ "V_TROUGH" {
+ image = "scroller-v-trough.png"
+ border = { 2, 2, 28, 28 }
+ }
+ "ARROW_UP" {
+ image = "scroller-arrow-up.png"
+ }
+ "ARROW_UP_HI" {
+ image = "scroller-arrow-up-hilight.png"
+ }
+ "ARROW_UP_ACTIVE" {
+ image = "scroller-arrow-up-pressed.png"
+ }
+ "ARROW_DOWN" {
+ image = "scroller-arrow-down.png"
+ }
+ "ARROW_DOWN_HI" {
+ image = "scroller-arrow-down-hilight.png"
+ }
+ "ARROW_DOWN_ACTIVE" {
+ image = "scroller-arrow-down-pressed.png"
+ }
+ "ARROW_RIGHT" {
+ image = "scroller-arrow-right.png"
+ }
+ "ARROW_RIGHT_HI" {
+ image = "scroller-arrow-right-hilight.png"
+ }
+ "ARROW_RIGHT_ACTIVE" {
+ image = "scroller-arrow-right-pressed.png"
+ }
+ "ARROW_LEFT" {
+ image = "scroller-arrow-left.png"
+ }
+ "ARROW_LEFT_HI" {
+ image = "scroller-arrow-left-hilight.png"
+ }
+ "ARROW_LEFT_ACTIVE" {
+ image = "scroller-arrow-left-pressed.png"
+ }
+ "H_SCROLLBAR" {
+ image = "scroller-h.png"
+ border = { 3, 3, 1, 1 }
+ recolor = <1>
+ }
+ "H_SCROLLBAR_HI" {
+ image = "scroller-h-hilight.png"
+ border = { 3, 3, 1, 1 }
+ recolor = <1>
+ }
+ "H_SCROLLBAR_INACTIVE" {
+ image = "scroller-h.png"
+ border = { 3, 3, 1, 1 }
+ recolor = <2>
+ }
+ "H_SCROLLBAR_THUMB" {
+ image = "scroller-h-thumb.png"
+ recolor = <1>
+ }
+ "H_SCROLLBAR_THUMB_HI" {
+ image = "scroller-h-thumb.png"
+ recolor = <1>
+ }
+ "H_SCROLLBAR_THUMB_INACTIVE" {
+ image = "scroller-h-thumb.png"
+ recolor = <2>
+ }
+ "V_SCROLLBAR" {
+ image = "scroller-v.png"
+ border = { 1, 1, 3, 3 }
+ recolor = <1>
+ }
+ "V_SCROLLBAR_HI" {
+ image = "scroller-v.png"
+ border = { 1, 1, 3, 3 }
+ recolor = <1>
+ }
+ "V_SCROLLBAR_INACTIVE" {
+ image = "scroller-v.png"
+ border = { 1, 1, 3, 3 }
+ recolor = <1>
+ }
+ "V_SCROLLBAR_THUMB" {
+ image = "scroller-v-thumb.png"
+ recolor = <1>
+ }
+ "V_SCROLLBAR_THUMB_HI" {
+ image = "scroller-v-thumb.png"
+ recolor = <1>
+ }
+ "V_SCROLLBAR_THUMB_INACTIVE" {
+ image = "scroller-v-thumb.png"
+ recolor = <2>
+ }
+ "PROGRESS_BAR" {
+ image = "progressbar.png"
+ border = { 4, 4, 1, 1 }
+ recolor = <1>
+ }
+ "PROGRESS_BAR_LEFT" {
+ image = "progressbar-left.png"
+ }
+ "PROGRESS_BAR_RIGHT" {
+ image = "progressbar-right.png"
+ border = { 0, 0, 2, 0 }
+ }
+ "PROGRESS_BAR_INACTIVE" {
+ image = "progressbar.png"
+ border = { 4, 4, 1, 1 }
+ recolor = <2>
+ }
+ "PROGRESS_TROUGH" {
+ image = "progressbar_trough.png"
+ border = { 6, 4, 6, 4 }
+ }
+ "H_SLIDER_THUMB" {
+ image = "slider_h_thumb.png"
+ border = { 4, 4, 1, 1 }
+ recolor = <1>
+ }
+ "H_SLIDER_THUMB_INACTIVE" {
+ image = "slider_h_thumb.png"
+ border = { 4, 4, 1, 1 }
+ recolor = <2>
+ }
+ "H_SLIDER_TROUGH" {
+ image = "slider_h_trough.png"
+ border = { 6, 6, 0, 0 }
+ }
+ "H_SLIDER_TROUGH_ACTIVE" {
+ image = "slider_h_trough_focus.png"
+ border = { 6, 6, 0, 0 }
+ recolor = <1>
+ }
+ "V_SLIDER_THUMB" {
+ image = "slider_v_thumb.png"
+ border = { 1, 1, 4, 4 }
+ recolor = <1>
+ }
+ "V_SLIDER_THUMB_INACTIVE" {
+ image = "slider_v_thumb.png"
+ border = { 1, 1, 4, 4 }
+ recolor = <2>
+ }
+ "V_SLIDER_TROUGH" {
+ image = "slider_v_trough.png"
+ border = { 0, 0, 6, 6 }
+ }
+ "V_SLIDER_TROUGH_ACTIVE" {
+ image = "slider_v_trough_focus.png"
+ border = { 0, 0, 6, 6 }
+ recolor = <1>
+ }
+ "TAB_TOP" {
+ image = "tab_usel.png"
+ border = { 4, 4, 10, 5 }
+ }
+ "TAB_TOP_LEFT" {
+ image = "tab_usel-left.png"
+ border = { 4, 4, 10, 5 }
+ }
+ "TAB_TOP_ACTIVE" {
+ image = "tab_sel.png"
+ border = { 4, 14, 10, 5 }
+ }
+ "TAB_BOTTOM" {
+ image = "tab_usel-bottom.png"
+ border = { 4, 4, 10, 5 }
+ }
+ "TAB_BOTTOM_LEFT" {
+ image = "tab_usel-bottom-left.png"
+ border = { 4, 4, 10, 5 }
+ }
+ "TAB_BOTTOM_ACTIVE" {
+ image = "tab_sel-bottom.png"
+ border = { 4, 4, 10, 5 }
+ }
+ "SPIN_ARROW_UP" {
+ image = "arrow_up-spinner.png"
+ }
+ "SPIN_ARROW_DOWN" {
+ image = "arrow_down-spinner.png"
+ }
+ }
+ }
+}
+
+# common default
+class "GtkWidget" style "default"
+
+
+# Style for widgets that don't want gradient backgrounds
+style "no-gradients"
+{
+ engine "eazel-engine"
+ {
+ gradient[NORMAL] = {}
+ gradient[ACTIVE] = {}
+ gradient[PRELIGHT] = {}
+ gradient[SELECTED] = {}
+ }
+}
+
+class "GtkNotebook" style "no-gradients"
+class "GtkRuler" style "no-gradients"
+
+
+# Style used for (prelighted) menu items
+style "menuitem"
+{
+ fg[PRELIGHT] = "#000000"
+
+ engine "eazel-engine"
+ {
+ bg[PRELIGHT] = <0>
+
+ gradient[NORMAL] = {}
+ gradient[ACTIVE] = {}
+ gradient[SELECTED] = {}
+ # by default menuitem_gradient just references <0>
+ gradient[PRELIGHT] = { "#f2f2f2" }
+# { vertical : <0,0.5> [3] <0> [10] <0> [2] <0,0.6> }
+ }
+}
+
+class "GtkMenuItem" style "menuitem"
+widget_class "*.*MenuItem.*" style "menuitem"
+
+
+style "menu"
+{
+ engine "eazel-engine"
+ {
+ gradient[NORMAL] = {}
+ gradient[ACTIVE] = {}
+ gradient[SELECTED] = {}
+ }
+}
+
+# This enables gradiented menu backgrounds
+class "GtkMenu" style "menu"
+
+
+
+style "entry"
+{
+ engine "eazel-engine"
+ {
+ thickness = 3
+ }
+}
+
+# some extra padding around text entries, so the focus marking fits
+class "GtkEntry" style "entry"
+class "GtkText" style "entry"
+
+
+style "slider"
+{
+ engine "eazel-engine"
+ {
+ thickness = 0
+ }
+}
+
+class "GtkVScale" style "slider"
+class "GtkHScale" style "slider"
+
+
+style "eventbox"
+{
+ # Causes the parent-relative feature of gdk_window_set_back_pixmap ()
+ # to be used.
+ bg_pixmap[NORMAL] = "<parent>"
+ bg_pixmap[INSENSITIVE] = "<parent>"
+ bg_pixmap[PRELIGHT] = "<parent>"
+ bg_pixmap[SELECTED] = "<parent>"
+ bg_pixmap[ACTIVE] = "<parent>"
+ engine "eazel-engine" {}
+}
+
+# Ensure that there are no holes in tool bars, etc..
+class "GtkEventBox" style "eventbox"
+class "GtkSocket" style "eventbox"
+class "GtkPlug" style "eventbox"
+class "BonoboSocket" style "eventbox"
+class "BonoboPlug" style "eventbox"
+class "NautilusZoomControl" style "eventbox"
+
+
+# This sucks, but so far I've found no way to get a gradient drawn
+# in the middle part of the Foobar. Maybe it's possible to hardcode
+# a hack in eazel-theme-draw.c? (draw_flat_box perhaps?)
+
+widget_class "FoobarWidget.*" style "no-gradients"
+