#include #include #include #include #include #include #include extern const char *__progname; static const char *videodev = "viddev"; #define MAXFRAMEBYTES (100<<20) #define MAXFRAMES 100 static int vfd; static unsigned char framebuf[MAXFRAMEBYTES]; static unsigned char *frames[MAXFRAMES]; static unsigned int framelens[MAXFRAMES]; static void open_video(void) { vfd = open(videodev,O_RDWR,0); if (vfd < 0) { fprintf(stderr,"%s: %s: %s\n",__progname,videodev,strerror(errno)); exit(1); } } int main(void); int main(void) { int i; int o; int l; int l0; open_video(); o = 0; l0 = 0; for (i=0;i 0) && (o+l0 > MAXFRAMEBYTES)) break; l = read(vfd,&framebuf[o],MAXFRAMEBYTES-o); if (l < 0) { fprintf(stderr,"%s: %s: read: %s\n",__progname,videodev,strerror(errno)); exit(1); } if (l == 0) { fprintf(stderr,"%s: %s: read EOF\n",__progname,videodev); exit(1); } if (o == 0) l0 = l; frames[i] = &framebuf[o]; framelens[i] = l; o += l; write(2,".",1); } write(1,frames[i-1],framelens[i-1]); return(0); }