#include #include #include #include #include #include #include #include #include extern const char *__progname; static const char *fbdev = "/dev/bwtwo0"; int main(void); int main(void) { int fd; struct fbtype fbtype; caddr_t mm; fd = open(fbdev,O_RDWR,0); if (fd < 0) return(0); if (ioctl(fd,FBIOGTYPE,&fbtype) < 0) { fprintf(stderr,"%s: not a bwtwo (FBIOGTYPE failed)\n",__progname); exit(1); } if (fbtype.fb_depth != 1) { fprintf(stderr,"%s: not a bwtwo (depth != 1)\n",__progname); exit(1); } mm = mmap(0,fbtype.fb_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); if (mm == MAP_FAILED) { fprintf(stderr,"%s: mmap %s: %s\n",__progname,fbdev,strerror(errno)); exit(1); } close(fd); printf("P4\n%d %d\n",fbtype.fb_width,fbtype.fb_height); fflush(stdout); write(1,mm,((fbtype.fb_width+7)>>3)*fbtype.fb_height); exit(0); }