//=====================>>> vProgressCmd::initialize <<<=======================
  void vProgressCmd::initialize()
  {

    SysDebug(Constructor,"vProgressCmd::vProgressCmd() constructor\n")

    CopyToLocal();

    long style;

    style = WS_GROUP;		 // Make local copies of CmdObject

     if (!(dlgCmd->attrs & CA_Hidden))	// Check for Hidden
	style |= WS_VISIBLE;

     style |= BS_OWNERDRAW;		// We are drawing this

    _isVert = (dlgCmd->attrs & CA_Vertical);

    int ProgressHeight = (dlgCmd->attrs & CA_Large) ? 150 : 100;
    if ((dlgCmd->attrs) & CA_Small)
	ProgressHeight = 50;
    if (dlgCmd->size > 0)
	ProgressHeight = dlgCmd->size;		// they gave size

    int* minMax = (int *)_itemList;	// giving range?
    _minVal = 0; _maxVal = 100;			// default min/max
    if (minMax != 0)				// They gave a range list
      {
	_minVal = minMax[0];
	_maxVal = minMax[1];
      }
    if (_minVal > _maxVal)
      {
	SysDebug2(BadVals,"vProgressCmd:vProgressCmd - bad range %d to %d\n",_minVal,_maxVal)
	_minVal = 0; _maxVal = 100;	// make some sense!
      }

    if (_retVal < _minVal)	// set a legal value for the top
	_curVal = _minVal;
    else if (_retVal > _maxVal)
	_curVal = _maxVal;
    else
	_curVal = _retVal;

    if (_isVert)		// set sizes for V or H
      {
	_h = ProgressHeight;
	_w = 10;
      }
    else
      {
	_h = 14;
	_w = ProgressHeight;
      }

    _parentWin->SetPosition(_x, _y, _w, _h, dlgCmd->cFrame, dlgCmd->cRightOf,
	dlgCmd->cBelow);
    _CtrlOffset = _parentWin->AddDlgControl(_x, _y, _w, _h, _cmdId,
	style, "BUTTON", _title, sizeof(vProgressCmd*), (LPBYTE)this);
  }
示例#2
0
文件: pe.c 项目: AshishKumar4/acess2
int PE_int_GetForwardSymbol(char *Fwd, void **Value)
{
	char	*libname;
	char	*sym;
	 int	i;
	void	*libbase;
	 int	ret;
	
	// -- Find seperator
	// PE spec says that there sould only be one, but the string may
	// be mutilated in the loader
	for(i=0;Fwd[i]!='\0';i++);
	for(;i&&Fwd[i]!='.';i--);
	
	Fwd[i] = '\0';
	sym = &Fwd[i+1];
	
	libname = PE_int_GetTrueFile(Fwd);
	
	DEBUGS(" PE_int_GetForwardSymbol: Get '%s' from '%s'\n", sym, libname);
	
	libbase = LoadLibrary(libname, DLL_BASE_PATH, NULL);
	ret = GetSymbolFromBase(libbase, sym, Value, NULL);
	if(!ret) {
		SysDebug(" PE_int_GetForwardSymbol: Unable to find '%s' in '%s'\n", sym, libname);
		return 0;
	}
	Fwd[i] = '.';
	return ret;
}
//======================>>> vTimer::vTimer <<<=======================
  vTimer::vTimer( )		// default constructor
  {
    SysDebug(Constructor,"vTimer::vTimer - constructor\n");

    _id = 0;			// no id
    _interval = 0;		// no interval
  }
//================>>> vCanvasPane::vCanvasPane <<<========================
  vCanvasPane::vCanvasPane(PaneType pt) : vPane(pt)
  {
    SysDebug(Constructor,"vCanvasPane::vCanvasPane() constructor\n")

    _cpDC = 0;		// no pane DC
    _compressRedraw = 1;
    _currentCursor = VC_Arrow;
  }
//======================>>> vTimer::~vTimer <<<=======================
  vTimer::~vTimer( )
  {
    SysDebug(Destructor,"vTimer::~vTimer - destructor\n");

    if (_id)			// remove timer if in effect
      {
	TimerStop();
      }
  }
示例#6
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC WORD Refine(Object *object, AccMask mask)
{
	word rc = Err_Null;
	MCB *mcb ;
	IOCReply2 *rep;
	Port reply;

#ifdef SYSDEB
	SysDebug(ioc)("Refine(%O,%A)",object,mask);
#endif

	if( (rc = CheckObject(object,C_Locate)) != Err_Null ) return rc;

	reply = object->Reply;
	
	mcb = NewMsgBuf(0);

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP+FG_Refine|object->FnMod);

	MarshalCommon(mcb,object,NULL);
	MarshalWord(mcb,mask);

	if( (rc = IOCMsg(mcb,NULL)) < Err_Null ) goto Done;

	rep = (IOCReply2 *)mcb->Control;

	object->Access = rep->Cap;	/* copy new capability in */

	rc = Err_Null;

    Done:

#ifdef SYSDEB
	SysDebug(ioc)("Refine: %E",rc);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("Refine: Non-Null Reply port %x",mcb->MsgHdr.Reply);
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);
	FreeMsgBuf(mcb);

	object->Result2 = rc;
	
	return rc;
}
示例#7
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC WORD
SetDate(
	Object *	object,
	STRING		name,
	DateSet *	dates )
{
	word rc = Err_Null;
	MCB *mcb ;
	Port reply;

#ifdef SYSDEB
	SysDebug(ioc)("SetDate(%O,%N)",object,name);
#endif

	if( (rc = CheckObject(object,C_Locate)) != Err_Null ) return rc;

	reply = object->Reply;
	
	mcb = NewMsgBuf(0);

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP+FG_SetDate|object->FnMod);

	MarshalCommon(mcb,object,name);
	MarshalDate(mcb,dates->Creation);
	MarshalDate(mcb,dates->Access);
	MarshalDate(mcb,dates->Modified);

	if( (rc = IOCMsg(mcb,NULL)) < Err_Null ) goto Done;

	rc = Err_Null;

    Done:
#ifdef SYSDEB
	SysDebug(ioc)("SetDate: %E",rc);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("SetDate: Non-Null Reply port %x",mcb->MsgHdr.Reply);
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);
	FreeMsgBuf(mcb);

	object->Result2 = rc;
	
	return rc;
}
示例#8
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC WORD
ObjectInfo(
	   Object *	object,
	   STRING	name,
	   byte *	info )
{
	word rc = Err_Null;
	MCB *mcb ;
	Port reply;

#ifdef SYSDEB
	SysDebug(ioc)("ObjectInfo(%O,%N,%P)",object,name,info);
#endif

	if( (rc = CheckObject(object,C_Locate)) != Err_Null ) return rc;
	
	reply = object->Reply;
	
	mcb = NewMsgBuf(0);

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP+FG_ObjectInfo|object->FnMod);

	MarshalCommon(mcb,object,name);

	if( (rc = IOCMsg(mcb,info)) < Err_Null ) goto Done;

	rc = Err_Null;

    Done:
#ifdef SYSDEB
	SysDebug(ioc)("ObjectInfo: %E infosize %d",rc,mcb->MsgHdr.DataSize);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("ObjectInfo: Non-Null Reply port %x",mcb->MsgHdr.Reply);	
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);

	FreeMsgBuf(mcb);

	object->Result2 = rc;
	
	return rc;
	
}
示例#9
0
//================>>> vRadioButtonCmd::vRadioButtonCmd <<<=====================
vRadioButtonCmd::vRadioButtonCmd(vCmdParent* dp, CommandObject* dc) :
    vCmd(dp, dc)
{
    // Create bitmaps if need to


    SysDebug(Constructor,"vRadioButtonCmd::vRadioButtonCmd() constructor\n")

    initialize();			// and initialize
}
示例#10
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC WORD
Link(
     Object *	object,
     string	name,
     Object *	to )
{
	word rc = Err_Null;
	MCB *mcb ;
	Port reply;
#ifdef SYSDEB
	SysDebug(ioc)("Link(%O,%N,%O)",object,name,to);
#endif

	if( (rc = CheckObject(object,C_Locate)) != Err_Null ) return rc;

	reply = object->Reply;
	
	mcb = NewMsgBuf(0);

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP+FG_Link|object->FnMod);

	MarshalCommon(mcb,object,name);
	MarshalString(mcb,to->Name);
	MarshalCap(mcb,&to->Access);

	if( (rc = IOCMsg(mcb,NULL)) < Err_Null ) goto Done;

	rc = Err_Null;

    Done:
#ifdef SYSDEB
	SysDebug(ioc)("Link: %E",rc);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("Link: Non-Null Reply port %x",mcb->MsgHdr.Reply);
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);

	FreeMsgBuf(mcb);

	object->Result2 = rc;
	
	return rc;
}
示例#11
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC WORD
Protect(
	Object *	object,
	STRING		name,
	Matrix		matrix )
{
	word rc = Err_Null;
	MCB *mcb ;
	Port reply;

#ifdef SYSDEB
	SysDebug(ioc)("Protect(%O,%N,%X)",object,name,matrix);
#endif

	if( (rc = CheckObject(object,C_Locate)) != Err_Null ) return rc;

	reply = object->Reply;
	
	mcb = NewMsgBuf(0);

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP+FG_Protect|object->FnMod);

	MarshalCommon(mcb,object,name);
	MarshalWord(mcb,matrix);

	if( (rc = IOCMsg(mcb,NULL)) < Err_Null ) goto Done;

	rc = Err_Null;

    Done:
#ifdef SYSDEB
	SysDebug(ioc)("Protect: %E",rc);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("Protect: Non-Null Reply port %x",mcb->MsgHdr.Reply);
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);
	FreeMsgBuf(mcb);

	object->Result2 = rc;
	
	return rc;
}
//=====================>>> vColorButtonCmd::initColor <<<=======================
  void vColorButtonCmd::initColor(void)
  {
    // wCmd is the widget of this button

    SysDebug(Constructor,"vColorButtonCmd::vColorButtonCmd() constructor\n")

    _origColor = 0;
    if (_itemList != 0)				// an RGB provided
      {
	_origColor = (vColor*)_itemList;	// point to the rgb
	_color = *_origColor;
      }
  }
//====================>>> vCmdWindow::vCmdWindow <<<=======================
  vCmdWindow::vCmdWindow(VCONST char *name, int width, int height ) :
    vWindow(name, width, height, CMDWINDOW)
  {
    // make widgets null

    SysDebug(Constructor,"vCmdWindow::vCmdWindow() constructor\n")

    destroyed = 0;		// we haven't been destroyed

    NextCmdWin = CmdWins;	// link in to list of cmdwindows
    CmdWins = this;		// put on front of the list
    ++_numCmdWindows;		// bump how many windows up
  }
//=====================>>> vTextInCmd::initialize <<<=======================
  void vTextInCmd::initialize(void)
  {
    // build a TextIn command for use in a parent window

    SysDebug(Constructor,"vTextInCmd::vTextInCmd() constructor\n")

    _msg[0] = 0;			// no string yet

    CopyToLocal();			// Make local copies of CmdObject

    int defLen = strlen(_title);	// length of supplied string

    if (defLen < 130) strcpy(_msg,_title);

    int defWidth = (dlgCmd->attrs & CA_Large) ? 35 : 20;

    if (dlgCmd->attrs & CA_Small)	// allow small, too.
	defWidth = 10;

    if (dlgCmd->size > 0)		// V:1.13
    	defWidth = dlgCmd->size;

    if (defLen > defWidth)    		// Some work space
	defWidth = defLen + 6;

    long style = ES_LEFT | ES_AUTOHSCROLL | WS_TABSTOP; // V 1.18 BEW

    if (dlgCmd->attrs & CA_Password)
    	style |= ES_PASSWORD;

    if (!(dlgCmd->attrs & CA_NoBorder))
	style |= WS_BORDER;

    if (!(dlgCmd->attrs & CA_Hidden))	// Check for Hidden
	style |= WS_VISIBLE;

    _w = defWidth * 4 + 6;

    _h = 14;				// default height


    _parentWin->SetPosition(_x, _y, _w, _h, dlgCmd->cFrame, dlgCmd->cRightOf,
         dlgCmd->cBelow);

    _CtrlOffset = _parentWin->AddDlgControl(_x, _y , _w, _h, _cmdId,
	   style, "EDIT", _title, sizeof(vTextInCmd*), (LPBYTE)this);
  }
//=================>>> vComboBoxCmd::vComboBoxCmd <<<=======================
  vComboBoxCmd::vComboBoxCmd(vCmdParent* dp, CommandObject* dc) :
	    vCmd(dp, dc)
  {
    SysDebug(Constructor,"vComboBoxCmd::vComboBoxCmd() constructor\n")

    CopyToLocal();			// Make local copies of CmdObject

    // First, setup the list
    _maxWidth = 10;

    SetupComboList();

    _maxWidth = (dlgCmd->attrs & CA_Large) ? (_maxWidth * 3)/2
					      :	_maxWidth;

    long style = (_parentWin->_dialogType != aCmdBar)
		 ? WS_TABSTOP | WS_GROUP
		 : WS_GROUP;

    
    if (!(dlgCmd->attrs & CA_Hidden))	// Check for Hidden
	style |= WS_VISIBLE;

    style |=  CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL;

     _w = _maxWidth*4+10;		// set my width


    _h = 14;        		// 14 is std height for combo without list


    _parentWin->SetPosition(_x, _y, _w, _h, dlgCmd->cFrame, dlgCmd->cRightOf,
	dlgCmd->cBelow);

    _CtrlOffset = _parentWin->AddDlgControl(_x, _y, _w, _h, _cmdId,
	style, "COMBOBOX", _title, sizeof(vCmd*), (LPBYTE)this);
  }
//============================>>> vCmdWindow::CloseWin <<<===================
  void vCmdWindow::CloseWin(void)
  {
    //	close button class callback

    vCmdWindow* cw_list;

    SysDebug(Build,"vCmdWindow::CloseWin()\n");

    --_numCmdWindows;			// windows down by one
    // Remove from active list
    if (CmdWins == this)		// first one on list
      {
	CmdWins = CmdWins->NextCmdWin;	// point to next
      }
    else
      {
	for (cw_list = CmdWins ; cw_list != 0 ; cw_list = cw_list->NextCmdWin)
	  {
	    if (cw_list->NextCmdWin == this)
	      {
		// remove from list
		cw_list->NextCmdWin = (cw_list->NextCmdWin)->NextCmdWin;
		break;
	      }
	  }
      }
    
    vWindow::CloseWin();		// Close Stuff in parent
    if (CmdWins == 0)			// last one?
      {
        theApp->selectCmdPanes(0);	// turn off all command panes
	// following added 25Aug99 after input from [email protected]
	// to force menu bar to be correctly updated.
	::DrawMenuBar(theApp->winHwnd()); 
	theApp->CloseLastCmdWindow(this,0);
      }
  }
    _h = 14;        		// 14 is std height for combo without list


    _parentWin->SetPosition(_x, _y, _w, _h, dlgCmd->cFrame, dlgCmd->cRightOf,
	dlgCmd->cBelow);

    _CtrlOffset = _parentWin->AddDlgControl(_x, _y, _w, _h, _cmdId,
	style, "COMBOBOX", _title, sizeof(vCmd*), (LPBYTE)this);
  }

//=======================>>> vComboBoxCmd::~vComboBoxCmd <<<=======================
  vComboBoxCmd::~vComboBoxCmd()
  {

    SysDebug(Constructor,"vComboBoxCmd::~vComboBoxCmd() Constructor\n")

  }

//==================>>> vComboBoxCmd::GetCmdValue <<<=========================
  int vComboBoxCmd::GetCmdValue(ItemVal id) VCONST
  {
    if (id != _cmdId)
	return -1;
    return _curSelection;
  }

//=====================>>> vComboBoxCmd::SetCmdVal <<<=========================
  void vComboBoxCmd::SetCmdVal(ItemVal val, ItemSetType st)
  {
示例#18
0
文件: pe.c 项目: AshishKumar4/acess2
// === CODE ===
void *PE_Relocate(void *Base, char **envp, const char *Filename)
{
	tPE_DOS_HEADER		*dosHdr = Base;
	tPE_IMAGE_HEADERS	*peHeaders;
	tPE_DATA_DIR	*directory;
	tPE_IMPORT_DIR	*impDir;
	tPE_HINT_NAME	*name;
	Uint32	*importTab, *aIAT;
	 int	i, j;
	intptr_t	iBase = (intptr_t)Base;
	void	*pLibBase;
	
	DEBUGS("PE_Relocate: (Base=0x%x)\n", Base);
	
	peHeaders = Base + dosHdr->PeHdrOffs;
	
	directory = peHeaders->OptHeader.Directory;
	
	// === Load Import Tables
	impDir = Base + directory[PE_DIR_IMPORT].RVA;
	for( i = 0; impDir[i].DLLName != NULL; i++ )
	{
		impDir[i].DLLName += iBase;
		impDir[i].ImportLookupTable += iBase/4;
		impDir[i].ImportAddressTable += iBase/4;
		DEBUGS(" PE_Relocate: DLL Required '%s'(0x%x)\n", impDir[i].DLLName, impDir[i].DLLName);
		pLibBase = LoadLibrary(PE_int_GetTrueFile(impDir[i].DLLName), DLL_BASE_PATH, envp);
		if(pLibBase == 0) {
			SysDebug("Unable to load required library '%s'\n", impDir[i].DLLName);
			return 0;
		}
		DEBUGS(" PE_Relocate: Loaded as 0x%x\n", pLibBase);
		importTab = impDir[i].ImportLookupTable;
		aIAT = impDir[i].ImportAddressTable;
		for( j = 0; importTab[j] != 0; j++ )
		{
			if( importTab[j] & 0x80000000 )
				DEBUGS(" PE_Relocate: Import Ordinal %i\n", importTab[j] & 0x7FFFFFFF);
			else
			{
				void	*symPtr = 0;
				name = (void*)( iBase + importTab[j] );
				DEBUGS(" PE_Relocate: Import Name '%s', Hint 0x%x\n", name->Name, name->Hint);
				if( GetSymbolFromBase(pLibBase, name->Name, symPtr, NULL) == 0 )
				{
					SysDebug("Unable to find symbol '%s' in library '%s'\n", name->Name, impDir[i].DLLName);
					return 0;
				}
				aIAT[j] = (intptr_t)symPtr;
			}
		}
	}
	
	#if DEBUG
	for(i=0;i<PE_DIR_LAST;i++) {
		if(directory[i].RVA == 0)	continue;
		SysDebug("directory[%i] = {RVA=0x%x,Size=0x%x}\n", i, directory[i].RVA, directory[i].Size);
	}
	#endif
	
	DEBUGS("PE_Relocate: RETURN 0x%x\n", iBase + peHeaders->OptHeader.EntryPoint);
	
	return (void*)( iBase + peHeaders->OptHeader.EntryPoint );
}

#define TextInFont SysVariableFont        // The font to use

//=====================>>> vTextInCmd::vTextInCmd <<<=======================
  vTextInCmd::vTextInCmd(vCmdParent* dp, CommandObject* co) :
    vCmd(dp, co)
  {
    initialize();
  }

//=====================>>> vTextInCmd::~vTextInCmd <<<=======================
  vTextInCmd::~vTextInCmd()
  {

    SysDebug(Destructor,"vTextInCmd::~vTextInCmd() destructor\n")

  }

//=====================>>> vTextInCmd::initialize <<<=======================
  void vTextInCmd::initialize(void)
  {
    // build a TextIn command for use in a parent window

    SysDebug(Constructor,"vTextInCmd::vTextInCmd() constructor\n")

    _msg[0] = 0;			// no string yet

    CopyToLocal();			// Make local copies of CmdObject

    int defLen = strlen(_title);	// length of supplied string
#include <v/vwin32.h>		// for Win 32 stuff
#include <v/vcbtncmd.h>	// our definitions
#include <v/vcmdprnt.h>	// a command parent

//=================>>> vColorButtonCmd::vColorButtonCmd <<<=====================
  vColorButtonCmd::vColorButtonCmd(vCmdParent* dp, CommandObject* dc) :
	vButtonCmd(dp, dc)
  {
    initColor();
  }

//====================>>> vColorButtonCmd::~vColorButtonCmd <<<=================
  vColorButtonCmd::~vColorButtonCmd()
  {

    SysDebug(Destructor,"vColorButtonCmd::~vColorButtonCmd() destructor\n")
  }

//=====================>>> vColorButtonCmd::initColor <<<=======================
  void vColorButtonCmd::initColor(void)
  {
    // wCmd is the widget of this button

    SysDebug(Constructor,"vColorButtonCmd::vColorButtonCmd() constructor\n")

    _origColor = 0;
    if (_itemList != 0)				// an RGB provided
      {
	_origColor = (vColor*)_itemList;	// point to the rgb
	_color = *_origColor;
      }
#include <v/vapp.h>
#include <v/vutil.h>


//=================>>> vProgressCmd::vProgressCmd <<<=======================
  vProgressCmd::vProgressCmd(vCmdParent* dp, CommandObject* dc) :
	    vCmd(dp, dc)
  {
    initialize();			// and initialize
  }

//=======================>>> vProgressCmd::~vProgressCmd <<<===================
  vProgressCmd::~vProgressCmd()
  {

    SysDebug(Constructor,"vProgressCmd::~vProgressCmd() Destructor\n")

  }

//=====================>>> vProgressCmd::initialize <<<=======================
  void vProgressCmd::initialize()
  {

    SysDebug(Constructor,"vProgressCmd::vProgressCmd() constructor\n")

    CopyToLocal();

    long style;

    style = WS_GROUP;		 // Make local copies of CmdObject
示例#22
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC Stream *
Open(
     Object *	object,
     string	name,
     word	mode )
{
	word rc = Err_Null;
	Stream *stream = NULL;
	MCB *mcb;
	IOCReply1 *rep;
	word stlen;
	Port reply;

#ifdef SYSDEB
	SysDebug(ioc)("Open(%O,%N,%x)",object,name,mode);
#endif

	if( CheckObject(object,C_Locate) != Err_Null ) return Null(Stream);

	reply = NewPort();

	mcb = NewMsgBuf(0);
	rep = (IOCReply1 *)mcb->Control;

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP|FG_Open|object->FnMod);

	MarshalCommon(mcb,object,name);

	MarshalWord(mcb,mode);

	if( (rc = IOCMsg(mcb,NULL)) < Err_Null ) goto Done;

	stlen = sizeof(Stream) + (word)strlen(mcb->Data+rep->Pathname) + SafetyMargin;

	stream = (Stream *)Malloc(stlen);

	if( stream == NULL ) 
	{
		rc = EC_Error|SS_SysLib|EG_NoMemory|EO_Stream;
		goto Done;
	}
	else memclr( (void *)stream, (int)stlen );

	if( SetupStream( stream, mcb ) )
	{
		stream->Flags |= mode&Flags_SaveMode;
		InitSemaphore( &stream->Mutex, 1 );
		stream->Pos = 0;
	}

	AddStream( stream );	

	rc = Err_Null;
	
	if( mode & Flags_Append ) Seek(stream, S_End, 0);
    Done:
#ifdef SYSDEB
	SysDebug(ioc)("Open: %E stream: %S",rc,stream);
#endif
	FreeMsgBuf(mcb);

	if( rc < Err_Null ) FreePort(reply);

	object->Result2 = rc;
	return stream;
}
    // make widgets null

    SysDebug(Constructor,"vCmdWindow::vCmdWindow() constructor\n")

    destroyed = 0;		// we haven't been destroyed

    NextCmdWin = CmdWins;	// link in to list of cmdwindows
    CmdWins = this;		// put on front of the list
    ++_numCmdWindows;		// bump how many windows up
  }

//====================>>> vCmdWindow::~vCmdWindow <<<=======================
  vCmdWindow::~vCmdWindow()			// destructor
  {

    SysDebug(Destructor,"vCmdWindow::~vCmdWindow() destructor\n")

  }

//============================>>> vCmdWindow::CloseWin <<<===================
  void vCmdWindow::CloseWin(void)
  {
    //	close button class callback

    vCmdWindow* cw_list;

    SysDebug(Build,"vCmdWindow::CloseWin()\n");

    --_numCmdWindows;			// windows down by one
    // Remove from active list
    if (CmdWins == this)		// first one on list
示例#24
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC Object *
Create(
       Object *	object,
       string	name,
       word	type,
       word	size,
       byte *	data )
{
	word rc = Err_Null;
	Object *obj = Null(Object);
	MCB *mcb;
	IOCReply1 *rep;
	word oblen;
	Port reply;

#ifdef SYSDEB
	SysDebug(ioc)("Create(%O,%N,%T,%d,%P)",object,name,type,size,data);
#endif

	if ( CheckObject(object,C_Locate) != Err_Null )
	  {
	    return NULL;
	  }

	reply = NewPort();

	mcb = NewMsgBuf(0);
	rep = (IOCReply1 *)mcb->Control;
	
	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP|FG_Create|object->FnMod);

	MarshalCommon(mcb,object,name);

	MarshalWord(mcb,type);
	MarshalWord(mcb,size);
	MarshalOffset(mcb);
	MarshalData(mcb,size,data);

	mcb->Timeout = object->Timeout;
	
	/* IOdebug( "Create: sending message" ); */
	
	if ( (rc = IOCMsg(mcb, NULL)) < Err_Null )
	  {
	    /* IOdebug( "Create: message send failed" ); */
	    
	    goto Done;
	  }
	
	/* IOdebug( "Create: message sent" ); */
	
	oblen = sizeof(Object) + (word)strlen(mcb->Data+rep->Pathname) + SafetyMargin;

	obj = (Object *)Malloc(oblen);
	
	if ( obj == NULL )
	  {
	    rc = EC_Error|SS_SysLib|EG_NoMemory|EO_Object;
		
	    goto Done;
	  }	
	else memclr( (void *)obj, (int)oblen );

	obj->Type    = rep->Type;
	obj->Flags   = rep->Flags;
	obj->Access  = rep->Access;
	obj->Reply   = reply;
	obj->FnMod   = rc & SS_Mask;
	obj->Timeout = IOCTimeout;
	
	strcpy(obj->Name,mcb->Data+rep->Pathname);

	AddObject( obj );

	rc = Err_Null;

    Done:
#ifdef SYSDEB
	SysDebug(ioc)("Create: %E object: %O",rc,obj);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("Create: Non-Null Reply port %x",mcb->MsgHdr.Reply);
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);

	FreeMsgBuf(mcb);

	if( rc < Err_Null ) FreePort(reply);

	object->Result2 = rc;
	
	return obj;	
}
示例#25
0
文件: ioc.c 项目: jamjr/Helios-NG
PUBLIC Object *
Locate(
       Object *	object,
       STRING	name )
{
	word rc = Err_Null;
	Object *obj = Null(Object);
	MCB *mcb;
	IOCReply1 *rep;
	word oblen;
	Port reply;
	word fnmod = 0;


#ifdef SYSDEB
	SysDebug(ioc)("Locate(%O,%N)",object,name);
#endif
	/* Locate can be called with a null object pointer */
	
	if( object != NULL ) 
	{	
		if( CheckObject(object,C_Locate) != Err_Null )
		  {
		    return NULL;
		  }
		
		fnmod = object->FnMod;
	}

	reply = NewPort();

	mcb = NewMsgBuf(0);
	rep = (IOCReply1 *)mcb->Control;

	InitMCB(mcb,MsgHdr_Flags_preserve,
		MyTask->IOCPort,reply,FC_GSP|FG_Locate|fnmod);

	MarshalCommon(mcb,object,name);

	if( (rc = IOCMsg(mcb,NULL)) < Err_Null )
	  {
	    goto Done;
	  }

	oblen = sizeof(Object) + (word)strlen(mcb->Data+rep->Pathname) + SafetyMargin;

	obj = (Object *)Malloc(oblen);
	
	if( obj == NULL )
	{
		rc = EC_Error|SS_SysLib|EG_NoMemory|EO_Object;

		goto Done;
	}
	else memclr( (void *)obj, (int)oblen );

	obj->Type    = rep->Type;
	obj->Flags   = rep->Flags;
	obj->Access  = rep->Access;
	obj->Reply   = reply;
	obj->FnMod   = rc & SS_Mask;
	obj->Timeout = IOCTimeout;
	
	strcpy(obj->Name,mcb->Data+rep->Pathname);

	AddObject( obj );

	rc = Err_Null;

    Done:
#ifdef SYSDEB
	SysDebug(ioc)("Locate: %E object: %O",rc,obj);
	if( mcb->MsgHdr.Reply != NullPort ) SysDebug(error)("Locate: Non-Null Reply port %x",mcb->MsgHdr.Reply);
#endif
	if( mcb->MsgHdr.Reply != NullPort ) FreePort(mcb->MsgHdr.Reply);

	FreeMsgBuf(mcb);

	if( object != Null(Object) ) object->Result2 = rc;

	if( rc < Err_Null ) FreePort(reply);

	return obj;
}