diff --git a/stix/lib/comp.c b/stix/lib/comp.c index e3fbd5d..c210078 100644 --- a/stix/lib/comp.c +++ b/stix/lib/comp.c @@ -2711,7 +2711,7 @@ static int get_variable_info (stix_t* stix, const stix_oocs_t* name, const stix_ dot = stix_findoochar (name->ptr, name->len, '.'); STIX_ASSERT (dot != STIX_NULL); - if (dot - name->ptr == 4 && stix_equalchars(name->ptr, vocas[VOCA_SELF].str, 4)) + if (dot - (const stix_ooch_t*)name->ptr == 4 && stix_equalchars(name->ptr, vocas[VOCA_SELF].str, 4)) { /* the dotted name begins with self. */ dot = stix_findoochar (dot + 1, name->len - 5, '.'); diff --git a/stix/lib/main.c b/stix/lib/main.c index fe27c72..7af4c5e 100644 --- a/stix/lib/main.c +++ b/stix/lib/main.c @@ -44,7 +44,7 @@ # define INCL_DOSPROCESS # define INCL_DOSERRORS # include -#elif defined(__DOS__) +#elif defined(__MSDOS__) /* nothing to include */ #elif defined(macintosh) /* nothing to include */ @@ -59,7 +59,7 @@ # define STIX_DEFAULT_MODPREFIX "stix-" # elif defined(__OS2__) # define STIX_DEFAULT_MODPREFIX "st-" -# elif defined(__DOS__) +# elif defined(__MSDOS__) # define STIX_DEFAULT_MODPREFIX "st-" # else # define STIX_DEFAULT_MODPREFIX "libstix-" @@ -71,7 +71,7 @@ # define STIX_DEFAULT_MODPOSTFIX "" # elif defined(__OS2__) # define STIX_DEFAULT_MODPOSTFIX "" -# elif defined(__DOS__) +# elif defined(__MSDOS__) # define STIX_DEFAULT_MODPOSTFIX "" # else # define STIX_DEFAULT_MODPOSTFIX "" @@ -268,7 +268,7 @@ static void mod_close (stix_t* stix, void* handle) FreeLibrary ((HMODULE)handle); #elif defined(__OS2__) DosFreeModule ((HMODULE)handle); -#elif defined(__DOS__) && defined(QSE_ENABLE_DOS_DYNAMIC_MODULE) +#elif defined(__MSDOS__) && defined(QSE_ENABLE_DOS_DYNAMIC_MODULE) FreeModule (handle); #else /* nothing to do */ diff --git a/stix/lib/stix-cmn.h b/stix/lib/stix-cmn.h index a62459c..aed7d85 100644 --- a/stix/lib/stix-cmn.h +++ b/stix/lib/stix-cmn.h @@ -35,6 +35,8 @@ # include "stix-cfg.h" #elif defined(_WIN32) # include "stix-msw.h" +#elif defined(__MSDOS__) +# include "stix-dos.h" #elif defined(macintosh) # include "stix-mac.h" /* class mac os */ #else @@ -341,6 +343,7 @@ typedef struct stix_ucs_t stix_ucs_t; * POINTER MANIPULATION MACROS * ========================================================================= */ +/* #if defined(__MSDOS__) # define STIX_INCPTR(type,base,inc) (((type __huge*)base) + (inc)) # define STIX_DECPTR(type,base,inc) (((type __huge*)base) - (inc)) @@ -350,7 +353,8 @@ typedef struct stix_ucs_t stix_ucs_t; # define STIX_LEPTR(type,ptr1,ptr2) (((type __huge*)ptr1) <= ((type __huge*)ptr2)) # define STIX_EQPTR(type,ptr1,ptr2) (((type __huge*)ptr1) == ((type __huge*)ptr2)) # define STIX_SUBPTR(type,ptr1,ptr2) (((type __huge*)ptr1) - ((type __huge*)ptr2)) -#else +#else +*/ # define STIX_INCPTR(type,base,inc) (((type*)base) + (inc)) # define STIX_DECPTR(type,base,inc) (((type*)base) - (inc)) # define STIX_GTPTR(type,ptr1,ptr2) (((type*)ptr1) > ((type*)ptr2)) @@ -359,7 +363,9 @@ typedef struct stix_ucs_t stix_ucs_t; # define STIX_LEPTR(type,ptr1,ptr2) (((type*)ptr1) <= ((type*)ptr2)) # define STIX_EQPTR(type,ptr1,ptr2) (((type*)ptr1) == ((type*)ptr2)) # define STIX_SUBPTR(type,ptr1,ptr2) (((type*)ptr1) - ((type*)ptr2)) +/* #endif +*/ /* ========================================================================= * MMGR diff --git a/stix/lib/stix-dos.h b/stix/lib/stix-dos.h new file mode 100644 index 0000000..853de2b --- /dev/null +++ b/stix/lib/stix-dos.h @@ -0,0 +1,160 @@ +/* + * $Id$ + * + Copyright (c) 2014-2015 Chung, Hyung-Hwan. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* DOS for other platforms than x86? + * If so, the endian should be defined selectively + */ +#define STIX_ENDIAN_LITTLE + +#if defined(__WATCOMC__) && defined(__386__) +# define STIX_SIZEOF_CHAR 1 +# define STIX_SIZEOF_SHORT 2 +# define STIX_SIZEOF_INT 4 +# define STIX_SIZEOF_LONG 4 +# if (__WATCOMC__ < 1200) +# define STIX_SIZEOF_LONG_LONG 0 +# else +# define STIX_SIZEOF_LONG_LONG 8 +# endif +# define STIX_SIZEOF_VOID_P 4 +# define STIX_SIZEOF_FLOAT 4 +# define STIX_SIZEOF_DOUBLE 8 +# define STIX_SIZEOF_LONG_DOUBLE 8 +# define STIX_SIZEOF_WCHAR_T 2 + +# define STIX_SIZEOF___INT8 1 +# define STIX_SIZEOF___INT16 2 +# define STIX_SIZEOF___INT32 4 +# define STIX_SIZEOF___INT64 8 +# define STIX_SIZEOF___INT128 0 + +# define STIX_SIZEOF_OFF64_T 0 +# define STIX_SIZEOF_OFF_T 4 + +# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG +# define STIX_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define STIX_SIZEOF_SOCKLEN_T 4 + +#elif defined(__WATCOMC__) && !defined(__386__) +# define STIX_SIZEOF_CHAR 1 +# define STIX_SIZEOF_SHORT 2 +# define STIX_SIZEOF_INT 2 +# define STIX_SIZEOF_LONG 4 +# define STIX_SIZEOF_LONG_LONG 8 + +# define STIX_SIZEOF_VOID_P 4 +# define STIX_SIZEOF_FLOAT 4 +# define STIX_SIZEOF_DOUBLE 8 +# define STIX_SIZEOF_LONG_DOUBLE 8 +# define STIX_SIZEOF_WCHAR_T 2 + +# define STIX_SIZEOF___INT8 1 +# define STIX_SIZEOF___INT16 2 +# define STIX_SIZEOF___INT32 4 +# define STIX_SIZEOF___INT64 8 +# define STIX_SIZEOF___INT128 0 + +# define STIX_SIZEOF_OFF64_T 0 +# define STIX_SIZEOF_OFF_T 4 + +# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG +# define STIX_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define STIX_SIZEOF_SOCKLEN_T 4 + +#elif defined(__TURBOC__) +/* TODO: be more version specific wchar_t may be available in newer BCC */ +# define STIX_SIZEOF_CHAR 1 +# define STIX_SIZEOF_SHORT 2 +# define STIX_SIZEOF_INT 2 +# define STIX_SIZEOF_LONG 4 +# define STIX_SIZEOF_LONG_LONG 0 + +# define STIX_SIZEOF_VOID_P 4 +# define STIX_SIZEOF_FLOAT 4 +# define STIX_SIZEOF_DOUBLE 8 +# define STIX_SIZEOF_LONG_DOUBLE 10 +# define STIX_SIZEOF_WCHAR_T 0 + +# define STIX_SIZEOF___INT8 0 +# define STIX_SIZEOF___INT16 0 +# define STIX_SIZEOF___INT32 0 +# define STIX_SIZEOF___INT64 0 +# define STIX_SIZEOF___INT128 0 + +# define STIX_SIZEOF_OFF64_T 0 +# define STIX_SIZEOF_OFF_T 4 + +# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG +# define STIX_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define STIX_SIZEOF_SOCKLEN_T 4 + +#elif defined(__ZTC__) && defined(__DOSX386__) + + /* Zortech in DOSX 386 mode (ztc -mx) */ +# define STIX_SIZEOF_CHAR 1 +# define STIX_SIZEOF_SHORT 2 +# define STIX_SIZEOF_INT 4 +# define STIX_SIZEOF_LONG 4 +# define STIX_SIZEOF_LONG_LONG 0 + +# define STIX_SIZEOF_VOID_P 4 +# define STIX_SIZEOF_FLOAT 4 +# define STIX_SIZEOF_DOUBLE 8 +# define STIX_SIZEOF_LONG_DOUBLE 8 +# define STIX_SIZEOF_WCHAR_T 1 + +# define STIX_SIZEOF___INT8 0 +# define STIX_SIZEOF___INT16 0 +# define STIX_SIZEOF___INT32 0 +# define STIX_SIZEOF___INT64 0 +# define STIX_SIZEOF___INT128 0 + +# define STIX_SIZEOF_OFF64_T 0 +# define STIX_SIZEOF_OFF_T 4 + +# define STIX_SIZEOF_MBSTATE_T STIX_SIZEOF_LONG +# define STIX_MBLEN_MAX 8 + + /* these two have only to be large enough */ +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN 32 +# define STIX_SIZEOF_STRUCT_SOCKADDR_IN6 64 +# define STIX_SIZEOF_SOCKLEN_T 4 + +#else +# error Define the size of various data types. +#endif +