--- orig/capt-0.1/capt.c 2004-08-16 22:22:57 +0400 +++ capt-0.1/capt.c 2010-03-11 13:45:56 +0300 @@ -33,11 +33,14 @@ #include "capt.h" +char* dev_printer = NULL; + #define WAIT 8000 -#undef DEBUG +/*#undef DEBUG*/ + #ifdef DEBUG -#define DPRINTF(fmt, args...) printf(fmt, ## args) +#define DPRINTF(fmt, args...) fprintf(stderr,fmt, ## args) #else #define DPRINTF(fmt, args...) #endif @@ -269,6 +272,7 @@ unsigned char c1, c2; unsigned char* c; + fprintf(stderr,"In compress_bitmap\n"); ccbm = 0; cbm[0] = malloc(65536); cbm[1] = NULL; @@ -278,9 +282,13 @@ errorexit(); } + fprintf(stderr,"bitmapf ...\n"); + if (fgets(cbm[0],200,bitmapf)<=0) { return 0; } + fprintf(stderr,"fgets ( bitmapf ) succeeded\n"); + if (strncmp(cbm[0],"P4",2)) { fprintf(stderr,"Wrong file format.\n"); fprintf(stderr,"file position: %lx\n",ftell(bitmapf)); @@ -597,6 +605,7 @@ } int print_page(int page) { + /**/ if (page == 0) { write_command_packet(0xa1, 0xa1, 0, 2); @@ -604,7 +613,7 @@ fprintf(stderr, "Invalid printer state, printer not connected ?\n"); return 0; } - } + } /**/ if (!waitforpaper()) { fprintf(stderr, "Timeout out while waiting for paper.\n"); @@ -723,7 +732,7 @@ //int tfd; bitmapf = stdin; - while ((c = getopt(argc,argv,"Rrt:l:sf:")) != -1) { + while ((c = getopt(argc,argv,"Rrt:l:sf:d:")) != -1) { switch (c) { /* case 'R': { reset_only=1; @@ -752,40 +761,50 @@ fprintf(stderr,"File not found on unreadable\n"); errorexit(); } + DPRINTF("DBG: %s: reading the bitmap from %s\n",argv[0],optarg); + break; } + case 'd': + if (!optarg) { + fprintf(stderr,"ERROR: printer device is not specified. Use -d /dev/usb/lpX option.\n"); + errorexit(); + } + if (!(dev_printer = (char*)malloc(sizeof(char)*(strlen(optarg)+1)))) { + fprintf(stderr,"ERROR: weird! can't get core to copy %d characters of the device name!\n",strlen(optarg)+1); + errorexit(); + } + strcpy (dev_printer,optarg); + break; } } - fd = open("/dev/usb/lp0", O_RDWR | O_NONBLOCK); - //fd = open("/dev/lp0", O_RDWR); - -// if (!reset_only) { - /* pages printing loop */ -/* struct timeval ltv; - struct timeval ntv;*/ - - while (1) { - /* temporary file to store our results */ -/* strcpy(gname,"/tmp/lbp810-XXXXXX"); - if ((tfd=mkstemp(gname))<0) { - fprintf(stderr,"Can't open a temporary file.\n"); + if (!dev_printer) { + fprintf(stderr,"WARNING: using /dev/usb/lp0 by default\n"); + dev_printer = "/dev/usb/lp0"; + } + if ((fd = open(dev_printer, O_RDWR | O_NONBLOCK)) == -1) { + fprintf(stderr,"ERROR: %s: Can't open %s\n",argv[0],dev_printer); errorexit(); } - cbmf = fdopen(tfd,"w+");*/ - if (!compress_bitmap()) + DPRINTF("%s: DBG: %s opened\n",argv[0], dev_printer); + + while (1) { + DPRINTF("DBG: %s: compress_bitmap() ...\n",argv[0]); + if (!compress_bitmap()) { + DPRINTF("DBG: %s: compress_bitmap() == 0; break;\n",argv[0]); break; + } + DPRINTF("DBG: %s: simulate = %d\n",argv[0],simulate); if (!simulate) { + DPRINTF("DBG: %s: print_page() ...\n",argv[0]); if (!print_page( page )) { - fprintf(stderr, "Error, cannot print this page.\n"); + fprintf(stderr, "ERROR: %s: cannot print this page.\n",argv[0]); errorexit(); } - //gettimeofday(<v, NULL); + DPRINTF("DBG: %s: print_page() succeeded\n",argv[0]); } -// fclose(cbmf); next_page(page++); -// unlink(gname); } -// } fclose(bitmapf);