dj(1): move prec and rec adjustment into Io_read

This commit is contained in:
dtb 2024-07-04 19:21:40 -06:00
parent 4004a4a006
commit f49a2d2eb8
Signed by: trinity
GPG Key ID: 34C0543BBB6AF81B

View File

@ -65,13 +65,24 @@ static int write_flags = O_WRONLY | O_CREAT;
#define fdisstd(fd) ((fd) == STDIN_FILENO || (fd) == STDOUT_FILENO) #define fdisstd(fd) ((fd) == STDIN_FILENO || (fd) == STDOUT_FILENO)
/* Reads io->bs bytes from *io's file descriptor into io->buf, storing the /* Reads io->bs bytes from *io's file descriptor into io->buf, storing the
* number of read bytes in io->bufuse and updating io->bytes. If io->bufuse is * number of read bytes in io->bufuse and updating io->bytes. If the buf isn't
* 0, errno will probably be set. Returns io. */ * saturated but is still read into, io->prec will be incremented. If the buf
* is saturated, io->rec will be incremented. If io->bufuse is 0, errno will
* probably be set. Returns io. */
static struct Io * static struct Io *
Io_read(struct Io *io){ Io_read(struct Io *io){
io->bytes += (io->bufuse = read(io->fd, io->buf, io->bs)); io->bytes += (io->bufuse = read(io->fd, io->buf, io->bs));
assert(io->bufuse <= io->bs);
if(io->bufuse != 0){
if(io->bufuse < io->bs)
++io->prec;
else /* if(io->bufuse == io->bs) */
++io->rec;
}
return io; return io;
} }
@ -267,8 +278,8 @@ int main(int argc, char *argv[]){
Io_read(&io[0]); /* second chance */ Io_read(&io[0]); /* second chance */
if(io[0].bufuse == 0) /* that's all she wrote */ if(io[0].bufuse == 0) /* that's all she wrote */
break; break;
else if(io[0].bufuse < io[0].bs){
++io[0].prec; if(io[0].bufuse < io[0].bs){
fprintf(stderr, "%s: Partial read:\n\t", program_name); fprintf(stderr, "%s: Partial read:\n\t", program_name);
printio(fmt, io); printio(fmt, io);
if(!noerror) if(!noerror)
@ -279,8 +290,7 @@ int main(int argc, char *argv[]){
io[0].bs - io[0].bufuse); io[0].bs - io[0].bufuse);
io->bufuse = io->bs; io->bufuse = io->bs;
} }
}else }
++io[0].rec;
/* write */ /* write */
do{ do{