If you have ringtones in your iPhone that were not inserted by iTunes, very likely they will vanish every time you perform any kind os iTunes sync.
When a sync is performed, iTunes recreates the ringtone configuration file "/private/var/root/Media/iTunes_Control/iTunes/Ringtones.plist" and removes all ringtones entries not "managed" by iTunes.
Fortunately the actual ringtone (xxxx.m4a) files located in "/private/var/root/Media/iTunes_Control/Ringtones" are not erased.
There are file system tricks using symbolic links that may help avoid the erasure of Ringtones.plist but I decided to take another approach to address the problem.
fixringt was written to recreate the ringtone configuration file after a sync.
fixringt is also handy when new ringtones are added to "/private/var/root/Media/iTunes_Control/Ringtones".
It not only creates the configuration file but also creates a xxxx.m4r file for every xxxx.m4a file found, and adujsts the ringtone filename when required.
When fixringt creates the ringtone configuration file, it reads the song/ringtone name from the title field in the .m4a or .m4r file.