diff --git a/ase/include/ase/cmn/fio.h b/ase/include/ase/cmn/fio.h index 8fddafbe..89f6b2c2 100644 --- a/ase/include/ase/cmn/fio.h +++ b/ase/include/ase/cmn/fio.h @@ -23,7 +23,7 @@ enum ase_fio_open_flag_t /* for ms windows only */ ASE_FIO_NOSHRD = (1 << 16), - ASE_FIO_NOSHWR = (1 << 17), + ASE_FIO_NOSHWR = (1 << 17) }; /* seek origin */ @@ -53,6 +53,9 @@ struct ase_fio_t ase_fio_hnd_t handle; }; +#define ASE_FIO_MMGR(fio) ((fio)->mmgr) +#define ASE_FIO_HANDLE(fio) ((fio)->handle) + #ifdef __cplusplus extern "C" { #endif diff --git a/ase/include/ase/cmn/makefile.am b/ase/include/ase/cmn/makefile.am index c1eeee9f..b2aa7037 100644 --- a/ase/include/ase/cmn/makefile.am +++ b/ase/include/ase/cmn/makefile.am @@ -1,5 +1,5 @@ -pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h +pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h sio.h pkgincludedir= $(includedir)/ase/cmn diff --git a/ase/include/ase/cmn/makefile.in b/ase/include/ase/cmn/makefile.in index 3e59b60c..57c4753c 100644 --- a/ase/include/ase/cmn/makefile.in +++ b/ase/include/ase/cmn/makefile.in @@ -178,7 +178,7 @@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h +pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h sio.h CLEANFILES = *dist all: all-am diff --git a/ase/include/ase/cmn/sio.h b/ase/include/ase/cmn/sio.h new file mode 100644 index 00000000..44ec4c7c --- /dev/null +++ b/ase/include/ase/cmn/sio.h @@ -0,0 +1,105 @@ +/* + * $Id: sio.h,v 1.29 2005/12/26 05:38:24 bacon Ease $ + */ + +#ifndef _ASE_CMN_SIO_H_ +#define _ASE_CMN_SIO_H_ + +#include +#include +#include +#include + +enum ase_sio_open_flag_t +{ + ASE_SIO_HANDLE = ASE_FIO_HANDLE, + + ASE_SIO_READ = ASE_FIO_READ, + ASE_SIO_WRITE = ASE_FIO_WRITE, + ASE_SIO_CREATE = ASE_FIO_CREATE, + ASE_SIO_TRUNCATE = ASE_FIO_TRUNCATE, + ASE_SIO_EXCLUSIVE = ASE_FIO_EXCLUSIVE, + ASE_SIO_APPEND = ASE_FIO_APPEND, + ASE_SIO_SYNC = ASE_FIO_SYNC, + + ASE_SIO_NOSHRD = ASE_FIO_NOSHRD, + ASE_SIO_NOSHWR = ASE_FIO_NOSHWR +}; + +typedef ase_fio_off_t ase_sio_off_t; +typedef ase_fio_hnd_t ase_sio_hnd_t; + +typedef struct ase_sio_t ase_sio_t; + +struct ase_sio_t +{ + ase_mmgr_t* mmgr; + ase_fio_t fio; + ase_tio_t tio; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +extern ase_sio_t* ase_sio_in; +extern ase_sio_t* ase_sio_out; +extern ase_sio_t* ase_sio_err; + +ase_sio_t* ase_sio_open ( + ase_mmgr_t* mmgr, + ase_size_t ext, + const ase_char_t* file, + int flags +); + +void ase_sio_close ( + ase_sio_t* sio +); + +ase_sio_t* ase_sio_init ( + ase_sio_t* sio, + ase_mmgr_t* mmgr, + const ase_char_t* file, + int flags +); + +void ase_sio_fini ( + ase_sio_t* sio +); + +ase_fio_hnd_t ase_sio_gethandle (ase_sio_t* sio); + +ase_ssize_t ase_sio_flush (ase_sio_t* sio); +void ase_sio_purge (ase_sio_t* sio); + +ase_ssize_t ase_sio_getc (ase_sio_t* sio, ase_char_t* c); +ase_ssize_t ase_sio_gets (ase_sio_t* sio, ase_char_t* buf, ase_size_t size); +ase_ssize_t ase_sio_getsx (ase_sio_t* sio, ase_char_t* buf, ase_size_t size); +ase_ssize_t ase_sio_getstr (ase_sio_t* sio, ase_str_t* buf); + +ase_ssize_t ase_sio_putc (ase_sio_t* sio, ase_char_t c); +ase_ssize_t ase_sio_puts (ase_sio_t* sio, const ase_char_t* str); +ase_ssize_t ase_sio_putsx (ase_sio_t* sio, const ase_char_t* str, ase_size_t size); + +#if 0 +ase_ssize_t ase_sio_putsn (ase_sio_t* sio, ...); +ase_ssize_t ase_sio_putsxn (ase_sio_t* sio, ...); +ase_ssize_t ase_sio_putsv (ase_sio_t* sio, ase_va_list ap); +ase_ssize_t ase_sio_putsxv (ase_sio_t* sio, ase_va_list ap); + +/* WARNING: + * getpos may not return the desired postion because of the buffering + */ +int ase_sio_getpos (ase_sio_t* sio, ase_sio_off_t* pos); +int ase_sio_setpos (ase_sio_t* sio, ase_sio_off_t pos); +int ase_sio_rewind (ase_sio_t* sio); +int ase_sio_movetoend (ase_sio_t* sio); +#endif + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ase/include/ase/cmn/tio.h b/ase/include/ase/cmn/tio.h index 8478e3d8..9d8dd522 100644 --- a/ase/include/ase/cmn/tio.h +++ b/ase/include/ase/cmn/tio.h @@ -153,7 +153,7 @@ int ase_tio_geterrnum (ase_tio_t* tio); const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio); /* - * FUNCTION: ase_tio_attinp + * FUNCTION: ase_tio_attachin * Attaches an input handler function * * PARAMETERS: @@ -164,10 +164,14 @@ const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio); * RETURNS: * 0 on success, -1 on failure */ -int ase_tio_attinp (ase_tio_t* tio, ase_tio_io_t input, void* arg); +int ase_tio_attachin ( + ase_tio_t* tio, + ase_tio_io_t input, + void* arg +); /* - * FUNCTION: ase_tio_detinp + * FUNCTION: ase_tio_detachin * Detaches an input handler function * * PARAMETERS: @@ -176,10 +180,12 @@ int ase_tio_attinp (ase_tio_t* tio, ase_tio_io_t input, void* arg); * RETURNS: * 0 on success, -1 on failure */ -int ase_tio_detinp (ase_tio_t* tio); +int ase_tio_detachin ( + ase_tio_t* tio +); /* - * FUNCTION: ase_tio_attoutp + * FUNCTION: ase_tio_attachout * Attaches an output handler function * * PARAMETERS: @@ -190,10 +196,14 @@ int ase_tio_detinp (ase_tio_t* tio); * RETURNS: * 0 on success, -1 on failure */ -int ase_tio_attoutp (ase_tio_t* tio, ase_tio_io_t output, void* arg); +int ase_tio_attachout ( + ase_tio_t* tio, + ase_tio_io_t output, + void* arg +); /* - * FUNCTION: ase_tio_detoutp + * FUNCTION: ase_tio_detachout * Detaches an output handler function * * PARAMETERS: @@ -202,7 +212,9 @@ int ase_tio_attoutp (ase_tio_t* tio, ase_tio_io_t output, void* arg); * RETURNS: * 0 on success, -1 on failure */ -int ase_tio_detoutp (ase_tio_t* tio); +int ase_tio_detachout ( + ase_tio_t* tio +); /* diff --git a/ase/lib/cmn/fio.c b/ase/lib/cmn/fio.c index cafd3d2f..3fc62e1c 100644 --- a/ase/lib/cmn/fio.c +++ b/ase/lib/cmn/fio.c @@ -248,7 +248,6 @@ ase_ssize_t ase_fio_read (ase_fio_t* fio, void* buf, ase_size_t size) #else return read (fio->handle, buf, size); #endif - #endif } diff --git a/ase/lib/cmn/tio.c b/ase/lib/cmn/tio.c index 1903fd86..a0e7a548 100644 --- a/ase/lib/cmn/tio.c +++ b/ase/lib/cmn/tio.c @@ -64,8 +64,8 @@ ase_tio_t* ase_tio_init (ase_tio_t* tio, ase_mmgr_t* mmgr) int ase_tio_fini (ase_tio_t* tio) { ase_tio_flush (tio); /* don't care about the result */ - if (ase_tio_detin(tio) == -1) return -1; - if (ase_tio_detout(tio) == -1) return -1; + if (ase_tio_detachin(tio) == -1) return -1; + if (ase_tio_detachout(tio) == -1) return -1; return 0; } @@ -115,9 +115,9 @@ const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio) ASE_COUNTOF(__errstr) - 1: tio->errnum]; } -int ase_tio_attin (ase_tio_t* tio, ase_tio_io_t input, void* arg) +int ase_tio_attachin (ase_tio_t* tio, ase_tio_io_t input, void* arg) { - if (ase_tio_detin(tio) == -1) return -1; + if (ase_tio_detachin(tio) == -1) return -1; ASE_ASSERT (tio->input_func == ASE_NULL); @@ -137,7 +137,7 @@ int ase_tio_attin (ase_tio_t* tio, ase_tio_io_t input, void* arg) return 0; } -int ase_tio_detin (ase_tio_t* tio) +int ase_tio_detachin (ase_tio_t* tio) { if (tio->input_func != ASE_NULL) { @@ -155,9 +155,9 @@ int ase_tio_detin (ase_tio_t* tio) return 0; } -int ase_tio_attout (ase_tio_t* tio, ase_tio_io_t output, void* arg) +int ase_tio_attachout (ase_tio_t* tio, ase_tio_io_t output, void* arg) { - if (ase_tio_detout(tio) == -1) return -1; + if (ase_tio_detachout(tio) == -1) return -1; ASE_ASSERT (tio->output_func == ASE_NULL); @@ -174,7 +174,7 @@ int ase_tio_attout (ase_tio_t* tio, ase_tio_io_t output, void* arg) return 0; } -int ase_tio_detout (ase_tio_t* tio) +int ase_tio_detachout (ase_tio_t* tio) { if (tio->output_func != ASE_NULL) {