On 11/18/2013 09:01 AM, Eric Blake wrote:
On 11/18/2013 08:39 AM, Ryota Ozaki wrote:
> This patch shuts up the following warning of clang
> on Mac OS X:
Not just clang, but also gcc.
>
> virsh.c:2761:22: error: assigning to 'char *' from 'const char [6]'
discards qualifiers
> [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
> rl_readline_name = "virsh";
> ^ ~~~~~~~
>
> The warning happens because rl_readline_name on Mac OS X is still
> 'char *', while it is 'const char *' on most platforms.
This is the real bug we are working around, not clang.
What version of libreadline is installed on your platform? I'm okay
with the patch, but not the commit message - I want to accurately report
that WHY we are tweaking things is to work around a bug in older
libreadline (which has nothing to do with which compiler is used, and
everything to do with the buggy older header).
Actually, the patch itself also needs a tweak:
- /* Allow conditional parsing of the ~/.inputrc file. */
- rl_readline_name = "virsh";
+ /* Allow conditional parsing of the ~/.inputrc file.
+ * XXX: the cast is necessary for Mac OS X to slient
No need for 'XXX:', as there is nothing to fix further once we document
why we have a cast.
s/slient/silence/
+ * clang's warning. On Mac OS X, rl_readline_name is
+ * char * while on most platforms it's const char *.
Again, I think it's better to call out the faulty version of libreadline
with the problem, rather than which compiler chokes on it.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org