示例#1
0
static int _MsApi_BrickTerminator_Add2BootArgs (void)
{
    const char *BRICK_TERMINATOR_SPI_STATUS_OFFSET = BRICK_TERMINATOR_SPI_STATUS_OFFSET_STRING;
    unsigned int u32RescueStatusOffset =0;
    char buf[CMD_BUF] = "\0";    
    int ret=0;    
    // set BRICK_TERMINATOR_SPI_STATUS_OFFSET to bootargs
    MsApiChunkHeader_GetValue(CH_RESCURE_STATUS_ROM_OFFSET,&u32RescueStatusOffset);    
    u32RescueStatusOffset = GetRealOffset(u32RescueStatusOffset);
    sprintf(buf, "%s=%08X", BRICK_TERMINATOR_SPI_STATUS_OFFSET, u32RescueStatusOffset);
    if(0 != set_bootargs_cfg((char*)BRICK_TERMINATOR_SPI_STATUS_OFFSET, buf, 0))
    {
        UBOOT_ERROR("Error! set_bootargs_cfg failed\n");
        ret = -1;
    }

#if (PIN_FLASH_WP0&&ENABLE_MODULE_ENV_IN_SERIAL)    
    {   // set Write Protect GPIO to bootargs
        const char *BRICK_TERMINATOR_SPI_WP = BRICK_TERMINATOR_SPI_WP_GPIO_NUM_STRING;
        memset(buf,0,sizeof(buf));
        sprintf(buf, "%s=%X", BRICK_TERMINATOR_SPI_WP, PIN_FLASH_WP0);
        if(0 != set_bootargs_cfg((char*)BRICK_TERMINATOR_SPI_WP, buf, 0))
        {
            UBOOT_ERROR("%s: Error! set_bootargs_cfg failed, at %d\n", __func__, __LINE__);
            ret = -1;
        }
    }
#endif
    return ret;
}
//@doc SECEdit
//@mfunc Internal function.  Cuts the column of text from pStartPos to pEndPos, 
//              from column pStartPos->iOffset to pEndPos->iOffset.
//@rdesc int 
//@parm PTEXTPOS pStartPos
//@parm  PTEXTPOS pEndPos
//@parm  BOOL bSaveUndoRecord
int SECEdit::ColumnCut(PTEXTPOS pStartPos, PTEXTPOS pEndPos, BOOL bSaveUndoRecord)
   {
   int iRval;
   UNDORECORD UndoRecord;
   LPSTR lpText;
   PLINEDESC pLine;
   TEXTPOS TextPos;
   TEXTPOS StartPos,EndPos;

   if (m_bReadOnly)
      return IDS_OE_READONLY;

   // column blocks may not be in order...
   if (!InOrder(pStartPos,pEndPos))
      {
      StartPos = *pEndPos;
      EndPos = *pStartPos;
      }
   else
      {
      StartPos = *pStartPos;
      EndPos = *pEndPos;
      }

   iRval = 0;

	UndoRecord.iCol    = StartPos.iOffset;
	UndoRecord.iEndCol = EndPos.iOffset;

	if (bSaveUndoRecord)
		{
		UndoRecord.iRow    = GetLineNo(StartPos.pLine);
		UndoRecord.iEndRow = GetLineNo(EndPos.pLine);
		UndoRecord.iUndoType = OE_UNDO_COLUMNCUT;
		lpText = ColumnCopy(&StartPos, &EndPos, FALSE);
		}

	int iTabbedOffset = GetTabbedOffset(StartPos.pLine,StartPos.iOffset);
	int iCount = UndoRecord.iEndCol - UndoRecord.iCol;
   pLine = StartPos.pLine;
   while (pLine)
      {
      TextPos.pLine = pLine;
		TextPos.iOffset = GetRealOffset(TextPos.pLine,iTabbedOffset);
      iRval = DeleteString(&TextPos, iCount, FALSE);
		if (pLine == EndPos.pLine)
			break;
		pLine = pLine->pNext;
      }

   if (!iRval && bSaveUndoRecord)
		{
      SaveUndoRecord(&UndoRecord, lpText);
		free(lpText);
		}

   return iRval;
   }
CStdEditorPosition CSECEditor::ToOffsetPosition (const CStdEditorPosition &position)
{
    int iLine;
    int iColumn;

    position.GetXYPosition (iColumn, iLine);

    if (iColumn > 0 && IsValidLine(iLine))
    {
        PLINEDESC pLineDesc;

        pLineDesc = GoToLineNo (iLine);
        iColumn = -(GetRealOffset (pLineDesc, iColumn - 1));
    };

    return (CStdEditorPosition (EDP_STLINE, iColumn, iLine, position.GetCX(), position.GetCY()));	// s-2155 22.03.05 SIS
}