/* ----> 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 #define HOST_PATH_MAX MAX_PATH #else #include #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 /* 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 */