[BACK]Return to fields.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / sort

Diff for /src/usr.bin/sort/Attic/fields.c between version 1.12 and 1.13

version 1.12, 2007/08/21 20:29:25 version 1.13, 2008/02/22 01:24:58
Line 204 
Line 204 
 {  {
         int or_sign, parity = 0;          int or_sign, parity = 0;
         int expincr = 1, exponent = -1;          int expincr = 1, exponent = -1;
         int bite, expsign = 1, sign = 1;          int bite, expsign = 1, sign = 1, zeroskip = 0;
         u_char lastvalue, *nonzero, *tline, *C_TENS;          u_char lastvalue, *tline, *C_TENS;
         u_char *nweights;          u_char *nweights;
   
         if (Rflag)          if (Rflag)
Line 227 
Line 227 
         }          }
         /* eat initial zeroes */          /* eat initial zeroes */
         for (; *line == '0' && line < lineend; line++)          for (; *line == '0' && line < lineend; line++)
                 ;                  zeroskip = 1;
         /* calculate exponents < 0 */          /* calculate exponents < 0 */
         if (*line == DECIMAL) {          if (*line == DECIMAL) {
                 exponent = 1;                  exponent = 1;
Line 238 
Line 238 
         }          }
         /* next character better be a digit */          /* next character better be a digit */
         if (*line < '1' || *line > '9' || line >= lineend) {          if (*line < '1' || *line > '9' || line >= lineend) {
                 *pos++ = nweights[127];                  if (!zeroskip) {
                 return (pos);                          *pos++ = nweights[127];
                           return (pos);
                   }
         }          }
         if (expincr) {          if (expincr) {
                 for (tline = line-1; *++tline >= '0' &&                  for (tline = line-1; *++tline >= '0' &&
Line 270 
Line 272 
                                                 : *line);                                                  : *line);
                                 if (pos == bufend)                                  if (pos == bufend)
                                         return (NULL);                                          return (NULL);
                                 if (*line != '0' || lastvalue != '0')  
                                         nonzero = pos;  
                         } else                          } else
                                 lastvalue = *line;                                  lastvalue = *line;
                         parity ^= 1;                          parity ^= 1;
Line 282 
Line 282 
                 } else                  } else
                         break;                          break;
         }          }
         if (parity && lastvalue != '0') {          if (parity) {
                 *pos++ = or_sign ? OFF_NTENS[lastvalue] - '0' :                  *pos++ = or_sign ? OFF_NTENS[lastvalue] - '0' :
                                         OFF_TENS[lastvalue] + '0';                                          OFF_TENS[lastvalue] + '0';
         } else          }
                 pos = nonzero;  
         if (pos > bufend-1)          if (pos > bufend-1)
                 return (NULL);                  return (NULL);
         *pos++ = or_sign ? nweights[254] : nweights[0];          *pos++ = or_sign ? nweights[254] : nweights[0];

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13