Exemple #1
0
int
menu(Biobuf *bp, int net)
{
	char *cp;
	int done;

	comm->stopped = 1;

	rawoff();
	fprint(2, ">>> ");
	for(done = 0; !done; ){
		cp = Brdline(bp, '\n');
		if(cp == 0){
			comm->stopped = 0;
			return -1;
		}
		cp[Blinelen(bp)-1] = 0;
		switch(*cp){
		case '!':
			system(Bfildes(bp), cp+1);
			done = 1;
			break;
		case '.':
			done = 1;
			break;
		case 'q':
			comm->stopped = 0;
			return -1;
		case 'o':
			switch(*(cp+1)){
			case 'd':
				send3(net, Iac, Do, atoi(cp+2));
				break;
			case 'w':
				send3(net, Iac, Will, atoi(cp+2));
				break;
			}
			break;
		case 'r':
			comm->returns = !comm->returns;
			done = 1;
			break;
		case 'i':
			send2(net, Iac, Interrupt);
			break;
		case 'b':
			send2(net, Iac, Break);
			break;
		default:
			fprint(2, STDHELP);
			break;
		}
		if(!done)
			fprint(2, ">>> ");
	}

	rawon();
	comm->stopped = 0;
	return 0;
}
Exemple #2
0
int main(int argc, char *argv[])
{
	init();
	init2();
	static_context_t ctx;
	ctx.file = (char *)__FILE__;
	ctx.method = (char *)__FUNCTION__;
	ctx.line = __LINE__;
	ctx.parent = 0;
	ctx.block = 0;
	static_context_t *this_context = &ctx;
	/* awesome hardcoding work here */
	load_path = array_new();
	array_push(this_context, load_path, string_new_cstr("."));
	array_push(this_context, load_path, string_new_cstr("./mspec/lib"));
	jump_begin(JUMP_RESCUE)
		send3(Kernel, s_define_method, intern("load"), kernel_load, 1);
		send3(Kernel, s_define_method, intern("require"), kernel_require, 1);
		send3(Kernel, s_define_method, intern("eval"), kernel_eval, -1);
		Init_hash(this_context);
		Init_regexp(this_context);
		init_core(&ctx, g_main);
		if (argc > 1) {
			set_argv(this_context, argc - 2, argv + 2);
			kernel_load(this_context, g_main, string_new_cstr(argv[1]));
		}
		else {
			set_argv(this_context, 0, 0);
			simple_irb(this_context, g_main);
		}
	jump_rescue
		object_t *cls = send0(exc, s_class);
		printf("%s: %s\n", ((symbol_t *)((class_t *)cls)->name)->string, ((string_t *)((exception_t *)exc)->message)->bytes);
		array_t *array = (array_t *)((exception_t *)exc)->backtrace;
		int i;
		for (i = 0; i < array->used; i++)
			printf("\tfrom %s\n", ((string_t *)array->values[i])->bytes);
	jump_ensure
	jump_end
	exit(0);
	return 0;
}
Exemple #3
0
//-------------------------------------------------------------------
void getMinus3Data(IFloat* rcv_buf, IFloat* send_buf, int len, int dir)
{
    IFloat *tmp_buf = (IFloat *)smalloc(len*sizeof(IFloat));

    int i = (dir+1)%4;
    int j = (dir+2)%4;
    int k = (dir+3)%4;

    //--------------------------------------------------------------
    // send_buf --> rcv_buf(as a temporary buffer) 
    //--------------------------------------------------------------
    SCUDirArg send1(send_buf, pos_dir[i], SCU_SEND, len);
    SCUDirArg recv1(rcv_buf, neg_dir[i], SCU_REC, len);
    SCUTrans(&send1);
    SCUTrans(&recv1);
    SCUTransComplete();

    //--------------------------------------------------------------
    // rcv_buf --> tmp_buf 
    //--------------------------------------------------------------
    SCUDirArg send2(rcv_buf, pos_dir[j], SCU_SEND, len);
    SCUDirArg recv2(tmp_buf, neg_dir[j], SCU_REC, len);
    SCUTrans(&send2);
    SCUTrans(&recv2);
    SCUTransComplete();

    //--------------------------------------------------------------
    // tmp_buf --> rcv_buf 
    //--------------------------------------------------------------
    SCUDirArg send3(tmp_buf, pos_dir[k], SCU_SEND, len);
    SCUDirArg recv3(rcv_buf, neg_dir[k], SCU_REC, len);
    SCUTrans(&send3);
    SCUTrans(&recv3);
    SCUTransComplete();

    sfree(tmp_buf);
}