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; }