static ssize_t data_timestamp_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{ char buffer[DEF_BUFFER_SIZE] = { 0 }; timestamp_t *fdata; if(fargs->src == NULL) return -EINVAL; if(dst->ptr == NULL){ // no buffer, alloc new if(data_timestamp_t_alloc(dst, NULL) != 0) return -ENOMEM; } fdata = (timestamp_t *)dst->ptr; switch( fargs->format ){ case FORMAT(config):; case FORMAT(human):; fastcall_read r_read_str = { { 5, ACTION_READ }, 0, &buffer, sizeof(buffer) - 1 }; if(data_query(fargs->src, &r_read_str) != 0) return -EFAULT; return timestamp_from_string(&fdata->time, buffer, r_read_str.buffer_size); case FORMAT(clean):; case FORMAT(binary):; fastcall_read r_read = { { 5, ACTION_READ }, 0, &fdata->time, sizeof(fdata->time) }; return data_query(fargs->src, &r_read); default: break; }; return -ENOSYS; } // }}}
static ssize_t data_timestamp_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{ ssize_t ret; char buffer[DEF_BUFFER_SIZE]; uintmax_t transfered; timestamp_t *fdata; if(fargs->src == NULL) return -EINVAL; if(dst->ptr == NULL){ // no buffer, alloc new if( (dst->ptr = malloc(sizeof(timestamp_t))) == NULL) return -ENOMEM; } fdata = (timestamp_t *)dst->ptr; switch( fargs->format ){ case FORMAT(config):; case FORMAT(human):; fastcall_read r_read_str = { { 5, ACTION_READ }, 0, &buffer, sizeof(buffer) - 1 }; if( (ret = data_query(fargs->src, &r_read_str)) < 0) return ret; ret = timestamp_from_string(fdata, buffer, &r_read_str.buffer_size); transfered = r_read_str.buffer_size; break; case FORMAT(native):; case FORMAT(packed):; fdata->now = 0; fastcall_read r_read = { { 5, ACTION_READ }, 0, &fdata->time, sizeof(fdata->time) }; ret = data_query(fargs->src, &r_read); transfered = r_read.buffer_size; break; default: return -ENOSYS; }; if(fargs->header.nargs >= 5) fargs->transfered = transfered; return ret; } // }}}