added qse_sio_openstd().

added QSE_SED_ZEROA1 and related code
This commit is contained in:
2011-09-20 00:51:02 +00:00
parent ecaed2c2b3
commit 7de8b649ef
11 changed files with 372 additions and 141 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: fio.c 565 2011-09-11 02:48:21Z hyunghwan.chung $
* $Id: fio.c 569 2011-09-19 06:51:02Z hyunghwan.chung $
*
Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE.
@ -45,8 +45,10 @@
QSE_IMPLEMENT_COMMON_FUNCTIONS (fio)
static qse_ssize_t fio_input (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
static qse_ssize_t fio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
static qse_ssize_t fio_input (
qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
static qse_ssize_t fio_output (
qse_tio_cmd_t cmd, void* arg, void* buf, qse_size_t size);
qse_fio_t* qse_fio_open (
qse_mmgr_t* mmgr, qse_size_t ext,
@ -851,3 +853,34 @@ static qse_ssize_t fio_output (qse_tio_cmd_t cmd, void* arg, void* buf, qse_size
* by fio */
return 0;
}
int qse_getstdfiohandle (qse_fio_std_t std, qse_fio_hnd_t* hnd)
{
qse_fio_hnd_t tab[] =
{
#if defined(_WIN32)
(HANDLE)STD_INPUT_HANDLE,
(HANDLE)STD_OUTPUT_HANDLE,
(HANDLE)STD_ERROR_HANDLE
#elif defined(__OS2__)
(HFILE)0, (HFILE)1, (HFILE)2
#elif defined(__DOS__)
0, 1, 2
#else
0, 1, 2
#endif
};
if (std < 0 || std >= QSE_COUNTOF(tab)) return -1;
#if defined(_WIN32)
{
HANDLE tmp = GetStdHandle (tab[std]);
if (tmp == INVALID_HANDLE_VALUE) return -1;
*hnd = tmp;
}
#else
*hnd = tab[std];
#endif
return 0;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: sio.c 568 2011-09-17 15:41:26Z hyunghwan.chung $
* $Id: sio.c 569 2011-09-19 06:51:02Z hyunghwan.chung $
*
Copyright 2006-2011 Chung, Hyung-Hwan.
This file is part of QSE.
@ -194,6 +194,14 @@ qse_sio_t* qse_sio_open (
return sio;
}
qse_sio_t* qse_sio_openstd (
qse_mmgr_t* mmgr, qse_size_t xtnsize, qse_sio_std_t std, int flags)
{
qse_fio_hnd_t hnd;
if (qse_getstdfiohandle (std, &hnd) <= -1) return QSE_NULL;
return qse_sio_open (mmgr, xtnsize, &hnd, flags | QSE_SIO_HANDLE);
}
void qse_sio_close (qse_sio_t* sio)
{
qse_sio_fini (sio);
@ -235,6 +243,14 @@ int qse_sio_init (
return 0;
}
int qse_sio_initstd (
qse_sio_t* sio, qse_mmgr_t* mmgr, qse_sio_std_t std, int flags)
{
qse_fio_hnd_t hnd;
if (qse_getstdfiohandle (std, &hnd) <= -1) return -1;
return qse_sio_init (sio, mmgr, &hnd, flags | QSE_SIO_HANDLE);
}
void qse_sio_fini (qse_sio_t* sio)
{
/*if (qse_sio_flush (sio) == -1) return -1;*/