summaryrefslogtreecommitdiff
path: root/tests/gpg/start-stop-agent
blob: ab47d8d99ac7b00182acd8143997d64f5dcc18e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/sh
# Copyright (C) 2013 g10 Code GmbH
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.  This file is
# distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY, to the extent permitted by law; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

if [ -z "$(command -v gpg-connect-agent)" ]; then
   echo "gpg-agent not installed and thus not started" >&2
   exit 0;
fi

GPG_AGENT_INFO=
export GPG_AGENT_INFO

token=$(echo "gpgme-$(pwd)" | tr ' ' '_')

if [ "$1" = "--stop" ]; then
  if [ "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
        != "D set" ]; then
    echo "gpg-agent not running" >&2
    exit 0
  fi
  echo "stopping gpg-agent " >&2
  gpg-connect-agent KILLAGENT /bye >/dev/null 2>&1
  exit 0
fi

if [ "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
      = "D set" ]; then
  echo "gpg-agent already running" >&2
  exit 0
fi

echo "starting gpg-agent " >&2
gpg-connect-agent putval\ $token\ set /bye >/dev/null 2>&1
if [ "$(gpg-connect-agent getval\ $token /bye 2>/dev/null | head -1)" \
      != "D set" ]; then
  echo "error starting gpg-agent" >&2
  exit 1
fi
exit 0