25 Oct, 2008, Omega wrote in the 1st comment:
Votes: 0
Well ya'll, I'll start this off by saying, I just recently upgraded my computer, and with that, comes a fresh install.

With that, fedora-core 9, and I started getting wonderful new warnings and errors that weren't present when I was compiling with 4.1.0. Its been awhile since I did anything of the sort.

Anyways, after sifting through hundreds of warnings about depreciated char *'s (yay), I finaly got to the IMC, and let me say, it isn't pretty!

Well, honestly, not that bad. Infact, here it is.

imc.c:4221:75: warning: multi-character character constant
imc.c:4860:69: warning: multi-character character constant
imc.c:4867:69: warning: multi-character character constant
imc.c:4874:69: warning: multi-character character constant
imc.c:4881:69: warning: multi-character character constant
imc.c:4888:69: warning: multi-character character constant
imc.c:4895:69: warning: multi-character character constant
imc.c:4902:69: warning: multi-character character constant
imc.c: In function ‘void imc_request_keepalive()’:
imc.c:2603: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imc_parse_packet(const char*)’:
imc.c:2968: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imccommand(CHAR_DATA*, char*)’:
imc.c:5390: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:5391: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imcsetup(CHAR_DATA*, char*)’:
imc.c:5454: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:5455: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:5456: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:5707: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imctell(CHAR_DATA*, char*)’:
imc.c:5855: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imcfinger(CHAR_DATA*, char*)’:
imc.c:6070: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:6187: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imcconfig(CHAR_DATA*, char*)’:
imc.c:6337: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:6433: warning: deprecated conversion from string constant to ‘char*’
imc.c:6518: warning: deprecated conversion from string constant to ‘char*’
imc.c:6534: warning: deprecated conversion from string constant to ‘char*’
imc.c:6597: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imcignore(CHAR_DATA*, char*)’:
imc.c:6607: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:6664: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imcban(CHAR_DATA*, char*)’:
imc.c:6674: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:6723: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imc_deny_channel(CHAR_DATA*, char*)’:
imc.c:6732: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imcpermset(CHAR_DATA*, char*)’:
imc.c:6846: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imcchanwho(CHAR_DATA*, char*)’:
imc.c:6946: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:6970: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imcremoteadmin(CHAR_DATA*, char*)’:
imc.c:7000: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:7001: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:7002: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c: In function ‘void imccedit(CHAR_DATA*, char*)’:
imc.c:7148: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:7149: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:7318: warning: deprecated conversion from string constant to ‘char*’
imc.c:7355: warning: deprecated conversion from string constant to ‘char*’
imc.c: In function ‘void imchedit(CHAR_DATA*, char*)’:
imc.c:7364: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:7365: error: invalid conversion from ‘const char*’ to ‘char*’
imc.c:7410: warning: deprecated conversion from string constant to ‘char*’


Notibly, as you can see, it doesn't natively compile as it would normally, without all the warnings and errors.

I was wondering if anyone has done any work on this already towards correcting these issue's for future upgrades, and if they are done, whats the fix. Working 7 days on, 4 off, but those being family days, I lack the good ole time it takes to sit back and debug all these new fancy g++ warnings/errors.

If anyone has any update on this or recommendations, I'd be glad to hear it.

Cheers.
25 Oct, 2008, Guest wrote in the 2nd comment:
Votes: 0
Are you sure you're using the latest updated version? The files I have that are labeled as client 2.2 work warning free on FC9 with g++ 4.3.0. That should be the client version available from the repository.
25 Oct, 2008, Omega wrote in the 3rd comment:
Votes: 0
yup, newest and latest/greatest version, downloaded fresh from mudbytes repository. its why I asked as it says its good, but explodes on my system.

I even went as far as downloading the file again to check, one good thing came from it, it stopped giving warnings about the multi-byte character symbols. But still all the error: invalid conversion from ‘const char*’ to ‘char*’, errors.

so fc9 + g++ 4.3.0 = no go, atleast for me.. yay me.
25 Oct, 2008, quixadhal wrote in the 4th comment:
Votes: 0
The multi-byte character junk (and what you have in the error message output) is because your system is set to some locale other than "C". If you don't actually USE locale settings, you can set your environmental variables in your .bashrc file (or wherever):

export LANG=C

Of course, if you actually USE extended character sets, that won't work. I don't, and I wish modern linux installations would stop assuming I care about them. :)
25 Oct, 2008, David Haley wrote in the 5th comment:
Votes: 0
I don't think that those warnings have anything to do with the locale:
imc.c:4881:69: warning: multi-character character constant
25 Oct, 2008, quixadhal wrote in the 6th comment:
Votes: 0
Hmmm, maybe. I suppose it could also be someone incorrectly using 'a string' instead of "a string".

GCC let's you get away with some instances of that, typically for making multi-byte characters in UTF-8 or higher…

I think really old C compilers would let you have character constants up to 4 bytes long, since they stored them as integers under the hood.
25 Oct, 2008, David Haley wrote in the 7th comment:
Votes: 0
Agreed, I think that those are much more likely possibilities.
0.0/7