02 Mar, 2010, arholly wrote in the 1st comment:
Votes: 0
Hello:
My mud is up and running, but I'm getting some warnings when I compile and was hoping to get some help for a clean compile.

This is the error I'm getting:
gcc -c -Wall -O -ggdb   act_wiz.c
act_wiz.c: In function do_copyover:
act_wiz.c:4432: warning: implicit declaration of function write_to_descriptor
act_wiz.c:4467: warning: implicit declaration of function execl
act_wiz.c:4467: warning: incompatible implicit declaration of built-in function execl
act_wiz.c: In function copyover_recover:
act_wiz.c:4503: warning: ignoring return value of fscanf, declared with attribute warn_unused_result


Lines 4432:
write_to_descriptor (d->descriptor, "\n\rSorry, we are rebooting. Come back in a few minutes.\n\r", 0);


Line 4467:
execl (EXE_FILE, "rom", buf, "copyover", buf2, (char *) NULL);


Line 4503:
fscanf (fp, "%d %s %s\n", &desc, name, host);


Can anyone help me out with this?
02 Mar, 2010, Skol wrote in the 2nd comment:
Votes: 0
In the top of act_wiz.c look for the local functions, you should have:
bool write_to_descriptor args ((int desc, char *txt, int length));

The actual code for it is in comm.c (or was etc), grep write_to_descriptor *.c -n to find which files/what line.

I _think_ execl is in unistd.h? So changes are you don't have the line in your act_wiz.c file:
#include <unistd.h>


No idea on the last one.
02 Mar, 2010, Runter wrote in the 3rd comment:
Votes: 0
Quote
act_wiz.c:4503: warning: ignoring return value of fscanf, declared with attribute warn_unused_result


Like it says, the return value (an int) is being ignored and it was declared with attribute warn_unused_result…so it's warning you aren't using the returned result. You might want to find out exactly why they think you should be using the returned result.



Quote
execl (EXE_FILE, "rom", buf, "copyover", buf2, (char *) NULL);


Prototype declaration would be..
int execl(const char *path, const char *arg0, …, const char *argn, (char *)0);

Your implied declaration, however, is based on the types you pass when no prototype declaration is available. So, I suppose it wants buf2 to be const. You can make it be quiet with:

execl (EXE_FILE, "rom", buf, "copyover", (const char*)buf2, (char *) NULL);


The other warning is similar to that one.
02 Mar, 2010, Kline wrote in the 4th comment:
Votes: 0
You might want to read here about fscanf. It returns the number of successful matches so you can verify it captured everything it was intended to and handle it if not. If you'd like the dirty but not recommended route, simply wrap it inside a blank if().

if( fscanf(stuff) ) {}
0.0/4