예제 #1
0
/*
**  This function verify that the last SQL error number was -39100 and that the
**  error text starts with the E_GC0132 text, to return a additional
**  warning to explain why the "register as link" command failed.
**
**  Input parameters
**    csDestNodeName    : 
**    csCurrentNodeName :
**
**  return value
**    The additional warning or Empty string.
*/
CString VerifyStarSqlError(LPCTSTR csDestNodeName, LPCTSTR csCurrentNodeName)
{
  TCHAR *szErrNo132 = _T("E_GC0132");
  LPSQLERRORINFO lpsqlErrInfo;
  CString csTemp;
  csTemp.Empty();
  lpsqlErrInfo = GetNewestSqlError();
  if (lpsqlErrInfo && lpsqlErrInfo->sqlcode == -39100L &&
      x_strncmp((LPTSTR)lpsqlErrInfo->lpSqlErrTxt,szErrNo132,lstrlen(szErrNo132)) == 0)
  {
      csTemp.Format(IDS_E_VNODE_NOT_DEFINE,(LPCTSTR)csDestNodeName,
                    (IsLocalNodeName((const char*)csCurrentNodeName, FALSE) ? (LPCTSTR)GetLocalHostName():(LPCTSTR)csCurrentNodeName));
  }
  return csTemp;
}
예제 #2
0
void CxDlgCheckPointLst::fillListCtrl()
{
	if (m_csCurDBName.IsEmpty() || m_csCurDBOwner.IsEmpty() || m_csCurVnodeName.IsEmpty())
		return;

	m_CaCheckPointList.m_csDB_Name    = m_csCurDBName;
	m_CaCheckPointList.m_csDB_Owner   = m_csCurDBOwner;
	m_CaCheckPointList.m_csVnode_Name = m_csCurVnodeName;
	m_CaCheckPointList.RetrieveCheckPointList();

	CaCheckPoint* pCheckPt = NULL;
	POSITION pos = m_CaCheckPointList.GetCheckPointList().GetHeadPosition();
	int index, nCount=m_cListCtrl.GetItemCount();
	while (pos != NULL)
	{
		pCheckPt = m_CaCheckPointList.GetCheckPointList().GetNext (pos);
		if (pCheckPt)
		{
			index = m_cListCtrl.InsertItem(nCount,pCheckPt->GetDate());
			m_cListCtrl.SetItemText (index, 1, pCheckPt->GetCheckSequence());
			m_cListCtrl.SetItemText (index, 2, pCheckPt->GetFirstJnl());
			m_cListCtrl.SetItemText (index, 3, pCheckPt->GetLastJnl());
			if (x_strncmp(pCheckPt->GetValid(),_T("1"),1) == 0)
				m_cListCtrl.SetCheck(index, 4,TRUE);
			else
				m_cListCtrl.SetCheck(index, 4,FALSE);
			m_cListCtrl.SetItemText (index, 5, pCheckPt->GetMode());

			if ( m_csCurrentSelectedCheckPoint == pCheckPt->GetCheckSequence())
			{
				m_cListCtrl.SetItemState(index,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
				m_cListCtrl.EnsureVisible( index, FALSE );
			}

			nCount++;
		}
	}

}
예제 #3
0
파일: protocol.c 프로젝트: skoo87/Xpipe
int protocol_parse(tcp_request_t *r, u_char *start, u_char *end)
{
    size_t      data_len;
    u_char      c, *p;
    protocol_t *pro;

    pro = r->protocol;

    enum {
        sw_start = 0,
        sw_type,
        sw_type_cr,
        sw_type_lf,
        sw_headers,
        sw_headers_cr,
        sw_headers_lf,
        sw_data_len,
        sw_data_len_cr,
        sw_data_len_lf,
        sw_data
    } state; 

    state = pro->state;
    data_len = pro->tmp_data_len;

    for (p = start; p != end; p++) {
        c = *p;

        switch (state) {
        case sw_start:
            if (is_blank(c)) {
                break;
            }

            if (c < 'A' || c > 'Z') {
                return err_type_invalid;
            }

            pro->start = p;
            state = sw_type;

            break;
        case sw_type:
            if (c == CR) {
                pro->end = p;
                state = sw_type_cr;
                break;
            }

            if (c < 'A' || c > 'Z') {
                return err_type_invalid;
            }

            break;
        case sw_type_cr:
            if (c != LF) {
                return err_only_cr;
            }

            switch (pro->end - pro->start) {
            case 3:
                if (x_strncmp(pro->start, PUT, 3) == 0) {
                    pro->type = PUT_T;
                    break;
                }

                if (x_strncmp(pro->start, GET, 3) == 0) {
                    pro->type = GET_T;
                    break;
                }

                return err_type_not_found;
            case 4:
                if (x_strncmp(pro->start, LIST, 4) == 0) {
                    pro->type = LIST_T;
                    break;
                }

                return err_type_not_found;
            case 5:
                if (x_strncmp(pro->start, QUEUE, 5) == 0) {
                    pro->type = QUEUE_T;
                    break;
                }

                return err_type_not_found;
            default:
                return err_type_not_found;
            }

            state = sw_type_lf;
            break;
        case sw_type_lf:
            if (c == CR) {
                state = sw_headers_cr;
                break;
            }

            if (!is_letter(c) && !is_digit(c) 
                    && c != ';' && c != '_' && c != '=') 
            {
                return err_headers_invalid;
            }

            pro->headers_start = p;
            state = sw_headers;
            break;
        case sw_headers:
            if (c == CR) {
                pro->headers_end = p;
                state = sw_headers_cr;
                break;
            }

            if (!is_letter(c) && !is_digit(c) 
                    && c != ';' && c != '_' && c != '=') 
            {
                return err_headers_invalid;
            }

            break;
        case sw_headers_cr:
            if (c != LF) {
                return PROTOCOL_ERROR;
            }

            state = sw_headers_lf;
            break;
        case sw_headers_lf:
            if (pro->type != PUT_T) {
                return err_needless_data;            
            } else {
                if (!is_digit(c)) {
                    return err_data_len_invalid;
                }

                pro->start = p;
                state = sw_data_len;
                break;
            }
        case sw_data_len:
            if (c == CR) {
                pro->end = p;
                state = sw_data_len_cr;
                break;
            }

            if (!is_digit(c)) {
                return err_data_len_invalid;
            }

            break;
        case sw_data_len_cr:
            if (c != LF) {
                return err_only_cr; 
            }
            
            *(p - 1) = '\0';

            data_len = x_atoi(pro->start);
            pro->data_len = data_len;

            *(p - 1) = '\0';

            if (data_len <= 0) {
                return err_data_len_invalid;
            }

            state = sw_data_len_lf;
            break;
        case sw_data_len_lf:
            pro->data_start_buf = r->last_buffer;
            pro->data_start = p;
            data_len--;

            state = sw_data;
            break;
        case sw_data:
            if (data_len-- == 0) {
                return err_needless_data;
            }

            break;
        } 
    }

    if (pro->type != UNKNOW && pro->type != PUT_T && state == sw_headers_lf) {
        return PROTOCOL_DONE;
    }

    if (pro->type == PUT_T && state == sw_data && data_len == 0) {
        pro->data_end = p;
        return PROTOCOL_DONE;
    }

    pro->state = state;
    pro->tmp_data_len = data_len;

    return PROTOCOL_OK;
}
예제 #4
0
/****************************************************************************
Function        : CLI_Parser
Description     : CLI Parer main function
*****************************************************************************/
INT32 CLI_PromptParser(const char *szCmdBuf)
{
    INT32 i4ReturnValue;
    INT32 i4Argc;
    UINT32 u4Argc,i;
    UINT32 u4InCmdLen;
    char* aszTemp[CLI_MAX_ARGU];


    char buf[200];


    if (szCmdBuf == NULL)
    {
        return CLI_UNKNOWN_CMD;
    }
    // prepare argument
    for (u4InCmdLen = 0; u4InCmdLen < CLI_MAX_ARGU; u4InCmdLen++)
    {
        aszTemp[u4InCmdLen] = _aszArgv[u4InCmdLen];
    }

    i4Argc = _CliStringParser(szCmdBuf, CLI_MAX_ARGU, CLI_MAX_ARGU_LEN, aszTemp);
    u4Argc = (UINT32) i4Argc;

    cli_print("argc=%d,  ", (int)u4Argc);
    for(i=0;i<u4Argc;i++){
        cli_print("argv(%d)=%s ",(int)i,aszTemp[i]);
    }
    cli_print("\r\n");

    if (u4Argc > 0)
    {
		#if 0 //do not porting alias related code
        // alias handle, replace alias with corresponding string
        u4InCmdLen = strlen(aszTemp[0]);
        u4CmdLen = strlen(CLI_ALIAS_CMD_STR);
        u4CmdAbbrLen = strlen(CLI_ALIAS_CMD_ABBR_STR);

        if (!(((u4InCmdLen == u4CmdLen) && (x_strncmp(aszTemp[0], CLI_ALIAS_CMD_STR, u4InCmdLen) == 0)) ||
            ((u4InCmdLen == u4CmdAbbrLen) && (x_strncmp(aszTemp[0], CLI_ALIAS_CMD_ABBR_STR, u4InCmdLen) == 0))))
        {
            UINT32 u4Idx;
            u4Idx = 0;
            while (u4Idx < u4Argc)
            {
                pszAliasString = CLI_AliasCompare(aszTemp[u4Idx]);

                if (pszAliasString)
                {
                    UINT32 u4AliasIdx;
                    UINT32 u4AliasArgc;
                    CHAR* aszAliasTemp[CLI_MAX_ARGU];

                    // prepare alias argument
                    for (u4AliasIdx = 0; u4AliasIdx < CLI_MAX_ARGU; u4AliasIdx++)
                    {
                        aszAliasTemp[u4AliasIdx] = _aszAliasArgv[u4AliasIdx];
                    }

                    u4AliasArgc = (UINT32) _CliStringParser(pszAliasString, CLI_MAX_ARGU, CLI_MAX_ARGU_LEN, aszAliasTemp);

                    // too many argument after alias parser
                    if (u4AliasArgc > (CLI_MAX_ARGU - (u4Argc + 1)))
                    {
                        u4AliasArgc = CLI_MAX_ARGU - (u4Argc + 1);
                    }

                    // move back string argument after alias
                    for (u4AliasIdx = (u4Argc - 1); u4AliasIdx > u4Idx; u4AliasIdx--)
                    {
                        VERIFY(x_strncpy(aszTemp[u4AliasIdx + (u4AliasArgc - 1)],
                                aszTemp[u4AliasIdx],
                                CLI_MAX_ARGU_LEN) == aszTemp[u4AliasIdx + (u4AliasArgc - 1)]);
                    }

                    // copy alias string arguemnt
                    for (u4AliasIdx = 0; u4AliasIdx < u4AliasArgc; u4AliasIdx++)
                    {
                        VERIFY(x_strncpy(aszTemp[u4Idx+u4AliasIdx],
                                aszAliasTemp[u4AliasIdx],
                                CLI_MAX_ARGU_LEN) == aszTemp[u4Idx+u4AliasIdx]);
                    }

                    u4Argc += (u4AliasArgc - 1);
                    u4Idx--;
                }
                u4Idx++;
            }
        }
		#endif

        i4Argc = (INT32) u4Argc;

        // command parsing, for all other user command table
        if (i4Argc > 0)
        {
        	//IOCTL_WRITE command string
			#if 1
        	//command
          	_CliGeneratePrompt();
			strcpy(buf, _szCliPromptStr);
			strcat(buf, _aszArgv[0]);

			//arguments
			for (i = 1; i < u4Argc; i++)
			{
				strcat(buf, " ");
				strcat(buf, _aszArgv[i]);

			}
			strcat(buf, "\0");
			#endif

            if (_prCurrentCmdTbl == NULL)   // root
            {
				UINT32 u4Idx;

				for (u4Idx = (CLI_MANDA_CMD_TBL_IDX + 1); u4Idx < _u4CmdTblNum; u4Idx++)
				{
					i4ReturnValue = _CliCmdParser(i4Argc, (const CHAR**)aszTemp, _aprCmdTblBuf[u4Idx], 0);
					if (i4ReturnValue != CLI_UNKNOWN_CMD)
					{
						//IOCTL_WRITE command when arguments are valid
						i4ReturnValue = write_cmd(buf);

						return i4ReturnValue;
					}
				}
            }
            else                            // sub-directory
            {
                i4ReturnValue = _CliCmdParser(i4Argc, (const CHAR**)aszTemp, _prCurrentCmdTbl, 0);
                if (i4ReturnValue != CLI_UNKNOWN_CMD)
                {
                	//IOCTL_WRITE command when arguments are valid
					i4ReturnValue = write_cmd(buf);

                    return i4ReturnValue;
                }
            }
        }

        // command parsing, mandatory table
        i4ReturnValue = _CliCmdParser(i4Argc, (const CHAR**)aszTemp, (CLI_EXEC_T *)_arMandatoryCmdTbl, 0);
        if (i4ReturnValue != CLI_UNKNOWN_CMD)
        {
            return i4ReturnValue;
        }
    }

    // cli help
    _CliShowHelp(_prCurrentCmdTbl);

    return CLI_UNKNOWN_CMD;
//    return 0;
}