Exemple #1
0
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);
}