DS3 C SDK  5.0.0
Provides access to the Spectra S3 API with C
ds3.c
Go to the documentation of this file.
1 /*
2  * ******************************************************************************
3  * Copyright 2014-2017 Spectra Logic Corporation. All Rights Reserved.
4  * Licensed under the Apache License, Version 2.0 (the "License"). You may not use
5  * this file except in compliance with the License. A copy of the License is located at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * or in the "license" file accompanying this file.
10  * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
11  * CONDITIONS OF ANY KIND, either express or implied. See the License for the
12  * specific language governing permissions and limitations under the License.
13  * ****************************************************************************
14  */
15 
16 /* This Code is Auto-Generated; DO NOT MODIFY! */
17 
18 
19 #include <glib.h>
20 #include <stdlib.h>
21 #include <stdio.h>
22 #include <sys/stat.h>
23 #include <libxml/parser.h>
24 #include <errno.h>
25 
26 #include "ds3.h"
27 #include "ds3_net.h"
28 #include "ds3_connection.h"
29 #include "ds3_request.h"
31 #include "ds3_uint64_string_map.h"
32 #include "ds3_utils.h"
33 
34 #ifdef _WIN32
35 #include <io.h>
36 #else
37 #include <unistd.h>
38 #endif
39 
40 #ifndef S_ISDIR
41 #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
42 #endif
43 
44 
45 void ds3_client_register_logging(ds3_client* client, ds3_log_lvl log_lvl, void (* log_callback)(const char* log_message, void* user_data), void* user_data) {
46  if (client == NULL) {
47  fprintf(stderr, "Cannot configure a null ds3_client for logging.\n");
48  return;
49  }
50  if (client->log != NULL) {
51  g_free(client->log);
52  }
53  ds3_log* log = g_new0(ds3_log, 1);
54  log->log_callback = log_callback;
55  log->user_data = user_data;
56  log->log_lvl = log_lvl;
57 
58  client->log = log;
59 }
60 
61 ds3_creds* ds3_create_creds(const char* access_id, const char* secret_key) {
62  ds3_creds* creds;
63  if (access_id == NULL || secret_key == NULL) {
64  fprintf(stderr, "Arguments cannot be NULL\n");
65  return NULL;
66  }
67 
68  creds = g_new0(ds3_creds, 1);
69  creds->access_id = ds3_str_init(access_id);
70  creds->secret_key = ds3_str_init(secret_key);
71 
72  return creds;
73 }
74 
75 void ds3_client_register_net(ds3_client* client, ds3_error* (* net_callback)(const ds3_client* client,
76  const ds3_request* _request,
77  void* read_user_struct,
78  size_t (*read_handler_func)(void*, size_t, size_t, void*),
79  void* write_user_struct,
80  size_t (*write_handler_func)(void*, size_t, size_t, void*),
81  ds3_string_multimap** return_headers)) {
82  if (client == NULL) {
83  fprintf(stderr, "Cannot configure a null ds3_client for net_callback.\n");
84  return;
85  }
86 
87  client->net_callback = net_callback;
88 }
89 
90 ds3_client* ds3_create_client(const char *const endpoint, ds3_creds* creds) {
91  ds3_client* client;
92  if (endpoint == NULL) {
93  fprintf(stderr, "Null endpoint\n");
94  return NULL;
95  }
96 
97  client = g_new0(ds3_client, 1);
98  client->endpoint = ds3_str_init(endpoint);
99  client->creds = creds;
100  client->num_redirects = 5L; //default to 5 redirects before failing
101 
103 
105 
106  return client;
107 }
108 
110  ds3_creds* creds;
111  ds3_client* _client;
112  char* endpoint = getenv("DS3_ENDPOINT");
113  char* access_key = getenv("DS3_ACCESS_KEY");
114  char* secret_key = getenv("DS3_SECRET_KEY");
115  char* http_proxy = getenv("http_proxy");
116 
117  if (endpoint == NULL) {
118  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_ENDPOINT'");
119  }
120 
121  if (access_key == NULL) {
122  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_ACCESS_KEY'");
123  }
124 
125  if (secret_key == NULL) {
126  return ds3_create_error(DS3_ERROR_MISSING_ARGS, "Missing enviornment variable 'DS3_SECRET_KEY'");
127  }
128 
129  creds = ds3_create_creds(access_key, secret_key);
130  _client = ds3_create_client(endpoint, creds);
131 
132  if (http_proxy != NULL) {
133  ds3_client_proxy(_client, http_proxy);
134  }
135 
136  *client = _client;
137 
138  return NULL;
139 }
140 
141 // Allow multiple ds3_clients to share a ds3_connection_pool
142 ds3_client* ds3_copy_client(const ds3_client const* client) {
143  if (client == NULL) {
144  return NULL;
145  }
146 
147  ds3_client* copied_client = g_new0(ds3_client, 1);
148  copied_client->endpoint = ds3_str_dup(client->endpoint);
149  if (client->proxy) {
150  copied_client->proxy = ds3_str_dup(client->proxy);
151  }
152  copied_client->num_redirects = client->num_redirects;
153  copied_client->creds = ds3_create_creds(client->creds->access_id->value, client->creds->secret_key->value);
154 
156  ds3_client_register_logging(copied_client, client->log->log_lvl, client->log->log_callback, NULL);
157 
158  copied_client->connection_pool = client->connection_pool;
160  return copied_client;
161 }
162 
163 void ds3_client_proxy(ds3_client* client, const char* proxy) {
164  ds3_str_free(client->proxy);
165  client->proxy = ds3_str_init(proxy);
166 }
167 
168 void ds3_creds_free(ds3_creds* creds) {
169  if (creds == NULL) {
170  return;
171  }
172 
173  ds3_str_free(creds->access_id);
174  ds3_str_free(creds->secret_key);
175  g_free(creds);
176 }
177 
179  if (client == NULL) {
180  return;
181  }
182 
183  // free client->connection_pool only if there are no remaining references
185 
186  ds3_str_free(client->endpoint);
187  ds3_str_free(client->proxy);
188  g_free(client->log);
189  g_free(client);
190 }
191 
192 
193 
194 size_t ds3_write_to_file(void* buffer, size_t size, size_t nmemb, void* user_data) {
195  return fwrite(buffer, size, nmemb, (FILE*) user_data);
196 }
197 
198 size_t ds3_read_from_file(void* buffer, size_t size, size_t nmemb, void* user_data) {
199  return fread(buffer, size, nmemb, (FILE*) user_data);
200 }
201 
202 size_t ds3_write_to_fd(void* buffer, size_t size, size_t nmemb, void* user_data) {
203  return write(*(int*)user_data, buffer, size * nmemb);
204 }
205 
206 size_t ds3_read_from_fd(void* buffer, size_t size, size_t nmemb, void* user_data) {
207  return read(*(int*)user_data, buffer, size * nmemb);
208 }
209 
210 #ifdef _WIN32
211 static void get_file_size_windows(const char* file_path, uint64_t* file_size) {
212  BY_HANDLE_FILE_INFORMATION info;
213  HANDLE file_handle;
214  char * file_path_windows;
215  gunichar2 * file_path_windows_wide;
216  BOOL res;
217 
218  file_path_windows = g_strdup(file_path);
219 
220  /* Convert the path slashes to windows */
221  for (char * ch = file_path_windows; *ch != '\0'; ++ch) {
222  switch(*ch) {
223  case '/': *ch = '\\'; break;
224  }
225  }
226 
227  *file_size = 0;
228 
229  /* Convert the path to UTF16 to use in windows native function */
230  file_path_windows_wide = g_utf8_to_utf16(file_path_windows, -1, NULL, NULL, NULL);
231  if (file_path_windows_wide == NULL) {
232  fprintf(stderr, "error converting file name to wide char '%s'\n", file_path_windows);
233  g_free(file_path_windows);
234  return;
235  }
236 
237 
238  /* Open the file for attributes read only */
239  file_handle = CreateFileW(
240  (wchar_t*)file_path_windows_wide,
241  FILE_READ_ATTRIBUTES,
242  FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
243  NULL,
244  OPEN_EXISTING,
245  FILE_ATTRIBUTE_NORMAL,
246  NULL);
247  g_free(file_path_windows_wide);
248 
249  if (file_handle == INVALID_HANDLE_VALUE) {
250  g_free(file_path_windows);
251  fprintf(stderr, "error opening file '%s'\n", file_path_windows);
252  return;
253  }
254 
255  res = GetFileInformationByHandle(file_handle, &info);
256  CloseHandle(file_handle);
257 
258  if (!res) {
259  fprintf(stderr, "error getting file attributes\n");
260  g_free(file_path_windows);
261  return;
262  }
263 
264  /* If entry is file get the file size */
265  if (!(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
266  ULARGE_INTEGER size;
267  size.LowPart = info.nFileSizeLow;
268  size.HighPart = info.nFileSizeHigh;
269 
270  *file_size = size.QuadPart;
271  } else {
272  *file_size = 0;
273  }
274 
275  g_free(file_path_windows);
276 
277  return;
278 }
279 #endif
280 
281 static void get_file_size_posix(const char* file_path, uint64_t* file_size) {
282  struct stat file_info;
283  int result;
284 
285  result = stat(file_path, &file_info);
286  if (result != 0) {
287  fprintf(stderr, "Failed to get file info for '%s' res=%d errno=%d: %s\n", file_path, result, errno, strerror(errno));
288  *file_size = 0;
289  return;
290  }
291 
292  if (S_ISDIR(file_info.st_mode)) {
293  *file_size = 0;
294  } else {
295  *file_size = file_info.st_size;
296  }
297 }
298 
299 uint64_t ds3_get_file_size(const char* file_path) {
300  uint64_t size = 0;
301 #ifdef _WIN32
302  get_file_size_windows(file_path, &size);
303 #else
304  get_file_size_posix(file_path, &size);
305 #endif
306  return size;
307 }
308 
309 static ds3_bulk_object_response* _ds3_bulk_object_from_file(const char* file_name, const char* base_path) {
310  struct stat file_info;
311  int result;
313  char* file_to_stat;
314  memset(&file_info, 0, sizeof(struct stat));
315 
316  if (base_path != NULL) {
317  file_to_stat = g_strconcat(base_path, file_name, NULL);
318  } else {
319  file_to_stat = g_strdup(file_name);
320  }
321 
322  obj->name = ds3_str_init(file_name);
323 
324 #ifdef _WIN32
325  get_file_size_windows(file_to_stat, &obj->length);
326 #else
327  get_file_size_posix(file_to_stat, &obj->length);
328 #endif
329 
330  g_free(file_to_stat);
331 
332  return obj;
333 }
334 
335 ds3_bulk_object_list_response* ds3_convert_file_list(const char** file_list, uint64_t num_files) {
336  return ds3_convert_file_list_with_basepath(file_list, num_files, NULL);
337 }
338 
339 ds3_bulk_object_list_response* ds3_convert_file_list_with_basepath(const char** file_list, uint64_t num_files, const char* base_path) {
340  size_t file_index;
342 
343  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
344  for (file_index = 0; file_index < num_files; file_index++) {
345  g_ptr_array_add(ds3_bulk_object_response_array, _ds3_bulk_object_from_file(file_list[file_index], base_path));
346  }
347 
348  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
349  obj_list->num_objects = ds3_bulk_object_response_array->len;
350  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
351 
352  return obj_list;
353 }
354 
356  size_t object_index;
358 
359  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
360 
361  for (object_index = 0; object_index < num_objects; object_index++) {
362  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
363  response->name = ds3_str_dup(objects[object_index]->key);
364  response->version_id = ds3_str_dup(objects[object_index]->version_id);
365 
366  g_ptr_array_add(ds3_bulk_object_response_array, response);
367  }
368 
369  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
370  obj_list->num_objects = ds3_bulk_object_response_array->len;
371  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
372 
373  return obj_list;
374 }
375 
376 ds3_bulk_object_list_response* ds3_convert_object_list_from_strings(const char** objects, uint64_t num_objects) {
377  size_t object_index;
379 
380  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
381 
382  for (object_index = 0; object_index < num_objects; object_index++) {
383  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
384  response->name = ds3_str_init(objects[object_index]);
385  g_ptr_array_add(ds3_bulk_object_response_array, response);
386  }
387 
388  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
389  obj_list->num_objects = ds3_bulk_object_response_array->len;
390  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
391 
392  return obj_list;
393 }
394 
396  return g_new0(ds3_bulk_object_list_response, 1);
397 }
398 
400  size_t object_index;
402 
403  GPtrArray* ds3_bulk_object_response_array = g_ptr_array_new();
404 
405  for (object_index = 0; object_index < num_objects; object_index++) {
406  ds3_bulk_object_response* response = g_new0(ds3_bulk_object_response, 1);
407  g_ptr_array_add(ds3_bulk_object_response_array, response);
408  }
409 
410  obj_list->objects = (ds3_bulk_object_response**)ds3_bulk_object_response_array->pdata;
411  obj_list->num_objects = ds3_bulk_object_response_array->len;
412  g_ptr_array_free(ds3_bulk_object_response_array, FALSE);
413 
414  return obj_list;
415 }
417  if (response == NULL) {
418  return;
419  }
420 
421  ds3_str_free(response->etag);
422 
423  g_free(response);
424 }
425 
427  if (response == NULL) {
428  return;
429  }
430 
431  int index;
432  for (index = 0; index < response->num_parts; index++) {
434  }
435  g_free(response->parts);
436  g_free(response);
437 }
438 
440  if (response == NULL) {
441  return;
442  }
443 
444  int index;
445  for (index = 0; index < response->num_strings; index++) {
446  ds3_str_free(response->strings_list[index]);
447  }
448  g_free(response->strings_list);
449  g_free(response);
450 }
451 
453  if (ids == NULL) {
454  return;
455  }
456 
457  int index;
458  for (index = 0; index < ids->num_strings; index++) {
459  ds3_str_free(ids->strings_list[index]);
460  }
461  g_free(ids->strings_list);
462  g_free(ids);
463 }
464 
466  if (response == NULL) {
467  return;
468  }
469  if (response->blob_checksum_type != NULL) {
470  g_free(response->blob_checksum_type);
471  }
472  if (response->metadata != NULL) {
473  ds3_metadata_free(response->metadata);
474  }
475  if (response->blob_checksums != NULL) {
477  }
478 
479  g_free(response);
480 }
481 
483  g_free(paging);
484 }
485 
486 void ds3_request_free(ds3_request* _request) {
487  struct _ds3_request* request;
488  if (_request == NULL) {
489  return;
490  }
491 
492  request = (struct _ds3_request*) _request;
493 
494  ds3_str_free(request->path);
495  ds3_str_free(request->checksum);
496 
497  if (request->headers != NULL) {
498  g_hash_table_destroy(request->headers);
499  }
500  if (request->query_params != NULL) {
501  g_hash_table_destroy(request->query_params);
502  }
503 
504  g_free(request);
505 }
506 
507 void ds3_error_free(ds3_error* error) {
508  if (error == NULL) {
509  return;
510  }
511 
512  ds3_str_free(error->message);
513 
515 
516  g_free(error);
517 }
518 
519 void ds3_cleanup(void) {
520  net_cleanup();
521  xmlCleanupParser();
522 }
523 
524 
526  if (response == NULL) {
527  return;
528  }
529 
530  ds3_str_free(response->data_policy_id);
531  ds3_str_free(response->id);
532  ds3_str_free(response->target_id);
533 
534  g_free(response);
535 }
537  if (response == NULL) {
538  return;
539  }
540 
541  ds3_str_free(response->checksum);
542  ds3_str_free(response->id);
543  ds3_str_free(response->object_id);
544 
545  g_free(response);
546 }
548  if (response == NULL) {
549  return;
550  }
551 
552  ds3_str_free(response->creation_date);
553  ds3_str_free(response->data_policy_id);
554  ds3_str_free(response->id);
555  ds3_str_free(response->name);
556  ds3_str_free(response->user_id);
557 
558  g_free(response);
559 }
561  if (response == NULL) {
562  return;
563  }
564 
565  ds3_str_free(response->bucket_id);
566  ds3_str_free(response->group_id);
567  ds3_str_free(response->id);
568  ds3_str_free(response->user_id);
569 
570  g_free(response);
571 }
573  if (response == NULL) {
574  return;
575  }
576 
577  ds3_str_free(response->bucket_id);
578  ds3_str_free(response->created_at);
579  ds3_str_free(response->date_canceled);
580  ds3_str_free(response->error_message);
581  ds3_str_free(response->id);
582  ds3_str_free(response->name);
583  ds3_str_free(response->rechunked);
584  ds3_str_free(response->user_id);
585 
586  g_free(response);
587 }
589  if (response == NULL) {
590  return;
591  }
592 
593  ds3_str_free(response->bucket_id);
594  ds3_str_free(response->created_at);
595  ds3_str_free(response->date_completed);
596  ds3_str_free(response->error_message);
597  ds3_str_free(response->id);
598  ds3_str_free(response->name);
599  ds3_str_free(response->rechunked);
600  ds3_str_free(response->user_id);
601 
602  g_free(response);
603 }
605  if (response == NULL) {
606  return;
607  }
608 
609  ds3_str_free(response->id);
610  ds3_str_free(response->instance_id);
611  ds3_str_free(response->last_heartbeat);
612 
613  g_free(response);
614 }
616  if (response == NULL) {
617  return;
618  }
619 
620  ds3_str_free(response->data_policy_id);
621  ds3_str_free(response->id);
622  ds3_str_free(response->storage_domain_id);
623 
624  g_free(response);
625 }
627  if (response == NULL) {
628  return;
629  }
630 
631  ds3_str_free(response->creation_date);
632  ds3_str_free(response->id);
633  ds3_str_free(response->name);
634 
635  g_free(response);
636 }
638  if (response == NULL) {
639  return;
640  }
641 
642  ds3_str_free(response->data_policy_id);
643  ds3_str_free(response->group_id);
644  ds3_str_free(response->id);
645  ds3_str_free(response->user_id);
646 
647  g_free(response);
648 }
650  if (response == NULL) {
651  return;
652  }
653 
655  ds3_str_free(response->blob_id);
656  ds3_str_free(response->bucket_id);
658  ds3_str_free(response->id);
661 
662  g_free(response);
663 }
665  if (response == NULL) {
666  return;
667  }
668 
669  ds3_str_free(response->data_policy_id);
670  ds3_str_free(response->id);
671  ds3_str_free(response->target_data_policy);
672  ds3_str_free(response->target_id);
673 
674  g_free(response);
675 }
677  if (response == NULL) {
678  return;
679  }
680 
681  ds3_str_free(response->error_message);
682  ds3_str_free(response->expiration_date);
683  ds3_str_free(response->id);
684 
685  g_free(response);
686 }
688  if (response == NULL) {
689  return;
690  }
691 
692  ds3_str_free(response->id);
693  ds3_str_free(response->name);
694 
695  g_free(response);
696 }
698  if (response == NULL) {
699  return;
700  }
701 
702  ds3_str_free(response->group_id);
703  ds3_str_free(response->id);
704  ds3_str_free(response->member_group_id);
705  ds3_str_free(response->member_user_id);
706 
707  g_free(response);
708 }
710  if (response == NULL) {
711  return;
712  }
713 
714  ds3_str_free(response->bucket_id);
715  ds3_str_free(response->created_at);
716  ds3_str_free(response->error_message);
717  ds3_str_free(response->id);
718  ds3_str_free(response->name);
719  ds3_str_free(response->rechunked);
720  ds3_str_free(response->user_id);
721 
722  g_free(response);
723 }
725  if (response == NULL) {
726  return;
727  }
728 
729  ds3_str_free(response->id);
730  ds3_str_free(response->job_creation_date);
731  ds3_str_free(response->job_id);
732  ds3_str_free(response->node_id);
735  ds3_str_free(response->read_from_pool_id);
737  ds3_str_free(response->read_from_tape_id);
738 
739  g_free(response);
740 }
742  if (response == NULL) {
743  return;
744  }
745 
747  ds3_str_free(response->dns_name);
748  ds3_str_free(response->id);
749  ds3_str_free(response->last_heartbeat);
750  ds3_str_free(response->name);
751  ds3_str_free(response->serial_number);
752 
753  g_free(response);
754 }
756  if (response == NULL) {
757  return;
758  }
759 
760  ds3_str_free(response->data_policy_id);
761  ds3_str_free(response->id);
762  ds3_str_free(response->target_id);
763 
764  g_free(response);
765 }
767  if (response == NULL) {
768  return;
769  }
770 
771  ds3_str_free(response->bucket_id);
772  ds3_str_free(response->creation_date);
773  ds3_str_free(response->id);
774  ds3_str_free(response->name);
775 
776  g_free(response);
777 }
779  if (response == NULL) {
780  return;
781  }
782 
784  ds3_str_free(response->id);
785  ds3_str_free(response->name);
786 
787  g_free(response);
788 }
790  if (response == NULL) {
791  return;
792  }
793 
794 
795  g_free(response);
796 }
798  if (response == NULL) {
799  return;
800  }
801 
802  ds3_str_free(response->date);
803  ds3_str_free(response->error_message);
804  ds3_str_free(response->id);
805  ds3_str_free(response->storage_domain_id);
806 
807  g_free(response);
808 }
810  if (response == NULL) {
811  return;
812  }
813 
814  ds3_str_free(response->id);
815  ds3_str_free(response->pool_partition_id);
816  ds3_str_free(response->storage_domain_id);
817  ds3_str_free(response->tape_partition_id);
818  ds3_str_free(response->tape_type);
819 
820  g_free(response);
821 }
823  if (response == NULL) {
824  return;
825  }
826 
827  ds3_str_free(response->date);
828  ds3_str_free(response->error_message);
829  ds3_str_free(response->id);
830 
831  g_free(response);
832 }
834  if (response == NULL) {
835  return;
836  }
837 
838  ds3_str_free(response->auth_id);
840  ds3_str_free(response->id);
841  ds3_str_free(response->name);
842  ds3_str_free(response->secret_key);
843 
844  g_free(response);
845 }
847  if (response == NULL) {
848  return;
849  }
850 
851  ds3_str_free(response->creation_date);
852  ds3_str_free(response->id);
853  ds3_str_free(response->last_failure);
854  ds3_str_free(response->last_notification);
856  ds3_str_free(response->user_id);
857 
858  g_free(response);
859 }
861  if (response == NULL) {
862  return;
863  }
864 
865  ds3_str_free(response->creation_date);
866  ds3_str_free(response->id);
867  ds3_str_free(response->last_failure);
868  ds3_str_free(response->last_notification);
870  ds3_str_free(response->user_id);
871 
872  g_free(response);
873 }
875  if (response == NULL) {
876  return;
877  }
878 
879  ds3_str_free(response->creation_date);
880  ds3_str_free(response->dao_type);
881  ds3_str_free(response->id);
882  ds3_str_free(response->last_failure);
883  ds3_str_free(response->last_notification);
885  ds3_str_free(response->user_id);
886 
887  g_free(response);
888 }
890  if (response == NULL) {
891  return;
892  }
893 
894  ds3_str_free(response->creation_date);
895  ds3_str_free(response->id);
896  ds3_str_free(response->job_id);
897  ds3_str_free(response->last_failure);
898  ds3_str_free(response->last_notification);
900  ds3_str_free(response->user_id);
901 
902  g_free(response);
903 }
905  if (response == NULL) {
906  return;
907  }
908 
909  ds3_str_free(response->creation_date);
910  ds3_str_free(response->id);
911  ds3_str_free(response->last_failure);
912  ds3_str_free(response->last_notification);
914  ds3_str_free(response->user_id);
915 
916  g_free(response);
917 }
919  if (response == NULL) {
920  return;
921  }
922 
923  ds3_str_free(response->creation_date);
924  ds3_str_free(response->id);
925  ds3_str_free(response->last_failure);
926  ds3_str_free(response->last_notification);
928  ds3_str_free(response->user_id);
929 
930  g_free(response);
931 }
933  if (response == NULL) {
934  return;
935  }
936 
937  ds3_str_free(response->creation_date);
938  ds3_str_free(response->id);
939  ds3_str_free(response->last_failure);
940  ds3_str_free(response->last_notification);
942  ds3_str_free(response->user_id);
943 
944  g_free(response);
945 }
947  if (response == NULL) {
948  return;
949  }
950 
951  ds3_str_free(response->creation_date);
952  ds3_str_free(response->id);
953  ds3_str_free(response->job_id);
954  ds3_str_free(response->last_failure);
955  ds3_str_free(response->last_notification);
957  ds3_str_free(response->user_id);
958 
959  g_free(response);
960 }
962  if (response == NULL) {
963  return;
964  }
965 
966  ds3_str_free(response->creation_date);
967  ds3_str_free(response->id);
968  ds3_str_free(response->last_failure);
969  ds3_str_free(response->last_notification);
971  ds3_str_free(response->user_id);
972 
973  g_free(response);
974 }
976  if (response == NULL) {
977  return;
978  }
979 
980  ds3_str_free(response->creation_date);
981  ds3_str_free(response->id);
982  ds3_str_free(response->job_id);
983  ds3_str_free(response->last_failure);
984  ds3_str_free(response->last_notification);
986  ds3_str_free(response->user_id);
987 
988  g_free(response);
989 }
991  if (response == NULL) {
992  return;
993  }
994 
995  ds3_str_free(response->creation_date);
996  ds3_str_free(response->id);
997  ds3_str_free(response->last_failure);
998  ds3_str_free(response->last_notification);
1000  ds3_str_free(response->user_id);
1001 
1002  g_free(response);
1003 }
1005  if (response == NULL) {
1006  return;
1007  }
1008 
1009  ds3_str_free(response->creation_date);
1010  ds3_str_free(response->id);
1011  ds3_str_free(response->last_failure);
1012  ds3_str_free(response->last_notification);
1014  ds3_str_free(response->user_id);
1015 
1016  g_free(response);
1017 }
1019  if (response == NULL) {
1020  return;
1021  }
1022 
1023  ds3_str_free(response->creation_date);
1024  ds3_str_free(response->id);
1025  ds3_str_free(response->last_failure);
1026  ds3_str_free(response->last_notification);
1028  ds3_str_free(response->user_id);
1029 
1030  g_free(response);
1031 }
1033  if (response == NULL) {
1034  return;
1035  }
1036 
1037  ds3_str_free(response->creation_date);
1038  ds3_str_free(response->id);
1039  ds3_str_free(response->last_failure);
1040  ds3_str_free(response->last_notification);
1042  ds3_str_free(response->user_id);
1043 
1044  g_free(response);
1045 }
1047  if (response == NULL) {
1048  return;
1049  }
1050 
1051  ds3_str_free(response->creation_date);
1052  ds3_str_free(response->id);
1053  ds3_str_free(response->last_failure);
1054  ds3_str_free(response->last_notification);
1056  ds3_str_free(response->user_id);
1057 
1058  g_free(response);
1059 }
1061  if (response == NULL) {
1062  return;
1063  }
1064 
1065  ds3_str_free(response->id);
1066  ds3_str_free(response->node_id);
1067  ds3_str_free(response->path);
1068 
1069  g_free(response);
1070 }
1072  if (response == NULL) {
1073  return;
1074  }
1075 
1076  ds3_str_free(response->bucket_id);
1077  ds3_str_free(response->guid);
1078  ds3_str_free(response->id);
1079  ds3_str_free(response->last_accessed);
1080  ds3_str_free(response->last_modified);
1081  ds3_str_free(response->last_verified);
1082  ds3_str_free(response->mountpoint);
1083  ds3_str_free(response->name);
1084  ds3_str_free(response->partition_id);
1086 
1087  g_free(response);
1088 }
1090  if (response == NULL) {
1091  return;
1092  }
1093 
1094  ds3_str_free(response->date);
1095  ds3_str_free(response->error_message);
1096  ds3_str_free(response->id);
1097  ds3_str_free(response->pool_id);
1098 
1099  g_free(response);
1100 }
1102  if (response == NULL) {
1103  return;
1104  }
1105 
1106  ds3_str_free(response->id);
1107  ds3_str_free(response->name);
1108 
1109  g_free(response);
1110 }
1112  if (response == NULL) {
1113  return;
1114  }
1115 
1116  ds3_str_free(response->blob_id);
1117  ds3_str_free(response->bucket_id);
1118  ds3_str_free(response->date_written);
1119  ds3_str_free(response->id);
1120  ds3_str_free(response->last_accessed);
1121  ds3_str_free(response->pool_id);
1122 
1123  g_free(response);
1124 }
1126  if (response == NULL) {
1127  return;
1128  }
1129 
1130  ds3_str_free(response->blob_id);
1131  ds3_str_free(response->id);
1132  ds3_str_free(response->tape_id);
1133 
1134  g_free(response);
1135 }
1137  if (response == NULL) {
1138  return;
1139  }
1140 
1141  ds3_str_free(response->bar_code);
1142  ds3_str_free(response->bucket_id);
1144  ds3_str_free(response->eject_date);
1145  ds3_str_free(response->eject_label);
1146  ds3_str_free(response->eject_location);
1147  ds3_str_free(response->eject_pending);
1148  ds3_str_free(response->id);
1149  ds3_str_free(response->last_accessed);
1150  ds3_str_free(response->last_checkpoint);
1151  ds3_str_free(response->last_modified);
1152  ds3_str_free(response->last_verified);
1154  ds3_str_free(response->partition_id);
1155  ds3_str_free(response->serial_number);
1157  ds3_str_free(response->type);
1158 
1159  g_free(response);
1160 }
1162  if (response == NULL) {
1163  return;
1164  }
1165 
1166  ds3_str_free(response->id);
1167  ds3_str_free(response->partition_id);
1168  ds3_str_free(response->tape_type);
1169 
1170  g_free(response);
1171 }
1173  if (response == NULL) {
1174  return;
1175  }
1176 
1177  ds3_str_free(response->error_message);
1178  ds3_str_free(response->id);
1179  ds3_str_free(response->last_cleaned);
1180  ds3_str_free(response->mfg_serial_number);
1181  ds3_str_free(response->partition_id);
1182  ds3_str_free(response->serial_number);
1183  ds3_str_free(response->tape_id);
1184 
1185  g_free(response);
1186 }
1188  if (response == NULL) {
1189  return;
1190  }
1191 
1192  ds3_str_free(response->date);
1193  ds3_str_free(response->error_message);
1194  ds3_str_free(response->id);
1195  ds3_str_free(response->tape_drive_id);
1196  ds3_str_free(response->tape_id);
1197 
1198  g_free(response);
1199 }
1201  if (response == NULL) {
1202  return;
1203  }
1204 
1205  ds3_str_free(response->id);
1206  ds3_str_free(response->management_url);
1207  ds3_str_free(response->name);
1208  ds3_str_free(response->serial_number);
1209 
1210  g_free(response);
1211 }
1213  if (response == NULL) {
1214  return;
1215  }
1216 
1217  ds3_str_free(response->error_message);
1218  ds3_str_free(response->id);
1219  ds3_str_free(response->library_id);
1220  ds3_str_free(response->name);
1221  ds3_str_free(response->serial_number);
1222 
1223  g_free(response);
1224 }
1226  if (response == NULL) {
1227  return;
1228  }
1229 
1230  ds3_str_free(response->date);
1231  ds3_str_free(response->error_message);
1232  ds3_str_free(response->id);
1233  ds3_str_free(response->partition_id);
1234 
1235  g_free(response);
1236 }
1238  if (response == NULL) {
1239  return;
1240  }
1241 
1242  ds3_str_free(response->account_key);
1243  ds3_str_free(response->account_name);
1244  ds3_str_free(response->cloud_bucket_prefix);
1245  ds3_str_free(response->cloud_bucket_suffix);
1246  ds3_str_free(response->id);
1247  ds3_str_free(response->last_fully_verified);
1248  ds3_str_free(response->name);
1249 
1250  g_free(response);
1251 }
1253  if (response == NULL) {
1254  return;
1255  }
1256 
1257  ds3_str_free(response->bucket_id);
1258  ds3_str_free(response->id);
1259  ds3_str_free(response->name);
1260  ds3_str_free(response->target_id);
1261 
1262  g_free(response);
1263 }
1265  if (response == NULL) {
1266  return;
1267  }
1268 
1269  ds3_str_free(response->date);
1270  ds3_str_free(response->error_message);
1271  ds3_str_free(response->id);
1272  ds3_str_free(response->target_id);
1273 
1274  g_free(response);
1275 }
1277  if (response == NULL) {
1278  return;
1279  }
1280 
1281  ds3_str_free(response->bucket_id);
1282  ds3_str_free(response->id);
1283  ds3_str_free(response->target_id);
1284 
1285  g_free(response);
1286 }
1288  if (response == NULL) {
1289  return;
1290  }
1291 
1292  ds3_str_free(response->admin_auth_id);
1293  ds3_str_free(response->admin_secret_key);
1294  ds3_str_free(response->data_path_end_point);
1295  ds3_str_free(response->data_path_proxy);
1296  ds3_str_free(response->id);
1297  ds3_str_free(response->name);
1299 
1300  g_free(response);
1301 }
1303  if (response == NULL) {
1304  return;
1305  }
1306 
1307  ds3_str_free(response->date);
1308  ds3_str_free(response->error_message);
1309  ds3_str_free(response->id);
1310  ds3_str_free(response->target_id);
1311 
1312  g_free(response);
1313 }
1315  if (response == NULL) {
1316  return;
1317  }
1318 
1319  ds3_str_free(response->bucket_id);
1320  ds3_str_free(response->id);
1321  ds3_str_free(response->target_id);
1322 
1323  g_free(response);
1324 }
1326  if (response == NULL) {
1327  return;
1328  }
1329 
1330  ds3_str_free(response->access_key);
1331  ds3_str_free(response->cloud_bucket_prefix);
1332  ds3_str_free(response->cloud_bucket_suffix);
1333  ds3_str_free(response->data_path_end_point);
1334  ds3_str_free(response->id);
1335  ds3_str_free(response->last_fully_verified);
1336  ds3_str_free(response->name);
1337  ds3_str_free(response->proxy_domain);
1338  ds3_str_free(response->proxy_host);
1339  ds3_str_free(response->proxy_password);
1340  ds3_str_free(response->proxy_username);
1341  ds3_str_free(response->secret_key);
1342 
1343  g_free(response);
1344 }
1346  if (response == NULL) {
1347  return;
1348  }
1349 
1350  ds3_str_free(response->bucket_id);
1351  ds3_str_free(response->id);
1352  ds3_str_free(response->name);
1353  ds3_str_free(response->target_id);
1354 
1355  g_free(response);
1356 }
1358  if (response == NULL) {
1359  return;
1360  }
1361 
1362  ds3_str_free(response->date);
1363  ds3_str_free(response->error_message);
1364  ds3_str_free(response->id);
1365  ds3_str_free(response->target_id);
1366 
1367  g_free(response);
1368 }
1370  if (response == NULL) {
1371  return;
1372  }
1373 
1374  ds3_str_free(response->bucket_id);
1375  ds3_str_free(response->id);
1376  ds3_str_free(response->target_id);
1377 
1378  g_free(response);
1379 }
1381  if (response == NULL) {
1382  return;
1383  }
1384 
1385  ds3_str_free(response->blob_id);
1386  ds3_str_free(response->id);
1387  ds3_str_free(response->target_id);
1388 
1389  g_free(response);
1390 }
1392  if (response == NULL) {
1393  return;
1394  }
1395 
1396  ds3_str_free(response->blob_id);
1397  ds3_str_free(response->id);
1398  ds3_str_free(response->target_id);
1399 
1400  g_free(response);
1401 }
1403  if (response == NULL) {
1404  return;
1405  }
1406 
1407  ds3_str_free(response->blob_id);
1408  ds3_str_free(response->id);
1409  ds3_str_free(response->target_id);
1410 
1411  g_free(response);
1412 }
1414  if (response == NULL) {
1415  return;
1416  }
1417 
1418  ds3_str_free(response->branch);
1419  ds3_str_free(response->revision);
1420  ds3_str_free(response->version);
1421 
1422  g_free(response);
1423 }
1425  if (response == NULL) {
1426  return;
1427  }
1428 
1429  ds3_str_free(response->date);
1430  ds3_str_free(response->error_message);
1432  ds3_str_free(response->target_id);
1433 
1434  g_free(response);
1435 }
1437  if (response == NULL) {
1438  return;
1439  }
1440 
1441  ds3_str_free(response->date);
1442  ds3_str_free(response->error_message);
1444  ds3_str_free(response->target_id);
1445 
1446  g_free(response);
1447 }
1449  if (response == NULL) {
1450  return;
1451  }
1452 
1453  size_t index;
1454  ds3_str_free(response->dao_type);
1455  for (index = 0; index < response->num_ids; index++) {
1456  ds3_str_free(response->ids[index]);
1457  }
1458  g_free(response->ids);
1460 
1461  g_free(response);
1462 }
1464  if (response == NULL) {
1465  return;
1466  }
1467 
1468  ds3_str_free(response->job_id);
1470 
1471  g_free(response);
1472 }
1474  if (response == NULL) {
1475  return;
1476  }
1477 
1478  ds3_str_free(response->date);
1479  ds3_str_free(response->error_message);
1481  ds3_str_free(response->pool_id);
1482 
1483  g_free(response);
1484 }
1486  if (response == NULL) {
1487  return;
1488  }
1489 
1490  ds3_str_free(response->date);
1491  ds3_str_free(response->error_message);
1493  ds3_str_free(response->target_id);
1494 
1495  g_free(response);
1496 }
1498  if (response == NULL) {
1499  return;
1500  }
1501 
1502  size_t index;
1503  for (index = 0; index < response->num_tape_bar_codes; index++) {
1504  ds3_str_free(response->tape_bar_codes[index]);
1505  }
1506  g_free(response->tape_bar_codes);
1507 
1508  g_free(response);
1509 }
1511  if (response == NULL) {
1512  return;
1513  }
1514 
1515  ds3_str_free(response->date);
1516  ds3_str_free(response->error_message);
1518  ds3_str_free(response->storage_domain_id);
1519 
1520  g_free(response);
1521 }
1523  if (response == NULL) {
1524  return;
1525  }
1526 
1527  ds3_str_free(response->date);
1528  ds3_str_free(response->error_message);
1530 
1531  g_free(response);
1532 }
1534  if (response == NULL) {
1535  return;
1536  }
1537 
1538  ds3_str_free(response->date);
1539  ds3_str_free(response->error_message);
1541  ds3_str_free(response->tape_drive_id);
1542  ds3_str_free(response->tape_id);
1543 
1544  g_free(response);
1545 }
1547  if (response == NULL) {
1548  return;
1549  }
1550 
1551  ds3_str_free(response->date);
1552  ds3_str_free(response->error_message);
1554  ds3_str_free(response->partition_id);
1555 
1556  g_free(response);
1557 }
1559  if (response == NULL) {
1560  return;
1561  }
1562 
1563  size_t index;
1564  for (index = 0; index < response->num_tapes_to_online; index++) {
1566  }
1567  g_free(response->tapes_to_online);
1568 
1569  g_free(response);
1570 }
1572  if (response == NULL) {
1573  return;
1574  }
1575 
1576  ds3_str_free(response->date_scheduled);
1577  ds3_str_free(response->date_started);
1578  ds3_str_free(response->description);
1579  ds3_str_free(response->drive_id);
1580  ds3_str_free(response->name);
1581  ds3_str_free(response->pool_id);
1582  ds3_str_free(response->tape_id);
1583  ds3_str_free(response->target_id);
1584  ds3_str_free(response->target_type);
1585 
1586  g_free(response);
1587 }
1589  if (response == NULL) {
1590  return;
1591  }
1592 
1593  size_t index;
1594  for (index = 0; index < response->num_tasks; index++) {
1596  }
1597  g_free(response->tasks);
1598 
1599  g_free(response);
1600 }
1602  if (response == NULL) {
1603  return;
1604  }
1605 
1606  ds3_blob_response_free(response->blob);
1607 
1608  g_free(response);
1609 }
1611  if (response == NULL) {
1612  return;
1613  }
1614 
1615  size_t index;
1617  for (index = 0; index < response->num_entries; index++) {
1619  }
1620  g_free(response->entries);
1621  ds3_str_free(response->summary);
1622 
1623  g_free(response);
1624 }
1626  if (response == NULL) {
1627  return;
1628  }
1629 
1630  size_t index;
1631  for (index = 0; index < response->num_filesystems; index++) {
1633  }
1634  g_free(response->filesystems);
1635 
1636  g_free(response);
1637 }
1639  if (response == NULL) {
1640  return;
1641  }
1642 
1643  ds3_str_free(response->creation_date);
1644  ds3_str_free(response->name);
1645 
1646  g_free(response);
1647 }
1649  if (response == NULL) {
1650  return;
1651  }
1652 
1653  ds3_str_free(response->bucket);
1654  ds3_str_free(response->e_tag);
1655  ds3_str_free(response->key);
1656  ds3_str_free(response->location);
1657 
1658  g_free(response);
1659 }
1661  if (response == NULL) {
1662  return;
1663  }
1664 
1665  ds3_str_free(response->code);
1666  ds3_str_free(response->key);
1667  ds3_str_free(response->message);
1668 
1669  g_free(response);
1670 }
1672  if (response == NULL) {
1673  return;
1674  }
1675 
1676  size_t index;
1677  g_free(response->drive_types);
1678  ds3_str_free(response->error_message);
1679  ds3_str_free(response->id);
1680  ds3_str_free(response->library_id);
1681  ds3_str_free(response->name);
1682  ds3_str_free(response->serial_number);
1683  for (index = 0; index < response->num_tape_types; index++) {
1684  ds3_str_free(response->tape_types[index]);
1685  }
1686  g_free(response->tape_types);
1687 
1688  g_free(response);
1689 }
1691  if (response == NULL) {
1692  return;
1693  }
1694 
1695  ds3_str_free(response->code);
1696  ds3_str_free(response->message);
1697  ds3_str_free(response->resource);
1698 
1699  g_free(response);
1700 }
1702  if (response == NULL) {
1703  return;
1704  }
1705 
1706  ds3_str_free(response->bucket);
1707  ds3_str_free(response->key);
1708  ds3_str_free(response->upload_id);
1709 
1710  g_free(response);
1711 }
1713  if (response == NULL) {
1714  return;
1715  }
1716 
1717  ds3_str_free(response->e_tag);
1718  ds3_str_free(response->last_modified);
1719 
1720  g_free(response);
1721 }
1723  if (response == NULL) {
1724  return;
1725  }
1726 
1727  ds3_str_free(response->end_point);
1728  ds3_str_free(response->id);
1729 
1730  g_free(response);
1731 }
1733  if (response == NULL) {
1734  return;
1735  }
1736 
1737  ds3_str_free(response->key);
1738 
1739  g_free(response);
1740 }
1742  if (response == NULL) {
1743  return;
1744  }
1745 
1746  ds3_str_free(response->display_name);
1747  ds3_str_free(response->id);
1748 
1749  g_free(response);
1750 }
1752  if (response == NULL) {
1753  return;
1754  }
1755 
1756  ds3_str_free(response->api_version);
1758  ds3_str_free(response->instance_id);
1759  ds3_str_free(response->serial_number);
1760 
1761  g_free(response);
1762 }
1764  if (response == NULL) {
1765  return;
1766  }
1767 
1768 
1769  g_free(response);
1770 }
1772  if (response == NULL) {
1773  return;
1774  }
1775 
1776  size_t index;
1777  g_free(response->drive_types);
1778  ds3_str_free(response->error_message);
1779  ds3_str_free(response->id);
1780  ds3_str_free(response->library_id);
1781  ds3_str_free(response->name);
1782  ds3_str_free(response->serial_number);
1783  for (index = 0; index < response->num_tape_types; index++) {
1784  ds3_str_free(response->tape_types[index]);
1785  }
1786  g_free(response->tape_types);
1787 
1788  g_free(response);
1789 }
1791  if (response == NULL) {
1792  return;
1793  }
1794 
1795  ds3_str_free(response->cause);
1796  ds3_tape_response_free(response->tape);
1797 
1798  g_free(response);
1799 }
1801  if (response == NULL) {
1802  return;
1803  }
1804 
1805  size_t index;
1806  for (index = 0; index < response->num_failures; index++) {
1807  ds3_tape_failure_response_free(response->failures[index]);
1808  }
1809  g_free(response->failures);
1810 
1811  g_free(response);
1812 }
1814  if (response == NULL) {
1815  return;
1816  }
1817 
1818  ds3_str_free(response->path);
1819 
1820  g_free(response);
1821 }
1823  if (response == NULL) {
1824  return;
1825  }
1826 
1828  ds3_str_free(response->domain_name);
1829 
1830  g_free(response);
1831 }
1833  if (response == NULL) {
1834  return;
1835  }
1836 
1837 
1838  g_free(response);
1839 }
1841  if (response == NULL) {
1842  return;
1843  }
1844 
1845  size_t index;
1846  for (index = 0; index < response->num_bucket_acls; index++) {
1847  ds3_bucket_acl_response_free(response->bucket_acls[index]);
1848  }
1849  g_free(response->bucket_acls);
1850  ds3_paging_free(response->paging);
1851 
1852  g_free(response);
1853 }
1855  if (response == NULL) {
1856  return;
1857  }
1858 
1859  size_t index;
1860  for (index = 0; index < response->num_data_policy_acls; index++) {
1862  }
1863  g_free(response->data_policy_acls);
1864  ds3_paging_free(response->paging);
1865 
1866  g_free(response);
1867 }
1869  if (response == NULL) {
1870  return;
1871  }
1872 
1873  size_t index;
1874  for (index = 0; index < response->num_buckets; index++) {
1875  ds3_bucket_response_free(response->buckets[index]);
1876  }
1877  g_free(response->buckets);
1878  ds3_paging_free(response->paging);
1879 
1880  g_free(response);
1881 }
1883  if (response == NULL) {
1884  return;
1885  }
1886 
1887  size_t index;
1888  for (index = 0; index < response->num_cache_filesystems; index++) {
1890  }
1891  g_free(response->cache_filesystems);
1892  ds3_paging_free(response->paging);
1893 
1894  g_free(response);
1895 }
1897  if (response == NULL) {
1898  return;
1899  }
1900 
1901  size_t index;
1902  for (index = 0; index < response->num_azure_data_replication_rules; index++) {
1904  }
1905  g_free(response->azure_data_replication_rules);
1906  ds3_paging_free(response->paging);
1907 
1908  g_free(response);
1909 }
1911  if (response == NULL) {
1912  return;
1913  }
1914 
1915  size_t index;
1916  for (index = 0; index < response->num_data_persistence_rules; index++) {
1918  }
1919  g_free(response->data_persistence_rules);
1920  ds3_paging_free(response->paging);
1921 
1922  g_free(response);
1923 }
1925  if (response == NULL) {
1926  return;
1927  }
1928 
1929  size_t index;
1930  for (index = 0; index < response->num_data_policies; index++) {
1931  ds3_data_policy_response_free(response->data_policies[index]);
1932  }
1933  g_free(response->data_policies);
1934  ds3_paging_free(response->paging);
1935 
1936  g_free(response);
1937 }
1939  if (response == NULL) {
1940  return;
1941  }
1942 
1943  size_t index;
1944  for (index = 0; index < response->num_ds3_data_replication_rules; index++) {
1946  }
1947  g_free(response->ds3_data_replication_rules);
1948  ds3_paging_free(response->paging);
1949 
1950  g_free(response);
1951 }
1953  if (response == NULL) {
1954  return;
1955  }
1956 
1957  size_t index;
1958  for (index = 0; index < response->num_s3_data_replication_rules; index++) {
1960  }
1961  g_free(response->s3_data_replication_rules);
1962  ds3_paging_free(response->paging);
1963 
1964  g_free(response);
1965 }
1967  if (response == NULL) {
1968  return;
1969  }
1970 
1971  size_t index;
1972  for (index = 0; index < response->num_degraded_blobs; index++) {
1974  }
1975  g_free(response->degraded_blobs);
1976  ds3_paging_free(response->paging);
1977 
1978  g_free(response);
1979 }
1981  if (response == NULL) {
1982  return;
1983  }
1984 
1985  size_t index;
1986  for (index = 0; index < response->num_suspect_blob_azure_targets; index++) {
1988  }
1989  g_free(response->suspect_blob_azure_targets);
1990  ds3_paging_free(response->paging);
1991 
1992  g_free(response);
1993 }
1995  if (response == NULL) {
1996  return;
1997  }
1998 
1999  size_t index;
2000  for (index = 0; index < response->num_suspect_blob_ds3_targets; index++) {
2002  }
2003  g_free(response->suspect_blob_ds3_targets);
2004  ds3_paging_free(response->paging);
2005 
2006  g_free(response);
2007 }
2009  if (response == NULL) {
2010  return;
2011  }
2012 
2013  size_t index;
2014  for (index = 0; index < response->num_suspect_blob_pools; index++) {
2016  }
2017  g_free(response->suspect_blob_pools);
2018  ds3_paging_free(response->paging);
2019 
2020  g_free(response);
2021 }
2023  if (response == NULL) {
2024  return;
2025  }
2026 
2027  size_t index;
2028  for (index = 0; index < response->num_suspect_blob_s3_targets; index++) {
2030  }
2031  g_free(response->suspect_blob_s3_targets);
2032  ds3_paging_free(response->paging);
2033 
2034  g_free(response);
2035 }
2037  if (response == NULL) {
2038  return;
2039  }
2040 
2041  size_t index;
2042  for (index = 0; index < response->num_suspect_blob_tapes; index++) {
2044  }
2045  g_free(response->suspect_blob_tapes);
2046  ds3_paging_free(response->paging);
2047 
2048  g_free(response);
2049 }
2051  if (response == NULL) {
2052  return;
2053  }
2054 
2055  size_t index;
2056  for (index = 0; index < response->num_s3_objects; index++) {
2057  ds3_s3_object_response_free(response->s3_objects[index]);
2058  }
2059  g_free(response->s3_objects);
2060  ds3_paging_free(response->paging);
2061 
2062  g_free(response);
2063 }
2065  if (response == NULL) {
2066  return;
2067  }
2068 
2069  size_t index;
2070  for (index = 0; index < response->num_group_members; index++) {
2072  }
2073  g_free(response->group_members);
2074  ds3_paging_free(response->paging);
2075 
2076  g_free(response);
2077 }
2079  if (response == NULL) {
2080  return;
2081  }
2082 
2083  size_t index;
2084  for (index = 0; index < response->num_groups; index++) {
2085  ds3_group_response_free(response->groups[index]);
2086  }
2087  g_free(response->groups);
2088  ds3_paging_free(response->paging);
2089 
2090  g_free(response);
2091 }
2093  if (response == NULL) {
2094  return;
2095  }
2096 
2097  size_t index;
2098  for (index = 0; index < response->num_active_jobs; index++) {
2099  ds3_active_job_response_free(response->active_jobs[index]);
2100  }
2101  g_free(response->active_jobs);
2102  ds3_paging_free(response->paging);
2103 
2104  g_free(response);
2105 }
2107  if (response == NULL) {
2108  return;
2109  }
2110 
2111  size_t index;
2112  for (index = 0; index < response->num_canceled_jobs; index++) {
2114  }
2115  g_free(response->canceled_jobs);
2116  ds3_paging_free(response->paging);
2117 
2118  g_free(response);
2119 }
2121  if (response == NULL) {
2122  return;
2123  }
2124 
2125  size_t index;
2126  for (index = 0; index < response->num_completed_jobs; index++) {
2128  }
2129  g_free(response->completed_jobs);
2130  ds3_paging_free(response->paging);
2131 
2132  g_free(response);
2133 }
2135  if (response == NULL) {
2136  return;
2137  }
2138 
2139  size_t index;
2140  for (index = 0; index < response->num_nodes; index++) {
2141  ds3_node_response_free(response->nodes[index]);
2142  }
2143  g_free(response->nodes);
2144  ds3_paging_free(response->paging);
2145 
2146  g_free(response);
2147 }
2149  if (response == NULL) {
2150  return;
2151  }
2152 
2153  size_t index;
2154  for (index = 0; index < response->num_azure_target_failure_notification_registrations; index++) {
2156  }
2158  ds3_paging_free(response->paging);
2159 
2160  g_free(response);
2161 }
2163  if (response == NULL) {
2164  return;
2165  }
2166 
2167  size_t index;
2168  for (index = 0; index < response->num_ds3_target_failure_notification_registrations; index++) {
2170  }
2172  ds3_paging_free(response->paging);
2173 
2174  g_free(response);
2175 }
2177  if (response == NULL) {
2178  return;
2179  }
2180 
2181  size_t index;
2182  for (index = 0; index < response->num_job_completed_notification_registrations; index++) {
2184  }
2185  g_free(response->job_completed_notification_registrations);
2186  ds3_paging_free(response->paging);
2187 
2188  g_free(response);
2189 }
2191  if (response == NULL) {
2192  return;
2193  }
2194 
2195  size_t index;
2196  for (index = 0; index < response->num_job_created_notification_registrations; index++) {
2198  }
2199  g_free(response->job_created_notification_registrations);
2200  ds3_paging_free(response->paging);
2201 
2202  g_free(response);
2203 }
2205  if (response == NULL) {
2206  return;
2207  }
2208 
2209  size_t index;
2210  for (index = 0; index < response->num_job_creation_failed_notification_registrations; index++) {
2212  }
2214  ds3_paging_free(response->paging);
2215 
2216  g_free(response);
2217 }
2219  if (response == NULL) {
2220  return;
2221  }
2222 
2223  size_t index;
2224  for (index = 0; index < response->num_s3_object_cached_notification_registrations; index++) {
2226  }
2228  ds3_paging_free(response->paging);
2229 
2230  g_free(response);
2231 }
2233  if (response == NULL) {
2234  return;
2235  }
2236 
2237  size_t index;
2238  for (index = 0; index < response->num_s3_object_lost_notification_registrations; index++) {
2240  }
2242  ds3_paging_free(response->paging);
2243 
2244  g_free(response);
2245 }
2247  if (response == NULL) {
2248  return;
2249  }
2250 
2251  size_t index;
2252  for (index = 0; index < response->num_s3_object_persisted_notification_registrations; index++) {
2254  }
2256  ds3_paging_free(response->paging);
2257 
2258  g_free(response);
2259 }
2261  if (response == NULL) {
2262  return;
2263  }
2264 
2265  size_t index;
2266  for (index = 0; index < response->num_pool_failure_notification_registrations; index++) {
2268  }
2269  g_free(response->pool_failure_notification_registrations);
2270  ds3_paging_free(response->paging);
2271 
2272  g_free(response);
2273 }
2275  if (response == NULL) {
2276  return;
2277  }
2278 
2279  size_t index;
2280  for (index = 0; index < response->num_s3_target_failure_notification_registrations; index++) {
2282  }
2284  ds3_paging_free(response->paging);
2285 
2286  g_free(response);
2287 }
2289  if (response == NULL) {
2290  return;
2291  }
2292 
2293  size_t index;
2294  for (index = 0; index < response->num_storage_domain_failure_notification_registrations; index++) {
2296  }
2298  ds3_paging_free(response->paging);
2299 
2300  g_free(response);
2301 }
2303  if (response == NULL) {
2304  return;
2305  }
2306 
2307  size_t index;
2308  for (index = 0; index < response->num_system_failure_notification_registrations; index++) {
2310  }
2312  ds3_paging_free(response->paging);
2313 
2314  g_free(response);
2315 }
2317  if (response == NULL) {
2318  return;
2319  }
2320 
2321  size_t index;
2322  for (index = 0; index < response->num_tape_failure_notification_registrations; index++) {
2324  }
2325  g_free(response->tape_failure_notification_registrations);
2326  ds3_paging_free(response->paging);
2327 
2328  g_free(response);
2329 }
2331  if (response == NULL) {
2332  return;
2333  }
2334 
2335  size_t index;
2336  for (index = 0; index < response->num_tape_partition_failure_notification_registrations; index++) {
2338  }
2340  ds3_paging_free(response->paging);
2341 
2342  g_free(response);
2343 }
2345  if (response == NULL) {
2346  return;
2347  }
2348 
2349  size_t index;
2350  for (index = 0; index < response->num_pool_failures; index++) {
2352  }
2353  g_free(response->pool_failures);
2354  ds3_paging_free(response->paging);
2355 
2356  g_free(response);
2357 }
2359  if (response == NULL) {
2360  return;
2361  }
2362 
2363  size_t index;
2364  for (index = 0; index < response->num_pool_partitions; index++) {
2366  }
2367  g_free(response->pool_partitions);
2368  ds3_paging_free(response->paging);
2369 
2370  g_free(response);
2371 }
2373  if (response == NULL) {
2374  return;
2375  }
2376 
2377  size_t index;
2378  for (index = 0; index < response->num_pools; index++) {
2379  ds3_pool_response_free(response->pools[index]);
2380  }
2381  g_free(response->pools);
2382  ds3_paging_free(response->paging);
2383 
2384  g_free(response);
2385 }
2387  if (response == NULL) {
2388  return;
2389  }
2390 
2391  size_t index;
2392  for (index = 0; index < response->num_storage_domain_failures; index++) {
2394  }
2395  g_free(response->storage_domain_failures);
2396  ds3_paging_free(response->paging);
2397 
2398  g_free(response);
2399 }
2401  if (response == NULL) {
2402  return;
2403  }
2404 
2405  size_t index;
2406  for (index = 0; index < response->num_storage_domain_members; index++) {
2408  }
2409  g_free(response->storage_domain_members);
2410  ds3_paging_free(response->paging);
2411 
2412  g_free(response);
2413 }
2415  if (response == NULL) {
2416  return;
2417  }
2418 
2419  size_t index;
2420  for (index = 0; index < response->num_storage_domains; index++) {
2422  }
2423  g_free(response->storage_domains);
2424  ds3_paging_free(response->paging);
2425 
2426  g_free(response);
2427 }
2429  if (response == NULL) {
2430  return;
2431  }
2432 
2433  size_t index;
2434  for (index = 0; index < response->num_feature_keys; index++) {
2435  ds3_feature_key_response_free(response->feature_keys[index]);
2436  }
2437  g_free(response->feature_keys);
2438  ds3_paging_free(response->paging);
2439 
2440  g_free(response);
2441 }
2443  if (response == NULL) {
2444  return;
2445  }
2446 
2447  size_t index;
2448  for (index = 0; index < response->num_system_failures; index++) {
2450  }
2451  g_free(response->system_failures);
2452  ds3_paging_free(response->paging);
2453 
2454  g_free(response);
2455 }
2457  if (response == NULL) {
2458  return;
2459  }
2460 
2461  size_t index;
2462  for (index = 0; index < response->num_tape_density_directives; index++) {
2464  }
2465  g_free(response->tape_density_directives);
2466  ds3_paging_free(response->paging);
2467 
2468  g_free(response);
2469 }
2471  if (response == NULL) {
2472  return;
2473  }
2474 
2475  size_t index;
2476  for (index = 0; index < response->num_tape_drives; index++) {
2477  ds3_tape_drive_response_free(response->tape_drives[index]);
2478  }
2479  g_free(response->tape_drives);
2480  ds3_paging_free(response->paging);
2481 
2482  g_free(response);
2483 }
2485  if (response == NULL) {
2486  return;
2487  }
2488 
2489  size_t index;
2490  for (index = 0; index < response->num_detailed_tape_failures; index++) {
2492  }
2493  g_free(response->detailed_tape_failures);
2494  ds3_paging_free(response->paging);
2495 
2496  g_free(response);
2497 }
2499  if (response == NULL) {
2500  return;
2501  }
2502 
2503  size_t index;
2504  for (index = 0; index < response->num_tape_libraries; index++) {
2506  }
2507  g_free(response->tape_libraries);
2508  ds3_paging_free(response->paging);
2509 
2510  g_free(response);
2511 }
2513  if (response == NULL) {
2514  return;
2515  }
2516 
2517  size_t index;
2518  for (index = 0; index < response->num_tape_partition_failures; index++) {
2520  }
2521  g_free(response->tape_partition_failures);
2522  ds3_paging_free(response->paging);
2523 
2524  g_free(response);
2525 }
2527  if (response == NULL) {
2528  return;
2529  }
2530 
2531  size_t index;
2532  for (index = 0; index < response->num_tape_partitions; index++) {
2534  }
2535  g_free(response->tape_partitions);
2536  ds3_paging_free(response->paging);
2537 
2538  g_free(response);
2539 }
2541  if (response == NULL) {
2542  return;
2543  }
2544 
2545  size_t index;
2546  for (index = 0; index < response->num_named_detailed_tape_partitions; index++) {
2548  }
2549  g_free(response->named_detailed_tape_partitions);
2550  ds3_paging_free(response->paging);
2551 
2552  g_free(response);
2553 }
2555  if (response == NULL) {
2556  return;
2557  }
2558 
2559  size_t index;
2560  for (index = 0; index < response->num_tapes; index++) {
2561  ds3_tape_response_free(response->tapes[index]);
2562  }
2563  g_free(response->tapes);
2564  ds3_paging_free(response->paging);
2565 
2566  g_free(response);
2567 }
2569  if (response == NULL) {
2570  return;
2571  }
2572 
2573  size_t index;
2574  for (index = 0; index < response->num_azure_target_bucket_names; index++) {
2576  }
2577  g_free(response->azure_target_bucket_names);
2578  ds3_paging_free(response->paging);
2579 
2580  g_free(response);
2581 }
2583  if (response == NULL) {
2584  return;
2585  }
2586 
2587  size_t index;
2588  for (index = 0; index < response->num_azure_target_failures; index++) {
2590  }
2591  g_free(response->azure_target_failures);
2592  ds3_paging_free(response->paging);
2593 
2594  g_free(response);
2595 }
2597  if (response == NULL) {
2598  return;
2599  }
2600 
2601  size_t index;
2602  for (index = 0; index < response->num_azure_target_read_preferences; index++) {
2604  }
2605  g_free(response->azure_target_read_preferences);
2606  ds3_paging_free(response->paging);
2607 
2608  g_free(response);
2609 }
2611  if (response == NULL) {
2612  return;
2613  }
2614 
2615  size_t index;
2616  for (index = 0; index < response->num_azure_targets; index++) {
2618  }
2619  g_free(response->azure_targets);
2620  ds3_paging_free(response->paging);
2621 
2622  g_free(response);
2623 }
2625  if (response == NULL) {
2626  return;
2627  }
2628 
2629  size_t index;
2630  for (index = 0; index < response->num_ds3_target_failures; index++) {
2632  }
2633  g_free(response->ds3_target_failures);
2634  ds3_paging_free(response->paging);
2635 
2636  g_free(response);
2637 }
2639  if (response == NULL) {
2640  return;
2641  }
2642 
2643  size_t index;
2644  for (index = 0; index < response->num_ds3_target_read_preferences; index++) {
2646  }
2647  g_free(response->ds3_target_read_preferences);
2648  ds3_paging_free(response->paging);
2649 
2650  g_free(response);
2651 }
2653  if (response == NULL) {
2654  return;
2655  }
2656 
2657  size_t index;
2658  for (index = 0; index < response->num_ds3_targets; index++) {
2659  ds3_target_response_free(response->ds3_targets[index]);
2660  }
2661  g_free(response->ds3_targets);
2662  ds3_paging_free(response->paging);
2663 
2664  g_free(response);
2665 }
2667  if (response == NULL) {
2668  return;
2669  }
2670 
2671  size_t index;
2672  for (index = 0; index < response->num_s3_target_bucket_names; index++) {
2674  }
2675  g_free(response->s3_target_bucket_names);
2676  ds3_paging_free(response->paging);
2677 
2678  g_free(response);
2679 }
2681  if (response == NULL) {
2682  return;
2683  }
2684 
2685  size_t index;
2686  for (index = 0; index < response->num_s3_target_failures; index++) {
2688  }
2689  g_free(response->s3_target_failures);
2690  ds3_paging_free(response->paging);
2691 
2692  g_free(response);
2693 }
2695  if (response == NULL) {
2696  return;
2697  }
2698 
2699  size_t index;
2700  for (index = 0; index < response->num_s3_target_read_preferences; index++) {
2702  }
2703  g_free(response->s3_target_read_preferences);
2704  ds3_paging_free(response->paging);
2705 
2706  g_free(response);
2707 }
2709  if (response == NULL) {
2710  return;
2711  }
2712 
2713  size_t index;
2714  for (index = 0; index < response->num_s3_targets; index++) {
2715  ds3_s3_target_response_free(response->s3_targets[index]);
2716  }
2717  g_free(response->s3_targets);
2718  ds3_paging_free(response->paging);
2719 
2720  g_free(response);
2721 }
2723  if (response == NULL) {
2724  return;
2725  }
2726 
2727  size_t index;
2728  for (index = 0; index < response->num_spectra_users; index++) {
2730  }
2731  g_free(response->spectra_users);
2732  ds3_paging_free(response->paging);
2733 
2734  g_free(response);
2735 }
2737  if (response == NULL) {
2738  return;
2739  }
2740 
2741  size_t index;
2742  for (index = 0; index < response->num_azure_targets; index++) {
2744  }
2745  g_free(response->azure_targets);
2746  for (index = 0; index < response->num_ds3_targets; index++) {
2747  ds3_target_response_free(response->ds3_targets[index]);
2748  }
2749  g_free(response->ds3_targets);
2750  for (index = 0; index < response->num_pools; index++) {
2751  ds3_pool_response_free(response->pools[index]);
2752  }
2753  g_free(response->pools);
2754  for (index = 0; index < response->num_s3_targets; index++) {
2755  ds3_s3_target_response_free(response->s3_targets[index]);
2756  }
2757  g_free(response->s3_targets);
2758  for (index = 0; index < response->num_tapes; index++) {
2759  ds3_tape_response_free(response->tapes[index]);
2760  }
2761  g_free(response->tapes);
2762 
2763  g_free(response);
2764 }
2766  if (response == NULL) {
2767  return;
2768  }
2769 
2772 
2773  g_free(response);
2774 }
2776  if (response == NULL) {
2777  return;
2778  }
2779 
2780  ds3_str_free(response->bucket);
2781  ds3_str_free(response->id);
2782  ds3_str_free(response->name);
2784  ds3_str_free(response->version_id);
2785 
2786  g_free(response);
2787 }
2789  if (response == NULL) {
2790  return;
2791  }
2792 
2793  size_t index;
2794  for (index = 0; index < response->num_objects; index++) {
2795  ds3_bulk_object_response_free(response->objects[index]);
2796  }
2797  g_free(response->objects);
2798  ds3_paging_free(response->paging);
2799 
2800  g_free(response);
2801 }
2803  if (response == NULL) {
2804  return;
2805  }
2806 
2807  size_t index;
2808  ds3_str_free(response->job_id);
2810  for (index = 0; index < response->num_objects_not_persisted; index++) {
2812  }
2813  g_free(response->objects_not_persisted);
2814 
2815  g_free(response);
2816 }
2818  if (response == NULL) {
2819  return;
2820  }
2821 
2824  ds3_str_free(response->user_name);
2825 
2826  g_free(response);
2827 }
2829  if (response == NULL) {
2830  return;
2831  }
2832 
2833  size_t index;
2834  ds3_str_free(response->job_id);
2836  for (index = 0; index < response->num_objects; index++) {
2837  ds3_bulk_object_response_free(response->objects[index]);
2838  }
2839  g_free(response->objects);
2840 
2841  g_free(response);
2842 }
2844  if (response == NULL) {
2845  return;
2846  }
2847 
2848  size_t index;
2850  for (index = 0; index < response->num_objects; index++) {
2851  ds3_bulk_object_response_free(response->objects[index]);
2852  }
2853  g_free(response->objects);
2854 
2855  g_free(response);
2856 }
2858  if (response == NULL) {
2859  return;
2860  }
2861 
2862  size_t index;
2863  ds3_str_free(response->job_id);
2865  for (index = 0; index < response->num_objects; index++) {
2866  ds3_bulk_object_response_free(response->objects[index]);
2867  }
2868  g_free(response->objects);
2869 
2870  g_free(response);
2871 }
2873  if (response == NULL) {
2874  return;
2875  }
2876 
2877  size_t index;
2878  for (index = 0; index < response->num_buckets; index++) {
2879  ds3_bucket_details_response_free(response->buckets[index]);
2880  }
2881  g_free(response->buckets);
2882  ds3_user_response_free(response->owner);
2883 
2884  g_free(response);
2885 }
2887  if (response == NULL) {
2888  return;
2889  }
2890 
2891  size_t index;
2892  for (index = 0; index < response->num_deleted_objects; index++) {
2894  }
2895  g_free(response->deleted_objects);
2896  for (index = 0; index < response->num_errors; index++) {
2898  }
2899  g_free(response->errors);
2900 
2901  g_free(response);
2902 }
2904  if (response == NULL) {
2905  return;
2906  }
2907 
2908  size_t index;
2909  ds3_str_free(response->bucket_name);
2910  ds3_str_free(response->job_id);
2911  ds3_str_free(response->name);
2912  for (index = 0; index < response->num_nodes; index++) {
2913  ds3_job_node_response_free(response->nodes[index]);
2914  }
2915  g_free(response->nodes);
2916  ds3_str_free(response->start_date);
2917  ds3_str_free(response->user_id);
2918  ds3_str_free(response->user_name);
2919 
2920  g_free(response);
2921 }
2923  if (response == NULL) {
2924  return;
2925  }
2926 
2927  size_t index;
2928  ds3_str_free(response->chunk_id);
2929  ds3_str_free(response->node_id);
2930  for (index = 0; index < response->num_objects; index++) {
2931  ds3_bulk_object_response_free(response->objects[index]);
2932  }
2933  g_free(response->objects);
2934 
2935  g_free(response);
2936 }
2938  if (response == NULL) {
2939  return;
2940  }
2941 
2942  size_t index;
2943  ds3_str_free(response->bucket_name);
2944  ds3_str_free(response->job_id);
2945  ds3_str_free(response->name);
2946  for (index = 0; index < response->num_nodes; index++) {
2947  ds3_job_node_response_free(response->nodes[index]);
2948  }
2949  g_free(response->nodes);
2950  for (index = 0; index < response->num_objects; index++) {
2951  ds3_objects_response_free(response->objects[index]);
2952  }
2953  g_free(response->objects);
2954  ds3_str_free(response->start_date);
2955  ds3_str_free(response->user_id);
2956  ds3_str_free(response->user_name);
2957 
2958  g_free(response);
2959 }
2961  if (response == NULL) {
2962  return;
2963  }
2964 
2965  size_t index;
2966  for (index = 0; index < response->num_jobs; index++) {
2967  ds3_job_response_free(response->jobs[index]);
2968  }
2969  g_free(response->jobs);
2970 
2971  g_free(response);
2972 }
2974  if (response == NULL) {
2975  return;
2976  }
2977 
2978  size_t index;
2979  ds3_str_free(response->bucket);
2980  ds3_str_free(response->key);
2981  ds3_user_response_free(response->owner);
2982  for (index = 0; index < response->num_parts; index++) {
2984  }
2985  g_free(response->parts);
2986  ds3_str_free(response->upload_id);
2987 
2988  g_free(response);
2989 }
2991  if (response == NULL) {
2992  return;
2993  }
2994 
2995  ds3_str_free(response->initiated);
2996  ds3_str_free(response->key);
2997  ds3_user_response_free(response->owner);
2998  ds3_str_free(response->upload_id);
2999 
3000  g_free(response);
3001 }
3003  if (response == NULL) {
3004  return;
3005  }
3006 
3007  ds3_str_free(response->e_tag);
3008  ds3_str_free(response->key);
3009  ds3_str_free(response->last_modified);
3010  ds3_user_response_free(response->owner);
3011  ds3_str_free(response->storage_class);
3012  ds3_str_free(response->version_id);
3013 
3014  g_free(response);
3015 }
3017  if (response == NULL) {
3018  return;
3019  }
3020 
3022  ds3_str_free(response->bucket_id);
3023  ds3_str_free(response->creation_date);
3024  ds3_str_free(response->e_tag);
3025  ds3_str_free(response->id);
3026  ds3_str_free(response->name);
3027  ds3_str_free(response->owner);
3028 
3029  g_free(response);
3030 }
3032  if (response == NULL) {
3033  return;
3034  }
3035 
3036  size_t index;
3037  for (index = 0; index < response->num_types; index++) {
3038  ds3_type_response_free(response->types[index]);
3039  }
3040  g_free(response->types);
3041 
3042  g_free(response);
3043 }
3045  if (response == NULL) {
3046  return;
3047  }
3048 
3049  size_t index;
3050  for (index = 0; index < response->num_detailed_s3_objects; index++) {
3052  }
3053  g_free(response->detailed_s3_objects);
3054  ds3_paging_free(response->paging);
3055 
3056  g_free(response);
3057 }
3059  if (response == NULL) {
3060  return;
3061  }
3062 
3063  size_t index;
3064  for (index = 0; index < response->num_common_prefixes; index++) {
3065  ds3_str_free(response->common_prefixes[index]);
3066  }
3067  g_free(response->common_prefixes);
3068  ds3_str_free(response->creation_date);
3069  ds3_str_free(response->delimiter);
3070  ds3_str_free(response->marker);
3071  ds3_str_free(response->name);
3072  ds3_str_free(response->next_marker);
3073  for (index = 0; index < response->num_objects; index++) {
3074  ds3_contents_response_free(response->objects[index]);
3075  }
3076  g_free(response->objects);
3077  ds3_str_free(response->prefix);
3078  for (index = 0; index < response->num_versioned_objects; index++) {
3080  }
3081  g_free(response->versioned_objects);
3082 
3083  g_free(response);
3084 }
3086  if (response == NULL) {
3087  return;
3088  }
3089 
3090  size_t index;
3091  ds3_str_free(response->bucket);
3092  for (index = 0; index < response->num_common_prefixes; index++) {
3093  ds3_str_free(response->common_prefixes[index]);
3094  }
3095  g_free(response->common_prefixes);
3096  ds3_str_free(response->delimiter);
3097  ds3_str_free(response->key_marker);
3098  ds3_str_free(response->next_key_marker);
3100  ds3_str_free(response->prefix);
3101  ds3_str_free(response->upload_id_marker);
3102  for (index = 0; index < response->num_uploads; index++) {
3103  ds3_multi_part_upload_response_free(response->uploads[index]);
3104  }
3105  g_free(response->uploads);
3106 
3107  g_free(response);
3108 }
void ds3_job_node_response_free(ds3_job_node_response *response)
Definition: ds3.c:1722
void ds3_target_failure_notification_registration_response_free(ds3_target_failure_notification_registration_response *response)
Definition: ds3.c:860
void ds3_cache_filesystem_response_free(ds3_cache_filesystem_response *response)
Definition: ds3.c:1060
void ds3_error_response_free(ds3_error_response *response)
Definition: ds3.c:1690
size_t ds3_read_from_fd(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:206
ds3_str * id
Definition: ds3.h:820
void ds3_job_completed_notification_registration_list_response_free(ds3_job_completed_notification_registration_list_response *response)
Definition: ds3.c:2176
ds3_suspect_blob_ds3_target_response ** suspect_blob_ds3_targets
Definition: ds3.h:1663
ds3_storage_domain_failure_notification_registration_response ** storage_domain_failure_notification_registrations
Definition: ds3.h:1768
ds3_log_lvl
Definition: ds3.h:72
ds3_node_response ** nodes
Definition: ds3.h:1713
ds3_tapes_must_be_onlined_response * tapes_must_be_onlined
Definition: ds3.h:1968
ds3_pool_response ** pools
Definition: ds3.h:1932
ds3_str * last_accessed
Definition: ds3.h:1127
ds3_str * name
Definition: ds3.h:856
ds3_str * last_heartbeat
Definition: ds3.h:837
ds3_cache_filesystem_response * cache_filesystem
Definition: ds3.h:1478
ds3_str * name
Definition: ds3.h:838
void ds3_suspect_blob_ds3_target_response_free(ds3_suspect_blob_ds3_target_response *response)
Definition: ds3.c:1391
void ds3_storage_domain_failure_response_free(ds3_storage_domain_failure_response *response)
Definition: ds3.c:797
void ds3_cleanup(void)
Definition: ds3.c:519
void ds3_pool_partition_response_free(ds3_pool_partition_response *response)
Definition: ds3.c:1101
ds3_paging * paging
Definition: ds3.h:1620
void ds3_azure_target_failure_response_free(ds3_azure_target_failure_response *response)
Definition: ds3.c:1264
ds3_str * domain_name
Definition: ds3.h:1597
void ds3_feature_key_response_free(ds3_feature_key_response *response)
Definition: ds3.c:676
ds3_paging * paging
Definition: ds3.h:1900
void ds3_tape_partition_list_response_free(ds3_tape_partition_list_response *response)
Definition: ds3.c:2526
void ds3_group_list_response_free(ds3_group_list_response *response)
Definition: ds3.c:2078
ds3_str * serial_number
Definition: ds3.h:1242
ds3_str * eject_pending
Definition: ds3.h:1177
ds3_str * last_modified
Definition: ds3.h:1182
void ds3_completed_job_response_free(ds3_completed_job_response *response)
Definition: ds3.c:588
ds3_tape_partition_response ** tape_partitions
Definition: ds3.h:1853
void ds3_s3_target_failure_list_response_free(ds3_s3_target_failure_list_response *response)
Definition: ds3.c:2680
void ds3_degraded_blob_list_response_free(ds3_degraded_blob_list_response *response)
Definition: ds3.c:1966
void ds3_tape_failure_response_free(ds3_tape_failure_response *response)
Definition: ds3.c:1790
ds3_str * name
Definition: ds3.h:784
void ds3_generic_dao_notification_payload_response_free(ds3_generic_dao_notification_payload_response *response)
Definition: ds3.c:1448
ds3_bulk_object_list_response * blobs
Definition: ds3.h:2081
ds3_user_response * owner
Definition: ds3.h:2075
ds3_bulk_object_response ** objects_not_persisted
Definition: ds3.h:1963
ds3_str * message
Definition: ds3.h:1526
ds3_str * name
Definition: ds3.h:658
void ds3_s3_object_lost_notification_registration_list_response_free(ds3_s3_object_lost_notification_registration_list_response *response)
Definition: ds3.c:2232
ds3_s3_object_to_delete_response ** deleted_objects
Definition: ds3.h:1994
void ds3_capacity_summary_container_response_free(ds3_capacity_summary_container_response *response)
Definition: ds3.c:2765
ds3_client * ds3_copy_client(const ds3_client const *client)
Definition: ds3.c:142
ds3_str * last_checkpoint
Definition: ds3.h:1181
void ds3_tape_response_free(ds3_tape_response *response)
Definition: ds3.c:1136
ds3_str * name
Definition: ds3.h:745
void ds3_s3_target_failure_notification_registration_list_response_free(ds3_s3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2274
ds3_str * type
Definition: ds3.h:1192
ds3_storage_domain_capacity_summary_response * tape
Definition: ds3.h:1941
ds3_str * secret_key
Definition: ds3.h:909
void ds3_azure_target_failure_notification_registration_list_response_free(ds3_azure_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2148
void ds3_azure_target_failure_list_response_free(ds3_azure_target_failure_list_response *response)
Definition: ds3.c:2582
ds3_tape_library_response ** tape_libraries
Definition: ds3.h:1843
ds3_paging * paging
Definition: ds3.h:1835
void ds3_build_information_response_free(ds3_build_information_response *response)
Definition: ds3.c:1413
Definition: ds3.h:80
void ds3_creds_free(ds3_creds *creds)
Definition: ds3.c:168
ds3_azure_data_replication_rule_response ** azure_data_replication_rules
Definition: ds3.h:1628
void ds3_group_response_free(ds3_group_response *response)
Definition: ds3.c:687
void ds3_pool_list_response_free(ds3_pool_list_response *response)
Definition: ds3.c:2372
void ds3_ids_list_free(ds3_ids_list *ids)
Definition: ds3.c:452
ds3_str * id
Definition: ds3.h:801
ds3_str * id
Definition: ds3.h:1126
ds3_error * ds3_create_client_from_env(ds3_client **client)
Definition: ds3.c:109
static void get_file_size_posix(const char *file_path, uint64_t *file_size)
Definition: ds3.c:281
ds3_str * date_canceled
Definition: ds3.h:675
ds3_str * job_id
Definition: ds3.h:822
ds3_creds * creds
Definition: ds3.h:2147
void ds3_suspect_blob_pool_list_response_free(ds3_suspect_blob_pool_list_response *response)
Definition: ds3.c:2008
ds3_str * eject_date
Definition: ds3.h:1174
ds3_str * error_message
Definition: ds3.h:1234
ds3_spectra_user_response ** spectra_users
Definition: ds3.h:1923
void ds3_storage_domain_response_free(ds3_storage_domain_response *response)
Definition: ds3.c:778
ds3_bucket_response ** buckets
Definition: ds3.h:1618
ds3_azure_target_failure_response ** azure_target_failures
Definition: ds3.h:1873
void ds3_s3_objects_persisted_notification_payload_response_free(ds3_s3_objects_persisted_notification_payload_response *response)
Definition: ds3.c:2857
ds3_str * user_id
Definition: ds3.h:2016
ds3_str * partition_id
Definition: ds3.h:1209
ds3_feature_key_response ** feature_keys
Definition: ds3.h:1818
ds3_detailed_s3_object_response ** detailed_s3_objects
Definition: ds3.h:2101
ds3_str * secret_key
Definition: ds3.h:1336
ds3_str * last_modified
Definition: ds3.h:1128
ds3_tape_partition_failure_notification_registration_response ** tape_partition_failure_notification_registrations
Definition: ds3.h:1783
void ds3_s3_target_read_preference_response_free(ds3_s3_target_read_preference_response *response)
Definition: ds3.c:1369
void ds3_data_replication_rule_list_response_free(ds3_data_replication_rule_list_response *response)
Definition: ds3.c:1938
ds3_str * data_path_ip_address
Definition: ds3.h:834
void ds3_delete_object_error_response_free(ds3_delete_object_error_response *response)
Definition: ds3.c:1660
ds3_str * id
Definition: ds3.h:647
void ds3_azure_target_read_preference_response_free(ds3_azure_target_read_preference_response *response)
Definition: ds3.c:1276
void ds3_target_failure_notification_registration_list_response_free(ds3_target_failure_notification_registration_list_response *response)
Definition: ds3.c:2162
ds3_type_response ** types
Definition: ds3.h:2097
ds3_str * replicated_user_default_data_policy
Definition: ds3.h:1300
ds3_data_replication_rule_response ** ds3_data_replication_rules
Definition: ds3.h:1643
ds3_multipart_upload_part_response ** parts
Definition: ds3.h:106
ds3_str * last_accessed
Definition: ds3.h:1180
ds3_str * mountpoint
Definition: ds3.h:1130
void ds3_data_persistence_rule_response_free(ds3_data_persistence_rule_response *response)
Definition: ds3.c:615
ds3_s3_target_failure_notification_registration_response ** s3_target_failure_notification_registrations
Definition: ds3.h:1763
ds3_job_response ** jobs
Definition: ds3.h:2049
ds3_str * created_at
Definition: ds3.h:692
void ds3_azure_target_list_response_free(ds3_azure_target_list_response *response)
Definition: ds3.c:2610
ds3_target_failure_notification_registration_response ** ds3_target_failure_notification_registrations
Definition: ds3.h:1723
void ds3_bulk_object_list_response_free(ds3_bulk_object_list_response *response)
Definition: ds3.c:2788
void ds3_target_failure_notification_payload_response_free(ds3_target_failure_notification_payload_response *response)
Definition: ds3.c:1436
void ds3_tape_partition_failure_list_response_free(ds3_tape_partition_failure_list_response *response)
Definition: ds3.c:2512
void ds3_tape_failure_notification_payload_response_free(ds3_tape_failure_notification_payload_response *response)
Definition: ds3.c:1533
ds3_str * group_id
Definition: ds3.h:663
void ds3_client_register_logging(ds3_client *client, ds3_log_lvl log_lvl, void(*log_callback)(const char *log_message, void *user_data), void *user_data)
Definition: ds3.c:45
ds3_str * error_message
Definition: ds3.h:1305
void ds3_azure_target_read_preference_list_response_free(ds3_azure_target_read_preference_list_response *response)
Definition: ds3.c:2596
ds3_str * persistence_rule_id
Definition: ds3.h:761
ds3_str * id
Definition: ds3.h:783
ds3_named_detailed_tape_partition_response ** named_detailed_tape_partitions
Definition: ds3.h:1858
void ds3_multipart_upload_part_response_free(ds3_multipart_upload_part_response *response)
Definition: ds3.c:416
void ds3_objects_response_free(ds3_objects_response *response)
Definition: ds3.c:2922
void ds3_connection_pool_dec_ref(ds3_connection_pool *pool)
ds3_str * bucket_id
Definition: ds3.h:1172
ds3_azure_target_read_preference_response ** azure_target_read_preferences
Definition: ds3.h:1878
ds3_log * log
Definition: ds3.h:2148
ds3_str * read_from_tape_id
Definition: ds3.h:829
ds3_str * path
Definition: ds3_request.h:32
ds3_contents_response ** versioned_objects
Definition: ds3.h:2118
Definition: ds3.h:1472
void ds3_s3_object_cached_notification_registration_list_response_free(ds3_s3_object_cached_notification_registration_list_response *response)
Definition: ds3.c:2218
void ds3_azure_target_response_free(ds3_azure_target_response *response)
Definition: ds3.c:1237
ds3_job_node_response ** nodes
Definition: ds3.h:2009
size_t num_nodes
Definition: ds3.h:2010
ds3_str * resource
Definition: ds3.h:1527
ds3_str * eject_label
Definition: ds3.h:1175
ds3_delete_object_error_response ** errors
Definition: ds3.h:1996
void ds3_multi_part_upload_response_free(ds3_multi_part_upload_response *response)
Definition: ds3.c:2990
void ds3_create_heap_dump_params_response_free(ds3_create_heap_dump_params_response *response)
Definition: ds3.c:1813
ds3_suspect_blob_pool_response ** suspect_blob_pools
Definition: ds3.h:1668
void ds3_uint64_string_map_free(ds3_uint64_string_map *map)
ds3_bulk_object_list_response * ds3_convert_file_list_with_basepath(const char **file_list, uint64_t num_files, const char *base_path)
Definition: ds3.c:339
void ds3_client_free(ds3_client *client)
Definition: ds3.c:178
ds3_storage_domain_capacity_summary_response * pool
Definition: ds3.h:1940
ds3_str * bucket_id
Definition: ds3.h:1123
void ds3_request_free(ds3_request *_request)
Definition: ds3.c:486
ds3_str * bucket_id
Definition: ds3.h:688
ds3_error *(* net_callback)(const struct _ds3_client *client, const ds3_request *_request, void *read_user_struct, size_t(*read_handler_func)(void *, size_t, size_t, void *), void *write_user_struct, size_t(*write_handler_func)(void *, size_t, size_t, void *), ds3_string_multimap **return_headers)
Definition: ds3.h:2149
ds3_tape_density_directive_response ** tape_density_directives
Definition: ds3.h:1828
ds3_str * version_id
Definition: ds3.h:2078
ds3_paging * paging
Definition: ds3.h:1700
ds3_str * user_id
Definition: ds3.h:659
void ds3_list_all_my_buckets_result_response_free(ds3_list_all_my_buckets_result_response *response)
Definition: ds3.c:2872
ds3_s3_object_lost_notification_registration_response ** s3_object_lost_notification_registrations
Definition: ds3.h:1748
ds3_str * job_creation_date
Definition: ds3.h:821
ds3_str * rechunked
Definition: ds3.h:808
ds3_str * error_message
Definition: ds3.h:676
void ds3_tapes_must_be_onlined_response_free(ds3_tapes_must_be_onlined_response *response)
Definition: ds3.c:1558
void ds3_data_policy_acl_list_response_free(ds3_data_policy_acl_list_response *response)
Definition: ds3.c:1854
ds3_str * account_name
Definition: ds3.h:1254
void ds3_job_creation_failed_notification_registration_response_free(ds3_job_creation_failed_notification_registration_response *response)
Definition: ds3.c:918
void ds3_s3_target_read_preference_list_response_free(ds3_s3_target_read_preference_list_response *response)
Definition: ds3.c:2694
void ds3_delete_objects_response_free(ds3_delete_objects_response *response)
Definition: ds3.c:439
void ds3_tape_failure_notification_registration_list_response_free(ds3_tape_failure_notification_registration_list_response *response)
Definition: ds3.c:2316
ds3_str * display_name
Definition: ds3.h:1550
void ds3_s3_target_failure_notification_registration_response_free(ds3_s3_target_failure_notification_registration_response *response)
Definition: ds3.c:990
void ds3_bucket_response_free(ds3_bucket_response *response)
Definition: ds3.c:547
ds3_connection_pool * ds3_connection_pool_init(void)
ds3_str * name
Definition: ds3.h:1297
void ds3_detailed_s3_object_list_response_free(ds3_detailed_s3_object_list_response *response)
Definition: ds3.c:3044
ds3_bulk_object_list_response * ds3_convert_file_list(const char **file_list, uint64_t num_files)
Definition: ds3.c:335
ds3_str * end_point
Definition: ds3.h:1541
ds3_cache_entry_information_response ** entries
Definition: ds3.h:1479
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1883
ds3_physical_placement_response * physical_placement
Definition: ds3.h:1951
Definition: ds3.h:86
ds3_str * group_id
Definition: ds3.h:787
void ds3_s3_object_cached_notification_registration_response_free(ds3_s3_object_cached_notification_registration_response *response)
Definition: ds3.c:946
void ds3_system_failure_list_response_free(ds3_system_failure_list_response *response)
Definition: ds3.c:2442
void ds3_set_of_tape_bar_codes_response_free(ds3_set_of_tape_bar_codes_response *response)
Definition: ds3.c:1497
void ds3_azure_data_replication_rule_list_response_free(ds3_azure_data_replication_rule_list_response *response)
Definition: ds3.c:1896
ds3_pool_partition_response ** pool_partitions
Definition: ds3.h:1793
ds3_str * serial_number
Definition: ds3.h:1187
void ds3_s3_target_bucket_name_response_free(ds3_s3_target_bucket_name_response *response)
Definition: ds3.c:1345
ds3_str * user_name
Definition: ds3.h:2017
void ds3_s3_objects_cached_notification_payload_response_free(ds3_s3_objects_cached_notification_payload_response *response)
Definition: ds3.c:2828
ds3_s3_target_failure_response ** s3_target_failures
Definition: ds3.h:1908
void ds3_health_verification_result_response_free(ds3_health_verification_result_response *response)
Definition: ds3.c:1763
void ds3_node_list_response_free(ds3_node_list_response *response)
Definition: ds3.c:2134
ds3_str * proxy_host
Definition: ds3.h:1330
void ds3_tape_failure_list_response_free(ds3_tape_failure_list_response *response)
Definition: ds3.c:1800
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1256
void ds3_named_detailed_tape_partition_list_response_free(ds3_named_detailed_tape_partition_list_response *response)
Definition: ds3.c:2540
ds3_paging * paging
Definition: ds3.h:1695
void ds3_pool_failure_response_free(ds3_pool_failure_response *response)
Definition: ds3.c:1089
void ds3_tape_drive_list_response_free(ds3_tape_drive_list_response *response)
Definition: ds3.c:2470
ds3_str * dns_name
Definition: ds3.h:835
void ds3_degraded_blob_response_free(ds3_degraded_blob_response *response)
Definition: ds3.c:649
ds3_str * bucket_id
Definition: ds3.h:662
ds3_str * start_date
Definition: ds3.h:2014
ds3_objects_response ** objects
Definition: ds3.h:2038
void ds3_active_job_list_response_free(ds3_active_job_list_response *response)
Definition: ds3.c:2092
void ds3_s3_object_list_response_free(ds3_s3_object_list_response *response)
Definition: ds3.c:2050
size_t num_ds3_targets
Definition: ds3.h:1899
ds3_str * azure_replication_rule_id
Definition: ds3.h:756
void ds3_target_read_preference_list_response_free(ds3_target_read_preference_list_response *response)
Definition: ds3.c:2638
void ds3_data_path_backend_response_free(ds3_data_path_backend_response *response)
Definition: ds3.c:604
ds3_s3_data_replication_rule_response ** s3_data_replication_rules
Definition: ds3.h:1648
ds3_str * code
Definition: ds3.h:1524
void ds3_storage_domain_failure_notification_registration_response_free(ds3_storage_domain_failure_notification_registration_response *response)
Definition: ds3.c:1004
ds3_str * proxy_domain
Definition: ds3.h:1329
ds3_str * eject_location
Definition: ds3.h:1176
void ds3_database_contents_response_free(ds3_database_contents_response *response)
Definition: ds3.c:3031
ds3_str * admin_auth_id
Definition: ds3.h:1288
void ds3_connection_pool_inc_ref(ds3_connection_pool *pool)
ds3_str * rechunked
Definition: ds3.h:682
ds3_data_policy_acl_response ** data_policy_acls
Definition: ds3.h:1613
void ds3_target_failure_response_free(ds3_target_failure_response *response)
Definition: ds3.c:1302
void ds3_azure_target_bucket_name_response_free(ds3_azure_target_bucket_name_response *response)
Definition: ds3.c:1252
ds3_str * creation_date
Definition: ds3.h:736
ds3_pool_response ** pools
Definition: ds3.h:1798
ds3_s3_target_read_preference_response ** s3_target_read_preferences
Definition: ds3.h:1913
ds3_str * mfg_serial_number
Definition: ds3.h:1208
ds3_user_response * owner
Definition: ds3.h:2057
ds3_system_failure_response ** system_failures
Definition: ds3.h:1823
void ds3_job_created_notification_payload_response_free(ds3_job_created_notification_payload_response *response)
Definition: ds3.c:1463
void ds3_tape_list_response_free(ds3_tape_list_response *response)
Definition: ds3.c:2554
ds3_bucket_acl_response ** bucket_acls
Definition: ds3.h:1608
ds3_str * error_message
Definition: ds3.h:1144
ds3_str * storage_class
Definition: ds3.h:2077
ds3_error * ds3_create_error(ds3_error_code code, const char *message)
Definition: ds3_utils.c:22
void ds3_bulk_object_response_free(ds3_bulk_object_response *response)
Definition: ds3.c:2775
ds3_str * checksum
Definition: ds3_request.h:34
void ds3_data_policy_acl_response_free(ds3_data_policy_acl_response *response)
Definition: ds3.c:637
void ds3_storage_domain_failure_notification_registration_list_response_free(ds3_storage_domain_failure_notification_registration_list_response *response)
Definition: ds3.c:2288
ds3_str * data_path_end_point
Definition: ds3.h:1290
ds3_cache_filesystem_information_response ** filesystems
Definition: ds3.h:1487
ds3_str * creation_date
Definition: ds3.h:652
void ds3_suspect_blob_ds3_target_list_response_free(ds3_suspect_blob_ds3_target_list_response *response)
Definition: ds3.c:1994
ds3_str * id
Definition: ds3.h:655
void ds3_target_read_preference_response_free(ds3_target_read_preference_response *response)
Definition: ds3.c:1314
ds3_paging * paging
Definition: ds3.h:1715
ds3_str * node_id
Definition: ds3.h:823
ds3_bulk_object_list_response * ds3_init_bulk_object_list()
Definition: ds3.c:395
ds3_str * error_message
Definition: ds3.h:694
ds3_str * id
Definition: ds3.h:1544
ds3_uint64_string_map * blob_checksums
Definition: ds3.h:631
ds3_str * last_fully_verified
Definition: ds3.h:1325
ds3_tape_response * tape
Definition: ds3.h:1585
size_t ds3_write_to_fd(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:202
LIBRARY_API void ds3_metadata_free(ds3_metadata *_metadata)
Definition: ds3_requests.c:190
ds3_str * object_id
Definition: ds3.h:649
ds3_str * guid
Definition: ds3.h:1124
ds3_paging * paging
Definition: ds3.h:1920
ds3_str * proxy_password
Definition: ds3.h:1331
void ds3_storage_domain_capacity_summary_response_free(ds3_storage_domain_capacity_summary_response *response)
Definition: ds3.c:789
ds3_str * data_path_proxy
Definition: ds3.h:1293
ds3_str * name
Definition: ds3.h:1326
size_t ds3_write_to_file(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:194
ds3_str * error_message
Definition: ds3.h:1204
size_t num_objects
Definition: ds3.h:2024
ds3_str * access_id
Definition: ds3.h:87
ds3_set_of_tape_bar_codes_response ** tapes_to_online
Definition: ds3.h:1451
ds3_storage_domain_failure_response ** storage_domain_failures
Definition: ds3.h:1803
ds3_suspect_blob_azure_target_response ** suspect_blob_azure_targets
Definition: ds3.h:1658
ds3_str * storage_domain_member_id
Definition: ds3.h:1189
void ds3_complete_multipart_upload_result_response_free(ds3_complete_multipart_upload_result_response *response)
Definition: ds3.c:1648
ds3_paging * paging
Definition: ds3.h:1865
void ds3_system_failure_notification_registration_list_response_free(ds3_system_failure_notification_registration_list_response *response)
Definition: ds3.c:2302
void ds3_storage_domain_failure_notification_payload_response_free(ds3_storage_domain_failure_notification_payload_response *response)
Definition: ds3.c:1510
GHashTable * query_params
Definition: ds3_request.h:37
ds3_suspect_blob_s3_target_response ** suspect_blob_s3_targets
Definition: ds3.h:1673
ds3_str * read_from_ds3_target_id
Definition: ds3.h:826
ds3_data_persistence_rule_response ** data_persistence_rules
Definition: ds3.h:1633
void ds3_storage_domain_list_response_free(ds3_storage_domain_list_response *response)
Definition: ds3.c:2414
ds3_str * expiration_date
Definition: ds3.h:776
void ds3_detailed_tape_partition_response_free(ds3_detailed_tape_partition_response *response)
Definition: ds3.c:1671
ds3_storage_domain_response ** storage_domains
Definition: ds3.h:1813
static ds3_bulk_object_response * _ds3_bulk_object_from_file(const char *file_name, const char *base_path)
Definition: ds3.c:309
ds3_str * s3_replication_rule_id
Definition: ds3.h:762
ds3_str * date_completed
Definition: ds3.h:693
ds3_bulk_object_list_response * ds3_convert_object_list(const ds3_contents_response **objects, uint64_t num_objects)
Definition: ds3.c:355
void ds3_azure_target_failure_notification_registration_response_free(ds3_azure_target_failure_notification_registration_response *response)
Definition: ds3.c:846
void ds3_s3_object_persisted_notification_registration_list_response_free(ds3_s3_object_persisted_notification_registration_list_response *response)
Definition: ds3.c:2246
ds3_str * last_verified
Definition: ds3.h:1183
ds3_str * bucket_id
Definition: ds3.h:794
void ds3_job_completed_notification_registration_response_free(ds3_job_completed_notification_registration_response *response)
Definition: ds3.c:889
ds3_str * user_id
Definition: ds3.h:685
void ds3_pool_failure_notification_registration_list_response_free(ds3_pool_failure_notification_registration_list_response *response)
Definition: ds3.c:2260
ds3_pool_failure_response ** pool_failures
Definition: ds3.h:1788
void ds3_blob_response_free(ds3_blob_response *response)
Definition: ds3.c:536
void ds3_str_free(ds3_str *string)
Definition: ds3_string.c:50
ds3_s3_target_response ** s3_targets
Definition: ds3.h:1934
ds3_completed_job_response ** completed_jobs
Definition: ds3.h:1708
void ds3_s3_target_failure_response_free(ds3_s3_target_failure_response *response)
Definition: ds3.c:1357
ds3_str * partition_id
Definition: ds3.h:1132
ds3_suspect_blob_tape_response ** suspect_blob_tapes
Definition: ds3.h:1678
ds3_str * ds3_str_dup(const ds3_str *string)
Definition: ds3_string.c:32
void ds3_list_bucket_result_response_free(ds3_list_bucket_result_response *response)
Definition: ds3.c:3058
ds3_str * key
Definition: ds3.h:2073
ds3_target_response ** ds3_targets
Definition: ds3.h:1898
ds3_str * read_from_azure_target_id
Definition: ds3.h:825
ds3_str ** strings_list
Definition: ds3.h:111
The public definitions for the Spectra S3 C SDK.
void ds3_pool_failure_notification_registration_response_free(ds3_pool_failure_notification_registration_response *response)
Definition: ds3.c:932
ds3_str * id
Definition: ds3.h:836
void ds3_s3_object_persisted_notification_registration_response_free(ds3_s3_object_persisted_notification_registration_response *response)
Definition: ds3.c:975
ds3_str * default_data_policy_id
Definition: ds3.h:905
void ds3_feature_key_list_response_free(ds3_feature_key_list_response *response)
Definition: ds3.c:2428
ds3_str * bucket_name
Definition: ds3.h:2001
void ds3_s3_target_bucket_name_list_response_free(ds3_s3_target_bucket_name_list_response *response)
Definition: ds3.c:2666
void ds3_tape_library_response_free(ds3_tape_library_response *response)
Definition: ds3.c:1200
void ds3_tape_partition_failure_notification_registration_response_free(ds3_tape_partition_failure_notification_registration_response *response)
Definition: ds3.c:1046
ds3_job_creation_failed_notification_registration_response ** job_creation_failed_notification_registrations
Definition: ds3.h:1738
ds3_str * proxy_username
Definition: ds3.h:1333
void ds3_s3_data_replication_rule_response_free(ds3_s3_data_replication_rule_response *response)
Definition: ds3.c:755
ds3_str * beans_retriever_name
Definition: ds3.h:1596
uint64_t num_redirects
Definition: ds3.h:2146
void ds3_s3_objects_lost_notification_payload_response_free(ds3_s3_objects_lost_notification_payload_response *response)
Definition: ds3.c:2843
ds3_system_failure_notification_registration_response ** system_failure_notification_registrations
Definition: ds3.h:1773
ds3_str * id
Definition: ds3.h:1324
ds3_str * storage_domain_member_id
Definition: ds3.h:1137
ds3_str * id
Definition: ds3.h:1551
void ds3_job_response_free(ds3_job_response *response)
Definition: ds3.c:2903
ds3_str * ds3_replication_rule_id
Definition: ds3.h:759
void ds3_tape_density_directive_response_free(ds3_tape_density_directive_response *response)
Definition: ds3.c:1161
ds3_client * ds3_create_client(const char *const endpoint, ds3_creds *creds)
Definition: ds3.c:90
void ds3_job_chunk_response_free(ds3_job_chunk_response *response)
Definition: ds3.c:724
ds3_str * admin_secret_key
Definition: ds3.h:1289
ds3_str * creation_date
Definition: ds3.h:853
ds3_paging * paging
Definition: ds3.h:1800
void ds3_node_response_free(ds3_node_response *response)
Definition: ds3.c:741
ds3_job_completed_notification_registration_response ** job_completed_notification_registrations
Definition: ds3.h:1728
void ds3_cache_filesystem_list_response_free(ds3_cache_filesystem_list_response *response)
Definition: ds3.c:1882
ds3_str * checksum
Definition: ds3.h:645
ds3_blob_response * blob
Definition: ds3.h:1473
ds3_multi_part_upload_response ** uploads
Definition: ds3.h:2133
void ds3_duration_response_free(ds3_duration_response *response)
Definition: ds3.c:1832
void ds3_cache_filesystem_information_response_free(ds3_cache_filesystem_information_response *response)
Definition: ds3.c:1610
void ds3_job_completed_notification_payload_response_free(ds3_job_completed_notification_payload_response *response)
Definition: ds3.c:2802
ds3_str * serial_number
Definition: ds3.h:1212
ds3_str * last_modified
Definition: ds3.h:2074
ds3_tape_partition_failure_response ** tape_partition_failures
Definition: ds3.h:1848
ds3_bulk_object_response ** objects
Definition: ds3.h:2023
ds3_str * description_for_identification
Definition: ds3.h:1173
ds3_str * tape_id
Definition: ds3.h:1214
ds3_s3_target_bucket_name_response ** s3_target_bucket_names
Definition: ds3.h:1903
ds3_str * rechunked
Definition: ds3.h:700
void ds3_active_job_response_free(ds3_active_job_response *response)
Definition: ds3.c:709
Definition: ds3.h:42
ds3_str * management_url
Definition: ds3.h:1227
ds3_log_lvl log_lvl
Definition: ds3.h:83
ds3_pool_failure_notification_registration_response ** pool_failure_notification_registrations
Definition: ds3.h:1758
void ds3_s3_target_failure_notification_payload_response_free(ds3_s3_target_failure_notification_payload_response *response)
Definition: ds3.c:1485
void ds3_storage_domain_member_list_response_free(ds3_storage_domain_member_list_response *response)
Definition: ds3.c:2400
void net_cleanup(void)
Definition: ds3_net.c:628
ds3_str * e_tag
Definition: ds3.h:2071
ds3_multi_part_upload_part_response ** parts
Definition: ds3.h:2059
void ds3_detailed_tape_failure_response_free(ds3_detailed_tape_failure_response *response)
Definition: ds3.c:1187
void ds3_pool_failure_notification_payload_response_free(ds3_pool_failure_notification_payload_response *response)
Definition: ds3.c:1473
ds3_target_failure_response ** ds3_target_failures
Definition: ds3.h:1888
void ds3_blob_store_tasks_information_response_free(ds3_blob_store_tasks_information_response *response)
Definition: ds3.c:1588
void ds3_cache_entry_information_response_free(ds3_cache_entry_information_response *response)
Definition: ds3.c:1601
void ds3_bucket_acl_response_free(ds3_bucket_acl_response *response)
Definition: ds3.c:560
void ds3_contents_response_free(ds3_contents_response *response)
Definition: ds3.c:3002
void ds3_paging_free(ds3_paging *paging)
Definition: ds3.c:482
ds3_str * user_id
Definition: ds3.h:666
void ds3_s3_object_response_free(ds3_s3_object_response *response)
Definition: ds3.c:766
void ds3_storage_domain_member_response_free(ds3_storage_domain_member_response *response)
Definition: ds3.c:809
ds3_str * version_id
Definition: ds3.h:1952
ds3_str * creation_date
Definition: ds3.h:1491
ds3_error_response * error
Definition: ds3.h:2140
void ds3_s3_data_replication_rule_list_response_free(ds3_s3_data_replication_rule_list_response *response)
Definition: ds3.c:1952
ds3_str * auth_id
Definition: ds3.h:904
size_t num_deleted_objects
Definition: ds3.h:1995
void ds3_job_created_notification_registration_response_free(ds3_job_created_notification_registration_response *response)
Definition: ds3.c:904
ds3_str * read_from_s3_target_id
Definition: ds3.h:828
void(* log_callback)(const char *log_message, void *user_data)
Definition: ds3.h:81
ds3_paging * paging
Definition: ds3.h:1610
ds3_str * name
Definition: ds3.h:2008
ds3_tape_drive_response ** tape_drives
Definition: ds3.h:1833
void ds3_bucket_details_response_free(ds3_bucket_details_response *response)
Definition: ds3.c:1638
ds3_active_job_response ** active_jobs
Definition: ds3.h:1698
void ds3_blob_store_task_information_response_free(ds3_blob_store_task_information_response *response)
Definition: ds3.c:1571
ds3_tape_failure_response ** failures
Definition: ds3.h:1588
void ds3_suspect_blob_s3_target_response_free(ds3_suspect_blob_s3_target_response *response)
Definition: ds3.c:1402
ds3_str * data_policy_id
Definition: ds3.h:653
void ds3_multi_part_upload_part_response_free(ds3_multi_part_upload_part_response *response)
Definition: ds3.c:1712
ds3_str * id
Definition: ds3.h:1296
ds3_s3_object_cached_notification_registration_response ** s3_object_cached_notification_registrations
Definition: ds3.h:1743
void ds3_list_parts_result_response_free(ds3_list_parts_result_response *response)
Definition: ds3.c:2973
ds3_str * auto_eject_upon_cron
Definition: ds3.h:861
ds3_azure_target_bucket_name_response ** azure_target_bucket_names
Definition: ds3.h:1868
ds3_cache_filesystem_response ** cache_filesystems
Definition: ds3.h:1623
void ds3_suspect_blob_tape_response_free(ds3_suspect_blob_tape_response *response)
Definition: ds3.c:1125
ds3_s3_object_persisted_notification_registration_response ** s3_object_persisted_notification_registrations
Definition: ds3.h:1753
void ds3_group_member_list_response_free(ds3_group_member_list_response *response)
Definition: ds3.c:2064
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1257
ds3_str * id
Definition: ds3.h:664
ds3_str * partition_id
Definition: ds3.h:1185
ds3_str * cloud_bucket_suffix
Definition: ds3.h:1320
void ds3_bucket_list_response_free(ds3_bucket_list_response *response)
Definition: ds3.c:1868
ds3_str * error_message
Definition: ds3.h:899
ds3_canceled_job_response ** canceled_jobs
Definition: ds3.h:1703
ds3_azure_target_failure_notification_registration_response ** azure_target_failure_notification_registrations
Definition: ds3.h:1718
ds3_data_policy_response ** data_policies
Definition: ds3.h:1638
void ds3_cache_information_response_free(ds3_cache_information_response *response)
Definition: ds3.c:1625
ds3_str * account_key
Definition: ds3.h:1253
ds3_group_member_response ** group_members
Definition: ds3.h:1688
void ds3_spectra_user_list_response_free(ds3_spectra_user_list_response *response)
Definition: ds3.c:2722
ds3_bulk_object_response ** objects
Definition: ds3.h:1979
void ds3_pool_response_free(ds3_pool_response *response)
Definition: ds3.c:1071
void ds3_group_member_response_free(ds3_group_member_response *response)
Definition: ds3.c:697
ds3_str * serial_number
Definition: ds3.h:839
ds3_paging * paging
Definition: ds3.h:1685
ds3_str * message
Definition: ds3.h:2139
ds3_str * data_policy_id
Definition: ds3.h:750
void ds3_suspect_blob_pool_response_free(ds3_suspect_blob_pool_response *response)
Definition: ds3.c:1111
ds3_str * data_path_end_point
Definition: ds3.h:1321
ds3_str * name
Definition: ds3.h:805
void ds3_job_creation_failed_notification_registration_list_response_free(ds3_job_creation_failed_notification_registration_list_response *response)
Definition: ds3.c:2204
ds3_str * created_at
Definition: ds3.h:674
void ds3_bucket_acl_list_response_free(ds3_bucket_acl_list_response *response)
Definition: ds3.c:1840
ds3_str * job_id
Definition: ds3.h:2006
void ds3_azure_data_replication_rule_response_free(ds3_azure_data_replication_rule_response *response)
Definition: ds3.c:525
void ds3_tape_failure_notification_registration_response_free(ds3_tape_failure_notification_registration_response *response)
Definition: ds3.c:1032
ds3_str * bucket_id
Definition: ds3.h:669
ds3_str * last_verified
Definition: ds3.h:1129
ds3_str * read_from_pool_id
Definition: ds3.h:827
ds3_str * bucket_id
Definition: ds3.h:852
ds3_group_response ** groups
Definition: ds3.h:1693
void ds3_pool_failure_list_response_free(ds3_pool_failure_list_response *response)
Definition: ds3.c:2344
ds3_str * name
Definition: ds3.h:1131
void ds3_data_policy_response_free(ds3_data_policy_response *response)
Definition: ds3.c:626
GHashTable * headers
Definition: ds3_request.h:36
ds3_azure_target_response ** azure_targets
Definition: ds3.h:1928
void ds3_system_failure_notification_payload_response_free(ds3_system_failure_notification_payload_response *response)
Definition: ds3.c:1522
#define S_ISDIR(mode)
Definition: ds3.c:41
ds3_str * access_key
Definition: ds3.h:1317
size_t ds3_read_from_file(void *buffer, size_t size, size_t nmemb, void *user_data)
Definition: ds3.c:198
ds3_detailed_tape_failure_response ** detailed_tape_failures
Definition: ds3.h:1838
void ds3_detailed_s3_object_response_free(ds3_detailed_s3_object_response *response)
Definition: ds3.c:3016
void ds3_tape_partition_failure_notification_payload_response_free(ds3_tape_partition_failure_notification_payload_response *response)
Definition: ds3.c:1546
ds3_storage_domain_member_response ** storage_domain_members
Definition: ds3.h:1808
ds3_str * proxy
Definition: ds3.h:2145
void ds3_error_free(ds3_error *error)
Definition: ds3.c:507
ds3_job_created_notification_registration_response ** job_created_notification_registrations
Definition: ds3.h:1733
void ds3_user_response_free(ds3_user_response *response)
Definition: ds3.c:1741
void ds3_s3_object_to_delete_response_free(ds3_s3_object_to_delete_response *response)
Definition: ds3.c:1732
void ds3_list_multi_part_uploads_result_response_free(ds3_list_multi_part_uploads_result_response *response)
Definition: ds3.c:3085
ds3_tape_drive_type * drive_types
Definition: ds3.h:1508
ds3_str * bucket_id
Definition: ds3.h:758
void ds3_suspect_blob_azure_target_response_free(ds3_suspect_blob_azure_target_response *response)
Definition: ds3.c:1380
void ds3_client_proxy(ds3_client *client, const char *proxy)
Definition: ds3.c:163
void ds3_azure_target_failure_notification_payload_response_free(ds3_azure_target_failure_notification_payload_response *response)
Definition: ds3.c:1424
ds3_error * net_process_request(const ds3_client *client, const ds3_request *_request, void *read_user_struct, size_t(*read_handler_func)(void *, size_t, size_t, void *), void *write_user_struct, size_t(*write_handler_func)(void *, size_t, size_t, void *), ds3_string_multimap **return_headers)
Definition: ds3_net.c:412
int num_strings
Definition: ds3.h:117
ds3_bucket_details_response ** buckets
Definition: ds3.h:1989
void ds3_head_object_response_free(ds3_head_object_response *response)
Definition: ds3.c:465
void ds3_s3_object_lost_notification_registration_response_free(ds3_s3_object_lost_notification_registration_response *response)
Definition: ds3.c:961
ds3_str * member_user_id
Definition: ds3.h:790
void ds3_target_response_free(ds3_target_response *response)
Definition: ds3.c:1287
ds3_str * partially_verified_end_of_tape
Definition: ds3.h:1184
void ds3_s3_target_list_response_free(ds3_s3_target_list_response *response)
Definition: ds3.c:2708
ds3_str * last_cleaned
Definition: ds3.h:1207
ds3_connection_pool * connection_pool
Definition: ds3.h:2156
void ds3_storage_domain_failure_list_response_free(ds3_storage_domain_failure_list_response *response)
Definition: ds3.c:2386
void ds3_master_object_list_response_free(ds3_master_object_list_response *response)
Definition: ds3.c:2937
ds3_str * user_id
Definition: ds3.h:814
void ds3_target_failure_list_response_free(ds3_target_failure_list_response *response)
Definition: ds3.c:2624
void ds3_target_list_response_free(ds3_target_list_response *response)
Definition: ds3.c:2652
ds3_bulk_object_response ** objects
Definition: ds3.h:1974
void ds3_system_failure_response_free(ds3_system_failure_response *response)
Definition: ds3.c:822
ds3_bulk_object_response ** objects
Definition: ds3.h:1955
ds3_str * created_at
Definition: ds3.h:798
void ds3_tape_partition_failure_response_free(ds3_tape_partition_failure_response *response)
Definition: ds3.c:1225
void ds3_tape_partition_failure_notification_registration_list_response_free(ds3_tape_partition_failure_notification_registration_list_response *response)
Definition: ds3.c:2330
void ds3_job_list_response_free(ds3_job_list_response *response)
Definition: ds3.c:2960
ds3_str * error_message
Definition: ds3.h:800
void ds3_pool_partition_list_response_free(ds3_pool_partition_list_response *response)
Definition: ds3.c:2358
void ds3_data_persistence_rule_list_response_free(ds3_data_persistence_rule_list_response *response)
Definition: ds3.c:1910
ds3_contents_response ** objects
Definition: ds3.h:2114
void ds3_spectra_user_response_free(ds3_spectra_user_response *response)
Definition: ds3.c:833
ds3_build_information_response * build_information
Definition: ds3.h:1556
ds3_str * serial_number
Definition: ds3.h:1229
ds3_str * bucket
Definition: ds3.h:1944
void ds3_initiate_multipart_upload_result_response_free(ds3_initiate_multipart_upload_result_response *response)
Definition: ds3.c:1701
ds3_s3_object_response ** s3_objects
Definition: ds3.h:1683
void ds3_s3_target_response_free(ds3_s3_target_response *response)
Definition: ds3.c:1325
void ds3_data_policy_list_response_free(ds3_data_policy_list_response *response)
Definition: ds3.c:1924
ds3_metadata * metadata
Definition: ds3.h:629
ds3_str * ds3_str_init(const char *string)
Definition: ds3_string.c:20
void ds3_delete_result_response_free(ds3_delete_result_response *response)
Definition: ds3.c:2886
void ds3_client_register_net(ds3_client *client, ds3_error *(*net_callback)(const ds3_client *client, const ds3_request *_request, void *read_user_struct, size_t(*read_handler_func)(void *, size_t, size_t, void *), void *write_user_struct, size_t(*write_handler_func)(void *, size_t, size_t, void *), ds3_string_multimap **return_headers))
Definition: ds3.c:75
void ds3_canceled_job_list_response_free(ds3_canceled_job_list_response *response)
Definition: ds3.c:2106
ds3_str * member_group_id
Definition: ds3.h:789
void ds3_job_creation_failed_notification_payload_response_free(ds3_job_creation_failed_notification_payload_response *response)
Definition: ds3.c:2817
void ds3_system_failure_notification_registration_response_free(ds3_system_failure_notification_registration_response *response)
Definition: ds3.c:1018
ds3_s3_target_response ** s3_targets
Definition: ds3.h:1918
void ds3_suspect_blob_tape_list_response_free(ds3_suspect_blob_tape_list_response *response)
Definition: ds3.c:2036
void ds3_canceled_job_response_free(ds3_canceled_job_response *response)
Definition: ds3.c:572
ds3_tape_failure_notification_registration_response ** tape_failure_notification_registrations
Definition: ds3.h:1778
void ds3_azure_target_bucket_name_list_response_free(ds3_azure_target_bucket_name_list_response *response)
Definition: ds3.c:2568
ds3_str * cloud_bucket_prefix
Definition: ds3.h:1319
void ds3_type_response_free(ds3_type_response *response)
Definition: ds3.c:1822
ds3_blob_store_task_information_response ** tasks
Definition: ds3.h:1469
ds3_tape_drive_type * drive_types
Definition: ds3.h:1568
void ds3_complete_multipart_upload_response_free(ds3_complete_multipart_upload_response *response)
Definition: ds3.c:426
void ds3_named_detailed_tape_partition_response_free(ds3_named_detailed_tape_partition_response *response)
Definition: ds3.c:1771
ds3_creds * ds3_create_creds(const char *access_id, const char *secret_key)
Definition: ds3.c:61
ds3_bulk_object_list_response * ds3_convert_object_list_from_strings(const char **objects, uint64_t num_objects)
Definition: ds3.c:376
void ds3_completed_job_list_response_free(ds3_completed_job_list_response *response)
Definition: ds3.c:2120
void * user_data
Definition: ds3.h:82
ds3_str * bar_code
Definition: ds3.h:1171
void ds3_tape_density_directive_list_response_free(ds3_tape_density_directive_list_response *response)
Definition: ds3.c:2456
ds3_bulk_object_list_response * ds3_init_bulk_object_list_with_size(size_t num_objects)
Definition: ds3.c:399
ds3_str * node_id
Definition: ds3.h:2022
ds3_str * secret_key
Definition: ds3.h:88
ds3_str * id
Definition: ds3.h:854
ds3_degraded_blob_response ** degraded_blobs
Definition: ds3.h:1653
ds3_target_response ** ds3_targets
Definition: ds3.h:1930
ds3_user_response * owner
Definition: ds3.h:2067
void ds3_generic_dao_notification_registration_response_free(ds3_generic_dao_notification_registration_response *response)
Definition: ds3.c:874
ds3_str * error_message
Definition: ds3.h:775
void ds3_job_created_notification_registration_list_response_free(ds3_job_created_notification_registration_list_response *response)
Definition: ds3.c:2190
void ds3_tape_drive_response_free(ds3_tape_drive_response *response)
Definition: ds3.c:1172
void ds3_physical_placement_response_free(ds3_physical_placement_response *response)
Definition: ds3.c:2736
ds3_target_read_preference_response ** ds3_target_read_preferences
Definition: ds3.h:1893
void ds3_system_information_response_free(ds3_system_information_response *response)
Definition: ds3.c:1751
void ds3_detailed_tape_failure_list_response_free(ds3_detailed_tape_failure_list_response *response)
Definition: ds3.c:2484
ds3_str * endpoint
Definition: ds3.h:2144
void ds3_suspect_blob_azure_target_list_response_free(ds3_suspect_blob_azure_target_list_response *response)
Definition: ds3.c:1980
char * value
Definition: ds3_string.h:27
ds3_tape_response ** tapes
Definition: ds3.h:1936
void ds3_tape_partition_response_free(ds3_tape_partition_response *response)
Definition: ds3.c:1212
ds3_str * id
Definition: ds3.h:1179
ds3_str * last_fully_verified
Definition: ds3.h:1261
ds3_str * chunk_id
Definition: ds3.h:2020
ds3_job_node_response ** nodes
Definition: ds3.h:2036
ds3_checksum_type * blob_checksum_type
Definition: ds3.h:630
void ds3_tape_library_list_response_free(ds3_tape_library_list_response *response)
Definition: ds3.c:2498
ds3_str ** strings_list
Definition: ds3.h:116
void ds3_data_replication_rule_response_free(ds3_data_replication_rule_response *response)
Definition: ds3.c:664
void ds3_suspect_blob_s3_target_list_response_free(ds3_suspect_blob_s3_target_list_response *response)
Definition: ds3.c:2022
ds3_tape_response ** tapes
Definition: ds3.h:1863
uint64_t ds3_get_file_size(const char *file_path)
Definition: ds3.c:299