*
* @authors
* Copyright (C) 1996-2000,2007 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2000,2011-2013 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
return 0;
int rc = -1;
- struct Address *a, *tmp;
+ struct Address *a = NULL, *tmp = NULL;
TAILQ_FOREACH_SAFE(a, al, entries, tmp)
{
if (mutt_str_strcasecmp(mailbox, a->mailbox) == 0)
if (!a || !b)
return;
- struct Address *aa, *ab, *tmp;
+ struct Address *aa = NULL, *ab = NULL, *tmp = NULL;
TAILQ_FOREACH_SAFE(ab, b, entries, tmp)
{
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 2006 Thomas Roessler <roessler@does-not-exist.org>
* Copyright (C) 2009 Rocco Rutte <pdmef@gmx.net>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
struct AddressList new = TAILQ_HEAD_INITIALIZER(new);
mutt_addrlist_copy(&new, al, false);
mutt_addrlist_remove_xrefs(&g->al, &new);
- struct Address *a, *tmp;
+ struct Address *a = NULL, *tmp = NULL;
TAILQ_FOREACH_SAFE(a, &new, entries, tmp)
{
mutt_addrlist_append(&g->al, a);
* @authors
* Copyright (C) 2006 Thomas Roessler <roessler@does-not-exist.org>
* Copyright (C) 2009 Rocco Rutte <pdmef@gmx.net>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
struct AddressList copy = TAILQ_HEAD_INITIALIZER(copy);
mutt_addrlist_copy(©, alias, false);
expand_aliases_r(©, expn);
- struct Address *a2, *tmp;
+ struct Address *a2 = NULL, *tmp = NULL;
TAILQ_FOREACH_SAFE(a2, ©, entries, tmp)
{
TAILQ_INSERT_BEFORE(a, a2, entries);
* @param[in] env Envelope to examine
* @param[out] pfxp Prefix for the Address, e.g. "To:"
* @retval ptr AddressList in the Envelope
+ *
+ * @note The caller must NOT free the returned AddressList
*/
struct AddressList *mutt_get_address(struct Envelope *env, const char **pfxp)
{
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2000-2004,2006 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2000,2002,2007,2010,2012 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017-2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2000,2002,2014 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2000,2010 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>
- * Copyright (C) 2018 Pietro Cerutti <gahr@gahr.ch>
+ * Copyright (C) 2018-2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2000,2010 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2000-2002 Edmund Grimley Evans <edmundo@rano.org>
- * Copyright (C) 2018 Pietro Cerutti <gahr@gahr.ch>
+ * Copyright (C) 2018-2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 2004 Thomas Glanzmann <sithglan@stud.uni-erlangen.de>
* Copyright (C) 2004 Tobias Werth <sitowert@stud.uni-erlangen.de>
* Copyright (C) 2004 Brian Fundakowski Feldman <green@FreeBSD.org>
- * Copyright (C) 2016 Pietro Cerutti <gahr@gahr.ch>
+ * Copyright (C) 2016-2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 1996-2000,2002,2007 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2016 Richard Russon <rich@flatcap.org>
* Copyright (C) 2016 Ian Zimmerman <itz@primate.net>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2002,2004,2007 Michael R. Elkins <me@mutt.org>, and others
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2002,2010,2013,2016 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 1996-2007,2010,2013 Michael R. Elkins <me@mutt.org>
* Copyright (C) 1999-2007 Thomas Roessler <roessler@does-not-exist.org>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2002,2010,2013 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-2000,2007,2010,2013 Michael R. Elkins <me@mutt.org>
* Copyright (C) 1999-2008 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 1996-2002,2010,2013 Michael R. Elkins <me@mutt.org>
* Copyright (C) 1999-2003 Thomas Roessler <roessler@does-not-exist.org>
* Copyright (C) 2016-2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 2001 Oliver Ehli <elmy@acm.org>
* Copyright (C) 2003 Werner Koch <wk@gnupg.org>
* Copyright (C) 2004 g10code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 2001 Oliver Ehli <elmy@acm.org>
* Copyright (C) 2002-2004, 2018 g10 Code GmbH
* Copyright (C) 2010,2012-2013 Michael R. Elkins <me@sigpipe.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
{
struct ListHead crypt_hook_list = STAILQ_HEAD_INITIALIZER(crypt_hook_list);
struct ListNode *crypt_hook = NULL;
- const char *keyID = NULL;
+ const char *keyid = NULL;
char *keylist = NULL;
size_t keylist_size = 0;
size_t keylist_used = 0;
if (crypt_hook)
{
- keyID = crypt_hook->data;
+ keyid = crypt_hook->data;
enum QuadOption ans = MUTT_YES;
if (!oppenc_mode && C_CryptConfirmhook)
{
- snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyID, p->mailbox);
+ snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyid, p->mailbox);
ans = mutt_yesorno(buf, MUTT_YES);
}
if (ans == MUTT_YES)
{
- if (crypt_is_numerical_keyid(keyID))
+ if (crypt_is_numerical_keyid(keyid))
{
- if (strncmp(keyID, "0x", 2) == 0)
- keyID += 2;
+ if (strncmp(keyid, "0x", 2) == 0)
+ keyid += 2;
goto bypass_selection; /* you don't see this. */
}
/* check for e-mail address */
mutt_addrlist_free_all(&hookal);
- if (strchr(keyID, '@') && (mutt_addrlist_parse(&hookal, keyID) != 0))
+ if (strchr(keyid, '@') && (mutt_addrlist_parse(&hookal, keyid) != 0))
{
mutt_addrlist_qualify(&hookal, fqdn);
p = TAILQ_FIRST(&hookal);
}
else if (!oppenc_mode)
{
- k_info = crypt_getkeybystr(keyID, KEYFLAG_CANENCRYPT, app, &forced_valid);
+ k_info = crypt_getkeybystr(keyid, KEYFLAG_CANENCRYPT, app, &forced_valid);
}
}
else if (ans == MUTT_NO)
return NULL;
}
- keyID = crypt_fpr_or_lkeyid(k_info);
+ keyid = crypt_fpr_or_lkeyid(k_info);
bypass_selection:
- keylist_size += mutt_str_strlen(keyID) + 4 + 1;
+ keylist_size += mutt_str_strlen(keyid) + 4 + 1;
mutt_mem_realloc(&keylist, keylist_size);
sprintf(keylist + keylist_used, "%s0x%s%s", keylist_used ? " " : "",
- keyID, forced_valid ? "!" : "");
+ keyid, forced_valid ? "!" : "");
keylist_used = mutt_str_strlen(keylist);
key_selected = true;
*
* @authors
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 2003 Werner Koch <wk@gnupg.org>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 2003 Werner Koch <wk@gnupg.org>
* Copyright (C) 2004 g10code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 1996-1997,2000,2010 Michael R. Elkins <me@mutt.org>
* Copyright (C) 1998-2005 Thomas Roessler <roessler@does-not-exist.org>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
{
struct ListHead crypt_hook_list = STAILQ_HEAD_INITIALIZER(crypt_hook_list);
struct ListNode *crypt_hook = NULL;
- const char *keyID = NULL;
+ const char *keyid = NULL;
char *keylist = NULL;
size_t keylist_size = 0;
size_t keylist_used = 0;
if (crypt_hook)
{
- keyID = crypt_hook->data;
+ keyid = crypt_hook->data;
enum QuadOption ans = MUTT_YES;
if (!oppenc_mode && C_CryptConfirmhook)
{
- snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyID, p->mailbox);
+ snprintf(buf, sizeof(buf), _("Use keyID = \"%s\" for %s?"), keyid, p->mailbox);
ans = mutt_yesorno(buf, MUTT_YES);
}
if (ans == MUTT_YES)
{
- if (crypt_is_numerical_keyid(keyID))
+ if (crypt_is_numerical_keyid(keyid))
{
- if (strncmp(keyID, "0x", 2) == 0)
- keyID += 2;
+ if (strncmp(keyid, "0x", 2) == 0)
+ keyid += 2;
goto bypass_selection; /* you don't see this. */
}
/* check for e-mail address */
mutt_addrlist_free_all(&hookal);
- if (strchr(keyID, '@') && (mutt_addrlist_parse(&hookal, keyID) != 0))
+ if (strchr(keyid, '@') && (mutt_addrlist_parse(&hookal, keyid) != 0))
{
mutt_addrlist_qualify(&hookal, fqdn);
p = TAILQ_FIRST(&hookal);
}
else if (!oppenc_mode)
{
- k_info = pgp_getkeybystr(keyID, KEYFLAG_CANENCRYPT, PGP_PUBRING);
+ k_info = pgp_getkeybystr(keyid, KEYFLAG_CANENCRYPT, PGP_PUBRING);
}
}
else if (ans == MUTT_NO)
return NULL;
}
- keyID = pgp_fpr_or_lkeyid(k_info);
+ keyid = pgp_fpr_or_lkeyid(k_info);
bypass_selection:
- keylist_size += mutt_str_strlen(keyID) + 4;
+ keylist_size += mutt_str_strlen(keyid) + 4;
mutt_mem_realloc(&keylist, keylist_size);
- sprintf(keylist + keylist_used, "%s0x%s", keylist_used ? " " : "", keyID);
+ sprintf(keylist + keylist_used, "%s0x%s", keylist_used ? " " : "", keyid);
keylist_used = mutt_str_strlen(keylist);
key_selected = true;
* Copyright (C) 1996-1997 Michael R. Elkins <me@mutt.org>
* Copyright (C) 1999-2003 Thomas Roessler <roessler@does-not-exist.org>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1997-2003 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 1996-1997,2007 Michael R. Elkins <me@mutt.org>
* Copyright (c) 1998-2003 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* Copyright (C) 2001-2002 Oliver Ehli <elmy@acm.org>
* Copyright (C) 2002 Mike Schiraldi <raldi@research.netsol.com>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
char *smime_class_find_keys(struct AddressList *al, bool oppenc_mode)
{
struct SmimeKey *key = NULL;
- char *keyID = NULL, *keylist = NULL;
+ char *keyid = NULL, *keylist = NULL;
size_t keylist_size = 0;
size_t keylist_used = 0;
return NULL;
}
- keyID = key->hash;
- keylist_size += mutt_str_strlen(keyID) + 2;
+ keyid = key->hash;
+ keylist_size += mutt_str_strlen(keyid) + 2;
mutt_mem_realloc(&keylist, keylist_size);
- sprintf(keylist + keylist_used, "%s%s", keylist_used ? " " : "", keyID);
+ sprintf(keylist + keylist_used, "%s%s", keylist_used ? " " : "", keyid);
keylist_used = mutt_str_strlen(keylist);
smime_free_key(&key);
* @authors
* Copyright (C) 2001-2002 Oliver Ehli <elmy@acm.org>
* Copyright (C) 2004 g10 Code GmbH
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2000,2006-2007,2010 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2017 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2000,2003,2013 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
/**
* result_to_addr - Turn a Query into an Address
* @param r Query to use
+ * @retval ptr Newly allocated AddressList
*/
static struct AddressList *result_to_addr(struct Query *r)
{
}
/**
- * new_query - Create a new query
+ * query_new - Create a new query
* @retval A newly allocated query
*/
-static struct Query *new_query(void)
+static struct Query *query_new(void)
{
struct Query *query = mutt_mem_calloc(1, sizeof(struct Query));
TAILQ_INIT(&query->addr);
{
if (!first)
{
- first = new_query();
+ first = query_new();
cur = first;
}
else
{
- cur->next = new_query();
+ cur->next = query_new();
cur = cur->next;
}
*
* @authors
* Copyright (C) 1999-2004 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1999-2001 Thomas Roessler <roessler@does-not-exist.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2002,2004,2010,2012-2013 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*/
static void remove_user(struct AddressList *al, bool leave_only)
{
- struct Address *a, *tmp;
+ struct Address *a = NULL, *tmp = NULL;
TAILQ_FOREACH_SAFE(a, al, entries, tmp)
{
if (mutt_addr_is_user(a) && (!leave_only || TAILQ_NEXT(a, entries)))
*
* @authors
* Copyright (C) 1996-2002,2009-2012 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* @authors
* Copyright (C) 2002 Michael R. Elkins <me@mutt.org>
* Copyright (C) 2005-2009 Brendan Cully <brendan@kublai.com>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2018 Pietro Cerutti <gahr@gahr.ch>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
*
* @authors
* Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2019 Pietro Cerutti <gahr@gahr.ch>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under