aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2019-02-05 07:16:19 +0100
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2019-02-05 07:16:19 +0100
commit395be9a8fb85d172dcbb06826aed8b5b29ceeac2 (patch)
tree3ffbb3918316368c4400a34393e9febddc6bbad6
parent7c469133a0692a20ea4db3f91a9a12b2a1a448be (diff)
downloadgnunet-395be9a8fb85d172dcbb06826aed8b5b29ceeac2.tar.gz
gnunet-395be9a8fb85d172dcbb06826aed8b5b29ceeac2.zip
- Fix build of ats transport plugin not linking against libgnunetnt
- Add compat memrchr layer for Win32 and macOS
-rw-r--r--po/POTFILES.in2
-rw-r--r--src/ats/Makefile.am1
-rw-r--r--src/gns/gnunet-service-gns_resolver.c19
-rw-r--r--src/include/compat.h54
-rw-r--r--src/include/platform.h4
-rw-r--r--src/util/Makefile.am3
-rw-r--r--src/util/proc_compat.c51
7 files changed, 114 insertions, 20 deletions
diff --git a/po/POTFILES.in b/po/POTFILES.in
index a1d1713f9..0ee48fcde 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -517,6 +517,7 @@ src/util/os_network.c
517src/util/os_priority.c 517src/util/os_priority.c
518src/util/peer.c 518src/util/peer.c
519src/util/plugin.c 519src/util/plugin.c
520src/util/proc_compat.c
520src/util/program.c 521src/util/program.c
521src/util/regex.c 522src/util/regex.c
522src/util/resolver_api.c 523src/util/resolver_api.c
@@ -539,6 +540,7 @@ src/vpn/vpn_api.c
539src/zonemaster/gnunet-service-zonemaster-monitor.c 540src/zonemaster/gnunet-service-zonemaster-monitor.c
540src/zonemaster/gnunet-service-zonemaster.c 541src/zonemaster/gnunet-service-zonemaster.c
541src/fs/fs_api.h 542src/fs/fs_api.h
543src/include/compat.h
542src/include/gnunet_common.h 544src/include/gnunet_common.h
543src/include/gnunet_mq_lib.h 545src/include/gnunet_mq_lib.h
544src/include/gnunet_time_lib.h 546src/include/gnunet_time_lib.h
diff --git a/src/ats/Makefile.am b/src/ats/Makefile.am
index 4f2a93227..2a62d71bd 100644
--- a/src/ats/Makefile.am
+++ b/src/ats/Makefile.am
@@ -74,6 +74,7 @@ libgnunet_plugin_ats_proportional_la_LIBADD = \
74 libgnunetats.la \ 74 libgnunetats.la \
75 $(top_builddir)/src/statistics/libgnunetstatistics.la \ 75 $(top_builddir)/src/statistics/libgnunetstatistics.la \
76 $(top_builddir)/src/util/libgnunetutil.la \ 76 $(top_builddir)/src/util/libgnunetutil.la \
77 $(top_builddir)/src/nt/libgnunetnt.la \
77 $(LTLIBINTL) 78 $(LTLIBINTL)
78libgnunet_plugin_ats_proportional_la_LDFLAGS = \ 79libgnunet_plugin_ats_proportional_la_LDFLAGS = \
79 $(GN_PLUGIN_LDFLAGS) 80 $(GN_PLUGIN_LDFLAGS)
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index 68c03edf1..703a0f652 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -624,25 +624,6 @@ timeout_resolution (void *cls)
624} 624}
625 625
626 626
627#if (defined WINDOWS) || (defined DARWIN)
628/* Don't have this on W32, here's a naive implementation
629 * Was somehow removed on OS X ... */
630static void *
631memrchr (const void *s,
632 int c,
633 size_t n)
634{
635 const unsigned char *ucs = s;
636 ssize_t i;
637
638 for (i = n - 1; i >= 0; i--)
639 if (c == (int) ucs[i])
640 return (void *) &ucs[i];
641 return NULL;
642}
643#endif
644
645
646/** 627/**
647 * Get the next, rightmost label from the name that we are trying to resolve, 628 * Get the next, rightmost label from the name that we are trying to resolve,
648 * and update the resolution position accordingly. Labels usually consist 629 * and update the resolution position accordingly. Labels usually consist
diff --git a/src/include/compat.h b/src/include/compat.h
new file mode 100644
index 000000000..31a9760c5
--- /dev/null
+++ b/src/include/compat.h
@@ -0,0 +1,54 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2001, 2002, 2003, 2004, 2005 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/**
22 * @author Martin Schanzenbach
23 *
24 * @file include/compat.h
25 * Definitions for macOS and Win32
26 */
27
28#ifndef _COMPAT_H
29#define _COMPAT_H
30
31#ifdef __cplusplus
32extern "C"
33{
34#endif
35
36 /**
37 * memrchr as defined in glibc
38 *
39 * @param s pointer to memory
40 * @param c character to search for
41 * @param n search character limit
42 */
43void*
44GN_memrchr_ (const void *s,
45 int c,
46 size_t n);
47
48#define memrchr(s,c,n) GN_memrchr_(s,c,n)
49
50#ifdef __cplusplus
51}
52#endif
53
54#endif
diff --git a/src/include/platform.h b/src/include/platform.h
index e12c49888..b0a7c0a47 100644
--- a/src/include/platform.h
+++ b/src/include/platform.h
@@ -70,6 +70,10 @@
70 70
71#define VERBOSE_STATS 0 71#define VERBOSE_STATS 0
72 72
73#if (defined WINDOWS) || (defined DARWIN)
74#include "compat.h"
75#endif
76
73#ifdef CYGWIN 77#ifdef CYGWIN
74#include <sys/reent.h> 78#include <sys/reent.h>
75#endif 79#endif
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index fc5a4648c..625ff87a2 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -120,7 +120,8 @@ libgnunetutil_la_SOURCES = \
120 strings.c \ 120 strings.c \
121 time.c \ 121 time.c \
122 tun.c \ 122 tun.c \
123 speedup.c speedup.h 123 speedup.c speedup.h \
124 proc_compat.c
124 125
125if HAVE_LIBIDN 126if HAVE_LIBIDN
126 LIBIDN= -lidn 127 LIBIDN= -lidn
diff --git a/src/util/proc_compat.c b/src/util/proc_compat.c
new file mode 100644
index 000000000..7abea446a
--- /dev/null
+++ b/src/util/proc_compat.c
@@ -0,0 +1,51 @@
1/*
2 This file is part of GNUnet.
3 Copyright (C) 2001, 2002, 2003, 2004, 2005 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#include "platform.h"
21
22/**
23 * @author Martin Schanzenbach
24 *
25 * @file util/proc_compat.c
26 * Definitions for macOS and Win32
27 */
28
29
30/**
31 * memrchr as defined in glibc
32 *
33 * @param s pointer to memory
34 * @param c character to search for
35 * @param n search character limit
36 */
37void*
38GN_memrchr_ (const void *s,
39 int c,
40 size_t n)
41{
42 const unsigned char *ucs = s;
43 ssize_t i;
44
45 for (i = n - 1; i >= 0; i--)
46 if (c == (int) ucs[i])
47 return (void *) &ucs[i];
48 return NULL;
49}
50
51