GNUnet debian-0.26.1-3-g4ab7c7911
 
Loading...
Searching...
No Matches
gnunet_strings_lib.h
Go to the documentation of this file.
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2001-2013 GNUnet e.V.
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#if ! defined (__GNUNET_UTIL_LIB_H_INSIDE__)
22#error "Only <gnunet_util_lib.h> can be included directly."
23#endif
24
44#if ! defined (__GNUNET_UTIL_LIB_H_INSIDE__)
45#error "Only <gnunet_util_lib.h> can be included directly."
46#endif
47
48#ifndef GNUNET_STRINGS_LIB_H
49#define GNUNET_STRINGS_LIB_H
50
51/* we need size_t, and since it can be both unsigned int
52 or unsigned long long, this IS platform dependent;
53 but "stdlib.h" should be portable 'enough' to be
54 unconditionally available... */
55
56#include <stdlib.h>
57#include <sys/socket.h>
58#include <netinet/in.h>
59#include <netinet/ip.h>
60
61#ifdef __cplusplus
62extern "C"
63{
64#if 0 /* keep Emacsens' auto-indent happy */
65}
66#endif
67#endif
68
69#include "gnunet_time_lib.h"
70
71
80GNUNET_STRINGS_fancy_size_to_bytes (const char *fancy_size,
81 unsigned long long *size);
82
83
93GNUNET_STRINGS_fancy_time_to_relative (const char *fancy_time,
94 struct GNUNET_TIME_Relative *rtime);
95
96
108GNUNET_STRINGS_fancy_time_to_absolute (const char *fancy_time,
109 struct GNUNET_TIME_Absolute *atime);
110
111
123GNUNET_STRINGS_fancy_time_to_timestamp (const char *fancy_time,
124 struct GNUNET_TIME_Timestamp *atime);
125
126
133char *
134GNUNET_STRINGS_byte_size_fancy (unsigned long long size);
135
136
150char *
151GNUNET_STRINGS_conv (const char *input,
152 size_t len,
153 const char *input_charset,
154 const char *output_charset);
155
156
167char *
168GNUNET_STRINGS_to_utf8 (const char *input,
169 size_t len,
170 const char *charset);
171
172
179char*
180GNUNET_STRINGS_utf8_normalize (const char *input);
181
182
194char *
195GNUNET_STRINGS_from_utf8 (const char *input,
196 size_t len,
197 const char *charset);
198
199
206char *
207GNUNET_STRINGS_utf8_tolower (const char *input);
208
209
216char *
217GNUNET_STRINGS_utf8_toupper (const char *input);
218
219
228char *
229GNUNET_STRINGS_filename_expand (const char *fil);
230
231
251size_t
252GNUNET_STRINGS_buffer_fill (char *buffer,
253 size_t size,
254 unsigned int count,
255 ...);
256
257
270unsigned int
271GNUNET_STRINGS_buffer_tokenize (const char *buffer,
272 size_t size,
273 unsigned int count, ...);
274
275
286const char *
288
289
300const char *
302
303
314const char *
316 int do_round);
317
318
330const char *
332
333
346char *
348 size_t size,
349 char *out,
350 size_t out_size);
351
352
363char *
365 size_t size);
366
367
380 size_t enclen,
381 void *out,
382 size_t out_size);
383
384
398 size_t enclen,
399 void **out,
400 size_t *out_size);
401
402
412size_t
413GNUNET_STRINGS_base64_encode (const void *in,
414 size_t len,
415 char **output);
416
417
431size_t
432GNUNET_STRINGS_urlencode (size_t len,
433 const char data[static len],
434 char **out);
435
436
446size_t
447GNUNET_STRINGS_base64url_encode (const void *in,
448 size_t len,
449 char **output);
450
451
461size_t
463 size_t len,
464 void **output);
465
466
476size_t
478 size_t len,
479 void **out);
480
490size_t
491GNUNET_STRINGS_urldecode (const char *data,
492 size_t len,
493 char **out);
494
495
513GNUNET_STRINGS_parse_uri (const char *path,
514 char **scheme_part,
515 const char **path_part);
516
517
534 int can_be_uri,
535 int *r_is_uri,
536 char **r_uri_scheme);
537
538
564
565
577 enum GNUNET_STRINGS_FilenameCheck checks);
578
579
592GNUNET_STRINGS_to_address_ipv6 (const char *zt_addr,
593 size_t addrlen,
594 struct sockaddr_in6 *r_buf);
595
596
608GNUNET_STRINGS_to_address_ipv4 (const char *zt_addr,
609 size_t addrlen,
610 struct sockaddr_in *r_buf);
611
612
622size_t
623GNUNET_STRINGS_parse_socket_addr (const char *addr,
624 uint8_t *af,
625 struct sockaddr **sa);
626
627
640GNUNET_STRINGS_to_address_ip (const char *addr,
641 uint16_t addrlen,
642 struct sockaddr_storage *r_buf);
643
644
660size_t
661GNUNET_strlcpy (char *dst,
662 const char *src,
663 size_t n);
664
665
679char *
681
682
683/* ***************** IPv4/IPv6 parsing ****************** */
684
686{
690 uint16_t start_port;
691
695 uint16_t end_port;
696
702};
703
704
709{
713 struct in_addr network;
714
718 struct in_addr netmask;
719
724};
725
726
731{
735 struct in6_addr network;
736
740 struct in6_addr netmask;
741
746};
747
748
761GNUNET_STRINGS_parse_ipv4_policy (const char *routeListX);
762
763
776GNUNET_STRINGS_parse_ipv6_policy (const char *routeListX);
777
778
779#if 0 /* keep Emacsens' auto-indent happy */
780{
781#endif
782#ifdef __cplusplus
783}
784#endif
785
786/* ifndef GNUNET_UTIL_STRING_H */
787#endif
788
/* end of group */
790
/* end of group addition */
792
793/* end of gnunet_util_string.h */
static char * data
The data to insert into the dht.
static char * filename
static OpusEncoder * enc
OPUS encoder.
static struct GNUNET_SCHEDULER_Task * t
Main task.
static void do_round(void *cls)
Send out PUSHes and PULLs, possibly update #view, samplers.
Functions related to time.
GNUNET_GenericReturnValue
Named constants for return values.
enum GNUNET_GenericReturnValue GNUNET_STRINGS_string_to_data_alloc(const char *enc, size_t enclen, void **out, size_t *out_size)
Convert CrockfordBase32 encoding back to data.
Definition strings.c:903
size_t GNUNET_STRINGS_urlencode(size_t len, const char data[static len], char **out)
url/percent encode (RFC3986).
Definition strings.c:1887
size_t GNUNET_STRINGS_base64url_decode(const char *data, size_t len, void **out)
Decode from Base64url.
Definition strings.c:1783
size_t GNUNET_STRINGS_parse_socket_addr(const char *addr, uint8_t *af, struct sockaddr **sa)
Parse an address given as a string into a struct sockaddr.
Definition strings.c:1204
char * GNUNET_STRINGS_data_to_string(const void *data, size_t size, char *out, size_t out_size)
Convert binary data to ASCII encoding using CrockfordBase32.
Definition strings.c:757
char * GNUNET_STRINGS_to_utf8(const char *input, size_t len, const char *charset)
Convert the len characters long character sequence given in input that is in the given charset to UTF...
Definition strings.c:430
char * GNUNET_STRINGS_data_to_string_alloc(const void *buf, size_t size)
Return the base32crockford encoding of the given buffer.
Definition strings.c:812
struct GNUNET_STRINGS_IPv6NetworkPolicy * GNUNET_STRINGS_parse_ipv6_policy(const char *routeListX)
Parse an IPv6 network policy.
Definition strings.c:1474
char * GNUNET_STRINGS_conv(const char *input, size_t len, const char *input_charset, const char *output_charset)
Convert the len characters long character sequence given in input that is in the given input charset ...
Definition strings.c:368
enum GNUNET_GenericReturnValue GNUNET_STRINGS_to_address_ip(const char *addr, uint16_t addrlen, struct sockaddr_storage *r_buf)
Tries to convert addr string to an IP (v4 or v6) address.
Definition strings.c:1189
char * GNUNET_STRINGS_byte_size_fancy(unsigned long long size)
Convert a given filesize into a fancy human-readable format.
Definition strings.c:105
GNUNET_STRINGS_FilenameCheck
Flags for what we should check a file for.
char * GNUNET_STRINGS_utf8_toupper(const char *input)
Convert the utf-8 input string to upper case.
Definition strings.c:500
char * GNUNET_STRINGS_filename_expand(const char *fil)
Complete filename (a la shell) from abbrevition.
Definition strings.c:525
enum GNUNET_GenericReturnValue GNUNET_STRINGS_to_address_ipv6(const char *zt_addr, size_t addrlen, struct sockaddr_in6 *r_buf)
Tries to convert zt_addr string to an IPv6 address.
Definition strings.c:1081
size_t GNUNET_STRINGS_urldecode(const char *data, size_t len, char **out)
url/percent encode (RFC3986).
Definition strings.c:1832
enum GNUNET_GenericReturnValue GNUNET_STRINGS_string_to_data(const char *enc, size_t enclen, void *out, size_t out_size)
Convert CrockfordBase32 encoding back to data.
Definition strings.c:837
unsigned int GNUNET_STRINGS_buffer_tokenize(const char *buffer, size_t size, unsigned int count,...)
Given a buffer of a given size, find "count" 0-terminated strings in the buffer and assign the count ...
Definition strings.c:71
enum GNUNET_GenericReturnValue GNUNET_STRINGS_path_is_absolute(const char *filename, int can_be_uri, int *r_is_uri, char **r_uri_scheme)
Check whether filename is absolute or not, and if it's an URI.
Definition strings.c:1006
size_t GNUNET_STRINGS_base64url_encode(const void *in, size_t len, char **output)
Encode into Base64url.
Definition strings.c:1672
struct GNUNET_STRINGS_IPv4NetworkPolicy * GNUNET_STRINGS_parse_ipv4_policy(const char *routeListX)
Parse an IPv4 network policy.
Definition strings.c:1299
enum GNUNET_GenericReturnValue GNUNET_STRINGS_parse_uri(const char *path, char **scheme_part, const char **path_part)
Parse a path that might be an URI.
Definition strings.c:945
size_t GNUNET_STRINGS_buffer_fill(char *buffer, size_t size, unsigned int count,...)
Fill a buffer of the given size with count 0-terminated strings (given as varargs).
Definition strings.c:43
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_time_to_relative(const char *fancy_time, struct GNUNET_TIME_Relative *rtime)
Convert a given fancy human-readable time to our internal representation.
Definition strings.c:259
size_t GNUNET_STRINGS_base64_decode(const char *data, size_t len, void **output)
Decode from Base64.
Definition strings.c:1725
char * GNUNET_STRINGS_utf8_tolower(const char *input)
Convert the utf-8 input string to lower case.
Definition strings.c:475
enum GNUNET_GenericReturnValue GNUNET_STRINGS_to_address_ipv4(const char *zt_addr, size_t addrlen, struct sockaddr_in *r_buf)
Tries to convert zt_addr string to an IPv4 address.
Definition strings.c:1151
size_t GNUNET_STRINGS_base64_encode(const void *in, size_t len, char **output)
Encode into Base64.
Definition strings.c:1623
char * GNUNET_STRINGS_from_utf8(const char *input, size_t len, const char *charset)
Convert the len bytes-long UTF-8 string given in input to the given charset.
Definition strings.c:442
enum GNUNET_GenericReturnValue GNUNET_STRINGS_check_filename(const char *filename, enum GNUNET_STRINGS_FilenameCheck checks)
Perform checks on filename.
Definition strings.c:1048
char * GNUNET_STRINGS_get_suffix_from_binary_name(const char *argv0)
Sometimes we use the binary name to determine which specific test to run.
Definition strings.c:2061
char * GNUNET_STRINGS_utf8_normalize(const char *input)
Normalize the utf-8 input string to NFC.
Definition strings.c:454
size_t GNUNET_strlcpy(char *dst, const char *src, size_t n)
Like strlcpy but portable.
Definition strings.c:137
const char * GNUNET_STRINGS_get_short_name(const char *filename)
"man basename" Returns a pointer to a part of filename (allocates nothing)!
Definition strings.c:688
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_size_to_bytes(const char *fancy_size, unsigned long long *size)
Convert a given fancy human-readable size to bytes.
Definition strings.c:235
@ GNUNET_STRINGS_CHECK_IS_ABSOLUTE
Check that the path is an absolute path.
@ GNUNET_STRINGS_CHECK_IS_DIRECTORY
Check that it is a directory.
@ GNUNET_STRINGS_CHECK_EXISTS
Check that it exists.
@ GNUNET_STRINGS_CHECK_IS_LINK
Check that it is a link.
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_time_to_timestamp(const char *fancy_time, struct GNUNET_TIME_Timestamp *atime)
Convert a given fancy human-readable time to our internal representation.
Definition strings.c:348
const char * GNUNET_STRINGS_relative_time_to_string(struct GNUNET_TIME_Relative delta, int do_round)
Give relative time in human-readable fancy format.
Definition strings.c:604
const char * GNUNET_STRINGS_absolute_time_to_string(struct GNUNET_TIME_Absolute t)
Like asctime, except for GNUnet time.
Definition strings.c:665
const char * GNUNET_STRINGS_timestamp_to_string(struct GNUNET_TIME_Timestamp t)
Like asctime, except for GNUnet time.
Definition strings.c:651
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_time_to_absolute(const char *fancy_time, struct GNUNET_TIME_Absolute *atime)
Convert a given fancy human-readable time to our internal representation.
Definition strings.c:303
static unsigned int size
Size of the "table".
Definition peer.c:68
static struct GNUNET_TIME_Relative delta
Definition speedup.c:36
IPV4 network in CIDR notation.
struct in_addr network
IPv4 address.
struct GNUNET_STRINGS_PortPolicy pp
Policy for port access.
struct in_addr netmask
IPv4 netmask.
network in CIDR notation for IPV6.
struct GNUNET_STRINGS_PortPolicy pp
Policy for port access.
struct in6_addr network
IPv6 address.
struct in6_addr netmask
IPv6 netmask.
uint16_t start_port
Starting port range (0 if none given).
int negate_portrange
GNUNET_YES if the port range should be negated ("!" in policy).
uint16_t end_port
End of port range (0 if none given).
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds.
Time for timestamps used by GNUnet, in microseconds rounded to seconds.