Exemple #1
0
/*
** m_quit
**      parv[0] = sender prefix
**      parv[1] = comment
*/
int     m_quit(struct Client *cptr,
               struct Client *sptr,
               int parc,
               char *parv[])
{
  char *comment = (parc > 1 && parv[1]) ? parv[1] : cptr->name;
  static char comment2[TOPICLEN];
  char *stripedmsg;
  
  sptr->flags |= FLAGS_NORMALEX;
  
  if (strlen(comment) > (size_t) TOPICLEN)
    comment[TOPICLEN] = '\0';
	
  if (MyClient(sptr))
	{	
	  if (NoQuitMsg)
		comment = NoQuitMsg;
	  else if(ZombieQuitMsg && IsZombie(sptr))
		comment = ZombieQuitMsg; // We don't want zombie's to 
					 // use a normal quit (:
	  else
		{	  
		  if( AntiSpamExitMsg &&
    		(sptr->firsttime + AntiSpamExitTime) > CurrentTime)
  			  comment = AntiSpamExitMsg;
		  else if(NoColorsQuitMsg && comment && (strchr(comment, 3) || strchr(comment, 27)))
			  comment = NoColorsQuitMsg;
		  else if(NoSpamExitMsg && comment && is_spam(comment))
			  comment = NoSpamExitMsg;			
		  else if(QuitPrefix)
			{
                           stripedmsg = strip_control_codes_lower(comment);
      		           if(!IsOper(sptr) && is_msgvlined(stripedmsg))
        		     {
				comment = NoSpamExitMsg;
        		     }
			
			  if (comment && strlen(comment) > (size_t) TOPICLEN - strlen(QuitPrefix))
  				comment[TOPICLEN - strlen(QuitPrefix)] = '\0';		

				ircsprintf(comment2,"%s%s", QuitPrefix, (comment) ? comment : "");
				comment = comment2;				
		  	}
		}
	}
	
  return IsServer(sptr) ? 0 : exit_client(cptr, sptr, sptr, comment);
}
MNMessage *
mn_message_new_from_mime_message_full (GType type,
				       MNMailbox *mailbox,
				       GMimeMessage *mime_message,
				       const char *mid,
				       const char *uri,
				       MNMessageFlags flags,
				       gboolean handle_status)
{
  MNMessage *message;
  const char *id;
  time_t sent_time;
  const char *from;
  const char *subject;
  char *decoded_from;
  char *decoded_subject;

  g_return_val_if_fail(type != 0, NULL);
  g_return_val_if_fail(MN_IS_MAILBOX(mailbox), NULL);
  g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), NULL);

  if (is_spam(mime_message))
    return NULL;

  if (handle_status)
    {
      const char *status;

      status = g_mime_message_get_header(mime_message, "Status");
      if (status && strchr(status, 'R'))
	return NULL;		/* the message was read */
      else if (status && strchr(status, 'O'))
	flags &= ~MN_MESSAGE_NEW;
      else
	flags |= MN_MESSAGE_NEW;
    }

  id = g_mime_message_get_message_id(mime_message);
  g_mime_message_get_date(mime_message, &sent_time, NULL);
  from = g_mime_message_get_sender(mime_message);
  subject = g_mime_message_get_subject(mime_message);

  decoded_from = from ? g_mime_utils_header_decode_text(from) : NULL;
  decoded_subject = subject ? g_mime_utils_header_decode_text(subject) : NULL;

  message = g_object_new(type,
			 MN_MESSAGE_PROP_MAILBOX(mailbox),
			 MN_MESSAGE_PROP_SENT_TIME(sent_time),
			 MN_MESSAGE_PROP_ID((char *) id),
			 MN_MESSAGE_PROP_MID((char *) mid),
			 MN_MESSAGE_PROP_FROM(decoded_from),
			 MN_MESSAGE_PROP_SUBJECT(decoded_subject),
			 MN_MESSAGE_PROP_URI((char *) uri),
			 MN_MESSAGE_PROP_FLAGS(flags),
			 NULL);

  g_free(decoded_from);
  g_free(decoded_subject);

  return message;
}