struct clean_cloud_volume_read_cb_arg {
- POOLMEM **remain;
+ POOLMEM *remain;
ilist *parts;
cleanup_cb_type *cb;
cleanup_ctx_type *ctx;
size_t clean_cloud_volume_read_cb(char *res, size_t sz, void* arg)
{
- ilist *parts = NULL;
bool wrong_string = false;
size_t left = sz;
- POOLMEM **remain = NULL;
clean_cloud_volume_read_cb_arg *_arg = (clean_cloud_volume_read_cb_arg*)arg;
- if (_arg) {
- parts = _arg->parts;
- remain = _arg->remain;
+ if (!_arg) {
+ return 0;
}
- if (parts) {
+ if (_arg->parts) {
char * pch = strtok (res,"\n");
/* we enter the cb again and remaining string has not been processed */
- if (remain && strlen(*remain) != 0) {
- pm_strcat(remain, pch);
- char *name=strstr(*remain, "part");
- char *time=strstr(*remain, ",mtime:");
+ if (_arg->remain && strlen(_arg->remain) != 0) {
+ pm_strcat(_arg->remain, pch);
+ char *name=strstr(_arg->remain, "part");
+ char *time=strstr(_arg->remain, ",mtime:");
if (name && time) {
*time='\0';
- parts->append(bstrdup(name));
+ _arg->parts->append(bstrdup(name));
} else {
wrong_string = true;
}
- **remain = 0;
+ *(_arg->remain) = 0;
left -= strlen(pch)+1;
pch = strtok (NULL,"\n");
}
char *time=strstr(pch, ",mtime:");
if (name && time) {
*time='\0';
- parts->append(bstrdup(name));
+ _arg->parts->append(bstrdup(name));
} else {
- pm_strcpy(remain, pch);
+ pm_strcpy(_arg->remain, pch);
}
left -= strlen(pch)+1;
pch = strtok (NULL, "\n");
arg.parts = &parts;
POOLMEM *p= get_memory(block_size);
*p = 0;
- arg.remain = &p;
+ arg.remain = p;
arg.cb = cb;
arg.ctx = ctx;
read_callback pcb;
pcb.arg = (void*)&arg;
/* list everything in the volume VolumeName */
int ret = call_fct("ls", VolumeName, "", &pcb, NULL, cancel_cb, err);
- free_pool_memory(*arg.remain);
+ free_pool_memory(arg.remain);
int rtn=0;
int i;
}
struct get_cloud_volume_parts_list_read_cb_arg {
- POOLMEM **remain;
+ POOLMEM *remain;
ilist *parts;
};
size_t get_cloud_volume_parts_list_read_cb(char *res, size_t sz, void* arg)
{
- ilist *parts = NULL;
bool wrong_string = false;
size_t left = sz;
- POOLMEM **remain = NULL;
+
get_cloud_volume_parts_list_read_cb_arg *_arg = (get_cloud_volume_parts_list_read_cb_arg*)arg;
- if (_arg) {
- parts = _arg->parts;
- remain = _arg->remain;
+ if (!_arg) {
+ return 0;
}
- if (parts) {
+ if (_arg->parts) {
char * pch = strtok (res,"\n");
/* we enter the cb again and remaining string has not been processed */
- if (remain && *remain && strlen(*remain) != 0) {
- pm_strcat(remain, pch);
- char *ext=strstr(*remain, "part."), *size=strstr(*remain, "size:"), *mtime=strstr(*remain, "mtime:");
+ if (_arg->remain && strlen(_arg->remain) != 0) {
+ pm_strcat(_arg->remain, pch);
+ char *ext=strstr(_arg->remain, "part."), *size=strstr(_arg->remain, "size:"), *mtime=strstr(_arg->remain, "mtime:");
if (ext && size && mtime) {
cloud_part *part = (cloud_part*) malloc(sizeof(cloud_part));
part->index = str_to_uint64(&(ext[5]));
part->size = str_to_uint64((&(size[5])));
/* ***FIXME*** : wbn to retrieve SHA512 from cloud */
bmemzero(part->hash64, 64);
- parts->put(part->index, part);
+ _arg->parts->put(part->index, part);
} else {
wrong_string = true;
}
- **remain = 0;
+ *(_arg->remain) = 0;
left -= strlen(pch)+1;
pch = strtok (NULL,"\n");
}
part->size = str_to_uint64((&(size[5])));
/* ***FIXME*** : wbn to retrieve SHA512 from cloud */
bmemzero(part->hash64, 64);
- parts->put(part->index, part);
+ _arg->parts->put(part->index, part);
} else {
- pm_strcpy(remain, pch);
+ pm_strcpy(_arg->remain, pch);
}
left -= strlen(pch)+1;
pch = strtok (NULL, "\n");
arg.parts = parts;
POOLMEM *p= get_memory(block_size);
*p = 0;
- arg.remain = &p;
+ arg.remain = p;
read_callback pcb;
pcb.fct = &get_cloud_volume_parts_list_read_cb;
pcb.arg = (void*)&arg;
int ret = call_fct("ls", volume_name, "part.", &pcb, NULL, cancel_cb, err);
- free_pool_memory(*arg.remain);
+ free_pool_memory(arg.remain);
return (ret == 0);
}
struct get_cloud_volume_list_read_cb_arg {
- POOLMEM **remain;
+ POOLMEM *remain;
alist *volumes;
};
size_t get_cloud_volumes_list_read_cb(char* res, size_t size, void *arg)
{
- alist *volumes = NULL;
- POOLMEM **remain = NULL;
bool is_complete(res[size-1]=='\n');
get_cloud_volume_list_read_cb_arg *_arg = (get_cloud_volume_list_read_cb_arg*)arg;
- if (_arg) {
- volumes = _arg->volumes;
- remain = _arg->remain;
+ if (!_arg) {
+ return 0;
}
- if (volumes) {
+ if (_arg->volumes) {
/* do the actual process */
char * pch = strtok (res,"\n");
- if (remain && *remain && strlen(*remain) != 0) {
- pm_strcat(remain, pch);
- get_cloud_volumes_list_read_cb_append_to_volumes(*remain, volumes);
+ if (_arg->remain && strlen(_arg->remain) != 0) {
+ pm_strcat(_arg->remain, pch);
+ get_cloud_volumes_list_read_cb_append_to_volumes(_arg->remain, _arg->volumes);
pch = strtok (NULL, "\n");
- *remain = 0;
+ *(_arg->remain) = 0;
}
while (pch != NULL)
{
- pm_strcpy(*remain, pch);
+ pm_strcpy(_arg->remain, pch);
pch = strtok (NULL, "\n");
if (pch || is_complete) {
- get_cloud_volumes_list_read_cb_append_to_volumes(*remain, volumes);
+ get_cloud_volumes_list_read_cb_append_to_volumes(_arg->remain, _arg->volumes);
}
}
return size;
arg.volumes = volumes;
POOLMEM *p= get_memory(block_size);
*p = 0;
- arg.remain = &p;
+ arg.remain = p;
pcb.arg = (void*)&arg;
int ret = call_fct("vol_ls", NULL, 0, &pcb, NULL, cancel_cb, err);
- free_pool_memory(*arg.remain);
+ free_pool_memory(arg.remain);
return (ret == 0);
}