jaromail

a commandline tool to easily and privately handle your e-mail
git clone git://parazyd.org/jaromail.git
Log | Files | Refs | Submodules | README

commit b6c59d34bbe86cb8178592d722a60762d97eb143
parent b373cd5ea8b4ee0a4519d31a5060133cd019b40d
Author: Jaromil <jaromil@dyne.org>
Date:   Thu, 17 May 2012 21:57:02 +0200

source reorganization
gnome keyring manager

Diffstat:
Mbuild-gnu.sh | 2+-
Mbuild-osx.sh | 4++--
Minstall.sh | 10+++++-----
Raux/MailToMutt/Info.plist -> src/MailToMutt/Info.plist | 0
Raux/MailToMutt/MailToMutt.entitlements -> src/MailToMutt/MailToMutt.entitlements | 0
Raux/MailToMutt/MailToMutt.xcodeproj/project.pbxproj -> src/MailToMutt/MailToMutt.xcodeproj/project.pbxproj | 0
Raux/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/contents.xcworkspacedata -> src/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/contents.xcworkspacedata | 0
Raux/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate -> src/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate | 0
Raux/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/MailToMutt.xcscheme -> src/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/MailToMutt.xcscheme | 0
Raux/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist -> src/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist | 0
Raux/MailToMutt/MailtoMutt_Prefix.pch -> src/MailToMutt/MailtoMutt_Prefix.pch | 0
Raux/MailToMutt/MainMenu.xib -> src/MailToMutt/MainMenu.xib | 0
Raux/MailToMutt/Mutt.h -> src/MailToMutt/Mutt.h | 0
Raux/MailToMutt/Mutt.m -> src/MailToMutt/Mutt.m | 0
Raux/MailToMutt/NSStringExt.h -> src/MailToMutt/NSStringExt.h | 0
Raux/MailToMutt/NSStringExt.m -> src/MailToMutt/NSStringExt.m | 0
Raux/MailToMutt/URLHandler.h -> src/MailToMutt/URLHandler.h | 0
Raux/MailToMutt/URLHandler.m -> src/MailToMutt/URLHandler.m | 0
Raux/MailToMutt/main.m -> src/MailToMutt/main.m | 0
Asrc/gnome-keyring/jaro-gnome-keyring.c | 173+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/jaro | 3++-
Raux/lbdb-ABQuery/ABQuery.m -> src/lbdb-ABQuery/ABQuery.m | 0
Raux/lbdb-ABQuery/ABQuery_Prefix.h -> src/lbdb-ABQuery/ABQuery_Prefix.h | 0
Raux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.pbxproj -> src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.pbxproj | 0
Raux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/contents.xcworkspacedata -> src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/contents.xcworkspacedata | 0
Raux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate -> src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate | 0
Raux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/lbdb-ABQuery.xcscheme -> src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/lbdb-ABQuery.xcscheme | 0
Raux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist -> src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist | 0
Rshare/lbdb/COPYING -> src/lbdb/COPYING | 0
Rshare/lbdb/README -> src/lbdb/README | 0
Rshare/lbdb/dotlock.c -> src/lbdb/dotlock.c | 0
Rshare/lbdb/dotlock.h -> src/lbdb/dotlock.h | 0
Rshare/lbdb/fetchaddr.c -> src/lbdb/fetchaddr.c | 0
Rshare/lbdb/helpers.c -> src/lbdb/helpers.c | 0
Rshare/lbdb/helpers.h -> src/lbdb/helpers.h | 0
Rshare/lbdb/lbdb-fetchaddr.man.in -> src/lbdb/lbdb-fetchaddr.man.in | 0
Rshare/lbdb/lbdb-fetchaddr.sh.in -> src/lbdb/lbdb-fetchaddr.sh.in | 0
Rshare/lbdb/lbdb-munge.sh.in -> src/lbdb/lbdb-munge.sh.in | 0
Rshare/lbdb/lbdb.rc.in -> src/lbdb/lbdb.rc.in | 0
Rshare/lbdb/lbdb.spec.in -> src/lbdb/lbdb.spec.in | 0
Rshare/lbdb/lbdb_lib.sh.in -> src/lbdb/lbdb_lib.sh.in | 0
Rshare/lbdb/lbdbq.man.in -> src/lbdb/lbdbq.man.in | 0
Rshare/lbdb/lbdbq.sh.in -> src/lbdb/lbdbq.sh.in | 0
Rshare/lbdb/m_abook.sh.in -> src/lbdb/m_abook.sh.in | 0
Rshare/lbdb/m_addr_email.sh.in -> src/lbdb/m_addr_email.sh.in | 0
Rshare/lbdb/m_bbdb.sh.in -> src/lbdb/m_bbdb.sh.in | 0
Rshare/lbdb/m_evolution.sh.in -> src/lbdb/m_evolution.sh.in | 0
Rshare/lbdb/m_fido.sh.in -> src/lbdb/m_fido.sh.in | 0
Rshare/lbdb/m_finger.sh.in -> src/lbdb/m_finger.sh.in | 0
Rshare/lbdb/m_getent.sh.in -> src/lbdb/m_getent.sh.in | 0
Rshare/lbdb/m_gnomecard.sh.in -> src/lbdb/m_gnomecard.sh.in | 0
Rshare/lbdb/m_gpg.sh.in -> src/lbdb/m_gpg.sh.in | 0
Rshare/lbdb/m_inmail.sh.in -> src/lbdb/m_inmail.sh.in | 0
Rshare/lbdb/m_ldap.sh.in -> src/lbdb/m_ldap.sh.in | 0
Rshare/lbdb/m_muttalias.sh.in -> src/lbdb/m_muttalias.sh.in | 0
Rshare/lbdb/m_nispasswd.sh.in -> src/lbdb/m_nispasswd.sh.in | 0
Rshare/lbdb/m_osx_addressbook.sh.in -> src/lbdb/m_osx_addressbook.sh.in | 0
Rshare/lbdb/m_palm.sh.in -> src/lbdb/m_palm.sh.in | 0
Rshare/lbdb/m_passwd.sh.in -> src/lbdb/m_passwd.sh.in | 0
Rshare/lbdb/m_pgp2.sh.in -> src/lbdb/m_pgp2.sh.in | 0
Rshare/lbdb/m_pgp5.sh.in -> src/lbdb/m_pgp5.sh.in | 0
Rshare/lbdb/m_pine.sh.in -> src/lbdb/m_pine.sh.in | 0
Rshare/lbdb/m_vcf.sh.in -> src/lbdb/m_vcf.sh.in | 0
Rshare/lbdb/m_wanderlust.sh.in -> src/lbdb/m_wanderlust.sh.in | 0
Rshare/lbdb/m_yppasswd.sh.in -> src/lbdb/m_yppasswd.sh.in | 0
Rshare/lbdb/munge-keeporder.awk.in -> src/lbdb/munge-keeporder.awk.in | 0
Rshare/lbdb/munge.awk.in -> src/lbdb/munge.awk.in | 0
Rshare/lbdb/mutt_ldap_query.pl.in -> src/lbdb/mutt_ldap_query.pl.in | 0
Rshare/lbdb/nodelist2lbdb.man.in -> src/lbdb/nodelist2lbdb.man.in | 0
Rshare/lbdb/nodelist2lbdb.pl.in -> src/lbdb/nodelist2lbdb.pl.in | 0
Rshare/lbdb/palm_lsaddr.pl.in -> src/lbdb/palm_lsaddr.pl.in | 0
Rshare/lbdb/rfc2047.c -> src/lbdb/rfc2047.c | 0
Rshare/lbdb/rfc2047.h -> src/lbdb/rfc2047.h | 0
Rshare/lbdb/rfc822.c -> src/lbdb/rfc822.c | 0
Rshare/lbdb/rfc822.h -> src/lbdb/rfc822.h | 0
Rshare/lbdb/tac.awk.in -> src/lbdb/tac.awk.in | 0
Rshare/mutt/colors -> src/mutt/colors | 0
Rshare/mutt/crypto -> src/mutt/crypto | 0
Rshare/mutt/formats -> src/mutt/formats | 0
Rshare/mutt/general -> src/mutt/general | 0
Rshare/mutt/keybindings -> src/mutt/keybindings | 0
Rshare/procmail/COPYING -> src/procmail/COPYING | 0
Rshare/procmail/ackmail.rc -> src/procmail/ackmail.rc | 0
Rshare/procmail/comm-reply-file.rc -> src/procmail/comm-reply-file.rc | 0
Rshare/procmail/commands.rc -> src/procmail/commands.rc | 0
Rshare/procmail/correct-addr.rc -> src/procmail/correct-addr.rc | 0
Rshare/procmail/date.rc -> src/procmail/date.rc | 0
Rshare/procmail/dupcheck.rc -> src/procmail/dupcheck.rc | 0
Rshare/procmail/eg.spam-bounce-w-threshold.rc -> src/procmail/eg.spam-bounce-w-threshold.rc | 0
Rshare/procmail/gen-spam-reply.rc -> src/procmail/gen-spam-reply.rc | 0
Rshare/procmail/get-date.rc -> src/procmail/get-date.rc | 0
Rshare/procmail/get-from.rc -> src/procmail/get-from.rc | 0
Rshare/procmail/guess-mua.rc -> src/procmail/guess-mua.rc | 0
Rshare/procmail/headers.rc -> src/procmail/headers.rc | 0
Rshare/procmail/list-addr.rc -> src/procmail/list-addr.rc | 0
Rshare/procmail/newsgate.rc -> src/procmail/newsgate.rc | 0
Rshare/procmail/pf-check.rc -> src/procmail/pf-check.rc | 0
Rshare/procmail/pf-chkto.rc -> src/procmail/pf-chkto.rc | 0
Rshare/procmail/pf-save.rc -> src/procmail/pf-save.rc | 0
Rshare/procmail/pm-jaaddr.rc -> src/procmail/pm-jaaddr.rc | 0
Rshare/procmail/pm-jabup.rc -> src/procmail/pm-jabup.rc | 0
Rshare/procmail/pm-jacookie.rc -> src/procmail/pm-jacookie.rc | 0
Rshare/procmail/pm-jacookie1.rc -> src/procmail/pm-jacookie1.rc | 0
Rshare/procmail/pm-jacron.rc -> src/procmail/pm-jacron.rc | 0
Rshare/procmail/pm-jadaemon.rc -> src/procmail/pm-jadaemon.rc | 0
Rshare/procmail/pm-jadate.rc -> src/procmail/pm-jadate.rc | 0
Rshare/procmail/pm-jadate1.rc -> src/procmail/pm-jadate1.rc | 0
Rshare/procmail/pm-jadate2.rc -> src/procmail/pm-jadate2.rc | 0
Rshare/procmail/pm-jadate3.rc -> src/procmail/pm-jadate3.rc | 0
Rshare/procmail/pm-jadate4.rc -> src/procmail/pm-jadate4.rc | 0
Rshare/procmail/pm-jadate5.rc -> src/procmail/pm-jadate5.rc | 0
Rshare/procmail/pm-jadup.rc -> src/procmail/pm-jadup.rc | 0
Rshare/procmail/pm-jaempty.rc -> src/procmail/pm-jaempty.rc | 0
Rshare/procmail/pm-jafrom.rc -> src/procmail/pm-jafrom.rc | 0
Rshare/procmail/pm-jafwd.rc -> src/procmail/pm-jafwd.rc | 0
Rshare/procmail/pm-jalist.rc -> src/procmail/pm-jalist.rc | 0
Rshare/procmail/pm-jamime-decode.rc -> src/procmail/pm-jamime-decode.rc | 0
Rshare/procmail/pm-jamime-kill.rc -> src/procmail/pm-jamime-kill.rc | 0
Rshare/procmail/pm-jamime-recode.rc -> src/procmail/pm-jamime-recode.rc | 0
Rshare/procmail/pm-jamime-save.rc -> src/procmail/pm-jamime-save.rc | 0
Rshare/procmail/pm-jamime.rc -> src/procmail/pm-jamime.rc | 0
Rshare/procmail/pm-janetmind.rc -> src/procmail/pm-janetmind.rc | 0
Rshare/procmail/pm-janslookup.rc -> src/procmail/pm-janslookup.rc | 0
Rshare/procmail/pm-jaorig.rc -> src/procmail/pm-jaorig.rc | 0
Rshare/procmail/pm-japing.rc -> src/procmail/pm-japing.rc | 0
Rshare/procmail/pm-japop3.rc -> src/procmail/pm-japop3.rc | 0
Rshare/procmail/pm-jarandf.rc -> src/procmail/pm-jarandf.rc | 0
Rshare/procmail/pm-jasrv-check.rc -> src/procmail/pm-jasrv-check.rc | 0
Rshare/procmail/pm-jasrv-daemon.rc -> src/procmail/pm-jasrv-daemon.rc | 0
Rshare/procmail/pm-jasrv-err.rc -> src/procmail/pm-jasrv-err.rc | 0
Rshare/procmail/pm-jasrv-from.rc -> src/procmail/pm-jasrv-from.rc | 0
Rshare/procmail/pm-jasrv-msg.rc -> src/procmail/pm-jasrv-msg.rc | 0
Rshare/procmail/pm-jasrv-multi.rc -> src/procmail/pm-jasrv-multi.rc | 0
Rshare/procmail/pm-jasrv-req.rc -> src/procmail/pm-jasrv-req.rc | 0
Rshare/procmail/pm-jasrv-send.rc -> src/procmail/pm-jasrv-send.rc | 0
Rshare/procmail/pm-jasrv.rc -> src/procmail/pm-jasrv.rc | 0
Rshare/procmail/pm-jastore.rc -> src/procmail/pm-jastore.rc | 0
Rshare/procmail/pm-jasubject.rc -> src/procmail/pm-jasubject.rc | 0
Rshare/procmail/pm-jatime.rc -> src/procmail/pm-jatime.rc | 0
Rshare/procmail/pm-jaube-keywords.rc -> src/procmail/pm-jaube-keywords.rc | 0
Rshare/procmail/pm-jaube-prg-annoyance-filter.rc -> src/procmail/pm-jaube-prg-annoyance-filter.rc | 0
Rshare/procmail/pm-jaube-prg-bmf.rc -> src/procmail/pm-jaube-prg-bmf.rc | 0
Rshare/procmail/pm-jaube-prg-bogofilter.rc -> src/procmail/pm-jaube-prg-bogofilter.rc | 0
Rshare/procmail/pm-jaube-prg-bsfilter.rc -> src/procmail/pm-jaube-prg-bsfilter.rc | 0
Rshare/procmail/pm-jaube-prg-ifile.rc -> src/procmail/pm-jaube-prg-ifile.rc | 0
Rshare/procmail/pm-jaube-prg-runall.rc -> src/procmail/pm-jaube-prg-runall.rc | 0
Rshare/procmail/pm-jaube-prg-spamassassin.rc -> src/procmail/pm-jaube-prg-spamassassin.rc | 0
Rshare/procmail/pm-jaube-prg-spamoracle.rc -> src/procmail/pm-jaube-prg-spamoracle.rc | 0
Rshare/procmail/pm-jaube-prg-spamprobe.rc -> src/procmail/pm-jaube-prg-spamprobe.rc | 0
Rshare/procmail/pm-jaube.rc -> src/procmail/pm-jaube.rc | 0
Rshare/procmail/pm-jaube1.rc -> src/procmail/pm-jaube1.rc | 0
Rshare/procmail/pm-javac.rc -> src/procmail/pm-javac.rc | 0
Rshare/procmail/pm-javar.rc -> src/procmail/pm-javar.rc | 0
Rshare/procmail/unread-default.rc -> src/procmail/unread-default.rc | 0
Rshare/procmail/unread-mh.rc -> src/procmail/unread-mh.rc | 0
155 files changed, 183 insertions(+), 9 deletions(-)

diff --git a/build-gnu.sh b/build-gnu.sh @@ -18,7 +18,7 @@ case $distro in which wipe || sudo apt-get install wipe echo "All dependencies installed" echo -n "Compiling a few sources... " - cd share/lbdb + cd src/lbdb echo -n "dotlock " [ -x dotlock ] || gcc -O2 -o dotlock dotlock.c echo "fetchaddr" diff --git a/build-osx.sh b/build-osx.sh @@ -71,10 +71,10 @@ EOF notice "Building Jaro Mail binary stash for Apple/OSX" act "lbdb address book module" -cd aux/lbdb-ABQuery +cd src/lbdb-ABQuery xcodebuild > /dev/null cd - -cp aux/lbdb-ABQuery/build/Release/lbdb-ABQuery build/osx/ABQuery +cp src/lbdb-ABQuery/build/Release/lbdb-ABQuery build/osx/ABQuery copydeps bin/mutt copydeps bin/msmtp diff --git a/install.sh b/install.sh @@ -147,24 +147,24 @@ fi # so overwriting it won't hurt act "Installing procmail scripts" ${=mkdir} $PROCMAILDIR -cp -a share/procmail/* $PROCMAILDIR +cp -a src/procmail/* $PROCMAILDIR # also mutt is safe to override ${=mkdir} $MUTTDIR -cp -a share/mutt/* $MUTTDIR +cp -a src/mutt/* $MUTTDIR act "Installing little brother database" # safe to override ${=mkdir} $WORKDIR/.lbdb for aw in munge.awk.in munge-keeporder.awk.in tac.awk.in; do dst=`echo $aw | sed -e 's/.awk.in$//'` - cat share/lbdb/$aw \ + cat src/lbdb/$aw \ | sed -e "s&@AWK@&`which awk`&g" \ > $WORKDIR/.lbdb/$dst done for sh in lbdb-fetchaddr.sh.in lbdb-munge.sh.in lbdb_lib.sh.in lbdbq.sh.in; do dst=`echo $sh | sed -e 's/.sh.in$//'` - cat share/lbdb/$sh \ + cat src/lbdb/$sh \ | sed -e "s&@SH@&/usr/bin/env zsh&g" \ | sed -e "s&@DOTLOCK@&mutt_dotlock&g" \ | sed -e "s&@LBDB_FILE&${WORKDIR}/.lbdb/m_inmail.list&g" \ @@ -179,7 +179,7 @@ for sh in lbdb-fetchaddr.sh.in lbdb-munge.sh.in lbdb_lib.sh.in lbdbq.sh.in; do done lbdb_modules=(m_finger m_gpg m_inmail m_muttalias m_osx_addressbook m_vcf) for mod in ${lbdb_modules}; do - cat share/lbdb/${mod}.sh.in \ + cat src/lbdb/${mod}.sh.in \ | sed -e "s&@SH@&/usr/bin/env zsh&g" \ | sed -e "s&@LBDB_VERSION@&0.38-jaromail&g" \ | sed -e "s&@prefix@&${WORKDIR}/.lbdb&g" \ diff --git a/aux/MailToMutt/Info.plist b/src/MailToMutt/Info.plist diff --git a/aux/MailToMutt/MailToMutt.entitlements b/src/MailToMutt/MailToMutt.entitlements diff --git a/aux/MailToMutt/MailToMutt.xcodeproj/project.pbxproj b/src/MailToMutt/MailToMutt.xcodeproj/project.pbxproj diff --git a/aux/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/src/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/aux/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate b/src/MailToMutt/MailToMutt.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ. diff --git a/aux/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/MailToMutt.xcscheme b/src/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/MailToMutt.xcscheme diff --git a/aux/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist b/src/MailToMutt/MailToMutt.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/aux/MailToMutt/MailtoMutt_Prefix.pch b/src/MailToMutt/MailtoMutt_Prefix.pch diff --git a/aux/MailToMutt/MainMenu.xib b/src/MailToMutt/MainMenu.xib diff --git a/aux/MailToMutt/Mutt.h b/src/MailToMutt/Mutt.h diff --git a/aux/MailToMutt/Mutt.m b/src/MailToMutt/Mutt.m diff --git a/aux/MailToMutt/NSStringExt.h b/src/MailToMutt/NSStringExt.h diff --git a/aux/MailToMutt/NSStringExt.m b/src/MailToMutt/NSStringExt.m diff --git a/aux/MailToMutt/URLHandler.h b/src/MailToMutt/URLHandler.h diff --git a/aux/MailToMutt/URLHandler.m b/src/MailToMutt/URLHandler.m diff --git a/aux/MailToMutt/main.m b/src/MailToMutt/main.m diff --git a/src/gnome-keyring/jaro-gnome-keyring.c b/src/gnome-keyring/jaro-gnome-keyring.c @@ -0,0 +1,173 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <glib.h> +#include <glib/gprintf.h> +#include <gnome-keyring.h> + +static GnomeKeyringPasswordSchema git_schema = { + GNOME_KEYRING_ITEM_GENERIC_SECRET, + { + { "protocol", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING }, + { "host", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING }, + { "path", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING }, + { "username", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING }, + { NULL, 0 }, + } +}; + +typedef struct git_credential { + gchar *protocol; + gchar *host; + gchar *path; + gchar *username; + gchar *password; +} git_credential_t; + +static void +error(const char *err, ...) +{ + char msg[4096]; + va_list params; + + va_start(params, err); + vsnprintf(msg, sizeof(msg), err, params); + fprintf(stderr, "%s\n", msg); + va_end(params); +} + +static void +get_password(git_credential_t *cred) +{ + GnomeKeyringResult keyres; + gchar *pass = NULL; + + keyres = gnome_keyring_find_password_sync(&git_schema, + &pass, + "protocol", cred->protocol, + "host", cred->host, + "path", cred->path, + "username", cred->username, + NULL); + if (keyres != GNOME_KEYRING_RESULT_OK) { + return; + } + g_printf("password=%s\n", pass); + gnome_keyring_free_password(pass); +} + +static void +store_password(git_credential_t *cred) +{ + gchar desc[1024]; + GnomeKeyringResult keyres; + + /* Only store complete credentials */ + if (!cred->protocol || !cred->host || + !cred->username || !cred->password) + return; + + g_snprintf(desc, sizeof(desc), "Git %s", cred->host); + keyres = gnome_keyring_store_password_sync(&git_schema, + GNOME_KEYRING_DEFAULT, + desc, + cred->password, + "protocol", cred->protocol, + "host", cred->host, + "path", cred->path, + "username", cred->username, + NULL); + if (keyres != GNOME_KEYRING_RESULT_OK) { + error("failed to store password"); + return; + } +} + +static void +erase_password(git_credential_t *cred) +{ + GnomeKeyringResult keyres; + + keyres = gnome_keyring_delete_password_sync(&git_schema, + "protocol", cred->protocol, + "host", cred->host, + "path", cred->path, + "username", cred->username, + NULL); + if (keyres != GNOME_KEYRING_RESULT_OK) { + error("failed to delete password"); + return; + } +} + +static int +read_credential(git_credential_t *cred) +{ + char buf[1024]; + + while (fgets(buf, sizeof(buf), stdin)) { + char *v; + + if (strcmp(buf, "\n") == 0) + break; + + buf[strlen(buf) - 1] = '\0'; + v = strchr(buf, '='); + if (!v) { + error("bad input: %s", buf); + return -1; + } + *v++ = '\0'; + +#define SET_CRED_ATTR(name) do { \ + if (strcmp(buf, #name) == 0) { \ + cred->name = g_strdup(v); \ + } \ +} while (0) + SET_CRED_ATTR(protocol); + SET_CRED_ATTR(host); + SET_CRED_ATTR(path); + SET_CRED_ATTR(username); + SET_CRED_ATTR(password); + } + return 0; +} + +static void +clear_credential(git_credential_t *cred) +{ + if (cred->protocol) g_free(cred->protocol); + if (cred->host) g_free(cred->host); + if (cred->path) g_free(cred->path); + if (cred->username) g_free(cred->username); + if (cred->password) gnome_keyring_free_password(cred->password); +} + +int +main(int argc, const char **argv) +{ + git_credential_t cred = {0}; + + if (argc < 2) { + error("Usage: git credential-gnomekeyring <get|store|erase>"); + return 1; + } + + if (read_credential(&cred)) { + clear_credential(&cred); + return 1; + } + + if (strcmp(argv[1], "get") == 0) { + get_password(&cred); + } + else if (strcmp(argv[1], "store") == 0) { + store_password(&cred); + } + else if (strcmp(argv[1], "erase") == 0) { + erase_password(&cred); + } + clear_credential(&cred); + + return 0; +} diff --git a/src/jaro b/src/jaro @@ -141,7 +141,7 @@ check_bin() { which wipe > /dev/null if [ $? = 0 ]; then rm="wipe -f -s -q -R /dev/urandom" else which srm > /dev/null - if [ $? = 0 ]; then rm="srm -f -l" + if [ $? = 0 ]; then rm="srm -m" else rm="rm -f"; fi fi } @@ -476,6 +476,7 @@ EOF # archive old procmail log if [ -r $WORKDIR/log/procmail.log ]; then touch $WORKDIR/log/procmail-${datestamp}.log + chmod 700 $WORKDIR/log/procmail-${datestamp}.log cat $WORKDIR/log/procmail.log \ >> $WORKDIR/log/procmail-${datestamp}.log rm -f $WORKDIR/log/procmail.log diff --git a/aux/lbdb-ABQuery/ABQuery.m b/src/lbdb-ABQuery/ABQuery.m diff --git a/aux/lbdb-ABQuery/ABQuery_Prefix.h b/src/lbdb-ABQuery/ABQuery_Prefix.h diff --git a/aux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.pbxproj b/src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.pbxproj diff --git a/aux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/aux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate b/src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/project.xcworkspace/xcuserdata/jaromil.xcuserdatad/UserInterfaceState.xcuserstate Binary files differ. diff --git a/aux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/lbdb-ABQuery.xcscheme b/src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/lbdb-ABQuery.xcscheme diff --git a/aux/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist b/src/lbdb-ABQuery/lbdb-ABQuery.xcodeproj/xcuserdata/jaromil.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/share/lbdb/COPYING b/src/lbdb/COPYING diff --git a/share/lbdb/README b/src/lbdb/README diff --git a/share/lbdb/dotlock.c b/src/lbdb/dotlock.c diff --git a/share/lbdb/dotlock.h b/src/lbdb/dotlock.h diff --git a/share/lbdb/fetchaddr.c b/src/lbdb/fetchaddr.c diff --git a/share/lbdb/helpers.c b/src/lbdb/helpers.c diff --git a/share/lbdb/helpers.h b/src/lbdb/helpers.h diff --git a/share/lbdb/lbdb-fetchaddr.man.in b/src/lbdb/lbdb-fetchaddr.man.in diff --git a/share/lbdb/lbdb-fetchaddr.sh.in b/src/lbdb/lbdb-fetchaddr.sh.in diff --git a/share/lbdb/lbdb-munge.sh.in b/src/lbdb/lbdb-munge.sh.in diff --git a/share/lbdb/lbdb.rc.in b/src/lbdb/lbdb.rc.in diff --git a/share/lbdb/lbdb.spec.in b/src/lbdb/lbdb.spec.in diff --git a/share/lbdb/lbdb_lib.sh.in b/src/lbdb/lbdb_lib.sh.in diff --git a/share/lbdb/lbdbq.man.in b/src/lbdb/lbdbq.man.in diff --git a/share/lbdb/lbdbq.sh.in b/src/lbdb/lbdbq.sh.in diff --git a/share/lbdb/m_abook.sh.in b/src/lbdb/m_abook.sh.in diff --git a/share/lbdb/m_addr_email.sh.in b/src/lbdb/m_addr_email.sh.in diff --git a/share/lbdb/m_bbdb.sh.in b/src/lbdb/m_bbdb.sh.in diff --git a/share/lbdb/m_evolution.sh.in b/src/lbdb/m_evolution.sh.in diff --git a/share/lbdb/m_fido.sh.in b/src/lbdb/m_fido.sh.in diff --git a/share/lbdb/m_finger.sh.in b/src/lbdb/m_finger.sh.in diff --git a/share/lbdb/m_getent.sh.in b/src/lbdb/m_getent.sh.in diff --git a/share/lbdb/m_gnomecard.sh.in b/src/lbdb/m_gnomecard.sh.in diff --git a/share/lbdb/m_gpg.sh.in b/src/lbdb/m_gpg.sh.in diff --git a/share/lbdb/m_inmail.sh.in b/src/lbdb/m_inmail.sh.in diff --git a/share/lbdb/m_ldap.sh.in b/src/lbdb/m_ldap.sh.in diff --git a/share/lbdb/m_muttalias.sh.in b/src/lbdb/m_muttalias.sh.in diff --git a/share/lbdb/m_nispasswd.sh.in b/src/lbdb/m_nispasswd.sh.in diff --git a/share/lbdb/m_osx_addressbook.sh.in b/src/lbdb/m_osx_addressbook.sh.in diff --git a/share/lbdb/m_palm.sh.in b/src/lbdb/m_palm.sh.in diff --git a/share/lbdb/m_passwd.sh.in b/src/lbdb/m_passwd.sh.in diff --git a/share/lbdb/m_pgp2.sh.in b/src/lbdb/m_pgp2.sh.in diff --git a/share/lbdb/m_pgp5.sh.in b/src/lbdb/m_pgp5.sh.in diff --git a/share/lbdb/m_pine.sh.in b/src/lbdb/m_pine.sh.in diff --git a/share/lbdb/m_vcf.sh.in b/src/lbdb/m_vcf.sh.in diff --git a/share/lbdb/m_wanderlust.sh.in b/src/lbdb/m_wanderlust.sh.in diff --git a/share/lbdb/m_yppasswd.sh.in b/src/lbdb/m_yppasswd.sh.in diff --git a/share/lbdb/munge-keeporder.awk.in b/src/lbdb/munge-keeporder.awk.in diff --git a/share/lbdb/munge.awk.in b/src/lbdb/munge.awk.in diff --git a/share/lbdb/mutt_ldap_query.pl.in b/src/lbdb/mutt_ldap_query.pl.in diff --git a/share/lbdb/nodelist2lbdb.man.in b/src/lbdb/nodelist2lbdb.man.in diff --git a/share/lbdb/nodelist2lbdb.pl.in b/src/lbdb/nodelist2lbdb.pl.in diff --git a/share/lbdb/palm_lsaddr.pl.in b/src/lbdb/palm_lsaddr.pl.in diff --git a/share/lbdb/rfc2047.c b/src/lbdb/rfc2047.c diff --git a/share/lbdb/rfc2047.h b/src/lbdb/rfc2047.h diff --git a/share/lbdb/rfc822.c b/src/lbdb/rfc822.c diff --git a/share/lbdb/rfc822.h b/src/lbdb/rfc822.h diff --git a/share/lbdb/tac.awk.in b/src/lbdb/tac.awk.in diff --git a/share/mutt/colors b/src/mutt/colors diff --git a/share/mutt/crypto b/src/mutt/crypto diff --git a/share/mutt/formats b/src/mutt/formats diff --git a/share/mutt/general b/src/mutt/general diff --git a/share/mutt/keybindings b/src/mutt/keybindings diff --git a/share/procmail/COPYING b/src/procmail/COPYING diff --git a/share/procmail/ackmail.rc b/src/procmail/ackmail.rc diff --git a/share/procmail/comm-reply-file.rc b/src/procmail/comm-reply-file.rc diff --git a/share/procmail/commands.rc b/src/procmail/commands.rc diff --git a/share/procmail/correct-addr.rc b/src/procmail/correct-addr.rc diff --git a/share/procmail/date.rc b/src/procmail/date.rc diff --git a/share/procmail/dupcheck.rc b/src/procmail/dupcheck.rc diff --git a/share/procmail/eg.spam-bounce-w-threshold.rc b/src/procmail/eg.spam-bounce-w-threshold.rc diff --git a/share/procmail/gen-spam-reply.rc b/src/procmail/gen-spam-reply.rc diff --git a/share/procmail/get-date.rc b/src/procmail/get-date.rc diff --git a/share/procmail/get-from.rc b/src/procmail/get-from.rc diff --git a/share/procmail/guess-mua.rc b/src/procmail/guess-mua.rc diff --git a/share/procmail/headers.rc b/src/procmail/headers.rc diff --git a/share/procmail/list-addr.rc b/src/procmail/list-addr.rc diff --git a/share/procmail/newsgate.rc b/src/procmail/newsgate.rc diff --git a/share/procmail/pf-check.rc b/src/procmail/pf-check.rc diff --git a/share/procmail/pf-chkto.rc b/src/procmail/pf-chkto.rc diff --git a/share/procmail/pf-save.rc b/src/procmail/pf-save.rc diff --git a/share/procmail/pm-jaaddr.rc b/src/procmail/pm-jaaddr.rc diff --git a/share/procmail/pm-jabup.rc b/src/procmail/pm-jabup.rc diff --git a/share/procmail/pm-jacookie.rc b/src/procmail/pm-jacookie.rc diff --git a/share/procmail/pm-jacookie1.rc b/src/procmail/pm-jacookie1.rc diff --git a/share/procmail/pm-jacron.rc b/src/procmail/pm-jacron.rc diff --git a/share/procmail/pm-jadaemon.rc b/src/procmail/pm-jadaemon.rc diff --git a/share/procmail/pm-jadate.rc b/src/procmail/pm-jadate.rc diff --git a/share/procmail/pm-jadate1.rc b/src/procmail/pm-jadate1.rc diff --git a/share/procmail/pm-jadate2.rc b/src/procmail/pm-jadate2.rc diff --git a/share/procmail/pm-jadate3.rc b/src/procmail/pm-jadate3.rc diff --git a/share/procmail/pm-jadate4.rc b/src/procmail/pm-jadate4.rc diff --git a/share/procmail/pm-jadate5.rc b/src/procmail/pm-jadate5.rc diff --git a/share/procmail/pm-jadup.rc b/src/procmail/pm-jadup.rc diff --git a/share/procmail/pm-jaempty.rc b/src/procmail/pm-jaempty.rc diff --git a/share/procmail/pm-jafrom.rc b/src/procmail/pm-jafrom.rc diff --git a/share/procmail/pm-jafwd.rc b/src/procmail/pm-jafwd.rc diff --git a/share/procmail/pm-jalist.rc b/src/procmail/pm-jalist.rc diff --git a/share/procmail/pm-jamime-decode.rc b/src/procmail/pm-jamime-decode.rc diff --git a/share/procmail/pm-jamime-kill.rc b/src/procmail/pm-jamime-kill.rc diff --git a/share/procmail/pm-jamime-recode.rc b/src/procmail/pm-jamime-recode.rc diff --git a/share/procmail/pm-jamime-save.rc b/src/procmail/pm-jamime-save.rc diff --git a/share/procmail/pm-jamime.rc b/src/procmail/pm-jamime.rc diff --git a/share/procmail/pm-janetmind.rc b/src/procmail/pm-janetmind.rc diff --git a/share/procmail/pm-janslookup.rc b/src/procmail/pm-janslookup.rc diff --git a/share/procmail/pm-jaorig.rc b/src/procmail/pm-jaorig.rc diff --git a/share/procmail/pm-japing.rc b/src/procmail/pm-japing.rc diff --git a/share/procmail/pm-japop3.rc b/src/procmail/pm-japop3.rc diff --git a/share/procmail/pm-jarandf.rc b/src/procmail/pm-jarandf.rc diff --git a/share/procmail/pm-jasrv-check.rc b/src/procmail/pm-jasrv-check.rc diff --git a/share/procmail/pm-jasrv-daemon.rc b/src/procmail/pm-jasrv-daemon.rc diff --git a/share/procmail/pm-jasrv-err.rc b/src/procmail/pm-jasrv-err.rc diff --git a/share/procmail/pm-jasrv-from.rc b/src/procmail/pm-jasrv-from.rc diff --git a/share/procmail/pm-jasrv-msg.rc b/src/procmail/pm-jasrv-msg.rc diff --git a/share/procmail/pm-jasrv-multi.rc b/src/procmail/pm-jasrv-multi.rc diff --git a/share/procmail/pm-jasrv-req.rc b/src/procmail/pm-jasrv-req.rc diff --git a/share/procmail/pm-jasrv-send.rc b/src/procmail/pm-jasrv-send.rc diff --git a/share/procmail/pm-jasrv.rc b/src/procmail/pm-jasrv.rc diff --git a/share/procmail/pm-jastore.rc b/src/procmail/pm-jastore.rc diff --git a/share/procmail/pm-jasubject.rc b/src/procmail/pm-jasubject.rc diff --git a/share/procmail/pm-jatime.rc b/src/procmail/pm-jatime.rc diff --git a/share/procmail/pm-jaube-keywords.rc b/src/procmail/pm-jaube-keywords.rc diff --git a/share/procmail/pm-jaube-prg-annoyance-filter.rc b/src/procmail/pm-jaube-prg-annoyance-filter.rc diff --git a/share/procmail/pm-jaube-prg-bmf.rc b/src/procmail/pm-jaube-prg-bmf.rc diff --git a/share/procmail/pm-jaube-prg-bogofilter.rc b/src/procmail/pm-jaube-prg-bogofilter.rc diff --git a/share/procmail/pm-jaube-prg-bsfilter.rc b/src/procmail/pm-jaube-prg-bsfilter.rc diff --git a/share/procmail/pm-jaube-prg-ifile.rc b/src/procmail/pm-jaube-prg-ifile.rc diff --git a/share/procmail/pm-jaube-prg-runall.rc b/src/procmail/pm-jaube-prg-runall.rc diff --git a/share/procmail/pm-jaube-prg-spamassassin.rc b/src/procmail/pm-jaube-prg-spamassassin.rc diff --git a/share/procmail/pm-jaube-prg-spamoracle.rc b/src/procmail/pm-jaube-prg-spamoracle.rc diff --git a/share/procmail/pm-jaube-prg-spamprobe.rc b/src/procmail/pm-jaube-prg-spamprobe.rc diff --git a/share/procmail/pm-jaube.rc b/src/procmail/pm-jaube.rc diff --git a/share/procmail/pm-jaube1.rc b/src/procmail/pm-jaube1.rc diff --git a/share/procmail/pm-javac.rc b/src/procmail/pm-javac.rc diff --git a/share/procmail/pm-javar.rc b/src/procmail/pm-javar.rc diff --git a/share/procmail/unread-default.rc b/src/procmail/unread-default.rc diff --git a/share/procmail/unread-mh.rc b/src/procmail/unread-mh.rc