diff options
author | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2022-10-17 19:12:50 +0000 |
---|---|---|
committer | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2022-10-17 19:12:50 +0000 |
commit | dc5143fd4fbdad70ad346b4714cb5d9947662e60 (patch) | |
tree | 6385676ed45679aa5902266cda2064b599127ffb /sys/src/cmd/audio | |
parent | 3668c38e40b94bfa3fa634ab15f3b3b4746aa224 (diff) |
zuke: use percentile to calculate relative widths of columns
Diffstat (limited to 'sys/src/cmd/audio')
-rw-r--r-- | sys/src/cmd/audio/zuke/icy.c | 18 | ||||
-rw-r--r-- | sys/src/cmd/audio/zuke/zuke.c | 24 |
2 files changed, 18 insertions, 24 deletions
diff --git a/sys/src/cmd/audio/zuke/icy.c b/sys/src/cmd/audio/zuke/icy.c index 95aa53d6b..c9cb105fb 100644 --- a/sys/src/cmd/audio/zuke/icy.c +++ b/sys/src/cmd/audio/zuke/icy.c @@ -14,18 +14,6 @@ struct Icyaux int metaint; }; -static char * -truncate(char *s){ - Rune … = L'…'; - int n; - - /* titles can be obnoxiously long */ - if(strlen(s) > (n = 48-UTFmax)) - s[n + runetochar(s+n, &…)] = 0; - - return s; -} - static long Breadn(Biobufhdr *bp, void *addr, long nbytes) { @@ -65,10 +53,8 @@ icyproc(void *b_) break; p[n] = 0; if((s = strstr(p, "StreamTitle='")) != nil && (e = strstr(s+13, "';")) != nil && e != s+13){ - s += 13; *e = 0; - s = strdup(truncate(s)); - if(sendp(aux->newtitle, s) != 1){ + if(sendp(aux->newtitle, strdup(s+13)) != 1){ free(s); break; } @@ -121,7 +107,7 @@ icyget(Meta *m, int outfd, Channel **newtitle) } s[n-2] = 0; if(strncmp(s, "icy-name:", 9) == 0){ - s = truncate(s+9); + s += 9; if(newtitle != nil) sendp(aux->newtitle, strdup(s)); else if(m->title == nil) diff --git a/sys/src/cmd/audio/zuke/zuke.c b/sys/src/cmd/audio/zuke/zuke.c index ed3663d45..7b226ffe7 100644 --- a/sys/src/cmd/audio/zuke/zuke.c +++ b/sys/src/cmd/audio/zuke/zuke.c @@ -927,11 +927,17 @@ readall(int f) return s; } +static int +cmpint(void *a, void *b) +{ + return *(int*)a - *(int*)b; +} + static Playlist * readplist(int fd, int mincolwidth[Ncol]) { char *raw, *s, *e, *a[5], *b; - int plsz, i, x; + int plsz, i, *w; Playlist *pl; Meta *m; @@ -950,9 +956,6 @@ readplist(int fd, int mincolwidth[Ncol]) return nil; } - for(i = 0; cols[i] != 0; i++) - mincolwidth[i] = 1; - pl->raw = raw; for(s = pl->raw, m = pl->m, e = s; e != nil; s = e){ if((e = strchr(s, '\n')) == nil) @@ -963,10 +966,6 @@ readplist(int fd, int mincolwidth[Ncol]) case 0: addit: if(m->path != nil){ - for(i = 0; cols[i] != 0; i++){ - if((x = stringwidth(f, getcol(m, cols[i]))) > mincolwidth[i]) - mincolwidth[i] = x; - } if(m->filefmt == nil) m->filefmt = ""; pl->n++; @@ -1002,6 +1001,15 @@ addit: } } + w = malloc(sizeof(int)*pl->n); + for(i = 0; cols[i] != 0; i++){ + for(m = pl->m; m != pl->m + pl->n; m++) + w[m - pl->m] = stringwidth(f, getcol(m, cols[i])); + qsort(w, pl->n, sizeof(*w), cmpint); + mincolwidth[i] = w[93*(pl->n-1)/100]; + } + free(w); + return pl; } |