summaryrefslogtreecommitdiff
path: root/contrib/global/lib/locatestring.c
diff options
context:
space:
mode:
authorHidetoshi Shimokawa <simokawa@FreeBSD.org>1999-01-18 06:59:18 +0000
committerHidetoshi Shimokawa <simokawa@FreeBSD.org>1999-01-18 06:59:18 +0000
commit3ba3e2cc4b63fa16707f51e735e751e62dd9526e (patch)
tree2d073c94248fff7dcaa8a3b1356933e1dcd784db /contrib/global/lib/locatestring.c
parent0823b5bf088ea8520ea23a0c424e4ecab62491d5 (diff)
Notes
Diffstat (limited to 'contrib/global/lib/locatestring.c')
-rw-r--r--contrib/global/lib/locatestring.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/contrib/global/lib/locatestring.c b/contrib/global/lib/locatestring.c
index 230ccce5149a..76285994befb 100644
--- a/contrib/global/lib/locatestring.c
+++ b/contrib/global/lib/locatestring.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 1997 Shigio Yamaguchi. All rights reserved.
+ * Copyright (c) 1996, 1997, 1998 Shigio Yamaguchi. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * locatestring.c 20-Oct-97
+ * locatestring.c 25-Jul-98
*
*/
#include <string.h>
@@ -40,35 +40,36 @@
*
* i) string string
* i) pattern pattern
- * i) flag 0: match first
- * 1: match only at first column
- * 2: match last
- * 3: match only at last column
+ * i) flag MATCH_FIRST: match first
+ * MATCH_AT_FIRST: match only at first column
+ * MATCH_LAST: match last
+ * MATCH_AT_LAST: match only at last column
* r) pointer or NULL
*
* This function is made to avoid compatibility problems.
*/
char *
locatestring(string, pattern, flag)
-char *string;
-char *pattern;
+const char *string;
+const char *pattern;
int flag;
{
int c = *pattern;
- char *p = (char *)0;
+ int slen, plen;
+ const char *p = NULL;
- if (flag == 3 && strlen(string) > strlen(pattern)) {
- string += strlen(string) - strlen(pattern);
- }
+ plen = strlen(pattern);
+ if (flag == MATCH_AT_LAST && (slen = strlen(string)) > plen)
+ string += (slen - plen);
for (; *string; string++) {
if (*string == c)
- if (!strncmp(string, pattern, strlen(pattern))) {
+ if (!strncmp(string, pattern, plen)) {
p = string;
- if (flag == 0)
+ if (flag == MATCH_FIRST)
break;
}
- if (flag == 1 || flag == 3)
+ if (flag == MATCH_AT_FIRST || flag == MATCH_AT_LAST)
break;
}
- return p;
+ return (char *)p;
}