110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/**
210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @file op_libiberty.c
310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * Wrapper for libiberty - always use this instead of
410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * libiberty.h
510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Copyright 2002 OProfile authors
710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @remark Read the file COPYING
810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project *
910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author John Levon
1010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project * @author Philippe Elie
1110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project */
1210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include <string.h>
1410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#include "op_libiberty.h"
1610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
1710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef HAVE_XCALLOC
1810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project/* some system have a valid libiberty without xcalloc */
1910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectvoid * xcalloc(size_t n_elem, size_t sz)
2010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project{
2110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	void * ptr = xmalloc(n_elem * sz);
2210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	memset(ptr, '\0', n_elem * sz);
2410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	return ptr;
2610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}
2710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
2810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
2910e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#ifndef HAVE_XMEMDUP
3010e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Projectvoid * xmemdup (void const * input, size_t copy_size, size_t alloc_size)
3110e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project{
3210e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	void * output = xcalloc(1, alloc_size);
3310e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3410e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	memcpy(output, input, copy_size);
3510e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project
3610e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project	return output;
3710e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project}
3810e23eebca4175a8dfe3a788b2bebacb1fcfce54The Android Open Source Project#endif
39