Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.

Due to spam on this forum, all posts now need moderator approval.

 Entire forum ➜ ROM ➜ Compiling the server ➜ Pesky warnings

Pesky warnings

It is now over 60 days since the last post. This thread is closed.     Refresh page


Pages: 1 2  

Posted by Thrashmodule   USA  (8 posts)  Bio
Date Wed 28 Nov 2007 01:00 AM (UTC)
Message
Hello all I'm new here and was wondering if someone could help me clean up my make a little I'm on Win XP running Cygwin (crypt loaded) and I'm using EmberMUD v. 0.9.45 found here http://www.mudmagic.com/codes/download/diku/merc/rom/ember

here is a snapshot of my make:


$ make
gcc -c -Wall -ggdb -O3 -DLINUX  act_comm.c
gcc -c -Wall -ggdb -O3 -DLINUX  act_info.c
act_info.c: In function `do_password':
act_info.c:3704: warning: implicit declaration of function `crypt'
act_info.c:3704: warning: passing arg 1 of `strcmp' makes pointer from integer w
ithout a cast
act_info.c:3721: warning: assignment makes pointer from integer without a cast
gcc -c -Wall -ggdb -O3 -DLINUX  act_move.c
gcc -c -Wall -ggdb -O3 -DLINUX  act_obj.c
gcc -c -Wall -ggdb -O3 -DLINUX  act_wiz.c
gcc -c -Wall -ggdb -O3 -DLINUX  auction.c
gcc -c -Wall -ggdb -O3 -DLINUX  ban.c
gcc -c -Wall -ggdb -O3 -DLINUX  bank.c
gcc -c -Wall -ggdb -O3 -DLINUX  bit.c
gcc -c -Wall -ggdb -O3 -DLINUX  board.c
gcc -c -Wall -ggdb -O3 -DLINUX  comm.c
comm.c: In function `nanny':
comm.c:1749: warning: implicit declaration of function `crypt'
comm.c:1749: warning: passing arg 1 of `strcmp' makes pointer from integer witho
ut a cast
comm.c:1886: warning: assignment makes pointer from integer without a cast
comm.c:1907: warning: passing arg 1 of `strcmp' makes pointer from integer witho
ut a cast
gcc -c -Wall -ggdb -O3 -DLINUX  const.c
gcc -c -Wall -ggdb -O3 -DLINUX  clan.c
gcc -c -Wall -ggdb -O3 -DLINUX  class.c
gcc -c -Wall -ggdb -O3 -DLINUX  db.c
gcc -c -Wall -ggdb -O3 -DLINUX  factions.c
gcc -c -Wall -ggdb -O3 -DLINUX  fight.c
gcc -c -Wall -ggdb -O3 -DLINUX  handler.c
gcc -c -Wall -ggdb -O3 -DLINUX  helpolc.c
gcc -c -Wall -ggdb -O3 -DLINUX  interp.c
gcc -c -Wall -ggdb -O3 -DLINUX  magic.c
magic.c: In function `spell_locate_object':
magic.c:3398: warning: the address of `can_see', will always evaluate as `true'
gcc -c -Wall -ggdb -O3 -DLINUX  marry.c
gcc -c -Wall -ggdb -O3 -DLINUX  mem.c
gcc -c -Wall -ggdb -O3 -DLINUX  mprog_commands.c
gcc -c -Wall -ggdb -O3 -DLINUX  mprog_procs.c
gcc -c -Wall -ggdb -O3 -DLINUX  mud_progs.c
gcc -c -Wall -ggdb -O3 -DLINUX  olc.c
gcc -c -Wall -ggdb -O3 -DLINUX  olc_act.c
gcc -c -Wall -ggdb -O3 -DLINUX  olc_save.c
gcc -c -Wall -ggdb -O3 -DLINUX  newbits.c
gcc -c -Wall -ggdb -O3 -DLINUX  pty.c
gcc -c -Wall -ggdb -O3 -DLINUX  random.c
gcc -c -Wall -ggdb -O3 -DLINUX  recycle.c
gcc -c -Wall -ggdb -O3 -DLINUX  route_io.c
gcc -c -Wall -ggdb -O3 -DLINUX  save.c
gcc -c -Wall -ggdb -O3 -DLINUX  skills.c
gcc -c -Wall -ggdb -O3 -DLINUX  socialolc.c
gcc -c -Wall -ggdb -O3 -DLINUX  ssm.c
gcc -c -Wall -ggdb -O3 -DLINUX  string.c
gcc -c -Wall -ggdb -O3 -DLINUX  todoolc.c
gcc -c -Wall -ggdb -O3 -DLINUX  update.c
rm -f ember
gcc -O2 -DLINUX -o ember act_comm.o     act_info.o      act_move.o act_obj.oact_
wiz.o   auction.o ban.o         bank.o          bit.o board.o   comm.o  const.o
clan.o  class.o         db.o factions.o fight.o         handler.o helpolc.ointer
p.o     magic.o marry.o mem.o           mprog_commands.o mprog_procs.o  mud_prog
s.o     olc.o olc_act.o olc_save.o      newbits.o pty.o         random.orecycle.
o route_io.o    save.o          skills.o socialolc.o    ssm.o           string.o
 todoolc.o      update.o -lm -lcrypt


-----------------------------------------------------------

and a look at my makefile:


CC      = gcc
PROF    = -DLINUX
NOCRYPT = 
C_FLAGS = -Wall -ggdb -O3 $(PROF) $(NOCRYPT)
L_FLAGS = -O2 $(PROF)

O_FILES = act_comm.o	act_info.o	act_move.o \
          act_obj.o	act_wiz.o	auction.o \
          ban.o		bank.o		bit.o \
          board.o	comm.o		const.o \
          clan.o	class.o		db.o \
          factions.o	fight.o		handler.o \
          helpolc.o	interp.o	magic.o \
          marry.o	mem.o		mprog_commands.o \
          mprog_procs.o	mud_progs.o	olc.o \
          olc_act.o	olc_save.o	newbits.o \
          pty.o		random.o	recycle.o \
          route_io.o	save.o		skills.o \
          socialolc.o	ssm.o		string.o \
          todoolc.o	update.o

all: ember

ember: $(O_FILES)
	rm -f ember
	$(CC) $(L_FLAGS) -o ember $(O_FILES) -lm -lcrypt

.c.o: merc.h
	$(CC) -c $(C_FLAGS) $<

clean:
	-rm -f *.o *~ Ember.patch *.orig *.rej \#*

distclean:
	-rm -f ../area/*~ ../area/*.txt
	-rm -f ../src/*~ ../*~
	-rm -f ../gods/* ../log/* ../player/*

src:
	-rm -f src.tar.gz
	-tar -czvf src.tar.gz Makefile *.c *.h

diff: clean
	@clear
	@echo Diffing against ./original directory and creating Ember.patch.
	@echo Ignore the following error.
	@echo  
	@diff -c -P -N -x ember -x core -x Ember.patch ./original ./ > ./Ember.patch

update:
	rm -f orignial/*
	cp *.c *.h Makefile startup* original


also on a side note ..... I cnat see anything after i type ./startup i just get a blinking cursor and a locked up shell if i start another cygwin i can use ps and see the mud is running and i can log on but i get no messages about the muds status or people logging nothing at all any help would be appricated thank you for your time

and again sorry for being an insurmountable pain in the posterior.

fal·li·ble (fl-bl)
adj.
1. Capable of making an error: Humans are only fallible.
2. Tending or likely to be erroneous: fallible hypotheses.
Top

Posted by Zeno   USA  (2,871 posts)  Bio
Date Reply #1 on Wed 28 Nov 2007 01:11 AM (UTC)
Message
Well you ran the MUD just fine. The warnings are warnings, not errors.

Quote:
i can log on but i get no messages about the muds status or people logging nothing at all any help would be appricated thank you for your time

What are you expecting to see?

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
Top

Posted by Thrashmodule   USA  (8 posts)  Bio
Date Reply #2 on Wed 28 Nov 2007 01:32 AM (UTC)

Amended on Wed 28 Nov 2007 10:24 PM (UTC) by Thrashmodule

Message
I was hoping to find out why I have warnings at all call me a bit of a perfectionist :D

and i was hoping to see something like:
Tue Nov 27 18:26:53 2007 :: ROM is ready to rock on port 5500.
Tue Nov 27 18:27:46 2007 :: Sock.sinaddr: 0.0.0.0
Tue Nov 27 18:27:55 2007 :: Loading Goober.
Tue Nov 27 18:27:56 2007 :: Goober@0.0.0.0 has connected.
Tue Nov 27 18:28:12 2007 :: Goober has quit.
as i do with the windows port of ROM24 it's been a long long time since i ran a mud but i seem to remember that being pretty standard output not a blinking cursor and a locked shell.

and again sorry for being an insurmountable pain in the posterior.

fal·li·ble (fl-bl)
adj.
1. Capable of making an error: Humans are only fallible.
2. Tending or likely to be erroneous: fallible hypotheses.
Top

Posted by Zeno   USA  (2,871 posts)  Bio
Date Reply #3 on Wed 28 Nov 2007 01:36 AM (UTC)
Message
Those logs depend on the MUD. Some MUDs may log to the Imm, some may not. Perhaps you don't have the log channel on. I'm not sure, I've never used that codebase.

For the crypt warnings, do a search on this forum. You'll get plenty of results.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #4 on Wed 28 Nov 2007 01:56 AM (UTC)
Message
Could you paste the lines corresponding to this warning:

act_info.c:3704: warning: passing arg 1 of `strcmp' makes pointer from integer without a cast
act_info.c:3721: warning: assignment makes pointer from integer without a cast

Chances are most of those warnings are from the same kind of problem.

And then this one:
magic.c: In function `spell_locate_object':
magic.c:3398: warning: the address of `can_see', will always evaluate as `true'


Without seeing the exact line it's hard to know what exactly is wrong. :-)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Thrashmodule   USA  (8 posts)  Bio
Date Reply #5 on Wed 28 Nov 2007 10:36 PM (UTC)

Amended on Wed 28 Nov 2007 10:47 PM (UTC) by Thrashmodule

Message

line 3704 act_info.c


    if ( strcmp( crypt( arg, ch->pcdata->pwd ), ch->pcdata->pwd ) )


here is line 3721


    pwdnew = crypt( arg2, ch->name );




and here is 1749 of comm.c


if ( strcmp( crypt( argument, ch->pcdata->pwd ), ch->pcdata->pwd ) )


and 1886


pwdnew = crypt( argument, ch->name );


and 1907


if ( strcmp( crypt( argument, ch->pcdata->pwd ), ch->pcdata->pwd ) )


the problem i am having understanding is they all seem to revolve around crypt but i have crypt installed in cygwin trust me i did search because at first i had the undefined error which cleared when crypt was added to cygwin now i just get the warning and i don't get why.



ok as for the odd man out warning.
line 3398 of magic.c


 if ( in_obj->carried_by != NULL && can_see )


hope you can help shed some light on this and sorry for being a whiny pain in the rear :D

and again sorry for being an insurmountable pain in the posterior.

fal·li·ble (fl-bl)
adj.
1. Capable of making an error: Humans are only fallible.
2. Tending or likely to be erroneous: fallible hypotheses.
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #6 on Wed 28 Nov 2007 10:46 PM (UTC)
Message
OK; the problem with the crypt lines is that it's not finding the function 'crypt', so it's assuming it's a function that returns an int; but, the code expects it to return a char*, hence the warnings where an int is being turned into a char*. If you do have libcrypt installed, you might be defining crypt into something else or something odd like that; I'd check your makefile flags and mud.h flags (do a text search for 'crypt' and see what comes up).

Quote:
if ( in_obj->carried_by != NULL && can_see )

The problem is that the code appears to expect can_see to be a boolean whereas it is in fact a function address. What I would do is look in the same function for local variables with similar names, like cansee: if you find one, chances are that the above is a typo. In this case, the warning is actually telling you something very helpful! :-)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Thrashmodule   USA  (8 posts)  Bio
Date Reply #7 on Wed 28 Nov 2007 10:49 PM (UTC)

Amended on Wed 28 Nov 2007 11:11 PM (UTC) by Thrashmodule

Message
ok i'll give that a try I'll post what i find.

Found:


for ( obj = object_list; obj != NULL; obj = obj->next )
    {
        if ( !can_see_obj( ch, obj ) || !is_name( target_name, obj->name )
             || ( !IS_IMMORTAL( ch ) && number_percent(  ) > 2 * level )
             || ch->level < obj->level )
            continue;

        found = TRUE;
        number++;

        for ( in_obj = obj; in_obj->in_obj != NULL; in_obj = in_obj->in_obj )
            ;

        if ( in_obj->carried_by != NULL && can_see )
        {
            sprintf( buf, "%s carried by %s\n\r",
                     obj->short_descr, PERS( in_obj->carried_by, ch ) );
        }
        else
        {
            if ( IS_IMMORTAL( ch ) && in_obj->in_room != NULL )
                sprintf( buf, "%s in %s [Room %d]\n\r",
                         obj->short_descr,
                         in_obj->in_room->name, in_obj->in_room->vnum );
            else
                sprintf( buf, "%s in %s\n\r",
                         obj->short_descr, in_obj->in_room == NULL
                         ? "somewhere" : in_obj->in_room->name );
        }



is it maybe !can_see_obj or am i way off base?

and again sorry for being an insurmountable pain in the posterior.

fal·li·ble (fl-bl)
adj.
1. Capable of making an error: Humans are only fallible.
2. Tending or likely to be erroneous: fallible hypotheses.
Top

Posted by Zeno   USA  (2,871 posts)  Bio
Date Reply #8 on Wed 28 Nov 2007 10:53 PM (UTC)
Message
Quote:
The problem is that the code appears to expect can_see to be a boolean whereas it is in fact a function address. What I would do is look in the same function for local variables with similar names, like cansee: if you find one, chances are that the above is a typo. In this case, the warning is actually telling you something very helpful! :-)

You sure? Often times I've seen something like this:
bool can_see = can_see(ch, victim);

And that's what it could be referencing.

Zeno McDohl,
Owner of Bleached InuYasha Galaxy
http://www.biyg.org
Top

Posted by Thrashmodule   USA  (8 posts)  Bio
Date Reply #9 on Wed 28 Nov 2007 11:16 PM (UTC)

Amended on Thu 29 Nov 2007 08:34 AM (UTC) by Thrashmodule

Message

void spell_locate_object( int sn, int level, CHAR_DATA * ch, void *vo )
{
    char buf[MAX_STRING_LENGTH];
    char buffer[4 * MAX_STRING_LENGTH];
    OBJ_DATA *obj;
    OBJ_DATA *in_obj;
    bool found;
    int number = 0, max_found;

    found = FALSE;
    number = 0;
    buffer[0] = '\0';
    max_found = IS_IMMORTAL( ch ) ? 200 : 2 * level;

    for ( obj = object_list; obj != NULL; obj = obj->next )
    {
        if ( !can_see_obj( ch, obj ) || !is_name( target_name, obj->name )
             || ( !IS_IMMORTAL( ch ) && number_percent(  ) > 2 * level )
             || ch->level < obj->level )
            continue;

        found = TRUE;
        number++;

        for ( in_obj = obj; in_obj->in_obj != NULL; in_obj = in_obj->in_obj )
            ;

        if ( in_obj->carried_by != NULL && can_see )
        {
            sprintf( buf, "%s carried by %s\n\r",
                     obj->short_descr, PERS( in_obj->carried_by, ch ) );
        }
        else
        {
            if ( IS_IMMORTAL( ch ) && in_obj->in_room != NULL )
                sprintf( buf, "%s in %s [Room %d]\n\r",
                         obj->short_descr,
                         in_obj->in_room->name, in_obj->in_room->vnum );
            else
                sprintf( buf, "%s in %s\n\r",
                         obj->short_descr, in_obj->in_room == NULL
                         ? "somewhere" : in_obj->in_room->name );
        }

        buf[0] = UPPER( buf[0] );
        strcat( buffer, buf );

        if ( number >= max_found )
            break;
    }

    if ( !found )
        send_to_char( "Nothing like that in heaven or earth.\n\r", ch );
    else if ( ch->lines )
        page_to_char( buffer, ch );
    else
        send_to_char( buffer, ch );

    return;
}




ok here is the entire function and as far as the file goes it has a couple instances of can_see_room and can_see_obj

but i cant figure out why they needed can_see?? or what the flag for can_see is supposed to be is there supposed to be another check in there for can_see??


EDIT: ok i removed && can_see and warning is gone going to have to beat this function up to see if it causes problems without that code. will post if i find anything still working on 1st set of warnings though :S

and again sorry for being an insurmountable pain in the posterior.

fal·li·ble (fl-bl)
adj.
1. Capable of making an error: Humans are only fallible.
2. Tending or likely to be erroneous: fallible hypotheses.
Top

Posted by ThomasWatts   USA  (66 posts)  Bio
Date Reply #10 on Thu 29 Nov 2007 01:27 AM (UTC)
Message
As for crypt not being found, check out sha256 as provided by the SMAUGFuss project. It doesn't rely on system functions that may or may not be available, and hence is much more portable.
Top

Posted by David Haley   USA  (3,881 posts)  Bio
Date Reply #11 on Thu 29 Nov 2007 02:04 AM (UTC)
Message
Quote:
You sure? Often times I've seen something like this:

bool can_see = can_see(ch, victim);


And that's what it could be referencing.

If that is the case, then the can_see local variable does exist and shadows the global function declaration; that's terrible style but hey...

Quote:
but i cant figure out why they needed can_see?? or what the flag for can_see is supposed to be is there supposed to be another check in there for can_see??

They probably meant to say something like: can_see(ch, obj) or something like that. It's always hard to tell exactly what was meant by something in code like that... You'd think that whoever added that code would have seen the warning and done something about it, but far too many people have the attitude that a warning is just a warning and can be ignored. Oh well...

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
Top

Posted by Thrashmodule   USA  (8 posts)  Bio
Date Reply #12 on Thu 29 Nov 2007 08:51 AM (UTC)
Message
thats what started this whole post lol i hate warnings they are annoying things that peck at the back of my brain screaming of future crashes and instabilities. i would prefer to not touch any code until i can get it to clean make crashes happen bugs get in but why leave the door wide open!

as for the sha256 I'm probably going to sound retarded but its been about 5 years since I've opened a src file and I have not a clue as to how to go about implementing that into my code base is there a sha256 for dummies book out there :D
from my brief reading it dosn't look to be a plug and play app whats the best way to go about the integration of that to fit my needs?

and again sorry for being an insurmountable pain in the posterior.

and again sorry for being an insurmountable pain in the posterior.

fal·li·ble (fl-bl)
adj.
1. Capable of making an error: Humans are only fallible.
2. Tending or likely to be erroneous: fallible hypotheses.
Top

Posted by ThomasWatts   USA  (66 posts)  Bio
Date Reply #13 on Thu 29 Nov 2007 12:29 PM (UTC)

Amended on Thu 29 Nov 2007 01:52 PM (UTC) by ThomasWatts

Message
Switching over to sha256 is simple thanks the crew of SMAUGFuss.
Go grab it from www.smaugmuds.org, locate sha256.c and sha256.h, add them to your Makefile, replace all crypt(blahA, blahB) calls with sha256_crypt(blahA). In comm.c and act_?.c add include the sha256 header.
The only downside to the change is that it doesn't worth preexisting characters. Perhaps if the passwords are reset, not sure. After that, it's just removing the old header files and other references to crypt, that can be done at your leisure.
Found here http://www.smaugmuds.org/index.php?a=files&s=viewfile&fid=2
Exact instructions and the files needed.
Top

Posted by Samson   USA  (683 posts)  Bio
Date Reply #14 on Thu 29 Nov 2007 03:40 PM (UTC)
Message
Just be sure that if you're going to use the sha256 encryption you implement it before you've got a playerbase to worry about because the old crypt passwords won't be compatible.
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


60,723 views.

This is page 1, subject is 2 pages long: 1 2  [Next page]

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.