mirror of
https://github.com/sheumann/hush.git
synced 2024-12-27 01:32:08 +00:00
Applied patch from I.Q. to add sort -u as a feature.
This commit is contained in:
parent
6e808ca354
commit
fccaa3629b
5
Config.h
5
Config.h
@ -235,9 +235,12 @@
|
|||||||
// Enable support for tar -z option (currently only works for inflating)
|
// Enable support for tar -z option (currently only works for inflating)
|
||||||
#define BB_FEATURE_TAR_GZIP
|
#define BB_FEATURE_TAR_GZIP
|
||||||
//
|
//
|
||||||
//// Enable reverse sort
|
// Enable reverse sort
|
||||||
#define BB_FEATURE_SORT_REVERSE
|
#define BB_FEATURE_SORT_REVERSE
|
||||||
//
|
//
|
||||||
|
// Enable uniqe sort
|
||||||
|
#define BB_FEATURE_SORT_UNIQUE
|
||||||
|
//
|
||||||
// Enable command line editing in the shell.
|
// Enable command line editing in the shell.
|
||||||
// Only relevant if BB_SH is enabled. On by default.
|
// Only relevant if BB_SH is enabled. On by default.
|
||||||
#define BB_FEATURE_COMMAND_EDITING
|
#define BB_FEATURE_COMMAND_EDITING
|
||||||
|
@ -1356,15 +1356,24 @@
|
|||||||
"[2 second delay results]\n"
|
"[2 second delay results]\n"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
#define USAGE_SORT_UNIQUE(a) a
|
||||||
|
#else
|
||||||
|
#define USAGE_SORT_UNIQUE(a)
|
||||||
|
#endif
|
||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
#define USAGE_SORT_REVERSE(a) a
|
#define USAGE_SORT_REVERSE(a) a
|
||||||
#else
|
#else
|
||||||
#define USAGE_SORT_REVERSE(a)
|
#define USAGE_SORT_REVERSE(a)
|
||||||
#endif
|
#endif
|
||||||
#define sort_trivial_usage \
|
#define sort_trivial_usage \
|
||||||
"[-n]" USAGE_SORT_REVERSE(" [-r]") " [FILE]..."
|
"[-n" USAGE_SORT_REVERSE("r") USAGE_SORT_UNIQUE("u") "] [FILE]..."
|
||||||
#define sort_full_usage \
|
#define sort_full_usage \
|
||||||
"Sorts lines of text in the specified files"
|
"Sorts lines of text in the specified files\n\n"\
|
||||||
|
"Options:\n" \
|
||||||
|
USAGE_SORT_UNIQUE("\t-u\tsuppress duplicate lines\n") \
|
||||||
|
USAGE_SORT_REVERSE("\t-r\tsort in reverse order\n") \
|
||||||
|
"\t-n\tsort numerics"
|
||||||
#define sort_example_usage \
|
#define sort_example_usage \
|
||||||
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
|
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
|
||||||
"a\n" \
|
"a\n" \
|
||||||
|
@ -46,8 +46,11 @@ int sort_main(int argc, char **argv)
|
|||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
int reverse = FALSE;
|
int reverse = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
int unique = FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "nr")) != -1) {
|
while ((opt = getopt(argc, argv, "nru")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'n':
|
case 'n':
|
||||||
compare = compare_numeric;
|
compare = compare_numeric;
|
||||||
@ -56,6 +59,11 @@ int sort_main(int argc, char **argv)
|
|||||||
case 'r':
|
case 'r':
|
||||||
reverse = TRUE;
|
reverse = TRUE;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
case 'u':
|
||||||
|
unique = TRUE;
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
show_usage();
|
show_usage();
|
||||||
@ -81,12 +89,18 @@ int sort_main(int argc, char **argv)
|
|||||||
|
|
||||||
/* print it */
|
/* print it */
|
||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
if (reverse)
|
if (reverse) {
|
||||||
for (i = nlines - 1; 0 <= i; i--)
|
for (i = --nlines; 0 <= i; i--)
|
||||||
puts(lines[i]);
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
else
|
if((!unique) || (i == nlines) || (strcmp(lines[i + 1], lines[i])))
|
||||||
#endif
|
#endif
|
||||||
for (i = 0; i < nlines; i++)
|
puts(lines[i]);
|
||||||
puts(lines[i]);
|
} else
|
||||||
|
#endif
|
||||||
|
for (i = 0; i < nlines; i++)
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
if((!unique) || (!i) || (strcmp(lines[i - 1], lines[i])))
|
||||||
|
#endif
|
||||||
|
puts(lines[i]);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1356,15 +1356,24 @@
|
|||||||
"[2 second delay results]\n"
|
"[2 second delay results]\n"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
#define USAGE_SORT_UNIQUE(a) a
|
||||||
|
#else
|
||||||
|
#define USAGE_SORT_UNIQUE(a)
|
||||||
|
#endif
|
||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
#define USAGE_SORT_REVERSE(a) a
|
#define USAGE_SORT_REVERSE(a) a
|
||||||
#else
|
#else
|
||||||
#define USAGE_SORT_REVERSE(a)
|
#define USAGE_SORT_REVERSE(a)
|
||||||
#endif
|
#endif
|
||||||
#define sort_trivial_usage \
|
#define sort_trivial_usage \
|
||||||
"[-n]" USAGE_SORT_REVERSE(" [-r]") " [FILE]..."
|
"[-n" USAGE_SORT_REVERSE("r") USAGE_SORT_UNIQUE("u") "] [FILE]..."
|
||||||
#define sort_full_usage \
|
#define sort_full_usage \
|
||||||
"Sorts lines of text in the specified files"
|
"Sorts lines of text in the specified files\n\n"\
|
||||||
|
"Options:\n" \
|
||||||
|
USAGE_SORT_UNIQUE("\t-u\tsuppress duplicate lines\n") \
|
||||||
|
USAGE_SORT_REVERSE("\t-r\tsort in reverse order\n") \
|
||||||
|
"\t-n\tsort numerics"
|
||||||
#define sort_example_usage \
|
#define sort_example_usage \
|
||||||
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
|
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
|
||||||
"a\n" \
|
"a\n" \
|
||||||
|
28
sort.c
28
sort.c
@ -46,8 +46,11 @@ int sort_main(int argc, char **argv)
|
|||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
int reverse = FALSE;
|
int reverse = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
int unique = FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "nr")) != -1) {
|
while ((opt = getopt(argc, argv, "nru")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'n':
|
case 'n':
|
||||||
compare = compare_numeric;
|
compare = compare_numeric;
|
||||||
@ -56,6 +59,11 @@ int sort_main(int argc, char **argv)
|
|||||||
case 'r':
|
case 'r':
|
||||||
reverse = TRUE;
|
reverse = TRUE;
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
case 'u':
|
||||||
|
unique = TRUE;
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
show_usage();
|
show_usage();
|
||||||
@ -81,12 +89,18 @@ int sort_main(int argc, char **argv)
|
|||||||
|
|
||||||
/* print it */
|
/* print it */
|
||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
if (reverse)
|
if (reverse) {
|
||||||
for (i = nlines - 1; 0 <= i; i--)
|
for (i = --nlines; 0 <= i; i--)
|
||||||
puts(lines[i]);
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
else
|
if((!unique) || (i == nlines) || (strcmp(lines[i + 1], lines[i])))
|
||||||
#endif
|
#endif
|
||||||
for (i = 0; i < nlines; i++)
|
puts(lines[i]);
|
||||||
puts(lines[i]);
|
} else
|
||||||
|
#endif
|
||||||
|
for (i = 0; i < nlines; i++)
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
if((!unique) || (!i) || (strcmp(lines[i - 1], lines[i])))
|
||||||
|
#endif
|
||||||
|
puts(lines[i]);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
13
usage.h
13
usage.h
@ -1356,15 +1356,24 @@
|
|||||||
"[2 second delay results]\n"
|
"[2 second delay results]\n"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef BB_FEATURE_SORT_UNIQUE
|
||||||
|
#define USAGE_SORT_UNIQUE(a) a
|
||||||
|
#else
|
||||||
|
#define USAGE_SORT_UNIQUE(a)
|
||||||
|
#endif
|
||||||
#ifdef BB_FEATURE_SORT_REVERSE
|
#ifdef BB_FEATURE_SORT_REVERSE
|
||||||
#define USAGE_SORT_REVERSE(a) a
|
#define USAGE_SORT_REVERSE(a) a
|
||||||
#else
|
#else
|
||||||
#define USAGE_SORT_REVERSE(a)
|
#define USAGE_SORT_REVERSE(a)
|
||||||
#endif
|
#endif
|
||||||
#define sort_trivial_usage \
|
#define sort_trivial_usage \
|
||||||
"[-n]" USAGE_SORT_REVERSE(" [-r]") " [FILE]..."
|
"[-n" USAGE_SORT_REVERSE("r") USAGE_SORT_UNIQUE("u") "] [FILE]..."
|
||||||
#define sort_full_usage \
|
#define sort_full_usage \
|
||||||
"Sorts lines of text in the specified files"
|
"Sorts lines of text in the specified files\n\n"\
|
||||||
|
"Options:\n" \
|
||||||
|
USAGE_SORT_UNIQUE("\t-u\tsuppress duplicate lines\n") \
|
||||||
|
USAGE_SORT_REVERSE("\t-r\tsort in reverse order\n") \
|
||||||
|
"\t-n\tsort numerics"
|
||||||
#define sort_example_usage \
|
#define sort_example_usage \
|
||||||
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
|
"$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
|
||||||
"a\n" \
|
"a\n" \
|
||||||
|
Loading…
Reference in New Issue
Block a user