Diff for /embedaddon/libiconv/src/iconv.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 22:57:48 version 1.1.1.2, 2012/05/29 09:29:43
Line 1 Line 1
/* Copyright (C) 2000-2009 Free Software Foundation, Inc./* Copyright (C) 2000-2009, 2011 Free Software Foundation, Inc.
    This file is part of the GNU LIBICONV Library.     This file is part of the GNU LIBICONV Library.
   
    This program is free software: you can redistribute it and/or modify     This program is free software: you can redistribute it and/or modify
Line 38 Line 38
 #include "binary-io.h"  #include "binary-io.h"
 #include "progname.h"  #include "progname.h"
 #include "relocatable.h"  #include "relocatable.h"
   #include "safe-read.h"
 #include "xalloc.h"  #include "xalloc.h"
 #include "uniwidth.h"  #include "uniwidth.h"
 #include "uniwidth/cjk.h"  #include "uniwidth/cjk.h"
Line 190  static void print_version (void) Line 191  static void print_version (void)
 {  {
   printf("iconv (GNU libiconv %d.%d)\n",    printf("iconv (GNU libiconv %d.%d)\n",
          _libiconv_version >> 8, _libiconv_version & 0xff);           _libiconv_version >> 8, _libiconv_version & 0xff);
  printf("Copyright (C) %s Free Software Foundation, Inc.\n", "2000-2009");  printf("Copyright (C) %s Free Software Foundation, Inc.\n", "2000-2011");
   /* xgettext: no-wrap */    /* xgettext: no-wrap */
   fputs (_("\    fputs (_("\
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
Line 667  static void conversion_error_other (int errnum, const  Line 668  static void conversion_error_other (int errnum, const 
   
 /* Convert the input given in infile.  */  /* Convert the input given in infile.  */
   
static int convert (iconv_t cd, FILE* infile, const char* infilename)static int convert (iconv_t cd, int infile, const char* infilename)
 {  {
   char inbuf[4096+4096];    char inbuf[4096+4096];
   size_t inbufrest = 0;    size_t inbufrest = 0;
     int infile_error = 0;
   char initial_outbuf[4096];    char initial_outbuf[4096];
   char *outbuf = initial_outbuf;    char *outbuf = initial_outbuf;
   size_t outbufsize = sizeof(initial_outbuf);    size_t outbufsize = sizeof(initial_outbuf);
   int status = 0;    int status = 0;
   
 #if O_BINARY  #if O_BINARY
  SET_BINARY(fileno(infile));  SET_BINARY(infile);
 #endif  #endif
   line = 1; column = 0;    line = 1; column = 0;
   iconv(cd,NULL,NULL,NULL,NULL);    iconv(cd,NULL,NULL,NULL,NULL);
   for (;;) {    for (;;) {
    size_t inbufsize = fread(inbuf+4096,1,4096,infile);    size_t inbufsize;
    if (inbufsize == 0) {    /* Transfer the accumulated output to its destination, in case the
        safe_read() call will block. */
     fflush(stdout);
     inbufsize = safe_read(infile,inbuf+4096,4096);
     if (inbufsize == 0 || inbufsize == SAFE_READ_ERROR) {
       infile_error = (inbufsize == SAFE_READ_ERROR ? errno : 0);
       if (inbufrest == 0)        if (inbufrest == 0)
         break;          break;
       else {        else {
Line 809  static int convert (iconv_t cd, FILE* infile, const ch Line 816  static int convert (iconv_t cd, FILE* infile, const ch
     } else      } else
       break;        break;
   }    }
  if (ferror(infile)) {  if (infile_error) {
     fflush(stdout);      fflush(stdout);
     if (column > 0)      if (column > 0)
       putc('\n',stderr);        putc('\n',stderr);
    error(0,0,    error(0,infile_error,
           /* TRANSLATORS: An error message.            /* TRANSLATORS: An error message.
              The placeholder expands to the input file name.  */               The placeholder expands to the input file name.  */
           _("%s: I/O error"),            _("%s: I/O error"),
Line 1076  int main (int argc, char* argv[]) Line 1083  int main (int argc, char* argv[])
     hooks.data = NULL;      hooks.data = NULL;
     iconvctl(cd, ICONV_SET_HOOKS, &hooks);      iconvctl(cd, ICONV_SET_HOOKS, &hooks);
     if (i == argc)      if (i == argc)
      status = convert(cd,stdin,      status = convert(cd,fileno(stdin),
                        /* TRANSLATORS: A filename substitute denoting standard input.  */                         /* TRANSLATORS: A filename substitute denoting standard input.  */
                        _("(stdin)"));                         _("(stdin)"));
     else {      else {
Line 1094  int main (int argc, char* argv[]) Line 1101  int main (int argc, char* argv[])
                 infilename);                  infilename);
           status = 1;            status = 1;
         } else {          } else {
          status |= convert(cd,infile,infilename);          status |= convert(cd,fileno(infile),infilename);
           fclose(infile);            fclose(infile);
         }          }
       }        }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>