Index: burncd.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/burncd/burncd.c,v retrieving revision 1.36 diff -u -r1.36 burncd.c --- burncd.c 4 May 2003 10:09:57 -0000 1.36 +++ burncd.c 24 Jun 2003 08:49:51 -0000 @@ -610,9 +610,12 @@ } size = 0; + printf("\nReading from %d, using file_size %ld, block_size %ld, and BLOCKS %ld\n", track_info->file, (long)track_info->file_size, (long)track_info->block_size, (long)BLOCKS); while ((count = read(track_info->file, buf, - MIN((track_info->file_size - size), - track_info->block_size * BLOCKS))) > 0) { + track_info->file_size > 0 ? + MIN((track_info->file_size - size), + track_info->block_size * BLOCKS) : + track_info->block_size * BLOCKS)) > 0) { int res; if (count % track_info->block_size) { @@ -641,12 +644,16 @@ fprintf(stderr, " total %jd KB\r", (intmax_t)tot_size / 1024); } - if (size >= track_info->file_size) + if (track_info->file_size > 0 && size >= track_info->file_size) { + fprintf(stderr, "\nExiting due to size >= file_size (%ld >= %ld)\n", (long)size, (long)track_info->file_size); break; + } } - if (!quiet) + if (!quiet) { fprintf(stderr, "\n"); + fprintf(stderr, "Exited due to %d: %s\n", errno, strerror(errno)); + } close(track_info->file); return 0; }