The string library.
Many of the files in this subdirectory are equivalent to well-known functions that appear in most C string libraries. For those, there is documentation available in most compiler handbooks.
On the other hand, some of the files are MySQL additions or improvements. Often the MySQL changes are attempts to optimize the standard libraries. It doesn't seem that anyone tried to optimize for recent Pentium class processors, though.
The .C files are:
bchange.c --- short replacement routine written by Monty Widenius in 1987
bcmp.c --- binary compare, rarely used
bcopy-duff.c --- block copy: attempt to copy memory blocks faster than cmemcpy
bfill.c --- byte fill, to fill a buffer with (length) copies of a byte
bmove.c --- block move
bmove512.c --- "should be the fastest way to move a multiple of 512 bytes"
bmove_upp.c --- bmove.c variant, starting with last byte
bzero.c --- something like bfill with an argument of 0
conf_to_src.c --- reading a configuration file
ctype*.c --- string handling programs for each char type MySQL handles
decimal.c --- for decimal and numeric conversions
do_ctype.c --- display case-conversion and sort-conversion tables
dump_map.c --- standalone file
int2str.c --- integer-to-string
is_prefix.c --- checks whether string1 starts with string2
llstr.c --- convert long long to temporary-buffer string, return pointer
longlong2str.c --- ditto, but to argument-buffer
memcmp.c --- memory compare
memcpy.c --- memory copy
memset.c --- memory set
my_strtoll10.c --- longlong2str for radix 10
my_vsnprintf.c --- variant of printf
r_strinstr.c --- see if one string is within another
str2int.c --- convert string to integer
strappend.c --- fill up a string to n characters
strcat.c --- concatenate strings
strcend.c --- point to where a character C occurs within str, or NULL
strchr.c --- point to first place in string where character occurs
strcmp.c --- compare two strings
strcont.c --- point to where any one of a set of characters appears
strend.c --- point to the '\0' byte which terminates str
strfill.c --- fill a string with n copies of a byte
strinstr.c --- find string within string
strlen.c --- return length of string in bytes
strmake.c --- create new string from old string with fixed length, append end \0 if needed
strmov.c --- move source to dest and return pointer to end
strnlen.c --- return min(length of string, n)
strnmov.c --- move source to dest for source size, or for n bytes
strrchr.c --- find a character within string, searching from end
strstr.c --- find an instance of pattern within source
strto.c --- string to long, to long long, to unsigned long, etc.
strtod.c --- string to double
strtol.c --- string to long
strtoll.c --- string to long long
strtoul.c --- string to unsigned long
strtoull.c --- string to unsigned long long
strxmov.c --- move a series of concatenated source strings to dest
strxnmov.c --- like strxmov.c but with a maximum length n
str_test.c --- test of all the string functions encoded in assembler
uca-dump.c --- shows unicode collation algorithm dump
udiv.c --- unsigned long divide, for operating systems that don't support these
utr11-dump.c --- dump east Asian wide text file
xml.c --- read and parse XML strings; used to read character definition information stored in /sql/share/charsets
There are also four .ASM files --- macros.asm, ptr_cmp.asm, strings.asm, and strxmov.asm --- which can replace some of the C-program functions. But again, they look like optimizations for old members of the Intel processor family.