int x1f4_find_??word (void *, const unsigned char *, unsigned, void **)
looks for some $1 associative array item matching the null ended string $2 key. The key is compared with some null ended string record in the data of examined associative array element, record to be found $3 bytes after to the start of element data. Upon success, the start address of the found associative array element data is stored at $4.
Note that the examined record (in the associative array element) is a null ended string, and not a pointer to a null ended string.
x1f4_find_??word(a1, a2, a3, a4)
is equivalent with:
x1f4_find_??line(a1, a2, a3, compare, a4)
where compare
is:
int compare(void *looked_for_key, void *associative_array_stored_key) { int e; unsigned char *s, *v; s = looked_for_key; v = associative_array_stored_key; while (1) { unsigned char c; c = *s; if (c ^ *v) { e = (int) c - (int) *v; break; } else { if (c) { s++; v++; } else { e = 0; break; } } } return e; }
returns 0 if no match was found, non zero otherwise