/** * BlockWhileFalse * * Runs a block of code, depending on the outcome runs the other block * as long as the result of the first one equals boolean False. */ ctr_object* ctr_block_while_false(ctr_object* myself, ctr_argument* argumentList) { while (1 && !CtrStdError) { ctr_object* result = ctr_internal_cast2bool(ctr_block_run(myself, argumentList, myself)); if (result->value.bvalue == 1 || CtrStdError) break; ctr_block_run(argumentList->object, argumentList, argumentList->object); } if (CtrStdError == CtrStdNil) CtrStdError = NULL; /* consume break */ return myself; }
/** * [List] map: [Block]. * * Iterates over the array. Passing each element as a key-value pair to the * specified block. * The map message will pass the following arguments to the block, the key, * the value and a reference to the array itself. The last argument might seem * redundant but allows for a more functional programming style. Instead of map, * you can also use each:. * * Usage: * * files map: showName. * files map: { * :key :filename :files * ✎ write: filename. * }. * * files each: { * :key :filename :files * ✎ write: filename. * }. * * In other languages: * Dutch: [Reeks] lijst: [Codeblok] | Maakt van een reeks */ ctr_object* ctr_array_map(ctr_object* myself, ctr_argument* argumentList) { ctr_object* block = argumentList->object; int i = 0; if (block->info.type != CTR_OBJECT_TYPE_OTBLOCK) { CtrStdFlow = ctr_build_string_from_cstring( CTR_ERR_EXP_BLK ); CtrStdFlow->info.sticky = 1; } for(i = myself->value.avalue->tail; i < myself->value.avalue->head; i++) { ctr_argument* arguments = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); ctr_argument* argument2 = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); ctr_argument* argument3 = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); arguments->object = ctr_build_number_from_float((double) i); argument2->object = *(myself->value.avalue->elements + i); argument3->object = myself; arguments->next = argument2; argument2->next = argument3; /* keep receiver in block object otherwise, GC will destroy it */ ctr_gc_internal_pin(block); ctr_gc_internal_pin(myself); ctr_gc_internal_pin(argument2->object); ctr_block_run(block, arguments, myself); ctr_heap_free( arguments ); ctr_heap_free( argument2 ); ctr_heap_free( argument3 ); if (CtrStdFlow == CtrStdContinue) CtrStdFlow = NULL; if (CtrStdFlow) break; } if (CtrStdFlow == CtrStdBreak) CtrStdFlow = NULL; /* consume break */ return myself; }
/** * [Map] each: [Block] * * Iterates over the map, passing key-value pairs to the specified block. * Note that within an each/map block, '⛏' and '⚿' refer to the collection. * * In other languages: * Dutch: [Lijst] elk: [Codeblok] | Past het blok code toe op elk paar uit de lijst. */ ctr_object* ctr_map_each(ctr_object* myself, ctr_argument* argumentList) { ctr_object* block = argumentList->object; ctr_mapitem* m; if (block->info.type != CTR_OBJECT_TYPE_OTBLOCK) { CtrStdFlow = ctr_build_string_from_cstring( CTR_ERR_EXP_BLK ); CtrStdFlow->info.sticky = 1; } block->info.sticky = 1; m = myself->properties->head; while(m && !CtrStdFlow) { ctr_argument* arguments = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); ctr_argument* argument2 = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); ctr_argument* argument3 = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); arguments->object = m->key; argument2->object = m->value; argument3->object = myself; arguments->next = argument2; argument2->next = argument3; ctr_block_run(block, arguments, myself); if (CtrStdFlow == CtrStdContinue) CtrStdFlow = NULL; m = m->next; ctr_heap_free( arguments ); ctr_heap_free( argument2 ); ctr_heap_free( argument3 ); } if (CtrStdFlow == CtrStdBreak) CtrStdFlow = NULL; block->info.mark = 0; block->info.sticky = 0; return myself; }
/** * ifFalse * * Executes a block of code if the value of the boolean * object is True. * * Usage: * (some expression) ifFalse: {\ ... }. * */ ctr_object* ctr_bool_ifFalse(ctr_object* myself, ctr_argument* argumentList) { if (!myself->value.bvalue) { ctr_object* codeBlock = argumentList->object; ctr_argument* arguments = CTR_CREATE_ARGUMENT(); arguments->object = myself; return ctr_block_run(codeBlock, arguments, codeBlock); } if (CtrStdError == CtrStdNil) CtrStdError = NULL; /* consume break */ return myself; }
/** * CTRMessageSend * * Sends a message to a receiver object. */ ctr_object* ctr_send_message(ctr_object* receiverObject, char* message, long vlen, ctr_argument* argumentList) { char toParent = 0; ctr_object* me; ctr_object* methodObject; ctr_object* searchObject; ctr_argument* argCounter; ctr_argument* mesgArgument; ctr_object* result; ctr_object* (*funct)(ctr_object* receiverObject, ctr_argument* argumentList); int argCount; if (CtrStdError != NULL) return NULL; /* Error mode, ignore subsequent messages until resolved. */ methodObject = NULL; searchObject = receiverObject; if (vlen > 1 && message[0] == '`') { me = ctr_internal_object_find_property(ctr_contexts[ctr_context_id], ctr_build_string_from_cstring("me\0"), 0); if (searchObject == me) { toParent = 1; message = message + 1; vlen--; } } while(!methodObject) { methodObject = ctr_internal_object_find_property(searchObject, ctr_build_string(message, vlen), 1); if (methodObject && toParent) { toParent = 0; methodObject = NULL; } if (methodObject) break; if (!searchObject->link) break; searchObject = searchObject->link; } if (!methodObject) { argCounter = argumentList; argCount = 0; while(argCounter->next && argCount < 4) { argCounter = argCounter->next; argCount ++; } mesgArgument = CTR_CREATE_ARGUMENT(); mesgArgument->object = ctr_build_string(message, vlen); mesgArgument->next = argumentList; if (argCount == 0 || argCount > 2) { return ctr_send_message(receiverObject, "respondTo:", 10, mesgArgument); } else if (argCount == 1) { return ctr_send_message(receiverObject, "respondTo:with:", 15, mesgArgument); } else if (argCount == 2) { return ctr_send_message(receiverObject, "respondTo:with:and:", 19, mesgArgument); } } if (methodObject->info.type == CTR_OBJECT_TYPE_OTNATFUNC) { funct = methodObject->value.fvalue; result = funct(receiverObject, argumentList); } if (methodObject->info.type == CTR_OBJECT_TYPE_OTBLOCK) { result = ctr_block_run(methodObject, argumentList, receiverObject); } return result; }
/** * @internal * * callback for SCGI server. */ void ctr_request_serve_callback() { ctr_argument* argumentList; argumentList = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); varlistGet = CGI_get_query(NULL); varlistCookie = CGI_get_cookie(NULL); varlistPost = CGI_get_post(NULL,"/tmp/_upXXXXXX"); ctr_block_run(CtrStdSCGICB, argumentList, CtrStdSCGICB); ctr_heap_free( argumentList ); CGI_free_varlist(varlistGet); CGI_free_varlist(varlistPost); CGI_free_varlist(varlistCookie); }
int ctr_sort_cmp(const void * a, const void * b) { ctr_argument* arg1 = CTR_CREATE_ARGUMENT(); ctr_argument* arg2 = CTR_CREATE_ARGUMENT(); ctr_object* result; ctr_object* numResult; arg1->next = arg2; arg1->object = *((ctr_object**) a); arg2->object = *((ctr_object**) b); result = ctr_block_run(temp_sorter, arg1, temp_sorter); numResult = ctr_internal_cast2number(result); return (int) numResult->value.nvalue; }
int ctr_sort_cmp(const void * a, const void * b) { ctr_argument* arg1 = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); ctr_argument* arg2 = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) ); ctr_object* result; ctr_object* numResult; arg1->next = arg2; arg1->object = *((ctr_object**) a); arg2->object = *((ctr_object**) b); ctr_gc_internal_pin(temp_sorter); ctr_gc_internal_pin(temp_self); ctr_gc_internal_pin(arg1->object); ctr_gc_internal_pin(temp_self); result = ctr_block_run(temp_sorter, arg1, temp_self); numResult = ctr_internal_cast2number(result); ctr_heap_free( arg1 ); ctr_heap_free( arg2 ); return (int) numResult->value.nvalue; }
/** * BlockRun * * Runs a block of code. */ ctr_object* ctr_block_run(ctr_object* myself, ctr_argument* argList, ctr_object* my) { ctr_object* result; ctr_tnode* node = myself->value.block; ctr_tlistitem* codeBlockParts = node->nodes; ctr_tnode* codeBlockPart1 = codeBlockParts->node; ctr_tnode* codeBlockPart2 = codeBlockParts->next->node; ctr_tlistitem* parameterList = codeBlockPart1->nodes; ctr_tnode* parameter; ctr_object* a; ctr_open_context(); if (parameterList && parameterList->node) { parameter = parameterList->node; while(1) { if (parameter && argList->object) { a = argList->object; ctr_assign_value_to_local(ctr_build_string(parameter->value, parameter->vlen), a); } if (!argList->next) break; argList = argList->next; if (!parameterList->next) break; parameterList = parameterList->next; parameter = parameterList->node; } } ctr_assign_value_to_local(ctr_build_string("me",2), my); ctr_assign_value_to_local(ctr_build_string("thisBlock",9), myself); /* otherwise running block may get gc'ed. */ result = ctr_cwlk_run(codeBlockPart2); if (result == NULL) result = my; ctr_close_context(); if (CtrStdError != NULL && CtrStdError != CtrStdNil) { ctr_object* catchBlock = malloc(sizeof(ctr_object)); catchBlock = ctr_internal_object_find_property(myself, ctr_build_string("catch",5), 0); if (catchBlock != NULL) { ctr_argument* a = CTR_CREATE_ARGUMENT(); a->object = CtrStdError; CtrStdError = NULL; ctr_block_run(catchBlock, a, my); result = myself; } } return result; }
/** * BlockTimes * * Runs the specified code block N times. * * Usage: * { ... } * 7. */ ctr_object* ctr_block_times(ctr_object* myself, ctr_argument* argumentList) { ctr_object* indexNumber; ctr_object* block = myself; ctr_argument* arguments; int t; int i; if (block->info.type != CTR_OBJECT_TYPE_OTBLOCK) { printf("Expected code block."); exit(1); } block->info.sticky = 1; t = ctr_internal_cast2number(argumentList->object)->value.nvalue; for(i=0; i<t; i++) { indexNumber = ctr_build_number_from_float((ctr_number) i); arguments = CTR_CREATE_ARGUMENT(); arguments->object = indexNumber; ctr_block_run(block, arguments, block); if (CtrStdError) break; } if (CtrStdError == CtrStdNil) CtrStdError = NULL; /* consume break */ block->info.mark = 0; block->info.sticky = 0; return myself; }
/** * [Array] map: [Block]. * * Iterates over the array. Passing each element as a key-value pair to the * specified block. * * Usage: * * files map: showName. * files map: { key filename | Pen write: filename, brk. }. */ ctr_object* ctr_array_map(ctr_object* myself, ctr_argument* argumentList) { ctr_object* block = argumentList->object; int i = 0; if (block->info.type != CTR_OBJECT_TYPE_OTBLOCK) { CtrStdError = ctr_build_string_from_cstring("Expected Block.\0"); } block->info.sticky = 1; for(i = 0; i < myself->value.avalue->head; i++) { ctr_argument* arguments = CTR_CREATE_ARGUMENT(); ctr_argument* argument2 = CTR_CREATE_ARGUMENT(); arguments->object = ctr_build_number_from_float((double) i); argument2->object = *(myself->value.avalue->elements + i); arguments->next = argument2; ctr_block_run(block, arguments, myself); if (CtrStdError == CtrStdContinue) CtrStdError = NULL; if (CtrStdError) break; } if (CtrStdError == CtrStdBreak) CtrStdError = NULL; /* consume break */ block->info.mark = 0; block->info.sticky = 0; return myself; }
ctr_object* ctr_number_to_by_do(ctr_object* myself, ctr_argument* argumentList) { double startValue = myself->value.nvalue; double endValue = ctr_internal_cast2number(argumentList->object)->value.nvalue; double incValue = ctr_internal_cast2number(argumentList->next->object)->value.nvalue; double curValue = startValue; ctr_object* codeBlock = argumentList->next->next->object; ctr_argument* arguments; int forward = 0; if (startValue == endValue) return myself; forward = (startValue < endValue); if (codeBlock->info.type != CTR_OBJECT_TYPE_OTBLOCK) { CtrStdError = ctr_build_string_from_cstring("Expected block.\0"); return myself; } while(((forward && curValue <= endValue) || (!forward && curValue >= endValue)) && !CtrStdError) { arguments = CTR_CREATE_ARGUMENT(); arguments->object = ctr_build_number_from_float(curValue); ctr_block_run(codeBlock, arguments, codeBlock); curValue += incValue; } if (CtrStdError == CtrStdNil) CtrStdError = NULL; /* consume break */ return myself; }
/** * [Map] each: [Block] * * Iterates over the map, passing key-value pairs to the specified block. */ ctr_object* ctr_map_each(ctr_object* myself, ctr_argument* argumentList) { ctr_object* block = argumentList->object; ctr_mapitem* m; if (block->info.type != CTR_OBJECT_TYPE_OTBLOCK) { CtrStdError = ctr_build_string_from_cstring("Expected Block.\0"); } block->info.sticky = 1; m = myself->properties->head; while(m && !CtrStdError) { ctr_argument* arguments = CTR_CREATE_ARGUMENT(); ctr_argument* argument2 = CTR_CREATE_ARGUMENT(); arguments->object = m->key; argument2->object = m->value; arguments->next = argument2; ctr_block_run(block, arguments, myself); if (CtrStdError == CtrStdContinue) CtrStdError = NULL; m = m->next; } if (CtrStdError == CtrStdBreak) CtrStdError = NULL; block->info.mark = 0; block->info.sticky = 0; return myself; }
/** * Alias for BlockRun. */ ctr_object* ctr_block_runIt(ctr_object* myself, ctr_argument* argumentList) { ctr_object* result; result = ctr_block_run(myself, argumentList, myself); if (CtrStdError == CtrStdNil) CtrStdError = NULL; /* consume break */ return result; }
/** * [Curl] respondTo: [string] with: [Object] * * Default response sets Curl option * **/ ctr_object* ctr_curl_respondto(ctr_object* myself, ctr_argument* argumentList) { ctr_object* msgObj = ctr_internal_cast2string(argumentList->object); char* msg = ctr_heap_allocate_cstring(msgObj); msg[strlen(msg)-1] = 0; ctr_object *argObj = argumentList->next->object; void* val = NULL; char msg_and_args[200]; CURLoption opt; unsigned int cancel = 0; unsigned int ctrstr = 0; switch (argObj->info.type) { case CTR_OBJECT_TYPE_OTNIL: val = NULL; break; case CTR_OBJECT_TYPE_OTBOOL: val = &argObj->value.bvalue; break; case CTR_OBJECT_TYPE_OTNUMBER: val = &argObj->value.nvalue; break; case CTR_OBJECT_TYPE_OTSTRING: val = ctr_heap_allocate_cstring(argObj); ctrstr = 1; break; case CTR_OBJECT_TYPE_OTNATFUNC: case CTR_OBJECT_TYPE_OTBLOCK: argumentList->next->object = ctr_block_run(argObj, NULL, myself); ctr_curl_respondto(myself, argumentList); break; case CTR_OBJECT_TYPE_OTOBJECT: case CTR_OBJECT_TYPE_OTARRAY: case CTR_OBJECT_TYPE_OTMISC: case CTR_OBJECT_TYPE_OTEX: CtrStdFlow = ctr_build_string_from_cstring("Invalid argument type."); return myself; } if (val == NULL) { cancel = 1; } #ifdef CTRPLUGIN_CURL_CURLOPT_URL else if (strcasecmp(msg, "url") == 0) { opt = CURLOPT_URL; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PATH_AS_IS else if (strcasecmp(msg, "path_as_is") == 0) { opt = CURLOPT_PATH_AS_IS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY else if (strcasecmp(msg, "proxy") == 0) { opt = CURLOPT_PROXY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PRE_PROXY else if (strcasecmp(msg, "pre_proxy") == 0) { opt = CURLOPT_PRE_PROXY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYPORT else if (strcasecmp(msg, "proxyport") == 0) { opt = CURLOPT_PROXYPORT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYTYPE else if (strcasecmp(msg, "proxytype") == 0) { opt = CURLOPT_PROXYTYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_NOPROXY else if (strcasecmp(msg, "noproxy") == 0) { opt = CURLOPT_NOPROXY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTPPROXYTUNNEL else if (strcasecmp(msg, "httpproxytunnel") == 0) { opt = CURLOPT_HTTPPROXYTUNNEL; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CONNECT_TO else if (strcasecmp(msg, "connect_to") == 0) { opt = CURLOPT_CONNECT_TO; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SOCKS5_GSSAPI_SERVICE else if (strcasecmp(msg, "socks5_gssapi_service") == 0) { opt = CURLOPT_SOCKS5_GSSAPI_SERVICE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SOCKS5_GSSAPI_NEC else if (strcasecmp(msg, "socks5_gssapi_nec") == 0) { opt = CURLOPT_SOCKS5_GSSAPI_NEC; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SERVICE_NAME else if (strcasecmp(msg, "proxy_service_name") == 0) { opt = CURLOPT_PROXY_SERVICE_NAME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SERVICE_NAME else if (strcasecmp(msg, "service_name") == 0) { opt = CURLOPT_SERVICE_NAME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_INTERFACE else if (strcasecmp(msg, "interface") == 0) { opt = CURLOPT_INTERFACE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_LOCALPORT else if (strcasecmp(msg, "localport") == 0) { opt = CURLOPT_LOCALPORT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_LOCALPORTRANGE else if (strcasecmp(msg, "localportrange") == 0) { opt = CURLOPT_LOCALPORTRANGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DNS_CACHE_TIMEOUT else if (strcasecmp(msg, "dns_cache_timeout") == 0) { opt = CURLOPT_DNS_CACHE_TIMEOUT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DNS_USE_GLOBAL_CACHE else if (strcasecmp(msg, "dns_use_global_cache") == 0) { opt = CURLOPT_DNS_USE_GLOBAL_CACHE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_BUFFERSIZE else if (strcasecmp(msg, "buffersize") == 0) { opt = CURLOPT_BUFFERSIZE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PORT else if (strcasecmp(msg, "port") == 0) { opt = CURLOPT_PORT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TCP_FASTOPEN else if (strcasecmp(msg, "tcp_fastopen") == 0) { opt = CURLOPT_TCP_FASTOPEN; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TCP_NODELAY else if (strcasecmp(msg, "tcp_nodelay") == 0) { opt = CURLOPT_TCP_NODELAY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_ADDRESS_SCOPE else if (strcasecmp(msg, "address_scope") == 0) { opt = CURLOPT_ADDRESS_SCOPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TCP_KEEPALIVE else if (strcasecmp(msg, "tcp_keepalive") == 0) { opt = CURLOPT_TCP_KEEPALIVE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TCP_KEEPIDLE else if (strcasecmp(msg, "tcp_keepidle") == 0) { opt = CURLOPT_TCP_KEEPIDLE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TCP_KEEPINTVL else if (strcasecmp(msg, "tcp_keepintvl") == 0) { opt = CURLOPT_TCP_KEEPINTVL; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_UNIX_SOCKET_PATH else if (strcasecmp(msg, "unix_socket_path") == 0) { opt = CURLOPT_UNIX_SOCKET_PATH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_ABSTRACT_UNIX_SOCKET else if (strcasecmp(msg, "abstract_unix_socket") == 0) { opt = CURLOPT_ABSTRACT_UNIX_SOCKET; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_NETRC else if (strcasecmp(msg, "netrc") == 0) { opt = CURLOPT_NETRC; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_NETRC_FILE else if (strcasecmp(msg, "netrc_file") == 0) { opt = CURLOPT_NETRC_FILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_USERPWD else if (strcasecmp(msg, "userpwd") == 0) { opt = CURLOPT_USERPWD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYUSERPWD else if (strcasecmp(msg, "proxyuserpwd") == 0) { opt = CURLOPT_PROXYUSERPWD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_USERNAME else if (strcasecmp(msg, "username") == 0) { opt = CURLOPT_USERNAME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PASSWORD else if (strcasecmp(msg, "password") == 0) { opt = CURLOPT_PASSWORD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_LOGIN_OPTIONS else if (strcasecmp(msg, "login_options") == 0) { opt = CURLOPT_LOGIN_OPTIONS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYUSERNAME else if (strcasecmp(msg, "proxyusername") == 0) { opt = CURLOPT_PROXYUSERNAME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYPASSWORD else if (strcasecmp(msg, "proxypassword") == 0) { opt = CURLOPT_PROXYPASSWORD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTPAUTH else if (strcasecmp(msg, "httpauth") == 0) { opt = CURLOPT_HTTPAUTH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TLSAUTH_USERNAME else if (strcasecmp(msg, "tlsauth_username") == 0) { opt = CURLOPT_TLSAUTH_USERNAME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_TLSAUTH_USERNAME else if (strcasecmp(msg, "proxy_tlsauth_username") == 0) { opt = CURLOPT_PROXY_TLSAUTH_USERNAME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TLSAUTH_PASSWORD else if (strcasecmp(msg, "tlsauth_password") == 0) { opt = CURLOPT_TLSAUTH_PASSWORD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_TLSAUTH_PASSWORD else if (strcasecmp(msg, "proxy_tlsauth_password") == 0) { opt = CURLOPT_PROXY_TLSAUTH_PASSWORD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TLSAUTH_TYPE else if (strcasecmp(msg, "tlsauth_type") == 0) { opt = CURLOPT_TLSAUTH_TYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_TLSAUTH_TYPE else if (strcasecmp(msg, "proxy_tlsauth_type") == 0) { opt = CURLOPT_PROXY_TLSAUTH_TYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYAUTH else if (strcasecmp(msg, "proxyauth") == 0) { opt = CURLOPT_PROXYAUTH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SASL_IR else if (strcasecmp(msg, "sasl_ir") == 0) { opt = CURLOPT_SASL_IR; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_XOAUTH2_BEARER else if (strcasecmp(msg, "xoauth2_bearer") == 0) { opt = CURLOPT_XOAUTH2_BEARER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_AUTOREFERER else if (strcasecmp(msg, "autoreferer") == 0) { opt = CURLOPT_AUTOREFERER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_ACCEPT_ENCODING else if (strcasecmp(msg, "accept_encoding") == 0) { opt = CURLOPT_ACCEPT_ENCODING; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TRANSFER_ENCODING else if (strcasecmp(msg, "transfer_encoding") == 0) { opt = CURLOPT_TRANSFER_ENCODING; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FOLLOWLOCATION else if (strcasecmp(msg, "followlocation") == 0) { opt = CURLOPT_FOLLOWLOCATION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_UNRESTRICTED_AUTH else if (strcasecmp(msg, "unrestricted_auth") == 0) { opt = CURLOPT_UNRESTRICTED_AUTH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAXREDIRS else if (strcasecmp(msg, "maxredirs") == 0) { opt = CURLOPT_MAXREDIRS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_POSTREDIR else if (strcasecmp(msg, "postredir") == 0) { opt = CURLOPT_POSTREDIR; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PUT else if (strcasecmp(msg, "put") == 0) { opt = CURLOPT_PUT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_POST else if (strcasecmp(msg, "post") == 0) { opt = CURLOPT_POST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_POSTFIELDS else if (strcasecmp(msg, "postfields") == 0) { opt = CURLOPT_POSTFIELDS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_POSTFIELDSIZE else if (strcasecmp(msg, "postfieldsize") == 0) { opt = CURLOPT_POSTFIELDSIZE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_POSTFIELDSIZE_LARGE else if (strcasecmp(msg, "postfieldsize_large") == 0) { opt = CURLOPT_POSTFIELDSIZE_LARGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_COPYPOSTFIELDS else if (strcasecmp(msg, "copypostfields") == 0) { opt = CURLOPT_COPYPOSTFIELDS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTPPOST else if (strcasecmp(msg, "httppost") == 0) { opt = CURLOPT_HTTPPOST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_REFERER else if (strcasecmp(msg, "referer") == 0) { opt = CURLOPT_REFERER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_USERAGENT else if (strcasecmp(msg, "useragent") == 0) { opt = CURLOPT_USERAGENT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTPHEADER else if (strcasecmp(msg, "httpheader") == 0) { opt = CURLOPT_HTTPHEADER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HEADEROPT else if (strcasecmp(msg, "headeropt") == 0) { opt = CURLOPT_HEADEROPT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXYHEADER else if (strcasecmp(msg, "proxyheader") == 0) { opt = CURLOPT_PROXYHEADER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTP200ALIASES else if (strcasecmp(msg, "http200aliases") == 0) { opt = CURLOPT_HTTP200ALIASES; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_COOKIE else if (strcasecmp(msg, "cookie") == 0) { opt = CURLOPT_COOKIE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_COOKIEFILE else if (strcasecmp(msg, "cookiefile") == 0) { opt = CURLOPT_COOKIEFILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_COOKIEJAR else if (strcasecmp(msg, "cookiejar") == 0) { opt = CURLOPT_COOKIEJAR; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_COOKIESESSION else if (strcasecmp(msg, "cookiesession") == 0) { opt = CURLOPT_COOKIESESSION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_COOKIELIST else if (strcasecmp(msg, "cookielist") == 0) { opt = CURLOPT_COOKIELIST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTPGET else if (strcasecmp(msg, "httpget") == 0) { opt = CURLOPT_HTTPGET; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTP_VERSION else if (strcasecmp(msg, "http_version") == 0) { opt = CURLOPT_HTTP_VERSION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_IGNORE_CONTENT_LENGTH else if (strcasecmp(msg, "ignore_content_length") == 0) { opt = CURLOPT_IGNORE_CONTENT_LENGTH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTP_CONTENT_DECODING else if (strcasecmp(msg, "http_content_decoding") == 0) { opt = CURLOPT_HTTP_CONTENT_DECODING; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_HTTP_TRANSFER_DECODING else if (strcasecmp(msg, "http_transfer_decoding") == 0) { opt = CURLOPT_HTTP_TRANSFER_DECODING; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_EXPECT_100_TIMEOUT_MS else if (strcasecmp(msg, "expect_100_timeout_ms") == 0) { opt = CURLOPT_EXPECT_100_TIMEOUT_MS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PIPEWAIT else if (strcasecmp(msg, "pipewait") == 0) { opt = CURLOPT_PIPEWAIT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_STREAM_DEPENDS else if (strcasecmp(msg, "stream_depends") == 0) { opt = CURLOPT_STREAM_DEPENDS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_STREAM_DEPENDS_E else if (strcasecmp(msg, "stream_depends_e") == 0) { opt = CURLOPT_STREAM_DEPENDS_E; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_STREAM_WEIGHT else if (strcasecmp(msg, "stream_weight") == 0) { opt = CURLOPT_STREAM_WEIGHT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAIL_FROM else if (strcasecmp(msg, "mail_from") == 0) { opt = CURLOPT_MAIL_FROM; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAIL_RCPT else if (strcasecmp(msg, "mail_rcpt") == 0) { opt = CURLOPT_MAIL_RCPT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAIL_AUTH else if (strcasecmp(msg, "mail_auth") == 0) { opt = CURLOPT_MAIL_AUTH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TFTP_BLKSIZE else if (strcasecmp(msg, "tftp_blksize") == 0) { opt = CURLOPT_TFTP_BLKSIZE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TFTP_NO_OPTIONS else if (strcasecmp(msg, "tftp_no_options") == 0) { opt = CURLOPT_TFTP_NO_OPTIONS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTPPORT else if (strcasecmp(msg, "ftpport") == 0) { opt = CURLOPT_FTPPORT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_QUOTE else if (strcasecmp(msg, "quote") == 0) { opt = CURLOPT_QUOTE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_POSTQUOTE else if (strcasecmp(msg, "postquote") == 0) { opt = CURLOPT_POSTQUOTE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PREQUOTE else if (strcasecmp(msg, "prequote") == 0) { opt = CURLOPT_PREQUOTE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_APPEND else if (strcasecmp(msg, "append") == 0) { opt = CURLOPT_APPEND; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_USE_EPRT else if (strcasecmp(msg, "ftp_use_eprt") == 0) { opt = CURLOPT_FTP_USE_EPRT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_USE_EPSV else if (strcasecmp(msg, "ftp_use_epsv") == 0) { opt = CURLOPT_FTP_USE_EPSV; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_USE_PRET else if (strcasecmp(msg, "ftp_use_pret") == 0) { opt = CURLOPT_FTP_USE_PRET; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_CREATE_MISSING_DIRS else if (strcasecmp(msg, "ftp_create_missing_dirs") == 0) { opt = CURLOPT_FTP_CREATE_MISSING_DIRS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_RESPONSE_TIMEOUT else if (strcasecmp(msg, "ftp_response_timeout") == 0) { opt = CURLOPT_FTP_RESPONSE_TIMEOUT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_ALTERNATIVE_TO_USER else if (strcasecmp(msg, "ftp_alternative_to_user") == 0) { opt = CURLOPT_FTP_ALTERNATIVE_TO_USER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_SKIP_PASV_IP else if (strcasecmp(msg, "ftp_skip_pasv_ip") == 0) { opt = CURLOPT_FTP_SKIP_PASV_IP; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTPSSLAUTH else if (strcasecmp(msg, "ftpsslauth") == 0) { opt = CURLOPT_FTPSSLAUTH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_SSL_CCC else if (strcasecmp(msg, "ftp_ssl_ccc") == 0) { opt = CURLOPT_FTP_SSL_CCC; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_ACCOUNT else if (strcasecmp(msg, "ftp_account") == 0) { opt = CURLOPT_FTP_ACCOUNT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FTP_FILEMETHOD else if (strcasecmp(msg, "ftp_filemethod") == 0) { opt = CURLOPT_FTP_FILEMETHOD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RTSP_REQUEST else if (strcasecmp(msg, "rtsp_request") == 0) { opt = CURLOPT_RTSP_REQUEST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RTSP_SESSION_ID else if (strcasecmp(msg, "rtsp_session_id") == 0) { opt = CURLOPT_RTSP_SESSION_ID; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RTSP_STREAM_URI else if (strcasecmp(msg, "rtsp_stream_uri") == 0) { opt = CURLOPT_RTSP_STREAM_URI; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RTSP_TRANSPORT else if (strcasecmp(msg, "rtsp_transport") == 0) { opt = CURLOPT_RTSP_TRANSPORT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RTSP_CLIENT_CSEQ else if (strcasecmp(msg, "rtsp_client_cseq") == 0) { opt = CURLOPT_RTSP_CLIENT_CSEQ; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RTSP_SERVER_CSEQ else if (strcasecmp(msg, "rtsp_server_cseq") == 0) { opt = CURLOPT_RTSP_SERVER_CSEQ; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TRANSFERTEXT else if (strcasecmp(msg, "transfertext") == 0) { opt = CURLOPT_TRANSFERTEXT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_TRANSFER_MODE else if (strcasecmp(msg, "proxy_transfer_mode") == 0) { opt = CURLOPT_PROXY_TRANSFER_MODE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CRLF else if (strcasecmp(msg, "crlf") == 0) { opt = CURLOPT_CRLF; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RANGE else if (strcasecmp(msg, "range") == 0) { opt = CURLOPT_RANGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RESUME_FROM else if (strcasecmp(msg, "resume_from") == 0) { opt = CURLOPT_RESUME_FROM; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RESUME_FROM_LARGE else if (strcasecmp(msg, "resume_from_large") == 0) { opt = CURLOPT_RESUME_FROM_LARGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CUSTOMREQUEST else if (strcasecmp(msg, "customrequest") == 0) { opt = CURLOPT_CUSTOMREQUEST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FILETIME else if (strcasecmp(msg, "filetime") == 0) { opt = CURLOPT_FILETIME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DIRLISTONLY else if (strcasecmp(msg, "dirlistonly") == 0) { opt = CURLOPT_DIRLISTONLY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_NOBODY else if (strcasecmp(msg, "nobody") == 0) { opt = CURLOPT_NOBODY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_INFILESIZE else if (strcasecmp(msg, "infilesize") == 0) { opt = CURLOPT_INFILESIZE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_INFILESIZE_LARGE else if (strcasecmp(msg, "infilesize_large") == 0) { opt = CURLOPT_INFILESIZE_LARGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_UPLOAD else if (strcasecmp(msg, "upload") == 0) { opt = CURLOPT_UPLOAD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAXFILESIZE else if (strcasecmp(msg, "maxfilesize") == 0) { opt = CURLOPT_MAXFILESIZE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAXFILESIZE_LARGE else if (strcasecmp(msg, "maxfilesize_large") == 0) { opt = CURLOPT_MAXFILESIZE_LARGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TIMECONDITION else if (strcasecmp(msg, "timecondition") == 0) { opt = CURLOPT_TIMECONDITION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TIMEVALUE else if (strcasecmp(msg, "timevalue") == 0) { opt = CURLOPT_TIMEVALUE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TIMEOUT else if (strcasecmp(msg, "timeout") == 0) { opt = CURLOPT_TIMEOUT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TIMEOUT_MS else if (strcasecmp(msg, "timeout_ms") == 0) { opt = CURLOPT_TIMEOUT_MS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_LOW_SPEED_LIMIT else if (strcasecmp(msg, "low_speed_limit") == 0) { opt = CURLOPT_LOW_SPEED_LIMIT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_LOW_SPEED_TIME else if (strcasecmp(msg, "low_speed_time") == 0) { opt = CURLOPT_LOW_SPEED_TIME; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAX_SEND_SPEED_LARGE else if (strcasecmp(msg, "max_send_speed_large") == 0) { opt = CURLOPT_MAX_SEND_SPEED_LARGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAX_RECV_SPEED_LARGE else if (strcasecmp(msg, "max_recv_speed_large") == 0) { opt = CURLOPT_MAX_RECV_SPEED_LARGE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_MAXCONNECTS else if (strcasecmp(msg, "maxconnects") == 0) { opt = CURLOPT_MAXCONNECTS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FRESH_CONNECT else if (strcasecmp(msg, "fresh_connect") == 0) { opt = CURLOPT_FRESH_CONNECT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_FORBID_REUSE else if (strcasecmp(msg, "forbid_reuse") == 0) { opt = CURLOPT_FORBID_REUSE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CONNECTTIMEOUT else if (strcasecmp(msg, "connecttimeout") == 0) { opt = CURLOPT_CONNECTTIMEOUT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CONNECTTIMEOUT_MS else if (strcasecmp(msg, "connecttimeout_ms") == 0) { opt = CURLOPT_CONNECTTIMEOUT_MS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_IPRESOLVE else if (strcasecmp(msg, "ipresolve") == 0) { opt = CURLOPT_IPRESOLVE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CONNECT_ONLY else if (strcasecmp(msg, "connect_only") == 0) { opt = CURLOPT_CONNECT_ONLY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_USE_SSL else if (strcasecmp(msg, "use_ssl") == 0) { opt = CURLOPT_USE_SSL; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RESOLVE else if (strcasecmp(msg, "resolve") == 0) { opt = CURLOPT_RESOLVE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DNS_INTERFACE else if (strcasecmp(msg, "dns_interface") == 0) { opt = CURLOPT_DNS_INTERFACE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DNS_LOCAL_IP4 else if (strcasecmp(msg, "dns_local_ip4") == 0) { opt = CURLOPT_DNS_LOCAL_IP4; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DNS_LOCAL_IP6 else if (strcasecmp(msg, "dns_local_ip6") == 0) { opt = CURLOPT_DNS_LOCAL_IP6; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_DNS_SERVERS else if (strcasecmp(msg, "dns_servers") == 0) { opt = CURLOPT_DNS_SERVERS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_ACCEPTTIMEOUT_MS else if (strcasecmp(msg, "accepttimeout_ms") == 0) { opt = CURLOPT_ACCEPTTIMEOUT_MS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLCERT else if (strcasecmp(msg, "sslcert") == 0) { opt = CURLOPT_SSLCERT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSLCERT else if (strcasecmp(msg, "proxy_sslcert") == 0) { opt = CURLOPT_PROXY_SSLCERT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLCERTTYPE else if (strcasecmp(msg, "sslcerttype") == 0) { opt = CURLOPT_SSLCERTTYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSLCERTTYPE else if (strcasecmp(msg, "proxy_sslcerttype") == 0) { opt = CURLOPT_PROXY_SSLCERTTYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLKEY else if (strcasecmp(msg, "sslkey") == 0) { opt = CURLOPT_SSLKEY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSLKEY else if (strcasecmp(msg, "proxy_sslkey") == 0) { opt = CURLOPT_PROXY_SSLKEY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLKEYTYPE else if (strcasecmp(msg, "sslkeytype") == 0) { opt = CURLOPT_SSLKEYTYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSLKEYTYPE else if (strcasecmp(msg, "proxy_sslkeytype") == 0) { opt = CURLOPT_PROXY_SSLKEYTYPE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_KEYPASSWD else if (strcasecmp(msg, "keypasswd") == 0) { opt = CURLOPT_KEYPASSWD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_KEYPASSWD else if (strcasecmp(msg, "proxy_keypasswd") == 0) { opt = CURLOPT_PROXY_KEYPASSWD; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_ENABLE_ALPN else if (strcasecmp(msg, "ssl_enable_alpn") == 0) { opt = CURLOPT_SSL_ENABLE_ALPN; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_ENABLE_NPN else if (strcasecmp(msg, "ssl_enable_npn") == 0) { opt = CURLOPT_SSL_ENABLE_NPN; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLENGINE else if (strcasecmp(msg, "sslengine") == 0) { opt = CURLOPT_SSLENGINE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLENGINE_DEFAULT else if (strcasecmp(msg, "sslengine_default") == 0) { opt = CURLOPT_SSLENGINE_DEFAULT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_FALSESTART else if (strcasecmp(msg, "ssl_falsestart") == 0) { opt = CURLOPT_SSL_FALSESTART; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSLVERSION else if (strcasecmp(msg, "sslversion") == 0) { opt = CURLOPT_SSLVERSION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSLVERSION else if (strcasecmp(msg, "proxy_sslversion") == 0) { opt = CURLOPT_PROXY_SSLVERSION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_VERIFYHOST else if (strcasecmp(msg, "ssl_verifyhost") == 0) { opt = CURLOPT_SSL_VERIFYHOST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSL_VERIFYHOST else if (strcasecmp(msg, "proxy_ssl_verifyhost") == 0) { opt = CURLOPT_PROXY_SSL_VERIFYHOST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_VERIFYPEER else if (strcasecmp(msg, "ssl_verifypeer") == 0) { opt = CURLOPT_SSL_VERIFYPEER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSL_VERIFYPEER else if (strcasecmp(msg, "proxy_ssl_verifypeer") == 0) { opt = CURLOPT_PROXY_SSL_VERIFYPEER; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_VERIFYSTATUS else if (strcasecmp(msg, "ssl_verifystatus") == 0) { opt = CURLOPT_SSL_VERIFYSTATUS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CAINFO else if (strcasecmp(msg, "cainfo") == 0) { opt = CURLOPT_CAINFO; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_CAINFO else if (strcasecmp(msg, "proxy_cainfo") == 0) { opt = CURLOPT_PROXY_CAINFO; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_ISSUERCERT else if (strcasecmp(msg, "issuercert") == 0) { opt = CURLOPT_ISSUERCERT; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CAPATH else if (strcasecmp(msg, "capath") == 0) { opt = CURLOPT_CAPATH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_CAPATH else if (strcasecmp(msg, "proxy_capath") == 0) { opt = CURLOPT_PROXY_CAPATH; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CRLFILE else if (strcasecmp(msg, "crlfile") == 0) { opt = CURLOPT_CRLFILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_CRLFILE else if (strcasecmp(msg, "proxy_crlfile") == 0) { opt = CURLOPT_PROXY_CRLFILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_CERTINFO else if (strcasecmp(msg, "certinfo") == 0) { opt = CURLOPT_CERTINFO; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PINNEDPUBLICKEY else if (strcasecmp(msg, "pinnedpublickey") == 0) { opt = CURLOPT_PINNEDPUBLICKEY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_PINNEDPUBLICKEY else if (strcasecmp(msg, "proxy_pinnedpublickey") == 0) { opt = CURLOPT_PROXY_PINNEDPUBLICKEY; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_RANDOM_FILE else if (strcasecmp(msg, "random_file") == 0) { opt = CURLOPT_RANDOM_FILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_EGDSOCKET else if (strcasecmp(msg, "egdsocket") == 0) { opt = CURLOPT_EGDSOCKET; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_CIPHER_LIST else if (strcasecmp(msg, "ssl_cipher_list") == 0) { opt = CURLOPT_SSL_CIPHER_LIST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSL_CIPHER_LIST else if (strcasecmp(msg, "proxy_ssl_cipher_list") == 0) { opt = CURLOPT_PROXY_SSL_CIPHER_LIST; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_SESSIONID_CACHE else if (strcasecmp(msg, "ssl_sessionid_cache") == 0) { opt = CURLOPT_SSL_SESSIONID_CACHE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSL_OPTIONS else if (strcasecmp(msg, "ssl_options") == 0) { opt = CURLOPT_SSL_OPTIONS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PROXY_SSL_OPTIONS else if (strcasecmp(msg, "proxy_ssl_options") == 0) { opt = CURLOPT_PROXY_SSL_OPTIONS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_KRBLEVEL else if (strcasecmp(msg, "krblevel") == 0) { opt = CURLOPT_KRBLEVEL; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_GSSAPI_DELEGATION else if (strcasecmp(msg, "gssapi_delegation") == 0) { opt = CURLOPT_GSSAPI_DELEGATION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_AUTH_TYPES else if (strcasecmp(msg, "ssh_auth_types") == 0) { opt = CURLOPT_SSH_AUTH_TYPES; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 else if (strcasecmp(msg, "ssh_host_public_key_md5") == 0) { opt = CURLOPT_SSH_HOST_PUBLIC_KEY_MD5; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_PUBLIC_KEYFILE else if (strcasecmp(msg, "ssh_public_keyfile") == 0) { opt = CURLOPT_SSH_PUBLIC_KEYFILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_PRIVATE_KEYFILE else if (strcasecmp(msg, "ssh_private_keyfile") == 0) { opt = CURLOPT_SSH_PRIVATE_KEYFILE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_KNOWNHOSTS else if (strcasecmp(msg, "ssh_knownhosts") == 0) { opt = CURLOPT_SSH_KNOWNHOSTS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_KEYFUNCTION else if (strcasecmp(msg, "ssh_keyfunction") == 0) { opt = CURLOPT_SSH_KEYFUNCTION; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SSH_KEYDATA else if (strcasecmp(msg, "ssh_keydata") == 0) { opt = CURLOPT_SSH_KEYDATA; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_PRIVATE else if (strcasecmp(msg, "private") == 0) { opt = CURLOPT_PRIVATE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_SHARE else if (strcasecmp(msg, "share") == 0) { opt = CURLOPT_SHARE; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_NEW_FILE_PERMS else if (strcasecmp(msg, "new_file_perms") == 0) { opt = CURLOPT_NEW_FILE_PERMS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_NEW_DIRECTORY_PERMS else if (strcasecmp(msg, "new_directory_perms") == 0) { opt = CURLOPT_NEW_DIRECTORY_PERMS; } #endif #ifdef CTRPLUGIN_CURL_CURLOPT_TELNETOPTIONS else if (strcasecmp(msg, "telnetoptions") == 0) { opt = CURLOPT_TELNETOPTIONS; } #endif else { CtrStdFlow = ctr_build_string_from_cstring("Invalid option."); cancel = 1; } if (!cancel) { CURLcode res = curl_easy_setopt(myself->value.rvalue->ptr, opt, val); if (res != CURLE_OK) { char* args = ctr_heap_allocate_cstring(ctr_internal_cast2string(argObj)); snprintf(msg_and_args, 200, "Curl %s `%s` : %s", msg, args, (char *)curl_easy_strerror(res)); CtrStdFlow = ctr_build_string_from_cstring(msg_and_args); ctr_heap_free(args); } } ctr_heap_free(msg); if (ctrstr) ctr_heap_free(val); return myself; }