Changeset 1902 for trunk/rms

Show
Ignore:
Timestamp:
06/03/00 09:45:59 (9 years ago)
Author:
graham
Message:

Set auto response and custom auto response.
Fix bug in first inputing text.

Location:
trunk/rms/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/rms/src/rms.cpp

    r1865 r1902  
    3535const unsigned short CODE_USERxINFO = 201; 
    3636const unsigned short CODE_STATUS = 202; 
    37 const unsigned short CODE_EVENTxSUCCESS = 203; 
     37const unsigned short CODE_RESULTxSUCCESS = 203; 
    3838const unsigned short CODE_LISTxUSER = 204; 
    3939const unsigned short CODE_LISTxGROUP = 205; 
     
    6363const unsigned short STATE_ENTERxURLxDESCRIPTION = 5; 
    6464const unsigned short STATE_ENTERxURL = 6; 
     65const unsigned short STATE_ENTERxAUTOxRESPONSE = 7; 
    6566 
    6667#define NEXT_WORD(s) while (*s != '\0' && *s == ' ') s++; 
     
    7374}; 
    7475 
    75 static const unsigned short NUM_COMMANDS = 10; 
     76static const unsigned short NUM_COMMANDS = 11; 
    7677static struct Command commands[NUM_COMMANDS] = 
    7778{ 
     
    9596    "Dump log messages { <log types> }." }, 
    9697  { "VIEW", &CRMSClient::Process_VIEW, 
    97     "View event { <uin> }." } 
     98    "View event { <uin> } (not yet implemented)." }, 
     99  { "AR", &CRMSClient::Process_AR, 
     100    "Set your (or a user custom) auto response { [ <uin> ] }." } 
    98101}; 
    99102 
     
    357360  m_nState = STATE_UIN; 
    358361  m_nLogTypes = 0; 
     362  data_line_pos = 0; 
    359363} 
    360364 
     
    390394    case EVENT_ACKED: 
    391395    case EVENT_SUCCESS: 
    392       nCode = CODE_EVENTxSUCCESS; 
     396      nCode = CODE_RESULTxSUCCESS; 
    393397      szr = "done"; 
    394398      break; 
     
    445449      data_line[data_line_pos] = '\0'; 
    446450      in++; 
    447  
    448451      if (StateMachine() == -1) return -1; 
    449452 
     
    520523      return Process_URL_url(); 
    521524    } 
     525    case STATE_ENTERxAUTOxRESPONSE: 
     526    { 
     527      if (AddLineToText()) 
     528         return Process_AR_text(); 
     529      break; 
     530    } 
    522531  } 
    523532  return 0; 
     
    626635    fflush(fs); 
    627636    licqDaemon->icqLogoff(); 
    628     fprintf(fs, "%d [0] Event done.\n", CODE_EVENTxSUCCESS); 
     637    fprintf(fs, "%d [0] Event done.\n", CODE_RESULTxSUCCESS); 
    629638    return fflush(fs); 
    630639  } 
     
    793802 *   CODE_COMMANDxSTART 
    794803 *     < ...time... > 
    795  *   CODE_EVENTxSUCCESS | CODE_EVENTxTIMEDOUT | CODE_EVENTxERROR 
     804 *   CODE_RESULTxSUCCESS | CODE_EVENTxTIMEDOUT | CODE_EVENTxERROR 
    796805 *-------------------------------------------------------------------------*/ 
    797806int CRMSClient::Process_MESSAGE() 
     
    847856 *   CODE_COMMANDxSTART 
    848857 *     < ...time... > 
    849  *   CODE_EVENTxSUCCESS | CODE_EVENTxTIMEDOUT | CODE_EVENTxERROR 
     858 *   CODE_RESULTxSUCCESS | CODE_EVENTxTIMEDOUT | CODE_EVENTxERROR 
    850859 *-------------------------------------------------------------------------*/ 
    851860int CRMSClient::Process_URL() 
     
    895904  return fflush(fs); 
    896905} 
     906 
     907 
     908/*--------------------------------------------------------------------------- 
     909 * CRMSClient::Process_AR 
     910 * 
     911 * Command: 
     912 *     AR [ <uin> ] 
     913 * 
     914 * Response: 
     915 *   CODE_ENTERxTEXT | CODE_INVALIDxUIN 
     916 *     At which point the auto response should be entered line by line and 
     917 *     terminated by entering a "." on a line by itself. 
     918 *   CODE_RESULTxSUCCESS 
     919 *-------------------------------------------------------------------------*/ 
     920int CRMSClient::Process_AR() 
     921{ 
     922/* 
     923  if (data_arg[0] == '\0') 
     924  { 
     925    ICQOwner *o = gUserManager.FetchOwner(LOCK_R); 
     926    // print... 
     927    gUserManager.DropOwner(); 
     928    return fflush(fs); 
     929  } 
     930*/ 
     931  unsigned long nUin = atol(data_arg); 
     932 
     933  if (nUin != 0 && !gUserManager.IsOnList(nUin)) 
     934  { 
     935    fprintf(fs, "%d Invalid UIN.\n", CODE_INVALIDxUSER); 
     936    return fflush(fs); 
     937  } 
     938 
     939  fprintf(fs, "%d Enter %sauto response, terminate with a . on a line by itself:\n", 
     940     CODE_ENTERxTEXT, nUin == 0 ? "" : "custom " ); 
     941 
     942  m_nUin = nUin; 
     943  m_szText[0] = '\0'; 
     944  m_nTextPos = 0; 
     945 
     946  m_nState = STATE_ENTERxAUTOxRESPONSE; 
     947  return fflush(fs); 
     948} 
     949 
     950int CRMSClient::Process_AR_text() 
     951{ 
     952  if (m_nUin == 0) 
     953  { 
     954    ICQOwner *o = gUserManager.FetchOwner(LOCK_W); 
     955    o->SetAutoResponse(m_szText); 
     956    gUserManager.DropOwner(); 
     957  } 
     958  else 
     959  { 
     960    ICQUser *u = gUserManager.FetchUser(m_nUin, LOCK_W); 
     961    u->SetCustomAutoResponse(m_szText); 
     962    gUserManager.DropUser(u); 
     963  } 
     964 
     965  fprintf(fs, "%d Auto response saved.\n", CODE_RESULTxSUCCESS); 
     966  m_nState = STATE_COMMAND; 
     967  return fflush(fs); 
     968} 
     969 
     970 
    897971 
    898972 
  • trunk/rms/src/rms.h

    r1865 r1902  
    7474  int Process_LOG(); 
    7575  int Process_VIEW(); 
     76  int Process_AR(); 
    7677 
    7778protected: 
     
    99100  int Process_URL_url(); 
    100101  int Process_URL_text(); 
     102  int Process_AR_text(); 
    101103 
    102104