Diff for /embedaddon/libiconv/tests/uniq-u.c between versions 1.1.1.1 and 1.1.1.3

version 1.1.1.1, 2012/02/21 22:57:49 version 1.1.1.3, 2021/03/17 13:38:46
Line 1 Line 1
 /* uniq -- remove duplicate lines from a sorted file  /* uniq -- remove duplicate lines from a sorted file
   Copyright (C) 86, 91, 1995-1998, 1999 Free Software Foundation, Inc.   Copyright (C) 86, 91, 1995-1998, 1999, 2012 Free Software Foundation, Inc.
   
    This program is free software: you can redistribute it and/or modify     This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by     it under the terms of the GNU General Public License as published by
Line 12 Line 12
    GNU General Public License for more details.     GNU General Public License for more details.
   
    You should have received a copy of the GNU General Public License     You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
   
 /* Written by Richard Stallman and David MacKenzie. */  /* Written by Richard Stallman and David MacKenzie. */
 /* 2000-03-22  Trimmed down to the case of "uniq -u" by Bruno Haible. */  /* 2000-03-22  Trimmed down to the case of "uniq -u" by Bruno Haible. */
Line 58  xrealloc (void *p, size_t n) Line 58  xrealloc (void *p, size_t n)
   return p;    return p;
 }  }
   
/* A `struct linebuffer' holds a line of text. *//* A 'struct linebuffer' holds a line of text. */
   
 struct linebuffer  struct linebuffer
 {  {
  size_t size;                  /* Allocated. */  size_t size;                  /* Allocated. */
  size_t length;                /* Used. */  size_t length;                /* Used. */
   char *buffer;    char *buffer;
 };  };
   
Line 97  readline (struct linebuffer *linebuffer, FILE *stream) Line 97  readline (struct linebuffer *linebuffer, FILE *stream)
     {      {
       c = getc (stream);        c = getc (stream);
       if (c == EOF)        if (c == EOF)
        {        {
          if (p == buffer)          if (p == buffer)
            return 0;            return 0;
          if (p[-1] == '\n')          if (p[-1] == '\n')
            break;            break;
          c = '\n';          c = '\n';
        }        }
       if (p == end)        if (p == end)
        {        {
          linebuffer->size *= 2;          linebuffer->size *= 2;
          buffer = (char *) xrealloc (buffer, linebuffer->size);          buffer = (char *) xrealloc (buffer, linebuffer->size);
          p = p - linebuffer->buffer + buffer;          p = p - linebuffer->buffer + buffer;
          linebuffer->buffer = buffer;          linebuffer->buffer = buffer;
          end = buffer + linebuffer->size - 1;          end = buffer + linebuffer->size - 1;
        }        }
       *p++ = c;        *p++ = c;
     }      }
   while (c != '\n');    while (c != '\n');
Line 210  check_file (const char *infile, const char *outfile) Line 210  check_file (const char *infile, const char *outfile)
     {      {
       int match;        int match;
       if (readline (thisline, istream) == 0)        if (readline (thisline, istream) == 0)
        break;        break;
       thisfield = thisline->buffer;        thisfield = thisline->buffer;
       thislen = thisline->length;        thislen = thisline->length;
       match = !different (thisfield, prevfield, thislen, prevlen);        match = !different (thisfield, prevfield, thislen, prevlen);
   
       if (match)        if (match)
        ++match_count;        ++match_count;
   
       if (!match)        if (!match)
        {        {
          writeline (prevline, ostream, match_count);          writeline (prevline, ostream, match_count);
          exch = prevline;          exch = prevline;
          prevline = thisline;          prevline = thisline;
          thisline = exch;          thisline = exch;
          prevfield = thisfield;          prevfield = thisfield;
          prevlen = thislen;          prevlen = thislen;
          if (!match)          if (!match)
            match_count = 0;            match_count = 0;
        }        }
     }      }
   
   writeline (prevline, ostream, match_count);    writeline (prevline, ostream, match_count);

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


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