rem: while (ptr < lim && blanks[UCHAR (*ptr)])
add: while (ptr < lim && blanks[to_uchar (*ptr)])
context: limfield (const struct line *line, const struct keyfield *key){  register char *ptr = line->text, *lim = ptr + line->length - 1;  register size_t eword = key->eword, echar = key->echar;  register size_t remaining_bytes;  /* Note: from the POSIX spec:     The leading field separator itself is included in     a field when -t is not used.  FIXME: move this comment up... */  /* Move PTR past EWORD fields or to one past the last byte on LINE,     whichever comes first.  If there are more than EWORD fields, leave     PTR pointing at the beginning of the field having zero-based index,     EWORD.  If a delimiter character was specified (via -t), then that     `beginning' is the first character following the delimiting TAB.     Otherwise, leave PTR pointing at the first `blank' character after     the preceding field.  */  if (tab)    while (ptr < lim && eword--)      {	while (ptr < lim && *ptr != tab)	  ++ptr;	if (ptr < lim && (eword | echar))	  ++ptr;      }  else    while (ptr < lim && eword--)      {	while (ptr < lim && blanks[UCHAR (*ptr)])	  ++ptr;	while (ptr < lim && !blanks[UCHAR (*ptr)])	  ++ptr;      }#ifdef POSIX_UNSPECIFIED  /* The following block of code makes GNU sort incompatible with     standard Unix sort, so it's ifdef'd out for now.     The POSIX spec isn't clear on how to interpret this.     FIXME: request clarification.     From: kwzh@gnu.ai.mit.edu (Karl Heuer)     Date: Thu, 30 May 96 12:20:41 -0400     [Translated to POSIX 1003.1-2001 terminology by Paul Eggert.]     [...]I believe I've found another bug in `sort'.     $ cat /tmp/sort.in     a b c 2 d     pq rs 1 t     $ textutils-1.15/src/sort -k1.7,1.7 </tmp/sort.in     a b c 2 d     pq rs 1 t     $ /bin/sort -k1.7,1.7 </tmp/sort.in     pq rs 1 t     a b c 2 d     Unix sort produced the answer I expected: sort on the single character     in column 7.  GNU sort produced different results, because it disagrees     on the interpretation of the key-end spec "M.N".  Unix sort reads this     as "skip M-1 fields, then N-1 characters"; but GNU sort wants it to mean     "skip M-1 fields, then either N-1 characters or the rest of the current     field, whichever comes first".  This extra clause applies only to     key-ends, not key-starts.     */  /* Make LIM point to the end of (one byte past) the current field.  */  if (tab)    {      char *newlim;      newlim = memchr (ptr, tab, lim - ptr);      if (newlim)	lim = newlim;    }  else    {      char *newlim;      newlim = ptr;      while (newlim < lim && blanks[UCHAR (*newlim)])	++newlim;      while (newlim < lim && !blanks[UCHAR (*newlim)])	++newlim;      lim = newlim;    }#endif  /* If we're skipping leading blanks, don't start counting characters     until after skipping past any leading blanks.  */  if (key->skipsblanks)    while (ptr < lim && blanks[UCHAR (*ptr)])      ++ptr;  /* Advance PTR by ECHAR (if possible), but no further than LIM.  */  remaining_bytes = lim - ptr;  if (echar < remaining_bytes)    ptr += echar;  else    ptr = lim;  return ptr;}