blob: 86b63f1e25b1856434e5455c91f418c326f2517b [file] [log] [blame]
--- a/filter/gstoraster.c
+++ b/filter/gstoraster.c
@@ -699,33 +699,28 @@
if (argc == 6) {
/* stdin */
- fd = cupsTempFd(buf,BUFSIZ);
- if (fd < 0) {
+ fp = tmpfile();
+ if (fp == NULL) {
fprintf(stderr, "ERROR: Can't create temporary file\n");
goto out;
}
- /* remove name */
- unlink(buf);
/* copy stdin to the tmp file */
- while ((n = read(0,buf,BUFSIZ)) > 0) {
- if (write(fd,buf,n) != n) {
- fprintf(stderr, "ERROR: Can't copy stdin to temporary file\n");
- close(fd);
+ for (n = BUFSIZ; n == BUFSIZ; ) {
+ n = fread(buf,1,BUFSIZ,stdin);
+ if (n < BUFSIZ && ferror(fp)) {
+ fprintf(stderr, "ERROR: Error when reading from stdin\n");
+ fclose(fp);
goto out;
}
- }
- if (lseek(fd,0,SEEK_SET) < 0) {
- fprintf(stderr, "ERROR: Can't rewind temporary file\n");
- close(fd);
+ if (fwrite(buf,1,n,fp) != n) {
+ fprintf(stderr, "ERROR: Can't copy stdin to temporary file\n");
+ fclose(fp);
goto out;
+ }
}
- if ((fp = fdopen(fd,"rb")) == 0) {
- fprintf(stderr, "ERROR: Can't fdopen temporary file\n");
- close(fd);
- goto out;
- }
+ rewind(fp);
} else {
/* argc == 7 filename is specified */