⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delete~1.cpp

📁 一百个病毒的源代码 包括熊猫烧香等 极其具有研究价值
💻 CPP
字号:
/*	delete_message.cpp*/#include <stdio.h>#include <stdlib.h>#include <syslog.h>#include <errno.h>#include <string.h>#include "mail_process.h"#include "environment.h"#include "parse_form.h"#include "main.h"#include "inbox_page.h"#include "parse_mail_headers.h"#include "err_page.h"////////////////////////////////////////////////////////////////////////struct message_id_s {   long int m_num;   long int m_date;};int get_msgs_to_delete(message_id_s**);void sort_msg_ids(struct message_id_s*, int);int delete_msg_from_file(FILE*, message_id_s);////////////////////////////////////////////////////////////////////////int delete_msg(void){   int x=0;   message_id_s* msg_id=NULL;   int msg_id_size=0;   FILE* user_mail_file=NULL;   msg_id_size=get_msgs_to_delete(&msg_id);   if(msg_id_size > 0)      sort_msg_ids(msg_id,msg_id_size);   if(msg_id_size > 0 && msg_id != NULL)   {      setgid(egid);      user_mail_file=open_user_mailfile("r+");      setgid(rgid);      if(user_mail_file == NULL)      {         syslog(LOG_MAIL | LOG_ERR,"could not open %s mailfile",			user_ses.loginname);         err_page();         return(-1);      }      for(x=0;x<msg_id_size;x++)      {         if(delete_msg_from_file(user_mail_file,msg_id[x]) != 0)         {            syslog(LOG_MAIL | LOG_ERR,"error deleting message for user %s",				user_ses.loginname);            fclose(user_mail_file);            err_page();            return(-1);         }      }      fclose(user_mail_file);   }   if(msg_id != NULL)      free(msg_id);   inbox_action();   return(0);}//////////////////////////////////////////////////////////////////////////Fills message_id structure, returns number of array elementsint get_msgs_to_delete(message_id_s** msg_id){   int msg_id_size=0;   cgi_t* cgi_data=NULL;      while(get_cgi_data(&cgi_data) == 0)   {      msg_id_size++;      *msg_id=(struct message_id_s*) realloc(*msg_id,			(size_t) ( sizeof(struct message_id_s) 			* msg_id_size ) );      if(*msg_id != NULL && cgi_data->name != NULL && cgi_data->value != NULL)      {         (*msg_id)[msg_id_size-1].m_num=strtol(cgi_data->name,NULL,10);         (*msg_id)[msg_id_size-1].m_date=strtol(cgi_data->value,NULL,10);         free(cgi_data->name);         cgi_data->name=NULL;         free(cgi_data->value);         cgi_data->value=NULL;      }   }   return(msg_id_size);}////////////////////////////////////////////////////////////////////////void sort_msg_ids(struct message_id_s* msg_id,int msg_id_size){   message_id_s temp_msg_id;   int x;   int y;   if(msg_id_size > 1)   {      for(x=0;x<msg_id_size-1;x++)      {         for(y=x+1;y<msg_id_size;y++)         {            if( msg_id[x].m_num < msg_id[y].m_num )            {               temp_msg_id.m_num=msg_id[x].m_num;               temp_msg_id.m_date=msg_id[x].m_date;               msg_id[x].m_num=msg_id[y].m_num;               msg_id[x].m_date=msg_id[y].m_date;               msg_id[y].m_num=temp_msg_id.m_num;               msg_id[y].m_date=temp_msg_id.m_date;            }         }      }   }}//////////////////////////////////////////////////////////////////////////This will delete message from fileint delete_msg_from_file(FILE* user_mail_file, message_id_s msg_id){   long int file_ptr_read=0;   long int file_ptr_write=0;   struct mail_header* current_mail_header=NULL;   if(user_mail_file == NULL)      return(-1);   if(msg_id.m_num <= 0)   {      syslog(LOG_MAIL | LOG_ERR,"delete message failed. "			"Tried to delete message <= 0 ");      return(-1);   }   if( point_to_message(user_mail_file, msg_id.m_num) != 0)   {      syslog(LOG_MAIL | LOG_ERR,"Could not find message to delete");      return(-1);   }   if( (file_ptr_write=ftell(user_mail_file)) == -1)   {      syslog(LOG_MAIL | LOG_ERR,"ftell failed (%s)",strerror(errno));      return(-1);   }   current_mail_header=fill_mail_h_struct(user_mail_file,msg_id.m_num);   if(current_mail_header == NULL)   {      syslog(LOG_MAIL | LOG_ERR,"could not read message header");      return(-1);   }   if(current_mail_header->date_received != msg_id.m_date)   {      syslog(LOG_MAIL | LOG_ERR,"delete message failed because of "			"invalid message id");      free_mail_headers(current_mail_header);      return(-1);   }   free_mail_headers(current_mail_header);   point_to_next_message(user_mail_file,NULL);   if( (file_ptr_read=ftell(user_mail_file)) == -1)   {      syslog(LOG_MAIL | LOG_ERR,"ftell failed (%s)",strerror(errno));      return(-1);   }   if( insert_line_in_file(user_mail_file,NULL,file_ptr_read,file_ptr_write)		!= 0)   {      syslog(LOG_MAIL | LOG_ERR,"error deleting message");      return(-1);   }   return(0);}////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -