81 lines
1.6 KiB
C
81 lines
1.6 KiB
C
|
|
/*
|
|||
|
|
* Copyright © 2008 by Eric Bishop <eric@gargoyle-router.com>
|
|||
|
|
*
|
|||
|
|
* This work ‘as-is’ we provide.
|
|||
|
|
* No warranty, express or implied.
|
|||
|
|
* We’ve done our best,
|
|||
|
|
* to debug and test.
|
|||
|
|
* Liability for damages denied.
|
|||
|
|
*
|
|||
|
|
* Permission is granted hereby,
|
|||
|
|
* to copy, share, and modify.
|
|||
|
|
* Use as is fit,
|
|||
|
|
* free or for profit.
|
|||
|
|
* On this notice these rights rely.
|
|||
|
|
*
|
|||
|
|
*
|
|||
|
|
*
|
|||
|
|
* Note that unlike other portions of Gargoyle this code
|
|||
|
|
* does not fall under the GPL, but the rather whimsical
|
|||
|
|
* 'Poetic License' above.
|
|||
|
|
*
|
|||
|
|
* Basically, this library contains a bunch of utilities
|
|||
|
|
* that I find useful. I'm sure other libraries exist
|
|||
|
|
* that are just as good or better, but I like these tools
|
|||
|
|
* because I personally wrote them, so I know their quirks.
|
|||
|
|
* (i.e. I know where the bodies are buried). I want to
|
|||
|
|
* make sure that I can re-use these utilities for whatever
|
|||
|
|
* code I may want to write in the future be it
|
|||
|
|
* proprietary or open-source, so I've put them under
|
|||
|
|
* a very, very permissive license.
|
|||
|
|
*
|
|||
|
|
* If you find this code useful, use it. If not, don't.
|
|||
|
|
* I really don't care.
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "erics_tools.h"
|
|||
|
|
|
|||
|
|
void *safe_malloc(size_t size)
|
|||
|
|
{
|
|||
|
|
void* val = malloc(size);
|
|||
|
|
if(val == NULL)
|
|||
|
|
{
|
|||
|
|
fprintf(stderr, "ERROR: MALLOC FAILURE!\n");
|
|||
|
|
exit(1);
|
|||
|
|
}
|
|||
|
|
return val;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
char* safe_strdup(const char* str)
|
|||
|
|
{
|
|||
|
|
char* new_str = NULL;
|
|||
|
|
if(str != NULL)
|
|||
|
|
{
|
|||
|
|
new_str = strdup(str);
|
|||
|
|
if(new_str == NULL)
|
|||
|
|
{
|
|||
|
|
fprintf(stderr, "ERROR: MALLOC FAILURE!\n");
|
|||
|
|
exit(1);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return new_str;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void free_if_not_null(void* p)
|
|||
|
|
{
|
|||
|
|
if(p != NULL)
|
|||
|
|
{
|
|||
|
|
free(p);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
void free_and_set_null(void** p)
|
|||
|
|
{
|
|||
|
|
if(*p != NULL)
|
|||
|
|
{
|
|||
|
|
free(*p);
|
|||
|
|
*p = NULL;
|
|||
|
|
}
|
|||
|
|
}
|