if (!j) start = end;
}
/* Strip leading whitespace if necessary */
-//XXX: skip_whitespace()
if (flags & FLAG_b)
+ /* not using skip_whitespace() for speed */
while (isspace(str[start])) start++;
/* Strip trailing whitespace if necessary */
if (flags & FLAG_bb)
while (end > start && isspace(str[end-1])) end--;
- /* Handle offsets on start and end */
+ /* -kSTART,N.ENDCHAR: honor ENDCHAR (1-based) */
if (key->range[3]) {
- end += key->range[3] - 1;
+ end = key->range[3];
if (end > len) end = len;
}
+ /* -kN.STARTCHAR[,...]: honor STARTCHAR (1-based) */
if (key->range[1]) {
start += key->range[1] - 1;
if (start > len) start = len;
a:b
" ""
+testing "sort with ENDCHAR" "sort -t. -k1,1.1 -k2 input" "\
+ab.1
+aa.2
+" "\
+aa.2
+ab.1
+" ""
+
testing "glibc build sort" "sort -t. -k 1,1 -k 2n,2n -k 3 input" "\
GLIBC_2.1
GLIBC_2.1.1