code wiki / (root) / nx_step_sample_fetch.nx

nx_step_sample_fetch.nx source

↩ module page · 48 lines · 2488 B

1// nx_step_sample_fetch.nx -- R1a of the CAD car-twin ladder: bank the CANONICAL STEP assembly test file 2// as1-oc-214.stp (AP214, OpenCASCADE export of the classic NIST as1 bolt/nut/plate/rod/bracket assembly) 3// = the REAL input for nx_step_parse gates (rigged self-authored fixtures banned). Verified 2026-07-07: 4// valid ISO-10303-21, about 1100 entities, PRODUCT + NEXT_ASSEMBLY_USAGE_OCCURRENCE present. 5// Saves knowledge/fetched/step_as1.stp. expect_exit: 0 license_tier: ORIGINAL 6import "nx_syscalls.nx" 7import "nx_x509_trust_store.nx" 8import "nx_trust_store_load_from_certdata.nx" 9import "nx_https_fetch_follow.nx" 10const K_MAGIC_4194304: i64 = 4194304 11 12func sf_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 13func sf_putn(v: i64) -> i64 { 14 let bb: *u8 = sys_mmap(28) 15 var m: i64 = v 16 if m < 0 { sf_puts("-" as *u8); m = 0 - m } 17 let t: *u8 = sys_mmap(28) 18 var k: i64 = 0 19 if m == 0 { t[0] = 48 as u8; k = 1 } 20 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 21 var i: i64 = 0 22 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 23 sys_write(1, bb, k) 24 return 0 25} 26func sf_have(path: *u8) -> i64 { let fd: i64 = sys_openat_rd(path); if fd < 0 { return 0 } sys_close(fd); return 1 } 27 28func main() -> i64 { 29 let opath: *u8 = "knowledge/fetched/step_as1.stp" as *u8 30 if sf_have(opath) == 1 { sf_puts("step_as1.stp [have-skip]\nverdict=GREEN\n" as *u8); return 0 } 31 let r: i64 = nx_trust_store_load_from_certdata("data/mozilla_certdata.txt" as *u8, 512, K_MAGIC_4194304) 32 if r <= 0 { sf_puts("STEP-FETCH: certdata load failed\n" as *u8); return 1 } 33 let store: *TrustStore = r as *TrustStore 34 let cap: i64 = K_MAGIC_4194304 35 let out: *u8 = sys_mmap(cap) 36 let status: *i64 = sys_mmap(8) as *i64 37 let url: *u8 = "https://raw.githubusercontent.com/stepcode/stepcode/master/data/ap214e3/as1-oc-214.stp" as *u8 38 let n: i64 = nx_https_fetch_follow(url, store, out, cap, 6, status) 39 sf_puts(url); sf_puts(" status=" as *u8); sf_putn(status[0]); sf_puts(" bytes=" as *u8); sf_putn(n); sf_puts("\n" as *u8) 40 if n <= 0 { sf_puts("verdict=FAIL\n" as *u8); return 1 } 41 if status[0] != 200 { sf_puts("verdict=FAIL non-200\n" as *u8); return 1 } 42 let fd: i64 = sys_openat_wr(opath, 0x1a4) 43 if fd < 0 { sf_puts("SAVE-FAIL\n" as *u8); return 1 } 44 sys_write(fd, out, n) 45 sys_close(fd) 46 sf_puts("SAVED verdict=GREEN\n" as *u8) 47 return 0 48}