-
Brandon Rodriguez authored0c0d6e11
CopyFunctions.c 1.79 KiB
/**
* Brandon Rodriguez
* CS 3240
* 09-19-17
*/
/**
* Helper functions to have consistent value copying and error handling.
*
* All functions use memcpy to copy data, and error.c's err_dump on failure.
*
* All functions require a "source" pointer of equivalent typing, and returns
* a pointer to copied item's location.
*/
#include <stdlib.h>
#include <string.h>
#include "apue.h"
/**
* Copies string from destination to source.
*/
char* copy_string(char *source_ptr) {
char *copy_ptr;
copy_ptr = calloc((strlen(source_ptr) + 1), sizeof(char));
if (copy_ptr != NULL) {
memcpy(copy_ptr, source_ptr, ((strlen(source_ptr) + 1) * sizeof(char)));
} else {
err_dump("Could not allocate memory for string calloc.");
}
return copy_ptr;
}
/**
* Copies float from destination to source.
*/
int* copy_int(int *source_ptr) {
int *copy_ptr;
copy_ptr = calloc(1, (sizeof(int) + 1));
if (copy_ptr != NULL) {
memcpy(copy_ptr, source_ptr, sizeof(int));
} else {
err_dump("Could not allocate memory for int calloc.");
}
return copy_ptr;
}
/**
* Copies float from destination to source.
*/
float* copy_float(float *source_ptr) {
float *copy_ptr;
copy_ptr = calloc(1, (sizeof(float) + 1));
if (copy_ptr != NULL) {
memcpy(copy_ptr, source_ptr, sizeof(float));
} else {
err_dump("Could not allocate memory for float calloc.");
}
return copy_ptr;
}
/**
* Copies double from destination to source.
*/