added OS/2 code into time.c

started writing OS/2 code into pio.c
fixed minor issues in fio.c
This commit is contained in:
hyung-hwan 2011-03-19 09:07:21 +00:00
parent b69285fc36
commit 20a989ecaf
20 changed files with 2073 additions and 144 deletions

View File

@ -143,6 +143,66 @@ static int handle_args (int argc, qse_char_t* argv[])
return 0;
}
#include <qse/cmn/pio.h>
static int pio1 (const qse_char_t* cmd, int oflags, qse_pio_hid_t rhid)
{
qse_pio_t* pio;
int x;
pio = qse_pio_open (
QSE_NULL,
0,
cmd,
oflags
);
if (pio == QSE_NULL)
{
qse_printf (QSE_T("cannot open program through pipe\n"));
return -1;
}
while (1)
{
qse_byte_t buf[128];
qse_ssize_t i;
/*qse_pio_canread (pio, QSE_PIO_ERR, 1000)*/
qse_ssize_t n = qse_pio_read (pio, buf, sizeof(buf), rhid);
if (n == 0) break;
if (n <= -1)
{
qse_printf (
QSE_T("qse_pio_read() returned error - %s\n"),
qse_pio_geterrmsg(pio)
);
break;
}
qse_printf (QSE_T("N===> %d buf => ["), (int)n);
for (i = 0; i < n; i++)
{
#ifdef QSE_CHAR_IS_MCHAR
qse_printf (QSE_T("%c"), buf[i]);
#else
qse_printf (QSE_T("%C"), buf[i]);
#endif
}
qse_printf (QSE_T("]\n"));
}
x = qse_pio_wait (pio);
qse_printf (QSE_T("qse_pio_wait returns %d\n"), x);
if (x <= -1)
{
qse_printf (QSE_T("error code : %d, error string: %s\n"),
(int)qse_pio_geterrnum(pio), qse_pio_geterrmsg(pio));
}
qse_pio_close (pio);
return 0;
}
int scm_main (int argc, qse_char_t* argv[])
{
qse_scm_t* scm;
@ -164,6 +224,10 @@ int scm_main (int argc, qse_char_t* argv[])
qse_scm_attachio (scm, &io);
}
{
pio1 (QSE_T("dir /a"), QSE_PIO_READOUT|QSE_PIO_WRITEIN|QSE_PIO_SHELL, QSE_PIO_OUT);
}
{
qse_scm_ent_t* x1, * x2;

View File

@ -1,5 +1,5 @@
/*
* $Id: fio.h 396 2011-03-14 15:40:35Z hyunghwan.chung $
* $Id: fio.h 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -115,6 +115,7 @@ struct qse_fio_t
QSE_DEFINE_COMMON_FIELDS (fio)
int errnum;
qse_fio_hnd_t handle;
int flags; /* extra flags */
qse_tio_t* tio;
};

View File

@ -1,5 +1,5 @@
/*
* $Id: pio.h 287 2009-09-15 10:01:02Z hyunghwan.chung $
* $Id: pio.h 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -120,12 +120,20 @@ enum qse_pio_errnum_t
};
typedef enum qse_pio_errnum_t qse_pio_errnum_t;
#ifdef _WIN32
#if defined(_WIN32)
/* <winnt.h> => typedef PVOID HANDLE; */
typedef void* qse_pio_hnd_t; /**< defines a pipe handle type */
typedef void* qse_pio_pid_t; /**< defines a process handle type */
# define QSE_PIO_HND_NIL ((qse_pio_hnd_t)QSE_NULL)
# define QSE_PIO_PID_NIL ((qse_pio_pid_t)QSE_NULL)
#elif defined(__OS2__)
/* <os2def.h> => typedef LHANDLE HFILE;
typedef LHANDLE PID;
typedef unsigned long LHANDLE; */
typedef unsigned long qse_pio_hnd_t;
typedef unsigned long qse_pio_pid_t;
# define QSE_PIO_HND_NIL ((qse_pio_hnd_t)-1)
# define QSE_PIO_PID_NIL ((qse_pio_pid_t)-1)
#else
typedef int qse_pio_hnd_t; /**< defines a pipe handle type */
typedef int qse_pio_pid_t; /**< defines a process handle type */

View File

@ -1,5 +1,5 @@
/*
* $Id: time.h 356 2010-09-07 12:29:25Z hyunghwan.chung $
* $Id: time.h 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -128,7 +128,7 @@ int qse_timegm (
* The qse_timelocal() converts broken-down time to numeric time. It is the
* inverse of qse_localtime();
*/
int qse_timelcoal (
int qse_timelocal (
const qse_btime_t* bt,
qse_ntime_t* nt
);

View File

@ -18,39 +18,41 @@
License along with QSE. If not, see <http://www.gnu.org/licenses/>.
*/
/* OS/2 for other platforms than x86?
* If so, the endian should be defined selectively
*/
#define QSE_ENDIAN_LITTLE
#define QSE_SIZEOF_CHAR 1
#define QSE_SIZEOF_SHORT 2
#define QSE_SIZEOF_INT 4
#define QSE_SIZEOF_LONG 4
#if defined(__GNUC__)
# define QSE_SIZEOF_LONG_LONG 8
# define QSE_SIZEOF___INT8 0
# define QSE_SIZEOF___INT16 0
# define QSE_SIZEOF___INT32 0
# define QSE_SIZEOF___INT64 0
# define QSE_SIZEOF___INT128 0
#if defined(__WATCOMC__)
# define QSE_SIZEOF_CHAR 1
# define QSE_SIZEOF_SHORT 2
# define QSE_SIZEOF_INT 4
# define QSE_SIZEOF_LONG 4
# define QSE_SIZEOF_LONG_LONG 8
#
# define QSE_SIZEOF_VOID_P 4
# define QSE_SIZEOF_FLOAT 4
# define QSE_SIZEOF_DOUBLE 8
# define QSE_SIZEOF_LONG_DOUBLE 8
# define QSE_SIZEOF_WCHAR_T 2
#
# define QSE_SIZEOF___INT8 1
# define QSE_SIZEOF___INT16 2
# define QSE_SIZEOF___INT32 4
# define QSE_SIZEOF___INT64 8
# define QSE_SIZEOF___INT128 0
#else
# if defined(__WATCOMC__)
# define QSE_SIZEOF_LONG_LONG 8
# else
# define QSE_SIZEOF_LONG_LONG 0
# endif
# define QSE_SIZEOF___INT8 1
# define QSE_SIZEOF___INT16 2
# define QSE_SIZEOF___INT32 4
# define QSE_SIZEOF___INT64 8
# define QSE_SIZEOF___INT128 0
# error Define the size of various data types.
#endif
#define QSE_SIZEOF_VOID_P 4
#define QSE_SIZEOF_FLOAT 4
#define QSE_SIZEOF_DOUBLE 8
#define QSE_SIZEOF_LONG_DOUBLE 16
#define QSE_SIZEOF_WCHAR_T 2
#define QSE_SIZEOF_OFF64_T 0
#define QSE_SIZEOF_OFF_T 8
#define QSE_SIZEOF_OFF_T 8
/*
* OS/2 does not have wchar_t(Unicode) friendly APIs unlike Windows.
* You must define which character type to use as a default character here.
*
* #define QSE_CHAR_IS_WCHAR
* #define QSE_CHAR_IS_MCHAR
*/
#define QSE_CHAR_IS_WCHAR

View File

@ -1,5 +1,5 @@
/*
* $Id: types.h 396 2011-03-14 15:40:35Z hyunghwan.chung $
* $Id: types.h 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -34,10 +34,10 @@
# include <qse/config.h>
#elif defined(_WIN32)
# include <qse/conf_msw.h>
#elif defined(__OS2__)
# include <qse/conf_os2.h>
#elif defined(vms) || defined(__vms)
# include <qse/conf_vms.h>
#elif defined(OS2) || defined(__OS2__)
# include <qse/conf_os2.h>
#else
# error unsupported operating system
#endif
@ -383,10 +383,10 @@ typedef int qse_mcint_t;
typedef int qse_wchar_t;
typedef int qse_wcint_t;
# else
# error no supported data type for wchar_t
# error No supported data type for wchar_t
# endif
#else
# error unsupported size of wchar_t
# error Unsupported size of wchar_t
#endif
/** @typedef qse_char_t
@ -396,33 +396,32 @@ typedef int qse_mcint_t;
* The qse_cint_t typep defines a type that can hold a qse_char_t value and
* #QSE_CHAR_EOF.
*/
#if defined(_WIN32) && (defined(UNICODE)||defined(_UNICODE))
# define QSE_CHAR_IS_WCHAR
#if defined(QSE_CHAR_IS_WCHAR)
typedef qse_wchar_t qse_char_t;
typedef qse_wcint_t qse_cint_t;
#elif defined(__OS2__)
# define QSE_CHAR_IS_MCHAR
#elif defined(QSE_CHAR_IS_MCHAR)
typedef qse_mchar_t qse_char_t;
typedef qse_mcint_t qse_cint_t;
#else
# if defined(QSE_CHAR_IS_MCHAR)
typedef qse_mchar_t qse_char_t;
typedef qse_mcint_t qse_cint_t;
# elif defined(QSE_CHAR_IS_WCHAR)
typedef qse_wchar_t qse_char_t;
typedef qse_wcint_t qse_cint_t;
# elif defined(_MBCS)
# define QSE_CHAR_IS_MCHAR
typedef qse_mchar_t qse_char_t;
typedef qse_mcint_t qse_cint_t;
/* If the character type is not determined in the conf_xxx files */
# if defined(_WIN32)
# if defined(UNICODE) || defined(_UNICODE)
# define QSE_CHAR_IS_WCHAR
typedef qse_wchar_t qse_char_t;
typedef qse_wcint_t qse_cint_t;
# else
# define QSE_CHAR_IS_MCHAR
typedef qse_mchar_t qse_char_t;
typedef qse_mcint_t qse_cint_t;
# endif
# else
# define QSE_CHAR_IS_WCHAR
typedef qse_wchar_t qse_char_t;
typedef qse_wcint_t qse_cint_t;
# error Cannot determine the character type to use
# endif
#endif
#if defined(QSE_CHAR_IS_WCHAR) && defined(_WIN32)
/* Special definiton to use Unicode APIs on Windows */
# ifndef UNICODE
# define UNICODE
# endif

View File

@ -1,5 +1,5 @@
/*
* $Id: fio.c 400 2011-03-16 08:37:06Z hyunghwan.chung $
* $Id: fio.c 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -90,6 +90,10 @@ qse_fio_t* qse_fio_init (
QSE_MEMSET (fio, 0, QSE_SIZEOF(*fio));
fio->mmgr = mmgr;
/* store the flags for later use though only OS/2 needs
* this at this moment */
fio->flags = flags;
#if defined(_WIN32)
if (flags & QSE_FIO_HANDLE)
{
@ -172,9 +176,17 @@ qse_fio_t* qse_fio_init (
{
APIRET ret;
ULONG action_taken = 0;
ULONG open_action, open_mode;
ULONG open_action, open_mode, open_attr;
LONGLONG zero;
#ifdef QSE_CHAR_IS_MCHAR
const qse_mchar_t* path_mb = path;
#else
qse_mchar_t path_mb[CCHMAXPATH];
if (qse_wcstombs_strict (path,
path_mb, QSE_COUNTOF(path_mb)) == -1) return QSE_NULL;
#endif
zero.ulLo = 0;
zero.ulHi = 0;
@ -202,18 +214,33 @@ qse_fio_t* qse_fio_init (
open_action = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW;
}
open_mode = OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE;
open_mode = OPEN_FLAGS_NOINHERIT;
if (flags & QSE_FIO_SYNC)
open_mode |= OPEN_FLAGS_WRITE_THROUGH;
if ((flags & QSE_FIO_NOSHRD) && (flags & QSE_FIO_NOSHWR))
open_mode |= OPEN_SHARE_DENYREADWRITE;
else if (flags & QSE_FIO_NOSHRD)
open_mode |= OPEN_SHARE_DENYREAD;
else if (flags & QSE_FIO_NOSHWR)
open_mode |= OPEN_SHARE_DENYWRITE;
else
open_mode |= OPEN_SHARE_DENYNONE;
if ((flags & QSE_FIO_READ) &&
(flags & QSE_FIO_WRITE)) open_mode |= OPEN_ACCESS_READWRITE;
else if (flags & QSE_FIO_READ) open_mode |= OPEN_ACCESS_READONLY;
else if (flags & QSE_FIO_WRITE) open_mode |= OPEN_ACCESS_WRITEONLY;
open_attr = (mode & QSE_FIO_WUSR)? FILE_NORMAL: FILE_READONLY;
ret = DosOpenL (
path, /* file name */
path_mb, /* file name */
&handle, /* file handle */
&action_taken, /* store action taken */
zero, /* size */
FILE_NORMAL, /* attribute */
open_attr, /* attribute */
open_action, /* action if it exists */
open_mode, /* open mode */
0L
@ -416,7 +443,7 @@ qse_fio_off_t qse_fio_seek (
int qse_fio_truncate (qse_fio_t* fio, qse_fio_off_t size)
{
#ifdef _WIN32
#if defined(_WIN32)
LARGE_INTEGER x;
x.QuadPart = size;
@ -485,6 +512,17 @@ static qse_ssize_t fio_write (qse_fio_t* fio, const void* data, qse_size_t size)
qse_ssize_t qse_fio_write (qse_fio_t* fio, const void* data, qse_size_t size)
{
#if defined(__OS2__)
if (fio->flags & QSE_FIO_APPEND)
{
/* i do this on a best-effort basis */
LONGLONG pos, newpos;
pos.ulLo = (ULONG)0;
pos.ulHi = (ULONG)0;
DosSetFilePtrL (fio->handle, pos, FILE_END, &newpos);
}
#endif
if (fio->tio == QSE_NULL)
return fio_write (fio, data, size);
else
@ -498,7 +536,7 @@ qse_ssize_t qse_fio_flush (qse_fio_t* fio)
}
#ifdef _WIN32
#if defined(_WIN32)
static int get_devname_from_handle (
HANDLE handle, qse_char_t* buf, qse_size_t len)
@ -657,10 +695,8 @@ static qse_ssize_t fio_input (int cmd, void* arg, void* buf, qse_size_t size)
{
qse_fio_t* fio = (qse_fio_t*)arg;
QSE_ASSERT (fio != QSE_NULL);
if (cmd == QSE_TIO_IO_DATA)
{
return fio_read (fio, buf, size);
}
if (cmd == QSE_TIO_IO_DATA) return fio_read (fio, buf, size);
/* take no actions for OPEN and CLOSE as they are handled
* by fio */
@ -671,10 +707,7 @@ static qse_ssize_t fio_output (int cmd, void* arg, void* buf, qse_size_t size)
{
qse_fio_t* fio = (qse_fio_t*)arg;
QSE_ASSERT (fio != QSE_NULL);
if (cmd == QSE_TIO_IO_DATA)
{
return fio_write (fio, buf, size);
}
if (cmd == QSE_TIO_IO_DATA) return fio_write (fio, buf, size);
/* take no actions for OPEN and CLOSE as they are handled
* by fio */

View File

@ -1,5 +1,5 @@
/*
* $Id: pio.c 400 2011-03-16 08:37:06Z hyunghwan.chung $
* $Id: pio.c 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -26,6 +26,7 @@
# include <windows.h>
# include <tchar.h>
#elif defined(__OS2__)
# define INCL_DOSQUEUES
# define INCL_DOSPROCESS
# define INCL_DOSERRORS
# include <os2.h>
@ -95,7 +96,6 @@ qse_pio_t* qse_pio_init (
int i, minidx = -1, maxidx = -1;
#if defined(_WIN32)
SECURITY_ATTRIBUTES secattr;
PROCESS_INFORMATION procinfo;
@ -105,6 +105,12 @@ qse_pio_t* qse_pio_init (
BOOL x;
#elif defined(__OS2__)
/* TODO: implmenet this for os/2 */
APIRET rc;
ULONG pipe_size = 4096;
UCHAR load_error[CCHMAXPATH] = { 0 };
RESULTCODES child_rc;
HFILE old_in, old_out, old_err;
HFILE std_in, std_out, std_err;
#else
qse_pio_pid_t pid;
#endif
@ -114,7 +120,7 @@ qse_pio_t* qse_pio_init (
QSE_MEMSET (pio, 0, QSE_SIZEOF(*pio));
pio->mmgr = mmgr;
#ifdef _WIN32
#if defined(_WIN32)
/* http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx */
secattr.nLength = QSE_SIZEOF(secattr);
@ -165,6 +171,8 @@ qse_pio_t* qse_pio_init (
maxidx = 5;
}
if (maxidx == -1) goto oops;
if ((oflags & QSE_PIO_INTONUL) ||
(oflags & QSE_PIO_OUTTONUL) ||
(oflags & QSE_PIO_ERRTONUL))
@ -210,7 +218,7 @@ qse_pio_t* qse_pio_init (
if (oflags & QSE_PIO_OUTTOERR) startup.hStdOutput = handle[5];
}
if (oflags & QSE_PIO_INTONUL) startup.hStdOutput = windevnul;
if (oflags & QSE_PIO_INTONUL) startup.hStdInput = windevnul;
if (oflags & QSE_PIO_OUTTONUL) startup.hStdOutput = windevnul;
if (oflags & QSE_PIO_ERRTONUL) startup.hStdError = windevnul;
@ -274,8 +282,113 @@ qse_pio_t* qse_pio_init (
CloseHandle (procinfo.hThread);
pio->child = procinfo.hProcess;
#elif defined(__OS2__)
/* TODO: implement this for OS/2 */
if (oflags & QSE_PIO_WRITEIN)
{
ULONG state;
/* child reads, parent writes */
if (DosCreatePipe (
&handle[0], &handle[1], pipe_size) != NO_ERROR) goto oops;
/* don't inherit write handle */
if (DosQueryFHState (handle[1], &state) != NO_ERROR) goto oops;
state &= 0x7F88; /* this & operation as shown in the ibm documents */
if (DosSetFHState (handle[1], state | OPEN_FLAGS_NOINHERIT) != NO_ERROR) goto oops;
minidx = 0; maxidx = 1;
}
if (oflags & QSE_PIO_READOUT)
{
ULONG state;
/* child writes, parent reads */
if (DosCreatePipe (
&handle[2], &handle[3], pipe_size) != NO_ERROR) goto oops;
/* don't inherit read handle */
if (DosQueryFHState (handle[2], &state) != NO_ERROR) goto oops;
state &= 0x7F88; /* this & operation as shown in the ibm documents */
if (DosSetFHState (handle[2], state | OPEN_FLAGS_NOINHERIT) != NO_ERROR) goto oops;
if (minidx == -1) minidx = 2;
maxidx = 3;
}
if (oflags & QSE_PIO_READERR)
{
ULONG state;
/* child writes, parent reads */
if (DosCreatePipe (
&handle[4], &handle[5], pipe_size) != NO_ERROR) goto oops;
/* don't inherit read handle */
if (DosQueryFHState (handle[4], &state) != NO_ERROR) goto oops;
state &= 0x7F88; /* this & operation as shown in the ibm documents */
if (DosSetFHState (handle[4], state | OPEN_FLAGS_NOINHERIT) != NO_ERROR) goto oops;
if (minidx == -1) minidx = 4;
maxidx = 5;
}
if (maxidx == -1) goto oops;
old_in = old_out = old_err = 0xFFFFFFFFFF;
std_in = 0; std_out = 1; std_err = 2;
/* TODO: error handling ... */
if (oflags & QSE_PIO_WRITEIN)
{
DosDupHandle (std_in, &old_in); /* store the original */
DosDupHandle (handle[0], &std_in); /* substitute a pipe handle */
}
if (oflags & QSE_PIO_READOUT)
{
DosDupHandle (std_out, &old_out);
DosDupHandle (handle[3], &std_out);
if (oflags & QSE_PIO_ERRTOOUT) DosDupHandle (handle[3], &std_err);
}
if (oflags & QSE_PIO_READERR)
{
DosDupHandle (std_err, &old_err);
DosDupHandle (handle[5], &std_err);
if (oflags & QSE_PIO_OUTTOERR) DosDupHandle (handle[5], &std_out);
}
/*
if (oflags & QSE_PIO_INTONUL) startup.hStdOutput = os2devnul;
if (oflags & QSE_PIO_OUTTONUL) startup.hStdOutput = os2devnul;
if (oflags & QSE_PIO_ERRTONUL) startup.hStdError = os2devnul;
*/
if (oflags & QSE_PIO_DROPIN) DosClose (std_in);
if (oflags & QSE_PIO_DROPOUT) DosClose (std_out);
if (oflags & QSE_PIO_DROPERR) DosClose (std_err);
rc = DosExecPgm (
&load_error,
QSE_SIZEOF(load_error),
EXEC_ASYNCRESULT,
NULL,
NULL,
&child_rc,
cmd /* TODO: mchar... */
);
if (rc != NO_ERROR) goto oops;
/* restore file handles to the original for this parent */
DosDupHandle (old_in, &std_in);
DosDupHandle (old_out, &std_out);
DosDupHandle (old_err, &std_err);
pio->child = child_rc.codeTerminate;
#else
if (oflags & QSE_PIO_WRITEIN)
@ -312,7 +425,7 @@ qse_pio_t* qse_pio_init (
extern char** environ;
int fcnt = 0;
#ifndef QSE_CHAR_IS_MCHAR
qse_size_t n, mn, wl;
qse_size_t n, mn, wl;
qse_char_t* wcmd = QSE_NULL;
qse_mchar_t buf[64];
#endif
@ -431,7 +544,7 @@ qse_pio_t* qse_pio_init (
#else
if (oflags & QSE_PIO_SHELL)
{
n = qse_wcstombslen (cmd, &mn);
n = qse_wcstombslen (cmd, &mn);
if (cmd[n] != QSE_WT('\0'))
{
/* cmd has illegal sequence */
@ -599,7 +712,7 @@ qse_pio_t* qse_pio_init (
return pio;
oops:
#ifdef _WIN32
#if defined(_WIN32)
if (windevnul != INVALID_HANDLE_VALUE) CloseHandle (windevnul);
if (dup != QSE_NULL) QSE_MMGR_FREE (mmgr, dup);
#endif
@ -608,14 +721,15 @@ oops:
{
if (tio[i] != QSE_NULL) qse_tio_close (tio[i]);
}
#if defined(_WIN32)
for (i = minidx; i < maxidx; i++) CloseHandle (handle[i]);
#elif defined(__OS2__)
/* TODO: */
for (i = minidx; i < maxidx; i++) DosClose (handle[i]);
#else
for (i = minidx; i < maxidx; i++) QSE_CLOSE (handle[i]);
#endif
return QSE_NULL;
}
@ -859,8 +973,7 @@ int qse_pio_wait (qse_pio_t* pio)
DWORD ecode, w;
if (pio->child == QSE_PIO_PID_NIL)
{
{
pio->errnum = QSE_PIO_ECHILD;
return -1;
}
@ -908,8 +1021,42 @@ int qse_pio_wait (qse_pio_t* pio)
return ecode;
#elif defined(__OS2__)
/* TODO: implement this */
return -1;
APIRET rc;
RESULTCODES child_rc;
PID ppid;
if (pio->child == QSE_PIO_PID_NIL)
{
pio->errnum = QSE_PIO_ECHILD;
return -1;
}
rc = DosWaitChild (
DCWA_PROCESS,
((pio->option & QSE_PIO_WAIT_NOBLOCK)? DCWW_NOWAIT: DCWW_WAIT),
&child_rc,
&ppid,
pio->child
);
if (rc == ERROR_CHILD_NOT_COMPLETE)
{
/* the child process is still alive */
return 255 + 1;
}
if (rc != NO_ERROR)
{
/* WAIT_FAILED, WAIT_ABANDONED */
pio->errnum = QSE_PIO_ESUBSYS;
return -1;
}
/* close handle here to emulate waitpid() as much as possible. */
DosClose (pio->child);
pio->child = QSE_PIO_PID_NIL;
return child_rc.codeResult;
#else
int opt = 0;
int ret = -1;

View File

@ -1,5 +1,5 @@
/*
* $Id: sio.c 401 2011-03-16 15:17:25Z hyunghwan.chung $
* $Id: sio.c 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -77,7 +77,7 @@ static qse_sio_t __sio_out =
{
QSE_NULL,
0,
#ifdef _WIN32
#if defined(_WIN32)
(HANDLE)STD_OUTPUT_HANDLE,
#elif defined(__OS2__)
(HFILE)1,
@ -115,7 +115,7 @@ static qse_sio_t __sio_err =
{
QSE_NULL,
0,
#ifdef _WIN32
#if defined(_WIN32)
(HANDLE)STD_ERROR_HANDLE,
#elif defined(__OS2__)
(HFILE)2,
@ -331,7 +331,7 @@ static qse_ssize_t __sio_input (int cmd, void* arg, void* buf, qse_size_t size)
if (cmd == QSE_TIO_IO_DATA)
{
#ifdef _WIN32
#if defined(_WIN32)
/* TODO: I hate this way of adjusting the handle value
* Is there any good ways to do it statically? */
HANDLE h = sio->fio.handle;
@ -360,7 +360,7 @@ static qse_ssize_t __sio_output (int cmd, void* arg, void* buf, qse_size_t size)
if (cmd == QSE_TIO_IO_DATA)
{
#ifdef _WIN32
#if defined(_WIN32)
/* TODO: I hate this way of adjusting the handle value
* Is there any good ways to do it statically? */
HANDLE h = sio->fio.handle;

View File

@ -1,5 +1,5 @@
/*
* $Id: str_cnv.c 323 2010-04-05 12:50:01Z hyunghwan.chung $
* $Id: str_cnv.c 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -247,7 +247,8 @@ qse_size_t qse_wcstombslen (const qse_wchar_t* wcs, qse_size_t* mbslen)
p++; mlen += n;
}
/* this length excludes the terminating null character. */
/* this length holds the number of resulting multi-byte characters
* excluding the terminating null character */
*mbslen = mlen;
/* returns the number of characters handled.
@ -310,6 +311,8 @@ qse_size_t qse_wcstombs (
mbs += n; rem -= n; p++;
}
/* update mbslen to the length of the mbs string converted excluding
* terminating null */
*mbslen -= rem;
/* null-terminate the multibyte sequence if it has sufficient space */
@ -358,15 +361,15 @@ int qse_mbstowcs_strict (
/* wcs not big enough to be null-terminated.
* if it has been null-terminated properly,
* wn should be less than wcslen. */
return -1;
}
return -1;
}
if (mbs[n] != QSE_MT('\0'))
{
/* incomplete sequence or invalid sequence */
return -1;
}
return 0;
return 0;
}
int qse_wcstombs_strict (

View File

@ -1,5 +1,5 @@
/*
* $Id: time.c 400 2011-03-16 08:37:06Z hyunghwan.chung $
* $Id: time.c 402 2011-03-18 15:07:21Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
This file is part of QSE.
@ -24,14 +24,17 @@
#if defined(_WIN32)
# include <windows.h>
#elif defined(__OS2__)
# define INCL_DOSDATETIME
# define INCL_DOSERRORS
# include <os2.h>
#else
# include "syscall.h"
# include <sys/time.h>
#endif
#include <time.h>
#ifdef _WIN32
#if defined(_WIN32)
#define WIN_EPOCH_YEAR (1601)
#define WIN_EPOCH_MON (1)
#define WIN_EPOCH_DAY (1)
@ -89,9 +92,33 @@ int qse_gettime (qse_ntime_t* t)
*t = ((qse_ntime_t)(*((qse_int64_t*)&ft)) / (10 * 1000));
*t -= EPOCH_DIFF_MSECS;
return 0;
#elif defined(__OS2__)
/* TODO: implement this */
return -1;
APIRET rc;
DATETIME dt;
qse_btime_t bt;
/* Can I use DosQuerySysInfo(QSV_TIME_LOW) and
* DosQuerySysInfo(QSV_TIME_HIGH) for this instead?
* Maybe, resolution too low as it returns values
* in seconds. */
rc = DosGetDateTime (&dt);
if (rc != NO_ERROR) return -1;
bt.year = dt.year - 1900;
bt.mon = dt.month - 1;
bt.mday = dt.day;
bt.hour = dt.hours;
bt.min = dt.minutes;
bt.sec = dt.seconds;
bt.msec = dt.hundredths * 10;
bt.isdst = -1;
if (qse_timelocal (&bt, t) <= -1) return -1;
return 0;
#else
struct timeval tv;
int n;
@ -99,8 +126,8 @@ int qse_gettime (qse_ntime_t* t)
n = QSE_GETTIMEOFDAY (&tv, QSE_NULL);
if (n == -1) return -1;
*t = (qse_ntime_t)tv.tv_sec*QSE_MSECS_PER_SEC +
(qse_ntime_t)tv.tv_usec/QSE_USECS_PER_MSEC;
*t = (qse_ntime_t)tv.tv_sec * QSE_MSECS_PER_SEC +
(qse_ntime_t)tv.tv_usec / QSE_USECS_PER_MSEC;
return 0;
#endif
}
@ -116,8 +143,24 @@ int qse_settime (qse_ntime_t t)
if (SetSystemTime(&st) == FALSE) return -1;
return 0;
#elif defined(__OS2__)
/* TODO: implement this */
return -1;
APIRET rc;
DATETIME dt;
qse_btime_t bt;
if (qse_localtime (t, &bt) <= -1) return -1;
QSE_MEMSET (&dt, 0, QSE_SIZEOF(dt));
dt.year = bt.year + 1900;
dt.month = bt.mon + 1;
dt.day = bt.mday;
dt.hours = bt.hour;
dt.minutes = bt.min;
dt.seconds = bt.sec;
dt.hundredths = bt.msec / 10;
rc = DosSetDateTime (&dt);
return (rc != NO_ERROR)? -1: 0;
#else
struct timeval tv;
int n;
@ -226,6 +269,12 @@ int qse_localtime (qse_ntime_t nt, qse_btime_t* bt)
#if defined(_WIN32)
tm = localtime (&t);
#elif defined(__OS2__)
# if defined(__WATCOMC__)
struct tm btm;
tm = _localtime (&t, &btm);
# else
# error Please support other compilers that I didn't try.
# endif
#else
struct tm btm;
tm = localtime_r (&t, &btm);
@ -252,8 +301,7 @@ int qse_localtime (qse_ntime_t nt, qse_btime_t* bt)
int qse_timegm (const qse_btime_t* bt, qse_ntime_t* nt)
{
#if 0
#ifdef _WIN32
#if defined(_WIN32)
/* TODO: verify qse_timegm for WIN32 */
SYSTEMTIME st;
FILETIME ft;
@ -272,6 +320,8 @@ int qse_timegm (const qse_btime_t* bt, qse_ntime_t* nt)
*nt -= EPOCH_DIFF_MSECS;
return 0;
#elif defined(__OS2__)
# error NOT IMPLEMENTED YET
#else
/* TODO: qse_timegm - remove dependency on timegm */

View File

@ -21,14 +21,16 @@
#include "scm.h"
static int eval_entity (qse_scm_t* scm);
#if 0
static int save (qse_scm_t* scm, qse_scm_ent_t* )
{
}
static int leave (qse_scm_t* scm)
{
}
}
#endif
int qse_scm_dolambda (qse_scm_t* scm)
{
@ -52,10 +54,10 @@ int qse_scm_doquote (qse_scm_t* scm)
static int define_finish (qse_scm_t* scm)
{
qse_scm_ent_t* var = scm->e.cod;
// qse_scm_ent_t* var = scm->e.cod;
//set var in the environemtn....
leave (scm);
//leave (scm);
return 0;
}
@ -95,7 +97,7 @@ int qse_scm_dodefine (qse_scm_t* scm)
return -1;
}
save car...
// save car...
// let it jump to EVAL and come back to DEFINE_FINISH...
scm->e.cod = PAIR_CAR(cdr);
@ -114,23 +116,23 @@ int qse_scm_dobegin (qse_scm_t* scm)
qse_scm_ent_t* car, * cdr;
if (IS_SMALLINT(scm.e.cod) || TYPE(scm.e.cod) != QSE_SCM_ENT_PAIR)
if (IS_SMALLINT(scm, scm->e.cod) || TYPE(scm->e.cod) != QSE_SCM_ENT_PAIR)
{
/* (begin (+ x y) . 30) */
qse_scm_seterror (scm, QSE_SCM_EARGBAD, QSE_NULL, QSE_NULL);
return -1;
}
car = PAIR_CAR(scm.e.cod);
cdr = PAIR_CDR(scm.e.cod);
car = PAIR_CAR(scm->e.cod);
cdr = PAIR_CDR(scm->e.cod);
if (!IS_NIL(cdr))
if (!IS_NIL(scm,cdr))
{
save (BEGIN... cdr);
//save (BEGIN... cdr);
}
scm.e.cod = car;
scm.e.op = eval_entity;
scm->e.cod = car;
scm->e.op = eval_entity;
return 0;
}

View File

@ -26,6 +26,9 @@
#if defined(_WIN32)
# include <windows.h>
#if defined(__OS2__)
# define INCL_DOSPROCESS
# include <os2.h>
#else
# include <unistd.h>
# include <signal.h>
@ -86,9 +89,12 @@ public:
if (run.setGlobal (idLastSleep, x) <= -1) return -1;
#ifdef _WIN32
#if defined(_WIN32)
::Sleep ((DWORD)(x * 1000));
return ret.setInt (0);
#elif defined(__OS2__)
::DosSleep ((ULONG)(x * 1000));
return ret.setInt (0);
#else
return ret.setInt (::sleep (x));
#endif

View File

@ -4,8 +4,12 @@
#include <string.h>
#include <locale.h>
#ifdef _WIN32
#if defined(_WIN32)
# include <windows.h>
#elif defined(__OS2__)
# define INCL_DOSPROCESS
# define INCL_DOSERRORS
# include <os2.h>
#else
# include <unistd.h>
# include <sys/wait.h>
@ -245,7 +249,7 @@ static int test9 (void)
pio = qse_pio_open (
QSE_NULL,
0,
#ifdef _WIN32
#if defined(_WIN32) || defined(__OS2__)
QSE_T(".\\sll.exe"),
#else
QSE_T("/bin/ls -laF"),
@ -258,7 +262,7 @@ static int test9 (void)
return -1;
}
#ifdef _WIN32
#if defined(_WIN32)
{
int n = 5;
@ -267,6 +271,17 @@ static int test9 (void)
qse_printf (QSE_T("WaitForSingleObject....%d\n"),
WaitForSingleObject (pio->child, 0));
}
#elif defined(__OS2__)
{
int n = 5;
#error NO IMPLEMENTED YET.
qse_printf (QSE_T("sleeping for %d seconds\n"), n);
DosSleep (n * 1000);
qse_printf (QSE_T("WaitForSingleObject....%d\n"),
WaitForSingleObject (pio->child, 0));
DosWaitChild (DCWA_PROCESS, DCWW_WAIT,..);
}
#else
{
int status;

View File

@ -0,0 +1,129 @@
40
targetIdent
0
MProject
1
MComponent
0
2
WString
4
OEXE
3
WString
5
oc2eo
1
0
1
4
MCommand
0
5
MCommand
0
6
MItem
10
qsescm.exe
7
WString
4
OEXE
8
WVList
2
9
MVState
10
WString
7
OS2LINK
11
WString
28
?????Library directories(;):
1
12
WString
27
../../lib/cmn ../../lib/scm
0
13
MVState
14
WString
7
OS2LINK
15
WString
18
?????Libraries(,):
1
16
WString
13
qsecmn qsescm
0
17
WVList
0
-1
1
1
0
18
WPickList
2
19
MItem
3
*.c
20
WString
4
COBJ
21
WVList
0
22
WVList
0
-1
1
1
0
23
MItem
28
..\..\..\..\..\cmd\scm\scm.c
24
WString
4
COBJ
25
WVList
1
26
MVState
27
WString
3
WCC
28
WString
25
o?2??Include directories:
1
29
WString
54
"$(%watcom)\h;$(%watcom)\h\os2;..\..\..\..\..\include"
0
30
WVList
0
19
1
1
0

View File

@ -0,0 +1,691 @@
40
targetIdent
0
MProject
1
MComponent
0
2
WString
3
LIB
3
WString
5
o_2so
1
0
1
4
MCommand
0
5
MCommand
0
6
MItem
10
qsecmn.lib
7
WString
3
LIB
8
WVList
0
9
WVList
0
-1
1
1
0
10
WPickList
35
11
MItem
3
*.c
12
WString
4
COBJ
13
WVList
1
14
MVState
15
WString
3
WCC
16
WString
25
o?2??Include directories:
1
17
WString
54
"$(%watcom)\h;$(%watcom)\h\os2;..\..\..\..\..\include"
0
18
WVList
0
-1
1
1
0
19
MItem
35
..\..\..\..\..\lib\cmn\alg_search.c
20
WString
4
COBJ
21
WVList
0
22
WVList
0
11
1
1
0
23
MItem
33
..\..\..\..\..\lib\cmn\alg_sort.c
24
WString
4
COBJ
25
WVList
0
26
WVList
0
11
1
1
0
27
MItem
31
..\..\..\..\..\lib\cmn\assert.c
28
WString
4
COBJ
29
WVList
0
30
WVList
0
11
1
1
0
31
MItem
28
..\..\..\..\..\lib\cmn\chr.c
32
WString
4
COBJ
33
WVList
0
34
WVList
0
11
1
1
0
35
MItem
32
..\..\..\..\..\lib\cmn\chr_cnv.c
36
WString
4
COBJ
37
WVList
0
38
WVList
0
11
1
1
0
39
MItem
28
..\..\..\..\..\lib\cmn\dll.c
40
WString
4
COBJ
41
WVList
0
42
WVList
0
11
1
1
0
43
MItem
28
..\..\..\..\..\lib\cmn\fio.c
44
WString
4
COBJ
45
WVList
0
46
WVList
0
11
1
1
0
47
MItem
28
..\..\..\..\..\lib\cmn\fma.c
48
WString
4
COBJ
49
WVList
0
50
WVList
0
11
1
1
0
51
MItem
28
..\..\..\..\..\lib\cmn\gdl.c
52
WString
4
COBJ
53
WVList
0
54
WVList
0
11
1
1
0
55
MItem
28
..\..\..\..\..\lib\cmn\htb.c
56
WString
4
COBJ
57
WVList
0
58
WVList
0
11
1
1
0
59
MItem
28
..\..\..\..\..\lib\cmn\lda.c
60
WString
4
COBJ
61
WVList
0
62
WVList
0
11
1
1
0
63
MItem
29
..\..\..\..\..\lib\cmn\main.c
64
WString
4
COBJ
65
WVList
0
66
WVList
0
11
1
1
0
67
MItem
28
..\..\..\..\..\lib\cmn\mem.c
68
WString
4
COBJ
69
WVList
0
70
WVList
0
11
1
1
0
71
MItem
29
..\..\..\..\..\lib\cmn\misc.c
72
WString
4
COBJ
73
WVList
0
74
WVList
0
11
1
1
0
75
MItem
28
..\..\..\..\..\lib\cmn\oht.c
76
WString
4
COBJ
77
WVList
0
78
WVList
0
11
1
1
0
79
MItem
28
..\..\..\..\..\lib\cmn\opt.c
80
WString
4
COBJ
81
WVList
0
82
WVList
0
11
1
1
0
83
MItem
28
..\..\..\..\..\lib\cmn\pio.c
84
WString
4
COBJ
85
WVList
0
86
WVList
0
11
1
1
0
87
MItem
28
..\..\..\..\..\lib\cmn\rbt.c
88
WString
4
COBJ
89
WVList
0
90
WVList
0
11
1
1
0
91
MItem
28
..\..\..\..\..\lib\cmn\rex.c
92
WString
4
COBJ
93
WVList
0
94
WVList
0
11
1
1
0
95
MItem
28
..\..\..\..\..\lib\cmn\sio.c
96
WString
4
COBJ
97
WVList
0
98
WVList
0
11
1
1
0
99
MItem
28
..\..\..\..\..\lib\cmn\sll.c
100
WString
4
COBJ
101
WVList
0
102
WVList
0
11
1
1
0
103
MItem
30
..\..\..\..\..\lib\cmn\stdio.c
104
WString
4
COBJ
105
WVList
0
106
WVList
0
11
1
1
0
107
MItem
32
..\..\..\..\..\lib\cmn\str_bas.c
108
WString
4
COBJ
109
WVList
0
110
WVList
0
11
1
1
0
111
MItem
32
..\..\..\..\..\lib\cmn\str_cnv.c
112
WString
4
COBJ
113
WVList
0
114
WVList
0
11
1
1
0
115
MItem
32
..\..\..\..\..\lib\cmn\str_dyn.c
116
WString
4
COBJ
117
WVList
0
118
WVList
0
11
1
1
0
119
MItem
32
..\..\..\..\..\lib\cmn\str_utl.c
120
WString
4
COBJ
121
WVList
0
122
WVList
0
11
1
1
0
123
MItem
29
..\..\..\..\..\lib\cmn\time.c
124
WString
4
COBJ
125
WVList
0
126
WVList
0
11
1
1
0
127
MItem
28
..\..\..\..\..\lib\cmn\tio.c
128
WString
4
COBJ
129
WVList
0
130
WVList
0
11
1
1
0
131
MItem
32
..\..\..\..\..\lib\cmn\tio_get.c
132
WString
4
COBJ
133
WVList
0
134
WVList
0
11
1
1
0
135
MItem
32
..\..\..\..\..\lib\cmn\tio_put.c
136
WString
4
COBJ
137
WVList
0
138
WVList
0
11
1
1
0
139
MItem
28
..\..\..\..\..\lib\cmn\xma.c
140
WString
4
COBJ
141
WVList
0
142
WVList
0
11
1
1
0
143
MItem
3
*.h
144
WString
3
NIL
145
WVList
0
146
WVList
0
-1
1
1
0
147
MItem
28
..\..\..\..\..\lib\cmn\mem.h
148
WString
3
NIL
149
WVList
0
150
WVList
0
143
1
1
0
151
MItem
32
..\..\..\..\..\lib\cmn\syscall.h
152
WString
3
NIL
153
WVList
0
154
WVList
0
143
1
1
0

View File

@ -0,0 +1,223 @@
40
targetIdent
0
MProject
1
MComponent
0
2
WString
3
LIB
3
WString
5
o_2so
1
0
1
4
MCommand
0
5
MCommand
0
6
MItem
10
qsescm.lib
7
WString
3
LIB
8
WVList
0
9
WVList
0
-1
1
1
0
10
WPickList
9
11
MItem
3
*.c
12
WString
4
COBJ
13
WVList
1
14
MVState
15
WString
3
WCC
16
WString
25
o?2??Include directories:
1
17
WString
54
"$(%watcom)\h;$(%watcom)\h\os2;..\..\..\..\..\include"
0
18
WVList
0
-1
1
1
0
19
MItem
28
..\..\..\..\..\lib\scm\err.c
20
WString
4
COBJ
21
WVList
0
22
WVList
0
11
1
1
0
23
MItem
29
..\..\..\..\..\lib\scm\eval.c
24
WString
4
COBJ
25
WVList
0
26
WVList
0
11
1
1
0
27
MItem
28
..\..\..\..\..\lib\scm\mem.c
28
WString
4
COBJ
29
WVList
0
30
WVList
0
11
1
1
0
31
MItem
30
..\..\..\..\..\lib\scm\print.c
32
WString
4
COBJ
33
WVList
0
34
WVList
0
11
1
1
0
35
MItem
29
..\..\..\..\..\lib\scm\read.c
36
WString
4
COBJ
37
WVList
0
38
WVList
0
11
1
1
0
39
MItem
28
..\..\..\..\..\lib\scm\scm.c
40
WString
4
COBJ
41
WVList
0
42
WVList
0
11
1
1
0
43
MItem
3
*.h
44
WString
3
NIL
45
WVList
0
46
WVList
0
-1
1
1
0
47
MItem
28
..\..\..\..\..\lib\scm\scm.h
48
WString
3
NIL
49
WVList
0
50
WVList
0
43
1
1
0

View File

@ -0,0 +1,169 @@
40
targetIdent
0
MProject
1
MComponent
0
2
WString
3
LIB
3
WString
5
o_2so
1
0
1
4
MCommand
0
5
MCommand
0
6
MItem
10
qsesed.lib
7
WString
3
LIB
8
WVList
0
9
WVList
0
-1
1
1
0
10
WPickList
6
11
MItem
3
*.c
12
WString
4
COBJ
13
WVList
1
14
MVState
15
WString
3
WCC
16
WString
25
o?2??Include directories:
1
17
WString
54
"$(%watcom)\h;$(%watcom)\h\os2;..\..\..\..\..\include"
0
18
WVList
0
-1
1
1
0
19
MItem
28
..\..\..\..\..\lib\sed\err.c
20
WString
4
COBJ
21
WVList
0
22
WVList
0
11
1
1
0
23
MItem
28
..\..\..\..\..\lib\sed\sed.c
24
WString
4
COBJ
25
WVList
0
26
WVList
0
11
1
1
0
27
MItem
28
..\..\..\..\..\lib\sed\std.c
28
WString
4
COBJ
29
WVList
0
30
WVList
0
11
1
1
0
31
MItem
3
*.h
32
WString
3
NIL
33
WVList
0
34
WVList
0
-1
1
1
0
35
MItem
28
..\..\..\..\..\lib\sed\sed.h
36
WString
3
NIL
37
WVList
0
38
WVList
0
31
1
1
0

View File

@ -4,8 +4,8 @@ projectIdent
VpeMain
1
WRect
130
560
610
213
9320
9120
2
@ -16,7 +16,7 @@ MCommand
4
MCommand
0
3
8
5
WFileName
30
@ -30,54 +30,154 @@ WFileName
30
release/os2/cmd/sed/qsesed.tgt
8
WVList
3
WFileName
30
release/os2/lib/scm/qsescm.tgt
9
VComponent
WFileName
28
debug/os2/lib/cmn/qsecmn.tgt
10
WFileName
28
debug/os2/lib/sed/qsesed.tgt
11
WFileName
28
debug/os2/lib/scm/qsescm.tgt
12
WFileName
28
debug/os2/cmd/scm/qsescm.tgt
13
WVList
8
14
VComponent
15
WRect
0
0
5700
4240
1
0
0
11
16
WFileName
30
release/os2/lib/cmn/qsecmn.tgt
10
0
14
12
17
VComponent
13
18
WRect
290
280
90
693
5700
4253
4240
1
0
0
14
19
WFileName
30
release/os2/lib/sed/qsesed.tgt
0
0
15
20
VComponent
16
21
WRect
2100
866
853
5700
4253
4240
1
0
0
17
22
WFileName
30
release/os2/cmd/sed/qsesed.tgt
0
1
15
23
VComponent
24
WRect
590
520
5700
4253
1
0
25
WFileName
30
release/os2/lib/scm/qsescm.tgt
0
2
26
VComponent
27
WRect
430
333
5700
4253
0
0
28
WFileName
28
debug/os2/lib/cmn/qsecmn.tgt
0
0
29
VComponent
30
WRect
1050
1800
5700
4253
0
0
31
WFileName
28
debug/os2/lib/sed/qsesed.tgt
0
5
32
VComponent
33
WRect
2680
2093
5700
4253
0
0
34
WFileName
28
debug/os2/lib/scm/qsescm.tgt
0
3
35
VComponent
36
WRect
0
0
5700
4253
0
0
37
WFileName
28
debug/os2/cmd/scm/qsescm.tgt
0
1
35

View File

@ -0,0 +1,287 @@
40
targetIdent
0
MProject
1
MComponent
0
2
WString
3
LIB
3
WString
5
o_2so
1
0
1
4
MCommand
0
5
MCommand
0
6
MItem
10
qsescm.lib
7
WString
3
LIB
8
WVList
0
9
WVList
0
-1
1
1
0
10
WPickList
9
11
MItem
3
*.c
12
WString
4
COBJ
13
WVList
6
14
MVState
15
WString
3
WCC
16
WString
25
o?2??Include directories:
1
17
WString
54
"$(%watcom)/h;$(%watcom)/h/os2;..\..\..\..\..\include"
0
18
MVState
19
WString
3
WCC
20
WString
23
?????Macro definitions:
1
21
WString
6
NDEBUG
0
22
MRState
23
WString
3
WCC
24
WString
21
?????No optimizations
1
0
25
MRState
26
WString
3
WCC
27
WString
27
?????Average space and time
1
1
28
MRState
29
WString
3
WCC
30
WString
29
?????No debugging information
1
1
31
MRState
32
WString
3
WCC
33
WString
24
?????Full debugging info
1
0
34
WVList
0
-1
1
1
0
35
MItem
28
../../../../../lib/scm/err.c
36
WString
4
COBJ
37
WVList
0
38
WVList
0
11
1
1
0
39
MItem
29
../../../../../lib/scm/eval.c
40
WString
4
COBJ
41
WVList
0
42
WVList
0
11
1
1
0
43
MItem
28
../../../../../lib/scm/mem.c
44
WString
4
COBJ
45
WVList
0
46
WVList
0
11
1
1
0
47
MItem
30
../../../../../lib/scm/print.c
48
WString
4
COBJ
49
WVList
0
50
WVList
0
11
1
1
0
51
MItem
29
../../../../../lib/scm/read.c
52
WString
4
COBJ
53
WVList
0
54
WVList
0
11
1
1
0
55
MItem
28
../../../../../lib/scm/scm.c
56
WString
4
COBJ
57
WVList
0
58
WVList
0
11
1
1
0
59
MItem
3
*.h
60
WString
3
NIL
61
WVList
0
62
WVList
0
-1
1
1
0
63
MItem
28
../../../../../lib/scm/scm.h
64
WString
3
NIL
65
WVList
0
66
WVList
0
59
1
1
0