/* Copyright (C) 2009 The Android Open Source Project
**
** This software is licensed under the terms of the GNU General Public
** License version 2, as published by the Free Software Foundation, and
** may be copied, distributed, and modified under those terms.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
*/
#ifndef ANDROID_UTILS_UNCOMPRESS_H
#define ANDROID_UTILS_UNCOMPRESS_H

#include "android/utils/compiler.h"

#include <stdint.h>
#include <stddef.h>

ANDROID_BEGIN_HEADER

// uncompress a gzip file in memory into memory in one function call
// the dstLen must be large enough to hold all the decompressed data
//
// src - pointer to the beginning of the gzip file data
// srcLen - total number of bytes in the gzip file
// dst - pointer that receives the decompressed bytes
// dstLen - number of bytes available for decompressed data
//
// return values 
// true - all data decompressed correctly
// false - dst buffer too small or corrupt zstream or out of memory
// |dstLen| hold the number of bytes written to dst
bool uncompress_gzipStream(uint8_t* dst, size_t* dstLen, const uint8_t* src,
                           size_t srcLen);

ANDROID_END_HEADER

#endif /* ANDROID_UTILS_UNCOMPRESS_H */
