interim commit while adding pio.c

This commit is contained in:
2008-12-31 00:08:03 +00:00
parent da61cde8fd
commit afefb7b85a
30 changed files with 360 additions and 718 deletions

View File

@ -61,15 +61,10 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_CJ = @BUILD_CJ@
BUILD_JNI = @BUILD_JNI@
BUILD_MODE = @BUILD_MODE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAGS_JNI = @CFLAGS_JNI@
CJ = @CJ@
CJFLAGS = @CJFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@ -95,10 +90,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAR_PATH = @JAR_PATH@
JAVAC = @JAVAC@
JAVAC_PATH = @JAVAC_PATH@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@

View File

@ -100,15 +100,10 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_CJ = @BUILD_CJ@
BUILD_JNI = @BUILD_JNI@
BUILD_MODE = @BUILD_MODE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAGS_JNI = @CFLAGS_JNI@
CJ = @CJ@
CJFLAGS = @CJFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@ -134,10 +129,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAR_PATH = @JAR_PATH@
JAVAC = @JAVAC@
JAVAC_PATH = @JAVAC_PATH@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@

View File

@ -360,9 +360,9 @@ static qse_ssize_t awk_extio_pipe (
}
else return -1; /* TODO: any way to set the error number? */
//dprint (QSE_T("opening %s of type %d (pipe)\n"), epa->name, epa->type);
/*dprint (QSE_T("opening %s of type %d (pipe)\n"), epa->name, epa->type);*/
// TOOD: pipe open....
/* TOOD: popen.... */
handle = qse_sio_open (qse_awk_getrunmmgr(epa->run), 0, epa->name, mode);
if (handle == QSE_NULL) return -1;
epa->handle = (void*)handle;
@ -371,7 +371,7 @@ static qse_ssize_t awk_extio_pipe (
case QSE_AWK_IO_CLOSE:
{
//dprint (QSE_T("closing %s of type (pipe) %d\n"), epa->name, epa->type);
/*dprint (QSE_T("closing %s of type (pipe) %d\n"), epa->name, epa->type);*/
qse_sio_close ((qse_sio_t*)epa->handle);
epa->handle = QSE_NULL;
return 0;
@ -439,7 +439,7 @@ static qse_ssize_t awk_extio_file (
}
else return -1; /* TODO: any way to set the error number? */
//dprint (QSE_T("opening %s of type %d (file)\n"), epa->name, epa->type);
/*dprint (QSE_T("opening %s of type %d (file)\n"), epa->name, epa->type);*/
handle = qse_sio_open (
qse_awk_getrunmmgr(epa->run),
0,
@ -463,7 +463,7 @@ static qse_ssize_t awk_extio_file (
case QSE_AWK_IO_CLOSE:
{
//dprint (QSE_T("closing %s of type %d (file)\n"), epa->name, epa->type);
/*dprint (QSE_T("closing %s of type %d (file)\n"), epa->name, epa->type);*/
qse_sio_close ((qse_sio_t*)epa->handle);
epa->handle = QSE_NULL;
return 0;
@ -506,20 +506,20 @@ static int open_extio_console (qse_awk_extio_t* epa)
{
runio_data_t* rd = (runio_data_t*)epa->data;
//dprint (QSE_T("opening console[%s] of type %x\n"), epa->name, epa->type);
/*dprint (QSE_T("opening console[%s] of type %x\n"), epa->name, epa->type);*/
if (epa->mode == QSE_AWK_EXTIO_CONSOLE_READ)
{
if (rd->ic.files[rd->ic.index] == QSE_NULL)
{
/* no more input file */
//dprint (QSE_T("console - no more file\n"));;
/*dprint (QSE_T("console - no more file\n"));*/
return 0;
}
if (rd->ic.files[rd->ic.index][0] == QSE_T('\0'))
{
//dprint (QSE_T(" console(r) - <standard input>\n"));
/*dprint (QSE_T(" console(r) - <standard input>\n"));*/
epa->handle = qse_sio_in;
}
else
@ -545,7 +545,7 @@ static int open_extio_console (qse_awk_extio_t* epa)
return -1;
}
//dprint (QSE_T(" console(r) - %s\n"), rd->ic.files[rd->ic.index]);
/*dprint (QSE_T(" console(r) - %s\n"), rd->ic.files[rd->ic.index]);*/
if (qse_awk_setfilename (
epa->run, rd->ic.files[rd->ic.index],
qse_strlen(rd->ic.files[rd->ic.index])) == -1)
@ -562,7 +562,7 @@ static int open_extio_console (qse_awk_extio_t* epa)
}
else if (epa->mode == QSE_AWK_EXTIO_CONSOLE_WRITE)
{
//dprint (QSE_T(" console(w) - <standard output>\n"));
/*dprint (QSE_T(" console(w) - <standard output>\n"));*/
if (qse_awk_setofilename (epa->run, QSE_T(""), 0) == -1)
{
@ -588,7 +588,7 @@ static qse_ssize_t awk_extio_console (
}
else if (cmd == QSE_AWK_IO_CLOSE)
{
//dprint (QSE_T("closing console of type %x\n"), epa->type);
/*dprint (QSE_T("closing console of type %x\n"), epa->type);*/
if (epa->handle != QSE_NULL &&
epa->handle != qse_sio_in &&
@ -672,7 +672,7 @@ static qse_ssize_t awk_extio_console (
qse_sio_close ((qse_sio_t*)epa->handle);
}
//dprint (QSE_T("open the next console [%s]\n"), rd->ic.files[rd->ic.index]);
/*dprint (QSE_T("open the next console [%s]\n"), rd->ic.files[rd->ic.index]);*/
epa->handle = fp;
}
@ -698,7 +698,7 @@ static qse_ssize_t awk_extio_console (
int n;
qse_sio_t* fp = (qse_sio_t*)epa->handle;
//dprint (QSE_T("switching console[%s] of type %x\n"), epa->name, epa->type);
/*dprint (QSE_T("switching console[%s] of type %x\n"), epa->name, epa->type);*/
n = open_extio_console(epa);
if (n == -1) return -1;
@ -1168,6 +1168,7 @@ skip_system:
qse_awk_setretval (run, v);
return 0;
}
#define ADD_FUNC(awk,name,min,max,bfn) \
if (qse_awk_addfunc (\
(awk), (name), qse_strlen(name), \
@ -1187,6 +1188,5 @@ static int add_functions (qse_awk_t* awk)
ADD_FUNC (awk, QSE_T("rand"), 0, 0, bfn_rand);
ADD_FUNC (awk, QSE_T("srand"), 0, 1, bfn_srand);
ADD_FUNC (awk, QSE_T("system"), 1, 1, bfn_system);
return 0;
}

View File

@ -6,7 +6,7 @@ lib_LTLIBRARIES = libqsecmn.la
libqsecmn_la_SOURCES = mem.h chr.h \
mem.c chr.c chr_cnv.c rex.c str_bas.c str_cnv.c str_dyn.c \
lda.c map.c sll.c dll.c opt.c \
fio.c sio.c tio.c tio_get.c tio_put.c \
fio.c pio.c sio.c tio.c tio_get.c tio_put.c \
time.c \
misc.c
libqsecmn_la_LDFLAGS = -version-info 1:0:0 -no-undefined

View File

@ -53,7 +53,8 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
libqsecmn_la_DEPENDENCIES =
am_libqsecmn_la_OBJECTS = mem.lo chr.lo chr_cnv.lo rex.lo str_bas.lo \
str_cnv.lo str_dyn.lo lda.lo map.lo sll.lo dll.lo opt.lo \
fio.lo sio.lo tio.lo tio_get.lo tio_put.lo time.lo misc.lo
fio.lo pio.lo sio.lo tio.lo tio_get.lo tio_put.lo time.lo \
misc.lo
libqsecmn_la_OBJECTS = $(am_libqsecmn_la_OBJECTS)
libqsecmn_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
@ -82,15 +83,10 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_CJ = @BUILD_CJ@
BUILD_JNI = @BUILD_JNI@
BUILD_MODE = @BUILD_MODE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAGS_JNI = @CFLAGS_JNI@
CJ = @CJ@
CJFLAGS = @CJFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@ -116,10 +112,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAR_PATH = @JAR_PATH@
JAVAC = @JAVAC@
JAVAC_PATH = @JAVAC_PATH@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@
@ -206,7 +198,7 @@ lib_LTLIBRARIES = libqsecmn.la
libqsecmn_la_SOURCES = mem.h chr.h \
mem.c chr.c chr_cnv.c rex.c str_bas.c str_cnv.c str_dyn.c \
lda.c map.c sll.c dll.c opt.c \
fio.c sio.c tio.c tio_get.c tio_put.c \
fio.c pio.c sio.c tio.c tio_get.c tio_put.c \
time.c \
misc.c
@ -290,6 +282,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rex.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sll.Plo@am__quote@

View File

@ -10,16 +10,12 @@
#include <psapi.h>
#include <tchar.h>
#else
#include "syscall.h"
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>
#endif
#if defined(QSE_USE_SYSCALL) && defined(HAVE_SYS_SYSCALL_H)
#include <sys/syscall.h>
#endif
qse_fio_t* qse_fio_open (
qse_mmgr_t* mmgr, qse_size_t ext,
const qse_char_t* path, int flags, int mode)
@ -179,11 +175,7 @@ qse_fio_t* qse_fio_init (
desired_access |= O_LARGEFILE;
#endif
#ifdef SYS_open
handle = syscall (SYS_open, path_mb, desired_access, mode);
#else
handle = open (path_mb, desired_access, mode);
#endif
handle = QSE_OPEN (path_mb, desired_access, mode);
}
if (handle == -1) return QSE_NULL;
@ -199,11 +191,7 @@ void qse_fio_fini (qse_fio_t* fio)
#ifdef _WIN32
CloseHandle (fio->handle);
#else
#if defined(SYS_close)
syscall (SYS_close, fio->handle);
#else
close (fio->handle);
#endif
QSE_CLOSE (fio->handle);
#endif
}
@ -295,15 +283,7 @@ int qse_fio_truncate (qse_fio_t* fio, qse_fio_off_t size)
return 0;
#else
#if !defined(_LP64) && defined(SYS_ftruncate64)
return syscall (SYS_ftruncate64, fio->handle, size);
#elif defined(SYS_ftruncate)
return syscall (SYS_ftruncate, fio->handle, size);
#elif !defined(_LP64) && defined(HAVE_FTRUNCATE64)
return ftruncate64 (fio->handle, size);
#else
return ftruncate (fio->handle, size);
#endif
return QSE_TRUNCATE (fio->handle, size);
#endif
}
@ -316,11 +296,7 @@ qse_ssize_t qse_fio_read (qse_fio_t* fio, void* buf, qse_size_t size)
return (qse_ssize_t)count;
#else
if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t);
#ifdef SYS_read
return syscall (SYS_read, fio->handle, buf, size);
#else
return read (fio->handle, buf, size);
#endif
return QSE_READ (fio->handle, buf, size);
#endif
}
@ -333,11 +309,7 @@ qse_ssize_t qse_fio_write (qse_fio_t* fio, const void* data, qse_size_t size)
return (qse_ssize_t)count;
#else
if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t);
#ifdef SYS_write
return syscall (SYS_write, fio->handle, data, size);
#else
return write (fio->handle, data, size);
#endif
return QSE_WRITE (fio->handle, data, size);
#endif
}

117
qse/lib/cmn/pio.c Normal file
View File

@ -0,0 +1,117 @@
/*
* $Id: pio.c,v 1.23 2006/06/30 04:18:47 bacon Exp $
*/
#include <qse/cmn/pio.h>
#include "mem.h"
#ifdef _WIN32
#include <windows.h>
#include <psapi.h>
#include <tchar.h>
#else
#include "syscall.h"
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <limits.h>
#endif
qse_pio_t* qse_pio_open (
qse_mmgr_t* mmgr, qse_size_t ext,
const qse_char_t* path, int flags, int mode)
{
qse_pio_t* pio;
if (mmgr == QSE_NULL)
{
mmgr = QSE_MMGR_GETDFL();
QSE_ASSERTX (mmgr != QSE_NULL,
"Set the memory manager with QSE_MMGR_SETDFL()");
if (mmgr == QSE_NULL) return QSE_NULL;
}
pio = QSE_MMGR_ALLOC (mmgr, QSE_SIZEOF(qse_pio_t) + ext);
if (pio == QSE_NULL) return QSE_NULL;
if (qse_pio_init (pio, mmgr, path, flags, mode) == QSE_NULL)
{
QSE_MMGR_FREE (mmgr, pio);
return QSE_NULL;
}
return pio;
}
void qse_pio_close (qse_pio_t* pio)
{
qse_pio_fini (pio);
QSE_MMGR_FREE (pio->mmgr, pio);
}
qse_pio_t* qse_pio_init (
qse_pio_t* pio, qse_mmgr_t* mmgr,
const qse_char_t* path, int flags, int mode)
{
qse_pio_hnd_t handle;
QSE_MEMSET (pio, 0, QSE_SIZEOF(*pio));
pio->mmgr = mmgr;
#ifdef _WIN32
handle = -1;
#else
handle = -1;
#endif
pio->handle = handle;
return pio;
}
void qse_pio_fini (qse_pio_t* pio)
{
#ifdef _WIN32
CloseHandle (pio->handle);
#else
QSE_CLOSE (pio->handle);
#endif
}
qse_pio_hnd_t qse_pio_gethandle (qse_pio_t* pio)
{
return pio->handle;
}
void qse_pio_sethandle (qse_pio_t* pio, qse_pio_hnd_t handle)
{
pio->handle = handle;
}
qse_ssize_t qse_pio_read (qse_pio_t* pio, void* buf, qse_size_t size)
{
#ifdef _WIN32
DWORD count;
if (size > QSE_TYPE_MAX(DWORD)) size = QSE_TYPE_MAX(DWORD);
if (ReadFile(pio->handle, buf, size, &count, QSE_NULL) == FALSE) return -1;
return (qse_ssize_t)count;
#else
if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t);
return QSE_READ (pio->handle, buf, size);
#endif
}
qse_ssize_t qse_pio_write (qse_pio_t* pio, const void* data, qse_size_t size)
{
#ifdef _WIN32
DWORD count;
if (size > QSE_TYPE_MAX(DWORD)) size = QSE_TYPE_MAX(DWORD);
if (WriteFile(pio->handle, data, size, &count, QSE_NULL) == FALSE) return -1;
return (qse_ssize_t)count;
#else
if (size > QSE_TYPE_MAX(size_t)) size = QSE_TYPE_MAX(size_t);
return QSE_WRITE (pio->handle, data, size);
#endif
}

52
qse/lib/cmn/syscall.h Normal file
View File

@ -0,0 +1,52 @@
#ifndef _QSE_LIB_CMN_SYSCALL_H_
#define _QSE_LIB_CMN_SYSCALL_H_
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
#endif
#if defined(QSE_USE_SYSCALL) && defined(HAVE_SYS_SYSCALL_H)
#include <sys/syscall.h>
#endif
#ifdef SYS_open
#define QSE_OPEN(path,flags,mode) syscall(SYS_open,path,flags,mode)
#else
#define QSE_OPEN(path,flags,mode) open(path,flags,mode)
#endif
#ifdef SYS_close
#define QSE_CLOSE(handle) syscall(SYS_close,handle)
#else
#define QSE_CLOSE(handle) close(handle)
#endif
#ifdef SYS_read
#define QSE_READ(handle,buf,size) syscall(SYS_read,handle,buf,size)
#else
#define QSE_READ(handle,buf,size) read(handle,buf,size)
#endif
#ifdef SYS_write
#define QSE_WRITE(handle,buf,size) syscall(SYS_write,handle,buf,size)
#else
#define QSE_WRITE(handle,buf,size) write(handle,buf,size)
#endif
#if !defined(_LP64) && defined(SYS_ftruncate64)
#define QSE_FTRUNCATE(handle,size) syscall(SYS_ftruncate64,handle,size)
#elif defined(SYS_ftruncate)
#define QSE_FTRUNCATE(handle,size) syscall(SYS_ftruncate,handle,size)
#elif !defined(_LP64) && defined(HAVE_FTRUNCATE64)
#define QSE_FTRUNCATE(handle,size) ftruncate64(handle,size)
#else
#define QSE_FTRUNCATE(handle,size) ftruncate(handle,size)
#endif
#ifdef SYS_fork
#define QSE_FORK() syscall(SYS_fork)
#else
#define QSE_FORK() fork()
#endif
#endif

View File

@ -82,15 +82,10 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_CJ = @BUILD_CJ@
BUILD_JNI = @BUILD_JNI@
BUILD_MODE = @BUILD_MODE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAGS_JNI = @CFLAGS_JNI@
CJ = @CJ@
CJFLAGS = @CJFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@ -116,10 +111,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAR_PATH = @JAR_PATH@
JAVAC = @JAVAC@
JAVAC_PATH = @JAVAC_PATH@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@

View File

@ -80,15 +80,10 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_CJ = @BUILD_CJ@
BUILD_JNI = @BUILD_JNI@
BUILD_MODE = @BUILD_MODE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAGS_JNI = @CFLAGS_JNI@
CJ = @CJ@
CJFLAGS = @CJFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@ -114,10 +109,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAR_PATH = @JAR_PATH@
JAVAC = @JAVAC@
JAVAC_PATH = @JAVAC_PATH@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@

View File

@ -80,15 +80,10 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_CJ = @BUILD_CJ@
BUILD_JNI = @BUILD_JNI@
BUILD_MODE = @BUILD_MODE@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CFLAGS_JNI = @CFLAGS_JNI@
CJ = @CJ@
CJFLAGS = @CJFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
@ -114,10 +109,6 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAR_PATH = @JAR_PATH@
JAVAC = @JAVAC@
JAVAC_PATH = @JAVAC_PATH@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBM = @LIBM@