rhack 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/.gemtest +0 -0
  2. data/CURB-LICENSE +51 -0
  3. data/Gemfile +4 -0
  4. data/History.txt +4 -0
  5. data/LICENSE +51 -0
  6. data/License.txt +17 -0
  7. data/Manifest.txt +61 -0
  8. data/README.txt +12 -0
  9. data/Rakefile +34 -0
  10. data/ext/curb-original/curb.c +977 -0
  11. data/ext/curb-original/curb.h +52 -0
  12. data/ext/curb-original/curb_config.h +235 -0
  13. data/ext/curb-original/curb_easy.c +3455 -0
  14. data/ext/curb-original/curb_easy.h +90 -0
  15. data/ext/curb-original/curb_errors.c +647 -0
  16. data/ext/curb-original/curb_errors.h +129 -0
  17. data/ext/curb-original/curb_macros.h +159 -0
  18. data/ext/curb-original/curb_multi.c +704 -0
  19. data/ext/curb-original/curb_multi.h +26 -0
  20. data/ext/curb-original/curb_postfield.c +523 -0
  21. data/ext/curb-original/curb_postfield.h +40 -0
  22. data/ext/curb-original/curb_upload.c +80 -0
  23. data/ext/curb-original/curb_upload.h +30 -0
  24. data/ext/curb/Makefile +157 -0
  25. data/ext/curb/curb.c +977 -0
  26. data/ext/curb/curb.h +52 -0
  27. data/ext/curb/curb_config.h +235 -0
  28. data/ext/curb/curb_easy.c +3430 -0
  29. data/ext/curb/curb_easy.h +94 -0
  30. data/ext/curb/curb_errors.c +647 -0
  31. data/ext/curb/curb_errors.h +129 -0
  32. data/ext/curb/curb_macros.h +159 -0
  33. data/ext/curb/curb_multi.c +710 -0
  34. data/ext/curb/curb_multi.h +26 -0
  35. data/ext/curb/curb_postfield.c +523 -0
  36. data/ext/curb/curb_postfield.h +40 -0
  37. data/ext/curb/curb_upload.c +80 -0
  38. data/ext/curb/curb_upload.h +30 -0
  39. data/ext/curb/extconf.rb +399 -0
  40. data/lib/cache.rb +44 -0
  41. data/lib/curl-global.rb +151 -0
  42. data/lib/extensions/browser/env.js +697 -0
  43. data/lib/extensions/browser/jquery.js +7180 -0
  44. data/lib/extensions/browser/xmlsax.js +1564 -0
  45. data/lib/extensions/browser/xmlw3cdom_1.js +1444 -0
  46. data/lib/extensions/browser/xmlw3cdom_2.js +2744 -0
  47. data/lib/extensions/curb.rb +125 -0
  48. data/lib/extensions/declarative.rb +153 -0
  49. data/lib/extensions/johnson.rb +63 -0
  50. data/lib/frame.rb +766 -0
  51. data/lib/init.rb +36 -0
  52. data/lib/rhack.rb +16 -0
  53. data/lib/rhack.yml.template +19 -0
  54. data/lib/rhack/proxy/checker.rb +226 -0
  55. data/lib/rhack/proxy/list.rb +196 -0
  56. data/lib/rhack/services.rb +445 -0
  57. data/lib/rhack_in.rb +2 -0
  58. data/lib/scout.rb +591 -0
  59. data/lib/words.rb +37 -0
  60. data/test/test_frame.rb +107 -0
  61. data/test/test_rhack.rb +5 -0
  62. data/test/test_scout.rb +53 -0
  63. metadata +195 -0
@@ -0,0 +1,40 @@
1
+ /* curb_postfield.h - Field class for POST method
2
+ * Copyright (c)2006 Ross Bamford.
3
+ * Licensed under the Ruby License. See LICENSE for details.
4
+ *
5
+ * $Id: curb_postfield.h 4 2006-11-17 18:35:31Z roscopeco $
6
+ */
7
+ #ifndef __CURB_POSTFIELD_H
8
+ #define __CURB_POSTFIELD_H
9
+
10
+ #include "curb.h"
11
+
12
+ /*
13
+ * postfield doesn't actually wrap a curl_httppost - instead,
14
+ * it just holds together some ruby objects and has a C-side
15
+ * method to add it to a given form list during the perform.
16
+ */
17
+ typedef struct {
18
+ /* Objects we associate */
19
+ VALUE name;
20
+ VALUE content;
21
+ VALUE content_type;
22
+ VALUE content_proc;
23
+ VALUE local_file;
24
+ VALUE remote_file;
25
+
26
+ /* this will sometimes hold a string, which is the result
27
+ * of the content_proc invocation. We need it to hang around.
28
+ */
29
+ VALUE buffer_str;
30
+ } ruby_curl_postfield;
31
+
32
+ extern VALUE cCurlPostField;
33
+
34
+ void append_to_form(VALUE self,
35
+ struct curl_httppost **first,
36
+ struct curl_httppost **last);
37
+
38
+ void init_curb_postfield();
39
+
40
+ #endif
@@ -0,0 +1,80 @@
1
+ /* curb_upload.c - Curl upload handle
2
+ * Copyright (c)2009 Todd A Fisher.
3
+ * Licensed under the Ruby License. See LICENSE for details.
4
+ */
5
+ #include "curb_upload.h"
6
+ extern VALUE mCurl;
7
+ VALUE cCurlUpload;
8
+
9
+ #ifdef RDOC_NEVER_DEFINED
10
+ mCurl = rb_define_module("Curl");
11
+ #endif
12
+
13
+ static void curl_upload_mark(ruby_curl_upload *rbcu) {
14
+ if (rbcu->stream && !NIL_P(rbcu->stream)) rb_gc_mark(rbcu->stream);
15
+ }
16
+ static void curl_upload_free(ruby_curl_upload *rbcu) {
17
+ free(rbcu);
18
+ }
19
+
20
+ /*
21
+ * call-seq:
22
+ * internal class for sending large file uploads
23
+ */
24
+ VALUE ruby_curl_upload_new(VALUE klass) {
25
+ VALUE upload;
26
+ ruby_curl_upload *rbcu = ALLOC(ruby_curl_upload);
27
+ rbcu->stream = Qnil;
28
+ rbcu->offset = 0;
29
+ upload = Data_Wrap_Struct(klass, curl_upload_mark, curl_upload_free, rbcu);
30
+ return upload;
31
+ }
32
+
33
+ /*
34
+ * call-seq:
35
+ * internal class for sending large file uploads
36
+ */
37
+ VALUE ruby_curl_upload_stream_set(VALUE self, VALUE stream) {
38
+ ruby_curl_upload *rbcu;
39
+ Data_Get_Struct(self, ruby_curl_upload, rbcu);
40
+ rbcu->stream = stream;
41
+ return stream;
42
+ }
43
+ /*
44
+ * call-seq:
45
+ * internal class for sending large file uploads
46
+ */
47
+ VALUE ruby_curl_upload_stream_get(VALUE self) {
48
+ ruby_curl_upload *rbcu;
49
+ Data_Get_Struct(self, ruby_curl_upload, rbcu);
50
+ return rbcu->stream;
51
+ }
52
+ /*
53
+ * call-seq:
54
+ * internal class for sending large file uploads
55
+ */
56
+ VALUE ruby_curl_upload_offset_set(VALUE self, VALUE offset) {
57
+ ruby_curl_upload *rbcu;
58
+ Data_Get_Struct(self, ruby_curl_upload, rbcu);
59
+ rbcu->offset = FIX2LONG(offset);
60
+ return offset;
61
+ }
62
+ /*
63
+ * call-seq:
64
+ * internal class for sending large file uploads
65
+ */
66
+ VALUE ruby_curl_upload_offset_get(VALUE self) {
67
+ ruby_curl_upload *rbcu;
68
+ Data_Get_Struct(self, ruby_curl_upload, rbcu);
69
+ return INT2FIX(rbcu->offset);
70
+ }
71
+
72
+ /* =================== INIT LIB =====================*/
73
+ void init_curb_upload() {
74
+ cCurlUpload = rb_define_class_under(mCurl, "Upload", rb_cObject);
75
+ rb_define_singleton_method(cCurlUpload, "new", ruby_curl_upload_new, 0);
76
+ rb_define_method(cCurlUpload, "stream=", ruby_curl_upload_stream_set, 1);
77
+ rb_define_method(cCurlUpload, "stream", ruby_curl_upload_stream_get, 0);
78
+ rb_define_method(cCurlUpload, "offset=", ruby_curl_upload_offset_set, 1);
79
+ rb_define_method(cCurlUpload, "offset", ruby_curl_upload_offset_get, 0);
80
+ }
@@ -0,0 +1,30 @@
1
+ /* curb_upload.h - Curl upload handle
2
+ * Copyright (c)2009 Todd A Fisher.
3
+ * Licensed under the Ruby License. See LICENSE for details.
4
+ */
5
+ #ifndef __CURB_UPLOAD_H
6
+ #define __CURB_UPLOAD_H
7
+
8
+ #include "curb.h"
9
+
10
+ #include <curl/easy.h>
11
+
12
+ /*
13
+ * Maintain the state of an upload e.g. for putting large streams with very little memory
14
+ * out to a server. via PUT requests
15
+ */
16
+ typedef struct {
17
+ VALUE stream;
18
+ size_t offset;
19
+ } ruby_curl_upload;
20
+
21
+ extern VALUE cCurlUpload;
22
+ void init_curb_upload();
23
+
24
+ VALUE ruby_curl_upload_new(VALUE klass);
25
+ VALUE ruby_curl_upload_stream_set(VALUE self, VALUE stream);
26
+ VALUE ruby_curl_upload_stream_get(VALUE self);
27
+ VALUE ruby_curl_upload_offset_set(VALUE self, VALUE offset);
28
+ VALUE ruby_curl_upload_offset_get(VALUE self);
29
+
30
+ #endif
@@ -0,0 +1,399 @@
1
+ require 'mkmf'
2
+
3
+ dir_config('curl')
4
+
5
+ if find_executable('curl-config')
6
+ $CFLAGS << " #{`curl-config --cflags`.strip} -g"
7
+ if ENV['STATIC_BUILD']
8
+ $LIBS << " #{`curl-config --static-libs`.strip}"
9
+ else
10
+ $LIBS << " #{`curl-config --libs`.strip}"
11
+ end
12
+ ca_bundle_path=`curl-config --ca`.strip
13
+ if !ca_bundle_path.nil? and ca_bundle_path != ''
14
+ $defs.push( %{-D HAVE_CURL_CONFIG_CA} )
15
+ $defs.push( %{-D CURL_CONFIG_CA='#{ca_bundle_path.inspect}'} )
16
+ end
17
+ elsif !have_library('curl') or !have_header('curl/curl.h')
18
+ fail <<-EOM
19
+ Can't find libcurl or curl/curl.h
20
+
21
+ Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
22
+ options to extconf.
23
+ EOM
24
+ end
25
+
26
+ # Check arch flags
27
+ # TODO: detect mismatched arch types when libcurl mac ports is mixed with native mac ruby or vice versa
28
+ #archs = $CFLAGS.scan(/-arch\s(.*?)\s/).first # get the first arch flag
29
+ #if archs and archs.size >= 1
30
+ # # need to reduce the number of archs...
31
+ # # guess the first one is correct... at least the first one is probably the ruby installed arch...
32
+ # # this could lead to compiled binaries that crash at runtime...
33
+ # $CFLAGS.gsub!(/-arch\s(.*?)\s/,' ')
34
+ # $CFLAGS << " -arch #{archs.first}"
35
+ # puts "Selected arch: #{archs.first}"
36
+ #end
37
+
38
+ def define(s, v=1)
39
+ $defs.push( format("-D HAVE_%s=%d", s.to_s.upcase, v) )
40
+ end
41
+
42
+ def have_constant(name)
43
+ sname = name.is_a?(Symbol) ? name.to_s : name.upcase
44
+ checking_for name do
45
+ src = %{
46
+ #include <curl/curl.h>
47
+ int main() {
48
+ int test = (int)#{sname};
49
+ return 0;
50
+ }
51
+ }
52
+ if try_compile(src,"#{$CFLAGS} #{$LIBS}")
53
+ define name
54
+ true
55
+ else
56
+ #define name, 0
57
+ false
58
+ end
59
+ end
60
+ end
61
+
62
+ have_constant "curlinfo_redirect_time"
63
+ have_constant "curlinfo_response_code"
64
+ have_constant "curlinfo_filetime"
65
+ have_constant "curlinfo_redirect_count"
66
+ have_constant "curlinfo_os_errno"
67
+ have_constant "curlinfo_num_connects"
68
+ have_constant "curlinfo_ftp_entry_path"
69
+ have_constant "curl_version_ssl"
70
+ have_constant "curl_version_libz"
71
+ have_constant "curl_version_ntlm"
72
+ have_constant "curl_version_gssnegotiate"
73
+ have_constant "curl_version_debug"
74
+ have_constant "curl_version_asynchdns"
75
+ have_constant "curl_version_spnego"
76
+ have_constant "curl_version_largefile"
77
+ have_constant "curl_version_idn"
78
+ have_constant "curl_version_sspi"
79
+ have_constant "curl_version_conv"
80
+ have_constant "curlproxy_http"
81
+ have_constant "curlproxy_socks4"
82
+ have_constant "curlproxy_socks5"
83
+ have_constant "curlauth_basic"
84
+ have_constant "curlauth_digest"
85
+ have_constant "curlauth_gssnegotiate"
86
+ have_constant "curlauth_ntlm"
87
+ have_constant "curlauth_anysafe"
88
+ have_constant "curlauth_any"
89
+ have_constant "curle_tftp_notfound"
90
+ have_constant "curle_tftp_perm"
91
+ have_constant "curle_tftp_diskfull"
92
+ have_constant "curle_tftp_illegal"
93
+ have_constant "curle_tftp_unknownid"
94
+ have_constant "curle_tftp_exists"
95
+ have_constant "curle_tftp_nosuchuser"
96
+ # older versions of libcurl 7.12
97
+ have_constant "curle_send_fail_rewind"
98
+ have_constant "curle_ssl_engine_initfailed"
99
+ have_constant "curle_login_denied"
100
+
101
+ # older than 7.16.3
102
+ have_constant "curlmopt_maxconnects"
103
+
104
+ have_constant "curlopt_seekfunction"
105
+ have_constant "curlopt_seekdata"
106
+ have_constant "curlopt_sockoptfunction"
107
+ have_constant "curlopt_sockoptdata"
108
+ have_constant "curlopt_opensocketfunction"
109
+ have_constant "curlopt_opensocketdata"
110
+
111
+ # additional consts
112
+ have_constant "curle_conv_failed"
113
+ have_constant "curle_conv_reqd"
114
+ have_constant "curle_ssl_cacert_badfile"
115
+ have_constant "curle_remote_file_not_found"
116
+ have_constant "curle_ssh"
117
+ have_constant "curle_ssl_shutdown_failed"
118
+ have_constant "curle_again"
119
+ have_constant "curle_ssl_crl_badfile"
120
+ have_constant "curle_ssl_issuer_error"
121
+
122
+ # added in 7.18.2
123
+ have_constant "curlinfo_redirect_url"
124
+
125
+ # username/password added in 7.19.1
126
+ have_constant "curlopt_username"
127
+ have_constant "curlopt_password"
128
+ have_constant "curlinfo_primary_ip"
129
+
130
+ # ie quirk added in 7.19.3
131
+ have_constant "curlauth_digest_ie"
132
+
133
+ # added in 7.15.1
134
+ have_constant "curlftpmethod_multicwd"
135
+ have_constant "curlftpmethod_nocwd"
136
+ have_constant "curlftpmethod_singlecwd"
137
+
138
+ # centos 4.5 build of libcurl
139
+ have_constant "curlm_bad_socket"
140
+ have_constant "curlm_unknown_option"
141
+ have_func("curl_multi_timeout")
142
+ have_func("curl_multi_fdset")
143
+ have_func("curl_multi_perform")
144
+
145
+ # constants
146
+ have_constant "curlopt_interleavefunction"
147
+ have_constant "curlopt_interleavedata"
148
+ have_constant "curlopt_chunk_bgn_function"
149
+ have_constant "curlopt_chunk_end_function"
150
+ have_constant "curlopt_chunk_data"
151
+ have_constant "curlopt_fnmatch_function"
152
+ have_constant "curlopt_fnmatch_data"
153
+ have_constant "curlopt_errorbuffer"
154
+ have_constant "curlopt_stderr"
155
+ have_constant "curlopt_failonerror"
156
+ have_constant "curlopt_url"
157
+ have_constant "curlopt_protocols"
158
+ have_constant "curlopt_redir_protocols"
159
+ have_constant "curlopt_proxy"
160
+ have_constant "curlopt_proxyport"
161
+ have_constant "curlopt_proxytype"
162
+ have_constant "curlopt_noproxy"
163
+ have_constant "curlopt_httpproxytunnel"
164
+ have_constant "curlopt_socks5_gssapi_service"
165
+ have_constant "curlopt_socks5_gssapi_nec"
166
+ have_constant "curlopt_interface"
167
+ have_constant "curlopt_localport"
168
+ have_constant "curlopt_dns_cache_timeout"
169
+ have_constant "curlopt_dns_use_global_cache"
170
+ have_constant "curlopt_buffersize"
171
+ have_constant "curlopt_port"
172
+ have_constant "curlopt_tcp_nodelay"
173
+ have_constant "curlopt_address_scope"
174
+ have_constant "curlopt_netrc"
175
+ have_constant "curl_netrc_optional"
176
+ have_constant "curl_netrc_ignored"
177
+ have_constant "curl_netrc_required"
178
+ have_constant "curlopt_netrc_file"
179
+ have_constant "curlopt_userpwd"
180
+ have_constant "curlopt_proxyuserpwd"
181
+ have_constant "curlopt_username"
182
+ have_constant "curlopt_password"
183
+ have_constant "curlopt_password"
184
+ have_constant "curlopt_password"
185
+ have_constant "curlopt_httpauth"
186
+ have_constant "curlauth_digest_ie"
187
+ have_constant "curlauth_only"
188
+ have_constant "curlopt_tlsauth_type"
189
+ have_constant "curlopt_tlsauth_srp"
190
+ have_constant "curlopt_tlsauth_username"
191
+ have_constant "curlopt_tlsauth_password"
192
+ have_constant "curlopt_proxyauth"
193
+ have_constant "curlopt_autoreferer"
194
+ have_constant "curlopt_encoding"
195
+ have_constant "curlopt_followlocation"
196
+ have_constant "curlopt_unrestricted_auth"
197
+ have_constant "curlopt_maxredirs"
198
+ have_constant "curlopt_postredir"
199
+ have_constant "curlopt_put"
200
+ have_constant "curlopt_post"
201
+ have_constant "curlopt_postfields"
202
+ have_constant "curlopt_postfieldsize"
203
+ have_constant "curlopt_postfieldsize_large"
204
+ have_constant "curlopt_copypostfields"
205
+ have_constant "curlopt_httppost"
206
+ have_constant "curlopt_referer"
207
+ have_constant "curlopt_useragent"
208
+ have_constant "curlopt_httpheader"
209
+ have_constant "curlopt_http200aliases"
210
+ have_constant "curlopt_cookie"
211
+ have_constant "curlopt_cookiefile"
212
+ have_constant "curlopt_cookiejar"
213
+ have_constant "curlopt_cookiesession"
214
+ have_constant "curlopt_cookielist"
215
+ have_constant "curlopt_httpget"
216
+ have_constant "curlopt_http_version"
217
+ have_constant "curl_http_version_none"
218
+ have_constant "curl_http_version_1_0"
219
+ have_constant "curl_http_version_1_1"
220
+ have_constant "curlopt_ignore_content_length"
221
+ have_constant "curlopt_http_content_decoding"
222
+ have_constant "curlopt_http_transfer_decoding"
223
+ have_constant "curlopt_mail_from"
224
+ have_constant "curlopt_mail_rcpt"
225
+ have_constant "curlopt_tftp_blksize"
226
+ have_constant "curlopt_ftpport"
227
+ have_constant "curlopt_quote"
228
+ have_constant "curlopt_postquote"
229
+ have_constant "curlopt_prequote"
230
+ have_constant "curlopt_dirlistonly"
231
+ have_constant "curlopt_append"
232
+ have_constant "curlopt_ftp_use_eprt"
233
+ have_constant "curlopt_ftp_use_epsv"
234
+ have_constant "curlopt_ftp_use_pret"
235
+ have_constant "curlopt_ftp_create_missing_dirs"
236
+ have_constant "curlopt_ftp_response_timeout"
237
+ have_constant "curlopt_ftp_alternative_to_user"
238
+ have_constant "curlopt_ftp_skip_pasv_ip"
239
+ have_constant "curlopt_ftpsslauth"
240
+ have_constant "curlftpauth_default"
241
+ have_constant "curlftpauth_ssl"
242
+ have_constant "curlftpauth_tls"
243
+ have_constant "curlopt_ftp_ssl_ccc"
244
+ have_constant "curlftpssl_ccc_none"
245
+ have_constant "curlftpssl_ccc_passive"
246
+ have_constant "curlftpssl_ccc_active"
247
+ have_constant "curlopt_ftp_account"
248
+ have_constant "curlopt_ftp_filemethod"
249
+ have_constant "curlftpmethod_multicwd"
250
+ have_constant "curlftpmethod_nocwd"
251
+ have_constant "curlftpmethod_singlecwd"
252
+ have_constant "curlopt_rtsp_request"
253
+ have_constant "curl_rtspreq_options"
254
+ have_constant "curl_rtspreq_describe"
255
+ have_constant "curl_rtspreq_announce"
256
+ have_constant "curl_rtspreq_setup"
257
+ have_constant "curl_rtspreq_play"
258
+ have_constant "curl_rtspreq_pause"
259
+ have_constant "curl_rtspreq_teardown"
260
+ have_constant "curl_rtspreq_get_parameter"
261
+ have_constant "curl_rtspreq_set_parameter"
262
+ have_constant "curl_rtspreq_record"
263
+ have_constant "curl_rtspreq_receive"
264
+ have_constant "curlopt_rtsp_session_id"
265
+ have_constant "curlopt_rtsp_stream_uri"
266
+ have_constant "curlopt_rtsp_transport"
267
+ have_constant "curlopt_rtsp_header"
268
+ have_constant "curlopt_rtsp_client_cseq"
269
+ have_constant "curlopt_rtsp_server_cseq"
270
+ have_constant "curlopt_transfertext"
271
+ have_constant "curlopt_proxy_transfer_mode"
272
+ have_constant "curlopt_crlf"
273
+ have_constant "curlopt_range"
274
+ have_constant "curlopt_resume_from"
275
+ have_constant "curlopt_resume_from_large"
276
+ have_constant "curlopt_customrequest"
277
+ have_constant "curlopt_filetime"
278
+ have_constant "curlopt_nobody"
279
+ have_constant "curlopt_infilesize"
280
+ have_constant "curlopt_infilesize_large"
281
+ have_constant "curlopt_upload"
282
+ have_constant "curlopt_maxfilesize"
283
+ have_constant "curlopt_maxfilesize_large"
284
+ have_constant "curlopt_timecondition"
285
+ have_constant "curlopt_timevalue"
286
+ have_constant "curlopt_timeout"
287
+ have_constant "curlopt_timeout_ms"
288
+ have_constant "curlopt_low_speed_limit"
289
+ have_constant "curlopt_low_speed_time"
290
+ have_constant "curlopt_max_send_speed_large"
291
+ have_constant "curlopt_max_recv_speed_large"
292
+ have_constant "curlopt_maxconnects"
293
+ have_constant "curlopt_closepolicy"
294
+ have_constant "curlopt_fresh_connect"
295
+ have_constant "curlopt_forbid_reuse"
296
+ have_constant "curlopt_connecttimeout"
297
+ have_constant "curlopt_connecttimeout_ms"
298
+ have_constant "curlopt_ipresolve"
299
+ have_constant "curl_ipresolve_whatever"
300
+ have_constant "curl_ipresolve_v4"
301
+ have_constant "curl_ipresolve_v6"
302
+ have_constant "curlopt_connect_only"
303
+ have_constant "curlopt_use_ssl"
304
+ have_constant "curlusessl_none"
305
+ have_constant "curlusessl_try"
306
+ have_constant "curlusessl_control"
307
+ have_constant "curlusessl_all"
308
+ have_constant "curlopt_resolve"
309
+ have_constant "curlopt_sslcert"
310
+ have_constant "curlopt_sslcerttype"
311
+ have_constant "curlopt_sslkey"
312
+ have_constant "curlopt_sslkeytype"
313
+ have_constant "curlopt_keypasswd"
314
+ have_constant "curlopt_sslengine"
315
+ have_constant "curlopt_sslengine_default"
316
+ have_constant "curlopt_sslversion"
317
+ have_constant "curl_sslversion_default"
318
+ have_constant :CURL_SSLVERSION_TLSv1
319
+ have_constant :CURL_SSLVERSION_SSLv2
320
+ have_constant :CURL_SSLVERSION_SSLv3
321
+ have_constant "curlopt_ssl_verifypeer"
322
+ have_constant "curlopt_cainfo"
323
+ have_constant "curlopt_issuercert"
324
+ have_constant "curlopt_capath"
325
+ have_constant "curlopt_crlfile"
326
+ have_constant "curlopt_ssl_verifyhost"
327
+ have_constant "curlopt_certinfo"
328
+ have_constant "curlopt_random_file"
329
+ have_constant "curlopt_egdsocket"
330
+ have_constant "curlopt_ssl_cipher_list"
331
+ have_constant "curlopt_ssl_sessionid_cache"
332
+ have_constant "curlopt_krblevel"
333
+ have_constant "curlopt_ssh_auth_types"
334
+ have_constant "curlopt_ssh_host_public_key_md5"
335
+ have_constant "curlopt_ssh_public_keyfile"
336
+ have_constant "curlopt_ssh_private_keyfile"
337
+ have_constant "curlopt_ssh_knownhosts"
338
+ have_constant "curlopt_ssh_keyfunction"
339
+ have_constant "curlkhstat_fine_add_to_file"
340
+ have_constant "curlkhstat_fine"
341
+ have_constant "curlkhstat_reject"
342
+ have_constant "curlkhstat_defer"
343
+ have_constant "curlopt_ssh_keydata"
344
+ have_constant "curlopt_private"
345
+ have_constant "curlopt_share"
346
+ have_constant "curlopt_new_file_perms"
347
+ have_constant "curlopt_new_directory_perms"
348
+ have_constant "curlopt_telnetoptions"
349
+ # was obsoleted in August 2007 for 7.17.0, reused in April 2011 for 7.21.5
350
+ have_constant "curle_not_built_in"
351
+
352
+ have_constant "curle_obsolete" # removed in 7.24 ?
353
+
354
+ if try_compile('int main() { return 0; }','-Wall')
355
+ $CFLAGS << ' -Wall'
356
+ end
357
+
358
+ # do some checking to detect ruby 1.8 hash.c vs ruby 1.9 hash.c
359
+ def test_for(name, const, src)
360
+ checking_for name do
361
+ if try_compile(src,"#{$CFLAGS} #{$LIBS}")
362
+ define const
363
+ true
364
+ else
365
+ false
366
+ end
367
+ end
368
+ end
369
+ test_for("Ruby 1.9 Hash", "RUBY19_HASH", %{
370
+ #include <ruby.h>
371
+ int main() {
372
+ VALUE hash = rb_hash_new();
373
+ if( RHASH(hash)->ntbl->num_entries ) {
374
+ return 0;
375
+ }
376
+ return 1;
377
+ }
378
+ })
379
+ test_for("Ruby 1.9 st.h", "RUBY19_ST_H", %{
380
+ #include <ruby.h>
381
+ #include <ruby/st.h>
382
+ int main() {
383
+ return 0;
384
+ }
385
+ })
386
+
387
+ test_for("curl_easy_escape", "CURL_EASY_ESCAPE", %{
388
+ #include <curl/curl.h>
389
+ int main() {
390
+ CURL *easy = curl_easy_init();
391
+ curl_easy_escape(easy,"hello",5);
392
+ return 0;
393
+ }
394
+ })
395
+
396
+ have_func('rb_thread_blocking_region')
397
+
398
+ create_header('curb_config.h')
399
+ create_makefile('curb_core')