From 4e206880423db866dd1db0622a9b4d5b0881fee1 Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 25 Apr 2004 20:26:27 +0000 Subject: make it possible to access fonts without a display. --- src/libdraw/readimage.c | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'src/libdraw/readimage.c') diff --git a/src/libdraw/readimage.c b/src/libdraw/readimage.c index 1d2717b0..8135c45d 100644 --- a/src/libdraw/readimage.c +++ b/src/libdraw/readimage.c @@ -23,7 +23,10 @@ readimage(Display *d, int fd, int dolock) return creadimage(d, fd, dolock); if(readn(fd, hdr+11, 5*12-11) != 5*12-11) return nil; - chunk = d->bufsize - 32; /* a little room for header */ + if(d) + chunk = d->bufsize - 32; /* a little room for header */ + else + chunk = 8192; /* * distinguish new channel descriptor from old ldepth. @@ -69,13 +72,20 @@ readimage(Display *d, int fd, int dolock) maxy = r.max.y; l = bytesperline(r, chantodepth(chan)); - if(dolock) - lockdisplay(d); - i = allocimage(d, r, chan, 0, -1); - if(dolock) - unlockdisplay(d); - if(i == nil) - return nil; + if(d){ + if(dolock) + lockdisplay(d); + i = allocimage(d, r, chan, 0, -1); + if(dolock) + unlockdisplay(d); + if(i == nil) + return nil; + }else{ + i = mallocz(sizeof(Image), 1); + if(i == nil) + return nil; + } + tmp = malloc(chunk); if(tmp == nil) goto Err; @@ -105,12 +115,14 @@ readimage(Display *d, int fd, int dolock) for(j=0; j