Example #1
0
int Exec_Msg(int type, char **result, int key, char *arg, char *menuname)
{
  *result=NULL;

  switch (type)
  {
    case same_direction:
      if (direction==DIRECTION_NEXT)
        Msg_Next(last_msg);
      else Msg_Previous(last_msg);
      break;
      
    case msg_area:            Msg_Area();                     break;
    case read_next:           Msg_Next(last_msg);             break;
    case read_previous:       Msg_Previous(last_msg);         break;
    case read_individual:     Msg_Read_Individual(key);       break;
    case msg_current:         Msg_Current();                  break;
    case read_original:       Msg_Read_Original();            break;
    case read_reply:          Msg_Read_Reply();               break;
    case msg_kill:            Msg_Kill(-1L);                  break;
    case forward:             Msg_Forward(NULL);              break;
    case enter_message:       Msg_Enter();                    break;
    case msg_reply:           Msg_Reply();                    break;
    case msg_edit_user:       Msg_Edit_User();                break;
    case read_nonstop:        Msg_Nonstop();                  break;
    case msg_list:            Msg_List(menuname);             break;
    case msg_scan:            Msg_Scan(menuname);             break;
    case msg_checkmail:       Msg_Checkmail(menuname);        break;
    case msg_inquir:          Msg_Inquire(menuname);          break;
    case msg_hurl:            Msg_Hurl();                     break;
    case msg_upload:          Msg_Upload();                   break;
    case msg_upload_qwk:      QWK_Upload();                   break;
    case xport:               Msg_Xport();                    break;
    case msg_change:          Msg_Change();                   break;
    case msg_tag:             Msg_Tag();                      break;
    case msg_browse:          Msg_Browse(0, NULL, menuname);  break;
    case msg_unreceive:       Msg_Unreceive(last_msg, NULL);  break;
    case msg_restrict:        Msg_Restrict();                 break;
    case msg_toggle_kludges:  Msg_Toggle_Kludges();           break;

#ifdef MAX_TRACKER
    case msg_track:           TrackMenu();                    break;
#endif

    case msg_dload_attach:    Msg_Attach_Download();          break;
    case msg_reply_area:      Msg_ReplyArea(arg);             break;

    default:              logit(bad_menu_opt, type); return 0;
  }
  
  return 0;
}
/*******************************************************************************
函 数 名:	FaultMsg
功能说明: 	异常消息封装
参	  数: 	upload: 异常情况具体见异常枚举歌词
返 回 值:	无
*******************************************************************************/
void FaultMsg(void)
{
	Msg_Upload(0, 0xFF, 1, (u8*)&Fault);
}