]> jfr.im git - irc/ircd-hybrid/libopm.git/blob - acsite.m4
Apply "[irc-security] BOPM patch for MikroTik HttpProxy, possibly others"
[irc/ircd-hybrid/libopm.git] / acsite.m4
1 dnl This is copyright RĂ¼diger Kuhlmann <info@ruediger-kuhlmann.de>
2
3 AC_DEFUN([AC_FUNC_SNPRINTF],
4 [AC_CHECK_FUNCS(snprintf vsnprintf)
5 AC_MSG_CHECKING(for working snprintf)
6 AC_CACHE_VAL(ac_cv_have_working_snprintf,
7 [AC_TRY_RUN(
8 [#include <stdio.h>
9
10 int main(void)
11 {
12 char bufs[5] = { 'x', 'x', 'x', '\0', '\0' };
13 char bufd[5] = { 'x', 'x', 'x', '\0', '\0' };
14 int i;
15 i = snprintf (bufs, 2, "%s", "111");
16 if (strcmp (bufs, "1")) exit (1);
17 if (i != 3) exit (1);
18 i = snprintf (bufd, 2, "%d", 111);
19 if (strcmp (bufd, "1")) exit (1);
20 if (i != 3) exit (1);
21 exit(0);
22 }], ac_cv_have_working_snprintf=yes, ac_cv_have_working_snprintf=no, ac_cv_have_working_snprintf=cross)])
23 AC_MSG_RESULT([$ac_cv_have_working_snprintf])
24 AC_MSG_CHECKING(for working vsnprintf)
25 AC_CACHE_VAL(ac_cv_have_working_vsnprintf,
26 [AC_TRY_RUN(
27 [#include <stdio.h>
28 #include <stdarg.h>
29
30 int my_vsnprintf (char *buf, const char *tmpl, ...)
31 {
32 int i;
33 va_list args;
34 va_start (args, tmpl);
35 i = vsnprintf (buf, 2, tmpl, args);
36 va_end (args);
37 return i;
38 }
39
40 int main(void)
41 {
42 char bufs[5] = { 'x', 'x', 'x', '\0', '\0' };
43 char bufd[5] = { 'x', 'x', 'x', '\0', '\0' };
44 int i;
45 i = my_vsnprintf (bufs, "%s", "111");
46 if (strcmp (bufs, "1")) exit (1);
47 if (i != 3) exit (1);
48 i = my_vsnprintf (bufd, "%d", 111);
49 if (strcmp (bufd, "1")) exit (1);
50 if (i != 3) exit (1);
51 exit(0);
52 }], ac_cv_have_working_vsnprintf=yes, ac_cv_have_working_vsnprintf=no, ac_cv_have_working_vsnprintf=cross)])
53 AC_MSG_RESULT([$ac_cv_have_working_vsnprintf])
54 if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes"; then
55 AC_LIBOBJ(snprintf)
56 AC_MSG_WARN([Replacing missing/broken (v)snprintf() with version from http://www.ijs.si/software/snprintf/.])
57 AC_DEFINE(PREFER_PORTABLE_SNPRINTF, 1, "enable replacement (v)snprintf if system (v)snprintf is broken")
58 fi])
59
60 dnl This macro figures out what libraries are required on this platform to link
61 dnl sockets programs. It's usually -lsocket and/or -lnsl or neither. We test for
62 dnl all three combinations.
63 dnl Copyright Warren Young <warren@etr-usa.com>
64
65 AC_DEFUN([ETR_SOCKET_NSL],
66 [
67 AC_CACHE_CHECK(for libraries containing socket functions,
68 ac_cv_socket_libs, [
69 oCFLAGS=$CFLAGS
70
71 AC_TRY_LINK([
72 #include <sys/types.h>
73 #include <sys/socket.h>
74 #include <netinet/in.h>
75 #include <arpa/inet.h>
76 ],
77 [
78 struct in_addr add;
79 int sd = socket(AF_INET, SOCK_STREAM, 0);
80 inet_ntoa(add);
81 ],
82 ac_cv_socket_libs=-lc, ac_cv_socket_libs=no)
83
84 if test x"$ac_cv_socket_libs" = "xno"
85 then
86 CFLAGS="$oCFLAGS -lsocket"
87 AC_TRY_LINK([
88 #include <sys/types.h>
89 #include <sys/socket.h>
90 #include <netinet/in.h>
91 #include <arpa/inet.h>
92 ],
93 [
94 struct in_addr add;
95 int sd = socket(AF_INET, SOCK_STREAM, 0);
96 inet_ntoa(add);
97 ],
98 ac_cv_socket_libs=-lsocket, ac_cv_socket_libs=no)
99 fi
100
101 if test x"$ac_cv_socket_libs" = "xno"
102 then
103 CFLAGS="$oCFLAGS -lsocket -lnsl"
104 AC_TRY_LINK([
105 #include <sys/types.h>
106 #include <sys/socket.h>
107 #include <netinet/in.h>
108 #include <arpa/inet.h>
109 ],
110 [
111 struct in_addr add;
112 int sd = socket(AF_INET, SOCK_STREAM, 0);
113 inet_ntoa(add);
114 ],
115 ac_cv_socket_libs="-lsocket -lnsl", ac_cv_socket_libs=no)
116 fi
117
118 CFLAGS=$oCFLAGS
119 ])
120
121 if test x"$ac_cv_socket_libs" = "xno"
122 then
123 AC_MSG_ERROR([Cannot find socket libraries])
124 elif test x"$ac_cv_socket_libs" = "x-lc"
125 then
126 ETR_SOCKET_LIBS=""
127 else
128 ETR_SOCKET_LIBS="$ac_cv_socket_libs"
129 fi
130
131 AC_SUBST(ETR_SOCKET_LIBS)
132 ]) dnl ETR_SOCKET_NSL