I also have this in my code but it only deletes one extra description at a
time.  I need a clear command to remove all the extra descriptions.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Valnir
Sent: Thursday, January 22, 2004 7:22 PM
To: [email protected]
Subject: Re: Clearing extra descriptions

Don't know if this will help, but here is how ours is done (using "delete"
instead of clear)

    if ( !str_cmp( command, "delete" ) )
    {
        EXTRA_DESCR_DATA *ped = NULL;

        if ( keyword[0] == '\0' )
        {
            send_to_char( "Syntax:  ed delete [keyword]\n\r", ch );
            return FALSE;
        }

        for ( ed = pObj->extra_descr; ed; ed = ed->next )
        {
            if ( is_name( keyword, ed->keyword ) )
                break;
            ped = ed;
        }

        if ( !ed )
        {
            send_to_char( "OEdit:  Extra description keyword not
found.\n\r", ch );
            return FALSE;
        }

        if ( !ped )
            pObj->extra_descr = ed->next;
        else
            ped->next = ed->next;

        free_extra_descr( ed );

        send_to_char( "Extra description deleted.\n\r", ch );
        return TRUE;
    }

- Valnir
----- Original Message ----- 
From: "Hiddukel" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, January 22, 2004 7:16 PM
Subject: Clearing extra descriptions


I am seriously confused on this. What I am trying to do is clear all of the
extra descriptions from an object. I can add any number of extra
descriptions to an object but when I try to clear them using this code it
always leaves the first one. I have seen this exact same method used in olc
delete functions and I can't for the life of me figure out why it leaves the
first one in the list. Btw, I also get output saying that it is clearing
the first extra description even though it remains after the clear.

Here is the code in question:
if (!str_cmp(command, "clear"))
{
EXTRA_DESCR_DATA *ed_next = NULL;

for (ed = pObj->extra_descr; ed; ed = ed_next)
{
ed_next = ed->next;
ptc(ch, "Clearing exra description: %s\n\r", ed->keyword);
free_extra_descr(ed);
}

return TRUE;
}

I will also post the free_extra_descr function even though I believe it is
stock.

void free_extra_descr(EXTRA_DESCR_DATA * ed)
{
if (!IS_VALID(ed))
return;

free_string(ed->keyword);
free_string(ed->description);
INVALIDATE(ed);

ed->next = extra_descr_free;
extra_descr_free = ed;
}

If I am not mistaken clearing affects from objects would be done in a
similar way also, if I am mistaken about that then I would like to know how
that is done as well. I appreciate any and all help on this



Reply via email to