int SandboxBrokerClient::Open(const char* aPath, int aFlags) { Request req = { SANDBOX_FILE_OPEN, aFlags }; int maybeFd = DoCall(&req, aPath, nullptr, true); if (maybeFd >= 0) { // NSPR has opinions about file flags. Fix O_CLOEXEC. if ((aFlags & O_CLOEXEC) == 0) { fcntl(maybeFd, F_SETFD, 0); } } return maybeFd; }
int singleStep (VM32Cpu * cpu) { unsigned char inst; unsigned char * ptr; /* Get an instruction */ ptr = (char *) cpu->pc; inst = *ptr; switch (inst) { /* Standard Op Codes */ case 0x00: DoBreak(cpu); break; case 0x01: DoNothing(cpu); break; case 0x02: DoCall(cpu); break; case 0x03: DoPushZero(cpu); break; case 0x04: DoPushImmediateNative(cpu); break; case 0x05: DoReturn(cpu); break; case 0x06: DoPop(cpu); break; case 0x07: DoSwap(cpu); break; case 0x08: DoSetupFrame(cpu); break; case 0x09: DoRestoreFrame(cpu); break; case 0x0a: CallNative(cpu); break; case 0x0b: DoPushSelf(cpu); break; case 0x0c: DoCheckArgCount(cpu); break; case 0x0d: DoBranch(cpu); break; case 0x0e: DoBranchIfTrue(cpu); break; case 0x0f: DoBranchIfFalse(cpu); break; default: DoInvalidInstruction(cpu); break; } return 0; }
/** Calls a method member directly. * \relates adbus_Member * * \note This may proxy the method call to another thread. * * This is useful when using the dbus binding for other purposes eg bindings * into an embedded scripting language. * * The bind can be gotten from the return value of adbus_conn_bind() or by * looking it up via adbus_conn_interface(). */ int adbus_mbr_call( adbus_Member* mbr, adbus_ConnBind* bind, adbus_CbData* d) { if (!mbr->methodCallback) { return adbusI_methodError(d); } adbus_iface_ref(mbr->interface); d->user1 = mbr; d->user2 = bind->cuser2; if (bind->proxy) { return bind->proxy(bind->puser, &DoCall, d); } else { return DoCall(d); } }
bool Ctrl::ProcessEvent(bool *quit) { ASSERT(IsMainThread()); if(DoCall()) return false; if(IsEndSession()) return false; if(!GetMouseLeft() && !GetMouseRight() && !GetMouseMiddle()) ReleaseCtrlCapture(); MSG msg; if(PeekMsg(msg)) { if(msg.message == WM_QUIT && quit) *quit = true; // LLOG(GetSysTime() << " % " << (unsigned)msecs() % 10000 << ": sProcessMSG " << FormatIntHex(msg.message)); sProcessMSG(msg); // LLOG(GetSysTime() << " % " << (unsigned)msecs() % 10000 << ": //sProcessMSG " << FormatIntHex(msg.message)); DefferedFocusSync(); SyncCaret(); return true; } return false; }
int Ardb::Exec(Context& ctx, RedisCommandFrame& cmd) { if (!ctx.InTransc()) { fill_error_reply(ctx.reply, "EXEC without MULTI"); return 0; } if (ctx.GetTransc().abort) { ctx.reply.type = REDIS_REPLY_NIL; ctx.ClearTransc(); return 0; } LockGuard<ThreadMutex> guard(g_transc_mutex); //only one transc allowed exec at the same time in multi threads RedisCommandFrameArray::iterator it = ctx.GetTransc().cached_cmds.begin(); Context transc_ctx; transc_ctx.currentDB = ctx.currentDB; while (it != ctx.GetTransc().cached_cmds.end()) { RedisReply& r = ctx.reply.AddMember(); RedisCommandHandlerSetting* setting = FindRedisCommandHandlerSetting(*it); if(NULL != setting) { transc_ctx.reply.Clear(); DoCall(transc_ctx, *setting, *it); r.Clone(transc_ctx.reply); } else { fill_error_reply(r, "unknown command '%s'", it->GetCommand().c_str()); } it++; } ctx.currentDB = transc_ctx.currentDB; ctx.ClearTransc(); UnwatchKeys(ctx); return 0; }
int ReportedDoCall (lua_State *L, int narg, int clear) { return Report(L, DoCall(L, narg, clear)); }
int main(int argc, char * argv[]) { Operations operation; if (argc < 2 || (operation = GetOperation(argv[1])) == NumOperations || argc < RequiredArgsForOperation[operation]) { Operations op; fputs("usage: c_api { ", stderr); for (op = OpListen; op < NumOperations; op++) { if (op > OpListen) fputs(" | ", stderr); fputs(OperationNames[op], stderr); } fputs(" } [ A-party [ B-party ] ]\n", stderr); return 1; } puts("Initialising.\n"); if (!InitialiseOPAL()) return 1; switch (operation) { case OpListen : puts("Listening.\n"); HandleMessages(60000); break; case OpCall : if (argc > 3) { if (!DoCall(argv[2], argv[3])) break; } else { if (!DoCall(NULL, argv[2])) break; } HandleMessages(15000); break; case OpMute : if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoMute(1)) break; HandleMessages(15000); if (!DoMute(0)) break; HandleMessages(15000); break; case OpHold : if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoHold()) break; HandleMessages(15000); break; case OpTransfer : if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoTransfer(argv[3])) break; HandleMessages(15000); break; case OpConsult : if (!DoCall(NULL, argv[2])) break; HandleMessages(15000); if (!DoHold()) break; HandleMessages(15000); if (!DoCall(NULL, argv[3])) break; HandleMessages(15000); if (!DoTransfer(HeldCallToken)) break; HandleMessages(15000); break; case OpRegister : if (!DoRegister(argv[2], argv[3])) break; HandleMessages(15000); break; default : break; } puts("Exiting.\n"); ShutDownFunction(hOPAL); return 0; }
static unsigned MechDo( unsigned select, unsigned parm ) { unsigned long size; unsigned result = 0; DIPHDL( type, th ); dip_type_info info; mad_type_info mti; switch( select ) { case 0: DoAssign(); break; case 1: DoMul(); break; case 2: DoDiv(); break; case 3: DoMod(); break; case 4: DoMinus(); break; case 5: DoShift(); break; case 6: DoAnd(); break; case 7: DoXor(); break; case 8: DoOr(); break; case 9: DoAddr(); break; case 10: ClassToTypeInfo( parm, &info ); DoPoints( info.kind ); break; case 11: DoField(); break; case 12: DoCall( Num, parm ); break; case 13: DoConvert(); break; case 14: DoPlus(); break; case 15: MakeAddr(); break; case 16: result = TstEQ( parm ); break; case 17: result = TstLT( parm ); break; case 18: result = TstTrue( parm ); break; case 19: result = TstExist( parm ); break; case 20: size = ExprSP->info.size; PopEntry(); PushNum( size ); break; case 21: TypeBase( ExprSP->th, th, NULL, NULL ); PopEntry(); PushType( th ); break; case 22: GetMADTypeDefault( MTK_ADDRESS, &mti ); size = (mti.b.bits - mti.a.seg.bits) / BITS_PER_BYTE; if( parm ) { size += sizeof( addr_seg ); TypePointer( ExprSP->th, TM_FAR, size, th ); } else { TypePointer( ExprSP->th, TM_NEAR, size, th ); } PopEntry(); PushType( th ); break; case 23: result = UserType( th ); if( result ) { PopEntry(); PushType( th ); } break; case 24: DoMakeComplex(); break; case 25: DoStringConcat(); break; case 26: DoLConvert(); break; case 27: DoPlusScaled(); break; case 28: DoMinusScaled(); break; case 29: DoPoints( TI_KIND_EXTRACT( parm ) ); break; case 30: info.kind = TK_POINTER; info.size = TI_SIZE_EXTRACT( parm ); info.modifier = TI_MOD_EXTRACT( parm ); FillInDefaults( &info ); TypePointer( ExprSP->th, info.modifier, info.size, th ); PopEntry(); PushType( th ); break; case 31: if( parm ) { /* file scope */ if( ExprSP->flags & SF_NAME ) { ExprSP->v.li.file_scope = TRUE; } else { Error( ERR_LOC, LIT( ERR_WANT_NAME ) ); } } else { /* in a namespace */ DoScope(); } break; } return( result ); }
int main(int argc, char * argv[]) { Operations operation; if (argc < 2 || (operation = GetOperation(argv[1])) == NumOperations || argc < RequiredArgsForOperation[operation]) { fputs("usage: c_api { listen | call | transfer } [ A-party [ B-party ] ]\n", stderr); return 1; } puts("Initialising.\n"); if (!InitialiseOPAL()) return 1; switch (operation) { case OpListen : puts("Listening.\n"); HandleMessages(60000); break; case OpCall : if (!DoCall(argv[2])) break; HandleMessages(15000); break; case OpHold : if (!DoCall(argv[2])) break; HandleMessages(15000); if (!DoHold()) break; HandleMessages(15000); break; case OpTransfer : if (!DoCall(argv[2])) break; HandleMessages(15000); if (!DoTransfer(argv[3])) break; HandleMessages(15000); break; case OpConsult : if (!DoCall(argv[2])) break; HandleMessages(15000); if (!DoHold()) break; HandleMessages(15000); if (!DoCall(argv[3])) break; HandleMessages(15000); if (!DoTransfer(HeldCallToken)) break; HandleMessages(15000); break; default : break; } puts("Exiting.\n"); ShutDownFunction(hOPAL); return 0; }
void SipPhoneProxy::makeNewCall( const QString& uri ) { //if (DoCall(ui.remote->text(), SipCall::StandardCall)) /*if (*/DoCall(uri, SipCall::videoCall)//) ;//ui.remote->setText(""); }
unsigned int Call32BitDosDebug( dos_debug __far *buff ) { return( DoCall( DebugFunc, MakeLocalPtrFlat( buff ), _retaddr ) ); }
static ssl_value MechDo( unsigned select, ssl_value parm ) { unsigned long size; ssl_value result; DIPHDL( type, th ); dig_type_info ti; mad_type_info mti; result = 0; switch( select ) { case 0: DoAssign(); break; case 1: DoMul(); break; case 2: DoDiv(); break; case 3: DoMod(); break; case 4: DoMinus(); break; case 5: DoShift(); break; case 6: DoAnd(); break; case 7: DoXor(); break; case 8: DoOr(); break; case 9: DoAddr(); break; case 10: ClassToTypeInfo( parm, &ti ); DoPoints( ti.kind ); break; case 11: DoField(); break; case 12: DoCall( Num, SSL2BOOL( parm ) ); break; case 13: DoConvert(); break; case 14: DoPlus(); break; case 15: MakeAddr(); break; case 16: result = ( TstEQ( SSL2INT( parm ) ) != 0 ); break; case 17: result = ( TstLT( SSL2INT( parm ) ) != 0 ); break; case 18: result = ( TstTrue( SSL2INT( parm ) ) != 0 ); break; case 19: result = ( TstExist( SSL2INT( parm ) ) != 0 ); break; case 20: size = ExprSP->ti.size; PopEntry(); PushNum( size ); break; case 21: DIPTypeBase( ExprSP->th, th, NULL, NULL ); PopEntry(); PushType( th ); break; case 22: GetMADTypeDefault( MTK_ADDRESS, &mti ); size = BITS2BYTES( mti.b.bits - mti.a.seg.bits ); if( parm ) { size += sizeof( addr_seg ); DIPTypePointer( ExprSP->th, TM_FAR, size, th ); } else { DIPTypePointer( ExprSP->th, TM_NEAR, size, th ); } PopEntry(); PushType( th ); break; case 23: result = UserType( th ); if( result ) { PopEntry(); PushType( th ); } break; case 24: DoMakeComplex(); break; case 25: DoStringConcat(); break; case 26: DoLConvert(); break; case 27: DoPlusScaled(); break; case 28: DoMinusScaled(); break; case 29: DoPoints( TI_KIND_EXTRACT( parm ) ); break; case 30: ti.kind = TK_POINTER; ti.size = TI_SIZE_EXTRACT( parm ); ti.modifier = TI_MOD_EXTRACT( parm ); ti.deref = false; FillInDefaults( &ti ); DIPTypePointer( ExprSP->th, ti.modifier, ti.size, th ); PopEntry(); PushType( th ); break; case 31: if( SSL2BOOL( parm ) ) { /* file scope */ if( ExprSP->flags & SF_NAME ) { ExprSP->v.li.file_scope = true; } else { Error( ERR_LOC, LIT_ENG( ERR_WANT_NAME ) ); } } else { /* in a namespace */ DoScope(); } break; } return( result ); }
int SandboxBrokerClient::LStat(const char* aPath, struct stat* aStat) { Request req = { SANDBOX_FILE_STAT, O_NOFOLLOW }; return DoCall(&req, aPath, aStat, false); }
int SandboxBrokerClient::Access(const char* aPath, int aMode) { Request req = { SANDBOX_FILE_ACCESS, aMode }; return DoCall(&req, aPath, nullptr, false); }