do not crash all the time in to_file()
[oweals/gnunet.git] / src / rps / rps-test_util.h
1 /*
2      This file is part of GNUnet.
3      Copyright (C)
4
5      GNUnet is free software: you can redistribute it and/or modify it
6      under the terms of the GNU Affero General Public License as published
7      by the Free Software Foundation, either version 3 of the License,
8      or (at your 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      Affero General Public License for more details.
14
15      You should have received a copy of the GNU Affero General Public License
16      along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18      SPDX-License-Identifier: AGPL3.0-or-later
19 */
20
21 /**
22  * @file rps/rps-test_util.h
23  * @brief Some utils faciliating the view into the internals for the sampler
24  *        needed for evaluation
25  * @author Julius Bünger
26  */
27
28 #ifndef RPS_TEST_UTIL_H
29 #define RPS_TEST_UTIL_H
30
31 #define TO_FILE 0
32
33
34 char *
35 auth_key_to_string (struct GNUNET_CRYPTO_AuthKey auth_key);
36
37 struct GNUNET_CRYPTO_AuthKey
38 string_to_auth_key (const char *str);
39
40 char *
41 create_file (const char *name);
42
43 /**
44  * @brief Get file handle
45  *
46  * If necessary, create file handle and store it with the other file handles.
47  *
48  * @param name Name of the file
49  *
50  * @return File handle
51  */
52 struct GNUNET_DISK_FileHandle *
53 get_file_handle (const char *name);
54
55 /**
56  * @brief Close all files that were opened with #get_file_handle
57  *
58  * @return Success of iterating over files
59  */
60 int
61 close_all_files ();
62
63 /**
64  * This function is used to facilitate writing important information to disk
65  */
66 #ifdef TO_FILE
67 #define to_file(file_name, ...) do { if (NULL == file_name) { GNUNET_break(0); return;} \
68     char tmp_buf[512] = "";\
69     int size;\
70     size = GNUNET_snprintf(tmp_buf,sizeof(tmp_buf),__VA_ARGS__);\
71     if (0 > size)\
72       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,\
73            "Failed to create tmp_buf\n");\
74     else\
75       GNUNET_DISK_file_write (get_file_handle (file_name),\
76                               tmp_buf,\
77                               strnlen (tmp_buf, 512));\
78   } while (0);
79
80
81 #define to_file_w_len(file_name, len, ...) do {char tmp_buf[len];\
82     int size;\
83     memset (tmp_buf, 0, len);\
84     size = GNUNET_snprintf(tmp_buf,sizeof(tmp_buf),__VA_ARGS__);\
85     if (0 > size)\
86       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,\
87            "Failed to create tmp_buf\n");\
88     else\
89       GNUNET_DISK_file_write (get_file_handle (file_name),\
90                               tmp_buf,\
91                               strnlen (tmp_buf, 512));\
92   } while (0);
93 #else /* TO_FILE */
94 #  define to_file(file_name, ...)
95 #  define to_file_w_len(file_name, len, ...)
96 #endif /* TO_FILE */
97
98 char *
99 store_prefix_file_name (const struct GNUNET_PeerIdentity *peer,
100                         const char *prefix);
101
102 void
103 to_file_raw (const char *file_name, const char *buf, size_t size_buf);
104
105 void
106 to_file_raw_unaligned (const char *file_name,
107                        const char *buf,
108                        size_t size_buf,
109                        unsigned bits_needed);
110
111 #endif /* RPS_TEST_UTIL_H */
112 /* end of gnunet-service-rps.c */