* curl-shim.h, curl-shim.c (curl_escape, curl_free): Emulate

curl_escape and curl_free.
This commit is contained in:
David Shaw 2005-04-16 22:21:28 +00:00
parent 5748f595b0
commit d8e1f7656b
3 changed files with 66 additions and 0 deletions

View File

@ -1,5 +1,8 @@
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
any arguments, try to get the proxy from the environment.

View File

@ -151,3 +151,64 @@ CURLcode curl_easy_perform(CURL *curl)
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);
}

View File

@ -68,5 +68,7 @@ CURL *curl_easy_init(void);
CURLcode curl_easy_setopt(CURL *curl,CURLoption option,...);
CURLcode curl_easy_perform(CURL *curl);
void curl_easy_cleanup(CURL *curl);
char *curl_escape(char *str,int len);
void curl_free(char *ptr);
#endif /* !_CURL_SHIM_H_ */