示例#1
0
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;
} // }}}
示例#2
0
} // }}}
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;