2f474f0bbe679ecae927d546e06f66956a68b84evboxsync/* $Id$ */
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync/** @file
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * IPRT - RTFileReadAllFree, generic implementation.
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync */
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync/*
c7814cf6e1240a519cbec0441e033d0e2470ed00vboxsync * Copyright (C) 2008-2010 Oracle Corporation
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync *
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * available from http://www.virtualbox.org. This file is free software;
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * you can redistribute it and/or modify it under the terms of the GNU
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * General Public License (GPL) as published by the Free Software
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync *
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * The contents of this file may alternatively be used under the terms
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * of the Common Development and Distribution License Version 1.0
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * VirtualBox OSE distribution, in which case the provisions of the
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * CDDL are applicable instead of those of the GPL.
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync *
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * You may elect to license modified versions of this file under the
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * terms and conditions of either the GPL or the CDDL or both.
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync */
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync/*******************************************************************************
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync* Header Files *
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync*******************************************************************************/
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync#include <iprt/file.h>
aa4bcf0a4b2db3ac352b56a291d49cb8d4b66d32vboxsync#include "internal/iprt.h"
aa4bcf0a4b2db3ac352b56a291d49cb8d4b66d32vboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync#include <iprt/mem.h>
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync#include <iprt/assert.h>
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsyncRTDECL(void) RTFileReadAllFree(void *pvFile, size_t cbFile)
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync{
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync AssertPtrReturnVoid(pvFile);
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync /*
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * We've got a 32 byte header to make sure the caller isn't screwing us.
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync * It's all hardcoded fun for now...
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync */
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync pvFile = (void *)((uintptr_t)pvFile - 32);
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync Assert(*(size_t *)pvFile == cbFile);
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync *(size_t *)pvFile = ~(size_t)1;
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync RTMemFree(pvFile);
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync}
aa4bcf0a4b2db3ac352b56a291d49cb8d4b66d32vboxsyncRT_EXPORT_SYMBOL(RTFileReadAllFree);
2f474f0bbe679ecae927d546e06f66956a68b84evboxsync