Check-in [0c4baf9591]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:added curl library
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0c4baf9591a02ec8f94f377a5551e5c4caf29810
User & Date: aldo 2017-09-11 21:19:31
Context
2017-09-11
21:20
fixed some include/resolve check-in: 87b69065d8 user: aldo tags: trunk
21:19
added curl library check-in: 0c4baf9591 user: aldo tags: trunk
21:18
added base64 library check-in: ac71b34f1f user: aldo tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Added curl.sls.



























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
;;
;; Copyright 2017 Aldo Nicolas Bruno
;;
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at
;;
;;     http://www.apache.org/licenses/LICENSE-2.0
;;
;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.

(library (curl)
  (export curl-global-init
	  curl-easy-init
	  curl-easy-perform
	  curl-easy-setopt/function
	  curl-easy-setopt/offset
	  curl-easy-setopt/scheme-object
	  curl-easy-setopt/object
	  curl-easy-setopt/string
	  curl-easy-setopt/long
	  curl-easy-cleanup
	  curl-slist-free-all
	  curl-slist-append
	  curl_slist
	  
	  curl-read-callback
	  curl-write-callback

	  CURLUSESSL
	  
	  CURL_GLOBAL_SSL
	  CURL_GLOBAL_WIN32
	  CURL_GLOBAL_ALL
	  CURL_GLOBAL_NOTHING
	  CURL_GLOBAL_DEFAULT
	  CURL_GLOBAL_ACK_EINTR 
	  CURLFTP_CREATE_DIR_NONE
	  CURLFTP_CREATE_DIR
	  CURLFTP_CREATE_DIR_RETRY

	  CURLOPT_WRITEDATA CURLOPT_URL CURLOPT_PORT CURLOPT_PROXY
	  CURLOPT_USERPWD CURLOPT_PROXYUSERPWD CURLOPT_RANGE CURLOPT_READDATA
	  CURLOPT_ERRORBUFFER CURLOPT_WRITEFUNCTION CURLOPT_READFUNCTION
	  CURLOPT_TIMEOUT CURLOPT_INFILESIZE CURLOPT_POSTFIELDS CURLOPT_REFERER
	  CURLOPT_FTPPORT CURLOPT_USERAGENT CURLOPT_LOW_SPEED_LIMIT
	  CURLOPT_LOW_SPEED_TIME CURLOPT_RESUME_FROM CURLOPT_COOKIE
	  CURLOPT_HTTPHEADER CURLOPT_HTTPPOST CURLOPT_SSLCERT CURLOPT_KEYPASSWD
	  CURLOPT_CRLF CURLOPT_QUOTE CURLOPT_HEADERDATA CURLOPT_COOKIEFILE
	  CURLOPT_SSLVERSION CURLOPT_TIMECONDITION CURLOPT_TIMEVALUE
	  CURLOPT_CUSTOMREQUEST CURLOPT_STDERR CURLOPT_POSTQUOTE
	  CURLOPT_OBSOLETE40 CURLOPT_VERBOSE CURLOPT_HEADER CURLOPT_NOPROGRESS
	  CURLOPT_NOBODY CURLOPT_FAILONERROR CURLOPT_UPLOAD CURLOPT_POST
	  CURLOPT_DIRLISTONLY CURLOPT_APPEND CURLOPT_NETRC
	  CURLOPT_FOLLOWLOCATION CURLOPT_TRANSFERTEXT CURLOPT_PUT
	  CURLOPT_PROGRESSFUNCTION CURLOPT_PROGRESSDATA CURLOPT_AUTOREFERER
	  CURLOPT_PROXYPORT CURLOPT_POSTFIELDSIZE CURLOPT_HTTPPROXYTUNNEL
	  CURLOPT_INTERFACE CURLOPT_KRBLEVEL CURLOPT_SSL_VERIFYPEER
	  CURLOPT_CAINFO CURLOPT_MAXREDIRS CURLOPT_FILETIME
	  CURLOPT_TELNETOPTIONS CURLOPT_MAXCONNECTS CURLOPT_OBSOLETE72
	  CURLOPT_FRESH_CONNECT CURLOPT_FORBID_REUSE CURLOPT_RANDOM_FILE
	  CURLOPT_EGDSOCKET CURLOPT_CONNECTTIMEOUT CURLOPT_HEADERFUNCTION
	  CURLOPT_HTTPGET CURLOPT_SSL_VERIFYHOST CURLOPT_COOKIEJAR
	  CURLOPT_SSL_CIPHER_LIST CURLOPT_HTTP_VERSION CURLOPT_FTP_USE_EPSV
	  CURLOPT_SSLCERTTYPE CURLOPT_SSLKEY CURLOPT_SSLKEYTYPE
	  CURLOPT_SSLENGINE CURLOPT_SSLENGINE_DEFAULT
	  CURLOPT_DNS_USE_GLOBAL_CACHE CURLOPT_DNS_CACHE_TIMEOUT
	  CURLOPT_PREQUOTE CURLOPT_DEBUGFUNCTION CURLOPT_DEBUGDATA
	  CURLOPT_COOKIESESSION CURLOPT_CAPATH CURLOPT_BUFFERSIZE
	  CURLOPT_NOSIGNAL CURLOPT_SHARE CURLOPT_PROXYTYPE
	  CURLOPT_ACCEPT_ENCODING CURLOPT_PRIVATE CURLOPT_HTTP200ALIASES
	  CURLOPT_UNRESTRICTED_AUTH CURLOPT_FTP_USE_EPRT CURLOPT_HTTPAUTH
	  CURLOPT_SSL_CTX_FUNCTION CURLOPT_SSL_CTX_DATA
	  CURLOPT_FTP_CREATE_MISSING_DIRS CURLOPT_PROXYAUTH
	  CURLOPT_FTP_RESPONSE_TIMEOUT CURLOPT_IPRESOLVE CURLOPT_MAXFILESIZE
	  CURLOPT_INFILESIZE_LARGE CURLOPT_RESUME_FROM_LARGE
	  CURLOPT_MAXFILESIZE_LARGE CURLOPT_NETRC_FILE CURLOPT_USE_SSL
	  CURLOPT_POSTFIELDSIZE_LARGE CURLOPT_TCP_NODELAY CURLOPT_FTPSSLAUTH
	  CURLOPT_IOCTLFUNCTION CURLOPT_IOCTLDATA CURLOPT_FTP_ACCOUNT
	  CURLOPT_COOKIELIST CURLOPT_IGNORE_CONTENT_LENGTH
	  CURLOPT_FTP_SKIP_PASV_IP CURLOPT_FTP_FILEMETHOD CURLOPT_LOCALPORT
	  CURLOPT_LOCALPORTRANGE CURLOPT_CONNECT_ONLY
	  CURLOPT_CONV_FROM_NETWORK_FUNCTION CURLOPT_CONV_TO_NETWORK_FUNCTION
	  CURLOPT_CONV_FROM_UTF8_FUNCTION CURLOPT_MAX_SEND_SPEED_LARGE
	  CURLOPT_MAX_RECV_SPEED_LARGE CURLOPT_FTP_ALTERNATIVE_TO_USER
	  CURLOPT_SOCKOPTFUNCTION CURLOPT_SOCKOPTDATA
	  CURLOPT_SSL_SESSIONID_CACHE CURLOPT_SSH_AUTH_TYPES
	  CURLOPT_SSH_PUBLIC_KEYFILE CURLOPT_SSH_PRIVATE_KEYFILE
	  CURLOPT_FTP_SSL_CCC CURLOPT_TIMEOUT_MS CURLOPT_CONNECTTIMEOUT_MS
	  CURLOPT_HTTP_TRANSFER_DECODING CURLOPT_HTTP_CONTENT_DECODING
	  CURLOPT_NEW_FILE_PERMS CURLOPT_NEW_DIRECTORY_PERMS CURLOPT_POSTREDIR
	  CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 CURLOPT_OPENSOCKETFUNCTION
	  CURLOPT_OPENSOCKETDATA CURLOPT_COPYPOSTFIELDS
	  CURLOPT_PROXY_TRANSFER_MODE CURLOPT_SEEKFUNCTION CURLOPT_SEEKDATA
	  CURLOPT_CRLFILE CURLOPT_ISSUERCERT CURLOPT_ADDRESS_SCOPE
	  CURLOPT_CERTINFO CURLOPT_USERNAME CURLOPT_PASSWORD
	  CURLOPT_PROXYUSERNAME CURLOPT_PROXYPASSWORD CURLOPT_NOPROXY
	  CURLOPT_TFTP_BLKSIZE CURLOPT_SOCKS5_GSSAPI_SERVICE
	  CURLOPT_SOCKS5_GSSAPI_NEC CURLOPT_PROTOCOLS CURLOPT_REDIR_PROTOCOLS
	  CURLOPT_SSH_KNOWNHOSTS CURLOPT_SSH_KEYFUNCTION CURLOPT_SSH_KEYDATA
	  CURLOPT_MAIL_FROM CURLOPT_MAIL_RCPT CURLOPT_FTP_USE_PRET
	  CURLOPT_RTSP_REQUEST CURLOPT_RTSP_SESSION_ID CURLOPT_RTSP_STREAM_URI
	  CURLOPT_RTSP_TRANSPORT CURLOPT_RTSP_CLIENT_CSEQ
	  CURLOPT_RTSP_SERVER_CSEQ CURLOPT_INTERLEAVEDATA
	  CURLOPT_INTERLEAVEFUNCTION CURLOPT_WILDCARDMATCH
	  CURLOPT_CHUNK_BGN_FUNCTION CURLOPT_CHUNK_END_FUNCTION
	  CURLOPT_FNMATCH_FUNCTION CURLOPT_CHUNK_DATA CURLOPT_FNMATCH_DATA
	  CURLOPT_RESOLVE CURLOPT_TLSAUTH_USERNAME CURLOPT_TLSAUTH_PASSWORD
	  CURLOPT_TLSAUTH_TYPE CURLOPT_TRANSFER_ENCODING
	  CURLOPT_CLOSESOCKETFUNCTION CURLOPT_CLOSESOCKETDATA
	  CURLOPT_GSSAPI_DELEGATION CURLOPT_DNS_SERVERS CURLOPT_ACCEPTTIMEOUT_MS
	  CURLOPT_TCP_KEEPALIVE CURLOPT_TCP_KEEPIDLE CURLOPT_TCP_KEEPINTVL
	  CURLOPT_SSL_OPTIONS CURLOPT_MAIL_AUTH CURLOPT_SASL_IR
	  CURLOPT_XFERINFOFUNCTION CURLOPT_XOAUTH2_BEARER CURLOPT_DNS_INTERFACE
	  CURLOPT_DNS_LOCAL_IP4 CURLOPT_DNS_LOCAL_IP6 CURLOPT_LOGIN_OPTIONS
	  CURLOPT_SSL_ENABLE_NPN CURLOPT_SSL_ENABLE_ALPN
	  CURLOPT_EXPECT_100_TIMEOUT_MS CURLOPT_PROXYHEADER CURLOPT_HEADEROPT
	  CURLOPT_PINNEDPUBLICKEY CURLOPT_UNIX_SOCKET_PATH
	  CURLOPT_SSL_VERIFYSTATUS CURLOPT_SSL_FALSESTART CURLOPT_PATH_AS_IS
	  CURLOPT_PROXY_SERVICE_NAME CURLOPT_SERVICE_NAME CURLOPT_PIPEWAIT
	  CURLOPT_DEFAULT_PROTOCOL CURLOPT_STREAM_WEIGHT CURLOPT_STREAM_DEPENDS
	  CURLOPT_STREAM_DEPENDS_E CURLOPT_TFTP_NO_OPTIONS CURLOPT_CONNECT_TO
	  CURLOPT_TCP_FASTOPEN

	  CURLPROTO_HTTP CURLPROTO_HTTPS CURLPROTO_FTP CURLPROTO_FTPS
	  CURLPROTO_SCP CURLPROTO_SFTP CURLPROTO_TELNET CURLPROTO_LDAP
	  CURLPROTO_LDAPS CURLPROTO_DICT CURLPROTO_FILE CURLPROTO_TFTP
	  CURLPROTO_IMAP CURLPROTO_IMAPS CURLPROTO_POP3 CURLPROTO_POP3S
	  CURLPROTO_SMTP CURLPROTO_SMTPS

	  CURLcode)
  
  (import (chezscheme)
	  (ffi-utils))

  (define-ftype CURL (struct))
  (define-ftype CURLoption int)

  (define CURLPROTO_HTTP  1)
  (define CURLPROTO_HTTPS 2)  
  (define CURLPROTO_FTP   4)
  (define CURLPROTO_FTPS  8)
  (define CURLPROTO_SCP  16)
  (define CURLPROTO_SFTP 32)
  (define CURLPROTO_TELNET 64)
  (define CURLPROTO_LDAP 128)
  (define CURLPROTO_LDAPS 256)
  (define CURLPROTO_DICT 512)
  (define CURLPROTO_FILE 1024)
  (define CURLPROTO_TFTP 2048)
  (define CURLPROTO_IMAP  4096)
  (define CURLPROTO_IMAPS 8192)
  (define CURLPROTO_POP3 16384)
  (define CURLPROTO_POP3S 32768)
  (define CURLPROTO_SMTP 65536)
  (define CURLPROTO_SMTPS 131072)
  
  (define-enumeration* CURLUSESSL
    (NONE TRY CONTROL ALL LAST))

  (define-enumeration* CURLcode
    (CURLE_OK
     CURLE_UNSUPPORTED_PROTOCOL   ;  /* 1 */
     CURLE_FAILED_INIT   ;           /* 2 */
     CURLE_URL_MALFORMAT   ;         /* 3 */
     CURLE_NOT_BUILT_IN   ;          /* 4 - [was obsoleted in August 2007 for
					; 7.17.0, reused in April 2011 for 7.21.5] */
     CURLE_COULDNT_RESOLVE_PROXY   ; /* 5 */
     CURLE_COULDNT_RESOLVE_HOST   ;  /* 6 */
     CURLE_COULDNT_CONNECT   ;       /* 7 */
     CURLE_WEIRD_SERVER_REPLY   ;    /* 8 */
     CURLE_REMOTE_ACCESS_DENIED   ;  /* 9 a service was denied by the server
					;  due to lack of access - when login fails
					;  this is not returned. */
     CURLE_FTP_ACCEPT_FAILED   ;     /* 10 - [was obsoleted in April 2006 for
					;  7.15.4, reused in Dec 2011 for 7.24.0]*/
     CURLE_FTP_WEIRD_PASS_REPLY   ;  /* 11 */
     CURLE_FTP_ACCEPT_TIMEOUT   ;    /* 12 - timeout occurred accepting server
					;  [was obsoleted in August 2007 for 7.17.0,
					;  reused in Dec 2011 for 7.24.0]*/
     CURLE_FTP_WEIRD_PASV_REPLY   ;  /* 13 */
     CURLE_FTP_WEIRD_227_FORMAT   ;  /* 14 */
     CURLE_FTP_CANT_GET_HOST   ;     /* 15 */
     CURLE_HTTP2   ;                 /* 16 - A problem in the http2 framing layer.
					;  [was obsoleted in August 2007 for 7.17.0,
					;  reused in July 2014 for 7.38.0] */
     CURLE_FTP_COULDNT_SET_TYPE   ;  /* 17 */
     CURLE_PARTIAL_FILE   ;          /* 18 */
     CURLE_FTP_COULDNT_RETR_FILE   ; /* 19 */
     CURLE_OBSOLETE20   ;            /* 20 - NOT USED */
     CURLE_QUOTE_ERROR   ;           /* 21 - quote command failure */
     CURLE_HTTP_RETURNED_ERROR   ;   /* 22 */
     CURLE_WRITE_ERROR   ;           /* 23 */
     CURLE_OBSOLETE24   ;            /* 24 - NOT USED */
     CURLE_UPLOAD_FAILED   ;         /* 25 - failed upload "command" */
     CURLE_READ_ERROR   ;            /* 26 - couldn't open/read from file */
     CURLE_OUT_OF_MEMORY   ;         /* 27 */
     ;; /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error
     ;;          instead of a memory allocation error if CURL_DOES_CONVERSIONS
     ;;          is defined
     ;; */
     CURLE_OPERATION_TIMEDOUT   ;    /* 28 - the timeout time was reached */
     CURLE_OBSOLETE29   ;            /* 29 - NOT USED */
     CURLE_FTP_PORT_FAILED   ;       /* 30 - FTP PORT operation failed */
     CURLE_FTP_COULDNT_USE_REST   ;  /* 31 - the REST command failed */
     CURLE_OBSOLETE32   ;            /* 32 - NOT USED */
     CURLE_RANGE_ERROR   ;           /* 33 - RANGE "command" didn't work */
     CURLE_HTTP_POST_ERROR   ;       /* 34 */
     CURLE_SSL_CONNECT_ERROR   ;     /* 35 - wrong when connecting with SSL */
     CURLE_BAD_DOWNLOAD_RESUME   ;   /* 36 - couldn't resume download */
     CURLE_FILE_COULDNT_READ_FILE   ;/* 37 */
     CURLE_LDAP_CANNOT_BIND   ;      /* 38 */
     CURLE_LDAP_SEARCH_FAILED   ;    /* 39 */
     CURLE_OBSOLETE40   ;            /* 40 - NOT USED */
     CURLE_FUNCTION_NOT_FOUND   ;    /* 41 */
     CURLE_ABORTED_BY_CALLBACK   ;   /* 42 */
     CURLE_BAD_FUNCTION_ARGUMENT   ; /* 43 */
     CURLE_OBSOLETE44   ;            /* 44 - NOT USED */
     CURLE_INTERFACE_FAILED   ;      /* 45 - CURLOPT_INTERFACE failed */
     CURLE_OBSOLETE46   ;            /* 46 - NOT USED */
     CURLE_TOO_MANY_REDIRECTS   ;    /* 47 - catch endless re-direct loops */
     CURLE_UNKNOWN_OPTION   ;        /* 48 - User specified an unknown option */
     CURLE_TELNET_OPTION_SYNTAX   ;  /* 49 - Malformed telnet option */
     CURLE_OBSOLETE50   ;            /* 50 - NOT USED */
     CURLE_PEER_FAILED_VERIFICATION ; /* 51 - peer's certificate or fingerprint
					;   wasn't verified fine */
     CURLE_GOT_NOTHING   ;           /* 52 - when this is a specific error */
     CURLE_SSL_ENGINE_NOTFOUND   ;   /* 53 - SSL crypto engine not found */
     CURLE_SSL_ENGINE_SETFAILED   ;  /* 54 - can not set SSL crypto engine as
					;  default */
     CURLE_SEND_ERROR   ;            /* 55 - failed sending network data */
     CURLE_RECV_ERROR   ;            /* 56 - failure in receiving network data */
     CURLE_OBSOLETE57   ;            /* 57 - NOT IN USE */
     CURLE_SSL_CERTPROBLEM   ;       /* 58 - problem with the local certificate */
     CURLE_SSL_CIPHER   ;            /* 59 - couldn't use specified cipher */
     CURLE_SSL_CACERT   ;            /* 60 - problem with the CA cert (path?) */
     CURLE_BAD_CONTENT_ENCODING   ;  /* 61 - Unrecognized/bad encoding */
     CURLE_LDAP_INVALID_URL   ;      /* 62 - Invalid LDAP URL */
     CURLE_FILESIZE_EXCEEDED   ;     /* 63 - Maximum file size exceeded */
     CURLE_USE_SSL_FAILED   ;        /* 64 - Requested FTP SSL level failed */
     CURLE_SEND_FAIL_REWIND   ;      /* 65 - Sending the data requires a rewind
					;   that failed */
     CURLE_SSL_ENGINE_INITFAILED   ; /* 66 - failed to initialise ENGINE */
     CURLE_LOGIN_DENIED   ;          /* 67 - user, password or similar was not
					;   accepted and we failed to login */
     CURLE_TFTP_NOTFOUND   ;         /* 68 - file not found on server */
     CURLE_TFTP_PERM   ;             /* 69 - permission problem on server */
     CURLE_REMOTE_DISK_FULL   ;      /* 70 - out of disk space on server */
     CURLE_TFTP_ILLEGAL   ;          /* 71 - Illegal TFTP operation */
     CURLE_TFTP_UNKNOWNID   ;        /* 72 - Unknown transfer ID */
     CURLE_REMOTE_FILE_EXISTS   ;    /* 73 - File already exists */
     CURLE_TFTP_NOSUCHUSER   ;       /* 74 - No such user */
     CURLE_CONV_FAILED   ;           /* 75 - conversion failed */
     CURLE_CONV_REQD   ;             /* 76 - caller must register conversion
					;   callbacks using curl_easy_setopt options
					;   CURLOPT_CONV_FROM_NETWORK_FUNCTION,
					;   CURLOPT_CONV_TO_NETWORK_FUNCTION, and
					;   CURLOPT_CONV_FROM_UTF8_FUNCTION */
     CURLE_SSL_CACERT_BADFILE   ;    /* 77 - could not load CACERT file, missing
					;    or wrong format */
     CURLE_REMOTE_FILE_NOT_FOUND   ; /* 78 - remote file not found */
     CURLE_SSH   ;                   /* 79 - error from the SSH layer, somewhat
					;     generic so the error message will be of
					;     interest when this has happened */

     CURLE_SSL_SHUTDOWN_FAILED   ;   /* 80 - Failed to shut down the SSL
					;      connection */
     CURLE_AGAIN   ;                 /* 81 - socket is not ready for send/recv,
					;         wait till it's ready and try again (Added
					;         in 7.18.2) */
     CURLE_SSL_CRL_BADFILE   ;       /* 82 - could not load CRL file, missing or
					;         wrong format (Added in 7.19.0) */
     CURLE_SSL_ISSUER_ERROR   ;      /* 83 - Issuer check failed.  (Added in
					;         7.19.0) */
     CURLE_FTP_PRET_FAILED   ;       /* 84 - a PRET command failed */
     CURLE_RTSP_CSEQ_ERROR   ;       /* 85 - mismatch of RTSP CSeq numbers */
     CURLE_RTSP_SESSION_ERROR   ;    /* 86 - mismatch of RTSP Session Ids */
     CURLE_FTP_BAD_FILE_LIST   ;     /* 87 - unable to parse FTP file list */
     CURLE_CHUNK_FAILED   ;          /* 88 - chunk callback reported error */
     CURLE_NO_CONNECTION_AVAILABLE  ;/* 89 - No connection available, the
					;    session will be queued */
     CURLE_SSL_PINNEDPUBKEYNOTMATCH ; /* 90 - specified pinned public key did not
					;    match */
     CURLE_SSL_INVALIDCERTSTATUS   ; /* 91 - invalid certificate status */
     CURLE_HTTP2_STREAM   ;          /* 92 - stream error in HTTP/2 framing layer
     */
     CURL_LAST))
					;/* never use! */))

  (define LONG 0)
  (define OBJECTPOINT 10000)
  (define STRINGPOINT 10000)
  (define FUNCTIONPOINT 20000)
  (define OFF_T 30000)

  (define-syntax CINIT
    (lambda (x)
      (define gen-id
	(lambda (template-id . args)
	  (datum->syntax
	   template-id
	   (string->symbol
	    (apply string-append
		   (map (lambda (x)
			  (if (string? x) x (symbol->string (syntax->datum x))))
			args))))))
      (syntax-case x ()
	[(_ name type value)
	 (with-syntax ([opt-name (gen-id #'name "CURLOPT_" #'name)])
	   #'(define opt-name (fx+ type value)))])))


  (CINIT WRITEDATA OBJECTPOINT 1)

					; The full URL to get/put 
  (CINIT URL STRINGPOINT 2)

					; Port number to connect to if other than default. 
  (CINIT PORT LONG 3)

					; Name of proxy to use. 
  (CINIT PROXY STRINGPOINT 4)

					; "user:password;options" to use when fetching. 
  (CINIT USERPWD STRINGPOINT 5)

					; "user:password" to use with proxy. 
  (CINIT PROXYUSERPWD STRINGPOINT 6)

					; Range to get specified as an ASCII string. 
  (CINIT RANGE STRINGPOINT 7)

					; not used 

					; Specified file stream to upload from (use as input): 
  (CINIT READDATA OBJECTPOINT 9)

  ;; /* Buffer to receive error messages in must be at least CURL_ERROR_SIZE
  ;;  * bytes big. If this is not used error messages go to stderr instead: */
  (CINIT ERRORBUFFER OBJECTPOINT 10)

  ;; /* Function that will be called to store the output (instead of fwrite). The
  ;;  * parameters will use fwrite() syntax make sure to follow them. */
  (CINIT WRITEFUNCTION FUNCTIONPOINT 11)

  ;; /* Function that will be called to read the input (instead of fread). The
  ;;  * parameters will use fread() syntax make sure to follow them. */
  (CINIT READFUNCTION FUNCTIONPOINT 12)

					; Time-out the read operation after this amount of seconds 
  (CINIT TIMEOUT LONG 13)

  ;; /* If the CURLOPT_INFILE is used this can be used to inform libcurl about
  ;;  * how large the file being sent really is. That allows better error
  ;;  * checking and better verifies that the upload was successful. -1 means
  ;;  * unknown size.
  ;;  *
  ;;  * For large file support there is also a _LARGE version of the key
  ;;  * which takes an off_t type allowing platforms with larger off_t
  ;;  * sizes to handle larger files.  See below for INFILESIZE_LARGE.
  ;;  */
  (CINIT INFILESIZE LONG 14)

					; POST static input fields. 
  (CINIT POSTFIELDS OBJECTPOINT 15)

					; Set the referrer page (needed by some CGIs) 
  (CINIT REFERER STRINGPOINT 16)

  ;; /* Set the FTP PORT string (interface name named or numerical IP address)
  ;;    Use i.e '-' to use default address. */
  (CINIT FTPPORT STRINGPOINT 17)

					; Set the User-Agent string (examined by some CGIs) 
  (CINIT USERAGENT STRINGPOINT 18)

  ;; /* If the download receives less than "low speed limit" bytes/second
  ;;  * during "low speed time" seconds the operations is aborted.
  ;;  * You could i.e if you have a pretty high speed connection abort if
  ;;  * it is less than 2000 bytes/sec during 20 seconds.
  ;;  */

					; Set the "low speed limit" 
  (CINIT LOW_SPEED_LIMIT LONG 19)

					; Set the "low speed time" 
  (CINIT LOW_SPEED_TIME LONG 20)

  ;; /* Set the continuation offset.
  ;;  *
  ;;  * Note there is also a _LARGE version of this key which uses
  ;;  * off_t types allowing for large file offsets on platforms which
  ;;  * use larger-than-32-bit off_t's.  Look below for RESUME_FROM_LARGE.
  ;;  */
  (CINIT RESUME_FROM LONG 21)

					; Set cookie in request: 
  (CINIT COOKIE STRINGPOINT 22)

  ;; /* This points to a linked list of headers struct curl_slist kind. This
  ;;    list is also used for RTSP (in spite of its name) */
  (CINIT HTTPHEADER OBJECTPOINT 23)

					; This points to a linked list of post entries struct curl_httppost 
  (CINIT HTTPPOST OBJECTPOINT 24)

					; name of the file keeping your private SSL-certificate 
  (CINIT SSLCERT STRINGPOINT 25)

					; password for the SSL or SSH private key 
  (CINIT KEYPASSWD STRINGPOINT 26)

					; send TYPE parameter? 
  (CINIT CRLF LONG 27)

					; send linked-list of QUOTE commands 
  (CINIT QUOTE OBJECTPOINT 28)

  ;; /* send FILE * or void * to store headers to if you use a callback it
  ;;    is simply passed to the callback unmodified */
  (CINIT HEADERDATA OBJECTPOINT 29)

  ;; /* point to a file to read the initial cookies from also enables
  ;;    "cookie awareness" */
  (CINIT COOKIEFILE STRINGPOINT 31)

  ;; /* What version to specifically try to use.
  ;;    See CURL_SSLVERSION defines below. */
  (CINIT SSLVERSION LONG 32)

					; What kind of HTTP time condition to use see defines 
  (CINIT TIMECONDITION LONG 33)

  ;; /* Time to use with the above condition. Specified in number of seconds
  ;;    since 1 Jan 1970 */
  (CINIT TIMEVALUE LONG 34)

					; 35 = OBSOLETE 

  ;; /* Custom request for customizing the get command like
  ;;    HTTP: DELETE TRACE and others
  ;;    FTP: to use a different list command
  ;;    */
  (CINIT CUSTOMREQUEST STRINGPOINT 36)

					; FILE handle to use instead of stderr 
  (CINIT STDERR OBJECTPOINT 37)

					; 38 is not used 

					; send linked-list of post-transfer QUOTE commands 
  (CINIT POSTQUOTE OBJECTPOINT 39)

  (CINIT OBSOLETE40 OBJECTPOINT 40) ; OBSOLETE do not use! 

  (CINIT VERBOSE LONG 41)      ; talk a lot 
  (CINIT HEADER LONG 42)       ; throw the header out too 
  (CINIT NOPROGRESS LONG 43)   ; shut off the progress meter 
  (CINIT NOBODY LONG 44)       ; use HEAD to get http document 
  (CINIT FAILONERROR LONG 45)  ; no output on http error codes >= 400 
  (CINIT UPLOAD LONG 46)       ; this is an upload 
  (CINIT POST LONG 47)         ; HTTP POST method 
  (CINIT DIRLISTONLY LONG 48)  ; bare names when listing directories 

  (CINIT APPEND LONG 50)       ; Append instead of overwrite on upload! 

  ;; /* Specify whether to read the user+password from the .netrc or the URL.
  ;;  * This must be one of the CURL_NETRC_* enums below. */
  (CINIT NETRC LONG 51)

  (CINIT FOLLOWLOCATION LONG 52)  ; use Location: Luke! 

  (CINIT TRANSFERTEXT LONG 53) ; transfer data in text/ASCII format 
  (CINIT PUT LONG 54)          ; HTTP PUT 

					; 55 = OBSOLETE 

  ;; /* DEPRECATED
  ;;  * Function that will be called instead of the internal progress display
  ;;  * function. This function should be defined as the curl_progress_callback
  ;;  * prototype defines. */
  (CINIT PROGRESSFUNCTION FUNCTIONPOINT 56)

  ;; /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION
  ;;    callbacks */
  (CINIT PROGRESSDATA OBJECTPOINT 57)
  (define CURLOPT_XFERINFODATA CURLOPT_PROGRESSDATA)

					; We want the referrer field set automatically when following locations 
  (CINIT AUTOREFERER LONG 58)

  ;; /* Port of the proxy can be set in the proxy string as well with:
  ;;    "[host]:[port]" */
  (CINIT PROXYPORT LONG 59)

					; size of the POST input data if strlen() is not good to use 
  (CINIT POSTFIELDSIZE LONG 60)

					; tunnel non-http operations through a HTTP proxy 
  (CINIT HTTPPROXYTUNNEL LONG 61)

					; Set the interface string to use as outgoing network interface 
  (CINIT INTERFACE STRINGPOINT 62)

  ;; /* Set the krb4/5 security level this also enables krb4/5 awareness.  This
  ;;  * is a string 'clear' 'safe' 'confidential' or 'private'.  If the string
  ;;  * is set but doesn't match one of these 'private' will be used.  */
  (CINIT KRBLEVEL STRINGPOINT 63)

					; Set if we should verify the peer in ssl handshake set 1 to verify. 
  (CINIT SSL_VERIFYPEER LONG 64)

  ;; /* The CApath or CAfile used to validate the peer certificate
  ;;    this option is used only if SSL_VERIFYPEER is true */
  (CINIT CAINFO STRINGPOINT 65)

					; 66 = OBSOLETE 
					; 67 = OBSOLETE 

					; Maximum number of http redirects to follow 
  (CINIT MAXREDIRS LONG 68)

  ;; /* Pass a long set to 1 to get the date of the requested document (if
  ;;    possible)! Pass a zero to shut it off. */
  (CINIT FILETIME LONG 69)

					; This points to a linked list of telnet options 
  (CINIT TELNETOPTIONS OBJECTPOINT 70)

					; Max amount of cached alive connections 
  (CINIT MAXCONNECTS LONG 71)

  (CINIT OBSOLETE72 LONG 72) ; OBSOLETE do not use! 

					; 73 = OBSOLETE 

  ;; /* Set to explicitly use a new connection for the upcoming transfer.
  ;;    Do not use this unless you're absolutely sure of this as it makes the
  ;;    operation slower and is less friendly for the network. */
  (CINIT FRESH_CONNECT LONG 74)

  ;; /* Set to explicitly forbid the upcoming transfer's connection to be re-used
  ;;    when done. Do not use this unless you're absolutely sure of this as it
  ;;    makes the operation slower and is less friendly for the network. */
  (CINIT FORBID_REUSE LONG 75)

  ;; /* Set to a file name that contains random data for libcurl to use to
  ;;    seed the random engine when doing SSL connects. */
  (CINIT RANDOM_FILE STRINGPOINT 76)

					; Set to the Entropy Gathering Daemon socket pathname 
  (CINIT EGDSOCKET STRINGPOINT 77)

  ;; /* Time-out connect operations after this amount of seconds if connects are
  ;;    OK within this time then fine... This only aborts the connect phase. */
  (CINIT CONNECTTIMEOUT LONG 78)

  ;; /* Function that will be called to store headers (instead of fwrite). The
  ;;  * parameters will use fwrite() syntax make sure to follow them. */
  (CINIT HEADERFUNCTION FUNCTIONPOINT 79)

  ;; /* Set this to force the HTTP request to get back to GET. Only really usable
  ;;    if POST PUT or a custom request have been used first.
  ;;  */
  (CINIT HTTPGET LONG 80)

  ;; /* Set if we should verify the Common name from the peer certificate in ssl
  ;;  * handshake set 1 to check existence 2 to ensure that it matches the
  ;;  * provided hostname. */
  (CINIT SSL_VERIFYHOST LONG 81)

  ;; /* Specify which file name to write all known cookies in after completed
  ;;    operation. Set file name to "-" (dash) to make it go to stdout. */
  (CINIT COOKIEJAR STRINGPOINT 82)

					; Specify which SSL ciphers to use 
  (CINIT SSL_CIPHER_LIST STRINGPOINT 83)

  ;; /* Specify which HTTP version to use! This must be set to one of the
  ;;    CURL_HTTP_VERSION* enums set below. */
  (CINIT HTTP_VERSION LONG 84)

  ;; /* Specifically switch on or off the FTP engine's use of the EPSV command. By
  ;;    default that one will always be attempted before the more traditional
  ;;    PASV command. */
  (CINIT FTP_USE_EPSV LONG 85)

					; type of the file keeping your SSL-certificate ("DER" "PEM" "ENG") 
  (CINIT SSLCERTTYPE STRINGPOINT 86)

					; name of the file keeping your private SSL-key 
  (CINIT SSLKEY STRINGPOINT 87)

					; type of the file keeping your private SSL-key ("DER" "PEM" "ENG") 
  (CINIT SSLKEYTYPE STRINGPOINT 88)

					; crypto engine for the SSL-sub system 
  (CINIT SSLENGINE STRINGPOINT 89)

  ;; /* set the crypto engine for the SSL-sub system as default
  ;;    the param has no meaning...
  ;;  */
  (CINIT SSLENGINE_DEFAULT LONG 90)

					; Non-zero value means to use the global dns cache 
  (CINIT DNS_USE_GLOBAL_CACHE LONG 91) ; DEPRECATED do not use! 

					; DNS cache timeout 
  (CINIT DNS_CACHE_TIMEOUT LONG 92)

					; send linked-list of pre-transfer QUOTE commands 
  (CINIT PREQUOTE OBJECTPOINT 93)

					; set the debug function 
  (CINIT DEBUGFUNCTION FUNCTIONPOINT 94)

					; set the data for the debug function 
  (CINIT DEBUGDATA OBJECTPOINT 95)

					; mark this as start of a cookie session 
  (CINIT COOKIESESSION LONG 96)

  ;; /* The CApath directory used to validate the peer certificate
  ;;    this option is used only if SSL_VERIFYPEER is true */
  (CINIT CAPATH STRINGPOINT 97)

					; Instruct libcurl to use a smaller receive buffer 
  (CINIT BUFFERSIZE LONG 98)

  ;; /* Instruct libcurl to not use any signal/alarm handlers even when using
  ;;    timeouts. This option is useful for multi-threaded applications.
  ;;    See libcurl-the-guide for more background information. */
  (CINIT NOSIGNAL LONG 99)

					; Provide a CURLShare for mutexing non-ts data 
  (CINIT SHARE OBJECTPOINT 100)

  ;; /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default)
  ;;    CURLPROXY_SOCKS4 CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5. */
  (CINIT PROXYTYPE LONG 101)

  ;; /* Set the Accept-Encoding string. Use this to tell a server you would like
  ;;    the response to be compressed. Before 7.21.6 this was known as
  ;;    CURLOPT_ENCODING */
  (CINIT ACCEPT_ENCODING STRINGPOINT 102)

					; Set pointer to private data 
  (CINIT PRIVATE OBJECTPOINT 103)

					; Set aliases for HTTP 200 in the HTTP Response header 
  (CINIT HTTP200ALIASES OBJECTPOINT 104)

  ;; /* Continue to send authentication (user+password) when following locations,
  ;;    even when hostname changed. This can potentially send off the name
  ;;    and password to whatever host the server decides. */
  (CINIT UNRESTRICTED_AUTH LONG 105)

  ;; /* Specifically switch on or off the FTP engine's use of the EPRT command (
  ;;    it also disables the LPRT attempt). By default those ones will always be
  ;;    attempted before the good old traditional PORT command. */
  (CINIT FTP_USE_EPRT LONG 106)

  ;; /* Set this to a bitmask value to enable the particular authentications
  ;;    methods you like. Use this in combination with CURLOPT_USERPWD.
  ;;    Note that setting multiple bits may cause extra network round-trips. */
  (CINIT HTTPAUTH LONG 107)

  ;; /* Set the ssl context callback function currently only for OpenSSL ssl_ctx
  ;;    in second argument. The function must be matching the
  ;;    curl_ssl_ctx_callback proto. */
  (CINIT SSL_CTX_FUNCTION FUNCTIONPOINT 108)

  ;; /* Set the userdata for the ssl context callback function's third
  ;;    argument */
  (CINIT SSL_CTX_DATA OBJECTPOINT 109)

  ;; /* FTP Option that causes missing dirs to be created on the remote server.
  ;;    In 7.19.4 we introduced the convenience enums for this option using the
  ;;    CURLFTP_CREATE_DIR prefix.
  ;; */
  (CINIT FTP_CREATE_MISSING_DIRS LONG 110)

  ;; /* Set this to a bitmask value to enable the particular authentications
  ;;    methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.
  ;;    Note that setting multiple bits may cause extra network round-trips. */
  (CINIT PROXYAUTH LONG 111)

  ;; /* FTP option that changes the timeout in seconds associated with
  ;;    getting a response.  This is different from transfer timeout time and
  ;;    essentially places a demand on the FTP server to acknowledge commands
  ;;    in a timely manner. */
  (CINIT FTP_RESPONSE_TIMEOUT LONG 112)
  (define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT)

  ;; /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
  ;;    tell libcurl to resolve names to those IP versions only. This only has
  ;;    affect on systems with support for more than one i.e IPv4 _and_ IPv6. */
  (CINIT IPRESOLVE LONG 113)

  ;; /* Set this option to limit the size of a file that will be downloaded from
  ;;    an HTTP or FTP server.

  ;;    Note there is also _LARGE version which adds large file support for
  ;;    platforms which have larger off_t sizes.  See MAXFILESIZE_LARGE below. */
  (CINIT MAXFILESIZE LONG 114)

  ;; /* See the comment for INFILESIZE above but in short specifies
  ;;  * the size of the file being uploaded.  -1 means unknown.
  ;;  */
  (CINIT INFILESIZE_LARGE OFF_T 115)

  ;; /* Sets the continuation offset.  There is also a LONG version of this;
  ;;  * look above for RESUME_FROM.
  ;;  */
  (CINIT RESUME_FROM_LARGE OFF_T 116)

  ;; /* Sets the maximum size of data that will be downloaded from
  ;;  * an HTTP or FTP server.  See MAXFILESIZE above for the LONG version.
  ;;  */
  (CINIT MAXFILESIZE_LARGE OFF_T 117)

  ;; /* Set this option to the file name of your .netrc file you want libcurl
  ;;    to parse (using the CURLOPT_NETRC option). If not set libcurl will do
  ;;    a poor attempt to find the user's home directory and check for a .netrc
  ;;    file in there. */
  (CINIT NETRC_FILE STRINGPOINT 118)

  ;; /* Enable SSL/TLS for FTP pick one of:
  ;;    CURLUSESSL_TRY     - try using SSL proceed anyway otherwise
  ;;    CURLUSESSL_CONTROL - SSL for the control connection or fail
  ;;    CURLUSESSL_ALL     - SSL for all communication or fail
  ;; */
  (CINIT USE_SSL LONG 119)

					; The _LARGE version of the standard POSTFIELDSIZE option 
  (CINIT POSTFIELDSIZE_LARGE OFF_T 120)

					; Enable/disable the TCP Nagle algorithm 
  (CINIT TCP_NODELAY LONG 121)

					; 122 OBSOLETE used in 7.12.3. Gone in 7.13.0 
					; 123 OBSOLETE. Gone in 7.16.0 
					; 124 OBSOLETE used in 7.12.3. Gone in 7.13.0 
					; 125 OBSOLETE used in 7.12.3. Gone in 7.13.0 
					; 126 OBSOLETE used in 7.12.3. Gone in 7.13.0 
					; 127 OBSOLETE. Gone in 7.16.0 
					; 128 OBSOLETE. Gone in 7.16.0 

  ;; /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL) this option
  ;;    can be used to change libcurl's default action which is to first try
  ;;    "AUTH SSL" and then "AUTH TLS" in this order and proceed when a OK
  ;;    response has been received.

  ;;    Available parameters are:
  ;;    CURLFTPAUTH_DEFAULT - let libcurl decide
  ;;    CURLFTPAUTH_SSL     - try "AUTH SSL" first then TLS
  ;;    CURLFTPAUTH_TLS     - try "AUTH TLS" first then SSL
  ;; */
  (CINIT FTPSSLAUTH LONG 129)

  (CINIT IOCTLFUNCTION FUNCTIONPOINT 130)
  (CINIT IOCTLDATA OBJECTPOINT 131)

					; 132 OBSOLETE. Gone in 7.16.0 
					; 133 OBSOLETE. Gone in 7.16.0 

  ;; /* zero terminated string for pass on to the FTP server when asked for
  ;;    "account" info */
  (CINIT FTP_ACCOUNT STRINGPOINT 134)

					; feed cookie into cookie engine 
  (CINIT COOKIELIST STRINGPOINT 135)

					; ignore Content-Length 
  (CINIT IGNORE_CONTENT_LENGTH LONG 136)

  ;; /* Set to non-zero to skip the IP address received in a 227 PASV FTP server
  ;;    response. Typically used for FTP-SSL purposes but is not restricted to
  ;;    that. libcurl will then instead use the same IP address it used for the
  ;;    control connection. */
  (CINIT FTP_SKIP_PASV_IP LONG 137)

  ;; /* Select "file method" to use when doing FTP see the curl_ftpmethod
  ;;    above. */
  (CINIT FTP_FILEMETHOD LONG 138)

					; Local port number to bind the socket to 
  (CINIT LOCALPORT LONG 139)

  ;; /* Number of ports to try including the first one set with LOCALPORT.
  ;;    Thus setting it to 1 will make no additional attempts but the first.
  ;; */
  (CINIT LOCALPORTRANGE LONG 140)

  ;; /* no transfer set up connection and let application use the socket by
  ;;    extracting it with CURLINFO_LASTSOCKET */
  (CINIT CONNECT_ONLY LONG 141)

  ;; /* Function that will be called to convert from the
  ;;    network encoding (instead of using the iconv calls in libcurl) */
  (CINIT CONV_FROM_NETWORK_FUNCTION FUNCTIONPOINT 142)

  ;; /* Function that will be called to convert to the
  ;;    network encoding (instead of using the iconv calls in libcurl) */
  (CINIT CONV_TO_NETWORK_FUNCTION FUNCTIONPOINT 143)

  ;; /* Function that will be called to convert from UTF8
  ;;    (instead of using the iconv calls in libcurl)
  ;;    Note that this is used only for SSL certificate processing */
  (CINIT CONV_FROM_UTF8_FUNCTION FUNCTIONPOINT 144)

					; if the connection proceeds too quickly then need to slow it down 
					; limit-rate: maximum number of bytes per second to send or receive 
  (CINIT MAX_SEND_SPEED_LARGE OFF_T 145)
  (CINIT MAX_RECV_SPEED_LARGE OFF_T 146)

					; Pointer to command string to send if USER/PASS fails. 
  (CINIT FTP_ALTERNATIVE_TO_USER STRINGPOINT 147)

					; callback function for setting socket options 
  (CINIT SOCKOPTFUNCTION FUNCTIONPOINT 148)
  (CINIT SOCKOPTDATA OBJECTPOINT 149)

  ;; /* set to 0 to disable session ID re-use for this transfer default is
  ;;    enabled (== 1) */
  (CINIT SSL_SESSIONID_CACHE LONG 150)

					; allowed SSH authentication methods 
  (CINIT SSH_AUTH_TYPES LONG 151)

					; Used by scp/sftp to do public/private key authentication 
  (CINIT SSH_PUBLIC_KEYFILE STRINGPOINT 152)
  (CINIT SSH_PRIVATE_KEYFILE STRINGPOINT 153)

					; Send CCC (Clear Command Channel) after authentication 
  (CINIT FTP_SSL_CCC LONG 154)

					; Same as TIMEOUT and CONNECTTIMEOUT but with ms resolution 
  (CINIT TIMEOUT_MS LONG 155)
  (CINIT CONNECTTIMEOUT_MS LONG 156)

  ;; /* set to zero to disable the libcurl's decoding and thus pass the raw body
  ;;    data to the application even when it is encoded/compressed */
  (CINIT HTTP_TRANSFER_DECODING LONG 157)
  (CINIT HTTP_CONTENT_DECODING LONG 158)

  ;; /* Permission used when creating new files and directories on the remote
  ;;    server for protocols that support it SFTP/SCP/FILE */
  (CINIT NEW_FILE_PERMS LONG 159)
  (CINIT NEW_DIRECTORY_PERMS LONG 160)

  ;; /* Set the behaviour of POST when redirecting. Values must be set to one
  ;;    of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */
  (CINIT POSTREDIR LONG 161)

					; used by scp/sftp to verify the host's public key 
  (CINIT SSH_HOST_PUBLIC_KEY_MD5 STRINGPOINT 162)

  ;; /* Callback function for opening socket (instead of socket(2)). Optionally,
  ;;    callback is able change the address or refuse to connect returning
  ;;    CURL_SOCKET_BAD.  The callback should have type
  ;;    curl_opensocket_callback */
  (CINIT OPENSOCKETFUNCTION FUNCTIONPOINT 163)
  (CINIT OPENSOCKETDATA OBJECTPOINT 164)

					; POST volatile input fields. 
  (CINIT COPYPOSTFIELDS OBJECTPOINT 165)

					; set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy 
  (CINIT PROXY_TRANSFER_MODE LONG 166)

					; Callback function for seeking in the input stream 
  (CINIT SEEKFUNCTION FUNCTIONPOINT 167)
  (CINIT SEEKDATA OBJECTPOINT 168)

					; CRL file 
  (CINIT CRLFILE STRINGPOINT 169)

					; Issuer certificate 
  (CINIT ISSUERCERT STRINGPOINT 170)

					; (IPv6) Address scope 
  (CINIT ADDRESS_SCOPE LONG 171)

  ;; /* Collect certificate chain info and allow it to get retrievable with
  ;;    CURLINFO_CERTINFO after the transfer is complete. */
  (CINIT CERTINFO LONG 172)

					; "name" and "pwd" to use when fetching. 
  (CINIT USERNAME STRINGPOINT 173)
  (CINIT PASSWORD STRINGPOINT 174)

					; "name" and "pwd" to use with Proxy when fetching. 
  (CINIT PROXYUSERNAME STRINGPOINT 175)
  (CINIT PROXYPASSWORD STRINGPOINT 176)

  ;; /* Comma separated list of hostnames defining no-proxy zones. These should
  ;;    match both hostnames directly and hostnames within a domain. For
  ;;    example local.com will match local.com and www.local.com but NOT
  ;;    notlocal.com or www.notlocal.com. For compatibility with other
  ;;    implementations of this .local.com will be considered to be the same as
  ;;    local.com. A single * is the only valid wildcard and effectively
  ;;    disables the use of proxy. */
  (CINIT NOPROXY STRINGPOINT 177)

					; block size for TFTP transfers 
  (CINIT TFTP_BLKSIZE LONG 178)

					; Socks Service 
  (CINIT SOCKS5_GSSAPI_SERVICE STRINGPOINT 179) ; DEPRECATED do not use! 

					; Socks Service 
  (CINIT SOCKS5_GSSAPI_NEC LONG 180)

  ;; /* set the bitmask for the protocols that are allowed to be used for the
  ;;    transfer which thus helps the app which takes URLs from users or other
  ;;    external inputs and want to restrict what protocol(s) to deal
  ;;    with. Defaults to CURLPROTO_ALL. */
  (CINIT PROTOCOLS LONG 181)

  ;; /* set the bitmask for the protocols that libcurl is allowed to follow to,
  ;;    as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs
  ;;    to be set in both bitmasks to be allowed to get redirected to. Defaults
  ;;    to all protocols except FILE and SCP. */
  (CINIT REDIR_PROTOCOLS LONG 182)

					; set the SSH knownhost file name to use 
  (CINIT SSH_KNOWNHOSTS STRINGPOINT 183)

  ;; /* set the SSH host key callback must point to a curl_sshkeycallback
  ;;    function */
  (CINIT SSH_KEYFUNCTION FUNCTIONPOINT 184)

					; set the SSH host key callback custom pointer 
  (CINIT SSH_KEYDATA OBJECTPOINT 185)

					; set the SMTP mail originator 
  (CINIT MAIL_FROM STRINGPOINT 186)

					; set the list of SMTP mail receiver(s) 
  (CINIT MAIL_RCPT OBJECTPOINT 187)

					; FTP: send PRET before PASV 
  (CINIT FTP_USE_PRET LONG 188)

					; RTSP request method (OPTIONS SETUP PLAY etc...) 
  (CINIT RTSP_REQUEST LONG 189)

					; The RTSP session identifier 
  (CINIT RTSP_SESSION_ID STRINGPOINT 190)

					; The RTSP stream URI 
  (CINIT RTSP_STREAM_URI STRINGPOINT 191)

					; The Transport: header to use in RTSP requests 
  (CINIT RTSP_TRANSPORT STRINGPOINT 192)

					; Manually initialize the client RTSP CSeq for this handle 
  (CINIT RTSP_CLIENT_CSEQ LONG 193)

					; Manually initialize the server RTSP CSeq for this handle 
  (CINIT RTSP_SERVER_CSEQ LONG 194)

					; The stream to pass to INTERLEAVEFUNCTION. 
  (CINIT INTERLEAVEDATA OBJECTPOINT 195)

					; Let the application define a custom write method for RTP data 
  (CINIT INTERLEAVEFUNCTION FUNCTIONPOINT 196)

					; Turn on wildcard matching 
  (CINIT WILDCARDMATCH LONG 197)

  ;; /* Directory matching callback called before downloading of an
  ;;    individual file (chunk) started */
  (CINIT CHUNK_BGN_FUNCTION FUNCTIONPOINT 198)

  ;; /* Directory matching callback called after the file (chunk)
  ;;    was downloaded or skipped */
  (CINIT CHUNK_END_FUNCTION FUNCTIONPOINT 199)

					; Change match (fnmatch-like) callback for wildcard matching 
  (CINIT FNMATCH_FUNCTION FUNCTIONPOINT 200)

					; Let the application define custom chunk data pointer 
  (CINIT CHUNK_DATA OBJECTPOINT 201)

					; FNMATCH_FUNCTION user pointer 
  (CINIT FNMATCH_DATA OBJECTPOINT 202)

					; send linked-list of name:port:address sets 
  (CINIT RESOLVE OBJECTPOINT 203)

					; Set a username for authenticated TLS 
  (CINIT TLSAUTH_USERNAME STRINGPOINT 204)

					; Set a password for authenticated TLS 
  (CINIT TLSAUTH_PASSWORD STRINGPOINT 205)

					; Set authentication type for authenticated TLS 
  (CINIT TLSAUTH_TYPE STRINGPOINT 206)

  ;; /* Set to 1 to enable the "TE:" header in HTTP requests to ask for
  ;;    compressed transfer-encoded responses. Set to 0 to disable the use of TE:
  ;;    in outgoing requests. The current default is 0 but it might change in a
  ;;    future libcurl release.

  ;;    libcurl will ask for the compressed methods it knows of and if that
  ;;    isn't any it will not ask for transfer-encoding at all even if this
  ;;    option is set to 1.

  ;; */
  (CINIT TRANSFER_ENCODING LONG 207)

  ;; /* Callback function for closing socket (instead of close(2)). The callback
  ;;    should have type curl_closesocket_callback */
  (CINIT CLOSESOCKETFUNCTION FUNCTIONPOINT 208)
  (CINIT CLOSESOCKETDATA OBJECTPOINT 209)

					; allow GSSAPI credential delegation 
  (CINIT GSSAPI_DELEGATION LONG 210)

					; Set the name servers to use for DNS resolution 
  (CINIT DNS_SERVERS STRINGPOINT 211)

  ;; /* Time-out accept operations (currently for FTP only) after this amount
  ;;    of miliseconds. */
  (CINIT ACCEPTTIMEOUT_MS LONG 212)

					; Set TCP keepalive 
  (CINIT TCP_KEEPALIVE LONG 213)

					; non-universal keepalive knobs (Linux AIX HP-UX more) 
  (CINIT TCP_KEEPIDLE LONG 214)
  (CINIT TCP_KEEPINTVL LONG 215)

					; Enable/disable specific SSL features with a bitmask see CURLSSLOPT_* 
  (CINIT SSL_OPTIONS LONG 216)

					; Set the SMTP auth originator 
  (CINIT MAIL_AUTH STRINGPOINT 217)

					; Enable/disable SASL initial response 
  (CINIT SASL_IR LONG 218)

  ;; /* Function that will be called instead of the internal progress display
  ;;  * function. This function should be defined as the curl_xferinfo_callback
  ;;  * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */
  (CINIT XFERINFOFUNCTION FUNCTIONPOINT 219)

					; The XOAUTH2 bearer token 
  (CINIT XOAUTH2_BEARER STRINGPOINT 220)

  ;; /* Set the interface string to use as outgoing network
  ;;  * interface for DNS requests.
  ;;  * Only supported by the c-ares DNS backend */
  (CINIT DNS_INTERFACE STRINGPOINT 221)

  ;; /* Set the local IPv4 address to use for outgoing DNS requests.
  ;;  * Only supported by the c-ares DNS backend */
  (CINIT DNS_LOCAL_IP4 STRINGPOINT 222)

  ;; /* Set the local IPv4 address to use for outgoing DNS requests.
  ;;  * Only supported by the c-ares DNS backend */
  (CINIT DNS_LOCAL_IP6 STRINGPOINT 223)

					; Set authentication options directly 
  (CINIT LOGIN_OPTIONS STRINGPOINT 224)

					; Enable/disable TLS NPN extension (http2 over ssl might fail without) 
  (CINIT SSL_ENABLE_NPN LONG 225)

					; Enable/disable TLS ALPN extension (http2 over ssl might fail without) 
  (CINIT SSL_ENABLE_ALPN LONG 226)

  ;; /* Time to wait for a response to a HTTP request containing an
  ;;  * Expect: 100-continue header before sending the data anyway. */
  (CINIT EXPECT_100_TIMEOUT_MS LONG 227)

  ;; /* This points to a linked list of headers used for proxy requests only,
  ;;    struct curl_slist kind */
  (CINIT PROXYHEADER OBJECTPOINT 228)

					; Pass in a bitmask of "header options" 
  (CINIT HEADEROPT LONG 229)

  ;; /* The public key in DER form used to validate the peer public key
  ;;    this option is used only if SSL_VERIFYPEER is true */
  (CINIT PINNEDPUBLICKEY STRINGPOINT 230)

					; Path to Unix domain socket 
  (CINIT UNIX_SOCKET_PATH STRINGPOINT 231)

					; Set if we should verify the certificate status. 
  (CINIT SSL_VERIFYSTATUS LONG 232)

					; Set if we should enable TLS false start. 
  (CINIT SSL_FALSESTART LONG 233)

					; Do not squash dot-dot sequences 
  (CINIT PATH_AS_IS LONG 234)

					; Proxy Service Name 
  (CINIT PROXY_SERVICE_NAME STRINGPOINT 235)

					; Service Name 
  (CINIT SERVICE_NAME STRINGPOINT 236)

					; Wait/don't wait for pipe/mutex to clarify 
  (CINIT PIPEWAIT LONG 237)

					; Set the protocol used when curl is given a URL without a protocol 
  (CINIT DEFAULT_PROTOCOL STRINGPOINT 238)

					; Set stream weight 1 - 256 (default is 16) 
  (CINIT STREAM_WEIGHT LONG 239)

					; Set stream dependency on another CURL handle 
  (CINIT STREAM_DEPENDS OBJECTPOINT 240)

					; Set E-xclusive stream dependency on another CURL handle 
  (CINIT STREAM_DEPENDS_E OBJECTPOINT 241)

					; Do not send any tftp option requests to the server 
  (CINIT TFTP_NO_OPTIONS LONG 242)

  ;; /* Linked-list of host:port:connect-to-host:connect-to-port,
  ;;    overrides the URL's host:port (only for the network layer) */
  (CINIT CONNECT_TO OBJECTPOINT 243)

					; Set TCP Fast Open 
  (CINIT TCP_FASTOPEN LONG 244)

  (define CURL_GLOBAL_SSL 1)
  (define CURL_GLOBAL_WIN32 2)
  (define CURL_GLOBAL_ALL (logior CURL_GLOBAL_SSL CURL_GLOBAL_WIN32))
  (define CURL_GLOBAL_NOTHING 0)
  (define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL)
  (define CURL_GLOBAL_ACK_EINTR 4)

  (define CURLFTP_CREATE_DIR_NONE 0)
  (define CURLFTP_CREATE_DIR 1)
  (define CURLFTP_CREATE_DIR_RETRY 2)

  (define curl-easy-init (foreign-procedure "curl_easy_init" () (* CURL)))
  (define curl-easy-cleanup (foreign-procedure "curl_easy_cleanup" ((* CURL)) void ))

  (define-ftype curl_slist
    (struct
     [data (* char)]
     [next (* curl_slist)]))

  (define-ftype curl_off_t integer-64)

  (define curl-slist-append (foreign-procedure "curl_slist_append" ((* curl_slist) utf-8) (* curl_slist)))
  (define curl-slist-free-all (foreign-procedure "curl_slist_free_all" ((* curl_slist)) void))
  (define curl-easy-setopt/long (foreign-procedure "curl_easy_setopt" ((* CURL) CURLoption long) CURLcode-t) )
  (define curl-easy-setopt/string (foreign-procedure "curl_easy_setopt" ((* CURL) CURLoption utf-8) CURLcode-t))
  (define curl-easy-setopt/object (foreign-procedure "curl_easy_setopt" ((* CURL) CURLoption void*) CURLcode-t))
  (define curl-easy-setopt/scheme-object (foreign-procedure "curl_easy_setopt" ((* CURL) CURLoption scheme-object) CURLcode-t))
  (define curl-easy-setopt/offset (foreign-procedure "curl_easy_setopt" ((* CURL) CURLoption curl_off_t) CURLcode-t))
  (define curl-easy-setopt/function (foreign-procedure "curl_easy_setopt" ((* CURL) CURLoption void*) CURLcode-t))


  (define curl-global-init (foreign-procedure "curl_global_init" (long) CURLcode-t))

  (define (curl-easy-perform curl)
    (define f (foreign-procedure "curl_easy_perform" ((* CURL)) CURLcode-t))
    (define r (f curl))
    (unless (= r (CURLcode 'CURLE_OK))
      (error 'curl-easy-perform "failed" (CURLcode-ref r))))

  (define-ftype curl-read-callback (function (void* size_t size_t scheme-object) size_t))
  (define-ftype curl-write-callback (function (u8* size_t size_t scheme-object) size_t))

  
  ) ;library curl