| /* ----> 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. | |
| */ | |
| /** @file | |
| @brief Compile-time validity checks for the REDCONF macros. | |
| */ | |
| #ifndef REDCONFIGCHK_H | |
| #define REDCONFIGCHK_H | |
| #ifndef REDCONF_READ_ONLY | |
| #error "Configuration error: REDCONF_READ_ONLY must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX | |
| #error "Configuration error: REDCONF_API_POSIX must be defined." | |
| #endif | |
| #ifndef REDCONF_API_FSE | |
| #error "Configuration error: REDCONF_API_FSE must be defined." | |
| #endif | |
| #if REDCONF_API_POSIX == 1 | |
| #ifndef REDCONF_API_POSIX_FORMAT | |
| #error "Configuration error: REDCONF_API_POSIX_FORMAT must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_UNLINK | |
| #error "Configuration error: REDCONF_API_POSIX_UNLINK must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_MKDIR | |
| #error "Configuration error: REDCONF_API_POSIX_MKDIR must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_RMDIR | |
| #error "Configuration error: REDCONF_API_POSIX_RMDIR must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_RENAME | |
| #error "Configuration error: REDCONF_API_POSIX_RENAME must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_LINK | |
| #error "Configuration error: REDCONF_API_POSIX_LINK must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_FTRUNCATE | |
| #error "Configuration error: REDCONF_API_POSIX_FTRUNCATE must be defined." | |
| #endif | |
| #ifndef REDCONF_API_POSIX_READDIR | |
| #error "Configuration error: REDCONF_API_POSIX_READDIR must be defined." | |
| #endif | |
| #ifndef REDCONF_NAME_MAX | |
| #error "Configuration error: REDCONF_NAME_MAX must be defined." | |
| #endif | |
| #ifndef REDCONF_PATH_SEPARATOR | |
| #error "Configuration error: REDCONF_PATH_SEPARATOR must be defined." | |
| #endif | |
| #ifndef REDCONF_RENAME_ATOMIC | |
| #error "Configuration error: REDCONF_RENAME_ATOMIC must be defined." | |
| #endif | |
| #ifndef REDCONF_HANDLE_COUNT | |
| #error "Configuration error: REDCONF_HANDLE_COUNT must be defined." | |
| #endif | |
| #endif | |
| #if REDCONF_API_FSE == 1 | |
| #ifndef REDCONF_API_FSE_FORMAT | |
| #error "Configuration error: REDCONF_API_FSE_FORMAT must be defined." | |
| #endif | |
| #ifndef REDCONF_API_FSE_TRUNCATE | |
| #error "Configuration error: REDCONF_API_FSE_TRUNCATE must be defined." | |
| #endif | |
| #ifndef REDCONF_API_FSE_TRANSMASKSET | |
| #error "Configuration error: REDCONF_API_FSE_TRANSMASKSET must be defined." | |
| #endif | |
| #ifndef REDCONF_API_FSE_TRANSMASKGET | |
| #error "Configuration error: REDCONF_API_FSE_TRANSMASKGET must be defined." | |
| #endif | |
| #endif | |
| #ifndef REDCONF_TASK_COUNT | |
| #error "Configuration error: REDCONF_TASK_COUNT must be defined." | |
| #endif | |
| #ifndef REDCONF_ENDIAN_BIG | |
| #error "Configuration error: REDCONF_ENDIAN_BIG must be defined." | |
| #endif | |
| #ifndef REDCONF_ALIGNMENT_SIZE | |
| #error "Configuration error: REDCONF_ALIGNMENT_SIZE must be defined." | |
| #endif | |
| #ifndef REDCONF_CRC_ALGORITHM | |
| #error "Configuration error: REDCONF_CRC_ALGORITHM must be defined." | |
| #endif | |
| #ifndef REDCONF_INODE_TIMESTAMPS | |
| #error "Configuration error: REDCONF_INODE_TIMESTAMPS must be defined." | |
| #endif | |
| #ifndef REDCONF_ATIME | |
| #error "Configuration error: REDCONF_ATIME must be defined." | |
| #endif | |
| #ifndef REDCONF_DIRECT_POINTERS | |
| #error "Configuration error: REDCONF_DIRECT_POINTERS must be defined." | |
| #endif | |
| #ifndef REDCONF_INDIRECT_POINTERS | |
| #error "Configuration error: REDCONF_INDIRECT_POINTERS must be defined." | |
| #endif | |
| #ifndef REDCONF_INODE_BLOCKS | |
| #error "Configuration error: REDCONF_INODE_BLOCKS must be defined." | |
| #endif | |
| #ifndef REDCONF_IMAP_EXTERNAL | |
| #error "Configuration error: REDCONF_IMAP_EXTERNAL must be defined." | |
| #endif | |
| #ifndef REDCONF_IMAP_INLINE | |
| #error "Configuration error: REDCONF_IMAP_INLINE must be defined." | |
| #endif | |
| #ifndef REDCONF_OUTPUT | |
| #error "Configuration error: REDCONF_OUTPUT must be defined." | |
| #endif | |
| #ifndef REDCONF_ASSERTS | |
| #error "Configuration error: REDCONF_ASSERTS must be defined." | |
| #endif | |
| #ifndef REDCONF_TRANSACT_DEFAULT | |
| #error "Configuration error: REDCONF_TRANSACT_DEFAULT must be defined." | |
| #endif | |
| #ifndef REDCONF_BUFFER_COUNT | |
| #error "Configuration error: REDCONF_BUFFER_COUNT must be defined." | |
| #endif | |
| #ifndef REDCONF_BLOCK_SIZE | |
| #error "Configuration error: REDCONF_BLOCK_SIZE must be defined." | |
| #endif | |
| #ifndef REDCONF_VOLUME_COUNT | |
| #error "Configuration error: REDCONF_VOLUME_COUNT must be defined." | |
| #endif | |
| #ifndef REDCONF_IMAGE_BUILDER | |
| #error "Configuration error: REDCONF_IMAGE_BUILDER must be defined." | |
| #endif | |
| #ifndef REDCONF_CHECKER | |
| #error "Configuration error: REDCONF_CHECKER must be defined." | |
| #endif | |
| #if (REDCONF_READ_ONLY != 0) && (REDCONF_READ_ONLY != 1) | |
| #error "Configuration error: REDCONF_READ_ONLY must be either 0 or 1" | |
| #endif | |
| #if (REDCONF_API_POSIX != 0) && (REDCONF_API_POSIX != 1) | |
| #error "Configuration error: REDCONF_API_POSIX must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_FSE != 0) && (REDCONF_API_FSE != 1) | |
| #error "Configuration error: REDCONF_API_FSE must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_FSE == 0) && (REDCONF_API_POSIX == 0) | |
| #error "Configuration error: either REDCONF_API_FSE or REDCONF_API_POSIX must be set to 1." | |
| #endif | |
| #if REDCONF_API_POSIX == 1 | |
| #if REDCONF_API_FSE != 0 | |
| #error "Configuration error: REDCONF_API_FSE must be 0 if REDCONF_API_POSIX is 1" | |
| #endif | |
| #if (REDCONF_API_POSIX_FORMAT != 0) && (REDCONF_API_POSIX_FORMAT != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_FORMAT must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_UNLINK != 0) && (REDCONF_API_POSIX_UNLINK != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_UNLINK must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_MKDIR != 0) && (REDCONF_API_POSIX_MKDIR != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_MKDIR must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_RMDIR != 0) && (REDCONF_API_POSIX_RMDIR != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_RMDIR must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_RENAME != 0) && (REDCONF_API_POSIX_RENAME != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_RENAME must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_LINK != 0) && (REDCONF_API_POSIX_LINK != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_LINK must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_FTRUNCATE != 0) && (REDCONF_API_POSIX_FTRUNCATE != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_FTRUNCATE must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_POSIX_READDIR != 0) && (REDCONF_API_POSIX_READDIR != 1) | |
| #error "Configuration error: REDCONF_API_POSIX_READDIR must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_NAME_MAX < 1U) || (REDCONF_NAME_MAX > (REDCONF_BLOCK_SIZE - 4U)) | |
| #error "Configuration error: invalid value of REDCONF_NAME_MAX" | |
| #endif | |
| #if (REDCONF_PATH_SEPARATOR < 1) || (REDCONF_PATH_SEPARATOR > 127) | |
| #error "Configuration error: invalid value of REDCONF_PATH_SEPARATOR" | |
| #endif | |
| #if (REDCONF_RENAME_ATOMIC != 0) && (REDCONF_RENAME_ATOMIC != 1) | |
| #error "Configuration error: REDCONF_RENAME_ATOMIC must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_HANDLE_COUNT < 1U) || (REDCONF_HANDLE_COUNT > 4096U) | |
| #error "Configuration error: invalid value of REDCONF_HANDLE_COUNT" | |
| #endif | |
| #endif | |
| #if REDCONF_API_FSE == 1 | |
| #if (REDCONF_API_FSE_FORMAT != 0) && (REDCONF_API_FSE_FORMAT != 1) | |
| #error "Configuration error: REDCONF_API_FSE_FORMAT must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_FSE_TRUNCATE != 0) && (REDCONF_API_FSE_TRUNCATE != 1) | |
| #error "Configuration error: REDCONF_API_FSE_TRUNCATE must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_FSE_TRANSMASKSET != 0) && (REDCONF_API_FSE_TRANSMASKSET != 1) | |
| #error "Configuration error: REDCONF_API_FSE_TRANSMASKSET must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_API_FSE_TRANSMASKGET != 0) && (REDCONF_API_FSE_TRANSMASKGET != 1) | |
| #error "Configuration error: REDCONF_API_FSE_TRANSMASKGET must be either 0 or 1." | |
| #endif | |
| #endif | |
| #if REDCONF_TASK_COUNT < 1U | |
| #error "Configuration error: invalid value of REDCONF_TASK_COUNT" | |
| #endif | |
| #if (REDCONF_ENDIAN_BIG != 0) && (REDCONF_ENDIAN_BIG != 1) | |
| #error "Configuration error: REDCONF_ENDIAN_BIG must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_ALIGNMENT_SIZE != 1U) && (REDCONF_ALIGNMENT_SIZE != 2U) && (REDCONF_ALIGNMENT_SIZE != 4U) && (REDCONF_ALIGNMENT_SIZE != 8U) | |
| #error "Configuration error: invalid value REDCONF_ALIGNMENT_SIZE" | |
| #endif | |
| /* REDCONF_CRC_ALGORITHM checked in crc.c | |
| */ | |
| #if (REDCONF_INODE_TIMESTAMPS != 0) && (REDCONF_INODE_TIMESTAMPS != 1) | |
| #error "Configuration error: REDCONF_INODE_TIMESTAMPS must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_ATIME != 0) && (REDCONF_ATIME != 1) | |
| #error "Configuration error: REDCONF_ATIME must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_INODE_TIMESTAMPS == 0) && (REDCONF_ATIME == 1) | |
| #error "Configuration error: REDCONF_ATIME must be 0 when REDCONF_INODE_TIMESTAMPS is 0." | |
| #endif | |
| /* REDCONF_DIRECT_POINTERS and REDCONF_INDIRECT_POINTERS checked in rednodes.h | |
| */ | |
| #if (REDCONF_INODE_BLOCKS != 0) && (REDCONF_INODE_BLOCKS != 1) | |
| #error "Configuration error: REDCONF_INODE_BLOCKS must be either 0 or 1." | |
| #endif | |
| /* Further validity checking of imap specs done in RelCoreInit() | |
| */ | |
| #if (REDCONF_IMAP_EXTERNAL != 0) && (REDCONF_IMAP_EXTERNAL != 1) | |
| #error "Configuration error: REDCONF_IMAP_EXTERNAL must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_IMAP_INLINE != 0) && (REDCONF_IMAP_INLINE != 1) | |
| #error "Configuration error: REDCONF_IMAP_INLINE must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_IMAP_INLINE == 0) && (REDCONF_IMAP_EXTERNAL == 0) | |
| #error "Configuration error: At least one of REDCONF_IMAP_INLINE and REDCONF_IMAP_EXTERNAL must be set" | |
| #endif | |
| #if (REDCONF_OUTPUT != 0) && (REDCONF_OUTPUT != 1) | |
| #error "Configuration error: REDCONF_OUTPUT must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_ASSERTS != 0) && (REDCONF_ASSERTS != 1) | |
| #error "Configuration error: REDCONF_ASSERTS must be either 0 or 1." | |
| #endif | |
| /* REDCONF_BLOCK_SIZE checked in redmacs.h | |
| */ | |
| #if (REDCONF_VOLUME_COUNT < 1U) || (REDCONF_VOLUME_COUNT > 255U) | |
| #error "REDCONF_VOLUME_COUNT must be an integer between 1 and 255" | |
| #endif | |
| /* REDCONF_BUFFER_COUNT lower limit checked in buffer.c | |
| */ | |
| #if REDCONF_BUFFER_COUNT > 255U | |
| #error "REDCONF_BUFFER_COUNT cannot be greater than 255" | |
| #endif | |
| #if (REDCONF_IMAGE_BUILDER != 0) && (REDCONF_IMAGE_BUILDER != 1) | |
| #error "Configuration error: REDCONF_IMAGE_BUILDER must be either 0 or 1." | |
| #endif | |
| #if (REDCONF_CHECKER != 0) && (REDCONF_CHECKER != 1) | |
| #error "Configuration error: REDCONF_CHECKER must be either 0 or 1." | |
| #endif | |
| #endif | |