rem: err |= check_and_close (); return err;
add: ok &= check_and_close (0); return ok;
context: dump_strings (void){  size_t bufsize = MAX (100, string_min);  char *buf = xmalloc (bufsize);  uintmax_t address = n_bytes_to_skip;  int err;  err = 0;  while (1)    {      size_t i;      int c;      /* See if the next `string_min' chars are all printing chars.  */    tryline:      if (limit_bytes_to_format	  && (end_offset < string_min || end_offset - string_min <= address))	break;      for (i = 0; i < string_min; i++)	{	  err |= read_char (&c);	  address++;	  if (c < 0)	    {	      free (buf);	      return err;	    }	  if (!ISPRINT (c))	    /* Found a non-printing.  Try again starting with next char.  */	    goto tryline;	  buf[i] = c;	}      /* We found a run of `string_min' printable characters.	 Now see if it is terminated with a null byte.  */      while (!limit_bytes_to_format || address < end_offset)	{	  if (i == bufsize)	    {	      bufsize = 1 + 3 * bufsize / 2;	      buf = xrealloc (buf, bufsize);	    }	  err |= read_char (&c);	  address++;	  if (c < 0)	    {	      free (buf);	      return err;	    }	  if (c == '\0')	    break;		/* It is; print this string.  */	  if (!ISPRINT (c))	    goto tryline;	/* It isn't; give up on this string.  */	  buf[i++] = c;		/* String continues; store it all.  */	}      /* If we get here, the string is all printable and null-terminated,	 so print it.  It is all in `buf' and `i' is its length.  */      buf[i] = 0;      format_address (address - i - 1, ' ');      for (i = 0; (c = buf[i]); i++)	{	  switch (c)	    {	    case '\007':	      fputs ("\\a", stdout);	      break;	    case '\b':	      fputs ("\\b", stdout);	      break;	    case '\f':	      fputs ("\\f", stdout);	      break;	    case '\n':	      fputs ("\\n", stdout);	      break;	    case '\r':	      fputs ("\\r", stdout);	      break;	    case '\t':	      fputs ("\\t", stdout);	      break;	    case '\v':	      fputs ("\\v", stdout);	      break;	    default:	      putc (c, stdout);	    }	}      putchar ('\n');    }  /* We reach this point only if we search through     (max_bytes_to_format - string_min) bytes before reaching EOF.  */  free (buf);  err |= check_and_close ();  return err;}