Esempio n. 1
0
size_t __attribute__((weak)) strcspn(const char *s, const char *reject)
{
	return __strxspn(s, reject, 1);
}
Esempio n. 2
0
/*@
	requires \exists integer i; Length_of_str_is(s,i);
	requires \exists integer i; Length_of_str_is(reject,i);
	requires \separated(s+(0..Length(s)), reject+(0..Length(reject)));
	assigns \nothing;
	ensures \forall integer i; 0 <= i < \result ==> !char_in_str(reject, s[i]);
	ensures char_in_str(reject, s[\result]);
	ensures 0 <= \result <= Length(s);

@*/
size_t strcspn(const char *s, const char *reject)
{
	return __strxspn(s, reject, 1);
}
Esempio n. 3
0
char *strpbrk(const char *s, const char *accept)
{
	const char *ss = s + __strxspn(s, accept, 1);

	return *ss ? (char *)ss : NULL;
}
Esempio n. 4
0
/*@
	requires \exists integer i; Length_of_str_is(s,i);
	requires \exists integer i; Length_of_str_is(accept,i);
	requires \separated(s+(0..Length(s)), accept+(0..Length(accept)));
	assigns \nothing;
	ensures \forall integer i; 0 <= i < \result ==> char_in_str(accept, s[i]);
	ensures !char_in_str(accept, s[\result]);
	ensures 0 <= \result <= Length(s);
@*/
size_t strspn(const char *s, const char *accept)
{
	return __strxspn(s, accept, 0);
}