sort: fix ENDCHAR handling in "-kSTART,N.ENDCHAR"

function                                             old     new   delta
get_key                                              505     503      -2

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2015-10-19 19:27:26 +02:00
parent d1ed3e68b8
commit 0506e292b5
2 changed files with 12 additions and 3 deletions

View File

@@ -160,17 +160,18 @@ static char *get_key(char *str, struct sort_key *key, int flags)
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;