# 3 "msg_346.c"
typedef unsigned long size_t;
void *memchr(const void *, int, size_t);
char *strchr(const char *, int);
char *strpbrk(const char *, const char *);
char *strrchr(const char *, int);
char *strstr(const char *, const char *);
void take_const_char_ptr(const char *);
void take_char_ptr(char *);
void
example(void)
{
const char *ccp = "const char *";
char *cp = "char *";
ccp = strchr(ccp, 'c');
ccp = strchr(cp, 'c');
cp = strchr(ccp, 'c');
cp = strchr(cp, 'c');
take_const_char_ptr(strchr(ccp, 'c'));
take_const_char_ptr(strchr(cp, 'c'));
take_char_ptr(strchr(ccp, 'c'));
take_char_ptr(strchr(cp, 'c'));
take_const_char_ptr(strchr("literal", 'c'));
take_char_ptr(strchr("literal", 'c'));
}
void
all_functions(void)
{
take_char_ptr(memchr("string", 'c', 7));
take_char_ptr(strchr("string", 'c'));
take_char_ptr(strpbrk("string", "c"));
take_char_ptr(strrchr("string", 'c'));
take_char_ptr(strstr("string", "c"));
}
void
edge_cases(void)
{
take_char_ptr(strchr());
}
void *bsearch(const void *key, const void *base, size_t nmemb, size_t size,
int (*compar) (const void *, const void *));
int cmp(const void *, const void *);
void take_void_ptr(void *);
void take_const_void_ptr(const void *);
void
bsearch_example(void)
{
int arr[] = { 1 };
const int const_arr[] = { 1 };
take_const_void_ptr(bsearch("", const_arr, 4, 1, cmp));
take_const_void_ptr(bsearch("", arr, 4, 1, cmp));
take_void_ptr(bsearch("", arr, 4, 1, cmp));
take_void_ptr(bsearch("", const_arr, 4, 1, cmp));
}