You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
318 lines
12 KiB
C
318 lines
12 KiB
C
10 years ago
|
/* ----> 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
|
||
|
|
||
|
|