summaryrefslogtreecommitdiff
path: root/src/string/strpbrk.c
blob: 20e07aa35772a9263d9baaefa0a5d4324cb2a3c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <string.h>
#include "_safety.h"

/** count matching characters **/

char * strpbrk(const char *s1, const char *s2)
{
	size_t i;

	SIGNAL_SAFE(0);
	ASSERT_NONNULL(s1);
	ASSERT_NONNULL(s2);
	/* TODO: two dangerous reads */
	/* no modifcation, overlap is OK */

	for (i = 0; i < strlen (s1); i++) {
		if (strchr(s2, s1[i]) != NULL) {
			return (char*)s1 + i;
		}
	}

	return NULL;
}

CHECK_2(char *, 0, strpbrk, const char *, const char *)

/***
locates the first occurence in ARGUMENT(s1) of any character in ARGUMENT(s2).
***/

/*
RETURN_FAILURE(CONSTANT(NULL));
RETURN_SUCCESS(a pointer to the located character);
STDC(1)
*/