Diff for /src/gnu/usr.bin/sort/sort.c between versions 1.2 and 1.3

version 1.2, 2003/06/17 04:25:49 version 1.3, 2004/02/03 19:22:59
Line 19 Line 19
    The author may be reached (Email) at the address mike@gnu.ai.mit.edu,     The author may be reached (Email) at the address mike@gnu.ai.mit.edu,
    or (US mail) as Mike Haertel c/o Free Software Foundation. */     or (US mail) as Mike Haertel c/o Free Software Foundation. */
   
/* $FreeBSD: src/gnu/usr.bin/sort/sort.c,v 1.15.2.4 2002/04/17 11:41:42 ache Exp $ *//*
/* $DragonFly: src/gnu/usr.bin/sort/sort.c,v 1.1 2003/06/16 04:13:50 dillon Exp $ */ * $FreeBSD: src/gnu/usr.bin/sort/sort.c,v 1.15.2.4 2002/04/17 11:41:42 ache Exp $
  * $DragonFly$
  */
   
 #include <config.h>  #include <config.h>
   
Line 30 Line 32
 #include <sys/types.h>  #include <sys/types.h>
 #include <signal.h>  #include <signal.h>
 #include <stdio.h>  #include <stdio.h>
#ifdef __FreeBSD__#ifdef __DragonFly__
 #include <locale.h>  #include <locale.h>
 #endif  #endif
 #include "system.h"  #include "system.h"
Line 198  static int have_read_stdin; Line 200  static int have_read_stdin;
 /* Lists of key field comparisons to be tried. */  /* Lists of key field comparisons to be tried. */
 static struct keyfield keyhead;  static struct keyfield keyhead;
   
#ifdef __FreeBSD__#ifdef __DragonFly__
 static unsigned char decimal_point;  static unsigned char decimal_point;
   
 static int  static int
Line 228  collcmp(char *a, char *b, int mini) Line 230  collcmp(char *a, char *b, int mini)
         b[mini] = sb;          b[mini] = sb;
         return r;          return r;
 }  }
#endif /* __FreeBSD__ */#endif /* __DragonFly__ */
   
 static void  static void
 usage (int status)  usage (int status)
Line 754  fraccompare (register const char *a, reg Line 756  fraccompare (register const char *a, reg
 {  {
   register tmpa = UCHAR (*a), tmpb = UCHAR (*b);    register tmpa = UCHAR (*a), tmpb = UCHAR (*b);
   
#ifdef __FreeBSD__#ifdef __DragonFly__
   if (tmpa == decimal_point && tmpb == decimal_point)    if (tmpa == decimal_point && tmpb == decimal_point)
 #else  #else
   if (tmpa == '.' && tmpb == '.')    if (tmpa == '.' && tmpb == '.')
Line 783  fraccompare (register const char *a, reg Line 785  fraccompare (register const char *a, reg
         }          }
       return 0;        return 0;
     }      }
#ifdef __FreeBSD__#ifdef __DragonFly__
   else if (tmpa == decimal_point)    else if (tmpa == decimal_point)
 #else  #else
   else if (tmpa == '.')    else if (tmpa == '.')
Line 796  fraccompare (register const char *a, reg Line 798  fraccompare (register const char *a, reg
         return 1;          return 1;
       return 0;        return 0;
     }      }
#ifdef __FreeBSD__#ifdef __DragonFly__
   else if (tmpb == decimal_point)    else if (tmpb == decimal_point)
 #else  #else
   else if (tmpb == '.')    else if (tmpb == '.')
Line 836  numcompare (register const char *a, regi Line 838  numcompare (register const char *a, regi
       while (tmpa == '0');        while (tmpa == '0');
       if (tmpb != '-')        if (tmpb != '-')
         {          {
#ifdef __FreeBSD__#ifdef __DragonFly__
           if (tmpa == decimal_point)            if (tmpa == decimal_point)
 #else  #else
           if (tmpa == '.')            if (tmpa == '.')
Line 848  numcompare (register const char *a, regi Line 850  numcompare (register const char *a, regi
             return -1;              return -1;
           while (tmpb == '0')            while (tmpb == '0')
             tmpb = UCHAR (*++b);              tmpb = UCHAR (*++b);
#ifdef __FreeBSD__#ifdef __DragonFly__
           if (tmpb == decimal_point)            if (tmpb == decimal_point)
 #else  #else
           if (tmpb == '.')            if (tmpb == '.')
Line 867  numcompare (register const char *a, regi Line 869  numcompare (register const char *a, regi
       while (tmpa == tmpb && digits[tmpa])        while (tmpa == tmpb && digits[tmpa])
         tmpa = UCHAR (*++a), tmpb = UCHAR (*++b);          tmpa = UCHAR (*++a), tmpb = UCHAR (*++b);
   
#ifdef __FreeBSD__#ifdef __DragonFly__
       if ((tmpa == decimal_point && !digits[tmpb]) ||        if ((tmpa == decimal_point && !digits[tmpb]) ||
           (tmpb == decimal_point && !digits[tmpa]))            (tmpb == decimal_point && !digits[tmpa]))
 #else  #else
Line 893  numcompare (register const char *a, regi Line 895  numcompare (register const char *a, regi
       if (!loga)        if (!loga)
         return 0;          return 0;
   
#ifdef __FreeBSD__#ifdef __DragonFly__
       return COLLDIFF (tmpb, tmpa);        return COLLDIFF (tmpb, tmpa);
 #else  #else
       return tmpb - tmpa;        return tmpb - tmpa;
Line 904  numcompare (register const char *a, regi Line 906  numcompare (register const char *a, regi
       do        do
         tmpb = UCHAR (*++b);          tmpb = UCHAR (*++b);
       while (tmpb == '0');        while (tmpb == '0');
#ifdef __FreeBSD__#ifdef __DragonFly__
       if (tmpb == decimal_point)        if (tmpb == decimal_point)
 #else  #else
       if (tmpb == '.')        if (tmpb == '.')
Line 916  numcompare (register const char *a, regi Line 918  numcompare (register const char *a, regi
         return 1;          return 1;
       while (tmpa == '0')        while (tmpa == '0')
         tmpa = UCHAR (*++a);          tmpa = UCHAR (*++a);
#ifdef __FreeBSD__#ifdef __DragonFly__
       if (tmpa == decimal_point)        if (tmpa == decimal_point)
 #else  #else
       if (tmpa == '.')        if (tmpa == '.')
Line 938  numcompare (register const char *a, regi Line 940  numcompare (register const char *a, regi
       while (tmpa == tmpb && digits[tmpa])        while (tmpa == tmpb && digits[tmpa])
         tmpa = UCHAR (*++a), tmpb = UCHAR (*++b);          tmpa = UCHAR (*++a), tmpb = UCHAR (*++b);
   
#ifdef __FreeBSD__#ifdef __DragonFly__
       if ((tmpa == decimal_point && !digits[tmpb]) ||        if ((tmpa == decimal_point && !digits[tmpb]) ||
           (tmpb == decimal_point && !digits[tmpa]))            (tmpb == decimal_point && !digits[tmpa]))
 #else  #else
Line 964  numcompare (register const char *a, regi Line 966  numcompare (register const char *a, regi
       if (!loga)        if (!loga)
         return 0;          return 0;
   
#ifdef __FreeBSD__#ifdef __DragonFly__
       return COLLDIFF (tmpa, tmpb);        return COLLDIFF (tmpa, tmpb);
 #else  #else
       return tmpa - tmpb;        return tmpa - tmpb;
Line 1126  keycompare (const struct line *a, const Line 1128  keycompare (const struct line *a, const
         }          }
       else if (ignore && translate)        else if (ignore && translate)
   
#ifdef __FreeBSD__#ifdef __DragonFly__
 #define CMP_FUNC(A, B) COLLDIFF ((A), (B))  #define CMP_FUNC(A, B) COLLDIFF ((A), (B))
 #else  #else
 #define CMP_FUNC(A, B) (A) - (B)  #define CMP_FUNC(A, B) (A) - (B)
Line 1186  keycompare (const struct line *a, const Line 1188  keycompare (const struct line *a, const
           {            {
             if (translate[UCHAR (*texta++)] != translate[UCHAR (*textb++)])              if (translate[UCHAR (*texta++)] != translate[UCHAR (*textb++)])
               {                {
#ifdef __FreeBSD__#ifdef __DragonFly__
                 diff = COLLDIFF (translate[UCHAR (*--texta)],                  diff = COLLDIFF (translate[UCHAR (*--texta)],
                           translate[UCHAR (*--textb)]);                            translate[UCHAR (*--textb)]);
 #else  #else
Line 1197  keycompare (const struct line *a, const Line 1199  keycompare (const struct line *a, const
               }                }
           }            }
       else        else
#ifdef __FreeBSD__#ifdef __DragonFly__
         diff = collcmp (texta, textb, min (lena, lenb));          diff = collcmp (texta, textb, min (lena, lenb));
 #else  #else
         diff = memcmp (texta, textb, min (lena, lenb));          diff = memcmp (texta, textb, min (lena, lenb));
Line 1242  compare (register const struct line *a, Line 1244  compare (register const struct line *a,
     {      {
       char *ap = a->text, *bp = b->text;        char *ap = a->text, *bp = b->text;
   
#ifndef __FreeBSD__#ifndef __DragonFly__
       diff = UCHAR (*ap) - UCHAR (*bp);        diff = UCHAR (*ap) - UCHAR (*bp);
       if (diff == 0)        if (diff == 0)
         {          {
 #endif  #endif
#ifdef __FreeBSD__#ifdef __DragonFly__
           diff = collcmp (ap, bp, mini);            diff = collcmp (ap, bp, mini);
 #else  #else
           diff = memcmp (ap, bp, mini);            diff = memcmp (ap, bp, mini);
 #endif  #endif
           if (diff == 0)            if (diff == 0)
             diff = tmpa - tmpb;              diff = tmpa - tmpb;
#ifndef __FreeBSD__#ifndef __DragonFly__
         }          }
 #endif  #endif
     }      }
Line 1777  main (int argc, char **argv) Line 1779  main (int argc, char **argv)
   struct sigaction oldact, newact;    struct sigaction oldact, newact;
 #endif                          /* SA_INTERRUPT */  #endif                          /* SA_INTERRUPT */
   
#ifdef __FreeBSD__#ifdef __DragonFly__
   (void) setlocale(LC_ALL, "");    (void) setlocale(LC_ALL, "");
   decimal_point = localeconv()->decimal_point[0];    decimal_point = localeconv()->decimal_point[0];
 #endif  #endif

Removed from v.1.2  
changed lines
  Added in v.1.3