mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-23 15:07:03 +01:00
* curl-shim.h, curl-shim.c (curl_escape, curl_free): Emulate
curl_escape and curl_free.
This commit is contained in:
parent
5748f595b0
commit
d8e1f7656b
@ -1,5 +1,8 @@
|
|||||||
2005-04-16 David Shaw <dshaw@jabberwocky.com>
|
2005-04-16 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* curl-shim.h, curl-shim.c (curl_escape, curl_free): Emulate
|
||||||
|
curl_escape and curl_free.
|
||||||
|
|
||||||
* gpgkeys_curl.c (main): If the http-proxy option is given without
|
* gpgkeys_curl.c (main): If the http-proxy option is given without
|
||||||
any arguments, try to get the proxy from the environment.
|
any arguments, try to get the proxy from the environment.
|
||||||
|
|
||||||
|
@ -151,3 +151,64 @@ CURLcode curl_easy_perform(CURL *curl)
|
|||||||
|
|
||||||
return handle_error(curl,err,errstr);
|
return handle_error(curl,err,errstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This is not the same exact set that is allowed according to
|
||||||
|
RFC-2396, but it is what the real curl uses. */
|
||||||
|
#define VALID_URI_CHARS "abcdefghijklmnopqrstuvwxyz" \
|
||||||
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
|
||||||
|
"0123456789"
|
||||||
|
|
||||||
|
char *curl_escape(char *str,int length)
|
||||||
|
{
|
||||||
|
int len,max,idx,enc_idx=0;
|
||||||
|
char *enc;
|
||||||
|
|
||||||
|
if(length)
|
||||||
|
len=length;
|
||||||
|
else
|
||||||
|
len=strlen(str);
|
||||||
|
|
||||||
|
enc=malloc(len+1);
|
||||||
|
if(!enc)
|
||||||
|
return enc;
|
||||||
|
|
||||||
|
max=len;
|
||||||
|
|
||||||
|
for(idx=0;idx<len;idx++)
|
||||||
|
{
|
||||||
|
if(enc_idx+3>max)
|
||||||
|
{
|
||||||
|
char *tmp;
|
||||||
|
|
||||||
|
max+=100;
|
||||||
|
|
||||||
|
tmp=realloc(enc,max+1);
|
||||||
|
if(!tmp)
|
||||||
|
{
|
||||||
|
free(enc);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
enc=tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strchr(VALID_URI_CHARS,str[idx]))
|
||||||
|
enc[enc_idx++]=str[idx];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char numbuf[5];
|
||||||
|
sprintf(numbuf,"%%%02X",str[idx]);
|
||||||
|
strcpy(&enc[enc_idx],numbuf);
|
||||||
|
enc_idx+=3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enc[enc_idx]='\0';
|
||||||
|
|
||||||
|
return enc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void curl_free(char *ptr)
|
||||||
|
{
|
||||||
|
free(ptr);
|
||||||
|
}
|
||||||
|
@ -68,5 +68,7 @@ CURL *curl_easy_init(void);
|
|||||||
CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...);
|
CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...);
|
||||||
CURLcode curl_easy_perform(CURL *curl);
|
CURLcode curl_easy_perform(CURL *curl);
|
||||||
void curl_easy_cleanup(CURL *curl);
|
void curl_easy_cleanup(CURL *curl);
|
||||||
|
char *curl_escape(char *str,int len);
|
||||||
|
void curl_free(char *ptr);
|
||||||
|
|
||||||
#endif /* !_CURL_SHIM_H_ */
|
#endif /* !_CURL_SHIM_H_ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user