use -Wl on -no-undefined as it is a linker option:
[oweals/gnunet.git] / src / include / gnunet_friends_lib.h
1 /*
2      This file is part of GNUnet.
3      (C) 2013 Christian Grothoff
4
5      GNUnet is free software; you can redistribute it and/or modify
6      it under the terms of the GNU General Public License as published
7      by the Free Software Foundation; either version 3, or (at your
8      option) any later version.
9
10      GNUnet is distributed in the hope that it will be useful, but
11      WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      General Public License for more details.
14
15      You should have received a copy of the GNU General Public License
16      along with GNUnet; see the file COPYING.  If not, write to the
17      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18      Boston, MA 02111-1307, USA.
19 */
20
21 /**
22  * @file include/gnunet_friends_lib.h
23  * @brief library to read and write the FRIENDS file
24  * @author Christian Grothoff
25  */
26 #ifndef GNUNET_FRIENDS_LIB_H
27 #define GNUNET_FRIENDS_LIB_H
28
29 #include "gnunet_util_lib.h"
30
31
32 /**
33  * Signature of a function called on each friend found.
34  *
35  * @param cls closure
36  * @param friend peer identity of the friend
37  */
38 typedef void (*GNUNET_FRIENDS_Callback)(void *cls,
39                                         const struct GNUNET_PeerIdentity *friend);
40
41
42 /**
43  * Parse the FRIENDS file.
44  *
45  * @param cfg our configuration
46  * @param cb function to call on each friend found
47  * @param cb_cls closure for @a cb
48  * @return #GNUNET_OK on success, #GNUNET_SYSERR on parsing errors
49  */
50 int
51 GNUNET_FRIENDS_parse (const struct GNUNET_CONFIGURATION_Handle *cfg,
52                       GNUNET_FRIENDS_Callback cb,
53                       void *cb_cls);
54
55
56 /**
57  * Handle for writing a friends file.
58  */
59 struct GNUNET_FRIENDS_Writer;
60
61
62 /**
63  * Start writing a fresh FRIENDS file.  Will make a backup of the
64  * old one.
65  *
66  * @param cfg configuration to use.
67  * @return NULL on error
68  */
69 struct GNUNET_FRIENDS_Writer *
70 GNUNET_FRIENDS_write_start (const struct GNUNET_CONFIGURATION_Handle *cfg);
71
72
73 /**
74  * Finish writing out the friends file.
75  *
76  * @param w write handle
77  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
78  */
79 int
80 GNUNET_FRIENDS_write_stop (struct GNUNET_FRIENDS_Writer *w);
81
82
83 /**
84  * Add a friend to the friends file.
85  *
86  * @param w write handle
87  * @param friend friend to add
88  * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
89  */
90 int
91 GNUNET_FRIENDS_write (struct GNUNET_FRIENDS_Writer *w,
92                       const struct GNUNET_PeerIdentity *friend);
93
94
95 #endif