summaryrefslogtreecommitdiff
path: root/include/mailutils/registrar.h
blob: 800bf8ee1b8b6c8bb07680df48be544150a30f21 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/* GNU mailutils - a suite of utilities for electronic mail
   Copyright (C) 1999, 2000 Free Software Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Library Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program 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 Library General Public License for more details.

   You should have received a copy of the GNU Library General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */

#ifndef _MAILUTILS_REGISTRAR_H
#define _MAILUTILS_REGISTRAR_H

#include <mailutils/types.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Public Interface, to allow static initialization.  */
struct _record
{
  /* Should not be access directly but rather by the stub functions.  */
  const char *scheme;
  int (*_url)     __P ((url_t));
  int (*_mailbox) __P ((mailbox_t));
  int (*_mailer)  __P ((mailer_t));
  int (*_folder)  __P ((folder_t));
  void *data; /* back pointer.  */

  /* Stub functions to override. The defaut is to return the fields.  */
  int (*_is_scheme)   __P ((record_t, const char *));
  int (*_get_url)     __P ((record_t, int (*(*_url)) __P ((url_t))));
  int (*_get_mailbox) __P ((record_t, int (*(*_mailbox)) __P ((mailbox_t))));
  int (*_get_mailer)  __P ((record_t, int (*(*_mailer)) __P ((mailer_t))));
  int (*_get_folder)  __P ((record_t, int (*(*_folder)) __P ((folder_t))));
};

/* Registration.  */
extern int registrar_get_list     __P ((list_t *));
extern int registrar_record       __P ((record_t));
extern int unregistrar_record     __P ((record_t));

/* Scheme.  */
extern int record_is_scheme       __P ((record_t, const char *));
extern int record_set_scheme      __P ((record_t, const char *));
extern int record_set_is_scheme   __P ((record_t, int (*_is_scheme)
					__P ((record_t, const char *))));

/* Url.  */
extern int record_get_url         __P ((record_t, int (*(*)) __P ((url_t))));
extern int record_set_url         __P ((record_t, int (*) __P ((url_t))));
extern int record_set_get_url     __P ((record_t, int (*_get_url)
					__P ((record_t,
					      int (*(*)) __P ((url_t))))));
/*  Mailbox. */
extern int record_get_mailbox     __P ((record_t, int (*(*))
					__P ((mailbox_t))));
extern int record_set_mailbox     __P ((record_t, int (*) __P ((mailbox_t))));
extern int record_set_get_mailbox __P ((record_t, int (*_get_mailbox)
					__P ((record_t,
					      int (*(*)) __P((mailbox_t))))));
/* Mailer.  */
extern int record_get_mailer      __P ((record_t,
					int (*(*)) __P ((mailer_t))));
extern int record_set_mailer      __P ((record_t, int (*) __P ((mailer_t))));
extern int record_set_get_mailer  __P ((record_t, int (*_get_mailer)
				       __P ((record_t,
					     int (*(*)) __P ((mailer_t))))));
/* Folder.  */
extern int record_get_folder      __P ((record_t,
					int (*(*)) __P ((folder_t))));
extern int record_set_folder      __P ((record_t, int (*) __P ((folder_t))));
extern int record_set_get_folder  __P ((record_t, int (*_get_folder)
					__P ((record_t,
					      int (*(*)) __P ((folder_t))))));

/* Records provided by the library.  */

/* Remote Folder "imap://"  */
extern record_t imap_record;
/* Remote Mailbox POP3, pop://  */
extern record_t pop_record;

/* Local Mailbox Unix Mailbox, "mbox:"  */
extern record_t mbox_record;
/* Local Folder/Mailbox, "file:"  */
extern record_t file_record;
/* Local Folder/Mailbox, /  */
extern record_t path_record;
/* Local MH, "mh:" */  
extern record_t mh_record;
  
/* SMTP mailer, "smtp://"  */
extern record_t smtp_record;
/* Sendmail, "sendmail:"  */
extern record_t sendmail_record;

#ifdef __cplusplus
}
#endif

#endif /* _MAILUTILS_REGISTRAR_H */

Return to:

Send suggestions and report system problems to the System administrator.