1 8a3b2ceb 2004-04-24 devnull #include <u.h>
2 8a3b2ceb 2004-04-24 devnull #include <libc.h>
3 8a3b2ceb 2004-04-24 devnull #include <bio.h>
4 8a3b2ceb 2004-04-24 devnull #include <draw.h>
5 8a3b2ceb 2004-04-24 devnull #include "sky.h"
8 8a3b2ceb 2004-04-24 devnull displaypic(Picture *pic)
10 8a3b2ceb 2004-04-24 devnull int p[2];
11 8a3b2ceb 2004-04-24 devnull int i, n;
12 8a3b2ceb 2004-04-24 devnull uchar *a;
15 8a3b2ceb 2004-04-24 devnull if(pipe(p) < 0){
16 8a3b2ceb 2004-04-24 devnull fprint(2, "pipe failed: %r\n");
19 8a3b2ceb 2004-04-24 devnull switch(rfork(RFPROC|RFFDG)){
21 8a3b2ceb 2004-04-24 devnull fprint(2, "fork failed: %r\n");
25 8a3b2ceb 2004-04-24 devnull close(p[1]);
26 8a3b2ceb 2004-04-24 devnull dup(p[0], 0);
27 8a3b2ceb 2004-04-24 devnull close(p[0]);
28 cbeb0b26 2006-04-01 devnull /* execl("/bin/page", "page", "-w", 0); */
29 8a3b2ceb 2004-04-24 devnull execlp("img", "img", 0);
30 8a3b2ceb 2004-04-24 devnull fprint(2, "exec failed: %r\n");
31 8a3b2ceb 2004-04-24 devnull exits("exec");
34 8a3b2ceb 2004-04-24 devnull close(p[0]);
35 8a3b2ceb 2004-04-24 devnull fprint(p[1], "%11s %11d %11d %11d %11d ",
36 8a3b2ceb 2004-04-24 devnull "k8", pic->minx, pic->miny, pic->maxx, pic->maxy);
37 8a3b2ceb 2004-04-24 devnull n = (pic->maxx-pic->minx)*(pic->maxy-pic->miny);
38 8a3b2ceb 2004-04-24 devnull /* release the memory as we hand it off; this could be a big piece of data */
39 8a3b2ceb 2004-04-24 devnull a = pic->data;
40 8a3b2ceb 2004-04-24 devnull while(n > 0){
41 8a3b2ceb 2004-04-24 devnull i = 8192 - (((int)a)&8191);
42 8a3b2ceb 2004-04-24 devnull if(i > n)
44 8a3b2ceb 2004-04-24 devnull if(write(p[1], a, i)!=i)
45 8a3b2ceb 2004-04-24 devnull fprint(2, "write error: %r\n");
46 cbeb0b26 2006-04-01 devnull /* if(i == 8192) /* page aligned */ */
47 cbeb0b26 2006-04-01 devnull /* segfree(a, i); */
51 8a3b2ceb 2004-04-24 devnull free(pic->data);
52 8a3b2ceb 2004-04-24 devnull free(pic);
53 8a3b2ceb 2004-04-24 devnull close(p[1]);
59 8a3b2ceb 2004-04-24 devnull displayimage(Image *im)
61 8a3b2ceb 2004-04-24 devnull int p[2];
63 8a3b2ceb 2004-04-24 devnull if(pipe(p) < 0){
64 8a3b2ceb 2004-04-24 devnull fprint(2, "pipe failed: %r\n");
67 8a3b2ceb 2004-04-24 devnull switch(rfork(RFPROC|RFFDG)){
69 8a3b2ceb 2004-04-24 devnull fprint(2, "fork failed: %r\n");
73 8a3b2ceb 2004-04-24 devnull close(p[1]);
74 8a3b2ceb 2004-04-24 devnull dup(p[0], 0);
75 8a3b2ceb 2004-04-24 devnull close(p[0]);
76 8a3b2ceb 2004-04-24 devnull execlp("img", "img", 0);
77 cbeb0b26 2006-04-01 devnull /* execl("/bin/page", "page", "-w", 0); */
78 8a3b2ceb 2004-04-24 devnull fprint(2, "exec failed: %r\n");
79 8a3b2ceb 2004-04-24 devnull exits("exec");
82 8a3b2ceb 2004-04-24 devnull close(p[0]);
83 8a3b2ceb 2004-04-24 devnull writeimage(p[1], im, 0);
84 8a3b2ceb 2004-04-24 devnull freeimage(im);
85 8a3b2ceb 2004-04-24 devnull close(p[1]);