diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-03-06 08:17:54 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-03-06 08:17:54 +0000 |
commit | a36e0c78c90917c4d5cc78f67b3808913795f264 (patch) | |
tree | 81deaaa0cacb33bd81163aac0a358755c85df2cd /missing/strstr.c | |
parent | 4a7d313e4a263f5c2f2f42dd573fa612f0d0c0a7 (diff) | |
download | ruby-a36e0c78c90917c4d5cc78f67b3808913795f264.tar.gz |
* parse.y (primary): rescue and ensure clauses should be allowed
to appear in singleton method body.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'missing/strstr.c')
-rw-r--r-- | missing/strstr.c | 83 |
1 files changed, 18 insertions, 65 deletions
diff --git a/missing/strstr.c b/missing/strstr.c index c54349983e..1673518f06 100644 --- a/missing/strstr.c +++ b/missing/strstr.c @@ -1,73 +1,26 @@ -/* - * strstr.c -- - * - * Source code for the "strstr" library routine. - * - * Copyright 1988-1991 Regents of the University of California - * Permission to use, copy, modify, and distribute this - * software and its documentation for any purpose and without - * fee is hereby granted, provided that the above copyright - * notice appears in all copies. The University of California - * makes no representations about the suitability of this - * software for any purpose. It is provided "as is" without - * express or implied warranty. - */ - -#ifndef lint -static char rcsid[] = "$Header$ SPRITE (Berkeley)"; -#endif /* not lint */ - -/* - *---------------------------------------------------------------------- - * - * strstr -- - * - * Locate the first instance of a substring in a string. - * - * Results: - * If string contains substring, the return value is the - * location of the first matching instance of substring - * in string. If string doesn't contain substring, the - * return value is 0. Matching is done on an exact - * character-for-character basis with no wildcards or special - * characters. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ +/* public domain rewrite of strstr(3) */ char * -strstr(string, substring) - register char *string; /* String to search. */ - char *substring; /* Substring to try to find in string. */ +strstr(haystack, needle) + char *haystack, *needle; { - register char *a, *b; - - /* First scan quickly through the two strings looking for a - * single-character match. When it's found, then compare the - * rest of the substring. - */ + char *hend; + char *a, *b; - b = substring; - if (*b == 0) { - return string; - } - for ( ; *string != 0; string += 1) { - if (*string != *b) { - continue; - } - a = string; - while (1) { - if (*b == 0) { - return string; - } - if (*a++ != *b++) { - break; + if (*needle == 0) return haystack; + hend = haystack + strlen(haystack) - strlen(needle) + 1; + while (haystack < hend) { + if (*haystack == *needle) { + a = haystack; + b = needle; + for (;;) { + if (*b == 0) return haystack; + if (*a++ != *b++) { + break; + } } } - b = substring; + haystack++; } - return (char *) 0; + return 0; } |