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; }
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; }
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; }