bb7ba677 |
1 | m4_dnl hmacros.h.m4 |
2 | m4_dnl (part of complex test harness, not of the library) |
3 | m4_dnl - common macros |
4 | |
ae8cc977 |
5 | m4_dnl This file is part of adns, which is |
6 | m4_dnl Copyright (C) 1997-2000,2003,2006 Ian Jackson |
7 | m4_dnl Copyright (C) 1999-2000,2003,2006 Tony Finch |
8 | m4_dnl Copyright (C) 1991 Massachusetts Institute of Technology |
9 | m4_dnl (See the file INSTALL for full details.) |
bb7ba677 |
10 | m4_dnl |
11 | m4_dnl This program is free software; you can redistribute it and/or modify |
12 | m4_dnl it under the terms of the GNU General Public License as published by |
13 | m4_dnl the Free Software Foundation; either version 2, or (at your option) |
14 | m4_dnl any later version. |
15 | m4_dnl |
16 | m4_dnl This program is distributed in the hope that it will be useful, |
17 | m4_dnl but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 | m4_dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
19 | m4_dnl GNU General Public License for more details. |
20 | m4_dnl |
21 | m4_dnl You should have received a copy of the GNU General Public License |
22 | m4_dnl along with this program; if not, write to the Free Software Foundation, |
23 | m4_dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
24 | |
25 | m4_define(`hm_args_massage', |
26 | `m4_ifelse( |
27 | m4_patsubst( |
28 | $1, |
29 | `hm_comma\|[ |
30 | ]+', |
31 | `'), |
32 | `', |
33 | `$2', |
0ebff22d |
34 | `m4_dnl |
bb7ba677 |
35 | m4_patsubst(m4_patsubst(m4_patsubst(m4_translit($1, ` |
36 | ',` '), `\(hm_comma *\)*$', `'), `^\( *hm_comma\)*', `'), |
0ebff22d |
37 | `\( *hm_comma *\)+',` hm_comma ')m4_dnl |
bb7ba677 |
38 | ')') |
39 | |
40 | m4_define(`hm_create_nothing', ` |
41 | m4_define(`hm_na',`') |
bb7ba677 |
42 | m4_define(`hm_arg_nullptr', `') |
43 | m4_define(`hm_arg_int', `') |
44 | m4_define(`hm_arg_fdset_io', `') |
8b1171e6 |
45 | m4_define(`hm_arg_pollfds_io', `') |
bb7ba677 |
46 | m4_define(`hm_arg_timeval_in_rel_null',`') |
47 | m4_define(`hm_arg_must', `') |
48 | m4_define(`hm_arg_socktype',`') |
6239fc5b |
49 | m4_define(`hm_arg_addrfam',`') |
bb7ba677 |
50 | m4_define(`hm_arg_ign', `') |
51 | m4_define(`hm_arg_fd', `') |
52 | m4_define(`hm_arg_fcntl_cmd_arg',`') |
53 | m4_define(`hm_arg_addr_in', `') |
54 | m4_define(`hm_arg_bytes_in', `') |
55 | m4_define(`hm_arg_bytes_out', `') |
56 | m4_define(`hm_arg_addr_out', `') |
57 | ') |
58 | |
59 | m4_define(`hm_create_proto_h',` |
60 | m4_define(`hm_na', `hm_comma') |
bb7ba677 |
61 | m4_define(`hm_arg_nullptr', `$'`1 $'`2') |
62 | m4_define(`hm_arg_int', `int $'`1') |
63 | m4_define(`hm_arg_fdset_io', `fd_set *$'`1') |
8b1171e6 |
64 | m4_define(`hm_arg_pollfds_io', `struct pollfd *$'`1 hm_comma int $'`2') |
bb7ba677 |
65 | m4_define(`hm_arg_timeval_in_rel_null', `struct timeval *$'`1') |
66 | m4_define(`hm_arg_must', `$'`1 $'`2') |
67 | m4_define(`hm_arg_socktype', `int $'`1') |
6239fc5b |
68 | m4_define(`hm_arg_addrfam', `int $'`1') |
bb7ba677 |
69 | m4_define(`hm_arg_ign', `$'`1 $'`2') |
70 | m4_define(`hm_arg_fd', `int $'`1') |
71 | m4_define(`hm_arg_fcntl_cmd_arg', `int $'`1 hm_comma ...') |
72 | m4_define(`hm_arg_addr_in', `const struct sockaddr *$'`1 hm_comma int $'`2') |
73 | m4_define(`hm_arg_bytes_in', `const $'`1 *$'`2 hm_comma $'`3 $'`4') |
74 | m4_define(`hm_arg_bytes_out', `$'`1 *$'`2 hm_comma $'`3 $'`4') |
75 | m4_define(`hm_arg_addr_out', `struct sockaddr *$'`1 hm_comma int *$'`2') |
76 | ') |
77 | |
78 | m4_define(`hm_create_proto_q',` |
79 | hm_create_proto_h |
bb7ba677 |
80 | m4_define(`hm_arg_nullptr', `') |
81 | m4_define(`hm_arg_fdset_io', `const fd_set *$'`1') |
8b1171e6 |
82 | m4_define(`hm_arg_pollfds_io', `const struct pollfd *$'`1 hm_comma int $'`2') |
bb7ba677 |
83 | m4_define(`hm_arg_must', `') |
84 | m4_define(`hm_arg_ign', `') |
85 | m4_define(`hm_arg_fcntl_cmd_arg', `int $'`1 hm_comma long $'`2') |
86 | m4_define(`hm_arg_bytes_out', `$'`3 $'`4') |
87 | m4_define(`hm_arg_addr_out', `int $'`2') |
88 | ') |
89 | |
90 | m4_define(`hm_create_hqcall_vars',` |
91 | hm_create_nothing |
92 | m4_define(`hm_arg_fcntl_cmd_arg',`va_list al; long $'`2;') |
93 | ') |
94 | |
95 | m4_define(`hm_create_hqcall_init',` |
96 | hm_create_nothing |
97 | m4_define(`hm_arg_nullptr', `Tmust("$1","$'`2",!$'`2);') |
98 | m4_define(`hm_arg_must', `Tmust("$1","$'`2",$'`2==$'`3);') |
99 | m4_define(`hm_arg_socktype',` |
100 | Tmust("$1","$'`1",$'`1==SOCK_STREAM || $'`1==SOCK_DGRAM);') |
6239fc5b |
101 | m4_define(`hm_arg_addrfam',` |
d90bae82 |
102 | Tmust("$1","$'`1",$'`1==AF_INET || $'`1==AF_INET6);') |
bb7ba677 |
103 | m4_define(`hm_arg_fcntl_cmd_arg',` |
104 | Tmust("$1","$'`1",$'`1==F_SETFL || $'`1==F_GETFL); |
105 | if ($'`1 == F_SETFL) { |
106 | va_start(al,$'`1); $'`2= va_arg(al,long); va_end(al); |
107 | } else { |
108 | $'`2= 0; |
109 | }') |
70a778e5 |
110 | m4_define(`hm_arg_addr_out',`Tmust("$1","*$'`2",*$'`2>=sizeof(struct sockaddr_in));') |
bb7ba677 |
111 | ') |
112 | |
113 | m4_define(`hm_create_realcall_args',` |
114 | m4_define(`hm_na',`hm_comma') |
bb7ba677 |
115 | m4_define(`hm_arg_nullptr', `0') |
116 | m4_define(`hm_arg_int', `$'`1') |
117 | m4_define(`hm_arg_fdset_io', `$'`1') |
8b1171e6 |
118 | m4_define(`hm_arg_pollfds_io', `$'`1 hm_comma $'`2') |
bb7ba677 |
119 | m4_define(`hm_arg_timeval_in_rel_null', `$'`1') |
120 | m4_define(`hm_arg_must', `$'`2') |
121 | m4_define(`hm_arg_socktype', `$'`1') |
6239fc5b |
122 | m4_define(`hm_arg_addrfam', `$'`1') |
bb7ba677 |
123 | m4_define(`hm_arg_ign', `$'`2') |
124 | m4_define(`hm_arg_fd', `$'`1') |
125 | m4_define(`hm_arg_fcntl_cmd_arg', `$'`1 hm_comma $'`2') |
126 | m4_define(`hm_arg_addr_in', `$'`1 hm_comma $'`2') |
127 | m4_define(`hm_arg_bytes_in', `$'`2 hm_comma $'`4') |
128 | m4_define(`hm_arg_bytes_out', `$'`2 hm_comma $'`4') |
129 | m4_define(`hm_arg_addr_out', `$'`1 hm_comma $'`2') |
130 | ') |
131 | |
132 | m4_define(`hm_create_hqcall_args',` |
133 | hm_create_realcall_args |
bb7ba677 |
134 | m4_define(`hm_arg_nullptr', `') |
135 | m4_define(`hm_arg_must', `') |
136 | m4_define(`hm_arg_ign', `') |
137 | m4_define(`hm_arg_bytes_in', `$'`2 hm_comma $'`4') |
138 | m4_define(`hm_arg_bytes_out', `$'`4') |
139 | m4_define(`hm_arg_addr_out', `*$'`2') |
140 | ') |