summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/pdfrip.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/apps/pdfrip.c b/apps/pdfrip.c
index bf96a4b1..4f5930d1 100644
--- a/apps/pdfrip.c
+++ b/apps/pdfrip.c
@@ -22,10 +22,11 @@ void showpage(pdf_xref *xref, fz_obj *pageobj, int pagenum)
fz_error *error;
pdf_page *page;
char namebuf[256];
+ char buf[128];
fz_pixmap *pix;
fz_matrix ctm;
fz_irect bbox;
- FILE *f;
+ int fd;
int x, y;
int w, h;
int b, bh;
@@ -68,9 +69,11 @@ void showpage(pdf_xref *xref, fz_obj *pageobj, int pagenum)
h = bbox.max.y - bbox.min.y;
bh = h / nbands;
- f = fopen(namebuf, "wb");
- fprintf(f, "P6\n%d %d\n255\n", w, bh * nbands);
- fflush(f);
+ fd = open(namebuf, O_BINARY|O_WRONLY|O_CREAT|O_TRUNC);
+ if (fd < 0)
+ fz_abort(fz_throw("open %s failed: %s", namebuf, strerror(errno)));
+ sprintf(buf, "P6\n%d %d\n255\n", w, bh * nbands);
+ write(fd, buf, strlen(buf));
error = fz_newpixmap(&pix, bbox.min.x, bbox.min.y, w, bh, 4);
if (error)
@@ -98,7 +101,7 @@ void showpage(pdf_xref *xref, fz_obj *pageobj, int pagenum)
dst[x * 3 + 2] = src[x * 4 + 3];
}
- write(fileno(f), dst, pix->w * 3);
+ write(fd, dst, pix->w * 3);
}
pix->y += bh;
@@ -106,8 +109,7 @@ void showpage(pdf_xref *xref, fz_obj *pageobj, int pagenum)
fz_droppixmap(pix);
- fclose(f);
-
+ close(fd);
}
int main(int argc, char **argv)