Version 6.03 should be the latest version installable under Windows XP so this is the ultimate Pb 6.03 Stuff for Windows XP
Here are some tips to get PB6.03 working under Windows XP
It's up to you to add your own tips and tricks.
1) It is highly recommended to keep a functional installation of PB 5.73.
This will allow you to have a reserve of files and to troubleshoot certain inadequacies of pb6.03
2) A clean installation of XP may be able to avoid certain pb failures
3) The IDE no longer underlines certain keywords like "Procedure/EndProcedure". To correct this replace Scintilla.dll with that of Pb5.73
4) The IDE crashes on startup: The solution is to open the %AppData/PureBasic/PureBasic.prefs file, go to the "Explorer" section and modify the "Path" key, until this works.
Or, you need to remove the “Explore” tab from the tools panel.
=> File\Preferences...\Toolspanel\
5) If you have the above problem then chances are you will not be able to create a PB project ("Project" menu). For now, you can help yourself by creating the project with PB 5.73, then you can use it with PB 6.03
6) Network functions can be found using cURL 7.83.1
(I have not tested version 7.84.0). Later versions do not work with XP.
You can download this version here https://github.com/negrutiu/libcurl-devel/releases
Work from Infratec: https://www.von-der-salierburg.de/downl ... eBasic.zip
http://forums.purebasic.com/english/vie ... hp?t=80118
viewtopic.php?p=591235
Unfortunately, this will need to be modified to work with version 7.83.1 of the DLL. I put the code that works in the thread below.
The DLL must be in the same folder as the executable otherwise change the path in libcurl.pbi
6bis) Upfated curl file (v8 and more) for win xp are here: https://rwijnsma.home.xs4all.nl/files/curl/
6ter) Xidel can extract (with ssl) all html value: https://rwijnsma.home.xs4all.nl/files/x ... al_builds/
7) Undocumented procedures: CompareList(), CompareMap(), CompareArray() and CompareStructure()
8 ) Update of the "Editor.catalog" file located in the catalog folder of the PB installation which consists of adding or translating the new accessibility functions of the PB IDE:
->File Update/Preferences…/General/Enable accessibility features
If you use a language other than English, you will need to translate the right part of the "=" sign. See the French translations below.
Insert a line after line 322 to get this
322 DisplayFullPath = Display full Source Path in TitleBar
323 EnableAccessibility = Enable accessibility features
324 NoSplashScreen = Disable Splash Screen
Insert a line after line 1310 to get this
1311 AskScreenReader = "A Screen Reader software was detected. Do you wish to enable accessibility features?%newline%%newline%(You can change this option later under File - Preferences - General)"
If you are using the French language, use this:
323 EnableAccessibility = Activer les fonctionnalités d'accessibilité
1311 AskScreenReader = Un logiciel de lecture d'écran a été détecté. Souhaitez-vous activer les fonctionnalités d'accessibilité ?%newline%%newline%(Vous pourrez modifier cette option ultérieurement dans le menu Fichier - Préférences... - Général)
9) (For later)
M.
Ultimate Pb 6.03 Stuff for Windows XP
Ultimate Pb 6.03 Stuff for Windows XP
Last edited by Mesa on Thu Jun 19, 2025 9:38 am, edited 4 times in total.
Re: Ultimate Pb 6.03 Stuff for Windows XP
LIBCURL.PBI for libcurl.dll version 7.83.1
Code: Select all
;
; libcurl.pbi
;
; https://www.purebasic.fr/english/viewtopic.php?p=591235
; http://forums.purebasic.com/english/viewtopic.php?t=80118
; In widows libcurl is a static compilation by PureBasic, but it only contains the protocols:
;
; http
; https
; smtp
; smtps
;
; If you want other possible protocols you need to use an external dll or an own compiled static lib.
;
; then you can use one of the following definitions just before IncludeFile "libcurl.pbi"
;
; #LibCurl_ExternalDLL = #True
; #LibCurl_ExternalStaticLib = #True
;
; The file needs to be named libcurl.dll or liburl_ExternalStatic.lib in the same directoy as the executable.
;
; In linux or macOS PueBasic uses the already by OS installed shared libcurl library.
; No external library for the other protocols is needed.
;
; usefull links:
; https://curl.se/libcurl/c/libcurl.html
; https://curl.se/windows/
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
;#LibCurl_ExternalDLL = #True
CompilerIf Not Defined(LibCurl_ExternalDLL, #PB_Constant)
#LibCurl_ExternalDLL = #False
CompilerEndIf
;- Enumerations
Enumeration
#CURLE_OK
#CURLE_UNSUPPORTED_PROTOCOL ; 1
#CURLE_FAILED_INIT ; 2
#CURLE_URL_MALFORMAT ; 3
#CURLE_URL_MALFORMAT_USER ; 4 (Not USED)
#CURLE_COULDNT_RESOLVE_PROXY ; 5
#CURLE_COULDNT_RESOLVE_HOST ; 6
#CURLE_COULDNT_CONNECT ; 7
#CURLE_FTP_WEIRD_SERVER_REPLY ; 8
#CURLE_FTP_ACCESS_DENIED ; 9 a service was denied by the FTP server due To lack of access - when login fails this is Not returned.
#CURLE_FTP_USER_PASSWORD_INCORRECT ; 10
#CURLE_FTP_WEIRD_PASS_REPLY ; 11
#CURLE_FTP_WEIRD_USER_REPLY ; 12
#CURLE_FTP_WEIRD_PASV_REPLY ; 13
#CURLE_FTP_WEIRD_227_FORMAT ; 14
#CURLE_FTP_CANT_GET_HOST ; 15
#CURLE_FTP_CANT_RECONNECT ; 16
#CURLE_FTP_COULDNT_SET_BINARY ; 17
#CURLE_PARTIAL_FILE ; 18
#CURLE_FTP_COULDNT_RETR_FILE ; 19
#CURLE_FTP_WRITE_ERROR ; 20
#CURLE_FTP_QUOTE_ERROR ; 21
#CURLE_HTTP_RETURNED_ERROR ; 22
#CURLE_WRITE_ERROR ; 23
#CURLE_MALFORMAT_USER ; 24 - Not USED
#CURLE_FTP_COULDNT_STOR_FILE ; 25 - failed FTP upload
#CURLE_READ_ERROR ; 26 - could open/Read from file
#CURLE_OUT_OF_MEMORY ; 27
#CURLE_OPERATION_TIMEDOUT ; 28 - the timeout time was reached
#CURLE_FTP_COULDNT_SET_ASCII ; 29 - TYPE A failed
#CURLE_FTP_PORT_FAILED ; 30 - FTP PORT operation failed
#CURLE_FTP_COULDNT_USE_REST ; 31 - the REST command failed
#CURLE_FTP_COULDNT_GET_SIZE ; 32 - the SIZE command failed
#CURLE_HTTP_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_LIBRARY_NOT_FOUND ; 40
#CURLE_FUNCTION_NOT_FOUND ; 41
#CURLE_ABORTED_BY_CALLBACK ; 42
#CURLE_BAD_FUNCTION_ARGUMENT ; 43
#CURLE_BAD_CALLING_ORDER ; 44 - Not USED
#CURLE_INTERFACE_FAILED ; 45 - CURLOPT_INTERFACE failed
#CURLE_BAD_PASSWORD_ENTERED ; 46 - Not USED
#CURLE_TOO_MANY_REDIRECTS ; 47 - catch endless re-direct loops
#CURLE_UNKNOWN_TELNET_OPTION ; 48 - User specified an unknown option
#CURLE_TELNET_OPTION_SYNTAX ; 49 - Malformed telnet option
#CURLE_OBSOLETE ; 50 - Not USED
#CURLE_SSL_PEER_CERTIFICATE ; 51 - peer's certificate wasn't ok
#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_SHARE_IN_USE ; 57 - share is 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 transfer encoding
#CURLE_LDAP_INVALID_URL ; 62 - Invalid LDAP URL
#CURLE_FILESIZE_EXCEEDED ; 63 - Maximum file size exceeded
#CURLE_FTP_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_TFTP_DISKFULL ; 70 - out of disk space on server
#CURLE_TFTP_ILLEGAL ; 71 - Illegal TFTP operation
#CURLE_TFTP_UNKNOWNID ; 72 - Unknown transfer ID
#CURLE_TFTP_EXISTS ; 73 - File already exists
#CURLE_TFTP_NOSUCHUSER ; 74 - No such user
#CURL_LAST ; never use!
EndEnumeration
Enumeration 0 ; curlsocktype
#CURLSOCKTYPE_IPCXN ; socket created For a specific IP connection
#CURLSOCKTYPE_LAST ; never use
EndEnumeration
Enumeration ; curlioerr
#CURLIOE_OK ; I/O operation successful
#CURLIOE_UNKNOWNCMD ; command was unknown To callback
#CURLIOE_FAILRESTART ; failed To restart the Read
#CURLIOE_LAST ; never use
EndEnumeration
Enumeration ; curliocmd
#CURLIOCMD_NOP ; no operation
#CURLIOCMD_RESTARTREAD ; restart the Read stream from start
#CURLIOCMD_LAST ; never use
EndEnumeration
Enumeration 0 ; curl_infotype
; the kind of Data that is passed To information_callback
#CURLINFO_TEXT
#CURLINFO_HEADER_IN ; 1
#CURLINFO_HEADER_OUT ; 2
#CURLINFO_DATA_IN ; 3
#CURLINFO_DATA_OUT ; 4
#CURLINFO_SSL_DATA_IN ; 5
#CURLINFO_SSL_DATA_OUT ; 6
#CURLINFO_END
EndEnumeration
Enumeration ; curl_proxytype
#CURLPROXY_HTTP = 0
#CURLPROXY_SOCKS4 = 4
#CURLPROXY_SOCKS5 = 5
EndEnumeration
Enumeration ; curl_usessl
; parameter For the CURLOPT_USE_SSL option
#CURLUSESSL_NONE ; do Not attempt To use SSL
#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
#CURLUSESSL_LAST ; Not an option never use
EndEnumeration ;
Enumeration ; curl_ftpccc
; parameter For the CURLOPT_FTP_SSL_CCC option
#CURLFTPSSL_CCC_NONE ; do Not send CCC
#CURLFTPSSL_CCC_PASSIVE ; Let the server initiate the shutdown
#CURLFTPSSL_CCC_ACTIVE ; Initiate the shutdown
#CURLFTPSSL_CCC_LAST ; Not an option never use
EndEnumeration
Enumeration ; curl_ftpauth
; parameter For the CURLOPT_FTPSSLAUTH option
#CURLFTPAUTH_DEFAULT ; let libcurl decide
#CURLFTPAUTH_SSL ; use "AUTH SSL"
#CURLFTPAUTH_TLS ; use "AUTH TLS"
#CURLFTPAUTH_LAST ; Not an option never use
EndEnumeration
Enumeration ; curl_ftpmethod
; parameter For the CURLOPT_FTP_FILEMETHOD option
#CURLFTPMETHOD_DEFAULT ; let libcurl pick
#CURLFTPMETHOD_MULTICWD ; single CWD operation For each path part
#CURLFTPMETHOD_NOCWD ; no CWD at all
#CURLFTPMETHOD_SINGLECWD ; one CWD To full dir then work on file
#CURLFTPMETHOD_LAST ; Not an option never use
EndEnumeration
Enumeration ; curlformoption
#CURLFORM_NOTHING ; the first one is unused
#CURLFORM_COPYNAME
#CURLFORM_PTRNAME
#CURLFORM_NAMELENGTH
#CURLFORM_COPYCONTENTS
#CURLFORM_PTRCONTENTS
#CURLFORM_CONTENTSLENGTH
#CURLFORM_FILECONTENT
#CURLFORM_ARRAY
#CURLFORM_OBSOLETE
#CURLFORM_FILE
#CURLFORM_BUFFER
#CURLFORM_BUFFERPTR
#CURLFORM_BUFFERLENGTH
#CURLFORM_CONTENTTYPE
#CURLFORM_CONTENTHEADER
#CURLFORM_FILENAME
#CURLFORM_End
#CURLFORM_OBSOLETE2
#CURLFORM_LASTENTRY ; the last unusued
EndEnumeration
; use this For multipart formpost building
; Returns code For #CURL_formadd()
; Returns:
; #CURL_FORMADD_OK on success
; #CURL_FORMADD_MEMORY If the FormInfo allocation fails
; #CURL_FORMADD_OPTION_TWICE If one option is given twice For one Form
; #CURL_FORMADD_NULL If a null pointer was given For a char
; #CURL_FORMADD_MEMORY If the allocation of a FormInfo struct failed
; #CURL_FORMADD_UNKNOWN_OPTION If an unknown option was used
; #CURL_FORMADD_INCOMPLETE If the some FormInfo is Not complete (Or error)
; #CURL_FORMADD_MEMORY If a HttpPost struct cannot be allocated
; #CURL_FORMADD_MEMORY If some allocation For string copying failed.
; #CURL_FORMADD_ILLEGAL_ARRAY If an illegal option is used in an array
Enumeration ; CURLFORMcode
#CURL_FORMADD_OK ; first no error
#CURL_FORMADD_MEMORY
#CURL_FORMADD_OPTION_TWICE
#CURL_FORMADD_NULL
#CURL_FORMADD_UNKNOWN_OPTION
#CURL_FORMADD_INCOMPLETE
#CURL_FORMADD_ILLEGAL_ARRAY
#CURL_FORMADD_DISABLED ; libcurl was built With this disabled
#CURL_FORMADD_LAST ; last
EndEnumeration
Enumeration ; CURL_closepolicy
#CURLCLOSEPOLICY_NONE ; first never use this
#CURLCLOSEPOLICY_OLDEST
#CURLCLOSEPOLICY_LEAST_RECENTLY_USED
#CURLCLOSEPOLICY_LEAST_TRAFFIC
#CURLCLOSEPOLICY_SLOWEST
#CURLCLOSEPOLICY_CALLBACK
#CURLCLOSEPOLICY_LAST ; last never use this
EndEnumeration
; Different Data locks For a single share
Enumeration 0 ; CURL_lock_data
#CURL_LOCK_DATA_NONE
; #CURL_LOCK_DATA_SHARE is used internaly To say that
; the locking is just made To change the internal state of the share
; itself.
#CURL_LOCK_DATA_SHARE
#CURL_LOCK_DATA_COOKIE
#CURL_LOCK_DATA_DNS
#CURL_LOCK_DATA_SSL_SESSION
#CURL_LOCK_DATA_CONNECT
#CURL_LOCK_DATA_LAST
EndEnumeration ;
; Different lock access types
Enumeration ; CURL_lock_access
#CURL_LOCK_ACCESS_NONE = 0 ; unspecified action
#CURL_LOCK_ACCESS_SHARED = 1 ; For Read perhaps
#CURL_LOCK_ACCESS_SINGLE = 2 ; For write perhaps
#CURL_LOCK_ACCESS_LAST ; never use
EndEnumeration ;
Enumeration ; CURLSHcode
#CURLSHE_OK ; all is fine
#CURLSHE_BAD_OPTION ; 1
#CURLSHE_IN_USE ; 2
#CURLSHE_INVALID ; 3
#CURLSHE_NOMEM ; out of memory
#CURLSHE_LAST ; never use
EndEnumeration
Enumeration ; CURLSHoption
#CURLSHOPT_NONE ; don't use
#CURLSHOPT_SHARE ; specify a Data type To share
#CURLSHOPT_UNSHARE ; specify shich Data type To stop sharing
#CURLSHOPT_LOCKFUNC ; pass in a '#CURL_lock_function' pointer
#CURLSHOPT_UNLOCKFUNC ; pass in a '#CURL_unlock_function' pointer
#CURLSHOPT_USERDATA ; pass in a user Data pointer used in the lock/unlock
; callback functions
#CURLSHOPT_LAST ; never use
EndEnumeration
Enumeration ; CURLversion
#CURLVERSION_FIRST
#CURLVERSION_SECOND
#CURLVERSION_THIRD
#CURLVERSION_FOURTH
#CURLVERSION_LAST ; never actually use this
EndEnumeration
;}
#CURLOPT_HTTPREQUEST = -1
; #CURLOPT_FTPASCII = #CURLOPT_TRANSFERTEXT
#CURLOPT_MUTE = -2
#CURLOPT_PASSWDFUNCTION = -3
#CURLOPT_PASSWDDATA = -4
#CURLOPT_CLOSEFUNCTION = -5
#CURLOPT_SOURCE_HOST = -6
#CURLOPT_SOURCE_PATH = -7
#CURLOPT_SOURCE_PORT = -8
#CURLOPT_PASV_HOST = -9
#CURL_MAX_WRITE_SIZE = 16384
#CURL_READFUNC_ABORT = $10000000
;{ #CURLINFO
#CURLINFO_STRING = $100000
#CURLINFO_LONG = $200000
#CURLINFO_DOUBLE = $300000
#CURLINFO_SLIST = $400000
#CURLINFO_MASK = $0fffff
#CURLINFO_TYPEMASK = $f00000
#CURLINFO_EFFECTIVE_URL = #CURLINFO_STRING + 1
#CURLINFO_RESPONSE_CODE = #CURLINFO_LONG + 2
#CURLINFO_TOTAL_TIME = #CURLINFO_DOUBLE + 3
#CURLINFO_NAMELOOKUP_TIME = #CURLINFO_DOUBLE + 4
#CURLINFO_CONNECT_TIME = #CURLINFO_DOUBLE + 5
#CURLINFO_PRETRANSFER_TIME = #CURLINFO_DOUBLE + 6
#CURLINFO_SIZE_UPLOAD = #CURLINFO_DOUBLE + 7
#CURLINFO_SIZE_DOWNLOAD = #CURLINFO_DOUBLE + 8
#CURLINFO_SPEED_DOWNLOAD = #CURLINFO_DOUBLE + 9
#CURLINFO_SPEED_UPLOAD = #CURLINFO_DOUBLE + 10
#CURLINFO_HEADER_SIZE = #CURLINFO_LONG + 11
#CURLINFO_REQUEST_SIZE = #CURLINFO_LONG + 12
#CURLINFO_SSL_VERIFYRESULT = #CURLINFO_LONG + 13
#CURLINFO_FILETIME = #CURLINFO_LONG + 14
#CURLINFO_CONTENT_LENGTH_DOWNLOAD = #CURLINFO_DOUBLE + 15
#CURLINFO_CONTENT_LENGTH_UPLOAD = #CURLINFO_DOUBLE + 16
#CURLINFO_STARTTRANSFER_TIME = #CURLINFO_DOUBLE + 17
#CURLINFO_CONTENT_TYPE = #CURLINFO_STRING + 18
#CURLINFO_REDIRECT_TIME = #CURLINFO_DOUBLE + 19
#CURLINFO_REDIRECT_COUNT = #CURLINFO_LONG + 20
#CURLINFO_PRIVATE = #CURLINFO_STRING + 21
#CURLINFO_HTTP_CONNECTCODE = #CURLINFO_LONG + 22
#CURLINFO_HTTPAUTH_AVAIL = #CURLINFO_LONG + 23
#CURLINFO_PROXYAUTH_AVAIL = #CURLINFO_LONG + 24
#CURLINFO_OS_ERRNO = #CURLINFO_LONG + 25
#CURLINFO_NUM_CONNECTS = #CURLINFO_LONG + 26
#CURLINFO_SSL_ENGINES = #CURLINFO_SLIST + 27
#CURLINFO_COOKIELIST = #CURLINFO_SLIST + 28
#CURLINFO_LASTSOCKET = #CURLINFO_LONG + 29
#CURLINFO_FTP_ENTRY_PATH = #CURLINFO_STRING + 30
#CURLINFO_REDIRECT_URL = #CURLINFO_STRING + 31
#CURLINFO_PRIMARY_IP = #CURLINFO_STRING + 32
#CURLINFO_APPCONNECT_TIME = #CURLINFO_DOUBLE + 33
#CURLINFO_CERTINFO = #CURLINFO_SLIST + 34
#CURLINFO_CONDITION_UNMET = #CURLINFO_LONG + 35
#CURLINFO_RTSP_SESSION_ID = #CURLINFO_STRING + 36
#CURLINFO_RTSP_CLIENT_CSEQ = #CURLINFO_LONG + 37
#CURLINFO_RTSP_SERVER_CSEQ = #CURLINFO_LONG + 38
#CURLINFO_RTSP_CSEQ_RECV = #CURLINFO_LONG + 39
#CURLINFO_PRIMARY_PORT = #CURLINFO_LONG + 40
#CURLINFO_LOCAL_IP = #CURLINFO_STRING + 41
#CURLINFO_LOCAL_PORT = #CURLINFO_LONG + 42
#CURLINFO_TLS_SESSION = #CURLINFO_SLIST + 43
#CURLINFO_LASTONE = 43
;}
;{ #CURLOPT
#CURLOPTTYPE_LONG = 0
#CURLOPTTYPE_OBJECTPOINT = 10000
#CURLOPTTYPE_STRINGPOINT = #CURLOPTTYPE_OBJECTPOINT
#CURLOPTTYPE_FUNCTIONPOINT = 20000
#CURLOPTTYPE_OFF_T = 30000
;This Macro-mania below setups the CURLOPT_[what] enum + To be used With
;curl_easy_setopt(). The first argument in the CURLOPT_) Macro is the [what] word.
; This is the FILE;Or void;the regular output should be written To.
#CURLOPT_FILE = #CURLOPTTYPE_OBJECTPOINT + 1
; The full URL To get/put
#CURLOPT_URL= #CURLOPTTYPE_OBJECTPOINT + 2
; Port number To connect To + If other than Default.
#CURLOPT_PORT= #CURLOPTTYPE_LONG + 3
; Name of proxy To use.
#CURLOPT_PROXY= #CURLOPTTYPE_OBJECTPOINT + 4
; "name:password" To use when fetching.
#CURLOPT_USERPWD= #CURLOPTTYPE_OBJECTPOINT + 5
; "name:password" To use With proxy.
#CURLOPT_PROXYUSERPWD= #CURLOPTTYPE_OBJECTPOINT + 6
; Range To get + specified As an ASCII string.
#CURLOPT_RANGE= #CURLOPTTYPE_OBJECTPOINT + 7
; Specified file stream To upload from (use As input):
#CURLOPT_INFILE= #CURLOPTTYPE_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:
#CURLOPT_ERRORBUFFER= #CURLOPTTYPE_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.
#CURLOPT_WRITEFUNCTION= #CURLOPTTYPE_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.
#CURLOPT_READFUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 12
; Time-out the Read operation after this amount of seconds
#CURLOPT_TIMEOUT= #CURLOPTTYPE_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 succcessful. -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.
#CURLOPT_INFILESIZE= #CURLOPTTYPE_LONG + 14
; POST input fields.
#CURLOPT_POSTFIELDS= #CURLOPTTYPE_OBJECTPOINT + 15
; Set the referer page (needed by some CGIs)
#CURLOPT_REFERER= #CURLOPTTYPE_OBJECTPOINT + 16
; Set the FTP PORT string (Interface name + named Or numerical IP address)
; Use i.e '-' To use Default address.
#CURLOPT_FTPPORT= #CURLOPTTYPE_OBJECTPOINT + 17
; Set the User-Agent string (examined by some CGIs)
#CURLOPT_USERAGENT= #CURLOPTTYPE_OBJECTPOINT + 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"
#CURLOPT_LOW_SPEED_LIMIT= #CURLOPTTYPE_LONG + 19
; Set the "low speed time"
#CURLOPT_LOW_SPEED_TIME= #CURLOPTTYPE_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.
#CURLOPT_RESUME_FROM= #CURLOPTTYPE_LONG + 21
; Set cookie in request:
#CURLOPT_COOKIE= #CURLOPTTYPE_OBJECTPOINT + 22
; This points To a linked list of headers + struct curl_slist kind
#CURLOPT_HTTPHEADER= #CURLOPTTYPE_OBJECTPOINT + 23
; This points To a linked list of post entries + struct HttpPost
#CURLOPT_HTTPPOST= #CURLOPTTYPE_OBJECTPOINT + 24
; name of the file keeping your private SSL-certificate
#CURLOPT_SSLCERT= #CURLOPTTYPE_OBJECTPOINT + 25
; password For the SSL Or SSH private key
#CURLOPT_KEYPASSWD= #CURLOPTTYPE_OBJECTPOINT + 26
; send TYPE parameter?
#CURLOPT_CRLF= #CURLOPTTYPE_LONG + 27
; send linked-list of QUOTE commands
#CURLOPT_QUOTE= #CURLOPTTYPE_OBJECTPOINT + 28
; send FILE;Or void;To store headers To + If you use a callback it
; is simply passed To the callback unmodified
#CURLOPT_WRITEHEADER= #CURLOPTTYPE_OBJECTPOINT + 29
; point To a file To Read the initial cookies from + also enables
; "cookie awareness"
#CURLOPT_COOKIEFILE= #CURLOPTTYPE_OBJECTPOINT + 31
; What version To specifly try To use.
; See CURL_SSLVERSION defines below.
#CURLOPT_SSLVERSION= #CURLOPTTYPE_LONG + 32
; What kind of HTTP time condition To use + see defines
#CURLOPT_TIMECONDITION= #CURLOPTTYPE_LONG + 33
; Time To use With the above condition. Specified in number of seconds
; since 1 Jan 1970
#CURLOPT_TIMEVALUE= #CURLOPTTYPE_LONG + 34
; Custom request= #CURLOPTTYPE_For customizing the get command like
; HTTP: DELETE + TRACE And others
; FTP: To use a different list command
#CURLOPT_CUSTOMREQUEST= #CURLOPTTYPE_OBJECTPOINT + 36
; HTTP request= #CURLOPTTYPE_For odd commands like DELETE + TRACE And others
#CURLOPT_STDERR= #CURLOPTTYPE_OBJECTPOINT + 37
; send linked-list of post-transfer QUOTE commands
#CURLOPT_POSTQUOTE= #CURLOPTTYPE_OBJECTPOINT + 39
; Pass a pointer To string of the output using full variable-replacement
; As described elsewhere.
#CURLOPT_WRITEINFO= #CURLOPTTYPE_OBJECTPOINT + 40
#CURLOPT_VERBOSE= #CURLOPTTYPE_LONG + 41 ; talk a lot
#CURLOPT_HEADER= #CURLOPTTYPE_LONG + 42 ; throw the header out too
#CURLOPT_NOPROGRESS= #CURLOPTTYPE_LONG + 43 ; shut off the progress meter
#CURLOPT_NOBODY= #CURLOPTTYPE_LONG + 44 ; use HEAD To get http document
#CURLOPT_FAILONERROR= #CURLOPTTYPE_LONG + 45 ; no output on http error codes >= 300
#CURLOPT_UPLOAD= #CURLOPTTYPE_LONG + 46 ; this is an upload
#CURLOPT_POST= #CURLOPTTYPE_LONG + 47 ; HTTP POST method
#CURLOPT_DIRLISTONLY= #CURLOPTTYPE_LONG + 48 ; Return bare names when listing directories
#CURLOPT_APPEND= #CURLOPTTYPE_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.
#CURLOPT_NETRC= #CURLOPTTYPE_LONG + 51
#CURLOPT_FOLLOWLOCATION= #CURLOPTTYPE_LONG + 52 ; use Location: Luke!
#CURLOPT_TRANSFERTEXT= #CURLOPTTYPE_LONG + 53 ; transfer Data in text/ASCII format
#CURLOPT_PUT= #CURLOPTTYPE_LONG + 54 ; HTTP PUT
; Function that will be called instead of the internal progress display
; function. This function should be defined As the curl_progress_callback
; Prototype defines.
#CURLOPT_PROGRESSFUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 56
; Data passed To the progress callback
#CURLOPT_PROGRESSDATA= #CURLOPTTYPE_OBJECTPOINT + 57
; We want the referer field set automatically when following locations
#CURLOPT_AUTOREFERER= #CURLOPTTYPE_LONG + 58
; Port of the proxy + can be set in the proxy string As well With:
; "[host]:[port]"
#CURLOPT_PROXYPORT= #CURLOPTTYPE_LONG + 59
; size of the POST input Data + If strlen() is Not good To use
#CURLOPT_POSTFIELDSIZE= #CURLOPTTYPE_LONG + 60
; tunnel non-http operations through a HTTP proxy
#CURLOPT_HTTPPROXYTUNNEL= #CURLOPTTYPE_LONG + 61
; Set the Interface string To use As outgoing network Interface
#CURLOPT_INTERFACE= #CURLOPTTYPE_OBJECTPOINT + 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.
#CURLOPT_KRBLEVEL= #CURLOPTTYPE_OBJECTPOINT + 63
; Set If we should verify the peer in ssl handshake + set 1 To verify.
#CURLOPT_SSL_VERIFYPEER= #CURLOPTTYPE_LONG + 64
; The CApath Or CAfile used To validate the peer certificate
; this option is used only If SSL_VERIFYPEER is true
#CURLOPT_CAINFO= #CURLOPTTYPE_OBJECTPOINT + 65
; Maximum number of http redirects To follow
#CURLOPT_MAXREDIRS= #CURLOPTTYPE_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.
#CURLOPT_FILETIME= #CURLOPTTYPE_LONG + 69
; This points To a linked list of telnet options
#CURLOPT_TELNETOPTIONS= #CURLOPTTYPE_OBJECTPOINT + 70
; Max amount of cached alive connections
#CURLOPT_MAXCONNECTS= #CURLOPTTYPE_LONG + 71
; What policy To use when closing connections when the cache is filled up
#CURLOPT_CLOSEPOLICY= #CURLOPTTYPE_LONG + 72
; 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.
#CURLOPT_FRESH_CONNECT= #CURLOPTTYPE_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.
#CURLOPT_FORBID_REUSE= #CURLOPTTYPE_LONG + 75
; Set To a file name that contains random Data For libcurl To use To
; seed the random engine when doing SSL connects.
#CURLOPT_RANDOM_FILE= #CURLOPTTYPE_OBJECTPOINT + 76
; Set To the Entropy Gathering Daemon socket pathname
#CURLOPT_EGDSOCKET= #CURLOPTTYPE_OBJECTPOINT + 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. [Only works on unix-style/SIGALRM operating systems]
#CURLOPT_CONNECTTIMEOUT= #CURLOPTTYPE_LONG + 78
; Function that will be called To store headers (instead of fwrite). The
; parameters will use fwrite() syntax + make sure To follow them.
#CURLOPT_HEADERFUNCTION= #CURLOPTTYPE_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.
#CURLOPT_HTTPGET= #CURLOPTTYPE_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.
#CURLOPT_SSL_VERIFYHOST= #CURLOPTTYPE_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.
#CURLOPT_COOKIEJAR= #CURLOPTTYPE_OBJECTPOINT + 82
; Specify which SSL ciphers To use
#CURLOPT_SSL_CIPHER_LIST= #CURLOPTTYPE_OBJECTPOINT + 83
; Specify which HTTP version To use! This must be set To one of the
; CURL_HTTP_VERSION* enums set below.
#CURLOPT_HTTP_VERSION= #CURLOPTTYPE_LONG + 84
; Specificly 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.
#CURLOPT_FTP_USE_EPSV= #CURLOPTTYPE_LONG + 85
; type of the file keeping your SSL-certificate ("DER" + "PEM" + "ENG")
#CURLOPT_SSLCERTTYPE= #CURLOPTTYPE_OBJECTPOINT + 86
; name of the file keeping your private SSL-key
#CURLOPT_SSLKEY= #CURLOPTTYPE_OBJECTPOINT + 87
; type of the file keeping your private SSL-key ("DER" + "PEM" + "ENG")
#CURLOPT_SSLKEYTYPE= #CURLOPTTYPE_OBJECTPOINT + 88
; crypto engine For the SSL-sub system
#CURLOPT_SSLENGINE= #CURLOPTTYPE_OBJECTPOINT + 89
; set the crypto engine For the SSL-sub system As Default
; the param has no meaning...
#CURLOPT_SSLENGINE_DEFAULT= #CURLOPTTYPE_LONG + 90
; Non-zero value means To use the Global dns cache
#CURLOPT_DNS_USE_GLOBAL_CACHE= #CURLOPTTYPE_LONG + 91 ; To become OBSOLETE soon
; DNS cache timeout
#CURLOPT_DNS_CACHE_TIMEOUT= #CURLOPTTYPE_LONG + 92
; send linked-list of pre-transfer QUOTE commands (Wesley Laxton)
#CURLOPT_PREQUOTE= #CURLOPTTYPE_OBJECTPOINT + 93
; set the Debug function
#CURLOPT_DEBUGFUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 94
; set the Data For the Debug function
#CURLOPT_DEBUGDATA= #CURLOPTTYPE_OBJECTPOINT + 95
; mark this As start of a cookie session
#CURLOPT_COOKIESESSION= #CURLOPTTYPE_LONG + 96
; The CApath directory used To validate the peer certificate
; this option is used only If SSL_VERIFYPEER is true
#CURLOPT_CAPATH= #CURLOPTTYPE_OBJECTPOINT + 97
; Instruct libcurl To use a smaller receive buffer
#CURLOPT_BUFFERSIZE= #CURLOPTTYPE_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.
#CURLOPT_NOSIGNAL= #CURLOPTTYPE_LONG + 99
; Provide a CURLShare For mutexing non-ts Data
#CURLOPT_SHARE= #CURLOPTTYPE_OBJECTPOINT + 100
; indicates type of proxy. accepted values are CURLPROXY_HTTP (Default
; CURLPROXY_SOCKS4 And CURLPROXY_SOCKS5.
#CURLOPT_PROXYTYPE= #CURLOPTTYPE_LONG + 101
; Set the Accept-Encoding string. Use this To tell a server you would like
; the response To be compressed.
#CURLOPT_ENCODING= #CURLOPTTYPE_OBJECTPOINT + 102
; Set pointer To private Data
#CURLOPT_PRIVATE= #CURLOPTTYPE_OBJECTPOINT + 103
; Set aliases For HTTP 200 in the HTTP Response header
#CURLOPT_HTTP200ALIASES= #CURLOPTTYPE_OBJECTPOINT + 104
; Continue To send authentication (user+password) when following locations,
; even when hostname changed. This can potentionally send off the name
; And password To whatever host the server decides.
#CURLOPT_UNRESTRICTED_AUTH= #CURLOPTTYPE_LONG + 105
; Specificly 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.
#CURLOPT_FTP_USE_EPRT= #CURLOPTTYPE_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.
#CURLOPT_HTTPAUTH= #CURLOPTTYPE_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.
#CURLOPT_SSL_CTX_FUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 108
; Set the userdata For the ssl context callback function's third
; argument
#CURLOPT_SSL_CTX_DATA= #CURLOPTTYPE_OBJECTPOINT + 109
; FTP Option that causes missing dirs To be created on the remote server
#CURLOPT_FTP_CREATE_MISSING_DIRS= #CURLOPTTYPE_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.
#CURLOPT_PROXYAUTH= #CURLOPTTYPE_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.
#CURLOPT_FTP_RESPONSE_TIMEOUT= #CURLOPTTYPE_LONG + 112
; 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.
#CURLOPT_IPRESOLVE= #CURLOPTTYPE_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.
#CURLOPT_MAXFILESIZE= #CURLOPTTYPE_LONG + 114
; See the comment For INFILESIZE above + but in short + specifies
; the size of the file being uploaded. -1 means unknown.
#CURLOPT_INFILESIZE_LARGE= #CURLOPTTYPE_OFF_T + 115
; Sets the continuation offset. There is also a LONG version of this;
; look above For RESUME_FROM.
#CURLOPT_RESUME_FROM_LARGE= #CURLOPTTYPE_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.
#CURLOPT_MAXFILESIZE_LARGE= #CURLOPTTYPE_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= #CURLOPTTYPE_Libcurl will do
; a poor attempt To find the user's home directory and check for a .netrc
; file in there.
#CURLOPT_NETRC_FILE= #CURLOPTTYPE_OBJECTPOINT + 118
; Enable SSL/TLS For FTP + pick one of:
; CURLFTPSSL_TRY - try using SSL + proceed anyway otherwise
; CURLFTPSSL_CONTROL - SSL For the control connection Or fail
; CURLFTPSSL_ALL - SSL For all communication Or fail
#CURLOPT_USE_SSL= #CURLOPTTYPE_LONG + 119
; The _LARGE version of the standard POSTFIELDSIZE option
#CURLOPT_POSTFIELDSIZE_LARGE= #CURLOPTTYPE_OFF_T + 120
; Enable/disable the TCP Nagle algorithm
#CURLOPT_TCP_NODELAY= #CURLOPTTYPE_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
#CURLOPT_FTPSSLAUTH= #CURLOPTTYPE_LONG + 129
#CURLOPT_IOCTLFUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 130
#CURLOPT_IOCTLDATA= #CURLOPTTYPE_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
#CURLOPT_FTP_ACCOUNT= #CURLOPTTYPE_OBJECTPOINT + 134
; feed cookies into cookie engine
#CURLOPT_COOKIELIST= #CURLOPTTYPE_OBJECTPOINT + 135
; ignore Content-Length
#CURLOPT_IGNORE_CONTENT_LENGTH= #CURLOPTTYPE_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.
#CURLOPT_FTP_SKIP_PASV_IP= #CURLOPTTYPE_LONG + 137
; Select "file method" To use when doing FTP + see the curl_ftpmethod
; above.
#CURLOPT_FTP_FILEMETHOD= #CURLOPTTYPE_LONG + 138
; Local port number To bind the socket To
#CURLOPT_LOCALPORT= #CURLOPTTYPE_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.
#CURLOPT_LOCALPORTRANGE= #CURLOPTTYPE_LONG + 140
; no transfer + set up connection And let application use the socket by
; extracting it With CURLINFO_LASTSOCKET
#CURLOPT_CONNECT_ONLY= #CURLOPTTYPE_LONG + 141
; Function that will be called To convert from the
; network encoding (instead of using the iconv calls in libcurl)
#CURLOPT_CONV_FROM_NETWORK_FUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 142
; Function that will be called To convert To the
; network encoding (instead of using the iconv calls in libcurl)
#CURLOPT_CONV_TO_NETWORK_FUNCTION= #CURLOPTTYPE_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
#CURLOPT_CONV_FROM_UTF8_FUNCTION= #CURLOPTTYPE_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
#CURLOPT_MAX_SEND_SPEED_LARGE= #CURLOPTTYPE_OFF_T + 145
#CURLOPT_MAX_RECV_SPEED_LARGE= #CURLOPTTYPE_OFF_T + 146
; Pointer To command string To send If USER/PASS fails.
#CURLOPT_FTP_ALTERNATIVE_TO_USER= #CURLOPTTYPE_OBJECTPOINT + 147
; callback function For setting socket options
#CURLOPT_SOCKOPTFUNCTION= #CURLOPTTYPE_FUNCTIONPOINT + 148
#CURLOPT_SOCKOPTDATA= #CURLOPTTYPE_OBJECTPOINT + 149
; set To 0 To disable session ID re-use For this transfer + Default is
; enabled (== 1)
#CURLOPT_SSL_SESSIONID_CACHE= #CURLOPTTYPE_LONG + 150
; allowed SSH authentication methods
#CURLOPT_SSH_AUTH_TYPES= #CURLOPTTYPE_LONG + 151
; Used by scp/sftp To do public/private key authentication
#CURLOPT_SSH_PUBLIC_KEYFILE= #CURLOPTTYPE_OBJECTPOINT + 152
#CURLOPT_SSH_PRIVATE_KEYFILE= #CURLOPTTYPE_OBJECTPOINT + 153
; Send CCC (Clear Command Channel) after authentication
#CURLOPT_FTP_SSL_CCC= #CURLOPTTYPE_LONG + 154
; Same As TIMEOUT And CONNECTTIMEOUT + but With ms resolution
#CURLOPT_TIMEOUT_MS= #CURLOPTTYPE_LONG + 155
#CURLOPT_CONNECTTIMEOUT_MS= #CURLOPTTYPE_LONG + 156
; set To zero To disable the libcurl's decoding and thus pass the raw body
; Data To the appliction even when it is encoded/compressed
#CURLOPT_HTTP_TRANSFER_DECODING= #CURLOPTTYPE_LONG + 157
#CURLOPT_HTTP_CONTENT_DECODING= #CURLOPTTYPE_LONG + 158
; Permission used when creating new files And directories on the remote
; server For protocols that support it + SFTP/SCP/FILE
#CURLOPT_NEW_FILE_PERMS = #CURLOPTTYPE_LONG + 159
#CURLOPT_NEW_DIRECTORY_PERMS= #CURLOPTTYPE_LONG + 160
Re: Ultimate Pb 6.03 Stuff for Windows XP
Suite.
Code: Select all
; POST volatile input fields.
#CURLOPT_COPYPOSTFIELDS = #CURLOPTTYPE_OBJECTPOINT + 165
; set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy
#CURLOPT_PROXY_TRANSFER_MODE = #CURLOPTTYPE_LONG + 166
; Callback function For seeking in the input stream
#CURLOPT_SEEKFUNCTION = #CURLOPTTYPE_FUNCTIONPOINT + 167
#CURLOPT_SEEKDATA = #CURLOPTTYPE_OBJECTPOINT + 168
; CRL file
#CURLOPT_CRLFILE = #CURLOPTTYPE_STRINGPOINT + 169
; Issuer certificate
#CURLOPT_ISSUERCERT = #CURLOPTTYPE_STRINGPOINT + 170
; (IPv6) Address scope
#CURLOPT_ADDRESS_SCOPE = #CURLOPTTYPE_LONG + 171
; Collect certificate chain info And allow it To get retrievable With
; CURLINFO_CERTINFO after the transfer is complete.
#CURLOPT_CERTINFO = #CURLOPTTYPE_LONG + 172
; "name" and "pwd" to use when fetching.
#CURLOPT_USERNAME = #CURLOPTTYPE_OBJECTPOINT + 173
#CURLOPT_PASSWORD = #CURLOPTTYPE_OBJECTPOINT + 174
; "name" and "pwd" to use with Proxy when fetching.
#PROXYUSERNAME = #CURLOPTTYPE_OBJECTPOINT + 175
#PROXYPASSWORD = #CURLOPTTYPE_OBJECTPOINT + 176
#CURLOPT_MAIL_FROM = #CURLOPTTYPE_OBJECTPOINT + 186
#CURLOPT_MAIL_RCPT = #CURLOPTTYPE_OBJECTPOINT + 187
; CURLOPT_LASTENTRY ; the last unused
#CURLOPT_FTPLISTONLY = #CURLOPT_DIRLISTONLY
;}
;{ #HTTPPOST
#HTTPPOST_FILENAME = 1<<0 ; specified content is a file name
#HTTPPOST_READFILE = 1<<1 ; specified content is a file name
#HTTPPOST_PTRNAME = 1<<2 ; name is only stored pointer
; do Not free in formfree
#HTTPPOST_PTRCONTENTS = 1<<3 ; contents is only stored pointer
; do Not free in formfree
#HTTPPOST_BUFFER = 1<<4 ; upload file from buffer
#HTTPPOST_PTRBUFFER = 1<<5 ; upload file from pointer contents
;}
; #CURLE_OBSOLETE = #CURLE_OBSOLETE50 ; noone should be using this!
; #CURLE_BAD_PASSWORD_ENTERED = #CURLE_OBSOLETE46
; #CURLE_BAD_CALLING_ORDER = #CURLE_OBSOLETE44
; #CURLE_FTP_USER_PASSWORD_INCORRECT = #CURLE_OBSOLETE10
; #CURLE_FTP_CANT_RECONNECT = #CURLE_OBSOLETE16
; #CURLE_FTP_COULDNT_GET_SIZE = #CURLE_OBSOLETE32
; #CURLE_FTP_COULDNT_SET_ASCII = #CURLE_OBSOLETE29
; #CURLE_FTP_WEIRD_USER_REPLY = #CURLE_OBSOLETE12
; #CURLE_FTP_WRITE_ERROR = #CURLE_OBSOLETE20
; #CURLE_LIBRARY_NOT_FOUND = #CURLE_OBSOLETE40
; #CURLE_MALFORMAT_USER = #CURLE_OBSOLETE24
; #CURLE_SHARE_IN_USE = #CURLE_OBSOLETE57
; #CURLE_URL_MALFORMAT_USER = #CURLE_OBSOLETE4
; #CURLE_FTP_ACCESS_DENIED = #CURLE_REMOTE_ACCESS_DENIED
; #CURLE_FTP_COULDNT_SET_BINARY = #CURLE_FTP_COULDNT_SET_TYPE
; #CURLE_FTP_QUOTE_ERROR = #CURLE_QUOTE_ERROR
; #CURLE_TFTP_DISKFULL = #CURLE_REMOTE_DISK_FULL
; #CURLE_TFTP_EXISTS = #CURLE_REMOTE_FILE_EXISTS
; #CURLE_HTTP_RANGE_ERROR = #CURLE_RANGE_ERROR
; #CURLE_FTP_SSL_FAILED = #CURLE_USE_SSL_FAILED
; #CURLE_OPERATION_TIMEOUTED = #CURLE_OPERATION_TIMEDOUT
#CURLE_HTTP_NOT_FOUND = #CURLE_HTTP_RETURNED_ERROR
#CURLE_HTTP_PORT_FAILED = #CURLE_INTERFACE_FAILED
; #CURLE_FTP_COULDNT_STOR_FILE = #CURLE_UPLOAD_FAILED
#CURLE_FTP_PARTIAL_FILE = #CURLE_PARTIAL_FILE
#CURLE_FTP_BAD_DOWNLOAD_RESUME = #CURLE_BAD_DOWNLOAD_RESUME
#CURLE_ALREADY_COMPLETE = 99999
#CURLAUTH_NONE = 0 ; nothing
#CURLAUTH_BASIC = 1<<0 ; Basic (Default)
#CURLAUTH_DIGEST = 1<<1 ; Digest
#CURLAUTH_GSSNEGOTIATE = 1<<2 ; GSS-Negotiate
#CURLAUTH_NTLM = 1<<3 ; NTLM
#CURLAUTH_ANY = ~0 ; all types set
#CURLAUTH_ANYSAFE = ~#CURLAUTH_BASIC
#CURLSSH_AUTH_ANY = ~0 ; all types supported by the server
#CURLSSH_AUTH_NONE = 0 ; none allowed, silly but complete
#CURLSSH_AUTH_PUBLICKEY = 1<<0 ; public/private key files
#CURLSSH_AUTH_PASSWORD = 1<<1 ; password
#CURLSSH_AUTH_HOST = 1<<2 ; host key files
#CURLSSH_AUTH_KEYBOARD = 1<<3 ; keyboard interactive
#CURLSSH_AUTH_DEFAULT = #CURLSSH_AUTH_ANY
#CURL_ERROR_SIZE = 256
#CURLFTPSSL_NONE = #CURLUSESSL_NONE
#CURLFTPSSL_TRY = #CURLUSESSL_TRY
#CURLFTPSSL_CONTROL = #CURLUSESSL_CONTROL
#CURLFTPSSL_ALL = #CURLUSESSL_ALL
#CURLFTPSSL_LAST = #CURLUSESSL_LAST
#CURLOPT_SSLKEYPASSWD = #CURLOPT_KEYPASSWD
#CURLOPT_FTPAPPEND = #CURLOPT_APPEND
#CURLOPT_FTPLISTONLY = #CURLOPT_DIRLISTONLY
#CURLOPT_FTP_SSL = #CURLOPT_USE_SSL
#CURLOPT_SSLCERTPASSWD = #CURLOPT_KEYPASSWD
#CURLOPT_KRB4LEVEL = #CURLOPT_KRBLEVEL
; Below here follows defines for the CURLOPT_IPRESOLVE option. If a host
; name resolves addresses using more than one IP protocol version, this
; option might be handy to force libcurl to use a specific IP version.
#CURL_IPRESOLVE_WHATEVER = 0 ; Default, resolves addresses To all IP versions that your system allows
#CURL_IPRESOLVE_V4 = 1 ; resolve To ipv4 addresses
#CURL_IPRESOLVE_V6 = 2 ; resolve To ipv6 addresses
; three convenient "aliases" that follow the name scheme better
#CURLOPT_WRITEDATA = #CURLOPT_FILE
#CURLOPT_READDATA = #CURLOPT_INFILE
#CURLOPT_HEADERDATA = #CURLOPT_WRITEHEADER
#CURLOPT_RTSPHEADER = #CURLOPT_HTTPHEADER
; These enums are For use With the CURLOPT_HTTP_VERSION option.
Enumeration ; curl_http
#CURL_HTTP_VERSION_NONE ; setting this means we don't care and that we'd
; like the library To choose the best possible
; For us!
#CURL_HTTP_VERSION_1_0 ; please use HTTP 1.0 in the request
#CURL_HTTP_VERSION_1_1 ; please use HTTP 1.1 in the request
#CURL_HTTP_VERSION_2_0 ; please use HTTP 2.0 in the request
#CURL_HTTP_VERSION_LAST ; *ILLEGAL* http version
EndEnumeration
;
; Public API enums For RTSP requests
;
Enumeration
#CURL_RTSPREQ_NONE ; first in List
#CURL_RTSPREQ_OPTIONS
#CURL_RTSPREQ_DESCRIBE
#CURL_RTSPREQ_ANNOUNCE
#CURL_RTSPREQ_SETUP
#CURL_RTSPREQ_PLAY
#CURL_RTSPREQ_PAUSE
#CURL_RTSPREQ_TEARDOWN
#CURL_RTSPREQ_GET_PARAMETER
#CURL_RTSPREQ_SET_PARAMETER
#CURL_RTSPREQ_RECORD
#CURL_RTSPREQ_RECEIVE
#CURL_RTSPREQ_LAST ;last in List
EndEnumeration
; These enums are For use With the CURLOPT_NETRC option.
Enumeration
#CURL_NETRC_IGNORED ; The .netrc will never be Read.
; This is the Default.
#CURL_NETRC_OPTIONAL ; A user:password in the URL will be preferred
; To one in the .netrc.
#CURL_NETRC_REQUIRED ; A user:password in the URL will be ignored.
; Unless one is set programmatically the .netrc
; will be queried.
#CURL_NETRC_LAST
EndEnumeration
Enumeration
#CURL_SSLVERSION_DEFAULT
#CURL_SSLVERSION_TLSv1 ; TLS 1.x
#CURL_SSLVERSION_SSLv2
#CURL_SSLVERSION_SSLv3
#CURL_SSLVERSION_TLSv1_0
#CURL_SSLVERSION_TLSv1_1
#CURL_SSLVERSION_TLSv1_2
#CURL_SSLVERSION_LAST ; never use keep last
EndEnumeration
Enumeration ;CURL_TLSAUTH
#CURL_TLSAUTH_NONE
#CURL_TLSAUTH_SRP
#CURL_TLSAUTH_LAST ; never use, keep last
EndEnumeration
Enumeration ; curl_TimeCond
#CURL_TIMECOND_NONE
#CURL_TIMECOND_IFMODSINCE
#CURL_TIMECOND_IFUNMODSINCE
#CURL_TIMECOND_LASTMOD
#CURL_TIMECOND_LAST
EndEnumeration ;
; CURLINFO_RESPONSE_CODE is the new name For the option previously known As
; CURLINFO_HTTP_CODE
#CURLINFO_HTTP_CODE = #CURLINFO_RESPONSE_CODE
#CURL_GLOBAL_SSL = 1<<0
#CURL_GLOBAL_WIN32 = 1<<1
#CURL_GLOBAL_ALL = #CURL_GLOBAL_SSL|#CURL_GLOBAL_WIN32
#CURL_GLOBAL_NOTHING= 0
#CURL_GLOBAL_DEFAULT= #CURL_GLOBAL_ALL
;The 'CURLVERSION_NOW' is the symbolic name meant To be used by
; basicly all programs ever, that want To get version information. It is
; meant To be a built-in version number For what kind of struct the caller
; expects. If the struct ever changes, we rethe NOW To another enum
; from above.
#CURLVERSION_NOW = #CURLVERSION_FOURTH
#CURL_VERSION_IPV6 = 1<<0 ;IPv6-enabled
#CURL_VERSION_KERBEROS4 = 1<<1 ;kerberos auth is supported
#CURL_VERSION_SSL = 1<<2 ;SSL options are present
#CURL_VERSION_LIBZ = 1<<3 ;libz features are present
#CURL_VERSION_NTLM = 1<<4 ;NTLM auth is supported
#CURL_VERSION_GSSNEGOTIATE = 1<<5; Negotiate auth support
#CURL_VERSION_DEBUG = 1<<6 ;built With Debug capabilities
#CURL_VERSION_ASYNCHDNS = 1<<7 ;asynchronous dns resolves
#CURL_VERSION_SPNEGO = 1<<8 ;SPNEGO auth
#CURL_VERSION_LARGEFILE = 1<<9 ;supports files bigger than 2GB
#CURL_VERSION_IDN = 1<<10 ;International Domain Names support
#CURL_VERSION_SSPI = 1<<11 ;SSPI is supported
#CURL_VERSION_CONV = 1<<12 ;character conversions are supported
;}
;- Structures
Structure Curl_HTTPPost
*Next_.Curl_HTTPPost ; Next entry in the list
*name.String ; Ptr to allocated name
namelength.i ; Length of name length
*contents.String ; Ptr to allocated data contents
contentslength.i ; Length of contents field
*buffer.String ; Ptr to allocated buffer contents
bufferlength.i ; Length of buffer field
*contenttype.String ; Content-Type
*contentheader ; List of extra headers for this form
*more.Curl_HTTPPost ; If one field name has more than one
; file, this link should link To following files
flags.i ; constante #HTTPPOST
*showfilename ; The file name to show. If not set, the
; actual file name will be used (If this
; is a file part)
EndStructure
; Structure To be used As parameter For CURLFORM_ARRAY
Structure Curl_Forms
option.i
*value.String
EndStructure
; linked-list Structure For the CURLOPT_QUOTE option (And other)
Structure Curl_Slist
*Data.String
*Next_.curl_slist
EndStructure
Structure curl_version_info_data
age.i ; age of the returned struct
*version.String ; LIBCURL_VERSION
version_num.i ; LIBCURL_VERSION_NUM
*host.String ; OS/host/cpu/machine when configured
features.i ; bitmask, see defines below
*ssl_version.String ; human readable string
ssl_version_num.i ; not used anymore, always 0
*libz_version.String; human readable string
; protocols is terminated by an entry With a NULL protoname
*protocols.String
; The fields below this were added in CURLVERSION_SECOND
*ares.String
ares_num.i
; This field was added in CURLVERSION_THIRD
*libidn.String;
; These field were added in CURLVERSION_FOURTH
; Same As '_libiconv_version' If built With HAVE_ICONV
iconv_ver_num.i
*libssh_version.String ; human readable string
EndStructure
Structure curl_certinfo
num_of_certs.i ;number of certificates With information */
*certinfo.curl_slist[0]
EndStructure
CompilerIf #LibCurl_ExternalDLL
PrototypeC.i Prototype_curl_easy_cleanup(handle.i)
PrototypeC.i Prototype_curl_easy_duphandle(handle.i)
PrototypeC.i Prototype_curl_easy_getinfo(curl.i, info_type.i, info.i)
PrototypeC.i Prototype_curl_easy_init()
PrototypeC.i Prototype_curl_easy_perform(handle.i)
PrototypeC.i Prototype_curl_easy_reset(handle.i)
PrototypeC.i Prototype_curl_easy_setopt(handle.i, option.i, parameter.i)
;Prototype.i Prototype_curl_easy_setopt_str(handle.i, option.i, parameter.p-utf8)
PrototypeC.i Prototype_curl_easy_strerror(errornum.i)
PrototypeC.i Prototype_curl_escape(url.i, length.i)
PrototypeC.i Prototype_curl_formadd(firstitem.i, lastitem.i, p1.i=#Null, p2.i=#Null, p3.i=#Null, p4.i=#Null, p5.i=#Null)
PrototypeC.i Prototype_curl_formfree(form.i)
PrototypeC.i Prototype_curl_free(ptr.i)
PrototypeC.i Prototype_curl_getdate(datestring.i, now.i)
PrototypeC.i Prototype_curl_getenv(name.i)
PrototypeC.i Prototype_curl_global_cleanup()
PrototypeC.i Prototype_curl_global_init(flags.i)
PrototypeC.i Prototype_curl_global_init_mem(flags.i, m.i, f.i, r.i, s.i, c.i)
PrototypeC.i Prototype_curl_mprintf(format.i)
PrototypeC.i Prototype_curl_mfprintf(fd.i, format.i)
PrototypeC.i Prototype_curl_msprintf(buffer.i, format.i)
PrototypeC.i Prototype_curl_msnprintf(buffer.i, maxlength.i, format.i)
PrototypeC.i Prototype_curl_mvprintf(format.i, args.i)
PrototypeC.i Prototype_curl_mvfprintf(fd.i, format.i, args.i)
PrototypeC.i Prototype_curl_mvsprintf(buffer.i, format.i, args.i)
PrototypeC.i Prototype_curl_mvsnprintf(buffer.i, maxlength.i, format.i, args.i)
PrototypeC.i Prototype_curl_maprintf(format.i)
PrototypeC.i Prototype_curl_mvaprintf(format.i, args.i)
PrototypeC.i Prototype_curl_multi_add_handle(multi_handle.i, easy_handle.i)
PrototypeC.i Prototype_curl_multi_cleanup(multi_handle.i)
PrototypeC.i Prototype_curl_multi_fdset(multi_handle.i, read_fd_set.i, write_fd_set.i, exc_fd_set.i, max_fd.i)
PrototypeC.i Prototype_curl_multi_info_read(multi_handle.i, msgs_in_queue.i)
PrototypeC.i Prototype_curl_multi_init()
PrototypeC.i Prototype_curl_multi_perform(multi_handle.i, running_handles.i)
PrototypeC.i Prototype_curl_multi_remove_handle(multi_handle.i, easy_handle.i)
PrototypeC.i Prototype_curl_multi_strerror(errornum.i)
PrototypeC.i Prototype_curl_share_cleanup(share_handle.i)
PrototypeC.i Prototype_curl_share_init()
PrototypeC.i Prototype_curl_share_setopt(share.i, option.i, parameter.i)
PrototypeC.i Prototype_curl_share_strerror(errornum.i)
PrototypeC.i Prototype_curl_slist_append(slist.i, string.p-utf8)
PrototypeC.i Prototype_curl_slist_free_all(slist.i)
PrototypeC.i Prototype_curl_strequal(str1.i, str2.i)
PrototypeC.i Prototype_curl_strnequal(str1.i, str2.i, len.i)
PrototypeC.i Prototype_curl_unescape(url.i, length.i)
PrototypeC.i Prototype_curl_version()
PrototypeC.i Prototype_curl_version_info(type.i)
Global curl_easy_cleanup.Prototype_curl_easy_cleanup
Global curl_easy_duphandle.Prototype_curl_easy_duphandle
Global curl_easy_getinfo.Prototype_curl_easy_getinfo
Global curl_easy_init.Prototype_curl_easy_init
Global curl_easy_perform.Prototype_curl_easy_perform
Global curl_easy_reset.Prototype_curl_easy_reset
Global curl_easy_setopt.Prototype_curl_easy_setopt
;Global curl_easy_setopt_str.Prototype_curl_easy_setopt_str
Global curl_easy_strerror_.Prototype_curl_easy_strerror
Global curl_escape.Prototype_curl_escape
Global curl_formadd.Prototype_curl_formadd
Global curl_formfree.Prototype_curl_formfree
Global curl_free.Prototype_curl_free
Global curl_getdate.Prototype_curl_getdate
Global curl_getenv.Prototype_curl_getenv
Global curl_global_cleanup.Prototype_curl_global_cleanup
Global curl_global_init.Prototype_curl_global_init
Global curl_global_init_mem.Prototype_curl_global_init_mem
Global curl_mprintf.Prototype_curl_mprintf
Global curl_mfprintf.Prototype_curl_mfprintf
Global curl_msprintf.Prototype_curl_msprintf
Global curl_msnprintf.Prototype_curl_msnprintf
Global curl_mvprintf.Prototype_curl_mvprintf
Global curl_mvfprintf.Prototype_curl_mvfprintf
Global curl_mvsprintf.Prototype_curl_mvsprintf
Global curl_mvsnprintf.Prototype_curl_mvsnprintf
Global curl_maprintf.Prototype_curl_maprintf
Global curl_mvaprintf.Prototype_curl_mvaprintf
Global curl_multi_add_handle.Prototype_curl_multi_add_handle
Global curl_multi_cleanup.Prototype_curl_multi_cleanup
Global curl_multi_fdset.Prototype_curl_multi_fdset
Global curl_multi_info_read.Prototype_curl_multi_info_read
Global curl_multi_init.Prototype_curl_multi_init
Global curl_multi_perform.Prototype_curl_multi_perform
Global curl_multi_remove_handle.Prototype_curl_multi_remove_handle
Global curl_multi_strerror.Prototype_curl_multi_strerror
Global curl_share_cleanup.Prototype_curl_share_cleanup
Global curl_share_init.Prototype_curl_share_init
Global curl_share_setopt.Prototype_curl_share_setopt
Global curl_share_strerror.Prototype_curl_share_strerror
Global curl_slist_append.Prototype_curl_slist_append
Global curl_slist_free_all.Prototype_curl_slist_free_all
Global curl_strequal.Prototype_curl_strequal
Global curl_strnequal.Prototype_curl_strnequal
Global curl_unescape.Prototype_curl_unescape
Global curl_version_.Prototype_curl_version
Global curl_version_info.Prototype_curl_version_info
Define LibCurlDLL.i
LibCurlDLL = OpenLibrary(#PB_Any, "libcurl.dll")
If LibCurlDLL
curl_easy_cleanup = GetFunction(LibCurlDLL, "curl_easy_cleanup")
curl_easy_duphandle = GetFunction(LibCurlDLL, "curl_easy_duphandle")
curl_easy_getinfo = GetFunction(LibCurlDLL, "curl_easy_getinfo")
curl_easy_init = GetFunction(LibCurlDLL, "curl_easy_init")
curl_easy_perform = GetFunction(LibCurlDLL, "curl_easy_perform")
curl_easy_reset = GetFunction(LibCurlDLL, "curl_easy_reset")
curl_easy_setopt = GetFunction(LibCurlDLL, "curl_easy_setopt")
;curl_easy_setopt_str = GetFunction(LibCurlDLL, "curl_easy_setopt")
curl_easy_strerror_ = GetFunction(LibCurlDLL, "curl_easy_strerror")
curl_escape = GetFunction(LibCurlDLL, "curl_escape")
curl_formadd = GetFunction(LibCurlDLL, "curl_formadd")
curl_formfree = GetFunction(LibCurlDLL, "curl_formfree")
curl_free = GetFunction(LibCurlDLL, "curl_free")
curl_getdate = GetFunction(LibCurlDLL, "curl_getdate")
curl_getenv = GetFunction(LibCurlDLL, "curl_getenv")
curl_global_cleanup = GetFunction(LibCurlDLL, "curl_global_cleanup")
curl_global_init = GetFunction(LibCurlDLL, "curl_global_init")
curl_global_init_mem = GetFunction(LibCurlDLL, "curl_global_init_mem")
curl_mprintf = GetFunction(LibCurlDLL, "curl_mprintf")
curl_mfprintf = GetFunction(LibCurlDLL, "curl_mfprintf")
curl_msprintf = GetFunction(LibCurlDLL, "curl_msprintf")
curl_msnprintf = GetFunction(LibCurlDLL, "curl_msnprintf")
curl_mvprintf = GetFunction(LibCurlDLL, "curl_mvprintf")
curl_mvfprintf = GetFunction(LibCurlDLL, "curl_mvfprintf")
curl_mvsprintf = GetFunction(LibCurlDLL, "curl_mvsprintf")
curl_mvsnprintf = GetFunction(LibCurlDLL, "curl_mvsnprintf")
curl_maprintf = GetFunction(LibCurlDLL, "curl_maprintf")
curl_mvaprintf = GetFunction(LibCurlDLL, "curl_mvaprintf")
curl_multi_add_handle = GetFunction(LibCurlDLL, "curl_multi_add_handle")
curl_multi_cleanup = GetFunction(LibCurlDLL, "curl_multi_cleanup")
curl_multi_fdset = GetFunction(LibCurlDLL, "curl_multi_fdset")
curl_multi_info_read = GetFunction(LibCurlDLL, "curl_multi_info_read")
curl_multi_init = GetFunction(LibCurlDLL, "curl_multi_init")
curl_multi_perform = GetFunction(LibCurlDLL, "curl_multi_perform")
curl_multi_remove_handle = GetFunction(LibCurlDLL, "curl_multi_remove_handle")
curl_multi_strerror = GetFunction(LibCurlDLL, "curl_multi_strerror")
curl_share_cleanup = GetFunction(LibCurlDLL, "curl_share_cleanup")
curl_share_init = GetFunction(LibCurlDLL, "curl_share_init")
curl_share_setopt = GetFunction(LibCurlDLL, "curl_share_setopt")
curl_share_strerror = GetFunction(LibCurlDLL, "curl_share_strerror")
curl_slist_append = GetFunction(LibCurlDLL, "curl_slist_append")
curl_slist_free_all = GetFunction(LibCurlDLL, "curl_slist_free_all")
curl_strequal = GetFunction(LibCurlDLL, "curl_strequal")
curl_strnequal = GetFunction(LibCurlDLL, "curl_strnequal")
curl_unescape = GetFunction(LibCurlDLL, "curl_unescape")
curl_version_ = GetFunction(LibCurlDLL, "curl_version")
curl_version_info = GetFunction(LibCurlDLL, "curl_version_info")
EndIf
Procedure.i curl_easy_setopt_str(handle.i, option.i, parameter$)
Protected Result.i, *UTF8
*UTF8 = UTF8(parameter$)
Result = curl_easy_setopt(handle, option, *UTF8)
ProcedureReturn Result
EndProcedure
CompilerElse
;- Imports
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
ImportC "/usr/lib/libcurl.so"
CompilerCase #PB_OS_Windows
ImportC "crypt32.lib"
EndImport
ImportC "ws2_32.lib"
EndImport
CompilerIf Defined(LibCurl_ExternalDLL, #PB_Constant)
CompilerIf #LibCurl_ExternalDLL = #True
ImportC "libcurl_ExternalDLL.lib"
CompilerElse
ImportC "libcurl.lib"
CompilerEndIf
CompilerElse
ImportC "libcurl.lib"
CompilerEndIf
CompilerCase #PB_OS_MacOS
ImportC "/usr/lib/libcurl.dylib"
CompilerEndSelect
curl_easy_cleanup(handle.i)
curl_easy_duphandle(handle.i)
curl_easy_getinfo(curl.i, info_type.i, info.i)
curl_easy_init()
curl_easy_perform(handle.i)
curl_easy_reset(handle.i)
curl_easy_setopt(handle.i, option.i, parameter.i)
curl_escape(url.i, length.i)
curl_formadd(firstitem.i, lastitem.i, p1.i=#Null, p2.i=#Null, p3.i=#Null, p4.i=#Null, p5.i=#Null)
curl_formfree(form.i)
curl_free(ptr.i)
curl_getdate(datestring.i, now.i)
curl_getenv(name.i)
curl_global_cleanup()
curl_global_init(flags.i)
curl_global_init_mem(flags.i, m.i, f.i, r.i, s.i, c.i)
curl_mprintf(format.i)
curl_mfprintf(fd.i, format.i)
curl_msprintf(buffer.i, format.i)
curl_msnprintf(buffer.i, maxlength.i, format.i)
curl_mvprintf(format.i, args.i)
curl_mvfprintf(fd.i, format.i, args.i)
curl_mvsprintf(buffer.i, format.i, args.i)
curl_mvsnprintf(buffer.i, maxlength.i, format.i, args.i)
curl_maprintf(format.i)
curl_mvaprintf(format.i, args.i)
curl_multi_add_handle(multi_handle.i, easy_handle.i)
curl_multi_cleanup(multi_handle.i)
curl_multi_fdset(multi_handle.i, read_fd_set.i, write_fd_set.i, exc_fd_set.i, max_fd.i)
curl_multi_info_read(multi_handle.i, msgs_in_queue.i)
curl_multi_init()
curl_multi_perform(multi_handle.i, running_handles.i)
curl_multi_remove_handle(multi_handle.i, easy_handle.i)
curl_multi_strerror(errornum.i)
curl_share_cleanup(share_handle.i)
curl_share_init()
curl_share_setopt(share.i, option.i, parameter.i)
curl_share_strerror(errornum.i)
curl_slist_append(slist.i, string.p-utf8)
curl_slist_free_all(slist.i)
curl_strequal(str1.i, str2.i)
curl_strnequal(str1.i, str2.i, len.i)
curl_unescape(url.i, length.i)
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
curl_version_() As "curl_version"
CompilerElse
curl_version_() As "_curl_version"
CompilerEndIf
curl_version_info(type.i)
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
curl_easy_setopt_str(handle.i, option.i, parameter.p-utf8) As "curl_easy_setopt"
curl_easy_strerror_(errornum.i) As "curl_easy_strerror"
CompilerElse
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
curl_easy_setopt_str(handle.i, option.i, parameter.p-utf8) As "curl_easy_setopt"
curl_easy_strerror_(errornum.i) As "curl_easy_strerror"
CompilerElse
curl_easy_setopt_str(handle.i, option.i, parameter.p-utf8) As "_curl_easy_setopt"
curl_easy_strerror_(errornum.i) As "_curl_easy_strerror"
CompilerEndIf
CompilerEndIf
EndImport
CompilerEndIf
Define LibCurl_ReceivedData$
ProcedureC.l LibCurl_ReadFunction(*ptr, Size, NMemB, Stream.i)
; ToDo
ProcedureReturn 0
EndProcedure
ProcedureC.l LibCurl_WriteFunction(*ptr, Size, NMemB, Target.i)
;retreives utf-8/ascii encoded data
Protected SizeProper.i = Size & 255
Protected NMemBProper.i = NMemB
Protected *String.String
Shared LibCurl_ReceivedData$
If Target = #Null
LibCurl_ReceivedData$ + PeekS(*ptr, SizeProper * NMemBProper, #PB_UTF8|#PB_ByteLength)
Else
If IsFile(Target)
WriteData(Target, *ptr, SizeProper * NMemBProper)
Else
;*String\s + PeekS(*ptr, SizeProper * NMemBProper, #PB_UTF8|#PB_ByteLength)
LibCurl_ReceivedData$ + PeekS(*ptr, SizeProper * NMemBProper, #PB_UTF8|#PB_ByteLength)
EndIf
EndIf
ProcedureReturn SizeProper * NMemBProper
EndProcedure
Procedure.s LibCurl_GetData()
Shared LibCurl_ReceivedData$
Protected ReturnData$
ReturnData$ = LibCurl_ReceivedData$
LibCurl_ReceivedData$ = ""
ProcedureReturn ReturnData$
EndProcedure
Macro curl_easy_strerror(error)
PeekS(curl_easy_strerror_(error), -1, #PB_UTF8)
EndMacro
Macro curl_version()
PeekS(curl_version_(), -1, #PB_UTF8)
EndMacro
;-Demo
CompilerIf #PB_Compiler_IsMainFile
Define URL$, curl.i, res.i, result$, Post$, *CurlVersionInfo.curl_version_info_data
Define Protocol$, *Protocol, i.i
CompilerIf #PB_Compiler_Version < 600
InitNetwork()
CompilerEndIf
curl = curl_easy_init()
If curl
*CurlVersionInfo = curl_version_info(#CURLVERSION_NOW)
Debug "Version: " + PeekS(*CurlVersionInfo\version, -1, #PB_UTF8)
Debug "Host: " + PeekS(*CurlVersionInfo\host, -1, #PB_UTF8)
Debug "SSL: " + PeekS(*CurlVersionInfo\ssl_version, -1, #PB_UTF8)
If *CurlVersionInfo\libz_version
Debug "Libz: " + PeekS(*CurlVersionInfo\libz_version, -1, #PB_UTF8)
EndIf
If *CurlVersionInfo\libssh_version
Debug "libSSH: " + PeekS(*CurlVersionInfo\libssh_version, -1, #PB_UTF8)
EndIf
Debug "Protocols:"
Repeat
*Protocol = PeekI(*CurlVersionInfo\protocols + i)
If *Protocol
Debug PeekS(*Protocol, -1, #PB_UTF8)
i + SizeOf(Integer)
EndIf
Until *Protocol = #Null
Debug "------"
; Debug curl_version()
;
; Debug curl_easy_strerror(#CURLE_OK)
; Debug curl_easy_strerror(#CURLE_ABORTED_BY_CALLBACK)
curl_easy_setopt_str(curl, #CURLOPT_URL, "https://www.google.com")
; follow a redirection automatically
curl_easy_setopt(curl, #CURLOPT_FOLLOWLOCATION, 1)
; accept insecure certificates
curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
; to put the header inside the received data
curl_easy_setopt(curl, #CURLOPT_HEADER, 1)
; use own receive function
curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @LibCurl_WriteFunction())
If curl_easy_perform(curl) = #CURLE_OK
result$ = LibCurl_GetData()
MessageRequester("", result$)
EndIf
curl_easy_cleanup(curl)
EndIf
CompilerEndIf
Re: Ultimate Pb 6.03 Stuff for Windows XP
HTTPREQUESTI.PBI
Code: Select all
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
#LibCurl_ExternalDLL = #True
XIncludeFile "libcurl.pbi"
CompilerIf Not Defined(PB_HTTP_NoSSLCheck, #PB_Constant)
#PB_HTTP_NoSSLCheck = 4
CompilerEndIf
Structure HTTPRequestStructure
curl.i
File.i
*Buffer
Result.i
EndStructure
ProcedureC.l HTTPRequest_WriteCallback(*contents, Size.i, NMemB.i, UserData.i)
;retreives utf-8/ascii encoded data
Protected *HTTPRequest.HTTPRequestStructure, *New
Protected RealSize.l
Protected BufferSize.i
*HTTPRequest = UserData
If *HTTPRequest
RealSize = Size * NMemB
;Debug "Size x NMemB = " + Str(Size) + " x " + Str(NMemB) + " = " + Str(RealSize)
If *HTTPRequest\File
If IsFile(*HTTPRequest\File)
If WriteData(*HTTPRequest\File, *contents, RealSize) <> RealSize
RealSize = 0
EndIf
EndIf
Else
If *HTTPRequest\Buffer = #Null
BufferSize = 0
*HTTPRequest\Buffer = AllocateMemory(RealSize, #PB_Memory_NoClear)
If *HTTPRequest\Buffer = #Null
RealSize = 0
EndIf
Else
BufferSize = MemorySize(*HTTPRequest\Buffer)
*New = ReAllocateMemory(*HTTPRequest\Buffer, BufferSize + RealSize, #PB_Memory_NoClear)
If *New
*HTTPRequest\Buffer = *New
Else
RealSize = 0
EndIf
EndIf
If RealSize
CopyMemory(*contents, *HTTPRequest\Buffer + BufferSize, RealSize)
;Debug PeekS(*HTTPRequest\Buffer, MemorySize(*HTTPRequest\Buffer), #PB_UTF8|#PB_ByteLength)
EndIf
EndIf
EndIf
;Debug RealSize
ProcedureReturn RealSize
EndProcedure
Procedure.i HTTPMemoryI(HTTPRequest.i)
Protected *HTTPRequest.HTTPRequestStructure, *Buffer
*HTTPRequest = HTTPRequest
If *HTTPRequest
If *HTTPRequest\Buffer
*Buffer = AllocateMemory(MemorySize(*HTTPRequest\Buffer), #PB_Memory_NoClear)
If *Buffer
CopyMemory(*HTTPRequest\Buffer, *Buffer, MemorySize(*HTTPRequest\Buffer))
EndIf
EndIf
EndIf
ProcedureReturn *Buffer
EndProcedure
Procedure.s HTTPInfoI(HTTPRequest.i, Typ.i, Flags.i=0)
Protected *HTTPRequest.HTTPRequestStructure, Result$, Pos.i, SFlags.i
*HTTPRequest = HTTPRequest
Select Flags
Case 0, #PB_UTF8
SFlags = #PB_UTF8|#PB_ByteLength
Default
SFlags = Flags
EndSelect
Select Typ
Case #PB_HTTP_StatusCode
If *HTTPRequest\Buffer
Result$ = PeekS(*HTTPRequest\Buffer, 12, SFlags)
Pos = FindString(Result$, " ")
If Pos
Result$ = Str(Val(Mid(Result$, Pos + 1)))
EndIf
EndIf
Case #PB_HTTP_Response
If *HTTPRequest\Buffer
Result$ = PeekS(*HTTPRequest\Buffer, MemorySize(*HTTPRequest\Buffer), SFlags)
Pos = FindString(Result$, #CRLF$ + #CRLF$)
Result$ = Mid(Result$, Pos + 4)
EndIf
Case #PB_HTTP_ErrorMessage
Result$ = curl_easy_strerror(*HTTPRequest\Result)
EndSelect
ProcedureReturn Result$
EndProcedure
Procedure FinishHTTPI(HTTPRequest.i)
Protected *HTTPRequest.HTTPRequestStructure
*HTTPRequest = HTTPRequest
If *HTTPRequest
If *HTTPRequest\Buffer
FreeMemory(*HTTPRequest\Buffer)
EndIf
FreeStructure(*HTTPRequest)
EndIf
EndProcedure
Procedure.i HTTPRequestMemoryI(Type.i, URL$, *Buffer, BufferSize.i, Flags.i, Map Header$(), Timeout.l=0)
Protected *HTTPRequest.HTTPRequestStructure
Protected *CurlSList.Curl_Slist
Protected HeaderLine$, Res.i
*HTTPRequest = AllocateStructure(HTTPRequestStructure)
If *HTTPRequest
*HTTPRequest\curl = curl_easy_init()
If *HTTPRequest\curl
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_TIMEOUT, Timeout)
Select Type
Case #PB_HTTP_Get
Case #PB_HTTP_Post
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_POST, 1)
Case #PB_HTTP_Put
curl_easy_setopt_str(*HTTPRequest\curl, #CURLOPT_CUSTOMREQUEST, "PUT")
Case #PB_HTTP_Patch
curl_easy_setopt_str(*HTTPRequest\curl, #CURLOPT_CUSTOMREQUEST, "PATCH")
Case #PB_HTTP_Delete
curl_easy_setopt_str(*HTTPRequest\curl, #CURLOPT_CUSTOMREQUEST, "DELETE")
;URL$ = "http" + Mid(URL$, 6)
;Debug URL$
EndSelect
If *Buffer And BufferSize > 0
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_POSTFIELDSIZE, BufferSize)
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_COPYPOSTFIELDS, *Buffer)
EndIf
curl_easy_setopt_str(*HTTPRequest\curl, #CURLOPT_URL, URL$)
If Flags & #PB_HTTP_NoRedirect = 0
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_FOLLOWLOCATION, 1)
EndIf
If Flags & #PB_HTTP_NoSSLCheck = 0
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_SSL_VERIFYPEER, 0)
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_SSL_VERIFYHOST, 0)
EndIf
; to put the header inside the received data
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_HEADER, 1)
; pass this as parameter to the WRITEFUNCTION
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_WRITEDATA, *HTTPRequest)
; use own receive function
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_WRITEFUNCTION, @HTTPRequest_WriteCallback())
If MapSize(Header$())
ForEach Header$()
HeaderLine$ = MapKey(Header$()) + ": " + Header$()
*CurlSList = curl_slist_append(*CurlSList, HeaderLine$)
Next
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_HTTPHEADER, *CurlSList)
EndIf
*HTTPRequest\Result = curl_easy_perform(*HTTPRequest\curl)
If *HTTPRequest\Result <> #CURLE_OK
Debug curl_easy_strerror(*HTTPRequest\Result)
EndIf
If *CurlSList
curl_slist_free_all(*CurlSList)
EndIf
curl_easy_cleanup(*HTTPRequest\curl)
Else
FreeStructure(*HTTPRequest)
*HTTPRequest = #Null
EndIf
EndIf
ProcedureReturn *HTTPRequest
EndProcedure
Procedure.i HTTPRequestI(Type.i, URL$, String$, Flags.i, Map Header$(), Timeout.l=0)
Protected *Buffer, Result.i
*Buffer = UTF8(String$)
If *Buffer
Result = HTTPRequestMemoryI(Type, URL$, *Buffer, MemorySize(*Buffer) - 1, Flags, Header$(), Timeout)
FreeMemory(*Buffer)
EndIf
ProcedureReturn Result
EndProcedure
Procedure.i HTTPReceiveFileI(URL$, Filename$, Timeout.l=0)
Protected *HTTPRequest.HTTPRequestStructure
Protected *CurlSList.Curl_Slist
Protected HeaderLine$, Result.i
*HTTPRequest = AllocateStructure(HTTPRequestStructure)
If *HTTPRequest
*HTTPRequest\File = CreateFile(#PB_Any, Filename$)
If *HTTPRequest\File
*HTTPRequest\curl = curl_easy_init()
If *HTTPRequest\curl
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_TIMEOUT, Timeout)
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_POST, 1)
curl_easy_setopt_str(*HTTPRequest\curl, #CURLOPT_URL, URL$)
;If Flags & #PB_HTTP_NoRedirect = 0
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_FOLLOWLOCATION, 1)
;EndIf
;If Flags & #PB_HTTP_NoSSLCheck = 0
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_SSL_VERIFYPEER, 0)
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_SSL_VERIFYHOST, 0)
;EndIf
; to put no header inside the received data
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_HEADER, 0)
; pass this as parameter to the WRITEFUNCTION
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_WRITEDATA, *HTTPRequest)
; use own receive function
curl_easy_setopt(*HTTPRequest\curl, #CURLOPT_WRITEFUNCTION, @HTTPRequest_WriteCallback())
*HTTPRequest\Result = curl_easy_perform(*HTTPRequest\curl)
If *HTTPRequest\Result = #CURLE_OK
Result = #True
Else
Debug curl_easy_strerror(*HTTPRequest\Result)
EndIf
curl_easy_cleanup(*HTTPRequest\curl)
EndIf
CloseFile(*HTTPRequest\File)
If Not Result
DeleteFile(Filename$)
EndIf
FreeStructure(*HTTPRequest)
EndIf
EndIf
ProcedureReturn Result
EndProcedure
;-Demo
CompilerIf #PB_Compiler_IsMainFile
Define HTTPRequest.i, Status$, Response$, Error$, *Buffer
NewMap Header$()
; InitNetwork()
; HTTPReceiveFileI("https://www.purebasic.com/index.php", "index.php")
Header$("Authorization") = "Bearer "
HTTPRequest = HTTPRequestI(#PB_HTTP_Get, "https://www.purebasic.com", "", 0, Header$())
If HTTPRequest
Status$ = HTTPInfoI(HTTPRequest, #PB_HTTP_StatusCode)
Response$ = HTTPInfoI(HTTPRequest, #PB_HTTP_Response)
Error$ = HTTPInfoI(HTTPRequest, #PB_HTTP_ErrorMessage)
; *Buffer = HTTPMemoryI(HTTPRequest)
; If *Buffer
; ShowMemoryViewer(*Buffer, MemorySize(*Buffer))
; FreeMemory(*Buffer)
; EndIf
Debug Status$
Debug Response$
Debug Error$
FinishHTTPI(HTTPRequest)
Else
Debug "Request creation failed"
EndIf
CompilerEndIf
-
- Addict
- Posts: 1519
- Joined: Wed Nov 12, 2008 5:01 pm
- Location: Russia
Re: Ultimate Pb 6.03 Stuff for Windows XP
This is probably a bug viewtopic.php?t=82666Mesa wrote: Wed Oct 18, 2023 10:19 am3) The IDE no longer underlines certain keywords like "Procedure/EndProcedure". To correct this replace Scintilla.dll with that of Pb5.73
Re: Ultimate Pb 6.03 Stuff for Windows XP
Not really a pb things but this link is very usefull for XP's users.
Here https://o.rthost.win/
you can download compiled updated internet browsers and outlook express-like software, see under:
January 2025:
============
basilisk/ 2024-Dec-28 22:40:05 - Directory
boc-uxp/ 2024-Dec-28 22:40:40 - Directory
debs/ 2011-Dec-07 07:00:20 - Directory
gpc/ 2011-Aug-24 11:15:43 - Directory
hbl-uxp/ 2024-Dec-28 22:41:21 - Directory
irclog/ 2011-Aug-12 11:29:52 - Directory
kmeleon/ 2024-Dec-21 00:14:48 - Directory
lavf-w32-nightlies/ 2013-Dec-16 08:05:50 - Directory
nsis/ 2013-Nov-27 21:15:01 - Directory
palemoon/ 2024-Dec-28 22:39:18 - Directory
qemu/ 2012-Jun-05 19:00:47 - Directory
rh73/ 2019-Oct-10 19:49:56 - Directory
rpms/ 2018-Dec-28 14:14:13 - Directory
samples/ 2013-Feb-27 18:39:35 - Directory
soft/ 2024-Jan-04 11:02:35 - Directory
speedtest/ 2016-Feb-28 21:47:41 - Directory
svn/ 2015-Mar-13 11:19:03 - Directory
test/ 2019-Jan-04 16:42:57 - Directory
vnstat/ 2014-Dec-31 14:31:18 - Directory
robots.txt 2019-Oct-22 09:01:11 0.1K text/plain
winamp-playlist.html 2024-Dec-21 11:29:51 2.1M text/html
With palemoon, you can add languages and some plugins, i don't know for others, etc.
Finally a detail: if you want to use Youtube you can use the much lighter mobile version by going to m.youtube.com and putting an adequate useragent in about:config:
general.useragent.override.m.youtube.com;Mozilla/5.0 (Android 4.4; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0
More infos and source codes, here:
https://msfn.org/board/topic/182647-my- ... ds-part-3/
http://rtfreesoft.blogspot.com/
360Chrome from arcticfoxie : http://msfn.org/board/topic/182993-360- ... -versions/
360Chromefrom Humming Owl : http://msfn.org/board/topic/182876-360- ... d-version/
M.
Here https://o.rthost.win/
you can download compiled updated internet browsers and outlook express-like software, see under:
January 2025:
============
basilisk/ 2024-Dec-28 22:40:05 - Directory
boc-uxp/ 2024-Dec-28 22:40:40 - Directory
debs/ 2011-Dec-07 07:00:20 - Directory
gpc/ 2011-Aug-24 11:15:43 - Directory
hbl-uxp/ 2024-Dec-28 22:41:21 - Directory
irclog/ 2011-Aug-12 11:29:52 - Directory
kmeleon/ 2024-Dec-21 00:14:48 - Directory
lavf-w32-nightlies/ 2013-Dec-16 08:05:50 - Directory
nsis/ 2013-Nov-27 21:15:01 - Directory
palemoon/ 2024-Dec-28 22:39:18 - Directory
qemu/ 2012-Jun-05 19:00:47 - Directory
rh73/ 2019-Oct-10 19:49:56 - Directory
rpms/ 2018-Dec-28 14:14:13 - Directory
samples/ 2013-Feb-27 18:39:35 - Directory
soft/ 2024-Jan-04 11:02:35 - Directory
speedtest/ 2016-Feb-28 21:47:41 - Directory
svn/ 2015-Mar-13 11:19:03 - Directory
test/ 2019-Jan-04 16:42:57 - Directory
vnstat/ 2014-Dec-31 14:31:18 - Directory
robots.txt 2019-Oct-22 09:01:11 0.1K text/plain
winamp-playlist.html 2024-Dec-21 11:29:51 2.1M text/html
With palemoon, you can add languages and some plugins, i don't know for others, etc.
Finally a detail: if you want to use Youtube you can use the much lighter mobile version by going to m.youtube.com and putting an adequate useragent in about:config:
general.useragent.override.m.youtube.com;Mozilla/5.0 (Android 4.4; Mobile; rv:68.0) Gecko/68.0 Firefox/68.0
More infos and source codes, here:
https://msfn.org/board/topic/182647-my- ... ds-part-3/
http://rtfreesoft.blogspot.com/
360Chrome from arcticfoxie : http://msfn.org/board/topic/182993-360- ... -versions/
360Chromefrom Humming Owl : http://msfn.org/board/topic/182876-360- ... d-version/
M.