nx_wflow_foreach_owned_gate_t278.nx source
↩ module page · 37 lines · 2485 B
1import "nx_wflow_engine_capacity_candidate_t278.nx"
2import "nx_gate_verdict.nx"
3func main(argc:i64,argv:*i64)->i64{
4 if argc!=3{return 2};let count:i64=wf_atoi(argv[1] as *u8)
5 if count<=0{return 2};if count>WF_TEXT_I64_MAX/2{return 2}
6 let path:*WfOwnedText=wf_text_slice(argv[2] as *u8,0,slen(argv[2] as *u8))
7 if path==(0 as *WfOwnedText){return 32}
8 let fresh:i64=sys_openat_exclusive(path.data,MODE_0600)
9 if fresh<0{p("FOREACH-GATE journal not fresh; refusing reuse\n");return 4}
10 if sys_close(fresh)!=0{return 4}
11 var at:i64=0
12 let conf:*WfOwnedText=wf_text_new(path.len+slen(".conf"),1)
13 if conf==(0 as *WfOwnedText){p("FOREACH-GATE conf allocation failed\n");return 33}
14 at=wf_cat(conf.data,0,path.data);at=wf_cat(conf.data,at,".conf");conf.data[at]=0
15 let conf_fresh:i64=sys_openat_exclusive(conf.data,MODE_0600)
16 if conf_fresh<0{return 4};if sys_close(conf_fresh)!=0{return 4}
17 let ctr:*i64=gv_ctr()
18 gv_check_eq("register known native argecho",wf_append(conf.data,"argecho\t./_offc/nx_tool_argecho.elf\tGREEN\n"),0,ctr)
19 let cx:*i64=sys_mmap_try(4*__size_of(i64)) as *i64
20 if (cx as i64)<=0{p("FOREACH-GATE context allocation failed\n");return 34};cx[2]=path.data as i64;cx[3]=conf.data as i64
21 let list:*WfOwnedText=wf_text_new(count*2-1,1)
22 if list==(0 as *WfOwnedText){p("FOREACH-GATE list allocation failed\n");return 35}
23 var i:i64=0;while i<count{list.data[i*2]=97 as u8;if i<count-1{list.data[i*2+1]=44 as u8};i=i+1}
24 gv_check_eq("actual for-each all items",wf_for_each(cx,"argecho",list.data,"review"),1,ctr)
25 let size:*i64=sys_mmap_try(__size_of(i64)) as *i64
26 if (size as i64)<=0{p("FOREACH-GATE size allocation failed\n");return 36}
27 let ledger:*u8=wf_readall(path.data,size)
28 if ledger==(0 as *u8){p("FOREACH-GATE ledger read failed\n");return 37}
29 gv_check_eq("all iteration receipts",wf_lines_with2(ledger,size[0],"WFITER"," rid=review "),count,ctr)
30 let value:*WfOwnedText=wf_var_owned(cx,"review","item")
31 gv_check("last item available",value!=(0 as *WfOwnedText),ctr)
32 if value!=(0 as *WfOwnedText){gv_check("last item exact",seq(value.data,"a")==1,ctr);wf_text_free(value)}
33 gv_check_eq("empty list no-op",wf_for_each(cx,"argecho","","review"),1,ctr)
34 wf_text_free(path);wf_text_free(conf);wf_text_free(list)
35 sys_munmap(ledger,WF_LEDCAP);sys_munmap(size as *u8,__size_of(i64));sys_munmap(cx as *u8,4*__size_of(i64))
36 return gv_verdict("WFLOW-FOREACH-OWNED-T278",ctr,"Native registered connector, exact receipt count; sequential work, no item ceiling")
37}