modified code for the first successful dos/4gw build omitting unsupported features
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: pio.c 454 2011-05-06 15:28:27Z hyunghwan.chung $
|
||||
* $Id: pio.c 455 2011-05-09 16:11:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -105,8 +105,8 @@ qse_pio_t* qse_pio_init (
|
||||
qse_char_t* dup = QSE_NULL;
|
||||
HANDLE windevnul = INVALID_HANDLE_VALUE;
|
||||
BOOL x;
|
||||
|
||||
#elif defined(__OS2__)
|
||||
/* TODO: implmenet this for os/2 */
|
||||
APIRET rc;
|
||||
ULONG pipe_size = 4096;
|
||||
UCHAR load_error[CCHMAXPATH];
|
||||
@ -118,8 +118,11 @@ qse_pio_t* qse_pio_init (
|
||||
qse_mchar_t* cmd_line = QSE_NULL;
|
||||
qse_mchar_t* cmd_file;
|
||||
HFILE os2devnul = (HFILE)-1;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
# error UNSUPPORTED
|
||||
/* TODO: implmenet this for dos
|
||||
unsupported yet */
|
||||
|
||||
#else
|
||||
qse_pio_pid_t pid;
|
||||
#endif
|
||||
@ -527,7 +530,11 @@ qse_pio_t* qse_pio_init (
|
||||
|
||||
if (rc != NO_ERROR) goto oops;
|
||||
pio->child = child_rc.codeTerminate;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
|
||||
/* TODO: implement this */
|
||||
|
||||
#else
|
||||
|
||||
if (oflags & QSE_PIO_WRITEIN)
|
||||
@ -854,9 +861,11 @@ qse_pio_t* qse_pio_init (
|
||||
return pio;
|
||||
|
||||
oops:
|
||||
|
||||
#if defined(_WIN32)
|
||||
if (windevnul != INVALID_HANDLE_VALUE) CloseHandle (windevnul);
|
||||
if (dup) QSE_MMGR_FREE (mmgr, dup);
|
||||
|
||||
#elif defined(__OS2__)
|
||||
if (cmd_line) QSE_MMGR_FREE (mmgr, cmd_line);
|
||||
if (old_in != QSE_PIO_HND_NIL)
|
||||
@ -889,6 +898,11 @@ oops:
|
||||
{
|
||||
if (handle[i] != QSE_PIO_HND_NIL) DosClose (handle[i]);
|
||||
}
|
||||
#elif defined(__DOS__)
|
||||
for (i = minidx; i < maxidx; i++)
|
||||
{
|
||||
if (handle[i] != QSE_PIO_HND_NIL) close (handle[i]);
|
||||
}
|
||||
#else
|
||||
for (i = minidx; i < maxidx; i++)
|
||||
{
|
||||
@ -962,6 +976,8 @@ static qse_ssize_t pio_read (
|
||||
#elif defined(__OS2__)
|
||||
ULONG count;
|
||||
APIRET rc;
|
||||
#elif defined(__DOS__)
|
||||
int n;
|
||||
#else
|
||||
qse_ssize_t n;
|
||||
#endif
|
||||
@ -984,6 +1000,7 @@ static qse_ssize_t pio_read (
|
||||
return -1;
|
||||
}
|
||||
return (qse_ssize_t)count;
|
||||
|
||||
#elif defined(__OS2__)
|
||||
if (size > QSE_TYPE_MAX(ULONG)) size = QSE_TYPE_MAX(ULONG);
|
||||
rc = DosRead (hnd, buf, (ULONG)size, &count);
|
||||
@ -994,6 +1011,16 @@ static qse_ssize_t pio_read (
|
||||
return -1;
|
||||
}
|
||||
return (qse_ssize_t)count;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
/* TODO: verify this */
|
||||
if (size > QSE_TYPE_MAX(unsigned int))
|
||||
size = QSE_TYPE_MAX(unsigned int);
|
||||
|
||||
n = read (hnd, buf, size);
|
||||
if (n == -1) pio->errnum = QSE_PIO_ESUBSYS;
|
||||
return n;
|
||||
|
||||
#else
|
||||
|
||||
if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t);
|
||||
@ -1039,6 +1066,8 @@ static qse_ssize_t pio_write (
|
||||
#elif defined(__OS2__)
|
||||
ULONG count;
|
||||
APIRET rc;
|
||||
#elif defined(__DOS__)
|
||||
int n;
|
||||
#else
|
||||
qse_ssize_t n;
|
||||
#endif
|
||||
@ -1073,6 +1102,14 @@ static qse_ssize_t pio_write (
|
||||
}
|
||||
return (qse_ssize_t)count;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
if (size > QSE_TYPE_MAX(unsigned int))
|
||||
size = QSE_TYPE_MAX(unsigned int);
|
||||
|
||||
n = write (hnd, data, size);
|
||||
if (n == -1) pio->errnum = QSE_PIO_ESUBSYS;
|
||||
return n;
|
||||
|
||||
#else
|
||||
|
||||
if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t);
|
||||
@ -1131,6 +1168,8 @@ void qse_pio_end (qse_pio_t* pio, qse_pio_hid_t hid)
|
||||
CloseHandle (pio->pin[hid].handle);
|
||||
#elif defined(__OS2__)
|
||||
DosClose (pio->pin[hid].handle);
|
||||
#elif defined(__DOS__)
|
||||
close (pio->pin[hid].handle);
|
||||
#else
|
||||
QSE_CLOSE (pio->pin[hid].handle);
|
||||
#endif
|
||||
@ -1231,6 +1270,10 @@ int qse_pio_wait (qse_pio_t* pio)
|
||||
return (child_rc.codeTerminate == TC_EXIT)?
|
||||
child_rc.codeResult: (255 + 1 + child_rc.codeTerminate);
|
||||
|
||||
#elif defined(__DOS__)
|
||||
/* TOOD: implement this */
|
||||
return -1;
|
||||
|
||||
#else
|
||||
|
||||
int opt = 0;
|
||||
@ -1315,6 +1358,8 @@ int qse_pio_kill (qse_pio_t* pio)
|
||||
DWORD n;
|
||||
#elif defined(__OS2__)
|
||||
APIRET rc;
|
||||
#elif defined(__DOS__)
|
||||
/* TODO: implement this */
|
||||
#else
|
||||
int n;
|
||||
#endif
|
||||
@ -1334,6 +1379,7 @@ int qse_pio_kill (qse_pio_t* pio)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: must use DKP_PROCESS? */
|
||||
rc = DosKillProcess (pio->child, DKP_PROCESSTREE);
|
||||
@ -1343,6 +1389,11 @@ int qse_pio_kill (qse_pio_t* pio)
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
/* TODO: implement this*/
|
||||
return -1;
|
||||
|
||||
#else
|
||||
n = QSE_KILL (pio->child, SIGKILL);
|
||||
if (n <= -1) pio->errnum = QSE_PIO_ESUBSYS;
|
||||
|
@ -339,7 +339,7 @@ QSE_FILE* qse_fopen (const qse_char_t* path, const qse_char_t* mode)
|
||||
{
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
return fopen (path, mode);
|
||||
#elif defined(_WIN32)
|
||||
#elif defined(_WIN32) || defined(__OS2__)
|
||||
return _wfopen (path, mode);
|
||||
#else
|
||||
|
||||
@ -362,13 +362,21 @@ QSE_FILE* qse_fopen (const qse_char_t* path, const qse_char_t* mode)
|
||||
QSE_FILE* qse_popen (const qse_char_t* cmd, const qse_char_t* mode)
|
||||
{
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
#if defined(__OS2__)
|
||||
|
||||
#if defined(__OS2__)
|
||||
return _popen (cmd, mode);
|
||||
#else
|
||||
#elif defined(__DOS__)
|
||||
return QSE_NULL;
|
||||
#else
|
||||
return popen (cmd, mode);
|
||||
#endif
|
||||
#elif defined(_WIN32) || defined(__OS2__)
|
||||
#endif
|
||||
|
||||
#elif defined(_WIN32) || defined(__OS2__)
|
||||
return _wpopen (cmd, mode);
|
||||
|
||||
#elif defined(__DOS__)
|
||||
return QSE_NULL;
|
||||
|
||||
#else
|
||||
char cmd_mb[PATH_MAX + 1];
|
||||
char mode_mb[32];
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: time.c 441 2011-04-22 14:28:43Z hyunghwan.chung $
|
||||
* $Id: time.c 455 2011-05-09 16:11:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -27,6 +27,8 @@
|
||||
# define INCL_DOSDATETIME
|
||||
# define INCL_DOSERRORS
|
||||
# include <os2.h>
|
||||
#elif defined(__DOS__)
|
||||
# include <dos.h>
|
||||
#else
|
||||
# include "syscall.h"
|
||||
# include <sys/time.h>
|
||||
@ -119,6 +121,27 @@ int qse_gettime (qse_ntime_t* t)
|
||||
if (qse_timelocal (&bt, t) <= -1) return -1;
|
||||
return 0;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
|
||||
struct dostime_t dt;
|
||||
struct dosdate_t dd;
|
||||
qse_btime_t bt;
|
||||
|
||||
_dos_gettime (&dt);
|
||||
_dos_getdate (&dd);
|
||||
|
||||
bt.year = dd.year - 1900;
|
||||
bt.mon = dd.month - 1;
|
||||
bt.mday = dd.day;
|
||||
bt.hour = dt.hour;
|
||||
bt.min = dt.minute;
|
||||
bt.sec = dt.second;
|
||||
bt.msec = dt.hsecond * 10;
|
||||
bt.isdst = -1;
|
||||
|
||||
if (qse_timelocal (&bt, t) <= -1) return -1;
|
||||
return 0;
|
||||
|
||||
#else
|
||||
struct timeval tv;
|
||||
int n;
|
||||
@ -142,6 +165,7 @@ int qse_settime (qse_ntime_t t)
|
||||
if (FileTimeToSystemTime (&ft, &st) == FALSE) return -1;
|
||||
if (SetSystemTime(&st) == FALSE) return -1;
|
||||
return 0;
|
||||
|
||||
#elif defined(__OS2__)
|
||||
|
||||
APIRET rc;
|
||||
@ -161,6 +185,28 @@ int qse_settime (qse_ntime_t t)
|
||||
|
||||
rc = DosSetDateTime (&dt);
|
||||
return (rc != NO_ERROR)? -1: 0;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
|
||||
struct dostime_t dt;
|
||||
struct dosdate_t dd;
|
||||
qse_btime_t bt;
|
||||
|
||||
if (qse_localtime (t, &bt) <= -1) return -1;
|
||||
|
||||
dd.year = bt.year + 1900;
|
||||
dd.month = bt.mon + 1;
|
||||
dd.day = bt.mday;
|
||||
dt.hour = bt.hour;
|
||||
dt.minute = bt.min;
|
||||
dt.second = bt.sec;
|
||||
dt.hsecond = bt.msec / 10;
|
||||
|
||||
if (_dos_settime (&dt) != 0) return -1;
|
||||
if (_dos_setdate (&dd) != 0) return -1;
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
struct timeval tv;
|
||||
int n;
|
||||
@ -275,6 +321,13 @@ int qse_localtime (qse_ntime_t nt, qse_btime_t* bt)
|
||||
# else
|
||||
# error Please support other compilers that I didn't try.
|
||||
# endif
|
||||
#elif defined(__DOS__)
|
||||
# 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);
|
||||
@ -322,6 +375,8 @@ int qse_timegm (const qse_btime_t* bt, qse_ntime_t* nt)
|
||||
return 0;
|
||||
#elif defined(__OS2__)
|
||||
# error NOT IMPLEMENTED YET
|
||||
#elif defined(__DOS__)
|
||||
# error NOT IMPLEMENTED YET
|
||||
#else
|
||||
|
||||
/* TODO: qse_timegm - remove dependency on timegm */
|
||||
|
Reference in New Issue
Block a user