Re: [CODE] Verify function

From: James Turner (turnerjh@XTN.NET)
Date: 06/26/98


George <greerga@CIRCLEMUD.ORG> writes:

> On Fri, 26 Jun 1998, James Turner wrote:
>
> >(Note: I wrote the above about an hour ago.  I changed it to use a
> >static pointer now.  Makes the functions more self-contained and
> >easier to use IMO, since if you wanted to call them from elsewhere
> >there wouldn't be any need to worry about freeing the string and
> >such).
>
> void verify_function(int (vnum/rnum), char * write, int len)
> {
>   int c = 0;
>   *write = '\0';
>
>   if (...)
>     c += snprintf(write + c, len - c, "...", ...);
>   if (,,,)
>     c += snprintf(write + c, len - c, ",,,", ,,,);
>
>   ...etc...
> }

Won't quite do it.  A given verify function is called multiple times.
If you called it as

verify_function(rnum, buf, MAX_STRING_LENGTH);

ten times in a row, you might overflow.  You'd have to use:

verify_function(rnum, buf + strlen(buf), MAX_STRING_LENGTH - strlen(buf));

That or keep track of the over-all length.  It gets messy... that's
why a dropin replacement for sprintf would be nice.  Very useful in
all the cases like the above, as well as getting rid of Borland C++'s
problem (though using the c like above does so as well).

Chip

--
James Turner                turnerjh@xtn.net             UIN: 1102038
                            http://www.vuse.vanderbilt.edu/~turnerjh/


     +------------------------------------------------------------+
     | 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