tr: properly detect read errors (Fernando Silveira <fsilveira@gmail.com>)

readprofile: use xwrite

function                                             old     new   delta
tr_main                                              679     677      -2
readprofile_main                                    1964    1944     -20
This commit is contained in:
Denis Vlasenko 2007-11-13 17:51:40 +00:00
parent 130f559f4d
commit a89d50fb9a
2 changed files with 6 additions and 7 deletions

View File

@ -173,7 +173,8 @@ int tr_main(int argc, char **argv)
int idx = 1;
int i;
smalluint flags = 0;
size_t read_chars = 0, in_index = 0, out_index = 0, c, coded, last = -1;
ssize_t read_chars = 0;
size_t in_index = 0, out_index = 0, c, coded, last = -1;
RESERVE_CONFIG_UBUFFER(output, BUFSIZ);
RESERVE_CONFIG_BUFFER(vector, ASCII+1);
RESERVE_CONFIG_BUFFER(invec, ASCII+1);
@ -223,8 +224,9 @@ int tr_main(int argc, char **argv)
}
read_chars = read(STDIN_FILENO, tr_buf, BUFSIZ);
if (read_chars <= 0) {
if (write(STDOUT_FILENO, (char *)output, out_index) != out_index)
bb_perror_msg(bb_msg_write_error);
xwrite(STDOUT_FILENO, (char *)output, out_index);
if (read_chars < 0)
bb_perror_msg_and_die(bb_msg_read_error);
exit(EXIT_SUCCESS);
}
in_index = 0;

View File

@ -88,10 +88,7 @@ int readprofile_main(int argc, char **argv)
}
fd = xopen(defaultpro, O_WRONLY);
if (full_write(fd, &multiplier, to_write) != to_write)
bb_perror_msg_and_die("error writing %s", defaultpro);
xwrite(fd, &multiplier, to_write);
close(fd);
return EXIT_SUCCESS;
}