summaryrefslogtreecommitdiff
path: root/community/pwsafe
diff options
context:
space:
mode:
Diffstat (limited to 'community/pwsafe')
-rw-r--r--community/pwsafe/PKGBUILD35
-rw-r--r--community/pwsafe/pwsafe-XChangeProperty.patch20
2 files changed, 55 insertions, 0 deletions
diff --git a/community/pwsafe/PKGBUILD b/community/pwsafe/PKGBUILD
new file mode 100644
index 000000000..2a4535a27
--- /dev/null
+++ b/community/pwsafe/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 69267 2012-04-11 11:46:13Z lcarlier $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Vesa Kaihlavirta <vegai@iki.fi>
+
+pkgname=pwsafe
+pkgver=0.2.0
+pkgrel=8
+pkgdesc="A commandline program for managing encrypted password databases"
+arch=('i686' 'x86_64')
+url="http://nsd.dyndns.org/pwsafe/"
+license=('GPL')
+depends=('openssl' 'libxmu' 'readline')
+source=(${url}/releases/${pkgname}-${pkgver}.tar.gz
+ pwsafe-XChangeProperty.patch)
+md5sums=('4bb36538a2772ecbf1a542bc7d4746c0'
+ 'cff6aee2e43f5fbe82e8cd7ccfefb099')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # Patch from fedora, fixes FS#28339
+ patch -Np0 -i ../pwsafe-XChangeProperty.patch
+
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR=${pkgdir} install
+
+ # Make pwsafe suid root so it can seed rng as a user
+ chmod +s ${pkgdir}/usr/bin/pwsafe
+}
diff --git a/community/pwsafe/pwsafe-XChangeProperty.patch b/community/pwsafe/pwsafe-XChangeProperty.patch
new file mode 100644
index 000000000..6758a573d
--- /dev/null
+++ b/community/pwsafe/pwsafe-XChangeProperty.patch
@@ -0,0 +1,20 @@
+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) {