core: move imported NSS bitmap headers into libnwcore include
All checks were successful
Source release / source-package (push) Successful in 1m7s

This commit is contained in:
Mario Fetka
2026-06-12 13:25:01 +00:00
parent e75cb77a3b
commit c9fe8bce17
7 changed files with 1312 additions and 0 deletions

62
include/core/bitmap.h Normal file
View File

@@ -0,0 +1,62 @@
/****************************************************************************
|
| (C) Copyright 1985, 1991, 1993, 1996 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public
| License as published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but 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, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************
|
| NetWare Advance File Services (NSS) module
|
|---------------------------------------------------------------------------
|
| $Author: randys $
| $Date: 2005-01-11 23:43:47 +0530 (Tue, 11 Jan 2005) $
|
| $RCSfile$
| $Revision: 511 $
|
|---------------------------------------------------------------------------
| This module is used to:
| Function prototypes for NLMs friendly to NSS.
+-------------------------------------------------------------------------*/
#ifndef _NSS_BITMAP_H_
#define _NSS_BITMAP_H_
#ifndef _ZOMNI_H_
# include <zOmni.h>
#endif
typedef struct BitMap_s {
NINT *bits;
NINT max;
NINT start;
} BitMap_s;
extern NINT getMaxBits (BitMap_s *bitMap);
extern BOOL testABit (BitMap_s *bitMap, NINT bitNum);
extern void setAbit (BitMap_s *bitMap, NINT bitNum);
extern void clearAbit(BitMap_s *bitMap, NINT bitNum);
extern void setBits(BitMap_s *bitMap, NINT startBit, NINT numBits);
extern void clearBits(BitMap_s *bitMap, NINT startBit, NINT numBits);
extern NINT countBits(BitMap_s *bitMap);
extern SNINT findBits(BitMap_s *bitMap, NINT bitsNeeded);
extern BitMap_s *newBitMap(BitMap_s *bitMap, NINT numBits);
extern void freeBitMap(BitMap_s *bitMap);
#endif

756
include/core/omni.h Normal file
View File

@@ -0,0 +1,756 @@
/****************************************************************************
|
| (C) Copyright 1985, 1991, 1993, 1996 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public
| License as published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but 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, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************
|
| NetWare Advance File Services (NSS) module
|
|---------------------------------------------------------------------------
|
| $Author: vandana $
| $Date: 2007-04-18 23:26:20 +0530 (Wed, 18 Apr 2007) $
|
| $RCSfile$
| $Revision: 1954 $
|
|---------------------------------------------------------------------------
| This module is used to:
| This is the base INTERNAL include file the contains all of the
| base definitions. This contains information NOT in the SDK.
|
| WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
|
| This header file should ONLY be used for NSS internal development.
| This includes Semantic Agents (SA) and Loadable Storage Services (LSS).
| Any other use may cause conflicts which NSS will NOT fix.
+-------------------------------------------------------------------------*/
#ifndef _OMNI_H_
#define _OMNI_H_
#ifndef _ZOMNI_H_
#include <zOmni.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*-------------------------------------------------------------------------
* The following conditionals define what OS is being built.
* _NWMOAB_
* _NWGREENRIVER_
* The following turns the language enabling macros on
* _LANGUAGEENABLED_
*-------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
* All of the #DEFINES that control conditional compilation in PSS are now
* defined in one place. All of these conditionals are controlled by the
* six main conditionals. One and only one of these conditionals should
* be set to ENABLE. Both uni and multi processor configurations are defined.
*---------------------------------------------------------------------------*/
#ifdef UNOPT
#ifdef MPK
# define NSS_UNI_OPTIMAL DISABLE /* ENABLE for uni-processor production code*/
# define NSS_UNI_DEBUG DISABLE //ENABLE /* ENABLE for development*/
# define NSS_UNI_PREEMPT DISABLE /* ENABLE for uni-proc preemptive env*/
# define NSS_MPK_OPTIMAL DISABLE /* ENABLE for multi-processor production*/
# define NSS_MPK_DEBUG ENABLE /* ENABLE for multi-processor (MP) debugging*/
# define NSS_MPK_FAKE DISABLE /* ENABLE to make a uni-processor fake MP*/
# define NSS_MCCABE DISABLE /* ENABLE to change most macros to functions*/
#else /*!MPK*/
# define NSS_UNI_OPTIMAL DISABLE /* ENABLE for uni-processor production code*/
# define NSS_UNI_DEBUG ENABLE //ENABLE /* ENABLE for development*/
# define NSS_UNI_PREEMPT DISABLE /* ENABLE for uni-proc preemptive env*/
# define NSS_MPK_OPTIMAL DISABLE /* ENABLE for multi-processor production*/
# define NSS_MPK_DEBUG DISABLE /* ENABLE for multi-processor (MP) debugging*/
# define NSS_MPK_FAKE DISABLE /* ENABLE to make a uni-processor fake MP*/
# define NSS_MCCABE DISABLE /* ENABLE to change most macros to functions*/
#endif /*MPK*/
#else /*!UNOPT*/
#ifdef MPK
# define NSS_UNI_OPTIMAL DISABLE //ENABLE /* ENABLE for uni-processor production code*/
# define NSS_UNI_DEBUG DISABLE /* ENABLE for development*/
# define NSS_UNI_PREEMPT DISABLE /* ENABLE for uni-proc preemptive env*/
# define NSS_MPK_OPTIMAL ENABLE //DISABLE /* ENABLE for multi-processor production*/
# define NSS_MPK_DEBUG DISABLE /* ENABLE for multi-processor (MP) debugging*/
# define NSS_MPK_FAKE DISABLE /* ENABLE to make a uni-processor fake MP*/
# define NSS_MCCABE DISABLE /* ENABLE to change most macros to functions*/
#else /*!MPK*/
# define NSS_UNI_OPTIMAL ENABLE //ENABLE /* ENABLE for uni-processor production code*/
# define NSS_UNI_DEBUG DISABLE /* ENABLE for development*/
# define NSS_UNI_PREEMPT DISABLE /* ENABLE for uni-proc preemptive env*/
# define NSS_MPK_OPTIMAL DISABLE //DISABLE /* ENABLE for multi-processor production*/
# define NSS_MPK_DEBUG DISABLE /* ENABLE for multi-processor (MP) debugging*/
# define NSS_MPK_FAKE DISABLE /* ENABLE to make a uni-processor fake MP*/
# define NSS_MCCABE DISABLE /* ENABLE to change most macros to functions*/
#endif /*MPK*/
#endif /*UNOPT*/
#if NSS_UNI_OPTIMAL IS_ENABLED
/*** This is the Production/Release options ***/
/*** Uni-processor only ***/
# undef NSS_MCCABE
# define NSS_MCCABE DISABLE /* Make sure NSS_MCCABE options are disabled*/
# define NSS_DEBUG DISABLE /* disable DEBUG code in NSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT DISABLE /* disable ASSERTS in PSS */
# define LATCH_MACRO ENABLE /* use LATCH macros*/
# define QUE_CHECK DISABLE /* remove QUE debug checks*/
# define QUE_MACRO ENABLE /* use QUE macros*/
# define MEM_KEEP_LIST DISABLE /* don't keep list of allocated memory*/
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE DISABLE /* don't use fake multi-processor code*/
# define MPK_REAL DISABLE /* don't use real multi-processor code*/
# define HISTOGRAM DISABLE /* don't keep histograms*/
# define LOG_TEST DISABLE /* Include undo/redo immediate code. This
* code causes ZLOG to ask for a undo/redo
* or redo/undo to be performed while the
* system is logging transactions. The
* results are then compared against the
* correct answer. If not correct ASSERTs
* are generated.
*/
# define ZLOG_DEBUG DISABLE /* Include ZLOG debug code. This code
* adds debug information to the ZLOG
* Beast and File. For performance reasons
* this should be turned off for release.
*/
# define ZLOG_TEST DISABLE /* Perform simple ZLOG unit tests. This
* must be turned off for release. These
* Tests are only run if /zlog if specified
* when loading the NSS NLM.
*/
# define FMAP_TEST DISABLE /* Test the filemap code by simulating
* large fragmented files.
*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#elif NSS_UNI_DEBUG IS_ENABLED
# define NSS_DEBUG ENABLE /* enable DEBUG code in PSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT ENABLE /* enable ASSERTS in PSS*/
# define LATCH_MACRO DISABLE /* use LATCH functions*/
# define QUE_CHECK ENABLE /* enable QUE debug checks*/
# define QUE_MACRO DISABLE /* use QUE functions*/
# define EVENTQ_MACRO ENABLE /* use EVENTQ macros*/
#if zLINUX
# define MEM_KEEP_LIST DISABLE /* keep list of allocated memory blocks*/
#else
# define MEM_KEEP_LIST ENABLE /* keep list of allocated memory blocks*/
#endif
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE DISABLE /* don't use fake multi-processor code*/
# define MPK_REAL DISABLE /* don't use real multi-processor code*/
# define HISTOGRAM ENABLE /* keep histograms*/
# define LOG_TEST ENABLE /* Include undo/redo immediate code*/
# define ZLOG_DEBUG ENABLE /* Include ZLOG debug code*/
# define ZLOG_TEST ENABLE /* Perform simple ZLOG unit tests*/
# define FMAP_TEST ENABLE /* Perform Filemap Btree tests*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#elif NSS_UNI_PREEMPT IS_ENABLED /* Still need to set flags correctly*/
# define NSS_DEBUG ENABLE /* enable DEBUG code in PSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT ENABLE /* enable ASSERTS in PSS*/
# define LATCH_MACRO DISABLE /* use LATCH functions*/
# define QUE_CHECK ENABLE /* enable QUE debug checks*/
# define QUE_MACRO DISABLE /* use QUE functions*/
# define EVENTQ_MACRO ENABLE /* use EVENTQ macros*/
#if zLINUX
# define MEM_KEEP_LIST DISABLE /* keep list of allocated memory blocks*/
#else
# define MEM_KEEP_LIST ENABLE /* keep list of allocated memory blocks*/
#endif
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE DISABLE /* don't use fake multi-processor code*/
# define MPK_REAL DISABLE /* don't use real multi-processor code*/
# define HISTOGRAM ENABLE /* keep histograms*/
# define LOG_TEST ENABLE /* Include undo/redo immediate code*/
# define ZLOG_DEBUG ENABLE /* Include ZLOG debug code*/
# define ZLOG_TEST ENABLE /* Perform simple ZLOG unit tests*/
# define FMAP_TEST ENABLE /* Perform Filemap Btree tests*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#elif NSS_MPK_OPTIMAL IS_ENABLED
/*** This is the Production/Release options ***/
/*** MPK only ***/
# undef NSS_MCCABE
# define NSS_MCCABE DISABLE /* Make sure NSS_MCCABE options are disabled*/
# define NSS_DEBUG DISABLE /* disable DEBUG code in PSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT DISABLE /* disable ASSERTS in PSS */
# define LATCH_MACRO ENABLE /* use LATCH macros*/
# define QUE_CHECK DISABLE /* remove QUE debug checks*/
# define QUE_MACRO ENABLE /* use QUE macros*/
# define EVENTQ_MACRO ENABLE /* use EVENTQ macros*/
# define MEM_KEEP_LIST DISABLE /* don't keep list of allocated memory*/
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE DISABLE /* don't use fake multi-processor code*/
# define MPK_REAL ENABLE /* use real multi-processor code*/
# define HISTOGRAM DISABLE /* don't keep histograms*/
# define LOG_TEST DISABLE /* Include undo/redo immediate code*/
# define ZLOG_DEBUG DISABLE /* Include ZLOG debug code*/
# define ZLOG_TEST DISABLE /* Perform simple ZLOG unit tests*/
# define FMAP_TEST DISABLE /* Perform Filemap Btree tests*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#elif NSS_MPK_DEBUG IS_ENABLED
# define NSS_DEBUG ENABLE /* enable DEBUG code in PSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT ENABLE /* enable ASSERTS in PSS*/
# define LATCH_MACRO DISABLE /* use LATCH functions*/
# define QUE_CHECK ENABLE /* enable QUE debug checks*/
# define QUE_MACRO DISABLE /* use QUE functions*/
# define EVENTQ_MACRO ENABLE /* use EVENTQ macros*/
#if zLINUX
# define MEM_KEEP_LIST DISABLE /* keep list of allocated memory blocks*/
#else
# define MEM_KEEP_LIST ENABLE /* keep list of allocated memory blocks*/
#endif
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE DISABLE /* don't use fake multi-processor code*/
# define MPK_REAL ENABLE /* use real multi-processor code*/
# define HISTOGRAM ENABLE /* keep histograms*/
# define LOG_TEST ENABLE /* Include undo/redo immediate code*/
# define ZLOG_DEBUG ENABLE /* Include ZLOG debug code*/
# define ZLOG_TEST ENABLE /* Perform simple ZLOG unit tests*/
# define FMAP_TEST ENABLE /* Perform Filemap Btree tests*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#elif NSS_MPK_FAKE IS_ENABLED
# define NSS_DEBUG ENABLE /* enable DEBUG code in PSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT ENABLE /* enable ASSERTS in PSS*/
# define LATCH_MACRO DISABLE /* use LATCH functions*/
# define QUE_CHECK ENABLE /* enable QUE debug checks*/
# define QUE_MACRO DISABLE /* use QUE functions*/
# define EVENTQ_MACRO ENABLE /* use EVENTQ macros*/
#if zLINUX
# define MEM_KEEP_LIST DISABLE /* keep list of allocated memory blocks*/
#else
# define MEM_KEEP_LIST ENABLE /* keep list of allocated memory blocks*/
#endif
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE ENABLE /* use fake multi-processor code*/
# define MPK_REAL DISABLE /* don't use real multi-processor code*/
# define HISTOGRAM ENABLE /* keep histograms*/
# define LOG_TEST ENABLE /* Include undo/redo immediate code*/
# define ZLOG_DEBUG ENABLE /* Include ZLOG debug code*/
# define ZLOG_TEST ENABLE /* Perform simple ZLOG unit tests*/
# define FMAP_TEST ENABLE /* Perform Filemap Btree tests*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#elif NSS_MCCABE IS_ENABLED
# define NSS_DEBUG DISABLE /* disable DEBUG code in PSS*/
# define NSS_DEBUG_OPT ENABLE /* ENABLE for debugging optimised code*/
# define NSS_ASSERT DISABLE /* disable ASSERTS in PSS*/
# define LATCH_MACRO DISABLE /* use LATCH functions*/
# define QUE_CHECK DISABLE /* remove QUE debug checks*/
# define QUE_MACRO DISABLE /* use QUE functions*/
# define EVENTQ_MACRO DISABLE /* use EVENTQ functions*/
# define MEM_KEEP_LIST DISABLE /* don't keep list of allocated memory*/
# define ZTREE_DEBUG DISABLE /* use only to debug ztree code*/
# define MPK_FAKE DISABLE /* ignore multi-processor code*/
# define MPK_REAL DISABLE /* ignore multi-processor code*/
# define HISTOGRAM DISABLE /* don't keep histograms*/
# define LOG_TEST DISABLE /* Include undo/redo immediate code*/
# define ZLOG_DEBUG DISABLE /* don't include ZLOG debug code*/
# define ZLOG_TEST DISABLE /* don't perform simple ZLOG unit tests*/
# define FMAP_TEST DISABLE /* Perform Filemap Btree tests*/
# define BLKNUM_64 DISABLE /* Use 64 bit block numbers*/
#else
#error "One and only one configuration should be enabled"
#endif
/* Defining the following adds debug information to RootBeast to keep track
* of the useCounts of the beasts. This is useful in finding rogue useCounts.
*/
// #define DEBUG_BEAST_USE_COUNT
/*---------------------------------------------------------------------------
* Global settings that are independent of different builds
*---------------------------------------------------------------------------*/
#ifdef __linux__
#define _FSHOOKS DISABLE
#else
#define _FSHOOKS ENABLE
#endif
#ifdef _LANGUAGEENABLED_
# define NSS_MSG_TAGS ENABLE
#else
# define NSS_MSG_TAGS DISABLE
#endif
/*-------------------------------------------------------------------------
* Global type definitions
*-------------------------------------------------------------------------*/
#undef TRUE
#undef FALSE
#undef NULL
#undef EOF
//#undef OK
//#undef FAILURE
//#undef SUCCESS
#undef zMIN
#undef zMAX
#undef SET_BIT
#undef CLR_BIT
#undef TST_BIT
#undef ALIGN
#undef UNUSED_PARAM
#undef PAGE_SHIFT
#undef PAGE_SIZE
#undef STATIC
#undef CONST
#define TRUE 1 /* Though TRUE is really non-zero, we use this
* definition for pseudo boolean expressions
*/
#define FALSE 0
#define NULL 0
#define EOF -1
#if NSS_DEBUG IS_ENABLED
#define STATIC /* don't really do "static" for now (messes up debugger)*/
#else
#define STATIC /* Static makes it hard to profile code */
#endif
#define CONST /* don't really do "const" for now (it messes up the src debugger)*/
#define UNUSED_PARAM(_x) (_x = _x)
#define QUAD_GT_LONG(quadValue) (quadValue > 0xffffffff)
/*-------------------------------------------------------------------------
* Typedefs for basic types
*-------------------------------------------------------------------------*/
#ifndef unisizeof
# define unisizeof(buf) (sizeof((buf))/sizeof(unicode_t)) /* get size of buffer in UNICODE chars*/
#endif
#ifndef _CFS_T
#define _CFS_T
typedef NINT CFS_t; /* holds the Compressed File Size (CFS)*/
#endif
#ifndef _SIZE_T
# include <size_t.h>
#endif
#if BLKNUM_64 IS_ENABLED
typedef SQUAD Blknum_t; /* Block numbers */
typedef QUAD uBlknum_t; /* Pool Block numbers */
#else
typedef SLONG Blknum_t; /* Block numbers (cache code requires negative numbers) */
typedef LONG uBlknum_t; /* Pool Block numbers ('area size' code requires 0x80000000 to be positive) */
#endif
typedef Blknum_t Blkcnt_t; /* Used to hold a count of block numbers */
typedef char ObjName_t[16]; /* Used for name field in objects for debugging*/
/*---------------------------------------------------------------------------
* Sequence Numbers have the property that they monotonically increase
* and can be compared even after they wrap. Zero, 0, has been reserved
* as invalid. They are used for transactions and log sequence numbers.
*
* Use the following macros to compare Sequence Numbers.
* They work correctly for numbers that wrap.
*
* SEQ_GT(x, y) is true if x comes after y by less than 0x80000000.
* 0x80000000 > 0x7fffffff
* 0x00000001 > 0xffffffff
*---------------------------------------------------------------------------*/
#define SEQ_GT(_x, _y) (((Seq_t)((_x) - (_y))) > 0)
#define SEQ_LT(_x, _y) (((Seq_t)((_x) - (_y))) < 0)
#define SEQ_GE(_x, _y) (((Seq_t)((_x) - (_y))) >= 0)
#define SEQ_LE(_x, _y) (((Seq_t)((_x) - (_y))) <= 0)
#define SEQ_INVALID 0
#define SEQ_INC(_x) ((++(_x) == SEQ_INVALID) ? ((_x) = SEQ_INVALID + 1) : (_x))
/*---------------------------------------------------------------------------
* Log sequence numbers are defined to never repeat
*---------------------------------------------------------------------------*/
typedef QUAD Lsn_t;
#define MAX_LSN 0xffffffffffffffff /* All LSNs will be less than
* this (~(QUAD)0)
*/
/*---------------------------------------------------------------------------
* Event counters are synchronization primitives. They can only be incremented
* (never decremented). They are typically used in pairs, the reader incrementing
* one and the other incremented by the writer. They rely on atomic writes
* and if used with multiple readers/writers will need atomic increment.
* Even counters must be aligned on SNINT boundaries. Event counters use the
* same primitives for comparisons has sequence numbers but increment is
* the same as other integers unless we are in a multi-reader/writer environment
* where we will need an atomic increment. The first environment we are looking
* at is for a single reader/writer.
*---------------------------------------------------------------------------*/
typedef struct EventCounter_s
{
Seq_t in; /* The event counter incremented when entering a
* critical section.
*/
Seq_t out; /* Event counter incremented to synchronize */
} EventCounter_s;
#define EV_INIT(_x) ((_x).in = (_x).out = 1)
#define EV_IN(_x) (++((_x).in))
#define EV_OUT(_x) (++((_x).out))
#define EV_EQ(_x) ((_x).in == (_x).out)
#define EV_NE(_x) ((_x).in != (_x).out)
#define EV_CHG(_x) (((_x).in - (_x).out) == 1) /* If after doing an EV_IN
* this relation is still
* true, then we went from
* the empty to the not
* empty state and may
* want to do something
* about it.
* Could use == 0 if done
* before operation.
*/
#define EV_GT(_x, _y) SEQ_GT(_x, _y)
#define EV_LT(_x, _y) SEQ_LT(_x, _y)
#define EV_GE(_x, _y) SEQ_GE(_x, _y)
#define EV_LE(_x, _y) SEQ_LE(_x, _y)
/*-------------------------------------------------------------------------
* Name_t is a standard way of assigning a name to an entity or object.
* The name is guaranteed to be null terminated. Need to include <string.h>
* to use COPY_NAME.
*-------------------------------------------------------------------------*/
#define MAX_NAME 16
typedef char Name_t[MAX_NAME];
#define COPY_NAME(_target, _name) \
{ \
strncpy((_target), (_name), MAX_NAME); \
(_target)[MAX_NAME-1] = '\0'; \
}
/*-------------------------------------------------------------------------
* Macros for finding min and max. Be careful that the values plugged in
* for x and y do not have any side affects.
*-------------------------------------------------------------------------*/
#define zMIN(_x_, _y_) (((_x_) < (_y_)) ? (_x_) : (_y_))
#define zMAX(_x_, _y_) (((_x_) > (_y_)) ? (_x_) : (_y_))
#define ALIGN(_x_, _p_) (((_x_) + (_p_) - 1) & ~((_p_) - 1))
#define FLOOR(_x_, _p_) ((_x_) - ((_x_) % (_p_)))
#define FLOOR2(_x_, _shift_) (((_x_) >> (_shift_)) << (_shift_))
#define CEILING(_x_, _p_) (FLOOR((_x_) - 1 + (_p_), (_p_)))
#define MASK(startbit, numbits) (((1 << (numbits)) - 1) << (startbit))
/*-------------------------------------------------------------------------
* Macro for determining number of elements in an array. Can only
* be used for 'local' arrays. Arrays that are only known by the
* EXTERN have an unknown sizeof.
*-------------------------------------------------------------------------*/
#define NELEMS(_array) ( sizeof(_array) / sizeof(_array[0]) )
/*-------------------------------------------------------------------------
* Bitmap manipulation instructions. The macros take a bit vector that
* is composed of an array of NINTs for the first argument and a bit
* number in that array for the second argument.
* TST_BIT tests if the bit has been set
* SET_BIT sets the specified bit
* CLR_BIT clears the specified bit
* XOT_BIT complements the specified bit
*-------------------------------------------------------------------------*/
#ifdef i386
#define NINTBITS 5 /* log 2 bits per NINT */
#endif
#ifdef __x86_64__
#define NINTBITS 6 /* log 2 bits per NINT */
#endif
#if (BITS_PER_NINT != (1 << NINTBITS))
#error "BITS_PER_NINT doesn't match NINTBITS"
#endif
#define NINTMASK (BITS_PER_NINT - 1)
#define TST_BIT(_v_, _n_) ((((NINT *)(_v_))[(_n_)>>NINTBITS]) \
& ((NINT)1<<((_n_) & NINTMASK)))
#define SET_BIT(_v_, _n_) ((((NINT *)(_v_))[(_n_)>>NINTBITS]) \
|= ((NINT)1<<((_n_) & NINTMASK)))
#define CLR_BIT(_v_, _n_) ((((NINT *)(_v_))[(_n_)>>NINTBITS]) \
&= (~((NINT)1<<((_n_) & NINTMASK))))
#define XOR_BIT(_v_, _n_) ((((NINT *)(_v_))[(_n_)>>NINTBITS]) \
^= ((NINT)1<<((_n_) & NINTMASK)))
#define SIZE_BIT_MAP(_n_) (CEILING(_n_, BITS_PER_NINT)/BITS_PER_NINT)
/*-------------------------------------------------------------------------
* Macro for placing assertions in your code.
* ASSERT - if the expression is not true, AssertError is called which
* stops the system.
* WARN - same as assert but just prints a warning and only prints that
* warning once. Useful for problems that need to be fixed but
* are not fatal at this time. Unlike ASSERT, WARN can not be
* used in an expression.
*------------------------------------------------------------------------*/
extern int DBG_AssertError(char *);
extern int DBG_AssertError_MP(char *);
extern int DBG_AssertErrorStub(void);
extern int DBG_AssertWarning(char *, int *);
extern void EnterDebugger(void);
extern int DBG_DebugBreak;
void seedRandQuad (SQUAD x);
#if NSS_ASSERT IS_ENABLED
#if zNETWARE || (zLINUX && defined(__KERNEL__))
#define zASSERT(_e_) \
((void)((_e_) || (DBG_AssertError(WHERE " (" # _e_ ")"), \
(DBG_DebugBreak && (EnterDebugger(), DBG_AssertErrorStub())))))
#define ASSERTMP(_e_) \
((void)((_e_) || (DBG_AssertError_MP(WHERE " (" # _e_ ")"), \
(DBG_DebugBreak && (EnterDebugger(), DBG_AssertErrorStub())))))
#define WARN(_e_) \
{ \
static int numWarnings = 0; \
((void)((_e_) || DBG_AssertWarning(WHERE " (" # _e_ ")", &numWarnings))); \
}
#else
/* Linux user space - use printf? */
#define zASSERT(_e_) ((void) 0)
#define zASSERTMP(_e_) ((void) 0)
#define WARN(_e_) ((void) 0)
#endif
#else
#define zASSERT(_e_) ((void) 0)
#define zASSERTMP(_e_) ((void) 0)
#define WARN(_e_) ((void) 0)
#endif
/*-------------------------------------------------------------------------
* This macro will ASSERT if interrupts are not enabled.
*-------------------------------------------------------------------------*/
#if ((MPK_REAL IS_DISABLED) && (NSS_DEBUG IS_ENABLED))
#define CHECK_INTERRUPTS() zASSERT(IntsEnabled());
#else
#define CHECK_INTERRUPTS()
#endif
/*---------------------------------------------------------------------------
* This is a special macro we use to make variable length arrays visible
* in the source level debugger.
*---------------------------------------------------------------------------*/
#if NSS_DEBUG IS_ENABLED
# define DEBUG_VISIBLE_IDX 128
# define DEBUG_VISIBLE_VALUE 128
#else
# ifdef __linux__
# define DEBUG_VISIBLE_IDX 0
# else
# define DEBUG_VISIBLE_IDX
# endif
# define DEBUG_VISIBLE_VALUE 0
#endif
/*-------------------------------------------------------------------------
* Page size definitions
*-------------------------------------------------------------------------*/
#if defined(PAGE_SHIFT) || defined(PAGE_SIZE) || defined(PAGE_MASK) || defined(PAGES_PER_PAGE)
#undef PAGE_SHIFT
#undef PAGE_SIZE
#undef PAGE_MASK
#undef PAGES_PER_PAGE
#endif
#define PAGE_SHIFT 12 /* this is for 4K pages*/
#define PAGE_SIZE (1<<PAGE_SHIFT)
#define PAGE_MASK (PAGE_SIZE-1)
#define PAGES_PER_PAGE 1 /* defines how many real pages are in one of our pages*/
/*-------------------------------------------------------------------------
* This contains all of the macros necessary to support Novell's Language
* enabling model. This model has utilities that scan the source files
* and update msg macros of the syntax:
* xxxxxxMSG("string",idx)
* where "xxxxxx" may be anything or not there.
*
* These utilities put the "string" information into an external database
* and then update the source code with the proper IDX value to access that
* string. This is all well defined and wellknown constructs.
*
* You should use the following macros for the following purposses:
* MSG(s,id) for strings you want to be translated
* MSGNot(s) for strings you do NOT want to be translated
* MSGNew(s,id) for new strings to be translated
* MSGChg(s,id) for changed strings to be translated
*
* We also support msg enabled strings in structures inited an compile time.
* You must used the "LangEnabledStruct_s" where you want one of the strings
* and then use the following macros to set and access the values:
* StructMSG(s,id) for strings you want to be translated
* StructMSGNot(s) for strings you do NOT want to be translated
* StructMSGNull() when you want to assign a NULL string to this field
* StructGetMSGStr(les) use this to extract the correct string out of the structure
*-------------------------------------------------------------------------*/
/* Strings Tagged? */
#undef MSG
#undef InxMSG
#undef TxtMSG
extern char **NSSMessageTable; /* the message table for NSS */
/* Structure used to supported compile time inited structure that contain
* languaged enabled strings */
typedef struct LangEnabledStruct_s
{
NINT le_idx; /* contains language enabled index */
char *le_str; /* contains pointer to string */
} LangEnabledStruct_s;
#if NSS_MSG_TAGS IS_ENABLED /* Language Enabling turned ON */
/*
* have a language enabled string
*/
#if !defined(USER_CRAIG) && !defined(USER_JOWENS) && !defined(USER_GPACHNER) && !defined(USER_GPACHNER2) /* This allows us to skip message updates in debug builds */
# define MSG(s,id) (NSSMessageTable[(id)])
#else
# define MSG(s,id) s
#endif
/*
* have a string to NOT language enable
*/
# define MSGNot(s) s
# define MSGNew(s,id) id ? " msg # must be zero " : s
# define MSGChg(s,id) id ? s : " msg # must be non-zero "
# define InxMSG(s,id) id
//# define TxtMSG(s,id) s
/*
* have a language enabled string in a structure
*/
#if !defined(USER_JOWENS) && !defined(USER_GPACHNER) && !defined(USER_GPACHNER2) /* This allows us to skip message updates in debug builds */
# define StructMSG(s,id) {id,NULL}
#else
# define StructMSG(s,id) {0,s}
#endif
/*
* have a string to NOT language enable in a structure
*/
# define StructMSGNot(s) {0,s}
# define StructMSGNew(s,id) {id,s}
# define StructMSGChg(s,id) {id,s}
/*
* have a NULL string in a language enabled structure
*/
# define StructMSGNull() {0,NULL}
/*
* get the string from a language enabled structure
*/
# define StructGetMSGStr(les) \
(((les).le_idx != 0) ? NSSMessageTable[(les).le_idx] : (les).le_str)
/*
* get the string from a language enabled structure
*/
# define StructGetMSGStrWithTable(les,msgtbl) \
(((les).le_idx != 0) ? (msgtbl)[(les).le_idx] : (les).le_str)
/*
* MACRO used if you got an error loading the MESSAGe tables, only does
* something if language enabling is turned on
*/
# define ERROR_LOADING_MSG_TABLES(errorScreen) \
{ \
OutputToScreen(errorScreen, \
MSGNot("\nError loading message table\n")); \
}
#else /* Language Enabling turned OFF */
# define MSG(s,id) s
# define MSGNot(s) s
# define MSGNew(s,id) s
# define MSGChg(s,id) s
# define InxMSG(s,id) id
/*# define TxtMSG(s,id) s*/
# define StructMSG(s,id) {0,s}
# define StructMSGNot(s) {0,s}
# define StructMSGNew(s,id) {0,s}
# define StructMSGChg(s,id) {0,s}
# define StructMSGNull() {0,NULL}
# define StructGetMSGStr(les) ((les).le_str)
# define StructGetMSGStrWithTable(les,msgtbl) ((les).le_str)
# define ERROR_LOADING_MSG_TABLES(errorScreen)
#endif
/*
* MACRO to get a pointer to the beginning of a structure from
* a pointer to a field in the sturcture.
* USAGE:
* {
* DQlink_t *abc = &Xyzzy.link;
* Xyz_s *efg;
*
* efg = STRUCT(abc, Xyz_s, link);
* }
*/
#define STRUCT(item, type, linkField) \
((type *)(((ADDR)(item)) - offsetof(type, linkField)))
/*---------------------------------------------------------------------------
* There are some unnecessary warnings coming out of the WATCOM compiler,
* disable those warnings.
*---------------------------------------------------------------------------*/
#ifdef _WATCOMC_
#pragma disable_message(124); /* disable this warning number */
#endif
#ifdef __cplusplus
}
#endif
#endif /* _OMNI_H_ */

70
include/core/size_t.h Normal file
View File

@@ -0,0 +1,70 @@
/****************************************************************************
|
| (C) Copyright 1985, 1991, 1993, 1996 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public
| License as published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but 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, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************
|
| NetWare Advance File Services (NSS) module
|
|---------------------------------------------------------------------------
|
| $Author: taysom $
| $Date: 2004-12-31 01:10:58 +0530 (Fri, 31 Dec 2004) $
|
| $RCSfile$
| $Revision: 465 $
|
|---------------------------------------------------------------------------
| This module is used to:
| NSS Library Routine
|
| WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
|
| This header file should ONLY be used for NSS internal development.
| This includes Semantic Agents (SA) and Loadable Storage Services (LSS).
| Any other use may cause conflicts which NSS will NOT fix.
+-------------------------------------------------------------------------*/
/* size_t - Type returned from sizeof */
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _SIZE_T
# define _SIZE_T
# define _SIZE_T_DEFINED
# define _SIZE_T_DEFINED_
# define _BSD_SIZE_T_DEFINED_
# ifdef BSD_UNIX
# ifdef _MACHINE_ANSI_H_
# ifdef _BSD_SIZE_T_
typedef _BSD_SIZE_T_ size_t;
# undef _BSD_SIZE_T_
# endif
# else
typedef unsigned size_t;
# endif
# else
typedef unsigned size_t;
# endif
#endif
#ifdef __cplusplus
}
#endif

333
include/core/zOmni.h Normal file
View File

@@ -0,0 +1,333 @@
/****************************************************************************
|
| (C) Copyright 2001 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public
| License as published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but 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, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************
|
| NetWare Advance File Services (NSS) module
|
|---------------------------------------------------------------------------
|
| $Author: taysom $
| $Date: 2008-02-22 03:42:49 +0530 (Fri, 22 Feb 2008) $
|
| $RCSfile$
| $Revision: 2283 $
|
|---------------------------------------------------------------------------
| This module is used to:
| This is the root include file for NSS that exists inside the SDK
+-------------------------------------------------------------------------*/
#ifndef _ZOMNI_H_
#define _ZOMNI_H_
#ifndef _ZWHERE_H_
#include <zWhere.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __GNUC__
#define NSS_MEDIA_STRUCTURE(_structure,_lastItem) __attribute__((packed))
#define NSS_MEDIA_UNION(_union,_lastItem) __attribute__((packed))
#else
#define NSS_MEDIA_STRUCTURE(_structure,_lastItem)
#define NSS_MEDIA_UNION(_union,_lastItem)
#endif
/*-------------------------------------------------------------------------
* Used to enable/disable various pieces of code. These macros have
* the advantage over normal ifdefs in that you have to either
* specifically enable or disable the code, otherwise, you get a
* syntax error from the preprocessor.
*
* Example: (see que.h for an actual case)
*
* #define FEATURE ENABLE
* #if FEATURE IS_ENABLED
* ... code ...
* #endif
*-------------------------------------------------------------------------*/
#define ENABLE (1
#define DISABLE (0
#define IS_ENABLED ==1)
#define IS_DISABLED ==0)
/*---------------------------------------------------------------------------
* Global settings that are independent of different builds
*---------------------------------------------------------------------------*/
#define NSS_64BIT_SUPPORT ENABLE
/*-------------------------------------------------------------------------
* Global type definitions
*-------------------------------------------------------------------------*/
#undef BYTE
#undef WORD
#undef LONG
#undef SLONG
#undef QUAD
#undef ADDR
#define zNILXID ((Xid_t)0)
/*-------------------------------------------------------------------------
* Typedefs for quads. Had to add quad_t because UNIX uses _QUAD_T.
*-------------------------------------------------------------------------*/
#ifndef _QUAD_T
#define _QUAD_T
# if NSS_64BIT_SUPPORT IS_ENABLED
# if defined(__GNUC__) || defined(__MWERKS__)
typedef unsigned long long QUAD;
# else
typedef unsigned __int64 QUAD;
# endif
# else
typedef unsigned int QUAD;
# endif
#endif
//#if !defined(__UQUAD_TYPE) && !defined(__u_char_defined)
// typedef QUAD quad_t;
//#endif
#ifndef _SQUAD_T
#define _SQUAD_T
# if NSS_64BIT_SUPPORT IS_ENABLED
# if defined(__GNUC__) || defined(__MWERKS__)
typedef long long SQUAD;
# else
typedef __int64 SQUAD;
# endif
# else
typedef signed int SQUAD;
# endif
#endif
/*-------------------------------------------------------------------------
* Typedefs for basic types
*-------------------------------------------------------------------------*/
#ifndef _BYTE_T
#define _BYTE_T
#ifndef MPK_H
typedef unsigned char BYTE; /* 8 bit unsigned data item */
#endif
#endif
#ifndef _WORD_T
#define _WORD_T
#ifndef MPK_H
typedef unsigned short WORD; /* 16 bit unsigned data item */
#endif
#endif
#ifndef _LONG_T
#define _LONG_T
#ifndef MPK_H
typedef unsigned int LONG; /* 32 bit unsigned data item */
#endif
#endif
#ifndef _NINT_T
#define _NINT_T
typedef unsigned long NINT; /* Unsigned native data item */
#endif
#ifndef _SBYTE_T
#define _SBYTE_T
typedef signed char SBYTE; /* 8 bit signed data item */
#endif
#ifndef _SWORD_T
#define _SWORD_T
typedef signed short SWORD; /* 16 bit signed data item */
#endif
#ifndef _SLONG_T
#define _SLONG_T
typedef signed int SLONG; /* 32 bit signed data item */
#endif
#ifndef _SNINT_T
#define _SNINT_T
typedef signed long SNINT; /* Signed native data item */
#endif
#ifndef _ADDR_T
#define _ADDR_T
#ifndef MPK_H
typedef unsigned long ADDR; /* Arithmetic type that can hold a pointer */
#endif
#endif
#ifndef _SADDR_T
#define _SADDR_T
typedef long SADDR; /* Signed Arithmetic type for a pointer */
#endif
#ifndef _BOOL_T
#define _BOOL_T
typedef NINT BOOL; /* 0 means FALSE, NON-0 means TRUE*/
#endif
#ifndef _UNICODE_T
#define _UNICODE_T
typedef unsigned short unicode_t; /* A UNICODE (UTF-16) character */
#endif
#ifndef _UTF8_T
#define _UTF8_T
typedef char utf8_t; /* a UTF-8 character */
#endif
#if defined(linux) || defined(__MWERKS__)
# define UI64_CONST(c) c##ULL
# define I64_CONST(c) c##LL
#else
# define UI64_CONST(c) c##UI64
# define I64_CONST(c) c##I64
#endif
/*-------------------------------------------------------------------------
* In NSS we have the model that functions do NOT return actual error codes.
* They only return zOK and zFAILURE. The real error status is returned in
* the "errno" field of the "GeneralMsg_s" structure. When looking at the
* function return value you must ONLY compare to zOK. Comparing to anything
* else is invalid.
*-------------------------------------------------------------------------*/
typedef signed int STATUS; /* the type for return status values*/
#define zOK 0 /* the operation succeeded.*/
#define zFAILURE -1 /* the operation failed*/
/*---------------------------------------------------------------------------
* Number of bits in each of the various base data sizes
*---------------------------------------------------------------------------*/
#define BITS_PER_BYTE 8
#define BITS_PER_WORD 16
//PJT#define BITS_PER_LONG 32
#define BITS_PER_QUAD 64
#ifdef i386
#define BITS_PER_NINT 32
#define BITS_PER_ADDR 32
#endif
#ifdef __x86_64__
#define BITS_PER_NINT 64
#define BITS_PER_ADDR 64
#endif
typedef QUAD Zid_t; /* Znode identifiers*/
typedef struct GUID_t /* holds GUIDs*/
{
LONG timeLow;
WORD timeMid;
WORD timeHighAndVersion;
BYTE clockSeqHighAndReserved;
BYTE clockSeqLow;
BYTE node[6];
} NSS_MEDIA_STRUCTURE(GUID_t,node[6]) GUID_t;
typedef unsigned long DomainID_t; /* domain for object ids from directory services */
typedef GUID_t VolumeID_t; /* holds a volume ID*/
typedef GUID_t NDSid_t; /* NDS 128 bit ID*/
typedef NDSid_t UserID_t;
typedef SQUAD Key_t; /* holds a key */
/*
* External representation of a token. A token or capability
* is a persistent ID for a file, directory, extended attribute, etc.
* Even though it is an array, we encapsulate it in a structure
* so when we pass it, we can take its address so that it looks
* like we are passing by reference.
*/
#define SIZE_TOKEN 8 /* Size is in QUADs so that it ends up
* quad aligned.
*/
typedef struct Token_t
{
QUAD token[SIZE_TOKEN];
} Token_t;
typedef LONG Time_t; /* Universal Time Coordinated (UTC)
* Time in seconds from January 1, 1970
* Time_t is placed on media so it must
* be a fixed size (ie LONG (4 bytes)).
* When time_t becomes 64 bits we will
* have to make changes
*/
typedef unsigned long DOSTime_t; /* Time in DOS format, kept in local time
* set to INVALID_TIME if not valid (must
* be converted from UTC time).
*/
typedef SQUAD MSTime_t; /* Time in CIFS SMB format, signed 64 bit
* value which stores the number of 100ns
* intervals from January 1, 1601
*/
typedef QUAD Xid_t; /* transaction ID*/
#ifdef __cplusplus
typedef void (*voidfunc_t)(...); /* generic void function definition*/
typedef STATUS (*statusfunc_t)(...);/* generic STATUS return value function definitions*/
typedef LONG (*longfunc_t)(...); /* generic LONG return value function definition*/
typedef BOOL (*boolfunc_t)(...); /* generic BOOL return value function definition*/
#else
typedef void (*voidfunc_t)(); /* generic void function definition*/
typedef STATUS (*statusfunc_t)(); /* generic STATUS return value function definitions*/
typedef LONG (*longfunc_t)(); /* generic LONG return value function definition*/
typedef BOOL (*boolfunc_t)(); /* generic BOOL return value function definition*/
#endif
/*---------------------------------------------------------------------------
* Sequence Numbers have the property that they monotonically increase
* and can be compared even after they wrap. Zero, 0, has been reserved
* as invalid. They are used for transactions and log sequence numbers.
*
* Use the following macros to compare Sequence Numbers.
* They work correctly for numbers that wrap.
*
* SEQ_GT(x, y) is true if x comes after y by less than 0x80000000.
* 0x80000000 > 0x7fffffff
* 0x00000001 > 0xffffffff
*---------------------------------------------------------------------------*/
typedef SLONG Seq_t; /* Sequence number */
/*-------------------------------------------------------------------------
* This defines the sizes that name strings can be in the system. Note
* that these are the sizes of the buffers that hold these string which
* include room for a NULL. You should compare and individual string length
* with one less then these numbers.
*-------------------------------------------------------------------------*/
#define zMAX_COMPONENT_NAME 256 /* maximum length of an individual component of
* a file name string (like a directory/file
* name) */
#define zMAX_FULL_NAME 1024 /* maximum length of a fully qualified file
* name string. This must be
* >= zMAX_COMPONENT_NAME */
#ifdef __cplusplus
}
#endif
#endif /* _ZOMNI_H_ */

68
include/core/zWhere.h Normal file
View File

@@ -0,0 +1,68 @@
/****************************************************************************
|
| (C) Copyright 2006 Novell, Inc.
| All Rights Reserved.
|
| This program is free software; you can redistribute it and/or
| modify it under the terms of version 2 of the GNU General Public
| License as published by the Free Software Foundation.
|
| This program is distributed in the hope that it will be useful,
| but 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, contact Novell, Inc.
|
| To contact Novell about this file by physical or electronic mail,
| you may find current contact information at www.novell.com
|
|***************************************************************************
|
| NetWare Advance File Services (NSS) module
|
|---------------------------------------------------------------------------
|
| $Author: blarsen $
| $Date: 2006-11-14 16:27:17 -0700 (Tue, 14 Nov 2006) $
|
| $RCSfile$
| $Revision: 1644 $
|
|---------------------------------------------------------------------------
| This module is used to:
| Define the WHERE macro for printing file and line number.
+-------------------------------------------------------------------------*/
#ifndef _ZWHERE_H_
#define _ZWHERE_H_ 1
/*-------------------------------------------------------------------------
* MAGIC_STRING lets the preprocessor convert an integer to a string
* MAKE_STRING provides the level indirection need to fake out the
* the preprocessor
* WHERE a string with both the file name and line number concatenated
* into a single string
*-------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
#undef MAGIC_STRING
#undef MAKE_STRING
#undef WHERE
#define MAGIC_STRING(_x_) # _x_
#define MAKE_STRING(_x_) MAGIC_STRING(_x_)
#ifdef FNAM_
#define WHERE FNAM_ "[" MAKE_STRING(__LINE__) "]"
#else
#define WHERE __FILE__ "[" MAKE_STRING(__LINE__) "]"
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -31,6 +31,26 @@ configure_file(
"${CMAKE_SOURCE_DIR}/include/core/core.h"
"${NWCORE_BUILD_INCLUDE_DIR}/core.h"
COPYONLY)
configure_file(
"${CMAKE_SOURCE_DIR}/include/core/zWhere.h"
"${NWCORE_BUILD_INCLUDE_DIR}/zWhere.h"
COPYONLY)
configure_file(
"${CMAKE_SOURCE_DIR}/include/core/zOmni.h"
"${NWCORE_BUILD_INCLUDE_DIR}/zOmni.h"
COPYONLY)
configure_file(
"${CMAKE_SOURCE_DIR}/include/core/omni.h"
"${NWCORE_BUILD_INCLUDE_DIR}/omni.h"
COPYONLY)
configure_file(
"${CMAKE_SOURCE_DIR}/include/core/bitmap.h"
"${NWCORE_BUILD_INCLUDE_DIR}/bitmap.h"
COPYONLY)
configure_file(
"${CMAKE_SOURCE_DIR}/include/core/size_t.h"
"${NWCORE_BUILD_INCLUDE_DIR}/size_t.h"
COPYONLY)
configure_file(
"${NWCORE_ZLOG_DIR}/src/zlog.h"
"${NWCORE_BUILD_INCLUDE_DIR}/zlog.h"
@@ -70,6 +90,7 @@ target_include_directories(nwcore
"$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
PRIVATE
"${CMAKE_SOURCE_DIR}/include/core"
"${NWCORE_ZLOG_DIR}/src"
"${NWCORE_YYJSON_DIR}/src")

View File

@@ -49,6 +49,8 @@
#define zalloc(_bytes) calloc(1, (_bytes))
#endif
/* Direct core imports of the original NSS headers; reference copies remain
* under include/nwfs/nss/sdk/... for SDK/source-audit compatibility. */
#include "omni.h"
#include "bitmap.h"