void f_async_write(){ function_to_call_t *cb = get_cb(); process_efun_callback(3, cb, F_ASYNC_WRITE); cb->f.fp->hdr.ref++; add_write(check_valid_path((sp-3)->u.string, current_object, "write_file", 1), (sp-2)->u.string, strlen((sp-2)->u.string), (sp-1)->u.number, cb); pop_n_elems(4); }
static void my_store(t_func_arg *arg) { int pos; char qrt; qrt = arg->proc->wbuf->buf[arg->proc->wbuf->place / 2]; if (arg->proc->wbuf->place % 2) qrt <<= 4; pos = (pc2int(arg->proc->pc) + neg_mod(reg2int(arg->proc->reg[arg->rx - 1]) + 3 - arg->proc->wbuf->place, IDX_MOD)); while (pos < 0) pos += arg->vm->size; pos %= arg->vm->size; add_write(pos, qrt, arg); (arg->proc->wbuf->place)--; if (arg->proc->wbuf->place < 3 - arg->proc->p) { arg->proc->wbuf->place = -1; arg->proc->cur_work = WAIT_AFTER; arg->proc->rw->delay = 0; } }