static char *get_key(char *str, struct sort_key *key, int flags)
{
- int start = 0, end = 0, len, i, j;
+ int start = 0, end = 0, len, j;
+ unsigned i;
/* Special case whole string, so we don't have to make a copy */
if (key->range[0] == 1 && !key->range[1] && !key->range[2] && !key->range[3]
#endif
int sort_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int sort_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int sort_main(int argc UNUSED_PARAM, char **argv)
{
FILE *fp, *outfile = stdout;
char *line, **lines = NULL;
"k::"; /* -k takes list */
getopt32(argv, OPT_STR, &str_ignored, &str_ignored, &str_o, &lst_k, &str_t);
#if ENABLE_FEATURE_SORT_BIG
- if (option_mask32 & FLAG_o) outfile = xfopen(str_o, "w");
+ if (option_mask32 & FLAG_o) outfile = xfopen_for_write(str_o);
if (option_mask32 & FLAG_t) {
if (!str_t[0] || str_t[1])
bb_error_msg_and_die("bad -t parameter");
0
};
struct sort_key *key = add_key();
- char *str_k = lst_k->data;
+ char *str_k = llist_pop(&lst_k);
const char *temp2;
i = 0; /* i==0 before comma, 1 after (-k3,6) */
str_k++;
}
}
- /* leaking lst_k... */
- lst_k = lst_k->link;
}
#endif
/* global b strips leading and trailing spaces */
for (;;) {
line = GET_LINE(fp);
if (!line) break;
- if (!(linecount & 63))
- lines = xrealloc(lines, sizeof(char *) * (linecount + 64));
+ lines = xrealloc_vector(lines, 6, linecount);
lines[linecount++] = line;
}
fclose_if_not_stdin(fp);