summaryrefslogtreecommitdiff
path: root/app-misc/pwsafe
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /app-misc/pwsafe
reinit the tree, so we can have metadata
Diffstat (limited to 'app-misc/pwsafe')
-rw-r--r--app-misc/pwsafe/Manifest11
-rw-r--r--app-misc/pwsafe/files/pwsafe-0.2.0-XChangeProperty.patch22
-rw-r--r--app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch48
-rw-r--r--app-misc/pwsafe/files/pwsafe-0.2.0-fake-readline.patch107
-rw-r--r--app-misc/pwsafe/files/pwsafe-0.2.0-man-page-option-syntax.patch30
-rw-r--r--app-misc/pwsafe/files/pwsafe-0.2.0-printf.patch43
-rw-r--r--app-misc/pwsafe/metadata.xml27
-rw-r--r--app-misc/pwsafe/pwsafe-0.2.0-r2.ebuild41
-rw-r--r--app-misc/pwsafe/pwsafe-0.2.0-r4.ebuild43
9 files changed, 372 insertions, 0 deletions
diff --git a/app-misc/pwsafe/Manifest b/app-misc/pwsafe/Manifest
new file mode 100644
index 000000000000..ee2410d675f6
--- /dev/null
+++ b/app-misc/pwsafe/Manifest
@@ -0,0 +1,11 @@
+AUX pwsafe-0.2.0-XChangeProperty.patch 1613 SHA256 3a25d89918f96195da8eb28413719d724ccc2f62cb406b50795c71d3a04ccd28 SHA512 90329b172f6f1f9909c95c0cb648bb845c35e40ea78acf3d34c6ddfc1fae427694a5e0c2fa58de6a6614f432a81cdffe5b29e3a6211cae36924310ffc8b19680 WHIRLPOOL 1f8f23e340af6eab1a058514fb161ea85351fa36fd42e24f86275640be8be77f337ad459997246ab34f0ae7fe2e3f5ca8de56466cb2ab0c94f994f58fabee78c
+AUX pwsafe-0.2.0-cvs-1.57.patch 1100 SHA256 a1e977b8b72f3d1ecd25c8feaa0ffe43dfcad370ba34e8489b2395583f1bdb69 SHA512 3772c833b16b29c5119f11a7c106e4a7b2d4d3f8cf17d42c78f5403cd5ae92136dadc16c5cfcf961822db4c76f04946412637547173a26227761f74d83765330 WHIRLPOOL 9f2848e113de4d8fcb3fe89f7a89d40c88bdd84c129022e25e99ecd6a7d931bc816f8a4f3a4327bb15a450b2084a179e148432cd37072c6882f7552c742e25ea
+AUX pwsafe-0.2.0-fake-readline.patch 2667 SHA256 918293edb9196efce2a75f6e4cf1fc59addd766aa515a158b14f9bc4c3bb2cdd SHA512 466686d56662728c7c4d208ff69212daa84a86b746a9b4e52d48b2c7789d83fc1ad98673a8979a6f750c8215a0199e5580b5eb152b29e13761b1254eab30778e WHIRLPOOL 3706c9399c8e6aaa76876bf9a9465a9ec5571ad4cf2407a56f3c65bba19c62342cbeec2c4a6c46f71827397942855c1a3b2908791212cdac25f3609a90a6f4be
+AUX pwsafe-0.2.0-man-page-option-syntax.patch 848 SHA256 858865706f8cdb30712f210bb7f03edf327934fe3e4ab04376b844de35aa4de3 SHA512 17697927e64e5bcdbc68343775732e1559dd7fe5c000b15fda9af7229f3c2c36bbd4ee3af3c652da9e8d0550acd1b5bb39a75891f5f40c37640ea089a5b6306e WHIRLPOOL 9ffee426e01235e548be9667ee173ef7c7bd681b0b9885f00580c7f6e2356cf032ec8f34ec4d6f73a2215e1fa11481a548447c8e9b0dcae7638612b52fa29417
+AUX pwsafe-0.2.0-printf.patch 1868 SHA256 927afd52a65d582cd089f1aba3298d17a7d356403ad323c3d2e7526db1279279 SHA512 7567e666f7dfb9c798aa2e6368ea1abf72f749c953da42bff7ef1b61aea6bf2faca96ef702ef9f7a9ceeece90999c066763006e549c5f2ec365cbf9358547449 WHIRLPOOL da2dc316d88ca010f39b30d4eb0e1868ec41b9988c4d33e1d4f013d234658c905659a5f52180e5d03721edbaa488c119cbf7cdb04b7701b981a4311f3d7c28e5
+DIST pwsafe-0.2.0.tar.gz 127433 SHA256 61e91dc5114fe014a49afabd574eda5ff49b36c81a6d492c03fcb10ba6af47b7 SHA512 e8d3684f523f83def6317ef5561a02d1493685cfbda18707644bf335b7f45b1a548aae17a735838d9f6df345ddb17934607162a6e99348df625b34a9ad5f4cf3 WHIRLPOOL c80ef8c398e5cb68920b11815e0aa042adf2ddaa78c75157e346566b210f5aba000f71c4a2172d6cf2c5a9707fe82af8a1379dbf9bb3ac2f71b6e12aebbbb975
+EBUILD pwsafe-0.2.0-r2.ebuild 905 SHA256 98e8e78dc97923db9bb23e7ef6fa96ce80c4fe50de35759d25489e0c79b7eb13 SHA512 ea570ed13a7c3316a38d9c3760b36b3a54bcb837eedc72c6252eedcfbea8a1b911dd8c3c939a6f54af362d9f130f96ebcc950d4bc2d85768f49b47c67be94b94 WHIRLPOOL 59bd659b230aa0fe87145863cbe298a3336d4241500f1628aabcff926cfbe7e404817144ca22f1a7d5b87b375cf59ad4646e69ce1e039634af06adb013ee720f
+EBUILD pwsafe-0.2.0-r4.ebuild 1018 SHA256 700893f187c485462917d7100e30cab20b5b57004f30c42e3250713363ac13cf SHA512 e1d12d8607794c94a81aaae7fcdafc4928890f1e9536a88a205c5f04c7b2f76ab223a6a9c3ac3f807261aa5d1ef924378b3413936e1b8f4447b87f71b911f79d WHIRLPOOL 161a10d411578139f18c7d70945c81e89dfe34c4b3cdcf38c1a3c00bb3b6480e4d281bfb9d330c45f590be6c2e475a0e6cd726356669d42069cc166074685e38
+MISC ChangeLog 3247 SHA256 e68591068deda28f723e77415893918930e9bc9d64e34f5021c7c758b9e2fbfc SHA512 a3ff6887d3fe5a249cdd7fc937c60bb9134f15a29e1dd7ac6e17c27172588136c79d2beb53fd7f63d3ddc3ecb48ebd65c2102bf20aa457e30cf0ad21bc60cfa7 WHIRLPOOL 9ac6db5cc7489414f690ab1227e828aa4cc4d02207c565ab17bd4a35f38995bc8e39cc127f1a950ad795491b0b03ef18cf95fdfaa5978e14bfe330770bd95ea9
+MISC ChangeLog-2015 2728 SHA256 2e2f5c5891dde9ad6e02b5e8c72686c9206f02fe75a99520d48d6351cbad6523 SHA512 2e6205b98250a69293a687cac701436342c969da8fb5be6ceec3168e1c2089d79d750ec717cd009d76eb4ece27e3ae177f968dfc71238dc63c662586264db268 WHIRLPOOL c2b7ba2232a9b4836051f3787d82a44d4be0860ec1154ca8ff8666da0c9256834aaf2cbf654ea01d24cf9402a2ecb9417b431f2c36e81f793b62a80d478f97ec
+MISC metadata.xml 959 SHA256 e65094c7e58e383616aeca6c03ccd0f958cd59ceec3076a038617d714625ced6 SHA512 c4724594e4782281676d98634f9966b78af472f3171d17f86d448d65bf4a543126e89616d0d83a4fa3acac4f7c49c77c1c061f276ef2a906e06623c300920269 WHIRLPOOL a443ce87918fba02ec0b9fa80e9ef7c5db7d27818d6ad278670a78222c3fff8346733316326dc2c6bda3cddff995e87e0ab16a6eadb5e97c38a0e4200444d4c0
diff --git a/app-misc/pwsafe/files/pwsafe-0.2.0-XChangeProperty.patch b/app-misc/pwsafe/files/pwsafe-0.2.0-XChangeProperty.patch
new file mode 100644
index 000000000000..3fadfc2765fb
--- /dev/null
+++ b/app-misc/pwsafe/files/pwsafe-0.2.0-XChangeProperty.patch
@@ -0,0 +1,22 @@
+This patch came from <https://bugzilla.redhat.com/show_bug.cgi?id=667541>.
+
+Index: pwsafe.cpp
+===================================================================
+RCS file: /cvsroot/pwsafe/pwsafe/pwsafe.cpp,v
+retrieving revision 1.57
+diff -u -r1.57 pwsafe.cpp
+--- pwsafe.cpp 12 Aug 2007 12:33:06 -0000 1.57
++++ pwsafe.cpp 5 Jan 2011 22:16:43 -0000
+@@ -1820,10 +1820,10 @@
+ if (xev.xselectionrequest.target == XA_TARGETS(xdisplay)) {
+ // tell them what we can supply
+ const Atom targets[] = { XA_TARGETS(xdisplay), XA_TIMESTAMP(xdisplay), XA_TEXT(xdisplay), XA_STRING };
+- XChangeProperty(xdisplay, xev.xselectionrequest.requestor, prop, XA_TARGETS(xdisplay), 32, PropModeReplace, reinterpret_cast<const unsigned char*>(&targets), sizeof(targets)/sizeof(targets[0]));
++ XChangeProperty(xdisplay, xev.xselectionrequest.requestor, prop, XA_ATOM, 32, PropModeReplace, reinterpret_cast<const unsigned char*>(&targets), sizeof(targets)/sizeof(targets[0]));
+ }
+ else if (xev.xselectionrequest.target == XA_TIMESTAMP(xdisplay)) {
+- XChangeProperty(xdisplay, xev.xselectionrequest.requestor, prop, XA_TIMESTAMP(xdisplay), 32, PropModeReplace, reinterpret_cast<const unsigned char*>(&timestamp), 1);
++ XChangeProperty(xdisplay, xev.xselectionrequest.requestor, prop, XA_INTEGER, 32, PropModeReplace, reinterpret_cast<const unsigned char*>(&timestamp), 1);
+ }
+ else if (xev.xselectionrequest.target == XA_TEXT(xdisplay) ||
+ xev.xselectionrequest.target == XA_STRING) {
diff --git a/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch b/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch
new file mode 100644
index 000000000000..7f62eb59d429
--- /dev/null
+++ b/app-misc/pwsafe/files/pwsafe-0.2.0-cvs-1.57.patch
@@ -0,0 +1,48 @@
+Index: pwsafe.cpp
+===================================================================
+RCS file: /cvsroot/pwsafe/pwsafe/pwsafe.cpp,v
+retrieving revision 1.56
+retrieving revision 1.57
+diff -u -r1.56 -r1.57
+--- pwsafe.cpp 30 Sep 2005 10:30:56 -0000 1.56
++++ pwsafe.cpp 12 Aug 2007 12:33:06 -0000 1.57
+@@ -3346,6 +3346,12 @@
+ }
+
+ bufpos += rc;
++ buf[bufpos] = '\0';
++
++ if (rc == 0) {
++ // EOF (ctrl-D)
++ break;
++ }
+
+ if (bufpos == buflen && !strchr(buf,'\n')) {
+ // we needed a bigger buffer
+@@ -3354,6 +3360,7 @@
+ fprintf(stderr, "Error: %s out of memory\n", program_name);
+ memset(buf,0,buflen);
+ free(buf);
++ throw FailEx();
+ }
+
+ memcpy(new_buf, buf, bufpos);
+@@ -3364,9 +3371,15 @@
+ }
+ }
+
+- int len = strchr(buf,'\n') - buf;
+- saved.assign(buf+len+1, bufpos-(len+1));
+- buf[len] = '\0';
++ char* lf = strchr(buf,'\n');
++ if (lf) {
++ // save the rest of the input for later
++ saved.assign(lf+1);
++ *lf = '\0';
++ } else {
++ saved.assign("",0);
++ }
++
+ return buf;
+ }
+ #endif // WITH_READLINE
diff --git a/app-misc/pwsafe/files/pwsafe-0.2.0-fake-readline.patch b/app-misc/pwsafe/files/pwsafe-0.2.0-fake-readline.patch
new file mode 100644
index 000000000000..4e0f4ad4dfd6
--- /dev/null
+++ b/app-misc/pwsafe/files/pwsafe-0.2.0-fake-readline.patch
@@ -0,0 +1,107 @@
+Index: pwsafe.cpp
+===================================================================
+RCS file: /cvsroot/pwsafe/pwsafe/pwsafe.cpp,v
+retrieving revision 1.57
+diff -u -r1.57 pwsafe.cpp
+--- pwsafe.cpp 12 Aug 2007 12:33:06 -0000 1.57
++++ pwsafe.cpp 30 Mar 2011 07:22:11 -0000
+@@ -3325,61 +3325,48 @@
+ static char* readline(const char* prompt) {
+ printf("%s", prompt);
+ fflush(stdout);
+-
+- static secstring saved;
+- int buflen = saved.length() + 100;
+- int bufpos = saved.length();
+- char* buf = reinterpret_cast<char*>(malloc(buflen+1));
+- if (!buf)
+- throw FailEx();
+- memcpy(buf, saved.data(), saved.length());
+- buf[saved.length()] = '\0';
+-
+- while (!strchr(buf,'\n')) {
+- const int rc = ::read(STDIN_FILENO, buf+bufpos, buflen);
+-
+- if (rc == -1) {
+- fprintf(stderr, "Error: %s read(STDIN) failed: %s\n", program_name, strerror(errno));
+- memset(buf,0,buflen);
+- free(buf);
+- throw FailEx();
+- }
+-
+- bufpos += rc;
+- buf[bufpos] = '\0';
+-
+- if (rc == 0) {
+- // EOF (ctrl-D)
+- break;
+- }
+-
+- if (bufpos == buflen && !strchr(buf,'\n')) {
+- // we needed a bigger buffer
+- char* new_buf = reinterpret_cast<char*>(malloc(2*buflen+1));
+- if (!new_buf) {
+- fprintf(stderr, "Error: %s out of memory\n", program_name);
+- memset(buf,0,buflen);
+- free(buf);
+- throw FailEx();
+- }
+
+- memcpy(new_buf, buf, bufpos);
+- memset(buf, 0, buflen);
+- free(buf);
+- buf = new_buf;
+- buflen *= 2;
+- }
+- }
++ size_t buflen = 100;
++ size_t bufpos = 0;
++ char* buf = static_cast<char*>(malloc(buflen+1));
++ if (!buf)
++ throw FailEx();
+
+- char* lf = strchr(buf,'\n');
+- if (lf) {
+- // save the rest of the input for later
+- saved.assign(lf+1);
+- *lf = '\0';
+- } else {
+- saved.assign("",0);
++ for (;;) {
++ const ssize_t rc = ::read(STDIN_FILENO, buf+bufpos, 1);
++ if (rc == -1) {
++ fprintf(stderr, "Error: %s read(STDIN) failed: %s\n", program_name, strerror(errno));
++ memset(buf,0,bufpos);
++ free(buf);
++ throw FailEx();
++ } else if (rc == 0) {
++ // EOF (ctrl-D)
++ break;
++ } else if (buf[bufpos] == '\n') {
++ // end of line
++ break;
++ }
++
++ ++bufpos;
++
++ if (bufpos == buflen) {
++ // we need a bigger buffer
++ char* new_buf = static_cast<char*>(malloc(2*buflen+1));
++ if (!new_buf) {
++ fprintf(stderr, "Error: %s out of memory\n", program_name);
++ memset(buf,0,bufpos);
++ free(buf);
++ throw FailEx();
++ }
++ memcpy(new_buf, buf, bufpos);
++ memset(buf, 0, bufpos);
++ free(buf);
++ buf = new_buf;
++ buflen *= 2;
++ }
+ }
+
++ buf[bufpos] = '\0';
+ return buf;
+ }
+ #endif // WITH_READLINE
diff --git a/app-misc/pwsafe/files/pwsafe-0.2.0-man-page-option-syntax.patch b/app-misc/pwsafe/files/pwsafe-0.2.0-man-page-option-syntax.patch
new file mode 100644
index 000000000000..a83d3a83d8eb
--- /dev/null
+++ b/app-misc/pwsafe/files/pwsafe-0.2.0-man-page-option-syntax.patch
@@ -0,0 +1,30 @@
+Index: pwsafe.1.in
+===================================================================
+RCS file: /cvsroot/pwsafe/pwsafe/pwsafe.1.in,v
+retrieving revision 1.8
+diff -u -r1.8 pwsafe.1.in
+--- pwsafe.1.in 18 Mar 2006 14:17:41 -0000 1.8
++++ pwsafe.1.in 30 Mar 2011 07:42:23 -0000
+@@ -52,18 +52,18 @@
+ .B \-\-passwd
+ Change the database's passphrase.
+ .TP
+-.B \-\-list[=REGEX]
++.B \-\-list [REGEX]
+ List all [matching] entries in database.
+ .BR
+ If \-u or \-p is given then REGEX must match only one entry, and only the requested field(s) are emitted.
+ .TP
+-.B \-a, \-\-add[=NAME]
++.B \-a, \-\-add [NAME]
+ Add an entry to database.
+ .TP
+-.B \-e, \-\-edit=REGEX
++.B \-e, \-\-edit REGEX
+ Edit an entry.
+ .TP
+-.B \-\-delete=NAME
++.B \-\-delete NAME
+ Delete an entry from database.
+ .TP
+ If no command is given, an interactive mode is entered.
diff --git a/app-misc/pwsafe/files/pwsafe-0.2.0-printf.patch b/app-misc/pwsafe/files/pwsafe-0.2.0-printf.patch
new file mode 100644
index 000000000000..409f3a7220ed
--- /dev/null
+++ b/app-misc/pwsafe/files/pwsafe-0.2.0-printf.patch
@@ -0,0 +1,43 @@
+Index: pwsafe.cpp
+===================================================================
+RCS file: /cvsroot/pwsafe/pwsafe/pwsafe.cpp,v
+retrieving revision 1.57
+diff -u -r1.57 pwsafe.cpp
+--- pwsafe.cpp 12 Aug 2007 12:33:06 -0000 1.57
++++ pwsafe.cpp 30 Mar 2011 05:44:07 -0000
+@@ -1619,7 +1619,7 @@
+ snprintf(ent_buf, sizeof(ent_buf), "%d", entropy_needed);
+ ent_buf[sizeof(ent_buf)-1] = '\0';
+ char len_buf[24];
+- snprintf(len_buf, sizeof(len_buf), "%d", pw.length());
++ snprintf(len_buf, sizeof(len_buf), "%lu", static_cast<unsigned long>(pw.length()));
+ len_buf[sizeof(len_buf)-1] = '\0';
+ switch (tolower(get1char("Use "+pw+"\ntype "+type_name+", length "+len_buf+", "+ent_buf+" bits of entropy [y/N/ /+/-/q/?] ? ", 'n'))) {
+ case 'y':
+@@ -2380,7 +2380,7 @@
+ version = VERSION_1_7;
+ }
+
+- if (arg_verbose > 1) printf("read in %u entries\n", entries.size());
++ if (arg_verbose > 1) printf("read in %lu entries\n", static_cast<unsigned long>(entries.size()));
+
+ opened = true;
+ return true;
+@@ -2601,7 +2601,7 @@
+ for (matches_t::const_iterator i=matches.begin(); i!=matches.end() && count < 3; ++i, ++count)
+ printf("%s%s", (count?", ":""), (*i)->groupname().c_str());
+ if (count != matches.size())
+- printf(", ... (%u more) ", matches.size()-3);
++ printf(", ... (%lu more) ", static_cast<unsigned long>(matches.size()-3));
+ printf(".\n");
+ throw FailEx();
+ }
+@@ -2637,7 +2637,7 @@
+ // print out the UUID too
+ fprintf(outfile, "%s\n", formatuuid(e.uuid).c_str());
+ if (!e.extras.empty())
+- fprintf(outfile, "and %u unknown extra fields\n", e.extras.size());
++ fprintf(outfile, "and %lu unknown extra fields\n", static_cast<unsigned long>(e.extras.size()));
+ }
+ } else
+ // just print out the name
diff --git a/app-misc/pwsafe/metadata.xml b/app-misc/pwsafe/metadata.xml
new file mode 100644
index 000000000000..6fcce0a560fe
--- /dev/null
+++ b/app-misc/pwsafe/metadata.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>chead@chead.ca</email>
+ <name>Christopher Head</name>
+ <description>Proxy maintainer, assign bugs</description>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <longdescription lang="en">
+ pwsafe is a commandline password database utility compatible with
+ Counterpane's Password Safe. It is compatible with Counterpane Password
+ Safe 1.9.x and 2.0 databases. It can interact with X11 selection and
+ clipboard.
+ </longdescription>
+ <upstream>
+ <maintainer>
+ <email>ndade@nsd.dyndns.org</email>
+ <name>Nicolas Dade</name>
+ </maintainer>
+ <remote-id type="sourceforge">pwsafe</remote-id>
+ <remote-id type="github">nsd20463/pwsafe</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/app-misc/pwsafe/pwsafe-0.2.0-r2.ebuild b/app-misc/pwsafe/pwsafe-0.2.0-r2.ebuild
new file mode 100644
index 000000000000..43c603b050b4
--- /dev/null
+++ b/app-misc/pwsafe/pwsafe-0.2.0-r2.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+inherit base eutils
+
+DESCRIPTION="A Password Safe compatible command-line password manager"
+HOMEPAGE="http://nsd.dyndns.org/pwsafe/"
+SRC_URI="http://nsd.dyndns.org/pwsafe/releases/${P}.tar.gz"
+PATCHES=(
+ "${FILESDIR}/${P}-cvs-1.57.patch"
+ "${FILESDIR}/${P}-printf.patch"
+ "${FILESDIR}/${P}-fake-readline.patch"
+ "${FILESDIR}/${P}-man-page-option-syntax.patch"
+ "${FILESDIR}/${P}-XChangeProperty.patch"
+ )
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE="X readline"
+
+DEPEND="sys-libs/ncurses
+ dev-libs/openssl
+ readline? ( sys-libs/readline )
+ X? ( x11-libs/libSM
+ x11-libs/libICE
+ x11-libs/libXmu
+ x11-libs/libX11 )"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+ econf $(use_with X x) $(use_with readline)
+}
+
+src_install() {
+ doman pwsafe.1
+ dobin pwsafe
+ dodoc README NEWS
+}
diff --git a/app-misc/pwsafe/pwsafe-0.2.0-r4.ebuild b/app-misc/pwsafe/pwsafe-0.2.0-r4.ebuild
new file mode 100644
index 000000000000..0ced0a097b81
--- /dev/null
+++ b/app-misc/pwsafe/pwsafe-0.2.0-r4.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+DESCRIPTION="A Password Safe compatible command-line password manager"
+HOMEPAGE="http://nsd.dyndns.org/pwsafe/"
+SRC_URI="http://nsd.dyndns.org/pwsafe/releases/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+
+IUSE="X libressl readline"
+
+DEPEND="sys-libs/ncurses:0=
+ !libressl? ( dev-libs/openssl:0= )
+ libressl? ( dev-libs/libressl:0= )
+ readline? ( sys-libs/readline:0= )
+ X? ( x11-libs/libSM
+ x11-libs/libICE
+ x11-libs/libXmu
+ x11-libs/libX11 )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ eapply -p0 "${FILESDIR}/${P}-cvs-1.57.patch"
+ eapply -p0 "${FILESDIR}/${P}-printf.patch"
+ eapply -p0 "${FILESDIR}/${P}-fake-readline.patch"
+ eapply -p0 "${FILESDIR}/${P}-man-page-option-syntax.patch"
+ eapply -p0 "${FILESDIR}/${P}-XChangeProperty.patch"
+ eapply_user
+}
+
+src_configure() {
+ econf $(use_with X x) $(use_with readline)
+}
+
+src_install() {
+ doman pwsafe.1
+ dobin pwsafe
+ dodoc README NEWS
+}