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.

FixRingTone is a GUI application to prevent/fix those problems.