> Currently {{{v.out.svg}}} interprets its {{{type}}} option in a
> non-standard way, namely:
[...]
> Hence, I suggest the following patch.
> Since the patch breaks the compatibility with the former versions of
> the module, I believe it should only be considered for GRASS 7.
... Though, of course, anyone interested is encouraged to test
it just now. I have only a few vector maps in my disposal, and
they're either too simple, or too large, so I haven't tested
this change much myself.
Patch redone for current 6.5/7 (and uploaded uncompressed for easier
review). Compiling, I get this warning:
{{{
main.c:122: warning: assignment from incompatible pointer type
}}}
Replying to [comment:1 neteler]:
> Patch redone for current 6.5/7 (and uploaded uncompressed for easier
review). Compiling, I get this warning:
{{{
main.c:122: warning: assignment from incompatible pointer type
}}}
The ->answers field is {{{char **}}} which isn't compatible with {{{const
char **}}}.
You can implicitly cast {{{char *}}} to {{{const char *}}}, but not with
additional levels of indirection. In theory, a {{{const char *}}} could be
wider than a {{{char *}}}, so you can cast these types, but not pointers
to them.
Replying to [comment:2 glynn]:
> Replying to [comment:1 neteler]:
>> Patch redone for current 6.5/7 (and uploaded uncompressed for easier
review). Compiling, I get this warning:
>> {{{
>> main.c:122: warning: assignment from incompatible pointer type
>> }}}
> The ->answers field is {{{char **}}} which isn't compatible with
{{{const char **}}}.
> You can implicitly cast {{{char *}}} to {{{const char *}}}, but not with
additional levels of indirection. In theory, a {{{const char *}}} could be
wider than a {{{char *}}}, so you can cast these types, but not pointers
to them.
Is this actually permitted by some standard (either C89 or C99)?
> {{{char * const *}}} should work.
Do I understand it correctly that it means variable pointer to constant
pointer to variable character data?
I think that the part of code in question, once extracted into a separate
function, could occasionally be useful when processing constant data. And
I'm quite surprised that two functions would be necessary to achieve that
instead of just one.
> > You can implicitly cast {{{char *}}} to {{{const char *}}}, but not
with additional levels of indirection. In theory, a {{{const char *}}}
could be wider than a {{{char *}}}, so you can cast these types, but not
pointers to them.
>
> Is this actually permitted by some standard (either C89 or C99)?
Is what permitted? Implicit casts or pointer size varying depending upon
whether the target is "const"? The answers are "sometimes" and "yes"
respectively, for both C89 and C99.
> > {{{char * const *}}} should work.
>
> Do I understand it correctly that it means variable pointer to constant
pointer to variable character data?