Use collate for alpha character ranges

This commit is contained in:
ache 1996-08-13 14:33:05 +00:00
parent c7f1966900
commit 9e33f9be1e
2 changed files with 26 additions and 1 deletions

View File

@ -21,6 +21,9 @@
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#ifdef __FreeBSD__
#include <locale.h>
#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -671,6 +674,27 @@ lex()
}
else
c2 = c;
#ifdef __FreeBSD__
{ token c3;
if (collate_range_cmp(c, c2) > 0) {
FETCH(c2, "Invalid range");
goto skip;
}
for (c3 = 0; c3 < NOTCHAR; ++c3)
if ( collate_range_cmp(c, c3) <= 0
&& collate_range_cmp(c3, c2) <= 0
) {
setbit(c3, ccl);
if (case_fold)
if (ISUPPER(c3))
setbit(tolower(c3), ccl);
else if (ISLOWER(c3))
setbit(toupper(c3), ccl);
}
}
#else
while (c <= c2)
{
setbit(c, ccl);
@ -681,6 +705,7 @@ lex()
setbit(toupper(c), ccl);
++c;
}
#endif
skip:
;
}

View File

@ -146,7 +146,7 @@ char **argv;
extern char *optarg;
#ifdef __FreeBSD__
(void) setlocale(LC_CTYPE, "");
(void) setlocale(LC_ALL, "");
#endif
#ifdef __EMX__
_response(&argc, &argv);