diff -pur barcode-0.98/main.c barcode-0.98-fix/main.c --- barcode-0.98/main.c 2002-03-01 21:31:07.000000000 +0000 +++ barcode-0.98-fix/main.c 2005-10-11 07:19:39.000000000 +0000 @@ -419,7 +419,6 @@ char *strerror(int error) */ int main(int argc, char **argv) { - struct Barcode_Item * bc; FILE *ifile = stdin; FILE *ofile = stdout; char *line; @@ -549,14 +548,6 @@ int main(int argc, char **argv) int ystep = (page_hei - ymargin0 - ymargin1)/lines; int x = columns, y = -1; /* position in the table, start off-page */ - if (!ximargin) ximargin = BARCODE_DEFAULT_MARGIN; - if (!yimargin) yimargin = BARCODE_DEFAULT_MARGIN; - /* Assign default size unless -g did it (Joachim Reichelt) */ - if ( !code_width && !code_height) { - code_width = xstep - 2*ximargin; - code_height = ystep - 2*yimargin; - } - page=0; while ( (line = retrieve_input_string(ifile)) ) { x++; /* fit x and y */ @@ -564,35 +555,28 @@ int main(int argc, char **argv) x=0; y--; if (y<0) { y = lines-1; page++; - /* flush page */ - if (ps && page > 1) fprintf(ofile, "showpage\n"); - if (pcl && page > 1) fprintf(ofile, "\f"); - /* new page */ - if (ps) fprintf(ofile, "%%%%Page: %i %i\n\n",page,page); + if (page>1) { + if (ps) { + fprintf(ofile, "showpage\n"); + fprintf(ofile, "%%%%Page: %i %i\n\n",page,page); + } + if (pcl) fprintf(ofile, "\f"); + } } } /* - * Create a barcode item. This allows to set the margin to 0, as - * we have [xy]imargin to use. But don't use Encode_and_Print(), - * unroll it here instead + * Print this code, using the internal margins as spacing. + * In order to remove the extra (default) margin, subtract it + * in advance (dirty) */ - bc = Barcode_Create(line); - if (!bc) { - fprintf(stderr, "%s: Barcode_Create(): %s\n", argv[0], - strerror(errno)); - exit(1); - } - bc->margin = 0; - if ( (Barcode_Position(bc, code_width, code_height, - xmargin0 + ximargin + x * xstep, - ymargin0 + yimargin + y * ystep, 0.0) < 0) - || (Barcode_Encode(bc, flags) < 0) - || (Barcode_Print(bc, ofile, flags) < 0) ) { - fprintf(stderr, "%s: can't encode \"%s\": %s\n", argv[0], - line, strerror(bc->error)); + if (Barcode_Encode_and_Print(line, ofile, + xstep - 2*ximargin, ystep - 2*yimargin, + xmargin0 + ximargin + x * xstep - BARCODE_DEFAULT_MARGIN, + ymargin0 + yimargin + y * ystep - BARCODE_DEFAULT_MARGIN, + flags)<0) { + fprintf(stderr, "%s: can't encode \"%s\"\n", argv[0], line); } - Barcode_Delete(bc); } if (ps) fprintf(ofile, "showpage\n\n%%%%Trailer\n\n"); if (pcl) fprintf(ofile, "\f");