@@ -76,26 +76,92 @@ alias stack_st _STACK; /* Use STACK_OF(...) instead */
76
76
int M_sk_num ()(_STACK* sk) { return (sk ? sk.num : - 1 ); }
77
77
char * M_sk_value ()(_STACK* sk, size_t n) { return (sk ? sk.data[n] : null ); }
78
78
79
- int sk_num (const (_STACK)* );
80
- void * sk_value (const (_STACK)* , int );
81
-
82
- void * sk_set (_STACK* , int , void * );
83
-
84
- _STACK* sk_new (ExternC! (int function (const (void )* , const (void )* )) cmp);
85
- _STACK* sk_new_null ();
86
- void sk_free (_STACK* );
87
- void sk_pop_free (_STACK* st, ExternC! (void function (void * )) func);
88
- int sk_insert (_STACK* sk, void * data, int where);
89
- void * sk_delete (_STACK* st, int loc);
90
- void * sk_delete_ptr (_STACK* st, void * p);
91
- int sk_find (_STACK* st, void * data);
92
- int sk_find_ex (_STACK* st, void * data);
93
- int sk_push (_STACK* st, void * data);
94
- int sk_unshift (_STACK* st, void * data);
95
- void * sk_shift (_STACK* st);
96
- void * sk_pop (_STACK* st);
97
- void sk_zero (_STACK* st);
98
- int function (const (void )* , const (void )* ) sk_set_cmp_func(_STACK* sk, ExternC! (int function (const (void )* , const (void )* )) c);
99
- _STACK* sk_dup (_STACK* st);
100
- void sk_sort (_STACK* st);
101
- int sk_is_sorted (const (_STACK)* st);
79
+ /* ******************************************************************************
80
+
81
+ Starting from OpenSSL v1.1.0, the `sk_*` functions are prefixed with
82
+ `OPENSSL_`, so e.g. `sk_num` becomes `OPENSSL_sk_num`.
83
+
84
+ To cope with that and provide downstream with an easier interface to deal
85
+ with, we always provide the `OPENSSL_` methods, as they are just `extern(C)`
86
+ anyway, and we either provide `sk_*` as `alias`es or `extern (C)`.
87
+
88
+ The need for aliases comes from users of those binding, e.g. `safestack`.
89
+
90
+ *******************************************************************************/
91
+
92
+ version (DeimosOpenSSLv1_1)
93
+ {
94
+ int OPENSSL_sk_num (const (_STACK)* );
95
+ void * OPENSSL_sk_value (const (_STACK)* , int );
96
+
97
+ void * OPENSSL_sk_set (_STACK* , int , void * );
98
+
99
+ _STACK* OPENSSL_sk_new (ExternC! (int function (const (void )* , const (void )* )) cmp);
100
+ _STACK* OPENSSL_sk_new_null ();
101
+ void OPENSSL_sk_free (_STACK* );
102
+ void OPENSSL_sk_pop_free (_STACK* st, ExternC! (void function (void * )) func);
103
+ int OPENSSL_sk_insert (_STACK* sk, void * data, int where);
104
+ void * OPENSSL_sk_delete (_STACK* st, int loc);
105
+ void * OPENSSL_sk_delete_ptr (_STACK* st, void * p);
106
+ int OPENSSL_sk_find (_STACK* st, void * data);
107
+ int OPENSSL_sk_find_ex (_STACK* st, void * data);
108
+ int OPENSSL_sk_push (_STACK* st, void * data);
109
+ int OPENSSL_sk_unshift (_STACK* st, void * data);
110
+ void * OPENSSL_sk_shift (_STACK* st);
111
+ void * OPENSSL_sk_pop (_STACK* st);
112
+ void OPENSSL_sk_zero (_STACK* st);
113
+ int function (const (void )* , const (void )* ) OPENSSL_sk_set_cmp_func(_STACK* sk, ExternC! (int function (const (void )* , const (void )* )) c);
114
+ _STACK* OPENSSL_sk_dup (_STACK* st);
115
+ void OPENSSL_sk_sort (_STACK* st);
116
+ int OPENSSL_sk_is_sorted (const (_STACK)* st);
117
+
118
+ alias sk_num = OPENSSL_sk_num;
119
+ alias sk_value = OPENSSL_sk_value;
120
+ alias sk_set = OPENSSL_sk_set;
121
+
122
+ alias sk_new = OPENSSL_sk_new;
123
+ alias sk_new_null = OPENSSL_sk_new_null;
124
+ alias sk_free = OPENSSL_sk_free;
125
+ alias sk_pop_free = OPENSSL_sk_pop_free;
126
+ alias sk_insert = OPENSSL_sk_insert;
127
+ alias sk_delete = OPENSSL_sk_delete;
128
+ alias sk_delete_ptr = OPENSSL_sk_delete_ptr;
129
+ alias sk_find = OPENSSL_sk_find;
130
+ alias sk_find_ex = OPENSSL_sk_find_ex;
131
+
132
+ alias sk_push = OPENSSL_sk_push;
133
+ alias sk_unshift = OPENSSL_sk_unshift;
134
+ alias sk_shift = OPENSSL_sk_shift;
135
+ alias sk_pop = OPENSSL_sk_pop;
136
+ alias sk_zero = OPENSSL_sk_zero;
137
+ alias sk_set_cmp_func = OPENSSL_sk_set_cmp_func;
138
+ alias sk_dup = OPENSSL_sk_dup;
139
+ alias sk_sort = OPENSSL_sk_sort;
140
+ alias sk_is_sorted = OPENSSL_sk_is_sorted;
141
+ }
142
+ else
143
+ {
144
+ int sk_num (const (_STACK)* );
145
+ void * sk_value (const (_STACK)* , int );
146
+
147
+ void * sk_set (_STACK* , int , void * );
148
+
149
+ _STACK* sk_new (ExternC! (int function (const (void )* , const (void )* )) cmp);
150
+ _STACK* sk_new_null ();
151
+ void sk_free (_STACK* );
152
+ void sk_pop_free (_STACK* st, ExternC! (void function (void * )) func);
153
+ int sk_insert (_STACK* sk, void * data, int where);
154
+ void * sk_delete (_STACK* st, int loc);
155
+ void * sk_delete_ptr (_STACK* st, void * p);
156
+ int sk_find (_STACK* st, void * data);
157
+ int sk_find_ex (_STACK* st, void * data);
158
+ int sk_push (_STACK* st, void * data);
159
+ int sk_unshift (_STACK* st, void * data);
160
+ void * sk_shift (_STACK* st);
161
+ void * sk_pop (_STACK* st);
162
+ void sk_zero (_STACK* st);
163
+ int function (const (void )* , const (void )* ) sk_set_cmp_func(_STACK* sk, ExternC! (int function (const (void )* , const (void )* )) c);
164
+ _STACK* sk_dup (_STACK* st);
165
+ void sk_sort (_STACK* st);
166
+ int sk_is_sorted (const (_STACK)* st);
167
+ }
0 commit comments