Ejemplo n.º 1
0
N_NIMCALL(NI, nospexecProcesses)(NimStringDesc** Cmds_68686, NI Cmds_68686Len0, NU8 Options_68688, NI N_68689) {
NI Result_68690;
TY68699* Q_68700;
NI M_68725;
NI I_68734;
NI HEX3Atmp_68824;
NI Res_68826;
NI I_68735;
NI R_68746;
NI HEX3Atmp_68827;
NI Res_68829;
NIM_BOOL LOC8;
NI LOC11;
NI I_68809;
NI HEX3Atmp_68830;
NI Res_68832;
NI LOC16;
NI I_68820;
NI HEX3Atmp_68833;
NI Res_68835;
TY68202* P_68821;
NI LOC18;
Result_68690 = 0;
if (!(1 < N_68689)) goto LA2;
Q_68700 = 0;
Q_68700 = (TY68699*) newSeq(NTI68699, N_68689);
M_68725 = 0;
M_68725 = ((N_68689 <= Cmds_68686Len0) ? N_68689 : Cmds_68686Len0);
I_68734 = 0;
HEX3Atmp_68824 = 0;
HEX3Atmp_68824 = (NI32)(M_68725 - 1);
Res_68826 = 0;
Res_68826 = 0;
while (1) {
if (!(Res_68826 <= HEX3Atmp_68824)) goto LA4;
I_68734 = Res_68826;
asgnRefNoCycle((void**) &Q_68700->data[I_68734], Startprocessaux_68603(Cmds_68686[I_68734], Options_68688));
Res_68826 += 1;
} LA4: ;
I_68735 = 0;
I_68735 = M_68725;
while (1) {
if (!(I_68735 <= (Cmds_68686Len0-1))) goto LA5;
nossleep(50);
R_68746 = 0;
HEX3Atmp_68827 = 0;
HEX3Atmp_68827 = (NI32)(N_68689 - 1);
Res_68829 = 0;
Res_68829 = 0;
while (1) {
if (!(Res_68829 <= HEX3Atmp_68827)) goto LA6;
R_68746 = Res_68829;
LOC8 = nosprunning(Q_68700->data[R_68746]);
if (!!(LOC8)) goto LA9;
LOC11 = nospwaitForExit(Q_68700->data[R_68746]);
Result_68690 = ((LOC11 >= Result_68690) ? LOC11 : Result_68690);
asgnRefNoCycle((void**) &Q_68700->data[R_68746], Startprocessaux_68603(Cmds_68686[I_68735], Options_68688));
I_68735 += 1;
if (!((Cmds_68686Len0-1) < I_68735)) goto LA13;
goto LA6;
LA13: ;
LA9: ;
Res_68829 += 1;
} LA6: ;
} LA5: ;
I_68809 = 0;
HEX3Atmp_68830 = 0;
HEX3Atmp_68830 = (NI32)(M_68725 - 1);
Res_68832 = 0;
Res_68832 = 0;
while (1) {
if (!(Res_68832 <= HEX3Atmp_68830)) goto LA15;
I_68809 = Res_68832;
LOC16 = nospwaitForExit(Q_68700->data[I_68809]);
Result_68690 = ((LOC16 >= Result_68690) ? LOC16 : Result_68690);
Res_68832 += 1;
} LA15: ;
goto LA1;
LA2: ;
I_68820 = 0;
HEX3Atmp_68833 = 0;
HEX3Atmp_68833 = (Cmds_68686Len0-1);
Res_68835 = 0;
Res_68835 = 0;
while (1) {
if (!(Res_68835 <= HEX3Atmp_68833)) goto LA17;
I_68820 = Res_68835;
P_68821 = 0;
P_68821 = Startprocessaux_68603(Cmds_68686[I_68820], Options_68688);
LOC18 = nospwaitForExit(P_68821);
Result_68690 = ((LOC18 >= Result_68690) ? LOC18 : Result_68690);
Res_68835 += 1;
} LA17: ;
LA1: ;
return Result_68690;
}
Ejemplo n.º 2
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;
}