void zrestore5(void) { zterp_io *savefile; uint8_t *buf; size_t n; if(znargs == 0) { zrestore(); return; } savefile = zterp_io_open(NULL, ZTERP_IO_RDONLY | ZTERP_IO_SAVE); if(savefile == NULL) { store(0); return; } buf = malloc(zargs[1]); if(buf == NULL) { store(0); return; } n = zterp_io_read(savefile, buf, zargs[1]); for(size_t i = 0; i < n; i++) user_store_byte(zargs[0] + i, buf[i]); free(buf); zterp_io_close(savefile); store(n); }
/* <save> restore - */ static int z2restore(i_ctx_t *i_ctx_p) { while (gs_state_saved(gs_state_saved(igs))) { if (restore_page_device(igs, gs_state_saved(igs))) return push_callout(i_ctx_p, "%restore1pagedevice"); gs_grestore(igs); } if (restore_page_device(igs, gs_state_saved(igs))) return push_callout(i_ctx_p, "%restorepagedevice"); return zrestore(i_ctx_p); }