op_libiberty.c revision 7984f7ab3e13cda0c3b04ffeb2608f232e57f93a
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file op_libiberty.c
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Wrapper for libiberty - always use this instead of
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * libiberty.h
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @remark Copyright 2002 OProfile authors
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @remark Read the file COPYING
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @author John Levon
101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) * @author Philippe Elie
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "op_libiberty.h"
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef HAVE_XCALLOC
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* some system have a valid libiberty without xcalloc */
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void * xcalloc(size_t n_elem, size_t sz)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)	void * ptr = xmalloc(n_elem * sz);
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	memset(ptr, '\0', n_elem * sz);
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	return ptr;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
27424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#endif
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef HAVE_XMEMDUP
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void * xmemdup (void const * input, size_t copy_size, size_t alloc_size)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)	void * output = xcalloc(1, alloc_size);
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)	memcpy(output, input, copy_size);
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	return output;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)