code wiki / (root) / nx_wflow_foreach_canonical_gate_t278.nx

nx_wflow_foreach_canonical_gate_t278.nx source

↩ module page · 37 lines · 2475 B

1import "nx_wflow_engine.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_direct(size as *u8,__size_of(i64));sys_munmap_direct(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}