Audio-Play-MPG123
view release on metacpan or search on metacpan
mpg123/httpget.c view on Meta::CPAN
*(h+stringlength) = '\0';
*hname = h;
if (portptr) {
stringlength = (pathptr - portptr);
if(!stringlength) portptr = NULL;
}
if (portptr == NULL) {
portptr = defaultportstr;
stringlength = strlen(defaultportstr);
}
p0 = malloc(stringlength + 1);
if (p0 == NULL) {
free(h);
*hname = NULL;
*port = NULL;
return NULL;
}
strncpy(p0, portptr, stringlength);
*(p0 + stringlength) = '\0';
for (p = p0; *p && isdigit((unsigned char) *p); p++) ;
*p = '\0';
*port = (unsigned char *) p0;
return pathptr;
}
char *proxyurl = NULL;
unsigned long proxyip = 0;
unsigned char *proxyport;
#define ACCEPT_HEAD "Accept: audio/mpeg, audio/x-mpegurl, */*\r\n"
char *httpauth = NULL;
char httpauth1[256];
int http_open (char *url)
{
char *purl, *host, *request, *sptr;
int linelength;
unsigned long myip;
unsigned char *myport;
int sock;
int relocate, numrelocs = 0;
FILE *myfile;
#ifdef INET6
struct addrinfo hints, *res, *res0;
int error;
#else
struct hostent *hp;
struct sockaddr_in sin;
#endif
host = NULL;
proxyport = NULL;
myport = NULL;
if (!proxyip) {
if (!proxyurl)
if (!(proxyurl = getenv("MP3_HTTP_PROXY")))
if (!(proxyurl = getenv("http_proxy")))
proxyurl = getenv("HTTP_PROXY");
if (proxyurl && proxyurl[0] && strcmp(proxyurl, "none")) {
if (!(url2hostport(proxyurl, &host, &proxyip, &proxyport))) {
fprintf (stderr, "Unknown proxy host \"%s\".\n",
host ? host : "");
exit (1);
}
#if 0
if (host)
free (host);
#endif
}
else
proxyip = INADDR_NONE;
}
if (proxyip == INADDR_NONE)
if (strncasecmp(url, "ftp://", 6) == 0){
fprintf(stderr,"Downloading from ftp servers without PROXY not allowed\n");
exit(1);
}
if ((linelength = strlen(url)+200) < 1024)
linelength = 1024;
if (!(request = malloc(linelength)) || !(purl = malloc(1024))) {
fprintf (stderr, "malloc() failed, out of memory.\n");
exit (1);
}
/*
* 2000-10-21:
* We would like spaces to be automatically converted to %20's when
* fetching via HTTP.
* -- Martin Sjögren <md9ms@mdstud.chalmers.se>
*/
if ((sptr = strchr(url, ' ')) == NULL) {
strncpy (purl, url, 1023);
purl[1023] = '\0';
}
else {
int purllength = 0;
char *urlptr = url;
purl[0] = '\0';
do {
purllength += sptr-urlptr + 3;
if (purllength >= 1023)
break;
strncat (purl, urlptr, sptr-urlptr);
//purl[sptr-url] = '\0';
strcat (purl, "%20");
urlptr = sptr + 1;
}
while ((sptr = strchr (urlptr, ' ')) != NULL);
strcat (purl, urlptr);
}
getauthfromURL(purl,httpauth1);
do {
( run in 0.889 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )