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

@ -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