ref: 3da0a627971a5ec4ca5c8253dbb798df56c5ddcb
dir: /sys/src/libdraw/readcolmap.c/
#include <u.h> #include <libc.h> #include <draw.h> #include <bio.h> static ulong getval(char **p) { ulong v; char *q; v = strtoul(*p, &q, 0); v |= v<<8; v |= v<<16; *p = q; return v; } void readcolmap(Display *d, RGB *colmap) { int i; char *p, *q; Biobuf *b; char buf[128]; USED(screen); sprint(buf, "/dev/draw/%d/colormap", d->dirno); b = Bopen(buf, OREAD|OCEXEC); if(b == nil) drawerror(d, "rdcolmap: can't open colormap device"); for(;;) { p = Brdline(b, '\n'); if(p == 0) break; i = strtoul(p, &q, 0); if(i < 0 || i > 255) { fprint(2, "rdcolmap: bad index\n"); exits("bad"); } p = q; colmap[255-i].red = getval(&p); colmap[255-i].green = getval(&p); colmap[255-i].blue = getval(&p); } Bterm(b); }