rem: return errors;
add: SET_BINARY2 (fd, STDOUT_FILENO);  file_size = lseek (fd, (off_t) 0, SEEK_END);  ok = (0 <= file_size ? tac_seekable (fd, filename) : tac_nonseekable (fd, filename));  if (fd != STDIN_FILENO && close (fd) == -1) { error (0, errno, _("%s: read error"), quotearg_colon (filename)); ok = false; } return ok;
context: tac_file (const char *file){  int errors;  FILE *in;  in = fopen (file, "r");  if (in == NULL)    {      error (0, errno, "%s", file);      return 1;    }  SET_BINARY (fileno (in));  errors = tac_seekable (fileno (in), file);  if (ferror (in) || fclose (in) == EOF)    {      error (0, errno, "%s", file);      return 1;    }  return errors;}