Universal escaping in KConfigINI: Summary and patch

Andreas Hartmetz ahartmetz at gmail.com
Thu May 24 02:55:56 BST 2007


Hello list,

Here is the proposed patch to implement escaping in KConfigINI to make it safe 
to pass any QString as a group name, key or value. Values have always been 
more or less safe, except for control chars (chars < 32), which were 
previously written literally. This was not really "dangerous", but might lead 
to weird effects when displaying or processing a config file with arbitrary 
tools.

The patch also drops special treatment for group names in which '[' and ']' 
were encoded as "[[" and "]]" respectively.
It encodes as \x<nn> (<nn> being two lowercase hex chars):
- chars with value < 32 except for '\n' (LF), '\r' (CR), and '\t' (tab).
  There already are standard encodings for them, "\n", "\r", and "\t".
- '['
- ']'
- '='

This has the advantages of safety and making .INI-format config files 
extremely easy to parse because all chars with special meaning will, where 
they appear literally, always have their special meaning. This is relevant 
for config file conversion scripts that applications use to upgrade their 
config files to a new format when necessary.

I hope this is close enough to what was discussed on IRC.
The patch also contains some porting to the new QByteArray, which is 
automatically zero-terminated, and has a constData() function that avoids 
deep copying the raw data.

Cheers,
Andreas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kconfigini.cpp.patch
Type: text/x-diff
Size: 13400 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20070524/1fb9cd96/attachment.patch>


More information about the kde-core-devel mailing list