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

📄 edit_a~1.cpp

📁 一百个病毒的源代码 包括熊猫烧香等 极其具有研究价值
💻 CPP
字号:
/*	edit_addr_book.cpp*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <syslog.h>#include "parse_form.h"#include "session.h"#include "main.h"#include "edit_addr_book_page.h"#include "err_page.h"#include "preferences.h"#include "mail_process.h"enum edit_addr_subaction { eas_add, eas_modify, eas_delete, eas_none };struct edit_addr_struct {   char* modify_name;   char* modify_email;   char* real_name;   char* real_email;   edit_addr_subaction eas_subaction;};int get_edit_addr_struct(edit_addr_struct*);int parse_edit_addr(edit_addr_struct*);int free_edit_addr_struct(edit_addr_struct*);//////////////////////////////////////////////////////////////////int edit_addr_book_action(void){   int err=0;   edit_addr_struct edit_addr;   get_edit_addr_struct(&edit_addr);   err=parse_edit_addr(&edit_addr);   free_edit_addr_struct(&edit_addr);   destroy_user_pref();   get_user_pref();   if(err == 0)      view_addr_book_action();   else if(err == 1)      err_string_page("Invalid email address");   else   {      syslog(LOG_MAIL | LOG_ERR,"error editing address book for %s",			user_ses.loginname);      err_page();   }   return(0);}//////////////////////////////////////////////////////////////////// This parses the cgi values and finds what name/email to add//    or modifyint get_edit_addr_struct(edit_addr_struct* edit_addr){   cgi_t* cgi_data;   edit_addr->modify_name=NULL;   edit_addr->modify_email=NULL;   edit_addr->real_name=NULL;   edit_addr->real_email=NULL;   edit_addr->eas_subaction=eas_none;   while(get_cgi_data(&cgi_data) == 0)   {      if(strcmp(cgi_data->name,"subaction") == 0 && cgi_data->value != NULL)      {         if(strcmp(cgi_data->value,"add") == 0)            edit_addr->eas_subaction=eas_add;         else if(strcmp(cgi_data->value,"modify") == 0)            edit_addr->eas_subaction=eas_modify;         else if(strcmp(cgi_data->value,"delete") == 0)            edit_addr->eas_subaction=eas_delete;         else            edit_addr->eas_subaction=eas_none;         free(cgi_data->name);         cgi_data->name=NULL;         free(cgi_data->value);         cgi_data->value=NULL;      }      else if(strcmp(cgi_data->name,"modifyname") == 0)      {         if(edit_addr->modify_name == NULL && cgi_data->value != NULL)         {            edit_addr->modify_name=cgi_data->value;            cgi_data->value=NULL;            free(cgi_data->name);            cgi_data->name=NULL;         }      }      else if(strcmp(cgi_data->name,"modifyemail") == 0)      {         if(edit_addr->modify_email == NULL && cgi_data->value != NULL)         {            edit_addr->modify_email=cgi_data->value;            cgi_data->value=NULL;            free(cgi_data->name);            cgi_data->name=NULL;         }      }      else if(strcmp(cgi_data->name,"realname") == 0)      {         if(edit_addr->real_name == NULL && cgi_data->value != NULL)         {            edit_addr->real_name=cgi_data->value;            cgi_data->value=NULL;            free(cgi_data->name);            cgi_data->name=NULL;         }      }      else if(strcmp(cgi_data->name,"realemail") == 0)      {         if(edit_addr->real_email == NULL && cgi_data->value != NULL)         {            edit_addr->real_email=cgi_data->value;            cgi_data->value=NULL;            free(cgi_data->name);            cgi_data->name=NULL;         }      }   }   edit_addr->modify_name=eliminate_lwsp(edit_addr->modify_name);   edit_addr->modify_email=eliminate_lwsp(edit_addr->modify_email);   edit_addr->real_name=eliminate_lwsp(edit_addr->real_name);   edit_addr->real_email=eliminate_lwsp(edit_addr->real_email);   return(0);}//////////////////////////////////////////////////////////////////// This free's the resources needed for the edit address structureint free_edit_addr_struct(edit_addr_struct* edit_addr){   if(edit_addr == NULL)      return(-1);   if(edit_addr->modify_name != NULL)   {      free(edit_addr->modify_name);      edit_addr->modify_name=NULL;   }   if(edit_addr->modify_email != NULL)   {      free(edit_addr->modify_email);      edit_addr->modify_email=NULL;   }   if(edit_addr->real_name != NULL)   {      free(edit_addr->real_name);      edit_addr->real_name=NULL;   }   if(edit_addr->real_email != NULL)   {      free(edit_addr->real_email);      edit_addr->real_email=NULL;   }   return(0);}//////////////////////////////////////////////////////////////////// This will open the user's preference file and add/modify/delete//    the appropriate addressint parse_edit_addr(edit_addr_struct* edit_addr){   int err=0;   FILE* user_pref_file=NULL;   user_pref_file=open_user_pref_file("r+",&err);   if(user_pref_file == NULL && err == 0)      user_pref_file=open_user_pref_file("w+",NULL);   if(user_pref_file == NULL)   {      syslog(LOG_MAIL | LOG_ERR,"Could not open pref file for writing");      return(-1);   }    if(edit_addr->eas_subaction == eas_none)   {      fclose(user_pref_file);      return(-1);   }   if(edit_addr->eas_subaction == eas_add)   {      if(edit_addr->real_email == NULL)      {         fclose(user_pref_file);         return(-1);      }      if(valid_email(edit_addr->real_email) == 0)         return(1);      if(add_pref_email(user_pref_file,		edit_addr->real_name,		edit_addr->real_email) != 0)      {         syslog(LOG_MAIL | LOG_ERR,"add pref email failed");         fclose(user_pref_file);         return(-1);      }   }   else if(edit_addr->eas_subaction == eas_delete)   {            if(edit_addr->modify_email == NULL)      {         syslog(LOG_MAIL | LOG_INFO,"delete email null");         fclose(user_pref_file);         return(-1);      }      if(delete_pref_email(user_pref_file,		edit_addr->modify_name,		edit_addr->modify_email) != 0)      {         syslog(LOG_MAIL | LOG_ERR,"delete pref email failed");         fclose(user_pref_file);         return(-1);      }   }   else if(edit_addr->eas_subaction == eas_modify)   {      if(edit_addr->modify_email == NULL ||		edit_addr->real_email == NULL)      {         fclose(user_pref_file);         return(-1);      }      if(valid_email(edit_addr->real_email) == 0)         return(1);      if(modify_pref_email(user_pref_file,		edit_addr->modify_name,		edit_addr->modify_email,		edit_addr->real_name,		edit_addr->real_email) != 0)      {         syslog(LOG_MAIL | LOG_ERR,"modify pref email failed");         free(user_pref_file);         return(-1);      }   }   fclose(user_pref_file);   return(0);}//////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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