Re: (CIRCLE)(NEWBIE)(help)

From: Daniel Koepke (dkoepke@CALIFORNIA.COM)
Date: 01/18/98


On Sun, 18 Jan 1998, Chuck Reed wrote:

->I'm not sure, but it looks like you sent an illegal $ variable in an act
->function (you know, those neat little $n $s $N things you use for his,
->hers, she, him, players names, etc).  Urm, I'm guessing a total
->re-compilation of your mud would at least show a warning to the effect of
->where exactly it was.  Hope this was of some help.

Right, except for the part about recompiling giving you a warning.
It's still a valid string, just not in the format act() wants.  The
string's format is checked by act() when act() is called--which is
while the program is running.  Since the compiler doesn't have any
clue as to what act() expects, it can't give you a warning about it.

To find the problem you might be reduced to using some tricks, like:

  o Rename act() to _act()
  o Add two arguments onto the end of the _act() function "int line,
    char *file".
  o Down where the SYSERR is printed, make it output the file and
    line number variables passed to the _act() function (file and
    line repsectively).
  o In comm.h, change the declaration of act() to _act().
  o Also in comm.h, add the following macro

    #define act(buf,tf,a,b,c,to) _act(buf, tf, a, b, c, to, __LINE__,\
                                        __FILE__)

Following those instructions (which aren't very specific), you can
make the SYSERR output the line number and file in which the error
occurred (so, all you'd have to do is reproduce the error and you'd
get the line and file number where the invalid act() code was passed).

-dak


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST