diff options
-rw-r--r-- | coreutils/Config.in | 21 | ||||
-rw-r--r-- | coreutils/sort.c | 11 |
2 files changed, 26 insertions, 6 deletions
diff --git a/coreutils/Config.in b/coreutils/Config.in index 50e605d..31e97c1 100644 --- a/coreutils/Config.in +++ b/coreutils/Config.in @@ -436,7 +436,7 @@ config CONFIG_SORT help sort is used to sort lines of text in specified files. -config CONFIG_SORT_BIG +config CONFIG_FEATURE_SORT_BIG bool " full SuSv3 compliant sort (Support -ktcsbdfiozgM)" default y depends on CONFIG_SORT @@ -547,6 +547,25 @@ config CONFIG_TR tr is used to squeeze, and/or delete characters from standard input, writing to standard output. +config CONFIG_FEATURE_TR_CLASSES + bool " Enable character classes (such as [:upper:])" + default n + depends on CONFIG_TR + help + Enable character classes, enabling commands such as: + tr [:upper:] [:lower:] to convert input into lowercase. + +config CONFIG_FEATURE_TR_EQUIV + bool " Enable equivalence classes" + default n + depends on CONFIG_TR + help + Enable equivalence classes, which essentially add the enclosed + character to the current set. For instance, tr [=a=] xyz would + replace all instances of 'a' with 'xyz'. This option is mainly + useful for cases when no other way of expressing a character + is possible. + if CONFIG_HUSH || CONFIG_LASH || CONFIG_MSH config CONFIG_TRUE default y diff --git a/coreutils/sort.c b/coreutils/sort.c index 6d8a552..ce51bc1 100644 --- a/coreutils/sort.c +++ b/coreutils/sort.c @@ -56,7 +56,7 @@ static int global_flags; #define FLAG_bb 32768 /* Ignore trailing blanks */ -#ifdef CONFIG_SORT_BIG +#ifdef CONFIG_FEATURE_SORT_BIG static char key_separator; static struct sort_key @@ -154,7 +154,7 @@ static int compare_keys(const void *xarg, const void *yarg) int flags=global_flags,retval=0; char *x,*y; -#ifdef CONFIG_SORT_BIG +#ifdef CONFIG_FEATURE_SORT_BIG struct sort_key *key; for(key=key_list;!retval && key;key=key->next_key) { @@ -178,7 +178,7 @@ static int compare_keys(const void *xarg, const void *yarg) case 0: retval=strcmp(x,y); break; -#ifdef CONFIG_SORT_BIG +#ifdef CONFIG_FEATURE_SORT_BIG case FLAG_g: { char *xx,*yy; @@ -232,6 +232,7 @@ static int compare_keys(const void *xarg, const void *yarg) /* Perform fallback sort if necessary */ if(!retval && !(global_flags&FLAG_s)) retval=strcmp(*(char **)xarg, *(char **)yarg); +//dprintf(2,"reverse=%d\n",flags&FLAG_r); return ((flags&FLAG_r)?-1:1)*retval; } @@ -248,7 +249,7 @@ int sort_main(int argc, char **argv) line=index(optlist,c); if(!line) bb_show_usage(); switch(*line) { -#ifdef CONFIG_SORT_BIG +#ifdef CONFIG_FEATURE_SORT_BIG case 'o': if(outfile) bb_error_msg_and_die("Too many -o."); outfile=bb_xfopen(optarg,"w"); @@ -308,7 +309,7 @@ int sort_main(int argc, char **argv) } fclose(fp); } -#ifdef CONFIG_SORT_BIG +#ifdef CONFIG_FEATURE_SORT_BIG /* if no key, perform alphabetic sort */ if(!key_list) add_key()->range[0]=1; /* handle -c */ |