diff options
author | ache <ache@FreeBSD.org> | 1996-08-11 22:51:00 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1996-08-11 22:51:00 +0000 |
commit | 8affe69b986c0b8bb82151a3b5717f1279fb4864 (patch) | |
tree | e3a45bb03f226bffcc615e7bd211f67122b2c56b /bin/sh/expand.c | |
parent | 3c7673013285ac763e247767e237240275819280 (diff) | |
download | FreeBSD-src-8affe69b986c0b8bb82151a3b5717f1279fb4864.zip FreeBSD-src-8affe69b986c0b8bb82151a3b5717f1279fb4864.tar.gz |
Localize it
Diffstat (limited to 'bin/sh/expand.c')
-rw-r--r-- | bin/sh/expand.c | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/bin/sh/expand.c b/bin/sh/expand.c index a5d69ce..f4cbac6 100644 --- a/bin/sh/expand.c +++ b/bin/sh/expand.c @@ -33,7 +33,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: expand.c,v 1.3 1995/03/01 13:04:15 guido Exp $ + * $Id: expand.c,v 1.4 1995/05/30 00:07:13 rgrimes Exp $ */ #ifndef lint @@ -102,6 +102,7 @@ STATIC struct strlist *expsort(struct strlist *); STATIC struct strlist *msort(struct strlist *, int); STATIC int pmatch(char *, char *); STATIC char *exptilde(char *, int); +STATIC int collcmp (int, int); #else STATIC void argstr(); STATIC void expbackq(); @@ -118,6 +119,7 @@ STATIC struct strlist *expsort(); STATIC struct strlist *msort(); STATIC int pmatch(); STATIC char *exptilde(); +STATIC int collcmp (); #endif /* @@ -1018,6 +1020,40 @@ patmatch(pattern, string) return pmatch(pattern, string); } +STATIC int +collcmp (c1, c2) +int c1, c2; +{ + static char s1[2], s2[2]; + + c1 &= 0xFF; + c2 &= 0xFF; + if (c1 == c2) + return (0); + if ( (isascii(c1) && isascii(c2)) + || (!isalpha(c1) && !isalpha(c2)) + ) + return (c1 - c2); + if (isalpha(c1) && !isalpha(c2)) { + if (isupper(c1)) + return ('A' - c2); + else + return ('a' - c2); + } else if (isalpha(c2) && !isalpha(c1)) { + if (isupper(c2)) + return (c1 - 'A'); + else + return (c1 - 'a'); + } + if (isupper(c1) && islower(c2)) + return (-1); + else if (islower(c1) && isupper(c2)) + return (1); + s1[0] = c1; + s2[0] = c2; + return strcoll(s1, s2); +} + STATIC int pmatch(pattern, string) @@ -1086,7 +1122,9 @@ pmatch(pattern, string) p++; if (*p == CTLESC) p++; - if (chr >= c && chr <= *p) + if ( collcmp(chr, c) >= 0 + && collcmp(chr, *p) <= 0 + ) found = 1; p++; } else { |