ref: 284c31aee8f0a9027fe6bd8903a06653bf35e22d
dir: /icy.c/
int
icyfill(Meta *m)
{
char *s, *e, *p, *d, tmp[128];
int f, r, n;
s = strchr(m->path, ':')+3;
if((e = strchr(s, '/')) != nil)
*e++ = 0;
if((p = strchr(s, ':')) != nil)
*p = '!';
sprint(tmp, "tcp!%s", s);
d = netmkaddr(tmp, "tcp", "80");
if((f = dial(d, nil, nil, nil)) < 0)
return -1;
fprint(f, "GET /%s HTTP/0.9\r\nIcy-MetaData: 1\r\n\r\n", e ? e : "");
s = malloc(4096);
for(r = 0; r < 4096; r += n){
if((n = read(f, s+r, 4096-r)) < 1)
break;
}
s[r] = 0;
for(; s = strchr(s, '\n');){
s++;
if(strncmp(s, "icy-name:", 9) == 0 && (e = strchr(s, '\r')) != nil){
*e = 0;
m->artist[0] = strdup(s+9);
m->numartist = 1;
s = e+1;
}else if(strncmp(s, "icy-url:", 8) == 0 && (e = strchr(s, '\r')) != nil){
*e = 0;
m->title = strdup(s+8);
s = e+1;
}
}
close(f);
return 0;
}