Reply To cazfi
There's no check against multiple ruleset items (of the same type) having the same rule_name.
I did not analyze Freeciv code, but in general programming dictionaries/hashtables are generating numbers for each kind of key, even it is a string. I remember that. So I use spechash with CString as key and CString as value. We store game name as key and ruledit section name as value. When key exist, we print current name (key) with previous section name (value), with the same game name.
EDIT: Remove typo in this comment.
There's no check against multiple ruleset items (of the same type) having the same rule_name.