if (fwrite (outbuf, 1, outptr - outbuf, output) != 0
if (fwrite (outbuf, 1, outptr - outbuf, output)  < outptr - outbuf
process_block (iconv_t cd, const char *addr, size_t len, FILE *output){#define OUTBUF_SIZE	32768  char outbuf[OUTBUF_SIZE];  char *outptr = outbuf;  size_t outlen = OUTBUF_SIZE;  while (len > 0)    {      size_t n = iconv (cd, &addr, &len, &outptr, &outlen);      if (outptr != outbuf)	{	  /* We have something to write out.  */	  if (fwrite (outbuf, 1, outptr - outbuf, output) != 0	      || ferror (output))	    {	      /* Error occurred while printing the result.  */	      error (0, 0, _("\conversion stopped due to problem in writing the output"));	      return -1;	    }	}      if (n != (size_t) -1)	/* Everything is processed.  */	break;      if (errno != E2BIG)	{	  /* iconv() ran into a problem.  */	  switch (errno)	    {	    case EILSEQ:	      error (0, 0, _("illegal input sequence"));	      break;	    case EINVAL:	      error (0, 0, _("\incomplete character or shift sequence at end of buffer"));	      break;	    case EBADF:	      error (0, 0, _("internal error (illegal descriptor)"));	      break;	    default:	      error (0, 0, _("unknown iconv() error %d"), errno);	      break;	    }	  return -1;	}    }  return 0;}