static ssize_t data_triplet_format_single_t_enum(data_t *data, fastcall_enum *fargs) { // {{{ ssize_t ret; triplet_format_t *fdata = (triplet_format_t *)data->ptr; if(data_is_void(&fdata->storage)) return -EINVAL; enum_userdata userdata = { &fdata->slave, fargs }; data_t iot = DATA_IOT(&userdata, (f_io_func)&data_triplet_format_single_t_iter_iot); fastcall_enum r_enum = { { 3, ACTION_ENUM }, &iot }; ret = data_query(&fdata->storage, &r_enum); // last fastcall_create r_end = { { 3, ACTION_CREATE }, NULL, NULL }; data_query(fargs->dest, &r_end); return ret; } // }}}
} // }}} static ssize_t stdout_io_handler(data_t *data, FILE **fd, fastcall_header *hargs){ // {{{ switch(hargs->action){ case ACTION_WRITE:; fastcall_write *wargs = (fastcall_write *)hargs; wargs->buffer_size = fwrite(wargs->buffer, 1, wargs->buffer_size, *fd); return 0; default: break; } return -ENOSYS; } // }}} static data_t stdin_io = DATA_IOT(&stdin, (f_io_func)&stdin_io_handler); static data_t stdout_io = DATA_IOT(&stdout, (f_io_func)&stdout_io_handler); static data_t stderr_io = DATA_IOT(&stderr, (f_io_func)&stdout_io_handler); static int std_init(backend_t *backend){ // {{{ std_userdata *userdata; if((userdata = backend->userdata = calloc(1, sizeof(std_userdata))) == NULL) return error("calloc failed"); userdata->key = HK(buffer); return 0; } // }}} static int std_destroy(backend_t *backend){ // {{{ std_userdata *userdata = (std_userdata *)backend->userdata;