Re: Erasing certain info from a link list.

From: David Cole (tiznor@softhome.net)
Date: 10/24/02


I actually did something that worked without using REMOVE_FROM_LIST, don't
really know if its the "proper" way of doing this, or the safest but it work
regardless:

ACMD(do_forget)
{
  int spell, i;
  struct SpellMemData *smd;

  skip_spaces(&argument);
  spell = find_spell_num(argument);

  if (!*argument) {
    send_to_char("Syntax: Forget <spell> | all\r\n", ch);
    return;
  } else if (!str_cmp(argument, "all")) {
 for (i = 1; i <= MAX_SPELLS; i++) {
   if (GET_SPELL(ch, i) > 0)
  GET_SPELL(ch, i) = 0;
 }
 ch->MemList = NULL;
 send_to_char("You forget everything!\r\n", ch);
 return;
  } else if ((spell < 1) || (spell > MAX_SPELLS)) {
    send_to_char("You don't have that spell memorized.\r\n", ch);
    return;
  } else {
// here below...
 for (smd = ch->MemList; smd; smd = smd->next)
    if (spell == smd->spell) {
   sprintf(BufOne, "You purge '%s' from your thoughts.\r\n",
spell_info[spell].name);
   send_to_char(BufOne, ch);
      DeleteMemorieSpell(ch, smd);
   return;
 }
// stop example...
 if (GET_SPELL(ch, spell) > 0) {
      sprintf(BufOne, "You purge '%s' from your thoughts.\r\n",
spell_info[spell].name);
      send_to_char(BufOne, ch);
      GET_SPELL(ch, spell)--;
      return;
 } else
      send_to_char("You don't have that spell memorized.\r\n", ch);
  }
}

its pretty fail safe, works great too. See anything that maybe be an issue?
leak or the likes?

Thanks,
Dave

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 06/25/03 PDT