summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Roessler <roessler@does-not-exist.org>2002-02-11 17:31:53 +0000
committerThomas Roessler <roessler@does-not-exist.org>2002-02-11 17:31:53 +0000
commitba1b8e04583a4e423e9754b204c988632bf3dc88 (patch)
treeca4f3fac81e49c2816863f7d909bc2a28e89dcd0
parent6a384e33913d5c7b57b853d30fe46b2fb6f7152a (diff)
This patch gets rid of an ugly static variable in smime.c. (From
Mike Schiraldi.)
-rw-r--r--smime.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/smime.c b/smime.c
index b207483a..818d6e39 100644
--- a/smime.c
+++ b/smime.c
@@ -73,7 +73,7 @@ char SmimePass[STRING];
time_t SmimeExptime = 0; /* when does the cached passphrase expire? */
-static char SmimeKeyToUse[_POSIX_PATH_MAX];
+static char SmimeKeyToUse[_POSIX_PATH_MAX] = { 0 };
static char SmimeCertToUse[_POSIX_PATH_MAX];
static char SmimeIntermediateToUse[_POSIX_PATH_MAX];
@@ -700,7 +700,6 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public, short m
the reuquired key is different from SmimeSignAs.
*/
-static int SmimeFirstTime = 1; /* sucks... */
void _smime_getkeys (char *mailbox)
{
char *k = smime_get_field_from_db (mailbox, NULL, 0, 0); /* XXX - or sohuld we ask? */
@@ -718,15 +717,14 @@ void _smime_getkeys (char *mailbox)
k[mutt_strlen (k)-1] = '\0';
/* the key used last time. */
- if (!SmimeFirstTime &&
- !mutt_strcasecmp (k, SmimeKeyToUse + mutt_strlen (SmimeKeys)+1))
+ if (*SmimeKeyToUse &&
+ !mutt_strcasecmp (k, SmimeKeyToUse + mutt_strlen (SmimeKeys)+1))
{
safe_free ((void **) &k);
return;
}
else smime_void_passphrase ();
- SmimeFirstTime = 0;
snprintf (SmimeKeyToUse, sizeof (SmimeKeyToUse), "%s/%s",
NONULL(SmimeKeys), k);
@@ -748,12 +746,15 @@ void _smime_getkeys (char *mailbox)
return;
}
- if (!SmimeFirstTime && !mutt_strcasecmp (SmimeSignAs, SmimeKeyToUse +
- mutt_strlen (SmimeKeys)+1))
- return;
- else if (!SmimeFirstTime) smime_void_passphrase ();
- else if (SmimeFirstTime) SmimeFirstTime = 0;
-
+ if (*SmimeKeyToUse)
+ {
+ if (!mutt_strcasecmp (SmimeSignAs,
+ SmimeKeyToUse + mutt_strlen (SmimeKeys)+1))
+ return;
+
+ smime_void_passphrase ();
+ }
+
snprintf (SmimeKeyToUse, sizeof (SmimeKeyToUse), "%s/%s",
NONULL (SmimeKeys), SmimeSignAs);