#include "common.h"
#include "list.h"
+#include "mem.h"
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ERROR HANDLING <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
}
-/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MEMORY HANDLING <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
-
-
-void *mem_get( size_t size )
-{
- /* Martin A. Hansen, May 2008 */
-
- /* Allocate a given chunk of memory to a pointer that is returned. */
-
- void *pt;
-
- if ( size == 0 ) {
- die( "could not allocate 0 bytes of memory." );
- } else if ( ( pt = malloc( size ) ) == NULL ) {
- die( "could not allocate memory." );
- }
-
- return pt;
-}
-
-
-void *mem_get_zero( size_t size )
-{
- /* Martin A. Hansen, May 2008 */
-
- /* Allocate a given chunk of zero'ed memory to a pointer that is returned. */
-
- void *pt;
-
- if ( size == 0 ) {
- die( "could not allocate 0 bytes of memory." );
- } else if ( ( pt = malloc( size ) ) == NULL ) {
- die( "could not allocate memory." );
- }
-
- memset( pt, '\0', size );
-
- return pt;
-}
-
-
-void *mem_resize( void *pt, size_t size )
-{
- /* Martin A. Hansen, May 2008 */
-
- /* Resize an allocated chunk of memory for a given pointer and new size. */
-
- void *pt_new;
-
- if ( size == 0 ) {
- die( "could not re-allocate 0 bytes of memory." );
- } else if ( ( pt_new = realloc( pt, size ) ) == NULL ) {
- die( "could not re-allocate memory." );
- }
-
- return pt_new;
-}
-
-
-void *mem_resize_zero( void *pt, size_t old_size, size_t new_size )
-{
- /* Martin A. Hansen, May 2008 */
-
- /* Resize an allocated chunk of memory for a given pointer and zero any extra memory. */
-
- void *pt_new;
-
- pt_new = mem_resize( pt, new_size );
-
- if ( new_size > old_size ) {
- memset( ( ( void * ) pt_new ) + old_size, '\0', new_size - old_size );
- }
-
- return pt_new;
-}
-
-
-void *mem_clone( void *old_pt, size_t size )
-{
- /* Martin A. Hansen, June 2008 */
-
- /* Clone a structure in memory and return a pointer to the clone. */
-
- void *new_pt;
-
- new_pt = mem_get( size );
-
- memcpy( new_pt, old_pt, size );
-
- return new_pt;
-}
-
-
-void mem_free( void *pt )
-{
- /* Martin A. Hansen, May 2008 */
-
- /* Free memory from a given pointer. */
-
- if ( pt != NULL )
- {
- free( pt );
-
- pt = NULL;
- }
-}
-
-
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ARRAYS <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MISC <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
-void chop( char *string )
-{
- /* Martin A. Hansen, June 2008 */
-
- /* Removes the last char from a string. */
-
- int len;
-
- len = strlen( string );
-
- string[ len - 1 ] = '\0';
-}
-
-
-void chomp( char *string )
-{
- /* Martin A. Hansen, June 2008 */
-
- /* Removes the last char from a string if the char is a newline. */
-
- int len;
-
- len = strlen( string );
-
- if ( string[ len - 1 ] == '\n' ) {
- string[ len - 1 ] = '\0';
- }
-}
-
-
-void split( char *string, char delimit, struct list **fields )
-{
- /* Martin A. Hansen, June 2008 */
-
- /* Split a given line and a delimiter return the split result as a list. */
-
- int i;
- int j;
-
- char field[ 256 ] = "";
- char *field_copy;
-
- j = 0;
-
- for ( i = 0; string[ i ]; i++ )
- {
- if ( string[ i ] != delimit )
- {
- field[ j ] = string[ i ];
-
- j++;
- }
- else
- {
- field_copy = mem_clone( field, j + 1 );
-
- list_add( fields, field_copy );
-
- ZERO( field );
-
- j = 0;
- }
- }
-
- field_copy = mem_clone( field, j + 1 );
-
- list_add( fields, field_copy );
-
- list_reverse( fields );
-}
-
-
-char *substr( char *string, int offset, int len )
-{
- /* Martin A. Hansen, May 2008 */
-
- /* Create equavalent of Perls substr command. */
- /* Currently implemented without optional length */
- /* and the replace feature. */
-
- int string_len;
- int i;
- int j;
- char *substr;
-
- string_len = strlen( string );
-
- if ( offset < 0 ) {
- die( "substr offset < 0." );
- } else if ( len < 0 ) {
- die( "substr length < 0." );
- } else if ( offset > string_len ) {
- die( "substr offset outside string." );
- } else if ( offset + len > string_len ) {
- die( "substr offset + len outside string." );
- }
-
- substr = mem_get( len + 1 );
-
- i = offset;
- j = 0;
-
- while ( i < offset + len )
- {
- substr[ j ] = string[ i ];
-
- i++;
- j++;
- }
-
- substr[ j ] = '\0';
-
- return substr;
-}
-
-
char *bits2string( uint bin )
{
/* Martin A. Hansen, June 2008 */