The malloc code was done by Olaf Dreesen, who also helped with the SPARC start code and fork(). Olaf also did the printf and scanf routines and he implemented pthreads (wow!) and his now writing a dynamic linker, and he ported the diet libc to S/390. Thomas Oggriseg ported the diet libc to PA-RISC and fixed a few things. I initially took some syscalls from Redhat minilibc, but the code has been completely replaced now. I initially took localtime and the directory reading routines from uClibc, but the code has been completely replaced now. syslog and crypt were contributed by René Müller. Jeff Garzik contributed {get,set}{pw,gr,sp}ent. Uwe Ohse went through the code and fixed many bugs. Frank Klemm contributed the math library and a lot of correctness and smallness patches and rewrote many functions in ix86 assembly language. Erik Troan found several important bugs and sent in patches to fix them. I also grabbed code from glibc (mostly assembly routines), and looked at the OpenBSD libc for inspiration.