source: storage.h @ 3ddbd23c

Last change on this file since 3ddbd23c was d628339, checked in by Wilmer van der Gaast <wilmer@…>, at 2015-06-08T01:13:47Z

Don't fail config load if a protocol is supported, just remember the data.

Otherwise things will get quite annoying when an RPC plugin is temporarily
not running. (I think things will still be quite annoying this way, but let's
see.)

  • Property mode set to 100644
File size: 2.5 KB
Line 
1/********************************************************************\
2  * BitlBee -- An IRC to other IM-networks gateway                     *
3  *                                                                    *
4  * Copyright 2002-2004 Wilmer van der Gaast and others                *
5  \********************************************************************/
6
7/* Layer for retrieving and storing buddy information */
8
9/*
10  This program is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 2 of the License, or
13  (at your option) any later version.
14
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU General Public License for more details.
19
20  You should have received a copy of the GNU General Public License with
21  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL;
22  if not, write to the Free Software Foundation, Inc., 51 Franklin St.,
23  Fifth Floor, Boston, MA  02110-1301  USA
24*/
25
26#ifndef __STORAGE_H__
27#define __STORAGE_H__
28
29typedef enum {
30        STORAGE_OK = 0,
31        STORAGE_NO_SUCH_USER,
32        STORAGE_INVALID_PASSWORD,
33        STORAGE_ALREADY_EXISTS,
34        STORAGE_OTHER_ERROR /* Error that isn't caused by user input, such as
35                               a database that is unreachable. log() will be
36                               used for the exact error message */
37} storage_status_t;
38
39typedef struct {
40        const char *name;
41
42        /* May be set to NULL if not required */
43        void (*init)(void);
44
45        storage_status_t (*check_pass)(const char *nick, const char *password);
46
47        storage_status_t (*load)(irc_t *irc, const char *password);
48        storage_status_t (*save)(irc_t *irc, int overwrite);
49        storage_status_t (*remove)(const char *nick, const char *password);
50
51        /* May be NULL if not supported by backend */
52        storage_status_t (*rename)(const char *onick, const char *nnick, const char *password);
53} storage_t;
54
55storage_status_t storage_check_pass(const char *nick, const char *password);
56
57storage_status_t storage_load(irc_t * irc, const char *password);
58storage_status_t storage_save(irc_t *irc, char *password, int overwrite);
59storage_status_t storage_remove(const char *nick, const char *password);
60
61void register_storage_backend(storage_t *);
62G_GNUC_MALLOC GList *storage_init(const char *primary, char **migrate);
63
64extern const struct prpl protocol_missing;
65
66#endif /* __STORAGE_H__ */
Note: See TracBrowser for help on using the repository browser.