From 5187e4640442f755b8d24c9ba837d75f61a09c93 Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 22 Feb 1989 16:16:11 +0000 Subject: [PATCH] speeded up a bit --- lang/cem/libcc/gen/strcat.c | 3 ++- lang/cem/libcc/gen/strcmp.c | 20 +++++++------------- lang/cem/libcc/gen/strlen.c | 14 +++++++------- lang/cem/libcc/gen/strncat.c | 4 +++- lang/cem/libcc/gen/strncmp.c | 25 +++++++++++-------------- 5 files changed, 30 insertions(+), 36 deletions(-) diff --git a/lang/cem/libcc/gen/strcat.c b/lang/cem/libcc/gen/strcat.c index f3aa4e5a1..5856d6ac0 100644 --- a/lang/cem/libcc/gen/strcat.c +++ b/lang/cem/libcc/gen/strcat.c @@ -7,8 +7,9 @@ register char *s1, *s2; char *original = s1; /* Find the end of s1. */ - while (*s1 != 0) s1++; + while (*s1++ != 0) ; + s1--; /* Now copy s2 to the end of s1. */ while (*s1++ = *s2++) /* nothing */ ; return(original); diff --git a/lang/cem/libcc/gen/strcmp.c b/lang/cem/libcc/gen/strcmp.c index 4f2c50fb6..7baa6f928 100644 --- a/lang/cem/libcc/gen/strcmp.c +++ b/lang/cem/libcc/gen/strcmp.c @@ -1,16 +1,10 @@ /* $Header$ */ -int strcmp(s1, s2) -register char *s1, *s2; +int +strcmp(s, t) + register char *s, *t; { -/* Compare 2 strings. */ - - for(;;) { - if (*s1 != *s2) { - if (!*s1) return -1; - if (!*s2) return 1; - return(*s1 - *s2); - } - if (*s1++ == 0) return(0); - s2++; - } + while (*s == *t++) + if (*s++ == '\0') + return 0; + return *s - *--t; } diff --git a/lang/cem/libcc/gen/strlen.c b/lang/cem/libcc/gen/strlen.c index 6232d6ca3..a22a05428 100644 --- a/lang/cem/libcc/gen/strlen.c +++ b/lang/cem/libcc/gen/strlen.c @@ -1,11 +1,11 @@ /* $Header$ */ -int strlen(s) -char *s; +int +strlen(s) + char *s; { -/* Return length of s. */ + register char *b = s; - char *original = s; - - while (*s != 0) s++; - return(s - original); + while (*b++) + ; + return b - s - 1; } diff --git a/lang/cem/libcc/gen/strncat.c b/lang/cem/libcc/gen/strncat.c index 96009bbb7..1ab79657d 100644 --- a/lang/cem/libcc/gen/strncat.c +++ b/lang/cem/libcc/gen/strncat.c @@ -10,7 +10,9 @@ int n; if (n <= 0) return(s1); /* Find the end of s1. */ - while (*s1 != 0) s1++; + while (*s1++ != 0) ; + + s1--; /* Now copy s2 to the end of s1. */ while (*s1++ = *s2++) { diff --git a/lang/cem/libcc/gen/strncmp.c b/lang/cem/libcc/gen/strncmp.c index 24e8d6ec3..c0dbc482b 100644 --- a/lang/cem/libcc/gen/strncmp.c +++ b/lang/cem/libcc/gen/strncmp.c @@ -1,19 +1,16 @@ /* $Header$ */ int -strncmp(s1, s2, n) - register char *s1, *s2; - int n; +strncmp(s, t, n) + register char *s, *t; + register int n; { -/* Compare two strings, but at most n characters. */ - - while (n-- > 0) { - if (*s1 != *s2) { - if (!*s1) return -1; - if (!*s2) return 1; - return(*s1 - *s2); + while (n-- > 0) { + if (*s == *t++) { + if (*s++ == '\0') + return 0; + } + else + return *s - *--t; } - if (*s1++ == 0) break; - s2++; - } - return 0; + return 0; } -- 2.34.1