forked from agorise/c-ipfs
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "ipfs/repo/config/swarm.h"
|
|
|
|
|
|
int repo_config_swarm_address_init(struct SwarmAddresses* swarm_addresses, char** addresses, int array_length) {
|
|
// allocate memory for the addresses array
|
|
swarm_addresses->addresses = malloc(sizeof(char*) * array_length);
|
|
if (swarm_addresses->addresses == NULL)
|
|
return 0;
|
|
|
|
// copy in all the strings
|
|
for(int i = 0; i < array_length; i++) {
|
|
char* newString = malloc(sizeof(char) * (strlen(addresses[i]) + 1));
|
|
if (newString == NULL)
|
|
return 0;
|
|
strncpy(newString, addresses[i], strlen(addresses[i]));
|
|
newString[strlen(addresses[i])] = 0;
|
|
swarm_addresses->addresses[i] = newString;
|
|
}
|
|
|
|
swarm_addresses->num_addresses = array_length;
|
|
|
|
return 1;
|
|
}
|
|
|
|
int repo_config_swarm_address_new(struct SwarmAddresses** swarm_addresses) {
|
|
*swarm_addresses = (struct SwarmAddresses*)malloc(sizeof(struct SwarmAddresses));
|
|
if (*swarm_addresses == NULL)
|
|
return 0;
|
|
|
|
(*swarm_addresses)->num_addresses = 0;
|
|
(*swarm_addresses)->addresses = NULL;
|
|
return 1;
|
|
}
|
|
|
|
int repo_config_swarm_address_free(struct SwarmAddresses* swarm_addresses) {
|
|
if (swarm_addresses->addresses != NULL) {
|
|
for (int i = 0; i < swarm_addresses->num_addresses; i++) {
|
|
free(swarm_addresses->addresses[i]);
|
|
}
|
|
free(swarm_addresses->addresses);
|
|
}
|
|
free(swarm_addresses);
|
|
return 1;
|
|
}
|