diff --git a/src/l52util.c b/src/l52util.c index e35edfb..9f96b59 100644 --- a/src/l52util.c +++ b/src/l52util.c @@ -1,182 +1,182 @@ -/****************************************************************************** -* Author: Alexey Melnichuk -* -* Copyright (C) 2014 Alexey Melnichuk -* -* Licensed according to the included 'LICENSE' document -* -* This file is part of lua-lcurl library. -******************************************************************************/ - -#include "l52util.h" - -#include -#include /* for memset */ -#include - -#if LUA_VERSION_NUM >= 502 - -int luaL_typerror (lua_State *L, int narg, const char *tname) { - const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, - luaL_typename(L, narg)); - return luaL_argerror(L, narg, msg); -} - -#ifndef luaL_register - -void luaL_register (lua_State *L, const char *libname, const luaL_Reg *l){ - if(libname) lua_newtable(L); - luaL_setfuncs(L, l, 0); -} - -#endif - -#else - -void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup){ - luaL_checkstack(L, nup, "too many upvalues"); - for (; l->name != NULL; l++) { /* fill the table with given functions */ - int i; - for (i = 0; i < nup; i++) /* copy upvalues to the top */ - lua_pushvalue(L, -nup); - lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */ - lua_setfield(L, -(nup + 2), l->name); - } - lua_pop(L, nup); /* remove upvalues */ -} - -void lua_rawgetp(lua_State *L, int index, const void *p){ - index = lua_absindex(L, index); - lua_pushlightuserdata(L, (void *)p); - lua_rawget(L, index); -} - -void lua_rawsetp (lua_State *L, int index, const void *p){ - index = lua_absindex(L, index); - lua_pushlightuserdata(L, (void *)p); - lua_insert(L, -2); - lua_rawset(L, index); -} - -int luaL_getmetafield (lua_State *L, int obj, const char *event) { - if (!lua_getmetatable(L, obj)) /* no metatable? */ - return 0; - lua_pushstring(L, event); - lua_rawget(L, -2); - if (lua_isnil(L, -1)) { - lua_pop(L, 2); /* remove metatable and metafield */ - return 0; - } - else { - lua_remove(L, -2); /* remove only metatable */ - return 1; - } -} - -int luaL_callmeta (lua_State *L, int obj, const char *event) { - obj = lua_absindex(L, obj); - if (!luaL_getmetafield(L, obj, event)) /* no metafield? */ - return 0; - lua_pushvalue(L, obj); - lua_call(L, 1, 1); - return 1; -} - -#endif - -int lutil_newmetatablep (lua_State *L, const void *p) { - lua_rawgetp(L, LUA_REGISTRYINDEX, p); - if (!lua_isnil(L, -1)) /* name already in use? */ - return 0; /* leave previous value on top, but return 0 */ - lua_pop(L, 1); - - lua_newtable(L); /* create metatable */ - lua_pushvalue(L, -1); /* duplicate metatable to set*/ - lua_rawsetp(L, LUA_REGISTRYINDEX, p); - - return 1; -} - -void lutil_getmetatablep (lua_State *L, const void *p) { - lua_rawgetp(L, LUA_REGISTRYINDEX, p); -} - -void lutil_setmetatablep (lua_State *L, const void *p) { - lutil_getmetatablep(L, p); - assert(lua_istable(L,-1)); - lua_setmetatable (L, -2); -} - -int lutil_isudatap (lua_State *L, int ud, const void *p) { - if (lua_isuserdata(L, ud)){ - if (lua_getmetatable(L, ud)) { /* does it have a metatable? */ - int res; - lutil_getmetatablep(L,p); /* get correct metatable */ - res = lua_rawequal(L, -1, -2); /* does it have the correct mt? */ - lua_pop(L, 2); /* remove both metatables */ - return res; - } - } - return 0; -} - -void *lutil_checkudatap (lua_State *L, int ud, const void *p) { - void *up = lua_touserdata(L, ud); - if (up != NULL) { /* value is a userdata? */ - if (lua_getmetatable(L, ud)) { /* does it have a metatable? */ - lutil_getmetatablep(L,p); /* get correct metatable */ - if (lua_rawequal(L, -1, -2)) { /* does it have the correct mt? */ - lua_pop(L, 2); /* remove both metatables */ - return up; - } - } - } - luaL_typerror(L, ud, p); /* else error */ - return NULL; /* to avoid warnings */ -} - -int lutil_createmetap (lua_State *L, const void *p, const luaL_Reg *methods, int nup) { - if (!lutil_newmetatablep(L, p)){ - lua_insert(L, -1 - nup); /* move mt prior upvalues */ - return 0; - } - - lua_insert(L, -1 - nup); /* move mt prior upvalues */ - luaL_setfuncs (L, methods, nup); /* define methods */ - lua_pushliteral (L, "__index"); /* define metamethods */ - lua_pushvalue (L, -2); - lua_settable (L, -3); - - return 1; -} - -void *lutil_newudatap_impl(lua_State *L, size_t size, const void *p){ - void *obj = lua_newuserdata (L, size); - memset(obj, 0, size); - lutil_setmetatablep(L, p); - return obj; -} - -void lutil_pushint64(lua_State *L, int64_t v){ - if(sizeof(lua_Integer) >= sizeof(int64_t)){ - lua_pushinteger(L, (lua_Integer)v); - return; - } - lua_pushnumber(L, (lua_Number)v); -} - -int64_t lutil_checkint64(lua_State *L, int idx){ - if(sizeof(lua_Integer) >= sizeof(int64_t)) - return luaL_checkinteger(L, idx); - return (int64_t)luaL_checknumber(L, idx); -} - -int64_t lutil_optint64(lua_State *L, int idx, int64_t v){ - if(sizeof(lua_Integer) >= sizeof(int64_t)) - return luaL_optinteger(L, idx, v); - return (int64_t)luaL_optnumber(L, idx, v); -} - -void lutil_pushnvalues(lua_State *L, int n){ - for(;n;--n) lua_pushvalue(L, -n); -} +/****************************************************************************** +* Author: Alexey Melnichuk +* +* Copyright (C) 2014 Alexey Melnichuk +* +* Licensed according to the included 'LICENSE' document +* +* This file is part of lua-lcurl library. +******************************************************************************/ + +#include "l52util.h" + +#include +#include /* for memset */ +#include + +#if LUA_VERSION_NUM >= 502 + +int luaL_typerror (lua_State *L, int narg, const char *tname) { + const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, + luaL_typename(L, narg)); + return luaL_argerror(L, narg, msg); +} + +#ifndef luaL_register + +void luaL_register (lua_State *L, const char *libname, const luaL_Reg *l){ + if(libname) lua_newtable(L); + luaL_setfuncs(L, l, 0); +} + +#endif + +#else + +void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup){ + luaL_checkstack(L, nup, "too many upvalues"); + for (; l->name != NULL; l++) { /* fill the table with given functions */ + int i; + for (i = 0; i < nup; i++) /* copy upvalues to the top */ + lua_pushvalue(L, -nup); + lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */ + lua_setfield(L, -(nup + 2), l->name); + } + lua_pop(L, nup); /* remove upvalues */ +} + +void lua_rawgetp(lua_State *L, int index, const void *p){ + index = lua_absindex(L, index); + lua_pushlightuserdata(L, (void *)p); + lua_rawget(L, index); +} + +void lua_rawsetp (lua_State *L, int index, const void *p){ + index = lua_absindex(L, index); + lua_pushlightuserdata(L, (void *)p); + lua_insert(L, -2); + lua_rawset(L, index); +} + +int luaL_getmetafield (lua_State *L, int obj, const char *event) { + if (!lua_getmetatable(L, obj)) /* no metatable? */ + return 0; + lua_pushstring(L, event); + lua_rawget(L, -2); + if (lua_isnil(L, -1)) { + lua_pop(L, 2); /* remove metatable and metafield */ + return 0; + } + else { + lua_remove(L, -2); /* remove only metatable */ + return 1; + } +} + +int luaL_callmeta (lua_State *L, int obj, const char *event) { + obj = lua_absindex(L, obj); + if (!luaL_getmetafield(L, obj, event)) /* no metafield? */ + return 0; + lua_pushvalue(L, obj); + lua_call(L, 1, 1); + return 1; +} + +#endif + +int lutil_newmetatablep (lua_State *L, const void *p) { + lua_rawgetp(L, LUA_REGISTRYINDEX, p); + if (!lua_isnil(L, -1)) /* name already in use? */ + return 0; /* leave previous value on top, but return 0 */ + lua_pop(L, 1); + + lua_newtable(L); /* create metatable */ + lua_pushvalue(L, -1); /* duplicate metatable to set*/ + lua_rawsetp(L, LUA_REGISTRYINDEX, p); + + return 1; +} + +void lutil_getmetatablep (lua_State *L, const void *p) { + lua_rawgetp(L, LUA_REGISTRYINDEX, p); +} + +void lutil_setmetatablep (lua_State *L, const void *p) { + lutil_getmetatablep(L, p); + assert(lua_istable(L,-1)); + lua_setmetatable (L, -2); +} + +int lutil_isudatap (lua_State *L, int ud, const void *p) { + if (lua_isuserdata(L, ud)){ + if (lua_getmetatable(L, ud)) { /* does it have a metatable? */ + int res; + lutil_getmetatablep(L,p); /* get correct metatable */ + res = lua_rawequal(L, -1, -2); /* does it have the correct mt? */ + lua_pop(L, 2); /* remove both metatables */ + return res; + } + } + return 0; +} + +void *lutil_checkudatap (lua_State *L, int ud, const void *p) { + void *up = lua_touserdata(L, ud); + if (up != NULL) { /* value is a userdata? */ + if (lua_getmetatable(L, ud)) { /* does it have a metatable? */ + lutil_getmetatablep(L,p); /* get correct metatable */ + if (lua_rawequal(L, -1, -2)) { /* does it have the correct mt? */ + lua_pop(L, 2); /* remove both metatables */ + return up; + } + } + } + luaL_typerror(L, ud, p); /* else error */ + return NULL; /* to avoid warnings */ +} + +int lutil_createmetap (lua_State *L, const void *p, const luaL_Reg *methods, int nup) { + if (!lutil_newmetatablep(L, p)){ + lua_insert(L, -1 - nup); /* move mt prior upvalues */ + return 0; + } + + lua_insert(L, -1 - nup); /* move mt prior upvalues */ + luaL_setfuncs (L, methods, nup); /* define methods */ + lua_pushliteral (L, "__index"); /* define metamethods */ + lua_pushvalue (L, -2); + lua_settable (L, -3); + + return 1; +} + +void *lutil_newudatap_impl(lua_State *L, size_t size, const void *p){ + void *obj = lua_newuserdata (L, size); + memset(obj, 0, size); + lutil_setmetatablep(L, p); + return obj; +} + +void lutil_pushint64(lua_State *L, int64_t v){ + if(sizeof(lua_Integer) >= sizeof(int64_t)){ + lua_pushinteger(L, (lua_Integer)v); + return; + } + lua_pushnumber(L, (lua_Number)v); +} + +int64_t lutil_checkint64(lua_State *L, int idx){ + if(sizeof(lua_Integer) >= sizeof(int64_t)) + return luaL_checkinteger(L, idx); + return (int64_t)luaL_checknumber(L, idx); +} + +int64_t lutil_optint64(lua_State *L, int idx, int64_t v){ + if(sizeof(lua_Integer) >= sizeof(int64_t)) + return luaL_optinteger(L, idx, v); + return (int64_t)luaL_optnumber(L, idx, v); +} + +void lutil_pushnvalues(lua_State *L, int n){ + for(;n;--n) lua_pushvalue(L, -n); +} diff --git a/src/lcerror.h b/src/lcerror.h index 7c255f5..44130ad 100644 --- a/src/lcerror.h +++ b/src/lcerror.h @@ -1,33 +1,33 @@ -/****************************************************************************** -* Author: Alexey Melnichuk -* -* Copyright (C) 2014 Alexey Melnichuk -* -* Licensed according to the included 'LICENSE' document -* -* This file is part of lua-lcurl library. -******************************************************************************/ - -#ifndef _LCERROR_H_ -#define _LCERROR_H_ - -#include "lcurl.h" - -#define LCURL_ERROR_CURL 1 -#define LCURL_ERROR_EASY 1 -#define LCURL_ERROR_MULTI 2 -#define LCURL_ERROR_SHARE 3 -#define LCURL_ERROR_FORM 4 - -#define LCURL_ERROR_RETURN 1 -#define LCURL_ERROR_RAISE 2 - -int lcurl_fail(lua_State *L, int error_type, int code); - -int lcurl_fail_ex(lua_State *L, int mode, int error_type, int code); - -int lcurl_error_new(lua_State *L); - -void lcurl_error_initlib(lua_State *L, int nup); - -#endif +/****************************************************************************** +* Author: Alexey Melnichuk +* +* Copyright (C) 2014 Alexey Melnichuk +* +* Licensed according to the included 'LICENSE' document +* +* This file is part of lua-lcurl library. +******************************************************************************/ + +#ifndef _LCERROR_H_ +#define _LCERROR_H_ + +#include "lcurl.h" + +#define LCURL_ERROR_CURL 1 +#define LCURL_ERROR_EASY 1 +#define LCURL_ERROR_MULTI 2 +#define LCURL_ERROR_SHARE 3 +#define LCURL_ERROR_FORM 4 + +#define LCURL_ERROR_RETURN 1 +#define LCURL_ERROR_RAISE 2 + +int lcurl_fail(lua_State *L, int error_type, int code); + +int lcurl_fail_ex(lua_State *L, int mode, int error_type, int code); + +int lcurl_error_new(lua_State *L); + +void lcurl_error_initlib(lua_State *L, int nup); + +#endif diff --git a/src/lcflags.h b/src/lcflags.h index 5dd7f79..b034b36 100644 --- a/src/lcflags.h +++ b/src/lcflags.h @@ -1,158 +1,163 @@ -/* Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options */ -FLG_ENTRY(AUTH_NONE ) -FLG_ENTRY(AUTH_BASIC ) -FLG_ENTRY(AUTH_DIGEST ) -FLG_ENTRY(AUTH_GSSNEGOTIATE ) -#if LCURL_CURL_VER_GE(7,38,0) -FLG_ENTRY(AUTH_NEGOTIATE ) -#endif -FLG_ENTRY(AUTH_NTLM ) -#if LCURL_CURL_VER_GE(7,19,3) -FLG_ENTRY(AUTH_DIGEST_IE ) -#endif -#if LCURL_CURL_VER_GE(7,22,0) -FLG_ENTRY(AUTH_NTLM_WB ) -#endif -#if LCURL_CURL_VER_GE(7,21,3) -FLG_ENTRY(AUTH_ONLY ) -#endif -FLG_ENTRY(AUTH_ANY ) -FLG_ENTRY(AUTH_ANYSAFE ) - -#ifdef CURLSSH_AUTH_ANY -FLG_ENTRY(SSH_AUTH_ANY ) -#endif -#ifdef CURLSSH_AUTH_NONE -FLG_ENTRY(SSH_AUTH_NONE ) -#endif -#ifdef CURLSSH_AUTH_PUBLICKEY -FLG_ENTRY(SSH_AUTH_PUBLICKEY ) -#endif -#ifdef CURLSSH_AUTH_PASSWORD -FLG_ENTRY(SSH_AUTH_PASSWORD ) -#endif -#ifdef CURLSSH_AUTH_HOST -FLG_ENTRY(SSH_AUTH_HOST ) -#endif -#ifdef CURLSSH_AUTH_KEYBOARD -FLG_ENTRY(SSH_AUTH_KEYBOARD ) -#endif -#ifdef CURLSSH_AUTH_AGENT -FLG_ENTRY(SSH_AUTH_AGENT ) -#endif -#ifdef CURLSSH_AUTH_DEFAULT -FLG_ENTRY(SSH_AUTH_DEFAULT ) -#endif - - -FLG_ENTRY(GSSAPI_DELEGATION_NONE ) -FLG_ENTRY(GSSAPI_DELEGATION_POLICY_FLAG ) -FLG_ENTRY(GSSAPI_DELEGATION_FLAG ) - -/* Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options */ -FLG_ENTRY(USESSL_NONE ) -FLG_ENTRY(USESSL_TRY ) -FLG_ENTRY(USESSL_CONTROL ) -FLG_ENTRY(USESSL_ALL ) -#ifdef CURLSSLOPT_ALLOW_BEAST -FLG_ENTRY(SSLOPT_ALLOW_BEAST ) -#endif - -/* parameter for the CURLOPT_FTP_SSL_CCC option */ -FLG_ENTRY(FTPSSL_CCC_NONE ) -FLG_ENTRY(FTPSSL_CCC_PASSIVE ) -FLG_ENTRY(FTPSSL_CCC_ACTIVE ) - -/* parameter for the CURLOPT_FTPSSLAUTH option */ -FLG_ENTRY(FTPAUTH_DEFAULT ) -FLG_ENTRY(FTPAUTH_SSL ) -FLG_ENTRY(FTPAUTH_TLS ) - -/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ -FLG_ENTRY(FTP_CREATE_DIR_NONE ) -FLG_ENTRY(FTP_CREATE_DIR ) -FLG_ENTRY(FTP_CREATE_DIR_RETRY ) -FLG_ENTRY(FTP_CREATE_DIR_LAST ) - -/* parameter for the CURLOPT_FTP_FILEMETHOD option */ -FLG_ENTRY(FTPMETHOD_DEFAULT ) -FLG_ENTRY(FTPMETHOD_MULTICWD ) -FLG_ENTRY(FTPMETHOD_NOCWD ) -FLG_ENTRY(FTPMETHOD_SINGLECWD ) - -/* bitmask defines for CURLOPT_HEADEROPT */ -#if LCURL_CURL_VER_GE(7,37,0) -FLG_ENTRY(HEADER_UNIFIED ) -FLG_ENTRY(HEADER_SEPARATE ) -#endif - -/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */ -FLG_ENTRY(PROTO_HTTP ) -FLG_ENTRY(PROTO_HTTPS ) -FLG_ENTRY(PROTO_FTP ) -FLG_ENTRY(PROTO_FTPS ) -FLG_ENTRY(PROTO_SCP ) -FLG_ENTRY(PROTO_SFTP ) -FLG_ENTRY(PROTO_TELNET ) -FLG_ENTRY(PROTO_LDAP ) -FLG_ENTRY(PROTO_LDAPS ) -FLG_ENTRY(PROTO_DICT ) -FLG_ENTRY(PROTO_FILE ) -FLG_ENTRY(PROTO_TFTP ) -#ifdef CURLPROTO_IMAP -FLG_ENTRY(PROTO_IMAP ) -#endif -#ifdef CURLPROTO_IMAPS -FLG_ENTRY(PROTO_IMAPS ) -#endif -#ifdef CURLPROTO_POP3 -FLG_ENTRY(PROTO_POP3 ) -#endif -#ifdef CURLPROTO_POP3S -FLG_ENTRY(PROTO_POP3S ) -#endif -#ifdef CURLPROTO_SMTP -FLG_ENTRY(PROTO_SMTP ) -#endif -#ifdef CURLPROTO_SMTPS -FLG_ENTRY(PROTO_SMTPS ) -#endif -#ifdef CURLPROTO_RTSP -FLG_ENTRY(PROTO_RTSP ) -#endif -#ifdef CURLPROTO_RTMP -FLG_ENTRY(PROTO_RTMP ) -#endif -#ifdef CURLPROTO_RTMPT -FLG_ENTRY(PROTO_RTMPT ) -#endif -#ifdef CURLPROTO_RTMPE -FLG_ENTRY(PROTO_RTMPE ) -#endif -#ifdef CURLPROTO_RTMPTE -FLG_ENTRY(PROTO_RTMPTE ) -#endif -#ifdef CURLPROTO_RTMPS -FLG_ENTRY(PROTO_RTMPS ) -#endif -#ifdef CURLPROTO_RTMPTS -FLG_ENTRY(PROTO_RTMPTS ) -#endif -#ifdef CURLPROTO_GOPHER -FLG_ENTRY(PROTO_GOPHER ) -#endif -FLG_ENTRY(PROTO_ALL ) - -FLG_ENTRY(PROXY_HTTP ) /* added in 7.10.0 */ -FLG_ENTRY(PROXY_HTTP_1_0 ) /* added in 7.19.4 */ -FLG_ENTRY(PROXY_SOCKS4 ) /* added in 7.15.2 */ -FLG_ENTRY(PROXY_SOCKS5 ) /* added in 7.10.0 */ -FLG_ENTRY(PROXY_SOCKS4A ) /* added in 7.18.0 */ -FLG_ENTRY(PROXY_SOCKS5_HOSTNAME ) /* added in 7.18.0 */ - -FLG_ENTRY(PAUSE_ALL ) /* added in 7.18.0 */ -FLG_ENTRY(PAUSE_CONT ) /* added in 7.18.0 */ -FLG_ENTRY(PAUSE_RECV ) /* added in 7.18.0 */ -FLG_ENTRY(PAUSE_RECV_CONT ) /* added in 7.18.0 */ -FLG_ENTRY(PAUSE_SEND ) /* added in 7.18.0 */ -FLG_ENTRY(PAUSE_SEND_CONT ) /* added in 7.18.0 */ +/* Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options */ +FLG_ENTRY(AUTH_NONE ) +FLG_ENTRY(AUTH_BASIC ) +FLG_ENTRY(AUTH_DIGEST ) +FLG_ENTRY(AUTH_GSSNEGOTIATE ) +#if LCURL_CURL_VER_GE(7,38,0) +FLG_ENTRY(AUTH_NEGOTIATE ) +#endif +FLG_ENTRY(AUTH_NTLM ) +#if LCURL_CURL_VER_GE(7,19,3) +FLG_ENTRY(AUTH_DIGEST_IE ) +#endif +#if LCURL_CURL_VER_GE(7,22,0) +FLG_ENTRY(AUTH_NTLM_WB ) +#endif +#if LCURL_CURL_VER_GE(7,21,3) +FLG_ENTRY(AUTH_ONLY ) +#endif +FLG_ENTRY(AUTH_ANY ) +FLG_ENTRY(AUTH_ANYSAFE ) + +#ifdef CURLSSH_AUTH_ANY +FLG_ENTRY(SSH_AUTH_ANY ) +#endif +#ifdef CURLSSH_AUTH_NONE +FLG_ENTRY(SSH_AUTH_NONE ) +#endif +#ifdef CURLSSH_AUTH_PUBLICKEY +FLG_ENTRY(SSH_AUTH_PUBLICKEY ) +#endif +#ifdef CURLSSH_AUTH_PASSWORD +FLG_ENTRY(SSH_AUTH_PASSWORD ) +#endif +#ifdef CURLSSH_AUTH_HOST +FLG_ENTRY(SSH_AUTH_HOST ) +#endif +#ifdef CURLSSH_AUTH_KEYBOARD +FLG_ENTRY(SSH_AUTH_KEYBOARD ) +#endif +#ifdef CURLSSH_AUTH_AGENT +FLG_ENTRY(SSH_AUTH_AGENT ) +#endif +#ifdef CURLSSH_AUTH_DEFAULT +FLG_ENTRY(SSH_AUTH_DEFAULT ) +#endif + +#ifdef CURLGSSAPI_DELEGATION_NONE +FLG_ENTRY(GSSAPI_DELEGATION_NONE ) +#endif +#ifdef CURLGSSAPI_DELEGATION_POLICY_FLAG +FLG_ENTRY(GSSAPI_DELEGATION_POLICY_FLAG ) +#endif +#ifdef CURLGSSAPI_DELEGATION_FLAG +FLG_ENTRY(GSSAPI_DELEGATION_FLAG ) +#endif + +/* Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options */ +FLG_ENTRY(USESSL_NONE ) +FLG_ENTRY(USESSL_TRY ) +FLG_ENTRY(USESSL_CONTROL ) +FLG_ENTRY(USESSL_ALL ) +#ifdef CURLSSLOPT_ALLOW_BEAST +FLG_ENTRY(SSLOPT_ALLOW_BEAST ) +#endif + +/* parameter for the CURLOPT_FTP_SSL_CCC option */ +FLG_ENTRY(FTPSSL_CCC_NONE ) +FLG_ENTRY(FTPSSL_CCC_PASSIVE ) +FLG_ENTRY(FTPSSL_CCC_ACTIVE ) + +/* parameter for the CURLOPT_FTPSSLAUTH option */ +FLG_ENTRY(FTPAUTH_DEFAULT ) +FLG_ENTRY(FTPAUTH_SSL ) +FLG_ENTRY(FTPAUTH_TLS ) + +/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */ +FLG_ENTRY(FTP_CREATE_DIR_NONE ) +FLG_ENTRY(FTP_CREATE_DIR ) +FLG_ENTRY(FTP_CREATE_DIR_RETRY ) +FLG_ENTRY(FTP_CREATE_DIR_LAST ) + +/* parameter for the CURLOPT_FTP_FILEMETHOD option */ +FLG_ENTRY(FTPMETHOD_DEFAULT ) +FLG_ENTRY(FTPMETHOD_MULTICWD ) +FLG_ENTRY(FTPMETHOD_NOCWD ) +FLG_ENTRY(FTPMETHOD_SINGLECWD ) + +/* bitmask defines for CURLOPT_HEADEROPT */ +#if LCURL_CURL_VER_GE(7,37,0) +FLG_ENTRY(HEADER_UNIFIED ) +FLG_ENTRY(HEADER_SEPARATE ) +#endif + +/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */ +FLG_ENTRY(PROTO_HTTP ) +FLG_ENTRY(PROTO_HTTPS ) +FLG_ENTRY(PROTO_FTP ) +FLG_ENTRY(PROTO_FTPS ) +FLG_ENTRY(PROTO_SCP ) +FLG_ENTRY(PROTO_SFTP ) +FLG_ENTRY(PROTO_TELNET ) +FLG_ENTRY(PROTO_LDAP ) +FLG_ENTRY(PROTO_LDAPS ) +FLG_ENTRY(PROTO_DICT ) +FLG_ENTRY(PROTO_FILE ) +FLG_ENTRY(PROTO_TFTP ) +#ifdef CURLPROTO_IMAP +FLG_ENTRY(PROTO_IMAP ) +#endif +#ifdef CURLPROTO_IMAPS +FLG_ENTRY(PROTO_IMAPS ) +#endif +#ifdef CURLPROTO_POP3 +FLG_ENTRY(PROTO_POP3 ) +#endif +#ifdef CURLPROTO_POP3S +FLG_ENTRY(PROTO_POP3S ) +#endif +#ifdef CURLPROTO_SMTP +FLG_ENTRY(PROTO_SMTP ) +#endif +#ifdef CURLPROTO_SMTPS +FLG_ENTRY(PROTO_SMTPS ) +#endif +#ifdef CURLPROTO_RTSP +FLG_ENTRY(PROTO_RTSP ) +#endif +#ifdef CURLPROTO_RTMP +FLG_ENTRY(PROTO_RTMP ) +#endif +#ifdef CURLPROTO_RTMPT +FLG_ENTRY(PROTO_RTMPT ) +#endif +#ifdef CURLPROTO_RTMPE +FLG_ENTRY(PROTO_RTMPE ) +#endif +#ifdef CURLPROTO_RTMPTE +FLG_ENTRY(PROTO_RTMPTE ) +#endif +#ifdef CURLPROTO_RTMPS +FLG_ENTRY(PROTO_RTMPS ) +#endif +#ifdef CURLPROTO_RTMPTS +FLG_ENTRY(PROTO_RTMPTS ) +#endif +#ifdef CURLPROTO_GOPHER +FLG_ENTRY(PROTO_GOPHER ) +#endif +FLG_ENTRY(PROTO_ALL ) + +FLG_ENTRY(PROXY_HTTP ) /* added in 7.10.0 */ +FLG_ENTRY(PROXY_HTTP_1_0 ) /* added in 7.19.4 */ +FLG_ENTRY(PROXY_SOCKS4 ) /* added in 7.15.2 */ +FLG_ENTRY(PROXY_SOCKS5 ) /* added in 7.10.0 */ +FLG_ENTRY(PROXY_SOCKS4A ) /* added in 7.18.0 */ +FLG_ENTRY(PROXY_SOCKS5_HOSTNAME ) /* added in 7.18.0 */ + +FLG_ENTRY(PAUSE_ALL ) /* added in 7.18.0 */ +FLG_ENTRY(PAUSE_CONT ) /* added in 7.18.0 */ +FLG_ENTRY(PAUSE_RECV ) /* added in 7.18.0 */ +FLG_ENTRY(PAUSE_RECV_CONT ) /* added in 7.18.0 */ +FLG_ENTRY(PAUSE_SEND ) /* added in 7.18.0 */ +FLG_ENTRY(PAUSE_SEND_CONT ) /* added in 7.18.0 */