Home > Mobile >  How do I remove extra whitespaces created by iniparser?
How do I remove extra whitespaces created by iniparser?

Time:12-23

Recently I'm taking iniparser as primary choice. However, with its API creating too many whitespaces resulting in waste of memory.

For example, iniparser_set() will create

/*test.ini*/
[section]
key                               = value

instead

/*test.ini*/
[section]
key = value

From the point of embedded system's view, removing those extra whitespaces is a great thing for saving memory space. So, how to fix it?

CodePudding user response:

As per the source code of iniparser (https://github.com/ndevilla/iniparser/blob/deb85ad4936d4ca32cc2260ce43323d47936410d/src/iniparser.c#L312):

in iniparser_dumpsection_ini function, there is this line:

fprintf(f,
    "%-30s = %s\n",
    d->key[j] seclen 1,
    d->val[j] ? d->val[j] : "");

As you can see, key is printed with format specifier %-30s which is probably causing this issue.

So, you can clone the repo source code and make the changes. Example, replace format specifier with %s, like:

fprintf(f,
    "%s = %s\n",        // CHANGE HERE
    d->key[j] seclen 1,
    d->val[j] ? d->val[j] : "");
  • Related