* renamed udd to ctx in qse_mmgr_t
* fixed problems in build and test scripts
This commit is contained in:
parent
f332efc288
commit
6e2dd10655
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.c 547 2011-08-13 16:04:14Z hyunghwan.chung $
|
* $Id: awk.c 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -864,15 +864,15 @@ static int awk_main (int argc, qse_char_t* argv[])
|
|||||||
#if defined(QSE_BUILD_DEBUG)
|
#if defined(QSE_BUILD_DEBUG)
|
||||||
if (arg.failmalloc > 0)
|
if (arg.failmalloc > 0)
|
||||||
{
|
{
|
||||||
debug_mmgr.udd = &arg;
|
debug_mmgr.ctx = &arg;
|
||||||
mmgr = &debug_mmgr;
|
mmgr = &debug_mmgr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
if (arg.memlimit > 0)
|
if (arg.memlimit > 0)
|
||||||
{
|
{
|
||||||
xma_mmgr.udd = qse_xma_open (QSE_NULL, 0, arg.memlimit);
|
xma_mmgr.ctx = qse_xma_open (QSE_NULL, 0, arg.memlimit);
|
||||||
if (xma_mmgr.udd == QSE_NULL)
|
if (xma_mmgr.ctx == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_printf (QSE_T("ERROR: cannot open memory heap\n"));
|
qse_printf (QSE_T("ERROR: cannot open memory heap\n"));
|
||||||
goto oops;
|
goto oops;
|
||||||
@ -925,7 +925,7 @@ static int awk_main (int argc, qse_char_t* argv[])
|
|||||||
|
|
||||||
#ifdef ENABLE_CALLBACK
|
#ifdef ENABLE_CALLBACK
|
||||||
rcb.stm = on_statement;
|
rcb.stm = on_statement;
|
||||||
rcb.udd = &arg;
|
rcb.ctx = &arg;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rtx = qse_awk_rtx_openstd (
|
rtx = qse_awk_rtx_openstd (
|
||||||
@ -973,7 +973,7 @@ oops:
|
|||||||
if (rtx) qse_awk_rtx_close (rtx);
|
if (rtx) qse_awk_rtx_close (rtx);
|
||||||
if (awk) qse_awk_close (awk);
|
if (awk) qse_awk_close (awk);
|
||||||
|
|
||||||
if (xma_mmgr.udd) qse_xma_close (xma_mmgr.udd);
|
if (xma_mmgr.ctx) qse_xma_close (xma_mmgr.ctx);
|
||||||
freearg (&arg);
|
freearg (&arg);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -275,8 +275,8 @@ int sed_main (int argc, qse_char_t* argv[])
|
|||||||
|
|
||||||
if (g_memlimit > 0)
|
if (g_memlimit > 0)
|
||||||
{
|
{
|
||||||
xma_mmgr.udd = qse_xma_open (QSE_NULL, 0, g_memlimit);
|
xma_mmgr.ctx = qse_xma_open (QSE_NULL, 0, g_memlimit);
|
||||||
if (xma_mmgr.udd == QSE_NULL)
|
if (xma_mmgr.ctx == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_printf (QSE_T("ERROR: cannot open memory heap\n"));
|
qse_printf (QSE_T("ERROR: cannot open memory heap\n"));
|
||||||
goto oops;
|
goto oops;
|
||||||
@ -353,7 +353,7 @@ int sed_main (int argc, qse_char_t* argv[])
|
|||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (sed) qse_sed_close (sed);
|
if (sed) qse_sed_close (sed);
|
||||||
if (xma_mmgr.udd) qse_xma_close (xma_mmgr.udd);
|
if (xma_mmgr.ctx) qse_xma_close (xma_mmgr.ctx);
|
||||||
if (g_script_file != QSE_NULL && g_script != QSE_NULL)
|
if (g_script_file != QSE_NULL && g_script != QSE_NULL)
|
||||||
QSE_MMGR_FREE (QSE_MMGR_GETDFL(), g_script);
|
QSE_MMGR_FREE (QSE_MMGR_GETDFL(), g_script);
|
||||||
return ret;
|
return ret;
|
||||||
|
4
qse/configure
vendored
4
qse/configure
vendored
@ -17186,7 +17186,7 @@ QSE_PROJECT_AUTHOR="${PACKAGE_BUGREPORT}"
|
|||||||
QSE_PROJECT_URL="${PACKAGE_URL}"
|
QSE_PROJECT_URL="${PACKAGE_URL}"
|
||||||
|
|
||||||
|
|
||||||
ac_config_files="$ac_config_files Makefile README include/Makefile include/qse/Makefile include/qse/cmn/Makefile include/qse/awk/Makefile include/qse/cut/Makefile include/qse/sed/Makefile include/qse/stx/Makefile include/qse/net/Makefile lib/Makefile lib/cmn/Makefile lib/awk/Makefile lib/cut/Makefile lib/sed/Makefile lib/stx/Makefile lib/net/Makefile cmd/Makefile cmd/awk/Makefile cmd/cut/Makefile cmd/sed/Makefile cmd/stx/Makefile samples/Makefile samples/cmn/Makefile samples/awk/Makefile samples/cut/Makefile samples/sed/Makefile samples/net/Makefile regress/Makefile regress/awk/Makefile regress/sed/Makefile doc/Makefile doc/page/Makefile doc/Doxyfile"
|
ac_config_files="$ac_config_files Makefile README include/Makefile include/qse/Makefile include/qse/cmn/Makefile include/qse/awk/Makefile include/qse/cut/Makefile include/qse/sed/Makefile include/qse/stx/Makefile include/qse/net/Makefile lib/Makefile lib/cmn/Makefile lib/awk/Makefile lib/cut/Makefile lib/sed/Makefile lib/stx/Makefile lib/net/Makefile cmd/Makefile cmd/awk/Makefile cmd/cut/Makefile cmd/sed/Makefile cmd/stx/Makefile samples/Makefile samples/cmn/Makefile samples/awk/Makefile samples/cut/Makefile samples/sed/Makefile samples/net/Makefile regress/Makefile regress/awk/Makefile regress/awk/regress.sh regress/sed/Makefile regress/sed/regress.sh doc/Makefile doc/page/Makefile doc/Doxyfile"
|
||||||
|
|
||||||
cat >confcache <<\_ACEOF
|
cat >confcache <<\_ACEOF
|
||||||
# This file is a shell script that caches the results of configure
|
# This file is a shell script that caches the results of configure
|
||||||
@ -18307,7 +18307,9 @@ do
|
|||||||
"samples/net/Makefile") CONFIG_FILES="$CONFIG_FILES samples/net/Makefile" ;;
|
"samples/net/Makefile") CONFIG_FILES="$CONFIG_FILES samples/net/Makefile" ;;
|
||||||
"regress/Makefile") CONFIG_FILES="$CONFIG_FILES regress/Makefile" ;;
|
"regress/Makefile") CONFIG_FILES="$CONFIG_FILES regress/Makefile" ;;
|
||||||
"regress/awk/Makefile") CONFIG_FILES="$CONFIG_FILES regress/awk/Makefile" ;;
|
"regress/awk/Makefile") CONFIG_FILES="$CONFIG_FILES regress/awk/Makefile" ;;
|
||||||
|
"regress/awk/regress.sh") CONFIG_FILES="$CONFIG_FILES regress/awk/regress.sh" ;;
|
||||||
"regress/sed/Makefile") CONFIG_FILES="$CONFIG_FILES regress/sed/Makefile" ;;
|
"regress/sed/Makefile") CONFIG_FILES="$CONFIG_FILES regress/sed/Makefile" ;;
|
||||||
|
"regress/sed/regress.sh") CONFIG_FILES="$CONFIG_FILES regress/sed/regress.sh" ;;
|
||||||
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
|
||||||
"doc/page/Makefile") CONFIG_FILES="$CONFIG_FILES doc/page/Makefile" ;;
|
"doc/page/Makefile") CONFIG_FILES="$CONFIG_FILES doc/page/Makefile" ;;
|
||||||
"doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;;
|
"doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;;
|
||||||
|
@ -275,7 +275,9 @@ AC_CONFIG_FILES([
|
|||||||
samples/net/Makefile
|
samples/net/Makefile
|
||||||
regress/Makefile
|
regress/Makefile
|
||||||
regress/awk/Makefile
|
regress/awk/Makefile
|
||||||
|
regress/awk/regress.sh
|
||||||
regress/sed/Makefile
|
regress/sed/Makefile
|
||||||
|
regress/sed/regress.sh
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
doc/page/Makefile
|
doc/page/Makefile
|
||||||
doc/Doxyfile
|
doc/Doxyfile
|
||||||
|
@ -39,7 +39,7 @@ PROJECT_NUMBER = @VERSION@
|
|||||||
# where doxygen was started. If left blank the current directory will be used.
|
# where doxygen was started. If left blank the current directory will be used.
|
||||||
|
|
||||||
#OUTPUT_DIRECTORY = ./qse-@VERSION@
|
#OUTPUT_DIRECTORY = ./qse-@VERSION@
|
||||||
OUTPUT_DIRECTORY = @abs_top_srcdir@/doc/qse-@VERSION@
|
OUTPUT_DIRECTORY = @abs_srcdir@/qse-@VERSION@
|
||||||
|
|
||||||
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
|
||||||
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
# 4096 sub-directories (in 2 levels) under the output directory of each output
|
||||||
@ -565,7 +565,7 @@ WARN_LOGFILE =
|
|||||||
# directories like "/usr/src/myproject". Separate the files or directories
|
# directories like "/usr/src/myproject". Separate the files or directories
|
||||||
# with spaces.
|
# with spaces.
|
||||||
|
|
||||||
INPUT = @abs_top_srcdir@/include @abs_top_srcdir@/doc/page
|
INPUT = @abs_top_srcdir@/include @abs_srcdir@/page
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||||
@ -791,7 +791,7 @@ HTML_FOOTER =
|
|||||||
# the style sheet file to the HTML output directory, so don't put your own
|
# the style sheet file to the HTML output directory, so don't put your own
|
||||||
# stylesheet in the HTML output directory as well, or it will be erased!
|
# stylesheet in the HTML output directory as well, or it will be erased!
|
||||||
|
|
||||||
HTML_STYLESHEET = @abs_top_srcdir@/doc/doxygen.css
|
HTML_STYLESHEET = @abs_srcdir@/doxygen.css
|
||||||
|
|
||||||
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
|
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
|
||||||
# files or namespaces will be aligned in HTML using tables. If set to
|
# files or namespaces will be aligned in HTML using tables. If set to
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/** @defgroup awk AWK
|
/** @page awk AWK
|
||||||
|
|
||||||
@section awk_intro INTRODUCTION
|
@section awk_intro INTRODUCTION
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/** @defgroup cut TEXT CUTTER
|
/** @page cut TEXT CUTTER
|
||||||
|
|
||||||
@section cut_contents CONTENTS
|
@section cut_contents CONTENTS
|
||||||
- \ref cut_intro
|
- \ref cut_intro
|
||||||
|
@ -2,18 +2,12 @@
|
|||||||
|
|
||||||
@section qse_intro INTRODUCTION
|
@section qse_intro INTRODUCTION
|
||||||
|
|
||||||
The QSE library implements functionality of various Unix commands in an
|
The QSE library implements various Unix commands in an embeddable form and
|
||||||
embeddable form and defines data types, functions, and classes that you can
|
defines data types, functions, and classes that you can use when you embed
|
||||||
use when you embed such functionality into an application. The interface has
|
them into an application. It also provides more fundamental data types and
|
||||||
been designed to be flexible enough to access various aspects of embedding
|
funtions needed when you deal with memory, streams, data structures.
|
||||||
application and an embedded object from each other.
|
The interface has been designed to be flexible enough to access various
|
||||||
|
aspects of embedding application and an embedded object from each other.
|
||||||
Currently the library contains the following components:
|
|
||||||
- @subpage awk "AWK Interpreter"
|
|
||||||
- @subpage cut "CUT Text Cutter"
|
|
||||||
- @subpage sed "SED Stream Editor"
|
|
||||||
|
|
||||||
As the library grows, more components will be added.
|
|
||||||
|
|
||||||
The library is licensed under the GNU Lesser General Public License version 3:
|
The library is licensed under the GNU Lesser General Public License version 3:
|
||||||
http://www.gnu.org/licenses/
|
http://www.gnu.org/licenses/
|
||||||
@ -23,6 +17,16 @@ The project webpage: http://code.abiyo.net/@qse
|
|||||||
For further information, contact:
|
For further information, contact:
|
||||||
Chung, Hyung-Hwan <hyunghwan.chung@gmail.com>
|
Chung, Hyung-Hwan <hyunghwan.chung@gmail.com>
|
||||||
|
|
||||||
|
@section components MODULES
|
||||||
|
|
||||||
|
See the subpages for various modules available in this library.
|
||||||
|
|
||||||
|
- @subpage mem "Memory Management"
|
||||||
|
- @subpage io "I/O Handling"
|
||||||
|
- @subpage awk "AWK Interpreter"
|
||||||
|
- @subpage cut "CUT Text Cutter"
|
||||||
|
- @subpage sed "SED Stream Editor"
|
||||||
|
|
||||||
@section installation INSTALLATION
|
@section installation INSTALLATION
|
||||||
|
|
||||||
@subsection build_from_source BUILINDG FROM A SOURCE PACKAGE
|
@subsection build_from_source BUILINDG FROM A SOURCE PACKAGE
|
||||||
@ -87,18 +91,5 @@ Under the wide character mode:
|
|||||||
|
|
||||||
#qse_mchar_t maps to @b char and #qse_wchar_t maps to @b wchar_t or equivalent.
|
#qse_mchar_t maps to @b char and #qse_wchar_t maps to @b wchar_t or equivalent.
|
||||||
|
|
||||||
@section library_modules LIBRARY MODULES
|
|
||||||
@b QSE contains a set of APIs. Each set is organized into a library module
|
|
||||||
and its interface is exported via header files. Commonly used functions and
|
|
||||||
data structures are organized into a common functions library and forms the
|
|
||||||
foundation for other modules. Specialized functions and data structures are
|
|
||||||
organized to dedicated modules. See relevant subpages for more information
|
|
||||||
on each module.
|
|
||||||
|
|
||||||
- @subpage mem "Memory Management"
|
|
||||||
- @subpage io "I/O Handling"
|
|
||||||
- @subpage awk "AWK Interpreter"
|
|
||||||
- @subpage cut "CUT Text Cutter"
|
|
||||||
- @subpage sed "SED Stream Editor"
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,60 @@
|
|||||||
/** @page mem Memory Management
|
/** @page mem Memory Management
|
||||||
|
|
||||||
@section mem_alloc Memory Allocator
|
@section mem_overview Overview
|
||||||
- Private heap allocator #qse_xma_t
|
|
||||||
- Fixed-size block allocator #qse_fma_t
|
A memory manager is an instance of a structure type #qse_mmgr_t. Creating
|
||||||
|
and/or initializing an object requires a memory manager to be passed in.
|
||||||
|
If you pass in #QSE_NULL for a memory manager, the object is created and/or
|
||||||
|
initialized with the default memory manager.
|
||||||
|
|
||||||
|
The default memory manager is merely a wrapper to memory allocation functions
|
||||||
|
provided by underlying operating systems: HeapAlloc/HeapReAlloc/HeapFree
|
||||||
|
on _WIN32 and malloc/realloc/free on other platforms. You can get this default
|
||||||
|
memory manager with qse_getdflmmgr() and can change it with qse_setdflmmgr().
|
||||||
|
|
||||||
|
Typically, the name of a function creating an object begins with @b qse_,
|
||||||
|
ends with @b _open, and accepts a memory manager as the first parameter.
|
||||||
|
See qse_mbs_open() for instance. So you can customize memory management
|
||||||
|
at the per-object level.
|
||||||
|
|
||||||
|
@section mem_xma Priviate Heap
|
||||||
|
|
||||||
|
While the default memory manager allocates memory from a system-wide heap,
|
||||||
|
you can create a private heap and use it when you create an object.
|
||||||
|
The #qse_xma_t type defines a private heap manager and its functions offer
|
||||||
|
sufficient interface to form a memory manager over a private heap.
|
||||||
|
|
||||||
|
A typical usage is shown below:
|
||||||
|
|
||||||
|
@code
|
||||||
|
qse_mmgr_t mmgr;
|
||||||
|
|
||||||
|
/* Create a heap */
|
||||||
|
heap = qse_xma_open (QSE_NULL, 0, 1024 * 1024); /* 1M heap */
|
||||||
|
|
||||||
|
/* Initialize a new memory */
|
||||||
|
mmgr.alloc = (qse_mmgr_alloc_t)qse_xma_alloc;
|
||||||
|
mmgr.realloc = (qse_mmgr_realloc_t)qse_xma_realloc;
|
||||||
|
mmgr.free = (qse_mmgr_free_t)qse_xma_realloc;
|
||||||
|
mmgr.ctx = heap;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* You can pass 'mmgr' when you create/initialize a different object
|
||||||
|
*/
|
||||||
|
....
|
||||||
|
....
|
||||||
|
|
||||||
|
/* Destroy the heap */
|
||||||
|
qse_xma_close (heap);
|
||||||
|
@endcode
|
||||||
|
|
||||||
|
Note that creating a private heap requires a memory manager, too. The example
|
||||||
|
above used the default memory manager to create a private heap within the
|
||||||
|
global heap. This means that you can split a heap to smaller subheaps.
|
||||||
|
|
||||||
|
@section mem_fma Fixed-size Block Allocator
|
||||||
|
|
||||||
|
If the size of memory blocks to allocate share the same size, you can use
|
||||||
|
#qse_fma_t for performance.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/** @defgroup sed Stream Editor
|
/** @page sed Stream Editor
|
||||||
|
|
||||||
@section sed_contents CONTENTS
|
@section sed_contents CONTENTS
|
||||||
- \ref sed_intro
|
- \ref sed_intro
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.h 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
* $Id: awk.h 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -678,7 +678,7 @@ typedef struct qse_awk_rio_t qse_awk_rio_t;
|
|||||||
typedef void (*qse_awk_rcb_stm_t) (
|
typedef void (*qse_awk_rcb_stm_t) (
|
||||||
qse_awk_rtx_t* rtx, /**< runtime context */
|
qse_awk_rtx_t* rtx, /**< runtime context */
|
||||||
qse_awk_nde_t* nde, /**< node */
|
qse_awk_nde_t* nde, /**< node */
|
||||||
void* udd /**< user-defined data */
|
void* ctx /**< user-defined data */
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -698,7 +698,7 @@ struct qse_awk_rcb_t
|
|||||||
* A caller may store a user-defined data pointer into this field. This
|
* A caller may store a user-defined data pointer into this field. This
|
||||||
* is passed to the actual callback.
|
* is passed to the actual callback.
|
||||||
*/
|
*/
|
||||||
void* udd;
|
void* ctx;
|
||||||
};
|
};
|
||||||
typedef struct qse_awk_rcb_t qse_awk_rcb_t;
|
typedef struct qse_awk_rcb_t qse_awk_rcb_t;
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
this->alloc = alloc_mem;
|
this->alloc = alloc_mem;
|
||||||
this->realloc = realloc_mem;
|
this->realloc = realloc_mem;
|
||||||
this->free = free_mem;
|
this->free = free_mem;
|
||||||
this->udd = this;
|
this->ctx = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
@ -90,17 +90,17 @@ protected:
|
|||||||
///
|
///
|
||||||
/// bridge function from the #qse_mmgr_t type the allocMem() function.
|
/// bridge function from the #qse_mmgr_t type the allocMem() function.
|
||||||
///
|
///
|
||||||
static void* alloc_mem (void* udd, size_t n);
|
static void* alloc_mem (void* ctx, size_t n);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// bridge function from the #qse_mmgr_t type the reallocMem() function.
|
/// bridge function from the #qse_mmgr_t type the reallocMem() function.
|
||||||
///
|
///
|
||||||
static void* realloc_mem (void* udd, void* ptr, size_t n);
|
static void* realloc_mem (void* ctx, void* ptr, size_t n);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// bridge function from the #qse_mmgr_t type the freeMem() function.
|
/// bridge function from the #qse_mmgr_t type the freeMem() function.
|
||||||
///
|
///
|
||||||
static void free_mem (void* udd, void* ptr);
|
static void free_mem (void* ctx, void* ptr);
|
||||||
};
|
};
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
@ -118,7 +118,7 @@
|
|||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* // complete the qse_mmgr_t interface by providing the allocator.
|
* // complete the qse_mmgr_t interface by providing the allocator.
|
||||||
* mmgr.udd = fma;
|
* mmgr.ctx = fma;
|
||||||
*
|
*
|
||||||
* // initializes the statically declared red-black tree.
|
* // initializes the statically declared red-black tree.
|
||||||
* // can not call qse_rbt_open() which allocates the qse_rbt_t object.
|
* // can not call qse_rbt_open() which allocates the qse_rbt_t object.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: mem.h 441 2011-04-22 14:28:43Z hyunghwan.chung $
|
* $Id: mem.h 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -42,22 +42,18 @@
|
|||||||
* The QSE_MMGR_ALLOC() macro allocates a memory block of the @a size bytes
|
* The QSE_MMGR_ALLOC() macro allocates a memory block of the @a size bytes
|
||||||
* using the @a mmgr memory manager.
|
* using the @a mmgr memory manager.
|
||||||
*/
|
*/
|
||||||
#define QSE_MMGR_ALLOC(mmgr,size) \
|
#define QSE_MMGR_ALLOC(mmgr,size) ((mmgr)->alloc((mmgr)->ctx,size))
|
||||||
((mmgr)->alloc((mmgr)->udd,size))
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The QSE_MMGR_REALLOC() macro resizes a memory block pointed to by @a ptr
|
* The QSE_MMGR_REALLOC() macro resizes a memory block pointed to by @a ptr
|
||||||
* to the @a size bytes using the @a mmgr memory manager.
|
* to the @a size bytes using the @a mmgr memory manager.
|
||||||
*/
|
*/
|
||||||
#define QSE_MMGR_REALLOC(mmgr,ptr,size) \
|
#define QSE_MMGR_REALLOC(mmgr,ptr,size) ((mmgr)->realloc((mmgr)->ctx,ptr,size))
|
||||||
((mmgr)->realloc((mmgr)->udd,ptr,size))
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The QSE_MMGR_FREE() macro deallocates the memory block pointed to by @a ptr.
|
* The QSE_MMGR_FREE() macro deallocates the memory block pointed to by @a ptr.
|
||||||
*/
|
*/
|
||||||
#define QSE_MMGR_FREE(mmgr,ptr) \
|
#define QSE_MMGR_FREE(mmgr,ptr) ((mmgr)->free((mmgr)->ctx,ptr))
|
||||||
((mmgr)->free((mmgr)->udd,ptr))
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: str.h 536 2011-08-06 03:25:08Z hyunghwan.chung $
|
* $Id: str.h 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -2236,6 +2236,9 @@ qse_mchar_t* qse_wcstombsdup (
|
|||||||
|
|
||||||
QSE_DEFINE_COMMON_FUNCTIONS (mbs)
|
QSE_DEFINE_COMMON_FUNCTIONS (mbs)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The qse_mbs_open() function creates a dynamically resizable multibyte string.
|
||||||
|
*/
|
||||||
qse_mbs_t* qse_mbs_open (
|
qse_mbs_t* qse_mbs_open (
|
||||||
qse_mmgr_t* mmgr,
|
qse_mmgr_t* mmgr,
|
||||||
qse_size_t ext,
|
qse_size_t ext,
|
||||||
@ -2405,6 +2408,11 @@ qse_size_t qse_mbs_pac (
|
|||||||
|
|
||||||
QSE_DEFINE_COMMON_FUNCTIONS (wcs)
|
QSE_DEFINE_COMMON_FUNCTIONS (wcs)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The qse_wcs_open() function creates a dynamically resizable wide-character
|
||||||
|
* string.
|
||||||
|
*/
|
||||||
qse_wcs_t* qse_wcs_open (
|
qse_wcs_t* qse_wcs_open (
|
||||||
qse_mmgr_t* mmgr,
|
qse_mmgr_t* mmgr,
|
||||||
qse_size_t ext,
|
qse_size_t ext,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: types.h 524 2011-07-26 15:41:20Z hyunghwan.chung $
|
* $Id: types.h 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -555,22 +555,22 @@ typedef struct qse_xptl_t qse_xptl_t;
|
|||||||
* allocate a memory chunk of the size @a n.
|
* allocate a memory chunk of the size @a n.
|
||||||
* @return pointer to a memory chunk on success, QSE_NULL on failure.
|
* @return pointer to a memory chunk on success, QSE_NULL on failure.
|
||||||
*/
|
*/
|
||||||
typedef void* (*qse_mmgr_alloc_t) (void* udd, qse_size_t n);
|
typedef void* (*qse_mmgr_alloc_t) (void* ctx, qse_size_t n);
|
||||||
/**
|
/**
|
||||||
* resize a memory chunk pointed to by @a ptr to the size @a n.
|
* resize a memory chunk pointed to by @a ptr to the size @a n.
|
||||||
* @return pointer to a memory chunk on success, QSE_NULL on failure.
|
* @return pointer to a memory chunk on success, QSE_NULL on failure.
|
||||||
*/
|
*/
|
||||||
typedef void* (*qse_mmgr_realloc_t) (void* udd, void* ptr, qse_size_t n);
|
typedef void* (*qse_mmgr_realloc_t) (void* ctx, void* ptr, qse_size_t n);
|
||||||
/**
|
/**
|
||||||
* free a memory chunk pointed to by @a ptr.
|
* free a memory chunk pointed to by @a ptr.
|
||||||
*/
|
*/
|
||||||
typedef void (*qse_mmgr_free_t) (void* udd, void* ptr);
|
typedef void (*qse_mmgr_free_t) (void* ctx, void* ptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The qse_mmgr_t type defines a set of functions for memory management.
|
* The qse_mmgr_t type defines a set of functions for memory management.
|
||||||
* As the type is merely a structure, it is just used as a single container
|
* As the type is merely a structure, it is just used as a single container
|
||||||
* for memory management functions with a pointer to user-defined data.
|
* for memory management functions with a pointer to user-defined data.
|
||||||
* The user-defined data pointer @a udd is passed to each memory management
|
* The user-defined data pointer @a ctx is passed to each memory management
|
||||||
* function whenever it is called. You can allocate, reallocate, and free
|
* function whenever it is called. You can allocate, reallocate, and free
|
||||||
* a memory chunk.
|
* a memory chunk.
|
||||||
*
|
*
|
||||||
@ -582,7 +582,7 @@ struct qse_mmgr_t
|
|||||||
qse_mmgr_alloc_t alloc; /**< allocation function */
|
qse_mmgr_alloc_t alloc; /**< allocation function */
|
||||||
qse_mmgr_realloc_t realloc; /**< resizing function */
|
qse_mmgr_realloc_t realloc; /**< resizing function */
|
||||||
qse_mmgr_free_t free; /**< disposal function */
|
qse_mmgr_free_t free; /**< disposal function */
|
||||||
void* udd; /**< user-defined data pointer */
|
void* ctx; /**< user-defined data pointer */
|
||||||
};
|
};
|
||||||
typedef struct qse_mmgr_t qse_mmgr_t;
|
typedef struct qse_mmgr_t qse_mmgr_t;
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
SUBDIRS = cmn sed awk cut stx net
|
SUBDIRS = cmn sed awk cut net stx
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
@ -229,7 +229,7 @@ target_alias = @target_alias@
|
|||||||
top_build_prefix = @top_build_prefix@
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
SUBDIRS = cmn sed awk cut stx net
|
SUBDIRS = cmn sed awk cut net stx
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.c 520 2011-07-25 07:32:49Z hyunghwan.chung $
|
* $Id: run.c 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -1892,7 +1892,7 @@ static int run_block0 (qse_awk_rtx_t* rtx, qse_awk_nde_blk_t* nde)
|
|||||||
|
|
||||||
#define ON_STATEMENT(rtx,nde) \
|
#define ON_STATEMENT(rtx,nde) \
|
||||||
if ((rtx)->awk->stopall) (rtx)->exit_level = EXIT_ABORT; \
|
if ((rtx)->awk->stopall) (rtx)->exit_level = EXIT_ABORT; \
|
||||||
if ((rtx)->rcb.stm) (rtx)->rcb.stm (rtx, nde, (rtx)->rcb.udd);
|
if ((rtx)->rcb.stm) (rtx)->rcb.stm (rtx, nde, (rtx)->rcb.ctx);
|
||||||
|
|
||||||
static int run_statement (qse_awk_rtx_t* rtx, qse_awk_nde_t* nde)
|
static int run_statement (qse_awk_rtx_t* rtx, qse_awk_nde_t* nde)
|
||||||
{
|
{
|
||||||
|
@ -24,19 +24,19 @@
|
|||||||
QSE_BEGIN_NAMESPACE(QSE)
|
QSE_BEGIN_NAMESPACE(QSE)
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
|
||||||
void* Mmgr::alloc_mem (void* udd, size_t n)
|
void* Mmgr::alloc_mem (void* ctx, size_t n)
|
||||||
{
|
{
|
||||||
return ((Mmgr*)udd)->allocMem (n);
|
return ((Mmgr*)ctx)->allocMem (n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* Mmgr::realloc_mem (void* udd, void* ptr, size_t n)
|
void* Mmgr::realloc_mem (void* ctx, void* ptr, size_t n)
|
||||||
{
|
{
|
||||||
return ((Mmgr*)udd)->reallocMem (ptr, n);
|
return ((Mmgr*)ctx)->reallocMem (ptr, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mmgr::free_mem (void* udd, void* ptr)
|
void Mmgr::free_mem (void* ctx, void* ptr)
|
||||||
{
|
{
|
||||||
return ((Mmgr*)udd)->freeMem (ptr);
|
return ((Mmgr*)ctx)->freeMem (ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: mem.c 441 2011-04-22 14:28:43Z hyunghwan.chung $
|
* $Id: mem.c 549 2011-08-14 09:07:31Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||||
This file is part of QSE.
|
This file is part of QSE.
|
||||||
@ -19,7 +19,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <qse/cmn/mem.h>
|
#include <qse/cmn/mem.h>
|
||||||
#include <stdlib.h>
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
# include <windows.h>
|
||||||
|
#else
|
||||||
|
# include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__SPU__)
|
#if defined(__SPU__)
|
||||||
#include <spu_intrinsics.h>
|
#include <spu_intrinsics.h>
|
||||||
@ -417,17 +422,40 @@ void* qse_memrmem (const void* hs, qse_size_t hl, const void* nd, qse_size_t nl)
|
|||||||
|
|
||||||
static void* mmgr_alloc (void* data, qse_size_t n)
|
static void* mmgr_alloc (void* data, qse_size_t n)
|
||||||
{
|
{
|
||||||
|
#if defined(_WIN32)
|
||||||
|
HANDLE heap;
|
||||||
|
heap = GetProcessHeap ();
|
||||||
|
if (heap == NULL) return QSE_NULL;
|
||||||
|
return HeapAlloc (heap, 0, n);
|
||||||
|
#else
|
||||||
|
/* TODO: need to rewrite this for __OS2__ using DosAllocMem()? */
|
||||||
return malloc (n);
|
return malloc (n);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* mmgr_realloc (void* data, void* ptr, qse_size_t n)
|
static void* mmgr_realloc (void* data, void* ptr, qse_size_t n)
|
||||||
{
|
{
|
||||||
|
#if defined(_WIN32)
|
||||||
|
HANDLE heap;
|
||||||
|
heap = GetProcessHeap ();
|
||||||
|
if (heap == NULL) return QSE_NULL;
|
||||||
|
|
||||||
|
return ptr? HeapReAlloc (heap, 0, ptr, n):
|
||||||
|
HeapAlloc (heap, 0, n);
|
||||||
|
#else
|
||||||
return realloc (ptr, n);
|
return realloc (ptr, n);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mmgr_free (void* data, void* ptr)
|
static void mmgr_free (void* data, void* ptr)
|
||||||
{
|
{
|
||||||
|
#if defined(_WIN32)
|
||||||
|
HANDLE heap;
|
||||||
|
heap = GetProcessHeap ();
|
||||||
|
if (heap) HeapFree (heap, 0, ptr);
|
||||||
|
#else
|
||||||
free (ptr);
|
free (ptr);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static qse_mmgr_t builtin_mmgr =
|
static qse_mmgr_t builtin_mmgr =
|
||||||
|
@ -10,6 +10,7 @@ libqsenet_la_SOURCES = \
|
|||||||
http.c \
|
http.c \
|
||||||
htre.c \
|
htre.c \
|
||||||
htrd.c \
|
htrd.c \
|
||||||
|
httpd.h \
|
||||||
httpd.c \
|
httpd.c \
|
||||||
httpd_task.c
|
httpd_task.c
|
||||||
|
|
||||||
|
@ -247,6 +247,7 @@ libqsenet_la_SOURCES = \
|
|||||||
http.c \
|
http.c \
|
||||||
htre.c \
|
htre.c \
|
||||||
htrd.c \
|
htrd.c \
|
||||||
|
httpd.h \
|
||||||
httpd.c \
|
httpd.c \
|
||||||
httpd_task.c
|
httpd_task.c
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ next:
|
|||||||
{
|
{
|
||||||
qse_char_t buf[256];
|
qse_char_t buf[256];
|
||||||
scm->prm.sprintf (
|
scm->prm.sprintf (
|
||||||
scm->prm.udd,
|
scm->prm.ctx,
|
||||||
buf, QSE_COUNTOF(buf),
|
buf, QSE_COUNTOF(buf),
|
||||||
QSE_T("%Lf"),
|
QSE_T("%Lf"),
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
|
@ -8,6 +8,8 @@ AM_CPPFLAGS = \
|
|||||||
|
|
||||||
lib_LTLIBRARIES = libqsestx.la
|
lib_LTLIBRARIES = libqsestx.la
|
||||||
|
|
||||||
libqsestx_la_SOURCES = stx.c err.c hash.c mem.c obj.c sym.c dic.c cls.c boot.c par.c
|
libqsestx_la_SOURCES = \
|
||||||
|
stx.h hash.h mem.h obj.h sym.h dic.h cls.h boot.h \
|
||||||
|
stx.c err.c hash.c mem.c obj.c sym.c dic.c cls.c boot.c par.c
|
||||||
libqsestx_la_LDFLAGS = -L../cmn -L$(libdir) -version-info 1:0:0 -no-undefined
|
libqsestx_la_LDFLAGS = -L../cmn -L$(libdir) -version-info 1:0:0 -no-undefined
|
||||||
libqsestx_la_LIBADD = -lqsecmn
|
libqsestx_la_LIBADD = -lqsecmn
|
||||||
|
@ -243,7 +243,10 @@ AM_CPPFLAGS = \
|
|||||||
-I$(includedir)
|
-I$(includedir)
|
||||||
|
|
||||||
lib_LTLIBRARIES = libqsestx.la
|
lib_LTLIBRARIES = libqsestx.la
|
||||||
libqsestx_la_SOURCES = stx.c err.c hash.c mem.c obj.c sym.c dic.c cls.c boot.c par.c
|
libqsestx_la_SOURCES = \
|
||||||
|
stx.h hash.h mem.h obj.h sym.h dic.h cls.h boot.h \
|
||||||
|
stx.c err.c hash.c mem.c obj.c sym.c dic.c cls.c boot.c par.c
|
||||||
|
|
||||||
libqsestx_la_LDFLAGS = -L../cmn -L$(libdir) -version-info 1:0:0 -no-undefined
|
libqsestx_la_LDFLAGS = -L../cmn -L$(libdir) -version-info 1:0:0 -no-undefined
|
||||||
libqsestx_la_LIBADD = -lqsecmn
|
libqsestx_la_LIBADD = -lqsecmn
|
||||||
all: all-am
|
all: all-am
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
AUTOMAKE_OPTIONS = no-dependencies
|
AUTOMAKE_OPTIONS = no-dependencies
|
||||||
|
|
||||||
|
noinst_SCRIPTS = regress.sh
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
regress.sh \
|
|
||||||
regress.out \
|
regress.out \
|
||||||
|
regress.out.xma \
|
||||||
adr-001.awk \
|
adr-001.awk \
|
||||||
adr-002.awk \
|
adr-002.awk \
|
||||||
asm.awk \
|
asm.awk \
|
||||||
@ -127,8 +129,28 @@ EXTRA_DIST = \
|
|||||||
cou.dat \
|
cou.dat \
|
||||||
emp.dat \
|
emp.dat \
|
||||||
indent.dat \
|
indent.dat \
|
||||||
|
passwd.dat \
|
||||||
quicksort2.dat \
|
quicksort2.dat \
|
||||||
quicksort.dat \
|
quicksort.dat \
|
||||||
stripcomment.dat \
|
stripcomment.dat \
|
||||||
unr.dat \
|
unr.dat \
|
||||||
asm.s
|
asm.s \
|
||||||
|
lisp/awklisp \
|
||||||
|
lisp/lists \
|
||||||
|
lisp/perlisp \
|
||||||
|
lisp/tail.lsp \
|
||||||
|
lisp/eliza.dat \
|
||||||
|
lisp/Manual \
|
||||||
|
lisp/README \
|
||||||
|
lisp/test.scm \
|
||||||
|
lisp/eliza.lsp \
|
||||||
|
lisp/numbers \
|
||||||
|
lisp/scheme.lsp \
|
||||||
|
lisp/trace \
|
||||||
|
lisp/fib.lsp \
|
||||||
|
lisp/numbers.dat \
|
||||||
|
lisp/scmhelp.lsp \
|
||||||
|
lisp/Impl-notes \
|
||||||
|
lisp/old-awklisp \
|
||||||
|
lisp/startup
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
@ -34,7 +35,8 @@ POST_UNINSTALL = :
|
|||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
subdir = regress/awk
|
subdir = regress/awk
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
|
$(srcdir)/regress.sh.in
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
|
||||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||||
@ -44,8 +46,9 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/include/qse/config.h
|
CONFIG_HEADER = $(top_builddir)/include/qse/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES = regress.sh
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
SCRIPTS = $(noinst_SCRIPTS)
|
||||||
depcomp =
|
depcomp =
|
||||||
am__depfiles_maybe =
|
am__depfiles_maybe =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
@ -193,9 +196,10 @@ top_build_prefix = @top_build_prefix@
|
|||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AUTOMAKE_OPTIONS = no-dependencies
|
AUTOMAKE_OPTIONS = no-dependencies
|
||||||
|
noinst_SCRIPTS = regress.sh
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
regress.sh \
|
|
||||||
regress.out \
|
regress.out \
|
||||||
|
regress.out.xma \
|
||||||
adr-001.awk \
|
adr-001.awk \
|
||||||
adr-002.awk \
|
adr-002.awk \
|
||||||
asm.awk \
|
asm.awk \
|
||||||
@ -320,11 +324,30 @@ EXTRA_DIST = \
|
|||||||
cou.dat \
|
cou.dat \
|
||||||
emp.dat \
|
emp.dat \
|
||||||
indent.dat \
|
indent.dat \
|
||||||
|
passwd.dat \
|
||||||
quicksort2.dat \
|
quicksort2.dat \
|
||||||
quicksort.dat \
|
quicksort.dat \
|
||||||
stripcomment.dat \
|
stripcomment.dat \
|
||||||
unr.dat \
|
unr.dat \
|
||||||
asm.s
|
asm.s \
|
||||||
|
lisp/awklisp \
|
||||||
|
lisp/lists \
|
||||||
|
lisp/perlisp \
|
||||||
|
lisp/tail.lsp \
|
||||||
|
lisp/eliza.dat \
|
||||||
|
lisp/Manual \
|
||||||
|
lisp/README \
|
||||||
|
lisp/test.scm \
|
||||||
|
lisp/eliza.lsp \
|
||||||
|
lisp/numbers \
|
||||||
|
lisp/scheme.lsp \
|
||||||
|
lisp/trace \
|
||||||
|
lisp/fib.lsp \
|
||||||
|
lisp/numbers.dat \
|
||||||
|
lisp/scmhelp.lsp \
|
||||||
|
lisp/Impl-notes \
|
||||||
|
lisp/old-awklisp \
|
||||||
|
lisp/startup
|
||||||
|
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
@ -359,6 +382,8 @@ $(top_srcdir)/configure: $(am__configure_deps)
|
|||||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(am__aclocal_m4_deps):
|
$(am__aclocal_m4_deps):
|
||||||
|
regress.sh: $(top_builddir)/config.status $(srcdir)/regress.sh.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
@ -404,7 +429,7 @@ distdir: $(DISTFILES)
|
|||||||
done
|
done
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile
|
all-am: Makefile $(SCRIPTS)
|
||||||
installdirs:
|
installdirs:
|
||||||
install: install-am
|
install: install-am
|
||||||
install-exec: install-exec-am
|
install-exec: install-exec-am
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
BEGIN {
|
BEGIN {
|
||||||
recurse1 = "../../cmd/awk/qseawk -f quicksort2.awk #" rand()
|
recurse1 = QSEAWK " -vQSEAWK=" QSEAWK " -vSCRIPT_PATH=" SCRIPT_PATH " -f " SCRIPT_PATH "/quicksort2.awk #" rand()
|
||||||
recurse2 = "../../cmd/awk/qseawk -f quicksort2.awk #" rand()
|
recurse2 = QSEAWK " -vQSEAWK=" QSEAWK " -vSCRIPT_PATH=" SCRIPT_PATH " -f " SCRIPT_PATH "/quicksort2.awk #" rand()
|
||||||
}
|
}
|
||||||
NR == 1 {
|
NR == 1 {
|
||||||
pivot=$0;
|
pivot=$0;
|
||||||
|
@ -37,12 +37,12 @@ print_usage()
|
|||||||
###################
|
###################
|
||||||
|
|
||||||
[ -z "${QSEAWK}" ] && {
|
[ -z "${QSEAWK}" ] && {
|
||||||
QSEAWK=../../cmd/awk/.libs/qseawk
|
QSEAWK="@abs_top_builddir@/cmd/awk/.libs/qseawk"
|
||||||
[ -f "${QSEAWK}" ] || QSEAWK=../../cmd/awk/qseawk
|
[ -f "${QSEAWK}" ] || QSEAWK="@abs_top_builddir@/cmd/awk/qseawk"
|
||||||
}
|
}
|
||||||
[ -z "${QSESED}" ] && {
|
[ -z "${QSESED}" ] && {
|
||||||
QSESED=../../cmd/sed/.libs/qsesed
|
QSESED="@abs_top_builddir@/cmd/sed/.libs/qsesed"
|
||||||
[ -f "${QSESED}" ] || QSESED=../../cmd/sed/qsesed
|
[ -f "${QSESED}" ] || QSESED="@abs_top_builddir@/cmd/sed/qsesed"
|
||||||
}
|
}
|
||||||
[ -f "${QSEAWK}" -a -x "${QSEAWK}" ] || {
|
[ -f "${QSEAWK}" -a -x "${QSEAWK}" ] || {
|
||||||
echo_so "the executable '${QSEAWK}' is not found or not executable"
|
echo_so "the executable '${QSEAWK}' is not found or not executable"
|
||||||
@ -55,6 +55,10 @@ print_usage()
|
|||||||
|
|
||||||
QSEAWK_BASENAME="`basename "${QSEAWK}"`"
|
QSEAWK_BASENAME="`basename "${QSEAWK}"`"
|
||||||
|
|
||||||
|
SCRIPT_DIR="@abs_top_srcdir@/regress/awk"
|
||||||
|
BASE_OUTFILE="@abs_top_srcdir@/regress/awk/regress.out"
|
||||||
|
BASE_OUTFILE_XMA="@abs_top_srcdir@/regress/awk/regress.out.xma"
|
||||||
|
|
||||||
TMPFILE="${TMPFILE:=./regress.temp}"
|
TMPFILE="${TMPFILE:=./regress.temp}"
|
||||||
OUTFILE="${OUTFILE:=./regress.out}"
|
OUTFILE="${OUTFILE:=./regress.out}"
|
||||||
OUTFILE_XMA="${OUTFILE}.xma"
|
OUTFILE_XMA="${OUTFILE}.xma"
|
||||||
@ -173,7 +177,7 @@ PROGS="
|
|||||||
levenshtein-utests.awk!!!--newline=on --include=on
|
levenshtein-utests.awk!!!--newline=on --include=on
|
||||||
rcalc.awk!!!--newline=on -v target=89000
|
rcalc.awk!!!--newline=on -v target=89000
|
||||||
quicksort.awk!quicksort.dat!!
|
quicksort.awk!quicksort.dat!!
|
||||||
quicksort2.awk!quicksort2.dat!!
|
quicksort2.awk!quicksort2.dat!!-vQSEAWK=\"${QSEAWK}\" -vSCRIPT_PATH=\"${SCRIPT_DIR}\"
|
||||||
asm.awk!asm.s!asm.dat!
|
asm.awk!asm.s!asm.dat!
|
||||||
stripcomment.awk!stripcomment.dat!!
|
stripcomment.awk!stripcomment.dat!!
|
||||||
wordfreq.awk!wordfreq.awk!!
|
wordfreq.awk!wordfreq.awk!!
|
||||||
@ -208,23 +212,34 @@ run_scripts()
|
|||||||
|
|
||||||
script="`echo ${prog} | cut -d! -f1`"
|
script="`echo ${prog} | cut -d! -f1`"
|
||||||
datafile="`echo ${prog} | cut -d! -f2`"
|
datafile="`echo ${prog} | cut -d! -f2`"
|
||||||
redinfile="`echo ${prog} | cut -d! -f3`"
|
readinfile="`echo ${prog} | cut -d! -f3`"
|
||||||
awkopts="`echo ${prog} | cut -d! -f4`"
|
awkopts="`echo ${prog} | cut -d! -f4`"
|
||||||
orgscript="${script}"
|
orgscript="${script}"
|
||||||
|
|
||||||
[ -z "${script}" ] && continue
|
[ -z "${script}" ] && continue
|
||||||
|
|
||||||
|
script_path="@abs_srcdir@/${script}"
|
||||||
|
datafile_path="@abs_srcdir@/${datafile}"
|
||||||
|
readinfile_path="@abs_srcdir@/${readinfile}"
|
||||||
|
|
||||||
[ -f "${script}".dp ] && script="${script}.dp"
|
[ -f "${script}".dp ] && script="${script}.dp"
|
||||||
[ -f "${script}" ] ||
|
[ -f "${script_path}" ] ||
|
||||||
{
|
{
|
||||||
echo_so "${script} not found"
|
echo_so "${script} not found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "${redinfile}" ] && redinfile="/dev/stdin"
|
[ -z "${readinfile}" ] &&
|
||||||
|
{
|
||||||
|
readinfile="/dev/stdin"
|
||||||
|
readinfile_path="/dev/stdin"
|
||||||
|
}
|
||||||
|
|
||||||
echo_title "${valgrind} ${QSEAWK_BASENAME} ${extraopts} ${awkopts} -f ${orgscript} ${datafile} <${redinfile} 2>&1"
|
# if the datafile does not exist, let's not use the original name
|
||||||
${valgrind} ${QSEAWK} ${extraopts} -o "${script}.dp" ${awkopts} -f ${script} ${datafile} <${redinfile} 2>&1
|
[ -f "${datafile_path}" ] || datafile_path="$datafile"
|
||||||
|
|
||||||
|
echo_title "${valgrind} ${QSEAWK_BASENAME} ${extraopts} ${awkopts} -f ${orgscript} ${datafile} <${readinfile} 2>&1"
|
||||||
|
${valgrind} ${QSEAWK} ${extraopts} -o "${script}.dp" ${awkopts} -f ${script_path} ${datafile_path} <${readinfile_path} 2>&1
|
||||||
|
|
||||||
done < "${TMPFILE}"
|
done < "${TMPFILE}"
|
||||||
|
|
||||||
@ -233,8 +248,9 @@ run_scripts()
|
|||||||
|
|
||||||
run_test()
|
run_test()
|
||||||
{
|
{
|
||||||
outfile="${1}"
|
base_outfile="${1}"
|
||||||
extraopts="${2}"
|
outfile="${2}"
|
||||||
|
extraopts="${3}"
|
||||||
|
|
||||||
rm -f *.dp
|
rm -f *.dp
|
||||||
echo_so "FIRST RUN WITH ORIGINAL SOURCE"
|
echo_so "FIRST RUN WITH ORIGINAL SOURCE"
|
||||||
@ -255,11 +271,11 @@ run_test()
|
|||||||
|
|
||||||
# diff -q is not supported on old platforms.
|
# diff -q is not supported on old platforms.
|
||||||
# redirect output to /dev/null instead.
|
# redirect output to /dev/null instead.
|
||||||
diff "${outfile}" "${outfile}.test" > /dev/null || {
|
diff "${base_outfile}" "${outfile}.test" > /dev/null || {
|
||||||
echo_so "ERROR: Difference is found between expected output and actual output."
|
echo_so "ERROR: Difference is found between expected output and actual output."
|
||||||
echo_so " The expected output is stored in '${outfile}'."
|
echo_so " The expected output is stored in '${base_outfile}'."
|
||||||
echo_so " The actual output is stored in '${outfile}.test'."
|
echo_so " The actual output is stored in '${outfile}.test'."
|
||||||
echo_so " You may execute 'diff ${outfile} ${outfile}.test' for more info."
|
echo_so " You may execute 'diff ${base_outfile} ${outfile}.test' for more info."
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
rm -f "${outfile}.test"
|
rm -f "${outfile}.test"
|
||||||
@ -269,21 +285,23 @@ run_test()
|
|||||||
case $1 in
|
case $1 in
|
||||||
init)
|
init)
|
||||||
rm -f *.dp
|
rm -f *.dp
|
||||||
run_scripts "" "" > "${OUTFILE}"
|
run_scripts "" "" > "${BASE_OUTFILE}"
|
||||||
run_scripts "" "${XMAOPTS}" > "${OUTFILE_XMA}"
|
run_scripts "" "${XMAOPTS}" > "${BASE_OUTFILE_XMA}"
|
||||||
rm -f *.dp
|
rm -f *.dp
|
||||||
echo_so "INIT OK"
|
echo_so "INIT OK"
|
||||||
;;
|
;;
|
||||||
test)
|
test)
|
||||||
run_test "${OUTFILE}" "" && {
|
run_test "${BASE_OUTFILE}" "${OUTFILE}" "" &&
|
||||||
run_test "${OUTFILE_XMA}" "${XMAOPTS}" && {
|
{
|
||||||
#diff "${OUTFILE}" "${OUTFILE_XMA}" | grep -v '^\[CMD\] '
|
run_test "${BASE_OUTFILE_XMA}" "${OUTFILE_XMA}" "${XMAOPTS}" &&
|
||||||
${QSESED} "s|${QSEAWK_BASENAME} ${XMAOPTS}|${QSEAWK_BASENAME} |" "${OUTFILE_XMA}" > "${OUTFILE_XMA}.$$"
|
{
|
||||||
diff "${OUTFILE}" "${OUTFILE_XMA}.$$" || {
|
${QSESED} "s|${QSESED_BASENAME} ${XMAOPTS}|${QSESED_BASENAME} |" "${OUTFILE_XMA}.test" > "${OUTFILE_XMA}.$$"
|
||||||
|
diff "${OUTFILE}.test" "${OUTFILE_XMA}.$$" ||
|
||||||
|
{
|
||||||
rm -f "${OUTFILE_XMA}.$$"
|
rm -f "${OUTFILE_XMA}.$$"
|
||||||
echo_so "ERROR: Difference is found between normal output and xma output."
|
echo_so "ERROR: Difference is found between normal output and xma output."
|
||||||
echo_so " The normal output is stored in '${OUTFILE}'."
|
echo_so " The normal output is stored in '${OUTFILE}.test'."
|
||||||
echo_so " The xma output is stored in '${OUTFILE_XMA}'."
|
echo_so " The xma output is stored in '${OUTFILE_XMA}.test'."
|
||||||
echo_so " Ignore lines staring with [CMD] in the difference."
|
echo_so " Ignore lines staring with [CMD] in the difference."
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
@ -1,7 +1,9 @@
|
|||||||
AUTOMAKE_OPTIONS = no-dependencies
|
AUTOMAKE_OPTIONS = no-dependencies
|
||||||
|
|
||||||
|
noinst_SCRIPTS = regress.sh
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
regress.sh regress.out \
|
regress.out regress.out.xma \
|
||||||
s001.sed s001.dat \
|
s001.sed s001.dat \
|
||||||
s002.sed s002.dat \
|
s002.sed s002.dat \
|
||||||
s003.sed s003.dat \
|
s003.sed s003.dat \
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
@ -34,7 +35,8 @@ POST_UNINSTALL = :
|
|||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
subdir = regress/sed
|
subdir = regress/sed
|
||||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
|
$(srcdir)/regress.sh.in
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \
|
||||||
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
|
||||||
@ -44,8 +46,9 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
$(ACLOCAL_M4)
|
$(ACLOCAL_M4)
|
||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/include/qse/config.h
|
CONFIG_HEADER = $(top_builddir)/include/qse/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES = regress.sh
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
SCRIPTS = $(noinst_SCRIPTS)
|
||||||
depcomp =
|
depcomp =
|
||||||
am__depfiles_maybe =
|
am__depfiles_maybe =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
@ -193,8 +196,9 @@ top_build_prefix = @top_build_prefix@
|
|||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
AUTOMAKE_OPTIONS = no-dependencies
|
AUTOMAKE_OPTIONS = no-dependencies
|
||||||
|
noinst_SCRIPTS = regress.sh
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
regress.sh regress.out \
|
regress.out regress.out.xma \
|
||||||
s001.sed s001.dat \
|
s001.sed s001.dat \
|
||||||
s002.sed s002.dat \
|
s002.sed s002.dat \
|
||||||
s003.sed s003.dat \
|
s003.sed s003.dat \
|
||||||
@ -233,6 +237,8 @@ $(top_srcdir)/configure: $(am__configure_deps)
|
|||||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(am__aclocal_m4_deps):
|
$(am__aclocal_m4_deps):
|
||||||
|
regress.sh: $(top_builddir)/config.status $(srcdir)/regress.sh.in
|
||||||
|
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
@ -278,7 +284,7 @@ distdir: $(DISTFILES)
|
|||||||
done
|
done
|
||||||
check-am: all-am
|
check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile
|
all-am: Makefile $(SCRIPTS)
|
||||||
installdirs:
|
installdirs:
|
||||||
install: install-am
|
install: install-am
|
||||||
install-exec: install-exec-am
|
install-exec: install-exec-am
|
||||||
|
@ -37,8 +37,8 @@ print_usage()
|
|||||||
###################
|
###################
|
||||||
|
|
||||||
[ -z "${QSESED}" ] && {
|
[ -z "${QSESED}" ] && {
|
||||||
QSESED=../../cmd/sed/.libs/qsesed
|
QSESED="@abs_top_builddir@/cmd/sed/.libs/qsesed"
|
||||||
[ -f "${QSESED}" ] || QSESED=../../cmd/sed/qsesed
|
[ -f "${QSESED}" ] || QSESED="@abs_top_builddir@/cmd/sed/qsesed"
|
||||||
}
|
}
|
||||||
[ -f "${QSESED}" -a -x "${QSESED}" ] || {
|
[ -f "${QSESED}" -a -x "${QSESED}" ] || {
|
||||||
echo_so "the executable '${QSESED}' is not found or not executable"
|
echo_so "the executable '${QSESED}' is not found or not executable"
|
||||||
@ -47,6 +47,9 @@ print_usage()
|
|||||||
|
|
||||||
QSESED_BASENAME="`basename "${QSESED}"`"
|
QSESED_BASENAME="`basename "${QSESED}"`"
|
||||||
|
|
||||||
|
BASE_OUTFILE="@abs_top_srcdir@/regress/sed/regress.out"
|
||||||
|
BASE_OUTFILE_XMA="@abs_top_srcdir@/regress/sed/regress.out.xma"
|
||||||
|
|
||||||
TMPFILE="${TMPFILE:=./regress.temp}"
|
TMPFILE="${TMPFILE:=./regress.temp}"
|
||||||
OUTFILE="${OUTFILE:=./regress.out}"
|
OUTFILE="${OUTFILE:=./regress.out}"
|
||||||
OUTFILE_XMA="${OUTFILE}.xma"
|
OUTFILE_XMA="${OUTFILE}.xma"
|
||||||
@ -77,21 +80,32 @@ run_scripts()
|
|||||||
|
|
||||||
script="`echo ${prog} | cut -d/ -f1`"
|
script="`echo ${prog} | cut -d/ -f1`"
|
||||||
datafile="`echo ${prog} | cut -d/ -f2`"
|
datafile="`echo ${prog} | cut -d/ -f2`"
|
||||||
redinfile="`echo ${prog} | cut -d/ -f3`"
|
readinfile="`echo ${prog} | cut -d/ -f3`"
|
||||||
options="`echo ${prog} | cut -d/ -f4`"
|
options="`echo ${prog} | cut -d/ -f4`"
|
||||||
|
|
||||||
[ -z "${script}" ] && continue
|
[ -z "${script}" ] && continue
|
||||||
|
|
||||||
[ -f "${script}" ] ||
|
script_path="@abs_srcdir@/${script}"
|
||||||
|
datafile_path="@abs_srcdir@/${datafile}"
|
||||||
|
readinfile_path="@abs_srcdir@/${readinfile}"
|
||||||
|
|
||||||
|
[ -f "${script_path}" ] ||
|
||||||
{
|
{
|
||||||
echo_so "${script} not found"
|
echo_so "${script_path} not found"
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -z "${redinfile}" ] && redinfile="/dev/stdin"
|
[ -z "${readinfile}" ] &&
|
||||||
|
{
|
||||||
|
readinfile="/dev/stdin"
|
||||||
|
readinfile_path="/dev/stdin"
|
||||||
|
}
|
||||||
|
|
||||||
echo_title "${valgrind} ${QSESED_BASENAME} ${extraopts} ${options} -f ${script} ${datafile} <${redinfile} 2>&1"
|
# if the datafile does not exist, let's not use the original name
|
||||||
${valgrind} ${QSESED} ${extraopts} ${options} -f ${script} ${datafile} <${redinfile} 2>&1
|
#[ -f "${datafile_path}" ] || datafile_path="$datafile"
|
||||||
|
|
||||||
|
echo_title "${valgrind} ${QSESED_BASENAME} ${extraopts} ${options} -f ${script} ${datafile} <${readinfile} 2>&1"
|
||||||
|
${valgrind} ${QSESED} ${extraopts} ${options} -f ${script_path} ${datafile_path} <${readinfile_path} 2>&1
|
||||||
|
|
||||||
done < "${TMPFILE}"
|
done < "${TMPFILE}"
|
||||||
|
|
||||||
@ -100,39 +114,43 @@ run_scripts()
|
|||||||
|
|
||||||
run_test()
|
run_test()
|
||||||
{
|
{
|
||||||
outfile="${1}"
|
base_outfile="${1}"
|
||||||
extraopts="${2}"
|
outfile="${2}"
|
||||||
|
extraopts="${3}"
|
||||||
|
|
||||||
run_scripts "" "${extraopts}"> "${outfile}.test"
|
run_scripts "" "${extraopts}"> "${outfile}.test"
|
||||||
|
|
||||||
# diff -q is not supported on old platforms.
|
# diff -q is not supported on old platforms.
|
||||||
# redirect output to /dev/null instead.
|
# redirect output to /dev/null instead.
|
||||||
diff "${outfile}" "${outfile}.test" > /dev/null || {
|
diff "${base_outfile}" "${outfile}.test" > /dev/null || {
|
||||||
echo_so "ERROR: Difference is found between expected output and actual output."
|
echo_so "ERROR: Difference is found between expected output and actual output."
|
||||||
echo_so " The expected output is stored in '${outfile}'."
|
echo_so " The expected output is stored in '${base_outfile}'."
|
||||||
echo_so " The actual output is stored in '${outfile}.test'."
|
echo_so " The actual output is stored in '${outfile}.test'."
|
||||||
echo_so " You may execute 'diff ${outfile} ${outfile}.test' for more info."
|
echo_so " You may execute 'diff ${base_outfile} ${outfile}.test' for more info."
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
rm -f "${outfile}.test"
|
# rm -f "${outfile}.test"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
case $1 in
|
case $1 in
|
||||||
init)
|
init)
|
||||||
run_scripts "" "" > "${OUTFILE}"
|
run_scripts "" "" > "${BASE_OUTFILE}"
|
||||||
run_scripts "" "${XMAOPTS}" > "${OUTFILE_XMA}"
|
run_scripts "" "${XMAOPTS}" > "${BASE_OUTFILE_XMA}"
|
||||||
echo_so "INIT OK"
|
echo_so "INIT OK"
|
||||||
;;
|
;;
|
||||||
test)
|
test)
|
||||||
run_test "${OUTFILE}" "" && {
|
run_test "${BASE_OUTFILE}" "${OUTFILE}" "" &&
|
||||||
run_test "${OUTFILE_XMA}" "${XMAOPTS}" && {
|
{
|
||||||
${QSESED} "s|${QSESED_BASENAME} ${XMAOPTS}|${QSESED_BASENAME} |" "${OUTFILE_XMA}" > "${OUTFILE_XMA}.$$"
|
run_test "${BASE_OUTFILE_XMA}" "${OUTFILE_XMA}" "${XMAOPTS}" &&
|
||||||
diff "${OUTFILE}" "${OUTFILE_XMA}.$$" || {
|
{
|
||||||
|
${QSESED} "s|${QSESED_BASENAME} ${XMAOPTS}|${QSESED_BASENAME} |" "${OUTFILE_XMA}.test" > "${OUTFILE_XMA}.$$"
|
||||||
|
diff "${OUTFILE}.test" "${OUTFILE_XMA}.$$" ||
|
||||||
|
{
|
||||||
rm -f "${OUTFILE_XMA}.$$"
|
rm -f "${OUTFILE_XMA}.$$"
|
||||||
echo_so "ERROR: Difference is found between normal output and xma output."
|
echo_so "ERROR: Difference is found between normal output and xma output."
|
||||||
echo_so " The normal output is stored in '${OUTFILE}'."
|
echo_so " The normal output is stored in '${OUTFILE}.test'."
|
||||||
echo_so " The xma output is stored in '${OUTFILE_XMA}'."
|
echo_so " The xma output is stored in '${OUTFILE_XMA}.test'."
|
||||||
echo_so " Ignore lines staring with [CMD] in the difference."
|
echo_so " Ignore lines staring with [CMD] in the difference."
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
@ -1 +1 @@
|
|||||||
SUBDIRS = cmn awk cut sed
|
SUBDIRS = cmn awk cut sed net
|
||||||
|
@ -230,7 +230,7 @@ target_alias = @target_alias@
|
|||||||
top_build_prefix = @top_build_prefix@
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
SUBDIRS = cmn awk cut sed
|
SUBDIRS = cmn awk cut sed net
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
|
@ -110,7 +110,7 @@ static int test2 ()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
mmgr.udd = fma;
|
mmgr.ctx = fma;
|
||||||
if (qse_rbt_init (&rbt, &mmgr, QSE_SIZEOF(long), QSE_SIZEOF(long)) == QSE_NULL)
|
if (qse_rbt_init (&rbt, &mmgr, QSE_SIZEOF(long), QSE_SIZEOF(long)) == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_printf (QSE_T("cannot initialize a tree\n"));
|
qse_printf (QSE_T("cannot initialize a tree\n"));
|
||||||
|
@ -165,7 +165,7 @@ static int test5 ()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
xmammgr.udd = xma1;
|
xmammgr.xma = xma1;
|
||||||
|
|
||||||
xma2 = qse_xma_open (&xmammgr, 0, 500000L);
|
xma2 = qse_xma_open (&xmammgr, 0, 500000L);
|
||||||
if (xma1 == QSE_NULL)
|
if (xma1 == QSE_NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user