From 4ee4e3fe60638ec7181385f479b90b682243b3af Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Tue, 17 Dec 2019 08:53:33 +0000 Subject: [PATCH] refactored fio --- hawk/Makefile.in | 5 +- hawk/aclocal.m4 | 1 + hawk/bin/Makefile.in | 1 + hawk/configure | 58 ++++++--- hawk/configure.ac | 27 ++-- hawk/lib/Makefile.in | 1 + hawk/lib/err.c | 5 + hawk/lib/fio.c | 249 ++++++++++++++++--------------------- hawk/lib/fmt.c | 8 +- hawk/lib/hawk-cmn.h | 5 + hawk/lib/hawk-fio.h | 33 +---- hawk/lib/pio.c | 2 +- hawk/lib/syserr.h | 6 +- hawk/m4/hawk_try_cflags.m4 | 10 ++ hawk/mod/Makefile.in | 1 + hawk/t/Makefile.in | 1 + hawk/tools/Makefile.in | 1 + 17 files changed, 201 insertions(+), 213 deletions(-) create mode 100644 hawk/m4/hawk_try_cflags.m4 diff --git a/hawk/Makefile.in b/hawk/Makefile.in index 389de403..3fbc1475 100644 --- a/hawk/Makefile.in +++ b/hawk/Makefile.in @@ -94,6 +94,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/ax_cxx_namespace.m4 \ $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/hawk_try_cflags.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac @@ -166,8 +167,8 @@ am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/ac/ar-lib \ $(top_srcdir)/ac/compile $(top_srcdir)/ac/config.guess \ $(top_srcdir)/ac/config.sub $(top_srcdir)/ac/install-sh \ $(top_srcdir)/ac/ltmain.sh $(top_srcdir)/ac/missing ac/ar-lib \ - ac/compile ac/config.guess ac/config.sub ac/install-sh \ - ac/ltmain.sh ac/missing + ac/compile ac/config.guess ac/config.sub ac/depcomp \ + ac/install-sh ac/ltmain.sh ac/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) diff --git a/hawk/aclocal.m4 b/hawk/aclocal.m4 index 920a987c..2b31feff 100644 --- a/hawk/aclocal.m4 +++ b/hawk/aclocal.m4 @@ -1197,6 +1197,7 @@ m4_include([m4/ax_check_sign.m4]) m4_include([m4/ax_cxx_namespace.m4]) m4_include([m4/ax_numval.m4]) m4_include([m4/ax_pthread.m4]) +m4_include([m4/hawk_try_cflags.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) diff --git a/hawk/bin/Makefile.in b/hawk/bin/Makefile.in index 2576066c..ff2cefec 100644 --- a/hawk/bin/Makefile.in +++ b/hawk/bin/Makefile.in @@ -94,6 +94,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/ax_cxx_namespace.m4 \ $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/hawk_try_cflags.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac diff --git a/hawk/configure b/hawk/configure index b40c3c2f..6bc3ad69 100755 --- a/hawk/configure +++ b/hawk/configure @@ -17225,6 +17225,37 @@ fi CFLAGS="$CFLAGS -DHAWK_HAVE_CFG_H" CXXFLAGS="$CXXFLAGS -DHAWK_HAVE_CFG_H" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fshort-wchar" >&5 +$as_echo_n "checking whether the compiler supports -fshort-wchar... " >&6; } +if ${ac_cv_cflags__fshort_wchar+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ac_hawk_try_cflags_saved=$CFLAGS + CFLAGS="$CFLAGS -fshort-wchar" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(int argc, char **argv) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_cflags__fshort_wchar=yes +else + ac_cv_cflags__fshort_wchar=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS=$ac_hawk_try_cflags_saved +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__fshort_wchar" >&5 +$as_echo "$ac_cv_cflags__fshort_wchar" >&6; } + if test $ac_cv_cflags__fshort_wchar = yes; then : + EXTRACFLAGS="$EXTRACFLAGS -fshort-wchar" +fi + + + # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; @@ -22335,7 +22366,7 @@ $as_echo "#define HAWK_ENABLE_UNICODE 1" >>confdefs.h CFLAGS="$CFLAGS -DUNICODE -D_UNICODE" CXXFLAGS="$CXXFLAGS -DUNICODE -D_UNICODE" fi -elif test "${enable_unicode}" = "yes:2" +elif test "${enable_unicode}" = "yes:2" -o "{enable_unicode}" = "yes" then $as_echo "#define HAWK_UNICODE_SIZE 2" >>confdefs.h @@ -22348,33 +22379,26 @@ $as_echo "#define HAWK_ENABLE_UNICODE 1" >>confdefs.h CFLAGS="$CFLAGS -DUNICODE -D_UNICODE" CXXFLAGS="$CXXFLAGS -DUNICODE -D_UNICODE" fi -elif test "${enable_unicode}" = "yes" -then - -$as_echo "#define HAWK_UNICODE_SIZE 1" >>confdefs.h - - -$as_echo "#define HAWK_ENABLE_UNICODE 1" >>confdefs.h - - if test "${platform_win32}" = "yes" + if test "${ac_cv_cflags__fshort_wchar}" = "yes" then - CFLAGS="$CFLAGS -DUNICODE -D_UNICODE" - CXXFLAGS="$CXXFLAGS -DUNICODE -D_UNICODE" + CFLAGS="$CFLAGS -fshort-wchar" + CXXFLAGS="$CXXFLAGS -fshort-wchar" fi elif test "${enable_unicode}" = "no:4" then $as_echo "#define HAWK_UNICODE_SIZE 4" >>confdefs.h -elif test "${enable_unicode}" = "no:2" -then +else $as_echo "#define HAWK_UNICODE_SIZE 2" >>confdefs.h -else - -$as_echo "#define HAWK_UNICODE_SIZE 1" >>confdefs.h + if test "${ac_cv_cflags__fshort_wchar}" = "yes" + then + CFLAGS="$CFLAGS -fshort-wchar" + CXXFLAGS="$CXXFLAGS -fshort-wchar" + fi fi # Check whether --enable-full-liw was given. diff --git a/hawk/configure.ac b/hawk/configure.ac index 62680ca7..080d328f 100644 --- a/hawk/configure.ac +++ b/hawk/configure.ac @@ -60,6 +60,9 @@ dnl indicate the existence of config.h CFLAGS="$CFLAGS -DHAWK_HAVE_CFG_H" CXXFLAGS="$CXXFLAGS -DHAWK_HAVE_CFG_H" +HAWK_TRY_CFLAGS([-fshort-wchar]) +dnl HAWK_TRY_CFLAGS([-fno-short-wchar]) + dnl make visible the 64-bit interface to the file system AC_SYS_LARGEFILE() @@ -734,7 +737,7 @@ then [CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"] [CXXFLAGS="$CXXFLAGS -DUNICODE -D_UNICODE"] fi -elif test "${enable_unicode}" = "yes:2" +elif test "${enable_unicode}" = "yes:2" -o "{enable_unicode}" = "yes" then AC_DEFINE([HAWK_UNICODE_SIZE],[2],[Unicode character type size]) AC_DEFINE([HAWK_ENABLE_UNICODE],[1],[Use the unicode character type as the default character type]) @@ -743,23 +746,23 @@ then [CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"] [CXXFLAGS="$CXXFLAGS -DUNICODE -D_UNICODE"] fi -elif test "${enable_unicode}" = "yes" -then - AC_DEFINE([HAWK_UNICODE_SIZE],[1],[Unicode character type size]) - AC_DEFINE([HAWK_ENABLE_UNICODE],[1],[Use the unicode character type as the default character type]) - if test "${platform_win32}" = "yes" + if test "${ac_cv_cflags__fshort_wchar}" = "yes" then - [CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"] - [CXXFLAGS="$CXXFLAGS -DUNICODE -D_UNICODE"] + [CFLAGS="$CFLAGS -fshort-wchar"] + [CXXFLAGS="$CXXFLAGS -fshort-wchar"] fi elif test "${enable_unicode}" = "no:4" then AC_DEFINE([HAWK_UNICODE_SIZE],[4],[Unicode character type size]) -elif test "${enable_unicode}" = "no:2" -then - AC_DEFINE([HAWK_UNICODE_SIZE],[2],[Unicode character type size]) else - AC_DEFINE([HAWK_UNICODE_SIZE],[1],[Unicode character type size]) + dnl no:2, no, or anything else + AC_DEFINE([HAWK_UNICODE_SIZE],[2],[Unicode character type size]) + + if test "${ac_cv_cflags__fshort_wchar}" = "yes" + then + [CFLAGS="$CFLAGS -fshort-wchar"] + [CXXFLAGS="$CXXFLAGS -fshort-wchar"] + fi fi dnl ===== enable-full-liw ===== diff --git a/hawk/lib/Makefile.in b/hawk/lib/Makefile.in index a18937a7..34deb07b 100644 --- a/hawk/lib/Makefile.in +++ b/hawk/lib/Makefile.in @@ -113,6 +113,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/ax_cxx_namespace.m4 \ $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/hawk_try_cflags.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac diff --git a/hawk/lib/err.c b/hawk/lib/err.c index 9414e4cd..a756df96 100644 --- a/hawk/lib/err.c +++ b/hawk/lib/err.c @@ -48,6 +48,11 @@ const hawk_ooch_t* hawk_dflerrstr (hawk_t* awk, hawk_errnum_t errnum) HAWK_T("I/O error"), HAWK_T("buffer full"), HAWK_T("encoding conversion error"), + HAWK_T("not directory"), + HAWK_T("resource temporarily unavailable"), + HAWK_T("interrupted"), + HAWK_T("broken pipe"), + HAWK_T("in progress"), HAWK_T("cannot open '${0}'"), HAWK_T("cannot read '${0}'"), diff --git a/hawk/lib/fio.c b/hawk/lib/fio.c index 378722f6..dd2b8e08 100644 --- a/hawk/lib/fio.c +++ b/hawk/lib/fio.c @@ -61,7 +61,7 @@ enum }; #include "syserr.h" -IMPLEMENT_SYSERR_TO_ERRNUM (fio, FIO) +IMPLEMENT_SYSERR_TO_ERRNUM (hawk, HAWK) #if defined(_WIN32) @@ -116,18 +116,16 @@ static dossetfilesizel_t dos_set_file_size_l = HAWK_NULL; #endif -hawk_fio_t* hawk_fio_open ( - hawk_t* hawk, hawk_oow_t xtnsize, - const hawk_ooch_t* path, int flags, int mode) +hawk_fio_t* hawk_fio_open (hawk_gem_t* gem, hawk_oow_t xtnsize, const hawk_ooch_t* path, int flags, int mode) { hawk_fio_t* fio; - fio = (hawk_fio_t*)hawk_allocmem(hawk, HAWK_SIZEOF(hawk_fio_t) + xtnsize); + fio = (hawk_fio_t*)hawk_gem_allocmem(gem, HAWK_SIZEOF(hawk_fio_t) + xtnsize); if (fio) { - if (hawk_fio_init (fio, hawk, path, flags, mode) <= -1) + if (hawk_fio_init (fio, gem, path, flags, mode) <= -1) { - hawk_freemem (hawk, fio); + hawk_gem_freemem (gem, fio); return HAWK_NULL; } else HAWK_MEMSET (fio + 1, 0, xtnsize); @@ -138,10 +136,10 @@ hawk_fio_t* hawk_fio_open ( void hawk_fio_close (hawk_fio_t* fio) { hawk_fio_fini (fio); - hawk_freemem (fio->hawk, fio); + hawk_gem_freemem (fio->gem, fio); } -int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int flags, int mode) +int hawk_fio_init (hawk_fio_t* fio, hawk_gem_t* gem, const hawk_ooch_t* path, int flags, int mode) { hawk_fio_hnd_t handle; @@ -171,13 +169,13 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #endif HAWK_MEMSET (fio, 0, HAWK_SIZEOF(*fio)); - fio->hawk = hawk; + fio->gem = gem; if (!(flags & (HAWK_FIO_READ | HAWK_FIO_WRITE | HAWK_FIO_APPEND | HAWK_FIO_HANDLE))) { /* one of HAWK_FIO_READ, HAWK_FIO_WRITE, HAWK_FIO_APPEND, * and HAWK_FIO_HANDLE must be specified */ - fio->errnum = HAWK_FIO_EINVAL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_EINVAL); return -1; } @@ -190,7 +188,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { handle = *(hawk_fio_hnd_t*)path; /* do not specify an invalid handle value */ - HAWK_ASSERT (hawk, handle != INVALID_HANDLE_VALUE); + /*HAWK_ASSERT (hawk, handle != INVALID_HANDLE_VALUE);*/ if (handle == GetStdHandle (STD_INPUT_HANDLE)) fio->status |= STATUS_WIN32_STDIN; @@ -314,13 +312,13 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f } if (handle == INVALID_HANDLE_VALUE) { - fio->errnum = syserr_to_errnum(GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } } else { - fio->errnum = syserr_to_errnum(e); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(e)); return -1; } } @@ -330,7 +328,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #if 0 if (GetFileType(handle) == FILE_TYPE_UNKNOWN) { - fio->errnum = syserr_to_errnum(GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); CloseHandle (handle); return -1; } @@ -366,74 +364,57 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { path_mb = path_mb_buf; ml = HAWK_COUNTOF(path_mb_buf); - px = hawk_wcstombs (path, &wl, path_mb, &ml); + px = hawk_gem_convutobcstr(fio->gem, path, &wl, path_mb, &ml); if (px == -2) { /* the static buffer is too small. * dynamically allocate a buffer */ - path_mb = hawk_wcstombsdup (path, HAWK_NULL, mmgr); - if (path_mb == HAWK_NULL) - { - fio->errnum = HAWK_FIO_ENOMEM; - return -1; - } + path_mb = hawk_gem_duputobcstr(fio->gem, path, HAWK_NUL); + if (path_mb == HAWK_NULL) return -1; } else if (px <= -1) { - fio->errnum = HAWK_FIO_EINVAL; return -1; } } #endif - if (flags & HAWK_FIO_APPEND) - fio->status |= STATUS_APPEND; + if (flags & HAWK_FIO_APPEND) fio->status |= STATUS_APPEND; if (flags & HAWK_FIO_CREATE) { if (flags & HAWK_FIO_EXCLUSIVE) { - open_action = OPEN_ACTION_FAIL_IF_EXISTS | - OPEN_ACTION_CREATE_IF_NEW; + open_action = OPEN_ACTION_FAIL_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW; } else if (flags & HAWK_FIO_TRUNCATE) { - open_action = OPEN_ACTION_REPLACE_IF_EXISTS | - OPEN_ACTION_CREATE_IF_NEW; + open_action = OPEN_ACTION_REPLACE_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW; } else { - open_action = OPEN_ACTION_CREATE_IF_NEW | - OPEN_ACTION_OPEN_IF_EXISTS; + open_action = OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS; } } else if (flags & HAWK_FIO_TRUNCATE) { - open_action = OPEN_ACTION_REPLACE_IF_EXISTS | - OPEN_ACTION_FAIL_IF_NEW; + open_action = OPEN_ACTION_REPLACE_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW; } else { - open_action = OPEN_ACTION_OPEN_IF_EXISTS | - OPEN_ACTION_FAIL_IF_NEW; + open_action = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW; } open_mode = OPEN_FLAGS_NOINHERIT; - if (flags & HAWK_FIO_SYNC) - open_mode |= OPEN_FLAGS_WRITE_THROUGH; + if (flags & HAWK_FIO_SYNC) open_mode |= OPEN_FLAGS_WRITE_THROUGH; - if ((flags & HAWK_FIO_NOSHREAD) && (flags & HAWK_FIO_NOSHWRITE)) - open_mode |= OPEN_SHARE_DENYREADWRITE; - else if (flags & HAWK_FIO_NOSHREAD) - open_mode |= OPEN_SHARE_DENYREAD; - else if (flags & HAWK_FIO_NOSHWRITE) - open_mode |= OPEN_SHARE_DENYWRITE; - else - open_mode |= OPEN_SHARE_DENYNONE; + if ((flags & HAWK_FIO_NOSHREAD) && (flags & HAWK_FIO_NOSHWRITE)) open_mode |= OPEN_SHARE_DENYREADWRITE; + else if (flags & HAWK_FIO_NOSHREAD) open_mode |= OPEN_SHARE_DENYREAD; + else if (flags & HAWK_FIO_NOSHWRITE) open_mode |= OPEN_SHARE_DENYWRITE; + else open_mode |= OPEN_SHARE_DENYNONE; - if ((flags & HAWK_FIO_READ) && - (flags & HAWK_FIO_WRITE)) open_mode |= OPEN_ACCESS_READWRITE; + if ((flags & HAWK_FIO_READ) && (flags & HAWK_FIO_WRITE)) open_mode |= OPEN_ACCESS_READWRITE; else if (flags & HAWK_FIO_READ) open_mode |= OPEN_ACCESS_READONLY; else if (flags & HAWK_FIO_WRITE) open_mode |= OPEN_ACCESS_WRITEONLY; @@ -477,12 +458,12 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - if (path_mb != path_mb_buf) hawk_freemem (hawk->awk, path_mb); + if (path_mb != path_mb_buf) hawk_gem_freemem (fio->gem, path_mb); #endif if (ret != NO_ERROR) { - fio->errnum = syserr_to_errnum(ret); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(ret)); return -1; } } @@ -493,7 +474,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { handle = *(hawk_fio_hnd_t*)path; /* do not specify an invalid handle value */ - HAWK_ASSERT (hawk, handle >= 0); + /*HAWK_ASSERT (hawk, handle >= 0);*/ } else { @@ -516,21 +497,16 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { path_mb = path_mb_buf; ml = HAWK_COUNTOF(path_mb_buf); - px = hawk_wcstombs (path, &wl, path_mb, &ml); + px = hawk_gem_convutobcstr(fio->gem, path, &wl, path_mb, &ml); if (px == -2) { /* static buffer size not enough. * switch to dynamic allocation */ - path_mb = hawk_wcstombsdup (path, HAWK_NULL, mmgr); - if (path_mb == HAWK_NULL) - { - fio->errnum = HAWK_FIO_ENOMEM; - return -1; - } + path_mb = hawk_gem_duputobcstr(fio->gem, path, HAWK_NULL); + if (path_mb == HAWK_NULL) return -1; } else if (px <= -1) { - fio->errnum = HAWK_FIO_EINVAL; return -1; } } @@ -568,12 +544,12 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - if (path_mb != path_mb_buf) hawk_freemem (hawk->awk, path_mb); + if (path_mb != path_mb_buf) hawk_gem_freemem (fio->gem, path_mb); #endif if (handle <= -1) { - fio->errnum = syserr_to_errnum (errno); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return -1; } } @@ -583,7 +559,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f if (flags & HAWK_FIO_HANDLE) { /* TODO: implement this */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; } else @@ -608,35 +584,29 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { path_mb = path_mb_buf; ml = HAWK_COUNTOF(path_mb_buf); - px = hawk_wcstombs (path, &wl, path_mb, &ml); + px = hawk_convutobcstr(fio->gem, path, &wl, path_mb, &ml); if (px == -2) { /* the static buffer is too small. * allocate a buffer */ - path_mb = hawk_wcstombsdup (path, mmgr); - if (path_mb == HAWK_NULL) - { - fio->errnum = HAWK_FIO_ENOMEM; - return -1; - } + path_mb = hawk_duputobcstr(fio->gem, path, mmgr); + if (path_mb == HAWK_NULL) return -1; } else if (px <= -1) { - fio->errnum = HAWK_FIO_EINVAL; return -1; } } #endif - rab = (struct RAB*)hawk_allocmem(hawk, HAWK_SIZEOF(*rab) + HAWK_SIZEOF(*fab)); + rab = (struct RAB*)hawk_gem_allocmem(fio->gem, HAWK_SIZEOF(*rab) + HAWK_SIZEOF(*fab)); if (rab == HAWK_NULL) { #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - if (path_mb != path_mb_buf) hawk_freemem (hawk, path_mb); + if (path_mb != path_mb_buf) hawk_gem_freemem (fio->gem, path_mb); #endif - fio->errnum = HAWK_FIO_ENOMEM; return -1; } @@ -680,9 +650,9 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - if (path_mb != path_mb_buf) hawk_freemem (hawk, path_mb); + if (path_mb != path_mb_buf) hawk_gem_freemem (fio->gem, path_mb); #endif - fio->errnum = syserr_to_errnum (r0); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(r0)); return -1; } @@ -693,16 +663,16 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - if (path_mb != path_mb_buf) hawk_freemem (hawk, path_mb); + if (path_mb != path_mb_buf) hawk_gem_freemem (fio->gem, path_mb); #endif - fio->errnum = syserr_to_errnum (r0); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(r0)); return -1; } #if defined(HAWK_OOCH_IS_BCH) /* nothing to do */ #else - if (path_mb != path_mb_buf) hawk_freemem (hawk, path_mb); + if (path_mb != path_mb_buf) hawk_gem_freemem (fio->gem, path_mb); #endif handle = rab; @@ -714,7 +684,7 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { handle = *(hawk_fio_hnd_t*)path; /* do not specify an invalid handle value */ - HAWK_ASSERT (hawk, handle >= 0); + /*HAWK_ASSERT (hawk, handle >= 0);*/ } else { @@ -736,21 +706,17 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f { path_mb = path_mb_buf; ml = HAWK_COUNTOF(path_mb_buf); - px = hawk_conv_ucstr_to_bcstr_with_cmgr(path, &wl, path_mb, &ml, hawk_getcmgr(fio->hawk)); + px = hawk_conv_ucstr_to_bcstr_with_cmgr(path, &wl, path_mb, &ml, fio->gem->cmgr); if (px == -2) { /* the static buffer is too small. * allocate a buffer */ - path_mb = hawk_duputobcstr(fio->hawk, path, HAWK_NULL); - if (path_mb == HAWK_NULL) - { - fio->errnum = HAWK_FIO_ENOMEM; - return -1; - } + path_mb = hawk_gem_duputobcstr(fio->gem, path, HAWK_NULL); + if (path_mb == HAWK_NULL) return -1; } else if (px <= -1) { - fio->errnum = HAWK_FIO_EINVAL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_EINVAL); return -1; } } @@ -800,12 +766,12 @@ int hawk_fio_init (hawk_fio_t* fio, hawk_t* hawk, const hawk_ooch_t* path, int f #else if (path_mb != path_mb_buf && path_mb != path) { - hawk_freemem (hawk, path_mb); + hawk_gem_freemem (fio->gem, path_mb); } #endif if (handle == -1) { - fio->errnum = syserr_to_errnum(errno); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return -1; } else @@ -849,19 +815,13 @@ void hawk_fio_fini (hawk_fio_t* fio) struct RAB* rab = (struct RAB*)fio->handle; sys$disconnect (rab, 0, 0); sys$close ((struct FAB*)(rab + 1), 0, 0); - hawk_freemem (fio->hawk, fio->handle); - + hawk_gem_freemem (fio->gem, fio->handle); #else HAWK_CLOSE (fio->handle); #endif } } -hawk_fio_errnum_t hawk_fio_geterrnum (const hawk_fio_t* fio) -{ - return fio->errnum; -} - hawk_fio_hnd_t hawk_fio_gethnd (const hawk_fio_t* fio) { return fio->handle; @@ -881,7 +841,7 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o LARGE_INTEGER y; #endif - HAWK_ASSERT (fio->hawk, HAWK_SIZEOF(offset) <= HAWK_SIZEOF(x.QuadPart)); + /* HAWK_ASSERT (fio->hawk, HAWK_SIZEOF(offset) <= HAWK_SIZEOF(x.QuadPart));*/ #if defined(_WIN64) x.QuadPart = offset; @@ -899,7 +859,7 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o fio->handle, x.LowPart, &x.HighPart, seek_map[origin]); if (x.LowPart == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return (hawk_fio_off_t)-1; } return (hawk_fio_off_t)x.QuadPart; @@ -919,7 +879,7 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o LONGLONG pos, newpos; APIRET ret; - HAWK_ASSERT (fio->hawk, HAWK_SIZEOF(offset) >= HAWK_SIZEOF(pos)); + /*HAWK_ASSERT (fio->hawk, HAWK_SIZEOF(offset) >= HAWK_SIZEOF(pos));*/ pos.ulLo = (ULONG)(offset&0xFFFFFFFFlu); pos.ulHi = (ULONG)(offset>>32); @@ -927,7 +887,7 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o ret = dos_set_file_ptr_l (fio->handle, pos, seek_map[origin], &newpos); if (ret != NO_ERROR) { - fio->errnum = syserr_to_errnum (ret); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(ret)); return (hawk_fio_off_t)-1; } @@ -942,7 +902,7 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o ret = DosSetFilePtr (fio->handle, offset, seek_map[origin], &newpos); if (ret != NO_ERROR) { - fio->errnum = syserr_to_errnum (ret); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(ret)); return (hawk_fio_off_t)-1; } @@ -963,7 +923,7 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o #elif defined(vms) || defined(__vms) /* TODO: */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return (hawk_fio_off_t)-1; #else static int seek_map[] = @@ -976,19 +936,19 @@ hawk_fio_off_t hawk_fio_seek (hawk_fio_t* fio, hawk_fio_off_t offset, hawk_fio_o #if defined(HAWK_LLSEEK) loff_t tmp; - if (HAWK_LLSEEK (fio->handle, + if (HAWK_LLSEEK(fio->handle, (unsigned long)(offset>>32), (unsigned long)(offset&0xFFFFFFFFlu), &tmp, seek_map[origin]) == -1) { - fio->errnum = syserr_to_errnum (errno); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return (hawk_fio_off_t)-1; } return (hawk_fio_off_t)tmp; #else - return HAWK_LSEEK (fio->handle, offset, seek_map[origin]); + return HAWK_LSEEK(fio->handle, offset, seek_map[origin]); #endif #endif @@ -1000,7 +960,7 @@ int hawk_fio_truncate (hawk_fio_t* fio, hawk_fio_off_t size) if (hawk_fio_seek (fio, size, HAWK_FIO_BEGIN) == (hawk_fio_off_t)-1) return -1; if (SetEndOfFile(fio->handle) == FALSE) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } return 0; @@ -1029,7 +989,7 @@ int hawk_fio_truncate (hawk_fio_t* fio, hawk_fio_off_t size) if (ret != NO_ERROR) { - fio->errnum = syserr_to_errnum (ret); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(ret)); return -1; } return 0; @@ -1038,7 +998,7 @@ int hawk_fio_truncate (hawk_fio_t* fio, hawk_fio_off_t size) int n; n = chsize (fio->handle, size); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #elif defined(vms) || defined(__vms) @@ -1049,7 +1009,7 @@ int hawk_fio_truncate (hawk_fio_t* fio, hawk_fio_off_t size) if ((r0 = sys$rewind (rab, 0, 0)) != RMS$_NORMAL || (r0 = sys$truncate (rab, 0, 0)) != RMS$_NORMAL) { - fio->errnum = syserr_to_errnum (r0); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(r0)); return -1; } @@ -1059,11 +1019,11 @@ int hawk_fio_truncate (hawk_fio_t* fio, hawk_fio_off_t size) int n; n = HAWK_FTRUNCATE (fio->handle, size); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #else - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #endif } @@ -1084,7 +1044,7 @@ hawk_ooi_t hawk_fio_read (hawk_fio_t* fio, void* buf, hawk_oow_t size) * assuming that ERROR_BROKEN_PIPE doesn't occur with normal * input streams, i treat the condition as a normal EOF indicator. */ if ((fio->status & STATUS_WIN32_STDIN) && e == ERROR_BROKEN_PIPE) return 0; - fio->errnum = syserr_to_errnum (e); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(e)); return -1; } return (hawk_ooi_t)count; @@ -1098,7 +1058,7 @@ hawk_ooi_t hawk_fio_read (hawk_fio_t* fio, void* buf, hawk_oow_t size) ret = DosRead (fio->handle, buf, (ULONG)size, &count); if (ret != NO_ERROR) { - fio->errnum = syserr_to_errnum (ret); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(ret)); return -1; } return (hawk_ooi_t)count; @@ -1109,7 +1069,7 @@ hawk_ooi_t hawk_fio_read (hawk_fio_t* fio, void* buf, hawk_oow_t size) if (size > (HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(unsigned int))) size = HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(unsigned int); n = read (fio->handle, buf, size); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #elif defined(vms) || defined(__vms) @@ -1125,7 +1085,7 @@ hawk_ooi_t hawk_fio_read (hawk_fio_t* fio, void* buf, hawk_oow_t size) r0 = sys$get (rab, 0, 0); if (r0 != RMS$_NORMAL) { - fio->errnum = syserr_to_errnum (r0); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(r0)); return -1; } @@ -1135,7 +1095,7 @@ hawk_ooi_t hawk_fio_read (hawk_fio_t* fio, void* buf, hawk_oow_t size) hawk_ooi_t n; if (size > HAWK_TYPE_MAX(hawk_ooi_t)) size = HAWK_TYPE_MAX(hawk_ooi_t); n = HAWK_READ (fio->handle, buf, size); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #endif } @@ -1164,7 +1124,7 @@ hawk_ooi_t hawk_fio_write (hawk_fio_t* fio, const void* data, hawk_oow_t size) if (WriteFile (fio->handle, data, (DWORD)size, &count, HAWK_NULL) == FALSE) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } return (hawk_ooi_t)count; @@ -1201,7 +1161,7 @@ hawk_ooi_t hawk_fio_write (hawk_fio_t* fio, const void* data, hawk_oow_t size) (PVOID)data, (ULONG)size, &count); if (ret != NO_ERROR) { - fio->errnum = syserr_to_errnum (ret); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(ret)); return -1; } return (hawk_ooi_t)count; @@ -1212,7 +1172,7 @@ hawk_ooi_t hawk_fio_write (hawk_fio_t* fio, const void* data, hawk_oow_t size) if (size > (HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(unsigned int))) size = HAWK_TYPE_MAX(hawk_ooi_t) & HAWK_TYPE_MAX(unsigned int); n = write (fio->handle, data, size); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #elif defined(vms) || defined(__vms) @@ -1228,7 +1188,7 @@ hawk_ooi_t hawk_fio_write (hawk_fio_t* fio, const void* data, hawk_oow_t size) r0 = sys$put (rab, 0, 0); if (r0 != RMS$_NORMAL) { - fio->errnum = syserr_to_errnum (r0); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(r0)); return -1; } @@ -1239,7 +1199,7 @@ hawk_ooi_t hawk_fio_write (hawk_fio_t* fio, const void* data, hawk_oow_t size) hawk_ooi_t n; if (size > HAWK_TYPE_MAX(hawk_ooi_t)) size = HAWK_TYPE_MAX(hawk_ooi_t); n = HAWK_WRITE (fio->handle, data, size); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #endif } @@ -1263,7 +1223,7 @@ static int get_devname_from_handle ( psapi = LoadLibrary (HAWK_T("PSAPI.DLL")); if (!psapi) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } @@ -1271,7 +1231,7 @@ static int get_devname_from_handle ( GetProcAddress (psapi, HAWK_BT("GetMappedFileName")); if (!getmappedfilename) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); FreeLibrary (psapi); return -1; } @@ -1287,7 +1247,7 @@ static int get_devname_from_handle ( ); if (map == NULL) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); FreeLibrary (psapi); return -1; } @@ -1296,7 +1256,7 @@ static int get_devname_from_handle ( mem = MapViewOfFile (map, FILE_MAP_READ, 0, 0, 1); if (mem == NULL) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); CloseHandle (map); FreeLibrary (psapi); return -1; @@ -1305,7 +1265,7 @@ static int get_devname_from_handle ( olen = getmappedfilename (GetCurrentProcess(), mem, buf, len); if (olen == 0) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); UnmapViewOfFile (mem); CloseHandle (map); FreeLibrary (psapi); @@ -1338,7 +1298,7 @@ static int get_volname_from_handle ( if (n == 0 /* error */ || n > HAWK_COUNTOF(drives) /* buffer small */) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } @@ -1389,7 +1349,7 @@ int hawk_fio_chmod (hawk_fio_t* fio, int mode) if (!(mode & HAWK_FIO_WUSR)) flags = FILE_ATTRIBUTE_READONLY; if (SetFileAttributes (name, flags) == FALSE) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } return 0; @@ -1412,7 +1372,7 @@ int hawk_fio_chmod (hawk_fio_t* fio, int mode) #endif if (n != NO_ERROR) { - fio->errnum = syserr_to_errnum (n); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(n)); return -1; } @@ -1420,13 +1380,13 @@ int hawk_fio_chmod (hawk_fio_t* fio, int mode) stat.attrFile = flags; #if defined(FIL_STANDARDL) - n = DosSetFileInfo (fio->handle, FIL_STANDARDL, &stat, size); + n = DosSetFileInfo(fio->handle, FIL_STANDARDL, &stat, size); #else - n = DosSetFileInfo (fio->handle, FIL_STANDARD, &stat, size); + n = DosSetFileInfo(fio->handle, FIL_STANDARD, &stat, size); #endif if (n != NO_ERROR) { - fio->errnum = syserr_to_errnum (n); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(n)); return -1; } @@ -1442,23 +1402,23 @@ int hawk_fio_chmod (hawk_fio_t* fio, int mode) /* TODO: fchmod not available. find a way to do this return fchmod (fio->handle, permission); */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #elif defined(vms) || defined(__vms) /* TODO: */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return (hawk_fio_off_t)-1; #elif defined(HAVE_FCHMOD) int n; n = HAWK_FCHMOD (fio->handle, mode); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #else - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #endif @@ -1470,7 +1430,7 @@ int hawk_fio_sync (hawk_fio_t* fio) if (FlushFileBuffers (fio->handle) == FALSE) { - fio->errnum = syserr_to_errnum (GetLastError()); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(GetLastError())); return -1; } return 0; @@ -1481,7 +1441,7 @@ int hawk_fio_sync (hawk_fio_t* fio) n = DosResetBuffer (fio->handle); if (n != NO_ERROR) { - fio->errnum = syserr_to_errnum (n); + hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(n)); return -1; } return 0; @@ -1490,24 +1450,23 @@ int hawk_fio_sync (hawk_fio_t* fio) int n; n = fsync (fio->handle); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #elif defined(vms) || defined(__vms) /* TODO: */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return (hawk_fio_off_t)-1; #elif defined(HAVE_FSYNC) int n; - n = HAWK_FSYNC (fio->handle); - if (n <= -1) fio->errnum = syserr_to_errnum (errno); + n = HAWK_FSYNC(fio->handle); + if (n <= -1) hawk_gem_seterrnum (fio->gem, HAWK_NULL, syserr_to_errnum(errno)); return n; #else - - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; #endif } @@ -1519,7 +1478,7 @@ int hawk_fio_lock (hawk_fio_t* fio, hawk_fio_lck_t* lck, int flags) * fl.l_type = F_RDLCK, F_WRLCK; * HAWK_FCNTL (fio->handle, F_SETLK, &fl); */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; } @@ -1530,7 +1489,7 @@ int hawk_fio_unlock (hawk_fio_t* fio, hawk_fio_lck_t* lck, int flags) * fl.l_type = F_UNLCK; * HAWK_FCNTL (fio->handle, F_SETLK, &fl); */ - fio->errnum = HAWK_FIO_ENOIMPL; + hawk_gem_seterrnum (fio->gem, HAWK_NULL, HAWK_ENOIMPL); return -1; } diff --git a/hawk/lib/fmt.c b/hawk/lib/fmt.c index 31482e39..314ddfaf 100644 --- a/hawk/lib/fmt.c +++ b/hawk/lib/fmt.c @@ -1624,8 +1624,8 @@ static int log_ucs (hawk_fmtout_t* fmtout, const hawk_uch_t* ptr, hawk_oow_t len { len = rem; bcslen = HAWK_COUNTOF(bcs); - hawk_conv_uchars_to_bchars_with_cmgr(ptr, &len, bcs, &bcslen, hawk_getcmgr(hawk)); - log_bcs(fmtout, bcs, bcslen); + hawk_conv_uchars_to_bchars_with_cmgr (ptr, &len, bcs, &bcslen, hawk_getcmgr(hawk)); + log_bcs (fmtout, bcs, bcslen); rem -= len; ptr += len; } @@ -1648,8 +1648,8 @@ static int log_bcs (hawk_fmtout_t* fmtout, const hawk_bch_t* ptr, hawk_oow_t len { len = rem; ucslen = HAWK_COUNTOF(ucs); - hawk_conv_bchars_to_uchars_with_cmgr(ptr, &len, ucs, &ucslen, hawk_getcmgr(hawk), 1); - log_ucs(fmtout, ucs, ucslen); + hawk_conv_bchars_to_uchars_with_cmgr (ptr, &len, ucs, &ucslen, hawk_getcmgr(hawk), 1); + log_ucs (fmtout, ucs, ucslen); rem -= len; ptr += len; } diff --git a/hawk/lib/hawk-cmn.h b/hawk/lib/hawk-cmn.h index 016107f7..622d4545 100644 --- a/hawk/lib/hawk-cmn.h +++ b/hawk/lib/hawk-cmn.h @@ -776,6 +776,11 @@ enum hawk_errnum_t HAWK_EIOERR, /**< I/O error */ HAWK_EBUFFULL, /**< buffer full */ HAWK_EECERR, /**< encoding conversion error */ + HAWK_ENOTDIR, /**< not directory */ + HAWK_EAGAIN, /**< resource temporarily unavailable */ + HAWK_EINTR, /**< interrupted */ + HAWK_EPIPE, /**< broken pipe */ + HAWK_EINPROG, /**< in progress */ /* mostly parse errors */ HAWK_EOPEN, /**< cannot open '${0}' */ diff --git a/hawk/lib/hawk-fio.h b/hawk/lib/hawk-fio.h index f2c3abc3..bee85a8c 100644 --- a/hawk/lib/hawk-fio.h +++ b/hawk/lib/hawk-fio.h @@ -73,28 +73,6 @@ enum hawk_fio_flag_t HAWK_FIO_SEQUENTIAL = (1 << 28) /* hint that access is sequential */ }; -enum hawk_fio_errnum_t -{ - HAWK_FIO_ENOERR = 0, /**< no error */ - HAWK_FIO_EOTHER, /**< other error */ - HAWK_FIO_ENOIMPL, /**< not implemented */ - HAWK_FIO_ESYSERR, /**< subsystem(system call) error */ - HAWK_FIO_EINTERN, /**< internal error */ - - HAWK_FIO_ENOMEM, /**< out of memory */ - HAWK_FIO_EINVAL, /**< invalid parameter */ - HAWK_FIO_EACCES, /**< access denied */ - HAWK_FIO_EPERM, /**< operation not permitted */ - HAWK_FIO_ENOENT, /**< no such file */ - HAWK_FIO_EEXIST, /**< already exist */ - HAWK_FIO_ENOTDIR, /**< not a directory */ - HAWK_FIO_EINTR, /**< interrupted */ - HAWK_FIO_EPIPE, /**< broken pipe */ - HAWK_FIO_EINPROG, /**< in progress */ - HAWK_FIO_EAGAIN /**< resource not available temporarily */ -}; -typedef enum hawk_fio_errnum_t hawk_fio_errnum_t; - enum hawk_fio_std_t { HAWK_FIO_STDIN = 0, @@ -152,8 +130,7 @@ typedef struct hawk_fio_lck_t hawk_fio_lck_t; struct hawk_fio_t { - hawk_t* hawk; - hawk_fio_errnum_t errnum; + hawk_gem_t* gem; hawk_fio_hnd_t handle; int status; }; @@ -188,7 +165,7 @@ extern "C" { * parameter when #HAWK_FIO_TEMPORARY is set. */ HAWK_EXPORT hawk_fio_t* hawk_fio_open ( - hawk_t* hawk, + hawk_gem_t* gem, hawk_oow_t xtnsize, const hawk_ooch_t* path, int flags, @@ -207,7 +184,7 @@ HAWK_EXPORT void hawk_fio_close ( */ HAWK_EXPORT int hawk_fio_init ( hawk_fio_t* fio, - hawk_t* hawk, + hawk_gem_t* gem, const hawk_ooch_t* path, int flags, int mode @@ -227,10 +204,6 @@ static HAWK_INLINE void* hawk_fio_getxtn (hawk_fio_t* fio) { return (void*)(fio #define hawk_fio_getxtn(awk) ((void*)((hawk_fio_t*)(fio) + 1)) #endif -HAWK_EXPORT hawk_fio_errnum_t hawk_fio_geterrnum ( - const hawk_fio_t* fio -); - /** * The hawk_fio_gethnd() function returns the native file handle. */ diff --git a/hawk/lib/pio.c b/hawk/lib/pio.c index 11758624..9c8a5d89 100644 --- a/hawk/lib/pio.c +++ b/hawk/lib/pio.c @@ -54,7 +54,7 @@ static hawk_ooi_t pio_output ( hawk_tio_t* tio, hawk_tio_cmd_t cmd, void* buf, hawk_oow_t size); #include "syserr.h" -IMPLEMENT_SYSERR_TO_ERRNUM (pio, PIO) +IMPLEMENT_SYSERR_TO_ERRNUM (hawk, HAWK) static hawk_pio_errnum_t tio_errnum_to_pio_errnum (hawk_tio_t* tio) { diff --git a/hawk/lib/syserr.h b/hawk/lib/syserr.h index c64e507e..d5f75d52 100644 --- a/hawk/lib/syserr.h +++ b/hawk/lib/syserr.h @@ -39,8 +39,10 @@ # define __SYSERRTYPE__(obj) obj # define __SYSERRNUM__(obj,num) (obj E_ ## num) #else -# define __SYSERRTYPE__(obj) hawk_ ## obj ## _errnum_t -# define __SYSERRNUM__(obj,num) (HAWK_ ## obj ## _ ## num) +/*# define __SYSERRTYPE__(obj) hawk_ ## obj ## _errnum_t +# define __SYSERRNUM__(obj,num) (HAWK_ ## obj ## _ ## num)*/ +# define __SYSERRTYPE__(obj) obj ## _errnum_t +# define __SYSERRNUM__(obj,num) (obj ## _ ## num) #endif #if defined(_WIN32) diff --git a/hawk/m4/hawk_try_cflags.m4 b/hawk/m4/hawk_try_cflags.m4 new file mode 100644 index 00000000..09a5d4d8 --- /dev/null +++ b/hawk/m4/hawk_try_cflags.m4 @@ -0,0 +1,10 @@ +AC_DEFUN([HAWK_TRY_CFLAGS], [ + AS_VAR_PUSHDEF([ac_var], ac_cv_cflags_[[$1]]) + AC_CACHE_CHECK([whether the compiler supports $1], ac_var, [ + ac_hawk_try_cflags_saved=$CFLAGS + CFLAGS="$CFLAGS $1" + AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv) { return 0; }]])], [AS_VAR_SET(ac_var,yes)], [AS_VAR_SET(ac_var,no)]) + CFLAGS=$ac_hawk_try_cflags_saved]) + AS_IF([test AS_VAR_GET(ac_var) = yes], [m4_default([$2], [EXTRACFLAGS="$EXTRACFLAGS $1"])], [$3]) + AS_VAR_POPDEF([ac_var]) +]) diff --git a/hawk/mod/Makefile.in b/hawk/mod/Makefile.in index 49229843..291e72f8 100644 --- a/hawk/mod/Makefile.in +++ b/hawk/mod/Makefile.in @@ -97,6 +97,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/ax_cxx_namespace.m4 \ $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/hawk_try_cflags.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac diff --git a/hawk/t/Makefile.in b/hawk/t/Makefile.in index bc2fed64..0d3fb1bd 100644 --- a/hawk/t/Makefile.in +++ b/hawk/t/Makefile.in @@ -94,6 +94,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/ax_cxx_namespace.m4 \ $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/hawk_try_cflags.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac diff --git a/hawk/tools/Makefile.in b/hawk/tools/Makefile.in index 1530f522..8c922d28 100644 --- a/hawk/tools/Makefile.in +++ b/hawk/tools/Makefile.in @@ -94,6 +94,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \ $(top_srcdir)/m4/ax_cxx_namespace.m4 \ $(top_srcdir)/m4/ax_numval.m4 $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/hawk_try_cflags.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac