Esempio n. 1
0
N_NIMCALL(TY68202*, Startprocessaux_68603)(NimStringDesc* Cmd_68605, NU8 Options_68607) {
TY68202* Result_68608;
TY39221* C_68609;
TY39221* A_68627;
NI I_68661;
NI HEX3Atmp_68680;
NI Res_68682;
Result_68608 = 0;
C_68609 = 0;
C_68609 = nosparseCmdLine(Cmd_68605);
A_68627 = 0;
A_68627 = (TY39221*) newSeq(NTI39221, 0);
I_68661 = 0;
HEX3Atmp_68680 = 0;
HEX3Atmp_68680 = (NI32)(C_68609->Sup.len - 1);
Res_68682 = 0;
Res_68682 = 1;
while (1) {
if (!(Res_68682 <= HEX3Atmp_68680)) goto LA1;
I_68661 = Res_68682;
A_68627 = (TY39221*) incrSeq(&(A_68627)->Sup, sizeof(NimStringDesc*));
asgnRefNoCycle((void**) &A_68627->data[A_68627->Sup.len-1], copyString(C_68609->data[I_68661]));
Res_68682 += 1;
} LA1: ;
Result_68608 = nospstartProcess(C_68609->data[0], ((NimStringDesc*) &TMP196865), A_68627->data, A_68627->Sup.len, NIM_NIL, Options_68607);
return Result_68608;
}
Esempio n. 2
0
N_NIMCALL(NimStringDesc*, opgorge_379027)(NimStringDesc* cmd, NimStringDesc* input) {
	NimStringDesc* volatile result;
	TSafePoint TMP2886;
	result = 0;
	pushSafePoint(&TMP2886);
	TMP2886.status = _setjmp(TMP2886.context);
	if (TMP2886.status == 0) {
		Processobj142402* p;
		TY218714 LOC2;
		memset((void*)LOC2, 0, sizeof(LOC2));
		p = nospstartProcess(cmd, ((NimStringDesc*) &TMP2885), LOC2, 0, NIM_NIL, 4);
		{
			Streamobj137027* LOC7;
			Streamobj137027* LOC8;
			if (!!(((input ? input->Sup.len : 0) == ((NI) 0)))) goto LA5;
			LOC7 = 0;
			LOC7 = nospinputStream(p);
			write_137233(LOC7, input);
			LOC8 = 0;
			LOC8 = nospinputStream(p);
			close_137085(LOC8);
		}
		LA5: ;
		result = readoutput_379009(p);
		popSafePoint();
	}
	else {
		popSafePoint();
		if (isObj(getCurrentException()->Sup.m_type, (&NTI3431))||isObj(getCurrentException()->Sup.m_type, (&NTI3433))) {
			TMP2886.status = 0;
			result = copyString(((NimStringDesc*) &TMP2885));
			popCurrentException();
		}
	}
	if (TMP2886.status != 0) reraiseException();
	return result;
}
Esempio n. 3
0
N_NIMCALL(NI, nospexecProcesses)(NimStringDesc** cmds, NI cmdsLen0, NU8 options_143795, NI n, TY171656 beforerunevent) {
	NI result;
	NU8 options;
	result = 0;
	options = (options_143795 & ~ 16);
	{
		TY144201* q;
		NI m;
		NI i;
		if (!(((NI) 1) < n)) goto LA3;
		q = 0;
		q = (TY144201*) newSeq((&NTI144201), ((NI) (n)));
		m = ((n <= cmdsLen0) ? n : cmdsLen0);
		{
			NI i_144235;
			NI HEX3Atmp_144536;
			NI res_144539;
			i_144235 = 0;
			HEX3Atmp_144536 = 0;
			HEX3Atmp_144536 = (NI)(m - ((NI) 1));
			res_144539 = ((NI) 0);
			{
				while (1) {
					TY219714 LOC12;
					if (!(res_144539 <= HEX3Atmp_144536)) goto LA7;
					i_144235 = res_144539;
					{
						if (!!((beforerunevent.ClPrc == TMP4336.ClPrc && beforerunevent.ClEnv == TMP4336.ClEnv))) goto LA10;
						beforerunevent.ClEnv? beforerunevent.ClPrc(i_144235, beforerunevent.ClEnv):((TMP4337)(beforerunevent.ClPrc))(i_144235);
					}
					LA10: ;
					memset((void*)LOC12, 0, sizeof(LOC12));
					asgnRef((void**) (&q->data[i_144235]), nospstartProcess(cmds[i_144235], ((NimStringDesc*) &TMP4338), LOC12, 0, NIM_NIL, (options | 4)));
					res_144539 += ((NI) 1);
				} LA7: ;
			}
		}
		i = m;
		{
			while (1) {
				if (!(i <= (cmdsLen0-1))) goto LA14;
				nossleep(((NI) 50));
				{
					NI r_144413;
					NI HEX3Atmp_144545;
					NI res_144548;
					r_144413 = 0;
					HEX3Atmp_144545 = 0;
					HEX3Atmp_144545 = (NI)(n - ((NI) 1));
					res_144548 = ((NI) 0);
					{
						while (1) {
							if (!(res_144548 <= HEX3Atmp_144545)) goto LA17;
							r_144413 = res_144548;
							{
								NIM_BOOL LOC20;
								NI LOC23;
								TY219714 LOC32;
								LOC20 = 0;
								LOC20 = nosprunning(q->data[r_144413]);
								if (!!(LOC20)) goto LA21;
								LOC23 = 0;
								LOC23 = nospwaitForExit(q->data[r_144413], ((NI) -1));
								result = ((LOC23 >= result) ? LOC23 : result);
								{
									if (!!((q->data[r_144413] == NIM_NIL))) goto LA26;
									nospclose(q->data[r_144413]);
								}
								LA26: ;
								{
									if (!!((beforerunevent.ClPrc == TMP4336.ClPrc && beforerunevent.ClEnv == TMP4336.ClEnv))) goto LA30;
									beforerunevent.ClEnv? beforerunevent.ClPrc(i, beforerunevent.ClEnv):((TMP4339)(beforerunevent.ClPrc))(i);
								}
								LA30: ;
								memset((void*)LOC32, 0, sizeof(LOC32));
								asgnRef((void**) (&q->data[r_144413]), nospstartProcess(cmds[i], ((NimStringDesc*) &TMP4338), LOC32, 0, NIM_NIL, (options | 4)));
								i += ((NI) 1);
								{
									if (!((cmdsLen0-1) < i)) goto LA35;
									goto LA15;
								}
								LA35: ;
							}
							LA21: ;
							res_144548 += ((NI) 1);
						} LA17: ;
					}
				} LA15: ;
			} LA14: ;
		}
		{
			NI j_144475;
			NI HEX3Atmp_144553;
			NI res_144556;
			j_144475 = 0;
			HEX3Atmp_144553 = 0;
			HEX3Atmp_144553 = (NI)(m - ((NI) 1));
			res_144556 = ((NI) 0);
			{
				while (1) {
					NI LOC40;
					if (!(res_144556 <= HEX3Atmp_144553)) goto LA39;
					j_144475 = res_144556;
					LOC40 = 0;
					LOC40 = nospwaitForExit(q->data[j_144475], ((NI) -1));
					result = ((LOC40 >= result) ? LOC40 : result);
					{
						if (!!((q->data[j_144475] == NIM_NIL))) goto LA43;
						nospclose(q->data[j_144475]);
					}
					LA43: ;
					res_144556 += ((NI) 1);
				} LA39: ;
			}
		}
	}
	goto LA1;
	LA3: ;
	{
		{
			NI i_144502;
			NI HEX3Atmp_144561;
			NI res_144564;
			i_144502 = 0;
			HEX3Atmp_144561 = 0;
			HEX3Atmp_144561 = (cmdsLen0-1);
			res_144564 = ((NI) 0);
			{
				while (1) {
					Processobj143402* p;
					TY219714 LOC53;
					NI LOC54;
					if (!(res_144564 <= HEX3Atmp_144561)) goto LA48;
					i_144502 = res_144564;
					{
						if (!!((beforerunevent.ClPrc == TMP4336.ClPrc && beforerunevent.ClEnv == TMP4336.ClEnv))) goto LA51;
						beforerunevent.ClEnv? beforerunevent.ClPrc(i_144502, beforerunevent.ClEnv):((TMP4340)(beforerunevent.ClPrc))(i_144502);
					}
					LA51: ;
					memset((void*)LOC53, 0, sizeof(LOC53));
					p = nospstartProcess(cmds[i_144502], ((NimStringDesc*) &TMP4338), LOC53, 0, NIM_NIL, (options | 4));
					LOC54 = 0;
					LOC54 = nospwaitForExit(p, ((NI) -1));
					result = ((LOC54 >= result) ? LOC54 : result);
					nospclose(p);
					res_144564 += ((NI) 1);
				} LA48: ;
			}
		}
	}
	LA1: ;
	return result;
}