Added a method to copy MultiAddresses
This commit is contained in:
parent
bb488f7e82
commit
cc8ff45cc1
2 changed files with 27 additions and 0 deletions
|
@ -47,6 +47,8 @@ struct MultiAddress* multiaddress_new_from_string(const char* straddress); //Con
|
||||||
|
|
||||||
void multiaddress_free(struct MultiAddress* in);
|
void multiaddress_free(struct MultiAddress* in);
|
||||||
|
|
||||||
|
int multiaddress_copy(const struct MultiAddress* source, struct MultiAddress* destination);
|
||||||
|
|
||||||
int multiaddress_encapsulate(struct MultiAddress * result, char * string);
|
int multiaddress_encapsulate(struct MultiAddress * result, char * string);
|
||||||
|
|
||||||
int multiaddress_decapsulate(struct MultiAddress * result, char * srci);
|
int multiaddress_decapsulate(struct MultiAddress * result, char * srci);
|
||||||
|
|
25
multiaddr.c
25
multiaddr.c
|
@ -91,6 +91,31 @@ void multiaddress_free(struct MultiAddress* in) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a multiaddress from one memory location to another
|
||||||
|
* @param in the source
|
||||||
|
* @param out the destination. NOTE: memory for out should be preallocated
|
||||||
|
* @returns true(1) on success, otherwise false(0)
|
||||||
|
*/
|
||||||
|
int multiaddress_copy(const struct MultiAddress* in, struct MultiAddress* out) {
|
||||||
|
if (in != NULL && out != NULL) {
|
||||||
|
// memory allocation
|
||||||
|
out->bytes = malloc(in->bsize);
|
||||||
|
if (out->bytes != NULL) {
|
||||||
|
out->string = malloc(strlen(in->string) + 1);
|
||||||
|
if (out->string != NULL) {
|
||||||
|
// copy
|
||||||
|
out->bsize = in->bsize;
|
||||||
|
memcpy(out->bytes, in->bytes, out->bsize);
|
||||||
|
strcpy(out->string, in->string);
|
||||||
|
return 1;
|
||||||
|
} // string allocated
|
||||||
|
free(out->bytes);
|
||||||
|
} // bytes allocated
|
||||||
|
} // good parameters
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Put a string into the MultiAddress and recalculate the bytes
|
* Put a string into the MultiAddress and recalculate the bytes
|
||||||
* @param result the struct
|
* @param result the struct
|
||||||
|
|
Loading…
Reference in a new issue