Back out rev 1.19 because

1) It breaks uniq for real life languages when "substitute" directive used in
the collating table.
2) It breaks uniq usage in tool chain with other localized utilities which
use collate.
3) To follow LC_COLLATE it is directly allowed for uniq
by POSIX P1003.1 Draft7 (7.3.2). It means that rev 1.19 gains no additional
POSIX conformance.
This commit is contained in:
Andrey A. Chernov 2002-06-06 13:44:14 +00:00
parent 2b488685e3
commit e12155c834
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=97929

View File

@ -67,6 +67,7 @@ void show(FILE *, char *);
char *skip(char *);
void obsolete(char *[]);
static void usage(void);
int stricoll(char *, char*);
int
main (argc, argv)
@ -151,9 +152,9 @@ main (argc, argv)
/* If different, print; set previous to new value. */
if (iflag)
comp = strcasecmp(t1, t2);
comp = stricoll(t1, t2);
else
comp = strcmp(t1, t2);
comp = strcoll(t1, t2);
if (comp) {
show(ofp, prevline);
@ -251,3 +252,18 @@ usage()
"usage: uniq [-c | -d | -u] [-i] [-f fields] [-s chars] [input [output]]\n");
exit(1);
}
int
stricoll(s1, s2)
char *s1, *s2;
{
char *p, line1[MAXLINELEN], line2[MAXLINELEN];
for (p = line1; *s1; s1++)
*p++ = tolower((unsigned char)*s1);
*p = '\0';
for (p = line2; *s2; s2++)
*p++ = tolower((unsigned char)*s2);
*p = '\0';
return strcoll(line1, line2);
}