2
* PROGRAM: JRD access method
4
* DESCRIPTION: Common descriptions for all GDS programs
6
* The contents of this file are subject to the Interbase Public
7
* License Version 1.0 (the "License"); you may not use this file
8
* except in compliance with the License. You may obtain a copy
9
* of the License at http://www.Inprise.com/IPL.html
11
* Software distributed under the License is distributed on an
12
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
13
* or implied. See the License for the specific language governing
14
* rights and limitations under the License.
16
* The Original Code was created by Inprise Corporation
17
* and its predecessors. Portions created by Inprise Corporation are
18
* Copyright (C) Inprise Corporation.
20
* All Rights Reserved.
21
* Contributor(s): ______________________________________.
23
* 2001.07.06 Sean Leyne - Code Cleanup, removed "#ifdef READONLY_DATABASE"
24
* conditionals, as the engine now fully supports
27
* 2001.11.20 Ann Harrison - make 64bitio.h conditional on not windows.
29
* 2002.02.15 Sean Leyne - Code Cleanup, removed obsolete ports:
30
* - MAC ("MAC", "MAC_AUX" and "MAC_CP" defines)
31
* - EPSON, XENIX, DELTA, IMP, NCR3000, M88K
32
* - NT Power PC and HP9000 s300
34
* 2002.04.16 Paul Beach - HP10 and unistd.h
36
* 2002.10.27 Sean Leyne - Completed removal of obsolete "DG_X86" port
37
* 2002.10.27 Sean Leyne - Code Cleanup, removed obsolete "UNIXWARE" port
38
* 2002.10.27 Sean Leyne - Code Cleanup, removed obsolete "Ultrix" port
40
* 2002.10.28 Sean Leyne - Completed removal of obsolete "DGUX" port
41
* 2002.10.28 Sean Leyne - Code cleanup, removed obsolete "DecOSF" port
42
* 2002.10.28 Sean Leyne - Code cleanup, removed obsolete "SGI" port
44
* 2002.10.29 Sean Leyne - Removed obsolete "Netware" port
46
* 2002.10.30 Sean Leyne - Removed support for obsolete "PC_PLATFORM" define
59
#ifdef HAVE_SYS_PARAM_H
60
#include <sys/param.h>
64
// for _POSIX_THREADS test below
68
#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 200112L
69
// above check is generally true. However, we use pthreads on some platforms
70
// where _POSIX_THREADS is defined to "1" or not even defined at all!
71
#define USE_POSIX_THREADS
74
#include "../include/fb_macros.h"
75
#include "../include/fb_types.h"
78
do not use links in source code to maintain platform neutrality
83
#define GARBAGE_THREAD
88
#define FB_ARCHITECTURE isc_info_db_class_server_access
90
#define FB_ARCHITECTURE isc_info_db_class_classic_access
94
/*****************************************************
96
*****************************************************/
98
#define QUADFORMAT "ll"
99
#define QUADCONST(n) (n##LL)
101
// SLONG is a 32-bit integer on 64-bit platforms
102
//#if SIZEOF_LONG == 4
103
//#define SLONGFORMAT "ld"
104
//#define ULONGFORMAT "lu"
105
//#define XLONGFORMAT "lX"
106
//#define xLONGFORMAT "lx"
111
#define SIZEFORMAT "zi"
114
//format for __LINE__
115
#define LINEFORMAT "d"
121
#define IMPLEMENTATION isc_info_db_impl_linux_amd64 /* 66 */
123
// on buggy kernels ERESTARTNOHAND (==514) may be returned instead of EINTR
124
// use value '514' instead of ERESTARTNOHAND cause it's not present in std includes
125
// in theory such error codes should never be seen outside kernel
126
#define SYSCALL_INTERRUPTED(err) (((err) == EINTR) || ((err) == 514)) /* pjpg 20001102 */
131
#define IMPLEMENTATION isc_info_db_impl_linux_ppc /* 69 next higher unique number, See you later */
136
#define IMPLEMENTATION isc_info_db_impl_i386 /* 60 */
140
#define IMPLEMENTATION isc_info_db_impl_linux_arm // 75
144
#define IMPLEMENTATION isc_info_db_impl_linux_sparc /* 65 */
145
#define RISC_ALIGNMENT
149
#define IMPLEMENTATION isc_info_db_impl_linux_mipsel /* 71 */
153
#define IMPLEMENTATION isc_info_db_impl_linux_mips /* 72 */
157
#define IMPLEMENTATION isc_info_db_impl_linux_ia64 // 76
158
#define RISC_ALIGNMENT
161
#ifndef USE_POSIX_THREADS
162
// force pthread detection on Linux for distros that do not provide
163
// POSIX thread compatability
164
#define USE_POSIX_THREADS
169
#define IMPLEMENTATION isc_info_db_impl_linux_s390x // 78
171
#define IMPLEMENTATION isc_info_db_impl_linux_s390 // 79
176
#define IMPLEMENTATION isc_info_db_impl_linux_sh /* 80 */
177
#define RISC_ALIGNMENT
181
#define IMPLEMENTATION isc_info_db_impl_linux_sheb /* 81 */
182
#define RISC_ALIGNMENT
188
/*****************************************************
190
*****************************************************/
192
// EKU: obsolete, replaced by _FILE_OFFSET_BITS
193
//#ifndef UNIX_64_BIT_IO
194
//#define UNIX_64_BIT_IO
197
//format for __LINE__
198
#define LINEFORMAT "d"
200
//#define SLONGFORMAT "ld"
201
//#define ULONGFORMAT "lu"
202
//#define XLONGFORMAT "lX"
203
//#define xLONGFORMAT "lx"
205
//#define FB_ALIGNMENT 4
206
//#define FB_DOUBLE_ALIGN 4
211
#define IMPLEMENTATION isc_info_db_impl_darwin_ppc /* 63 */
215
#define IMPLEMENTATION isc_info_db_impl_darwin_x86 /* 70 */
219
#define IMPLEMENTATION isc_info_db_impl_darwin_x64 /* 73 */
223
#define IMPLEMENTATION isc_info_db_impl_darwin_ppc64 /* 77 */
226
#define QUADCONST(n) (n##LL)
227
#define QUADFORMAT "q"
230
#define API_ROUTINE __attribute__((visibility("default")))
231
#define API_ROUTINE_VARARG API_ROUTINE
232
#define INTERNAL_API_ROUTINE API_ROUTINE
233
#define FB_EXPORTED __attribute__((visibility("default")))
235
#define O_DIRECT F_NOCACHE
236
#endif /* Darwin Platforms */
239
/*****************************************************
240
* FreeBSD for Intel platforms
241
*****************************************************/
244
// EKU: obsolete, replaced by _FILE_OFFSET_BITS
245
//#ifndef UNIX_64_BIT_IO
246
//#define UNIX_64_BIT_IO
250
//#define FB_ALIGNMENT 4
251
//#define FB_DOUBLE_ALIGN 4
257
#define IMPLEMENTATION isc_info_db_impl_freebsd_amd64 /* 67 */
260
#define IMPLEMENTATION isc_info_db_impl_freebsd /* 61 */
263
#define QUADFORMAT "ll"
264
#define QUADCONST(n) (n##LL)
265
#define NO_NFS /* no MTAB_OPEN or MTAB_CLOSE in isc_file.c */
267
#ifndef USE_POSIX_THREADS
268
// force pthread detection on FREEBSD
269
#define USE_POSIX_THREADS
274
/*****************************************************
276
*****************************************************/
279
#if defined(__i386__)
280
//#define FB_ALIGNMENT 4
281
//#define FB_DOUBLE_ALIGN 4
285
#define IMPLEMENTATION isc_info_db_impl_netbsd /* 62 */
287
#define QUADFORMAT "ll"
288
#define QUADCONST(n) (n##LL)
289
#else /* !__i386__ */
290
#error Please add support for other ports
294
#define NO_NFS /* no MTAB_OPEN or MTAB_CLOSE in isc_file.c */
300
/*****************************************************
301
* SUN platforms--the 386i is obsolete
302
*****************************************************/
308
/* Define the following only on platforms whose standard I/O
309
* implementation is so weak that we wouldn't be able to fopen
310
* a file whose underlying file descriptor would be > 255.
311
* Hey, we're not running on PDP-11's any more: would it kill you
312
* to use a short instead of a char to hold the fileno? :-(
315
/* Why we (solarises) need to rewrite old BSD stdio
316
so many times I suggest stdIO from
317
http://www.research.att.com/sw/tools/sfio/
319
/* Need to use full sfio not just stdio emulation to fix
320
file descriptor number limit. nmcc Dec2002
323
/* Update for Solaris 10. The problem still exists pre Solaris 10,
324
however if you are using A version of Solaris 10 after 11/06 the
325
problem with file descriptors has been solved and this define and
326
the following function can now be commented out.
327
If you are using Solaris 10 from 03/05 - 11/06 you need to patch
328
your operating system.
329
Earlier versions of Solaris still have the problem. pbeach Feb2010
332
#if (!defined(__arch64__)) && (!defined(SFIO))
333
#error "need to use SFIO"
336
// this function is normally defined in stdio.h, but is missing in SFIO's h-file
337
extern "C" int remove(const char* path);
339
/* The following define is the prefix to go in front of a "d" or "u"
340
format item in a printf() format string, to indicate that the argument
341
is an SINT64 or FB_UINT64. */
342
#define QUADFORMAT "ll"
343
/* The following macro creates a quad-sized constant, possibly one
344
which is too large to fit in a long int. */
345
#define QUADCONST(n) (n##LL)
347
#ifndef USE_POSIX_THREADS
348
#if defined(_POSIX_THREADS) && _POSIX_THREADS >= 1L
349
// Solaris 9 has _POSIX_THREADS = 1L
350
// Solaris 10 has _POSIX_THREADS >= 200112L
351
#define USE_POSIX_THREADS
361
//#define FB_ALIGNMENT 4
362
//#define FB_DOUBLE_ALIGN 8
364
#define IMPLEMENTATION isc_info_db_impl_isc_sun4 /* 30 */
365
#define RISC_ALIGNMENT
367
#elif defined (__i386)
368
#define IMPLEMENTATION isc_info_db_impl_isc_sun_386i /* 32 */
370
#elif defined (__amd64)
371
#define IMPLEMENTATION isc_info_db_impl_sun_amd64 /* 74 */
374
#error What is IMPLEMENTATION for this Solaris platform????
380
/*****************************************************
382
*****************************************************/
386
#define USE_SHMEM_EXT // Looks like everyone else can ISC_remap
389
//#define CURSES_KEYPAD
391
//#define FB_ALIGNMENT 8
392
//#define FB_DOUBLE_ALIGN 8
393
#define IMPLEMENTATION isc_info_db_impl_isc_hp_ux /* 31 */
395
#if defined (__HP_aCC)
396
// aCC error, __thread can be used only with C-like structs
401
// 16-Apr-2002 HP10 in unistd.h Paul Beach
402
//#define setreuid(ruid, euid) setresuid (ruid, euid, -1)
403
//#define setregid(rgid, egid) setresgid (rgid, egid, -1)
405
/* The following define is the prefix to go in front of a "d" or "u"
406
format item in a printf() format string, to indicate that the argument
407
is an SINT64 or FB_UINT64. */
408
#define QUADFORMAT "ll"
409
/* The following macro creates a quad-sized constant, possibly one
410
which is too large to fit in a long int. */
411
#define QUADCONST(n) (n)
413
#ifndef USE_POSIX_THREADS
414
// HPUX v B.11.23 does not have _POSIX_THREADS defined, their implementation
415
// is incomplete, but good enough for us
416
#define USE_POSIX_THREADS
419
#define RISC_ALIGNMENT
424
/*****************************************************
425
* IBM AIX RS/6000 and IBM AIX PowerPC
426
*****************************************************/
428
#ifdef _AIX /* IBM AIX */
429
#ifndef _POWER /* IBM RS/6000 */
432
//#define CURSES_KEYPAD
433
//*#define FB_ALIGNMENT 4
434
#define IMPLEMENTATION isc_info_db_impl_isc_rt_aix /* 35 */
436
#define SYSCALL_INTERRUPTED(err) (((err) == EINTR) || ((err) == ERESTART)) /* pjpg 20001102 */
437
#else /* AIX PowerPC */
440
//#define CURSES_KEYPAD
441
//#define FB_ALIGNMENT 4
442
#define IMPLEMENTATION isc_info_db_impl_isc_rt_aix /* 35 */
444
#define SYSCALL_INTERRUPTED(err) (((err) == EINTR) || ((err) == ERESTART)) /* pjpg 20001102 */
446
#define QUADFORMAT "ll" /* TMC 081700 */
447
#define QUADCONST(n) (n##LL) /* TMC 081700 */
449
#endif /* IBM PowerPC */
451
// AIX does not pass autoconf's test for mmap() correctness,
452
// but we do not use flag (MAP_FIXED) that fails.
455
// autoconf test AC_SYS_LARGEFILE defines _LARGE_FILES for AIX builds.
456
// But, in <standards.h>, _LARGE_FILE_API is defined, leading to conflict
457
// in 32-bit builds. Only one of these macros should be defined.
458
#undef _LARGE_FILE_API
464
/*****************************************************
466
*****************************************************/
472
#define SYS_ERR Arg::Windows
473
//#define SLONGFORMAT "ld"
474
//#define ULONGFORMAT "lu"
475
//#define XLONGFORMAT "lX"
476
//#define xLONGFORMAT "lx"
478
//format for __LINE__
479
#define LINEFORMAT "d"
481
/* The following define is the prefix to go in front of a "d" or "u"
482
format item in a printf() format string, to indicate that the argument
483
is an SINT64 or FB_UINT64. */
484
#define QUADFORMAT "I64"
485
/* The following macro creates a quad-sized constant, possibly one
486
which is too large to fit in a long int. The Microsoft compiler does
487
not permit the LL suffix which some other platforms require, but it
488
handles numbers up to the largest 64-bit integer correctly without such
489
a suffix, so the macro definition is trivial. */
490
#ifdef __GNUC__ // needed for gcc 3.3.1
491
#define QUADCONST(n) (n##LL)
493
#define QUADCONST(n) (n)
497
#define IMPLEMENTATION isc_info_db_impl_winnt_amd64 /* 68 */
502
#define IMPLEMENTATION isc_info_db_impl_isc_winnt_x86 /* 50 */
506
#define API_ROUTINE __stdcall
507
#define API_ROUTINE_VARARG __cdecl
508
#define CLIB_ROUTINE __cdecl
512
#define MAXPATHLEN MAX_PATH
514
#define MAXPATHLEN 260
518
#define ERRNO GetLastError()
519
#define INET_ERRNO WSAGetLastError()
520
#define H_ERRNO WSAGetLastError()
522
// For Visual Studio 2003 and earlier enable Windows 9X support
523
#if defined _MSC_VER && (_MSC_VER < 1400)
524
#define WIN9X_SUPPORT
530
/*****************************************************
532
*****************************************************/
535
#define SYS_ERR Arg::Unix
539
#define SYS_ERR Arg::Unix
547
#define INET_ERRNO errno
551
#define H_ERRNO h_errno
554
/* various declaration modifiers */
558
#define API_ROUTINE_VARARG
570
/* alignment macros */
572
#ifndef OLD_ALIGNMENT
574
/* Using internal alignment optimal for 386 processor and above
576
//#define FB_ALIGNMENT 4
577
//#define FB_DOUBLE_ALIGN 8
582
//#define FB_ALIGNMENT 2
583
#error must define FB_ALIGNMENT for your system
587
/* Number of shifts needed to convert between char and LONG */
589
#define BITS_PER_LONG 32
592
#ifndef FB_DOUBLE_ALIGN
593
//#define FB_DOUBLE_ALIGN 4
594
#error must define FB_DOUBLE_ALIGN for your system
599
/* common return values */
604
#define STARTUP_ERROR 2 /* this is also used in iscguard.h, make sure these match */
616
/* sys/paramh.h : compatibility purposes */
621
/* data type definitions */
623
#ifndef ISC_TIMESTAMP_DEFINED
624
typedef SLONG ISC_DATE;
625
typedef ULONG ISC_TIME;
628
ISC_DATE timestamp_date;
629
ISC_TIME timestamp_time;
631
#define ISC_TIMESTAMP_DEFINED
632
#endif /* ISC_TIMESTAMP_DEFINED */
634
#define GDS_DATE ISC_DATE
635
#define GDS_TIME ISC_TIME
636
#define GDS_TIMESTAMP ISC_TIMESTAMP
640
#define BLOB_PTR UCHAR
646
#define SLONGFORMAT "ld"
647
#define ULONGFORMAT "lu"
648
#define XLONGFORMAT "lX"
649
#define xLONGFORMAT "lx"
651
#define SLONGFORMAT "d"
652
#define ULONGFORMAT "u"
653
#define XLONGFORMAT "X"
654
#define xLONGFORMAT "x"
658
// Shortcuts to make it easier to convert code using SLONGFORMAT/ULONGFORMAT
659
#define UQUADFORMAT QUADFORMAT"u"
660
#define SQUADFORMAT QUADFORMAT"d"
664
#if (SIZEOF_SIZE_T == 8)
665
#define SIZEFORMAT UQUADFORMAT
667
#define SIZEFORMAT ULONGFORMAT
671
// format for __LINE__
674
#define LINEFORMAT "d"
676
#define LINEFORMAT "ld"
680
// format for OS handles
681
#if defined(WIN_NT) && (SIZEOF_VOID_P == 8)
682
#define HANDLEFORMAT SQUADFORMAT
684
#define HANDLEFORMAT SLONGFORMAT
688
/* conditional compilation macros */
690
/* MAX and MIN for datatypes */
692
#define MAX_UCHAR ((UCHAR)0xFF)
693
#define MIN_UCHAR 0x00
695
#define MAX_SCHAR 0x7F
696
#define MIN_SCHAR (-MAX_SCHAR - 1)
698
#define MAX_USHORT ((USHORT)0xFFFF)
699
#define MIN_USHORT 0x0000
701
#define MAX_SSHORT 0x7FFF
702
#define MIN_SSHORT (-MAX_SSHORT - 1)
704
#define MAX_ULONG ((ULONG)0xFFFFFFFF)
705
#define MIN_ULONG 0x00000000
707
#define MAX_SLONG 0x7FFFFFFF
708
#define MIN_SLONG (-MAX_SLONG - 1)
710
#define MAX_UINT64 ((FB_UINT64) QUADCONST(0xFFFFFFFFFFFFFFFF))
711
#define MIN_UINT64 QUADCONST(0x0000000000000000)
713
#define MAX_SINT64 QUADCONST(0x7FFFFFFFFFFFFFFF)
714
#define MIN_SINT64 (-MAX_SINT64 - 1)
718
/* commonly used macros */
721
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
724
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
727
#define UPPER(c) (((c) >= 'a' && (c) <= 'z') ? (c) - 'a' + 'A' : (c))
728
#define LOWWER(c) (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c))
730
/* UPPER7 & LOWWER7 are to be used when the data is known to
731
be 7-bit ASCII, eg: internal data, OS data. NOT user data. */
733
#define UPPER7(c) (((c) >= 'a' && (c) <= 'z') ? (c) - 'a' + 'A' : (c))
734
#define LOWWER7(c) (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c))
737
#define ROUNDUP(n, b) (((n) + (b) - 1) & ~((b) - 1))
739
#define ROUNDUP_LONG(len) ROUNDUP (len, sizeof (SLONG))
741
#define JRD_BUGCHK 15 /* facility code for bugcheck messages */
743
#define OFFSET(struct, fld) ((size_t) &((struct) NULL)->fld)
744
#define OFFSETA(struct, fld) ((size_t) ((struct) NULL)->fld)
747
#ifndef ODS_ALIGNMENT
748
#define ODS_ALIGNMENT 4
751
#ifndef FORMAT_ALIGNMENT
752
// Alignment for items in record format. Used for databases after ODS11.
753
// Always 64-bit to ensure ODS compatibility with 64-bit versions of the engine
754
#define FORMAT_ALIGNMENT 8
757
#ifndef SYSCALL_INTERRUPTED
758
#define SYSCALL_INTERRUPTED(err) ((err) == EINTR)
762
/* data movement and allocation macros */
764
#define MOVE_CLEAR(to, length) memset(to, 0, (size_t) (length))
766
// This macros are used to workaround shortage of standard conformance
767
// in Microsoft compilers. They could be replaced with normal procedure
768
// and generic macro if MSVC would support C99-style __VA_ARGS__
769
#define DEFINE_TRACE_ROUTINE(routine) void routine(const char* message, ...)
771
#ifdef HAVE_VSNPRINTF
772
#define VSNPRINTF(a, b, c, d) vsnprintf(a, b, c, d)
774
#define VSNPRINTF(a, b, c, d) vsprintf(a, c, d)
778
#define SNPRINTF snprintf
780
#define SNPRINTF(buffer, length, ...) sprintf(buffer, __VA_ARGS__)
783
#define IMPLEMENT_TRACE_ROUTINE(routine, subsystem) \
784
void routine(const char* message, ...) \
786
static const char name_facility[] = subsystem ","; \
788
strcpy(buffer, name_facility); \
789
char *ptr = buffer + sizeof(name_facility) - 1; \
791
va_start(params, message); \
792
VSNPRINTF(ptr, sizeof(buffer) - sizeof(name_facility), message, params); \
794
gds__trace(buffer); \
799
/* Define any debugging symbols and macros here. This
800
ifdef will be executed during development builds. */
802
#define TRACE(msg) gds__trace (msg)
805
#define DEV_REPORT(msg) gds__log (msg)
809
#define BREAKPOINT(x) GDS_breakpoint(x)
810
// fwd. decl. the function itself
814
void GDS_breakpoint(int);
820
#endif /* DEV_BUILD */
824
#define DEV_REPORT(msg) gds__log (msg)
827
#define BREAKPOINT(x) /* nothing */
830
#define TRACE(msg) /* nothing */
835
/* commonly used buffer sizes for dynamic buffer allocation */
837
#define BUFFER_XLARGE 2048
838
#define BUFFER_LARGE 1024
839
#define BUFFER_MEDIUM 512
840
#define BUFFER_SMALL 256
841
#define BUFFER_TINY 128
843
/* The default lseek offset type. Changed from nothing to (off_t) to correctly support 64 bit IO */
844
#ifndef LSEEK_OFFSET_CAST
845
#define LSEEK_OFFSET_CAST (off_t)
848
#define STRINGIZE_AUX(x) #x
849
#define STRINGIZE(x) STRINGIZE_AUX(x)
852
#define CONST64(a) (a##i64)
854
#define CONST64(a) (a##LL)
857
// 30 Dec 2002. Nickolay Samofatov
858
// This needs to be checked for all supported platforms
859
// The simpliest way to check it is to issue from correct client:
860
// declare external function abs2 double precision
861
// returns double precision by value
862
// entry_point 'IB_UDF_abs' module_name 'ib_udf';
863
// select abs2(2.0 / 3.0) from rdb$database;
864
// It will return big strange value in case of invalid define
866
// ASF: Currently, all little-endian are FB_SWAP_DOUBLE and big-endian aren't.
867
// AP: Define it for your hardware correctly in case your CPU do not follow mentioned rule.
868
// The follwoing lines are kept for reference only.
869
//#if defined(i386) || defined(I386) || defined(_M_IX86) || defined(AMD64) || defined(ARM) || defined(MIPSEL) || defined(DARWIN64) || defined(IA64)
870
//#define FB_SWAP_DOUBLE 1
871
//#elif defined(sparc) || defined(PowerPC) || defined(PPC) || defined(__ppc__) || defined(HPUX) || defined(MIPS) || defined(__ppc64__)
872
//#define FB_SWAP_DOUBLE 0
874
//#error "Define FB_SWAP_DOUBLE for your platform correctly !"
877
#ifndef FB_SWAP_DOUBLE
878
#ifdef WORDS_BIGENDIAN
879
#define FB_SWAP_DOUBLE 0
881
#define FB_SWAP_DOUBLE 1
885
// Commonly used indices to access parts of double in correct order.
887
#define FB_LONG_DOUBLE_FIRST 1
888
#define FB_LONG_DOUBLE_SECOND 0
890
#define FB_LONG_DOUBLE_FIRST 0
891
#define FB_LONG_DOUBLE_SECOND 1
895
// switch name and state table. This structure should be used in all
896
// command line tools to facilitate parsing options.
901
const TEXT* in_sw_name;
902
SINT64 in_sw_value; // alice specific field
903
SINT64 in_sw_requires; // alice specific field
904
SINT64 in_sw_incompatibilities; // alice specific field
907
USHORT in_sw_min_length;
908
const TEXT* in_sw_text;
909
int in_sw_optype; // burp specific field for now.
910
// Some compilers may produce warnings because I only initialized this field in gbak
913
#ifndef HAVE_WORKING_VFORK
918
static const TEXT FB_SHORT_MONTHS[][4] =
927
static const TEXT* const FB_LONG_MONTHS_UPPER[] =
944
#endif /* JRD_COMMON_H */