summaryrefslogtreecommitdiff
path: root/libmailutils/wicket/noauth.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2019-01-21 07:17:56 +0200
committerSergey Poznyakoff <gray@gnu.org>2019-01-21 10:31:37 +0200
commitdb7165424199a473265eda5d35f2399e8816e92d (patch)
treec55a57f21f540c45b93f60543bca8bbb24b9bc3a /libmailutils/wicket/noauth.c
parent29a837b1126c701191affceb092afbb8de5d5ffc (diff)
downloadmailutils-db7165424199a473265eda5d35f2399e8816e92d.tar.gz
mailutils-db7165424199a473265eda5d35f2399e8816e92d.tar.bz2
Improve folder handling and expansion in mail. Add convenience functions to the library.
* configure.ac: Build libmailutils/wicket * libmailutils/Makefile.am: Likewise. * libmailutils/base/wicket.c: Move file wicket stuff to ... * libmailutils/wicket/file.c: ... here * libmailutils/wicket/noauth.c: New file. * libmailutils/wicket/Makefile.am: New file. * include/mailutils/auth.h (mu_noauth_ticket_create) (mu_noauth_wicket_create): New protos. * include/mailutils/folder.h (mu_folder_attach_ticket) (mu_folder_is_local): New protos. * include/mailutils/mailbox.h (mu_mailbox_attach_ticket): New proto. * include/mailutils/sys/folder.h (_mu_folder): Remove flags. Add new member: is_local. * libmailutils/mailbox/folder.c (mu_folder_create_from_record): Set is_local. (mu_folder_attach_ticket): New function. (mu_folder_is_local): New function. * libmailutils/mailbox/mbx_default.c (mu_mailbox_attach_ticket): New function. * libmailutils/url/create.c: Allow for trailing / in url. * libproto/imap/mbox.c (_imap_mbx_open): Do initial scan. (__imap_msg_get_stream): Initialize clos.size. * libproto/imap/tests/imapfolder.c: Attach ticket to the folder. * mail/cd.c (mail_cd): Expand directory name (~, %, + notations) prior to use. * mail/file.c (mail_file): Attach ticket to the mailbox. * mail/copy.c (append_to_mailbox): Likewise. * mail/mailline.c: Rewrite directory expansion. Implement fully functional folder expansion. * mail/util.c (util_folder_path) (util_outfolder_name): Rewrite using mu_mailbox_expand_name.
Diffstat (limited to 'libmailutils/wicket/noauth.c')
-rw-r--r--libmailutils/wicket/noauth.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/libmailutils/wicket/noauth.c b/libmailutils/wicket/noauth.c
new file mode 100644
index 000000000..2a4da1080
--- /dev/null
+++ b/libmailutils/wicket/noauth.c
@@ -0,0 +1,65 @@
+/* GNU Mailutils -- a suite of utilities for electronic mail
+ Copyright (C) 1999-2019 Free Software Foundation, Inc.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 3 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General
+ Public License along with this library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <mailutils/errno.h>
+#include <mailutils/auth.h>
+
+static int
+noauth_ticket_get_cred (mu_ticket_t ticket, mu_url_t url, const char *challenge,
+ char **pplain, mu_secret_t *psec)
+{
+ return MU_ERR_AUTH_FAILURE;
+}
+
+int
+mu_noauth_ticket_create (mu_ticket_t *pticket)
+{
+ mu_ticket_t ticket;
+ int rc;
+
+ rc = mu_ticket_create (&ticket, NULL);
+ if (rc)
+ return rc;
+ mu_ticket_set_get_cred (ticket, noauth_ticket_get_cred, NULL);
+ *pticket = ticket;
+ return 0;
+}
+
+static int
+noauth_get_ticket (mu_wicket_t wicket, void *data,
+ const char *user, mu_ticket_t *pticket)
+{
+ return mu_noauth_ticket_create (pticket);
+}
+
+int
+mu_noauth_wicket_create (mu_wicket_t *pwicket)
+{
+ mu_wicket_t wicket;
+ int rc;
+
+ rc = mu_wicket_create (&wicket);
+ if (rc)
+ return rc;
+ mu_wicket_set_get_ticket (wicket, noauth_get_ticket);
+ return 0;
+}

Return to:

Send suggestions and report system problems to the System administrator.