6 /* mallocs an mem block and fills it with A. A needs to be a zero
7 terminated string. The A string chars, minus the terminating zero
8 are copied into the returned mem block. */
10 create_mem (const char *a
)
12 size_t len
= strlen (a
);
13 void *mem
= malloc (len
);
24 haystack
= create_mem ("a");
25 needle
= create_mem ("a");
26 assert (memmem (haystack
, 0, needle
, 0) == haystack
);
27 assert (memmem (haystack
, 1, needle
, 0) == haystack
);
28 assert (memmem (haystack
, 0, needle
, 1) == NULL
);
29 assert (memmem (haystack
, 1, needle
, 1) == haystack
);
33 haystack
= create_mem ("abc");
34 needle
= create_mem ("bc");
35 assert (memmem (haystack
, 3, needle
, 0) == haystack
);
36 assert (memmem (haystack
, 3, needle
, 2) == haystack
+ 1);
37 assert (memmem (haystack
+ 1, 2, needle
, 2) == haystack
+ 1);
38 assert (memmem (haystack
+ 2, 1, needle
, 2) == NULL
);
42 haystack
= create_mem ("abcabcabc");
43 needle
= create_mem ("bca");
44 assert (memmem (haystack
, 9, needle
, 3) == haystack
+ 1);
48 haystack
= create_mem ("abcabcabc");
49 needle
= create_mem ("bcad");
50 assert (memmem (haystack
, 9, needle
, 4) == NULL
);
54 haystack
= create_mem ("xxxxxxxxxxxxxxxxxABC");
55 needle
= create_mem ("ABCD");
56 assert (memmem (haystack
, 20, needle
, 2) == haystack
+ 17);
57 assert (memmem (haystack
+ 3, 17, needle
, 2) == haystack
+ 17);
58 assert (memmem (haystack
+ 15, 5, needle
, 2) == haystack
+ 17);
59 assert (memmem (haystack
, 20, needle
, 3) == haystack
+ 17);
60 assert (memmem (haystack
+ 3, 17, needle
, 3) == haystack
+ 17);
61 assert (memmem (haystack
+ 15, 5, needle
, 3) == haystack
+ 17);
62 assert (memmem (haystack
, 20, needle
, 4) == NULL
);
63 assert (memmem (haystack
+ 3, 5, needle
, 4) == NULL
);
64 assert (memmem (haystack
+ 15, 5, needle
, 4) == NULL
);