|
|
|
/* ----> DO NOT REMOVE THE FOLLOWING NOTICE <----
|
|
|
|
*
|
|
|
|
* Copyright (c) 2014-2015 Datalight, Inc.
|
|
|
|
* All Rights Reserved Worldwide.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; use version 2 of the License.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but "AS-IS," 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.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License along
|
|
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* Businesses and individuals that for commercial or other reasons cannot
|
|
|
|
* comply with the terms of the GPLv2 license may obtain a commercial license
|
|
|
|
* before incorporating Reliance Edge into proprietary software for
|
|
|
|
* distribution in any form. Visit http://www.datalight.com/reliance-edge for
|
|
|
|
* more information.
|
|
|
|
*/
|
|
|
|
#ifndef REDTOOLS_H
|
|
|
|
#define REDTOOLS_H
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
#include <Windows.h>
|
|
|
|
#define HOST_PATH_MAX MAX_PATH
|
|
|
|
#else
|
|
|
|
#include <linux/limits.h>
|
|
|
|
#define HOST_PATH_MAX PATH_MAX
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if REDCONF_IMAGE_BUILDER == 1
|
|
|
|
|
|
|
|
#define MACRO_NAME_MAX_LEN 32
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
uint8_t bVolNumber;
|
|
|
|
const char * pszInputDir;
|
|
|
|
const char * pszOutputFile;
|
|
|
|
#if REDCONF_API_POSIX == 1
|
|
|
|
const char * pszVolName;
|
|
|
|
#else
|
|
|
|
const char * pszMapFile;
|
|
|
|
const char * pszDefineFile;
|
|
|
|
bool fNowarn;
|
|
|
|
#endif
|
|
|
|
} IMGBLDPARAM;
|
|
|
|
|
|
|
|
|
|
|
|
void ImgbldParseParams( int argc,
|
|
|
|
char * argv[],
|
|
|
|
IMGBLDPARAM * pParam );
|
|
|
|
int ImgbldStart( IMGBLDPARAM * pParam );
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
#if REDCONF_API_POSIX == 1
|
|
|
|
char asOutFilePath[ HOST_PATH_MAX ];
|
|
|
|
#else
|
|
|
|
uint32_t ulOutFileIndex;
|
|
|
|
#endif
|
|
|
|
char asInFilePath[ HOST_PATH_MAX ];
|
|
|
|
} FILEMAPPING;
|
|
|
|
|
|
|
|
|
|
|
|
extern void * gpCopyBuffer;
|
|
|
|
extern uint32_t gulCopyBufferSize;
|
|
|
|
|
|
|
|
|
|
|
|
/* Implemented in ibposix.c
|
|
|
|
*/
|
|
|
|
#if REDCONF_API_POSIX == 1
|
|
|
|
REDSTATUS IbPosixCopyDir( const char * pszVolName,
|
|
|
|
const char * pszInDir );
|
|
|
|
int IbPosixCreateDir( const char * pszVolName,
|
|
|
|
const char * pszFullPath,
|
|
|
|
const char * pszBasePath );
|
|
|
|
int IbConvertPath( const char * pszVolName,
|
|
|
|
const char * pszFullPath,
|
|
|
|
const char * pszBasePath,
|
|
|
|
char * szOutPath );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/* Implemented in ibfse.c
|
|
|
|
*/
|
|
|
|
#if REDCONF_API_FSE == 1
|
|
|
|
typedef struct sFILELISTENTRY FILELISTENTRY;
|
|
|
|
struct sFILELISTENTRY
|
|
|
|
{
|
|
|
|
FILEMAPPING fileMapping;
|
|
|
|
FILELISTENTRY * pNext;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void FreeFileList( FILELISTENTRY ** ppsFileList );
|
|
|
|
|
|
|
|
int IbFseGetFileList( const char * pszPath,
|
|
|
|
const char * pszIndirPath,
|
|
|
|
FILELISTENTRY ** ppFileListHead );
|
|
|
|
int IbFseOutputDefines( FILELISTENTRY * pFileList,
|
|
|
|
const IMGBLDPARAM * pOptions );
|
|
|
|
int IbFseCopyFiles( int volNum,
|
|
|
|
const FILELISTENTRY * pFileList );
|
|
|
|
#endif /* if REDCONF_API_FSE == 1 */
|
|
|
|
|
|
|
|
|
|
|
|
/* Implemented in os-specific space (ibwin.c and iblinux.c)
|
|
|
|
*/
|
|
|
|
#if REDCONF_API_POSIX == 1
|
|
|
|
int IbPosixCopyDirRecursive( const char * pszVolName,
|
|
|
|
const char * pszInDir );
|
|
|
|
#endif
|
|
|
|
#if REDCONF_API_FSE == 1
|
|
|
|
int IbFseBuildFileList( const char * pszDirPath,
|
|
|
|
FILELISTENTRY ** ppFileListHead );
|
|
|
|
#endif
|
|
|
|
#if REDCONF_API_FSE == 1
|
|
|
|
int IbSetRelativePath( char * pszPath,
|
|
|
|
const char * pszParentPath );
|
|
|
|
#endif
|
|
|
|
bool IsRegularFile( const char * pszPath );
|
|
|
|
|
|
|
|
|
|
|
|
/* Implemented in ibcommon.c
|
|
|
|
*/
|
|
|
|
int IbCopyFile( int volNum,
|
|
|
|
const FILEMAPPING * pFileMapping );
|
|
|
|
int IbCheckFileExists( const char * pszPath,
|
|
|
|
bool * pfExists );
|
|
|
|
|
|
|
|
|
|
|
|
/* Implemented separately in ibfse.c and ibposix.c
|
|
|
|
*/
|
|
|
|
int IbApiInit( void );
|
|
|
|
int IbApiUninit( void );
|
|
|
|
int IbWriteFile( int volNum,
|
|
|
|
const FILEMAPPING * pFileMapping,
|
|
|
|
uint64_t ullOffset,
|
|
|
|
void * pData,
|
|
|
|
uint32_t ulDataLen );
|
|
|
|
|
|
|
|
#endif /* IMAGE_BUILDER */
|
|
|
|
|
|
|
|
/* For image copier tool
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
#define HOST_PSEP '\\'
|
|
|
|
#if !__STDC__
|
|
|
|
#define snprintf _snprintf
|
|
|
|
#define stat _stat
|
|
|
|
#define S_IFDIR _S_IFDIR
|
|
|
|
#define rmdir _rmdir
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
#define HOST_PSEP '/'
|
|
|
|
#endif
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
uint8_t bVolNumber;
|
|
|
|
const char * pszOutputDir;
|
|
|
|
const char * pszBDevSpec;
|
|
|
|
#if REDCONF_API_POSIX == 1
|
|
|
|
const char * pszVolName;
|
|
|
|
#endif
|
|
|
|
bool fNoWarn;
|
|
|
|
} IMGCOPYPARAM;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
#if REDCONF_API_POSIX == 1
|
|
|
|
const char * pszVolume; /* Volume path prefix. */
|
|
|
|
uint32_t ulVolPrefixLen; /* strlen(COPIER::pszVolume) */
|
|
|
|
#else
|
|
|
|
uint8_t bVolNum; /* Volume number. */
|
|
|
|
#endif
|
|
|
|
const char * pszOutputDir; /* Output directory path. */
|
|
|
|
bool fNoWarn; /* If true, no warning to overwrite. */
|
|
|
|
uint8_t * pbCopyBuffer; /* Buffer for copying file data. */
|
|
|
|
} COPIER;
|
|
|
|
|
|
|
|
|
|
|
|
void ImgcopyParseParams( int argc,
|
|
|
|
char * argv[],
|
|
|
|
IMGCOPYPARAM * pParam );
|
|
|
|
int ImgcopyStart( IMGCOPYPARAM * pParam );
|
|
|
|
|
|
|
|
/* Implemented separately in imgcopywin.c and imgcopylinux.c. These functions
|
|
|
|
* print an error message and abort on failure.
|
|
|
|
*/
|
|
|
|
void ImgcopyMkdir( const char * pszDir );
|
|
|
|
void ImgcopyRecursiveRmdir( const char * pszDir );
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* REDTOOLS_H */
|