interim commit while adding pio.c
This commit is contained in:
@ -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
|
||||
|
@ -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@
|
||||
|
@ -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
117
qse/lib/cmn/pio.c
Normal 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
52
qse/lib/cmn/syscall.h
Normal 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
|
Reference in New Issue
Block a user