*** empty log message ***

This commit is contained in:
hyung-hwan 2007-02-23 08:17:51 +00:00
parent 4ba998a693
commit 8c4383a64f
29 changed files with 537 additions and 1045 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.c,v 1.108 2007-02-19 15:45:02 bacon Exp $
* $Id: awk.c,v 1.109 2007-02-23 08:17:48 bacon Exp $
*
* {License}
*/
@ -18,27 +18,27 @@ ase_awk_t* ase_awk_open (
{
ase_awk_t* awk;
if (prmfns == ASE_NULL ||
prmfns->malloc == ASE_NULL ||
prmfns->free == ASE_NULL ||
prmfns->is_upper == ASE_NULL ||
prmfns->is_lower == ASE_NULL ||
prmfns->is_alpha == ASE_NULL ||
prmfns->is_digit == ASE_NULL ||
prmfns->is_xdigit == ASE_NULL ||
prmfns->is_alnum == ASE_NULL ||
prmfns->is_space == ASE_NULL ||
prmfns->is_print == ASE_NULL ||
prmfns->is_graph == ASE_NULL ||
prmfns->is_cntrl == ASE_NULL ||
prmfns->is_punct == ASE_NULL ||
prmfns->to_upper == ASE_NULL ||
prmfns->to_lower == ASE_NULL ||
prmfns->pow == ASE_NULL ||
prmfns->sprintf == ASE_NULL ||
prmfns->aprintf == ASE_NULL ||
prmfns->dprintf == ASE_NULL ||
prmfns->abort == ASE_NULL)
if (prmfns == ASE_NULL ||
prmfns->mmgr.malloc == ASE_NULL ||
prmfns->mmgr.free == ASE_NULL ||
prmfns->ccls.is_upper == ASE_NULL ||
prmfns->ccls.is_lower == ASE_NULL ||
prmfns->ccls.is_alpha == ASE_NULL ||
prmfns->ccls.is_digit == ASE_NULL ||
prmfns->ccls.is_xdigit == ASE_NULL ||
prmfns->ccls.is_alnum == ASE_NULL ||
prmfns->ccls.is_space == ASE_NULL ||
prmfns->ccls.is_print == ASE_NULL ||
prmfns->ccls.is_graph == ASE_NULL ||
prmfns->ccls.is_cntrl == ASE_NULL ||
prmfns->ccls.is_punct == ASE_NULL ||
prmfns->ccls.to_upper == ASE_NULL ||
prmfns->ccls.to_lower == ASE_NULL ||
prmfns->misc.pow == ASE_NULL ||
prmfns->misc.sprintf == ASE_NULL ||
prmfns->misc.aprintf == ASE_NULL ||
prmfns->misc.dprintf == ASE_NULL ||
prmfns->misc.abort == ASE_NULL)
{
*errnum = ASE_AWK_ESYSFNS;
return ASE_NULL;
@ -47,8 +47,8 @@ ase_awk_t* ase_awk_open (
#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG)
awk = (ase_awk_t*) malloc (ASE_SIZEOF(ase_awk_t));
#else
awk = (ase_awk_t*) prmfns->malloc (
ASE_SIZEOF(ase_awk_t), prmfns->custom_data);
awk = (ase_awk_t*) prmfns->mmgr.malloc (
&prmfns->mmgr, ASE_SIZEOF(ase_awk_t));
#endif
if (awk == ASE_NULL)
{
@ -58,17 +58,11 @@ ase_awk_t* ase_awk_open (
/* it uses the built-in ase_awk_memset because awk is not
* fully initialized yet */
ase_awk_memset (awk, 0, ASE_SIZEOF(ase_awk_t));
ase_memset (awk, 0, ASE_SIZEOF(ase_awk_t));
ase_memcpy (&awk->prmfns, prmfns, ASE_SIZEOF(awk->prmfns));
if (prmfns->memcpy == ASE_NULL)
{
ase_awk_memcpy (&awk->prmfns, prmfns, ASE_SIZEOF(awk->prmfns));
awk->prmfns.memcpy = ase_awk_memcpy;
}
else prmfns->memcpy (&awk->prmfns, prmfns, ASE_SIZEOF(awk->prmfns));
if (prmfns->memset == ASE_NULL) awk->prmfns.memset = ase_awk_memset;
if (ase_awk_str_open (&awk->token.name, 128, awk) == ASE_NULL)
if (ase_str_open (
&awk->token.name, 128, &awk->prmfns.mmgr) == ASE_NULL)
{
ASE_AWK_FREE (awk, awk);
*errnum = ASE_AWK_ENOMEM;
@ -79,7 +73,7 @@ ase_awk_t* ase_awk_open (
if (ase_awk_map_open (
&awk->tree.afns, awk, 256, __free_afn, awk) == ASE_NULL)
{
ase_awk_str_close (&awk->token.name);
ase_str_close (&awk->token.name);
ASE_AWK_FREE (awk, awk);
*errnum = ASE_AWK_ENOMEM;
return ASE_NULL;
@ -87,7 +81,7 @@ ase_awk_t* ase_awk_open (
if (ase_awk_tab_open (&awk->parse.globals, awk) == ASE_NULL)
{
ase_awk_str_close (&awk->token.name);
ase_str_close (&awk->token.name);
ase_awk_map_close (&awk->tree.afns);
ASE_AWK_FREE (awk, awk);
*errnum = ASE_AWK_ENOMEM;
@ -96,7 +90,7 @@ ase_awk_t* ase_awk_open (
if (ase_awk_tab_open (&awk->parse.locals, awk) == ASE_NULL)
{
ase_awk_str_close (&awk->token.name);
ase_str_close (&awk->token.name);
ase_awk_map_close (&awk->tree.afns);
ase_awk_tab_close (&awk->parse.globals);
ASE_AWK_FREE (awk, awk);
@ -106,7 +100,7 @@ ase_awk_t* ase_awk_open (
if (ase_awk_tab_open (&awk->parse.params, awk) == ASE_NULL)
{
ase_awk_str_close (&awk->token.name);
ase_str_close (&awk->token.name);
ase_awk_map_close (&awk->tree.afns);
ase_awk_tab_close (&awk->parse.globals);
ase_awk_tab_close (&awk->parse.locals);
@ -186,7 +180,7 @@ int ase_awk_close (ase_awk_t* awk)
ase_awk_tab_close (&awk->parse.globals);
ase_awk_tab_close (&awk->parse.locals);
ase_awk_tab_close (&awk->parse.params);
ase_awk_str_close (&awk->token.name);
ase_str_close (&awk->token.name);
/* ASE_AWK_ALLOC, ASE_AWK_FREE, etc can not be used
* from the next line onwards */
@ -203,7 +197,7 @@ int ase_awk_clear (ase_awk_t* awk)
return -1;
}
ASE_AWK_MEMSET (awk, &awk->src.ios, 0, ASE_SIZEOF(awk->src.ios));
ase_memset (&awk->src.ios, 0, ASE_SIZEOF(awk->src.ios));
awk->src.lex.curc = ASE_CHAR_EOF;
awk->src.lex.ungotc_count = 0;
awk->src.lex.line = 1;

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.h,v 1.190 2007-02-18 11:12:18 bacon Exp $
* $Id: awk.h,v 1.191 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -22,14 +22,6 @@ typedef struct ase_awk_runios_t ase_awk_runios_t;
typedef struct ase_awk_runcbs_t ase_awk_runcbs_t;
typedef struct ase_awk_runarg_t ase_awk_runarg_t;
typedef void* (*ase_awk_malloc_t) (ase_size_t n, void* custom_data);
typedef void* (*ase_awk_realloc_t) (void* ptr, ase_size_t n, void* custom_data);
typedef void (*ase_awk_free_t) (void* ptr, void* custom_data);
typedef void* (*ase_awk_memcpy_t) (void* dst, const void* src, ase_size_t n);
typedef void* (*ase_awk_memset_t) (void* dst, int val, ase_size_t n);
typedef ase_bool_t (*ase_awk_isctype_t) (ase_cint_t c);
typedef ase_cint_t (*ase_awk_toctype_t) (ase_cint_t c);
typedef ase_real_t (*ase_awk_pow_t) (ase_real_t x, ase_real_t y);
typedef int (*ase_awk_sprintf_t) (
@ -73,41 +65,25 @@ struct ase_awk_extio_t
struct ase_awk_prmfns_t
{
/* memory allocation/deallocation */
ase_awk_malloc_t malloc; /* required */
ase_awk_realloc_t realloc; /* optional */
ase_awk_free_t free; /* required */
ase_awk_memcpy_t memcpy; /* optional */
ase_awk_memset_t memset; /* optional */
ase_mmgr_t mmgr;
ase_ccls_t ccls;
/* character classes */
ase_awk_isctype_t is_upper; /* required */
ase_awk_isctype_t is_lower; /* required */
ase_awk_isctype_t is_alpha; /* required */
ase_awk_isctype_t is_digit; /* required */
ase_awk_isctype_t is_xdigit; /* required */
ase_awk_isctype_t is_alnum; /* required */
ase_awk_isctype_t is_space; /* required */
ase_awk_isctype_t is_print; /* required */
ase_awk_isctype_t is_graph; /* required */
ase_awk_isctype_t is_cntrl; /* required */
ase_awk_isctype_t is_punct; /* required */
ase_awk_toctype_t to_upper; /* required */
ase_awk_toctype_t to_lower; /* required */
struct
{
/* utilities */
ase_awk_pow_t pow; /* required */
ase_awk_sprintf_t sprintf; /* required */
ase_awk_aprintf_t aprintf; /* required in the debug mode */
ase_awk_dprintf_t dprintf; /* required in the debug mode */
ase_awk_abort_t abort; /* required in the debug mode */
/* utilities */
ase_awk_pow_t pow; /* required */
ase_awk_sprintf_t sprintf; /* required */
ase_awk_aprintf_t aprintf; /* required in the debug mode */
ase_awk_dprintf_t dprintf; /* required in the debug mode */
ase_awk_abort_t abort; /* required in the debug mode */
/* thread lock */
ase_awk_lock_t lock; /* required if multi-threaded */
ase_awk_lock_t unlock; /* required if multi-threaded */
/* thread lock */
ase_awk_lock_t lock; /* required if multi-threaded */
ase_awk_lock_t unlock; /* required if multi-threaded */
/* user-defined data passed to selected system functions */
void* custom_data; /* optional */
/* user-defined data passed to selected system functions */
void* custom_data; /* optional */
} misc;
};
struct ase_awk_srcios_t
@ -521,37 +497,6 @@ ase_size_t ase_awk_longtostr (
ase_long_t value, int radix, const ase_char_t* prefix,
ase_char_t* buf, ase_size_t size);
/* string functions exported by awk.h */
ase_char_t* ase_awk_strdup (
ase_awk_t* awk, const ase_char_t* str);
ase_char_t* ase_awk_strxdup (
ase_awk_t* awk, const ase_char_t* str, ase_size_t len);
ase_char_t* ase_awk_strxdup2 (
ase_awk_t* awk,
const ase_char_t* str1, ase_size_t len1,
const ase_char_t* str2, ase_size_t len2);
ase_size_t ase_awk_strlen (const ase_char_t* str);
ase_size_t ase_awk_strcpy (ase_char_t* buf, const ase_char_t* str);
ase_size_t ase_awk_strxcpy (
ase_char_t* buf, ase_size_t bsz, const ase_char_t* str);
ase_size_t ase_awk_strncpy (
ase_char_t* buf, const ase_char_t* str, ase_size_t len);
int ase_awk_strcmp (const ase_char_t* s1, const ase_char_t* s2);
int ase_awk_strxncmp (
const ase_char_t* s1, ase_size_t len1,
const ase_char_t* s2, ase_size_t len2);
int ase_awk_strxncasecmp (
ase_awk_t* awk,
const ase_char_t* s1, ase_size_t len1,
const ase_char_t* s2, ase_size_t len2);
ase_char_t* ase_awk_strxnstr (
const ase_char_t* str, ase_size_t strsz,
const ase_char_t* sub, ase_size_t subsz);
/* abort function for assertion. use ASE_AWK_ASSERT instead */
int ase_awk_assertfail (ase_awk_t* awk,
const ase_char_t* expr, const ase_char_t* desc,

View File

@ -1,5 +1,5 @@
/*
* $Id: awk_i.h,v 1.101 2007-02-07 14:51:44 bacon Exp $
* $Id: awk_i.h,v 1.102 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -7,11 +7,13 @@
#ifndef _ASE_AWK_AWKI_H_
#define _ASE_AWK_AWKI_H_
#include <ase/cmn/mem.h>
#include <ase/cmn/str.h>
typedef struct ase_awk_chain_t ase_awk_chain_t;
typedef struct ase_awk_tree_t ase_awk_tree_t;
#include <ase/awk/awk.h>
#include <ase/awk/str.h>
#include <ase/awk/rex.h>
#include <ase/awk/map.h>
#include <ase/awk/tree.h>
@ -38,50 +40,36 @@ typedef struct ase_awk_tree_t ase_awk_tree_t;
#define ASE_AWK_MAX_LOCALS 9999
#define ASE_AWK_MAX_PARAMS 9999
#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#define ASE_AWK_MALLOC(awk,size) ASE_MALLOC(&(awk)->prmfns.mmgr,size)
#define ASE_AWK_REALLOC(awk,ptr,size) ASE_REALLOC(&(awk)->prmfns.mmgr,ptr,size)
#define ASE_AWK_FREE(awk,ptr) ASE_FREE(&(awk)->prmfns.mmgr,ptr)
#define ASE_AWK_MALLOC(awk,size) malloc (size)
#define ASE_AWK_REALLOC(awk,ptr,size) realloc (ptr, size)
#define ASE_AWK_FREE(awk,ptr) free (ptr)
#else
#define ASE_AWK_MALLOC(awk,size) \
(awk)->prmfns.malloc (size, (awk)->prmfns.custom_data)
#define ASE_AWK_REALLOC(awk,ptr,size) \
(awk)->prmfns.realloc (ptr, size, (awk)->prmfns.custom_data)
#define ASE_AWK_FREE(awk,ptr) \
(awk)->prmfns.free (ptr, (awk)->prmfns.custom_data)
#endif
#define ASE_AWK_ISUPPER(awk,c) ASE_ISUPPER(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISLOWER(awk,c) ASE_ISLOWER(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISALPHA(awk,c) ASE_ISALPHA(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISDIGIT(awk,c) ASE_ISDIGIT(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISXDIGIT(awk,c) ASE_ISXDIGIT(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISALNUM(awk,c) ASE_ISALNUM(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISSPACE(awk,c) ASE_ISSPACE(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISPRINT(awk,c) ASE_ISPRINT(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISGRAPH(awk,c) ASE_ISGRAPH(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISCNTRL(awk,c) ASE_ISCNTRL(&(awk)->prmfns.ccls,c)
#define ASE_AWK_ISPUNCT(awk,c) ASE_ISPUNCT(&(awk)->prmfns.ccls,c)
#define ASE_AWK_TOUPPER(awk,c) ASE_TOUPPER(&(awk)->prmfns.ccls,c)
#define ASE_AWK_TOLOWER(awk,c) ASE_TOLOWER(&(awk)->prmfns.ccls,c)
#define ASE_AWK_LOCK(awk) \
do { \
if ((awk)->prmfns.lock != ASE_NULL) \
(awk)->prmfns.lock ((awk)->prmfns.custom_data); \
if ((awk)->prmfns.misc.lock != ASE_NULL) \
(awk)->prmfns.misc.lock ((awk)->prmfns.misc.custom_data); \
} while (0)
#define ASE_AWK_UNLOCK(awk) \
do { \
if ((awk)->prmfns.unlock != ASE_NULL) \
(awk)->prmfns.unlock ((awk)->prmfns.custom_data); \
if ((awk)->prmfns.misc.unlock != ASE_NULL) \
(awk)->prmfns.misc.unlock ((awk)->prmfns.misc.custom_data); \
} while (0)
#define ASE_AWK_ISUPPER(awk,c) (awk)->prmfns.is_upper(c)
#define ASE_AWK_ISLOWER(awk,c) (awk)->prmfns.is_lower(c)
#define ASE_AWK_ISALPHA(awk,c) (awk)->prmfns.is_alpha(c)
#define ASE_AWK_ISDIGIT(awk,c) (awk)->prmfns.is_digit(c)
#define ASE_AWK_ISXDIGIT(awk,c) (awk)->prmfns.is_xdigit(c)
#define ASE_AWK_ISALNUM(awk,c) (awk)->prmfns.is_alnum(c)
#define ASE_AWK_ISSPACE(awk,c) (awk)->prmfns.is_space(c)
#define ASE_AWK_ISPRINT(awk,c) (awk)->prmfns.is_print(c)
#define ASE_AWK_ISGRAPH(awk,c) (awk)->prmfns.is_graph(c)
#define ASE_AWK_ISCNTRL(awk,c) (awk)->prmfns.is_cntrl(c)
#define ASE_AWK_ISPUNCT(awk,c) (awk)->prmfns.is_punct(c)
#define ASE_AWK_TOUPPER(awk,c) (awk)->prmfns.to_upper(c)
#define ASE_AWK_TOLOWER(awk,c) (awk)->prmfns.to_lower(c)
#define ASE_AWK_MEMCPY(awk,dst,src,len) (awk)->prmfns.memcpy (dst, src, len)
#define ASE_AWK_MEMSET(awk,dst,val,len) (awk)->prmfns.memset (dst, val, len)
struct ase_awk_tree_t
{
@ -178,7 +166,7 @@ struct ase_awk_t
} prev;
int type;
ase_awk_str_t name;
ase_str_t name;
ase_size_t line;
ase_size_t column;
} token;
@ -258,7 +246,7 @@ struct ase_awk_run_t
ase_size_t buf_len;
ase_bool_t eof;
ase_awk_str_t line;
ase_str_t line;
ase_awk_val_t* d0; /* $0 */
ase_size_t maxflds;
@ -316,8 +304,8 @@ struct ase_awk_run_t
struct
{
ase_awk_str_t fmt;
ase_awk_str_t out;
ase_str_t fmt;
ase_str_t out;
struct
{

View File

@ -1,5 +1,5 @@
/*
* $Id: err.c,v 1.73 2007-02-11 04:44:39 bacon Exp $
* $Id: err.c,v 1.74 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -55,7 +55,7 @@ void ase_awk_seterror (
if (errmsg == ASE_NULL) awk->errmsg[0] = ASE_T('\0');
else if (awk->errmsg != errmsg)
{
ase_awk_strxcpy (
ase_strxcpy (
awk->errmsg, ASE_COUNTOF(awk->errmsg), errmsg);
}
}

View File

@ -1,5 +1,5 @@
/*
* $Id: extio.c,v 1.71 2007-02-03 10:47:40 bacon Exp $
* $Id: extio.c,v 1.72 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -76,7 +76,7 @@ static int __out_mask_map[] =
int ase_awk_readextio (
ase_awk_run_t* run, int in_type,
const ase_char_t* name, ase_awk_str_t* buf)
const ase_char_t* name, ase_str_t* buf)
{
ase_awk_extio_t* p = run->extio.chain;
ase_awk_io_t handler;
@ -110,7 +110,7 @@ int ase_awk_readextio (
while (p != ASE_NULL)
{
if (p->type == (extio_type | extio_mask) &&
ase_awk_strcmp (p->name,name) == 0) break;
ase_strcmp (p->name,name) == 0) break;
p = p->next;
}
@ -124,7 +124,7 @@ int ase_awk_readextio (
return -1;
}
p->name = ase_awk_strdup (run->awk, name);
p->name = ase_strdup (name, &run->awk->prmfns.mmgr);
if (p->name == ASE_NULL)
{
ASE_AWK_FREE (run->awk, p);
@ -177,7 +177,7 @@ int ase_awk_readextio (
}
/* ready to read a line */
ase_awk_str_clear (buf);
ase_str_clear (buf);
/* get the record separator */
rs = ase_awk_getglobal (run, ASE_AWK_GLOBAL_RS);
@ -215,7 +215,7 @@ int ase_awk_readextio (
if (p->in.eof)
{
if (ASE_AWK_STR_LEN(buf) == 0) ret = 0;
if (ASE_STR_LEN(buf) == 0) ret = 0;
break;
}
@ -231,7 +231,7 @@ int ase_awk_readextio (
if (n == 0)
{
p->in.eof = ase_true;
if (ASE_AWK_STR_LEN(buf) == 0) ret = 0;
if (ASE_STR_LEN(buf) == 0) ret = 0;
break;
}
@ -248,9 +248,9 @@ int ase_awk_readextio (
if (c == ASE_T('\n'))
{
if (pc == ASE_T('\r') &&
ASE_AWK_STR_LEN(buf) > 0)
ASE_STR_LEN(buf) > 0)
{
ASE_AWK_STR_LEN(buf) -= 1;
ASE_STR_LEN(buf) -= 1;
}
break;
}
@ -261,15 +261,15 @@ int ase_awk_readextio (
if (c == ASE_T('\n'))
{
if (pc == ASE_T('\r') &&
ASE_AWK_STR_LEN(buf) > 0)
ASE_STR_LEN(buf) > 0)
{
ASE_AWK_STR_LEN(buf) -= 1;
ASE_STR_LEN(buf) -= 1;
}
}
if (line_len == 0 && c == ASE_T('\n'))
{
if (ASE_AWK_STR_LEN(buf) <= 0)
if (ASE_STR_LEN(buf) <= 0)
{
/* if the record is empty when a blank
* line is encountered, the line
@ -281,7 +281,7 @@ int ase_awk_readextio (
/* when a blank line is encountered,
* it needs to snip off the line
* terminator of the previous line */
ASE_AWK_STR_LEN(buf) -= 1;
ASE_STR_LEN(buf) -= 1;
break;
}
}
@ -299,7 +299,7 @@ int ase_awk_readextio (
n = ase_awk_matchrex (
run->awk, run->global.rs,
((run->global.ignorecase)? ASE_AWK_REX_IGNORECASE: 0),
ASE_AWK_STR_BUF(buf), ASE_AWK_STR_LEN(buf),
ASE_STR_BUF(buf), ASE_STR_LEN(buf),
&match_ptr, &match_len, &run->errnum);
if (n == -1)
{
@ -312,15 +312,15 @@ int ase_awk_readextio (
/* the match should be found at the end of
* the current buffer */
ASE_AWK_ASSERT (run->awk,
ASE_AWK_STR_BUF(buf) + ASE_AWK_STR_LEN(buf) ==
ASE_STR_BUF(buf) + ASE_STR_LEN(buf) ==
match_ptr + match_len);
ASE_AWK_STR_LEN(buf) -= match_len;
ASE_STR_LEN(buf) -= match_len;
break;
}
}
if (ase_awk_str_ccat (buf, c) == (ase_size_t)-1)
if (ase_str_ccat (buf, c) == (ase_size_t)-1)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
ret = -1;
@ -440,7 +440,7 @@ int ase_awk_writeextio_str (
* print "1111" > "1.tmp"
*/
if (p->type == (extio_type | extio_mask) &&
ase_awk_strcmp (p->name, name) == 0) break;
ase_strcmp (p->name, name) == 0) break;
p = p->next;
}
@ -455,7 +455,7 @@ int ase_awk_writeextio_str (
return -1;
}
p->name = ase_awk_strdup (run->awk, name);
p->name = ase_strdup (name, &run->awk->prmfns.mmgr);
if (p->name == ASE_NULL)
{
ASE_AWK_FREE (run->awk, p);
@ -566,7 +566,7 @@ int ase_awk_flushextio (
while (p != ASE_NULL)
{
if (p->type == (extio_type | extio_mask) &&
(name == ASE_NULL || ase_awk_strcmp (p->name, name) == 0))
(name == ASE_NULL || ase_strcmp (p->name, name) == 0))
{
n = handler (ASE_AWK_IO_FLUSH, p, ASE_NULL, 0);
@ -619,7 +619,7 @@ int ase_awk_nextextio_read (
while (p != ASE_NULL)
{
if (p->type == (extio_type | extio_mask) &&
ase_awk_strcmp (p->name,name) == 0) break;
ase_strcmp (p->name,name) == 0) break;
p = p->next;
}
@ -696,7 +696,7 @@ int ase_awk_nextextio_write (
while (p != ASE_NULL)
{
if (p->type == (extio_type | extio_mask) &&
ase_awk_strcmp (p->name,name) == 0) break;
ase_strcmp (p->name,name) == 0) break;
p = p->next;
}
@ -783,7 +783,7 @@ int ase_awk_closeextio_read (
while (p != ASE_NULL)
{
if (p->type == (extio_type | extio_mask) &&
ase_awk_strcmp (p->name, name) == 0)
ase_strcmp (p->name, name) == 0)
{
ase_awk_io_t handler;
@ -845,7 +845,7 @@ int ase_awk_closeextio_write (
while (p != ASE_NULL)
{
if (p->type == (extio_type | extio_mask) &&
ase_awk_strcmp (p->name, name) == 0)
ase_strcmp (p->name, name) == 0)
{
ase_awk_io_t handler;
@ -885,7 +885,7 @@ int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name)
{
/* it handles the first that matches the given name
* regardless of the extio type */
if (ase_awk_strcmp (p->name, name) == 0)
if (ase_strcmp (p->name, name) == 0)
{
ase_awk_io_t handler;

View File

@ -1,5 +1,5 @@
/*
* $Id: extio.h,v 1.17 2007-02-03 10:47:40 bacon Exp $
* $Id: extio.h,v 1.18 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -17,7 +17,7 @@ extern "C"
int ase_awk_readextio (
ase_awk_run_t* run, int in_type,
const ase_char_t* name, ase_awk_str_t* buf);
const ase_char_t* name, ase_str_t* buf);
int ase_awk_writeextio_val (
ase_awk_run_t* run, int out_type,

View File

@ -1,5 +1,5 @@
/*
* $Id: func.c,v 1.95 2007-02-07 14:08:07 bacon Exp $
* $Id: func.c,v 1.96 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -53,7 +53,7 @@ void* ase_awk_addbfn (
if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' added already"), name_len, name);
ase_awk_seterror (awk, ASE_AWK_EEXIST, 0, awk->errmsg);
@ -67,7 +67,7 @@ void* ase_awk_addbfn (
return ASE_NULL;
}
p->name.ptr = ase_awk_strxdup (awk, name, name_len);
p->name.ptr = ase_strxdup (name, name_len, &awk->prmfns.mmgr);
if (p->name.ptr == ASE_NULL)
{
ASE_AWK_FREE (awk, p);
@ -82,7 +82,7 @@ void* ase_awk_addbfn (
if (arg_spec == ASE_NULL) p->arg.spec = ASE_NULL;
else
{
p->arg.spec = ase_awk_strdup (awk, arg_spec);
p->arg.spec = ase_strdup (arg_spec, &awk->prmfns.mmgr);
if (p->arg.spec == ASE_NULL)
{
ASE_AWK_FREE (awk, p->name.ptr);
@ -105,7 +105,7 @@ int ase_awk_delbfn (ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len)
for (p = awk->bfn.user; p != ASE_NULL; p = p->next)
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
p->name.ptr, p->name.len, name, name_len) == 0)
{
if (pp == ASE_NULL)
@ -154,7 +154,7 @@ ase_awk_bfn_t* ase_awk_getbfn (
if (p->valid != 0 &&
(awk->option & p->valid) == 0) continue;
if (ase_awk_strxncmp (
if (ase_strxncmp (
p->name.ptr, p->name.len, name, len) == 0) return p;
}
@ -163,7 +163,7 @@ ase_awk_bfn_t* ase_awk_getbfn (
if (p->valid != 0 &&
(awk->option & p->valid) == 0) continue;
if (ase_awk_strxncmp (
if (ase_strxncmp (
p->name.ptr, p->name.len, name, len) == 0) return p;
}
@ -410,7 +410,7 @@ static int __bfn_index (
}
}
ptr = ase_awk_strxnstr (str0, len0, str1, len1);
ptr = ase_strxnstr (str0, len0, str1, len1);
idx = (ptr == ASE_NULL)? -1: (ase_long_t)(ptr - str0);
if (ase_awk_getoption(run->awk) & ASE_AWK_STRBASEONE) idx = idx + 1;
@ -880,7 +880,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
int opt, n;
const ase_char_t* cur_ptr, * mat_ptr;
ase_size_t cur_len, mat_len, i, m;
ase_awk_str_t new;
ase_str_t new;
ase_long_t sub_count;
nargs = ase_awk_getnargs (run);
@ -944,8 +944,8 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
if (a2 == ASE_NULL)
{
/* is this correct? any needs to use inrec.d0? */
a2_ptr = ASE_AWK_STR_BUF(&run->inrec.line);
a2_len = ASE_AWK_STR_LEN(&run->inrec.line);
a2_ptr = ASE_STR_BUF(&run->inrec.line);
a2_len = ASE_STR_LEN(&run->inrec.line);
}
else if (((ase_awk_val_ref_t*)a2)->id == ASE_AWK_VAL_REF_POS)
{
@ -954,8 +954,8 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
idx = (ase_size_t)((ase_awk_val_ref_t*)a2)->adr;
if (idx == 0)
{
a2_ptr = ASE_AWK_STR_BUF(&run->inrec.line);
a2_len = ASE_AWK_STR_LEN(&run->inrec.line);
a2_ptr = ASE_STR_BUF(&run->inrec.line);
a2_len = ASE_STR_LEN(&run->inrec.line);
}
else if (idx <= run->inrec.nflds)
{
@ -998,7 +998,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
}
}
if (ase_awk_str_open (&new, a2_len, run->awk) == ASE_NULL)
if (ase_str_open (&new, a2_len, &run->awk->prmfns.mmgr) == ASE_NULL)
{
FREE_A_PTRS (run->awk);
ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
@ -1010,7 +1010,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
rex = ase_awk_buildrex (run->awk, a0_ptr, a0_len, &run->errnum);
if (rex == ASE_NULL)
{
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1034,7 +1034,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
if (n == -1)
{
FREE_A0_REX (run->awk, rex);
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1042,22 +1042,22 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
if (n == 0)
{
/* no more match found */
if (ase_awk_str_ncat (
if (ase_str_ncat (
&new, cur_ptr, cur_len) == (ase_size_t)-1)
{
FREE_A0_REX (run->awk, rex);
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
break;
}
if (ase_awk_str_ncat (
if (ase_str_ncat (
&new, cur_ptr, mat_ptr - cur_ptr) == (ase_size_t)-1)
{
FREE_A0_REX (run->awk, rex);
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1068,22 +1068,22 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
a1_ptr[i] == ASE_T('\\') &&
a1_ptr[i+1] == ASE_T('&'))
{
m = ase_awk_str_ccat (&new, ASE_T('&'));
m = ase_str_ccat (&new, ASE_T('&'));
i++;
}
else if (a1_ptr[i] == ASE_T('&'))
{
m = ase_awk_str_ncat (&new, mat_ptr, mat_len);
m = ase_str_ncat (&new, mat_ptr, mat_len);
}
else
{
m = ase_awk_str_ccat (&new, a1_ptr[i]);
m = ase_str_ccat (&new, a1_ptr[i]);
}
if (m == (ase_size_t)-1)
{
FREE_A0_REX (run->awk, rex);
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1101,9 +1101,9 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
if (a2 == ASE_NULL)
{
if (ase_awk_setrec (run, 0,
ASE_AWK_STR_BUF(&new), ASE_AWK_STR_LEN(&new)) == -1)
ASE_STR_BUF(&new), ASE_STR_LEN(&new)) == -1)
{
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1114,11 +1114,11 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
n = ase_awk_setrec (
run, (ase_size_t)((ase_awk_val_ref_t*)a2)->adr,
ASE_AWK_STR_BUF(&new), ASE_AWK_STR_LEN(&new));
ASE_STR_BUF(&new), ASE_STR_LEN(&new));
if (n == -1)
{
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1126,10 +1126,10 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
else
{
v = ase_awk_makestrval (run,
ASE_AWK_STR_BUF(&new), ASE_AWK_STR_LEN(&new));
ASE_STR_BUF(&new), ASE_STR_LEN(&new));
if (v == ASE_NULL)
{
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
return -1;
}
@ -1140,7 +1140,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count)
}
}
ase_awk_str_close (&new);
ase_str_close (&new);
FREE_A_PTRS (run->awk);
#undef FREE_A0_REX
@ -1295,19 +1295,19 @@ static int __bfn_sprintf (
ase_awk_val_t* a0;
ase_char_t* str0, * ptr;
ase_size_t len0, len;
ase_awk_str_t out, fbu;
ase_str_t out, fbu;
nargs = ase_awk_getnargs (run);
ASE_AWK_ASSERT (run->awk, nargs > 0);
if (ase_awk_str_open (&out, 256, run->awk) == ASE_NULL)
if (ase_str_open (&out, 256, &run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
return -1;
}
if (ase_awk_str_open (&fbu, 256, run->awk) == ASE_NULL)
if (ase_str_open (&fbu, 256, &run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_str_close (&out);
ase_str_close (&out);
ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
return -1;
}
@ -1324,8 +1324,8 @@ static int __bfn_sprintf (
run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len0);
if (str0 == ASE_NULL)
{
ase_awk_str_close (&fbu);
ase_awk_str_close (&out);
ase_str_close (&fbu);
ase_str_close (&out);
return -1;
}
}
@ -1335,22 +1335,22 @@ static int __bfn_sprintf (
if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0);
if (ptr == ASE_NULL)
{
ase_awk_str_close (&fbu);
ase_awk_str_close (&out);
ase_str_close (&fbu);
ase_str_close (&out);
return -1;
}
a0 = ase_awk_makestrval_nodup (run, ptr, len);
if (a0 == ASE_NULL)
{
ase_awk_str_close (&fbu);
ase_awk_str_close (&out);
ase_str_close (&fbu);
ase_str_close (&out);
ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
return -1;
}
ase_awk_str_close (&fbu);
ase_awk_str_forfeit (&out);
ase_str_close (&fbu);
ase_str_forfeit (&out);
ase_awk_setretval (run, a0);
return 0;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: jni.c,v 1.66 2007-02-03 10:47:41 bacon Exp $
* $Id: jni.c,v 1.67 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -184,7 +184,7 @@ static void throw_exception (
return;
}
len = ase_awk_strlen(msg);
len = ase_strlen(msg);
if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
{
ase_size_t i;
@ -940,7 +940,7 @@ static ase_ssize_t __java_open_extio (
}
/* construct the name */
len = ase_awk_strlen(extio->name);
len = ase_strlen(extio->name);
if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t))
{
ase_size_t i;

View File

@ -1,6 +1,6 @@
OUT = aseawk
C_SRCS = awk.c err.c tree.c str.c tab.c map.c parse.c \
C_SRCS = awk.c err.c tree.c tab.c map.c parse.c \
run.c rec.c val.c func.c misc.c extio.c rex.c
C_OBJS = $(C_SRCS:.c=.o)

View File

@ -1,5 +1,5 @@
/*
* $Id: map.c,v 1.35 2007-02-03 10:47:41 bacon Exp $
* $Id: map.c,v 1.36 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -80,9 +80,6 @@ void ase_awk_map_clear (ase_awk_map_t* map)
map->buck[i] = ASE_NULL;
}
ASE_AWK_ASSERTX (map->awk, map->size == 0,
"the map should not contain any pairs of a key and a value after it has been cleared");
}
ase_size_t ase_awk_map_getsize (ase_awk_map_t* map)
@ -102,7 +99,7 @@ ase_awk_pair_t* ase_awk_map_get (
while (pair != ASE_NULL)
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
pair->key, pair->key_len,
key, key_len) == 0) return pair;
@ -135,7 +132,7 @@ int ase_awk_map_putx (
while (pair != ASE_NULL)
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
pair->key, pair->key_len, key, key_len) == 0)
{
if (px != ASE_NULL)
@ -155,7 +152,7 @@ int ase_awk_map_putx (
/*pair->key = key;*/
/* duplicate the key if it is new */
pair->key = ase_awk_strxdup (map->awk, key, key_len);
pair->key = ase_strxdup (key, key_len, &map->awk->prmfns.mmgr);
if (pair->key == ASE_NULL)
{
ASE_AWK_FREE (map->awk, pair);
@ -183,7 +180,7 @@ ase_awk_pair_t* ase_awk_map_set (
while (pair != ASE_NULL)
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
pair->key, pair->key_len, key, key_len) == 0)
{
return ase_awk_map_setpair (map, pair, val);
@ -233,7 +230,7 @@ int ase_awk_map_remove (ase_awk_map_t* map, ase_char_t* key, ase_size_t key_len)
while (pair != ASE_NULL)
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
pair->key, pair->key_len, key, key_len) == 0)
{
if (prev == ASE_NULL)

View File

@ -1,5 +1,5 @@
/*
* $Id: misc.c,v 1.50 2007-02-03 10:47:41 bacon Exp $
* $Id: misc.c,v 1.51 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -16,35 +16,6 @@ void ase_awk_free (ase_awk_t* awk, void* ptr)
ASE_AWK_FREE (awk, ptr);
}
void* ase_awk_memcpy (void* dst, const void* src, ase_size_t n)
{
void* p = dst;
void* e = (ase_byte_t*)dst + n;
while (dst < e)
{
*(ase_byte_t*)dst = *(ase_byte_t*)src;
dst = (ase_byte_t*)dst + 1;
src = (ase_byte_t*)src + 1;
}
return p;
}
void* ase_awk_memset (void* dst, int val, ase_size_t n)
{
void* p = dst;
void* e = (ase_byte_t*)p + n;
while (p < e)
{
*(ase_byte_t*)p = (ase_byte_t)val;
p = (ase_byte_t*)p + 1;
}
return dst;
}
ase_long_t ase_awk_strxtolong (
ase_awk_t* awk, const ase_char_t* str, ase_size_t len,
int base, const ase_char_t** endptr)
@ -547,7 +518,7 @@ ase_size_t ase_awk_longtostr (
ase_size_t len, ret, i;
ase_size_t prefix_len;
prefix_len = (prefix != ASE_NULL)? ase_awk_strlen(prefix): 0;
prefix_len = (prefix != ASE_NULL)? ase_strlen(prefix): 0;
t = value;
if (t == 0)
@ -617,182 +588,13 @@ ase_size_t ase_awk_longtostr (
return ret;
}
ase_char_t* ase_awk_strdup (ase_awk_t* awk, const ase_char_t* str)
{
ase_char_t* tmp;
tmp = (ase_char_t*) ASE_AWK_MALLOC (
awk, (ase_awk_strlen(str) + 1) * ASE_SIZEOF(ase_char_t));
if (tmp == ASE_NULL) return ASE_NULL;
ase_awk_strcpy (tmp, str);
return tmp;
}
ase_char_t* ase_awk_strxdup (
ase_awk_t* awk, const ase_char_t* str, ase_size_t len)
{
ase_char_t* tmp;
tmp = (ase_char_t*) ASE_AWK_MALLOC (
awk, (len + 1) * ASE_SIZEOF(ase_char_t));
if (tmp == ASE_NULL) return ASE_NULL;
ase_awk_strncpy (tmp, str, len);
return tmp;
}
ase_char_t* ase_awk_strxdup2 (
ase_awk_t* awk,
const ase_char_t* str1, ase_size_t len1,
const ase_char_t* str2, ase_size_t len2)
{
ase_char_t* tmp;
tmp = (ase_char_t*) ASE_AWK_MALLOC (
awk, (len1 + len2 + 1) * ASE_SIZEOF(ase_char_t));
if (tmp == ASE_NULL) return ASE_NULL;
ase_awk_strncpy (tmp, str1, len1);
ase_awk_strncpy (tmp + len1, str2, len2);
return tmp;
}
ase_size_t ase_awk_strlen (const ase_char_t* str)
{
const ase_char_t* p = str;
while (*p != ASE_T('\0')) p++;
return p - str;
}
ase_size_t ase_awk_strcpy (ase_char_t* buf, const ase_char_t* str)
{
ase_char_t* org = buf;
while ((*buf++ = *str++) != ASE_T('\0'));
return buf - org - 1;
}
ase_size_t ase_awk_strxcpy (
ase_char_t* buf, ase_size_t bsz, const ase_char_t* str)
{
ase_char_t* p, * p2;
p = buf; p2 = buf + bsz - 1;
while (p < p2)
{
if (*str == ASE_T('\0')) break;
*p++ = *str++;
}
if (bsz > 0) *p = ASE_T('\0');
return p - buf;
}
ase_size_t ase_awk_strncpy (
ase_char_t* buf, const ase_char_t* str, ase_size_t len)
{
const ase_char_t* end = str + len;
while (str < end) *buf++ = *str++;
*buf = ASE_T('\0');
return len;
}
int ase_awk_strcmp (const ase_char_t* s1, const ase_char_t* s2)
{
while (*s1 == *s2)
{
if (*s1 == ASE_C('\0')) return 0;
s1++, s2++;
}
return (*s1 > *s2)? 1: -1;
}
int ase_awk_strxncmp (
const ase_char_t* s1, ase_size_t len1,
const ase_char_t* s2, ase_size_t len2)
{
ase_char_t c1, c2;
const ase_char_t* end1 = s1 + len1;
const ase_char_t* end2 = s2 + len2;
while (s1 < end1)
{
c1 = *s1;
if (s2 < end2)
{
c2 = *s2;
if (c1 > c2) return 1;
if (c1 < c2) return -1;
}
else return 1;
s1++; s2++;
}
return (s2 < end2)? -1: 0;
}
int ase_awk_strxncasecmp (
ase_awk_t* awk,
const ase_char_t* s1, ase_size_t len1,
const ase_char_t* s2, ase_size_t len2)
{
ase_char_t c1, c2;
const ase_char_t* end1 = s1 + len1;
const ase_char_t* end2 = s2 + len2;
while (s1 < end1)
{
c1 = ASE_AWK_TOUPPER (awk, *s1);
if (s2 < end2)
{
c2 = ASE_AWK_TOUPPER (awk, *s2);
if (c1 > c2) return 1;
if (c1 < c2) return -1;
}
else return 1;
s1++; s2++;
}
return (s2 < end2)? -1: 0;
}
ase_char_t* ase_awk_strxnstr (
const ase_char_t* str, ase_size_t strsz,
const ase_char_t* sub, ase_size_t subsz)
{
const ase_char_t* end, * subp;
if (subsz == 0) return (ase_char_t*)str;
if (strsz < subsz) return ASE_NULL;
end = str + strsz - subsz;
subp = sub + subsz;
while (str <= end) {
const ase_char_t* x = str;
const ase_char_t* y = sub;
while (ase_true) {
if (y >= subp) return (ase_char_t*)str;
if (*x != *y) break;
x++; y++;
}
str++;
}
return ASE_NULL;
}
ase_char_t* ase_awk_strtok (
ase_awk_run_t* run, const ase_char_t* s,
const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len)
{
return ase_awk_strxntok (
run, s, ase_awk_strlen(s),
delim, ase_awk_strlen(delim), tok, tok_len);
run, s, ase_strlen(s),
delim, ase_strlen(delim), tok, tok_len);
}
ase_char_t* ase_awk_strxtok (
@ -801,7 +603,7 @@ ase_char_t* ase_awk_strxtok (
{
return ase_awk_strxntok (
run, s, len,
delim, ase_awk_strlen(delim), tok, tok_len);
delim, ase_strlen(delim), tok, tok_len);
}
ase_char_t* ase_awk_strntok (
@ -810,7 +612,7 @@ ase_char_t* ase_awk_strntok (
ase_char_t** tok, ase_size_t* tok_len)
{
return ase_awk_strxntok (
run, s, ase_awk_strlen(s),
run, s, ase_strlen(s),
delim, delim_len, tok, tok_len);
}
@ -1107,18 +909,18 @@ int ase_awk_assertfail (ase_awk_t* awk,
{
if (desc == ASE_NULL)
{
awk->prmfns.aprintf (
awk->prmfns.misc.aprintf (
ASE_T("ASSERTION FAILURE AT FILE %s LINE %d\n%s\n"),
file, line, expr);
}
else
{
awk->prmfns.aprintf (
awk->prmfns.misc.aprintf (
ASE_T("ASSERTION FAILURE AT FILE %s LINE %d\n%s\n\nDESCRIPTION:\n%s\n"),
file, line, expr, desc);
}
awk->prmfns.abort (awk->prmfns.custom_data);
awk->prmfns.misc.abort (awk->prmfns.misc.custom_data);
return 0;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: misc.h,v 1.11 2007-02-03 10:47:41 bacon Exp $
* $Id: misc.h,v 1.12 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -15,9 +15,6 @@
extern "C" {
#endif
void* ase_awk_memcpy (void* dst, const void* src, ase_size_t n);
void* ase_awk_memset (void* dst, int val, ase_size_t n);
ase_char_t* ase_awk_strtok (
ase_awk_run_t* run, const ase_char_t* s,
const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len);

View File

@ -1,5 +1,5 @@
/*
* $Id: parse.c,v 1.244 2007-02-19 15:44:46 bacon Exp $
* $Id: parse.c,v 1.245 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -315,7 +315,7 @@ static struct __bvent __bvtab[] =
#define ADD_TOKEN_CHAR(awk,c) \
do { \
if (ase_awk_str_ccat(&(awk)->token.name,(c)) == (ase_size_t)-1) { \
if (ase_str_ccat(&(awk)->token.name,(c)) == (ase_size_t)-1) { \
ase_awk_seterror (awk, ASE_AWK_ENOMEM, (awk)->token.line, ASE_NULL); \
return -1; \
} \
@ -333,11 +333,11 @@ static struct __bvent __bvtab[] =
} \
else \
{ \
awk->prmfns.sprintf ( \
awk->prmfns.misc.sprintf ( \
(awk)->errmsg, ASE_COUNTOF((awk)->errmsg), \
msg, \
ASE_AWK_STR_LEN(&(awk)->token.name), \
ASE_AWK_STR_BUF(&(awk)->token.name)); \
ASE_STR_LEN(&(awk)->token.name), \
ASE_STR_BUF(&(awk)->token.name)); \
ase_awk_seterror ( \
awk, code, (awk)->token.line, \
(awk)->errmsg); \
@ -402,7 +402,7 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios)
ASE_AWK_ASSERT (awk, awk->parse.depth.cur.expr == 0);
ase_awk_clear (awk);
ASE_AWK_MEMCPY (awk, &awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios));
ase_memcpy (&awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios));
n = __parse (awk);
@ -708,11 +708,11 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
}
else
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid function name"),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_AWK_STR_BUF(&awk->token.name));
ASE_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name));
ase_awk_seterror (
awk, ASE_AWK_EIDENT, awk->token.line,
@ -721,13 +721,13 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
return ASE_NULL;
}
name = ASE_AWK_STR_BUF(&awk->token.name);
name_len = ASE_AWK_STR_LEN(&awk->token.name);
name = ASE_STR_BUF(&awk->token.name);
name_len = ASE_STR_LEN(&awk->token.name);
/* check if it is a builtin function */
if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("built-in function '%.*s' redefined"),
name_len, name);
@ -742,7 +742,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
if (ase_awk_map_get(&awk->tree.afns, name, name_len) != ASE_NULL)
{
/* the function is defined previously */
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function '%.*s' redefined"),
name_len, name);
@ -762,7 +762,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
g = ase_awk_tab_find (&awk->parse.globals, 0, name, name_len);
if (g != (ase_size_t)-1)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("global variable '%.*s' redefined"),
name_len, name);
@ -776,7 +776,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
}
/* clone the function name before it is overwritten */
name_dup = ase_awk_strxdup (awk, name, name_len);
name_dup = ase_strxdup (name, name_len, &awk->prmfns.mmgr);
if (name_dup == ASE_NULL)
{
ase_awk_seterror (
@ -849,11 +849,11 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
}
else
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid parameter name"),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_AWK_STR_BUF(&awk->token.name));
ASE_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name));
ase_awk_seterror (
awk, ASE_AWK_EIDENT, awk->token.line,
@ -863,19 +863,19 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
return ASE_NULL;
}
param = ASE_AWK_STR_BUF(&awk->token.name);
param_len = ASE_AWK_STR_LEN(&awk->token.name);
param = ASE_STR_BUF(&awk->token.name);
param_len = ASE_STR_LEN(&awk->token.name);
if (awk->option & ASE_AWK_UNIQUEFN)
{
/* check if a parameter conflicts with a function */
if (ase_awk_strxncmp (name_dup, name_len, param, param_len) == 0 ||
if (ase_strxncmp (name_dup, name_len, param, param_len) == 0 ||
ase_awk_map_get (&awk->tree.afns, param, param_len) != ASE_NULL)
{
ASE_AWK_FREE (awk, name_dup);
ase_awk_tab_clear (&awk->parse.params);
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("conflicting parameter '%.*s' with the function"),
param_len, param);
@ -902,7 +902,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
ASE_AWK_FREE (awk, name_dup);
ase_awk_tab_clear (&awk->parse.params);
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("duplicate parameter '%.*s'"),
param_len, param);
@ -990,11 +990,11 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
}
else
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid start of the function body"),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_AWK_STR_BUF(&awk->token.name));
ASE_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name));
ase_awk_seterror (
awk, ASE_AWK_ELBRACE, awk->token.line,
@ -1333,7 +1333,7 @@ static ase_awk_t* __add_global (
/* check if it conflict with a builtin function name */
if (ase_awk_getbfn (awk, name, len) != ASE_NULL)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("built-in function '%.*s' redefined"),
len, name);
@ -1346,7 +1346,7 @@ static ase_awk_t* __add_global (
if (ase_awk_map_get (
&awk->tree.afns, name, len) != ASE_NULL)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function '%.*s' redefined"),
len, name);
@ -1360,7 +1360,7 @@ static ase_awk_t* __add_global (
if (ase_awk_tab_find (
&awk->parse.globals, 0, name, len) != (ase_size_t)-1)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("duplicate global variable '%.*s'"),
len, name);
@ -1400,11 +1400,11 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk)
}
else
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid variable name"),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_AWK_STR_BUF(&awk->token.name));
ASE_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name));
ase_awk_seterror (
awk, ASE_AWK_EIDENT, awk->token.line,
@ -1415,8 +1415,8 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk)
if (__add_global (
awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name),
awk->token.line,
0) == ASE_NULL) return ASE_NULL;
@ -1458,11 +1458,11 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
}
else
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid variable name"),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_AWK_STR_BUF(&awk->token.name));
ASE_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name));
ase_awk_seterror (
awk, ASE_AWK_EIDENT, awk->token.line,
@ -1471,8 +1471,8 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
}
}
local = ASE_AWK_STR_BUF(&awk->token.name);
local_len = ASE_AWK_STR_LEN(&awk->token.name);
local = ASE_STR_BUF(&awk->token.name);
local_len = ASE_STR_LEN(&awk->token.name);
/* NOTE: it is not checked againt globals names */
@ -1481,7 +1481,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
/* check if it conflict with a builtin function name */
if (ase_awk_getbfn (awk, local, local_len) != ASE_NULL)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("built-in function '%.*s' redefined"),
local_len, local);
@ -1496,7 +1496,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
if (ase_awk_map_get (
&awk->tree.afns, local, local_len) != ASE_NULL)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function '%.*s' redefined"),
local_len, local);
@ -1512,7 +1512,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
if (ase_awk_tab_find (&awk->parse.params,
0, local, local_len) != (ase_size_t)-1)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("parameter '%.*s' redefined"),
local_len, local);
@ -1528,7 +1528,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
((awk->option & ASE_AWK_SHADING)? nlocals: 0),
local, local_len) != (ase_size_t)-1)
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("duplicate local variable '%.*s'"),
local_len, local);
@ -2571,21 +2571,22 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line)
nde->line = line;
nde->next = ASE_NULL;
nde->val = ase_awk_strxtolong (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name), 0, ASE_NULL);
nde->str = ase_awk_strxdup (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name));
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name), 0, ASE_NULL);
nde->str = ase_strxdup (
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name),
&awk->prmfns.mmgr);
if (nde->str == ASE_NULL)
{
ASE_AWK_FREE (awk, nde);
return ASE_NULL;
}
nde->len = ASE_AWK_STR_LEN(&awk->token.name);
nde->len = ASE_STR_LEN(&awk->token.name);
ASE_AWK_ASSERT (awk,
ASE_AWK_STR_LEN(&awk->token.name) ==
ase_awk_strlen(ASE_AWK_STR_BUF(&awk->token.name)));
ASE_STR_LEN(&awk->token.name) ==
ase_strlen(ASE_STR_BUF(&awk->token.name)));
if (__get_token(awk) == -1)
{
@ -2613,21 +2614,22 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line)
nde->line = line;
nde->next = ASE_NULL;
nde->val = ase_awk_strxtoreal (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name), ASE_NULL);
nde->str = ase_awk_strxdup (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name));
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name), ASE_NULL);
nde->str = ase_strxdup (
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name),
&awk->prmfns.mmgr);
if (nde->str == ASE_NULL)
{
ASE_AWK_FREE (awk, nde);
return ASE_NULL;
}
nde->len = ASE_AWK_STR_LEN(&awk->token.name);
nde->len = ASE_STR_LEN(&awk->token.name);
ASE_AWK_ASSERT (awk,
ASE_AWK_STR_LEN(&awk->token.name) ==
ase_awk_strlen(ASE_AWK_STR_BUF(&awk->token.name)));
ASE_STR_LEN(&awk->token.name) ==
ase_strlen(ASE_STR_BUF(&awk->token.name)));
if (__get_token(awk) == -1)
{
@ -2654,9 +2656,11 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line)
nde->type = ASE_AWK_NDE_STR;
nde->line = line;
nde->next = ASE_NULL;
nde->len = ASE_AWK_STR_LEN(&awk->token.name);
nde->buf = ase_awk_strxdup (
awk, ASE_AWK_STR_BUF(&awk->token.name), nde->len);
nde->len = ASE_STR_LEN(&awk->token.name);
nde->buf = ase_strxdup (
ASE_STR_BUF(&awk->token.name),
nde->len,
&awk->prmfns.mmgr);
if (nde->buf == ASE_NULL)
{
ASE_AWK_FREE (awk, nde);
@ -2683,7 +2687,7 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line)
* of the context-sensitivity of the slash symbol */
SET_TOKEN_TYPE (awk, TOKEN_REX);
ase_awk_str_clear (&awk->token.name);
ase_str_clear (&awk->token.name);
if (__get_rexstr (awk) == -1) return ASE_NULL;
ASE_AWK_ASSERT (awk, MATCH(awk,TOKEN_REX));
@ -2700,10 +2704,11 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line)
nde->line = line;
nde->next = ASE_NULL;
nde->len = ASE_AWK_STR_LEN(&awk->token.name);
nde->buf = ase_awk_strxdup (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name));
nde->len = ASE_STR_LEN(&awk->token.name);
nde->buf = ase_strxdup (
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name),
&awk->prmfns.mmgr);
if (nde->buf == ASE_NULL)
{
ASE_AWK_FREE (awk, nde);
@ -2713,8 +2718,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line)
}
nde->code = ase_awk_buildrex (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name),
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name),
&errnum);
if (nde->code == ASE_NULL)
{
@ -2935,16 +2940,16 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line)
ASE_AWK_ASSERT (awk, MATCH(awk,TOKEN_IDENT));
name_dup = ase_awk_strxdup (
awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name));
name_dup = ase_strxdup (
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name),
&awk->prmfns.mmgr);
if (name_dup == ASE_NULL)
{
ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL);
return ASE_NULL;
}
name_len = ASE_AWK_STR_LEN(&awk->token.name);
name_len = ASE_STR_LEN(&awk->token.name);
if (__get_token(awk) == -1)
{
@ -2963,7 +2968,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line)
/* built-in function should be in the form
* of the function call */
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function name '%.*s' without a left parenthesis"),
name_len, name_dup);
@ -3074,7 +3079,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line)
return (ase_awk_nde_t*)nde;
}
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("undefined identifier '%.*s'"),
name_len, name_dup);
@ -3217,7 +3222,7 @@ static ase_awk_nde_t* __parse_hashidx (
ase_awk_clrpt (awk, idx);
ASE_AWK_FREE (awk, nde);
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("undefined identifier '%.*s'"), name_len, name);
ase_awk_seterror (awk, ASE_AWK_EUNDEF, line, awk->errmsg);
@ -4175,7 +4180,7 @@ static int __get_token (ase_awk_t* awk)
}
while (n == 1);
ase_awk_str_clear (&awk->token.name);
ase_str_clear (&awk->token.name);
awk->token.line = awk->src.lex.line;
awk->token.column = awk->src.lex.column;
@ -4243,8 +4248,8 @@ static int __get_token (ase_awk_t* awk)
c == ASE_T('_') || ASE_AWK_ISDIGIT(awk,c));
type = __classify_ident (awk,
ASE_AWK_STR_BUF(&awk->token.name),
ASE_AWK_STR_LEN(&awk->token.name));
ASE_STR_BUF(&awk->token.name),
ASE_STR_LEN(&awk->token.name));
SET_TOKEN_TYPE (awk, type);
}
else if (c == ASE_T('\"'))
@ -4604,7 +4609,7 @@ static int __get_token (ase_awk_t* awk)
}
else
{
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("invalid character '%c'"), c);
ase_awk_seterror (
@ -4619,7 +4624,7 @@ static int __get_number (ase_awk_t* awk)
{
ase_cint_t c;
ASE_AWK_ASSERT (awk, ASE_AWK_STR_LEN(&awk->token.name) == 0);
ASE_AWK_ASSERT (awk, ASE_STR_LEN(&awk->token.name) == 0);
SET_TOKEN_TYPE (awk, TOKEN_INT);
c = awk->src.lex.curc;
@ -5043,7 +5048,7 @@ static int __classify_ident (
if (kwp->valid != 0 &&
(awk->option & kwp->valid) == 0) continue;
if (ase_awk_strxncmp (kwp->name, kwp->name_len, name, len) == 0)
if (ase_strxncmp (kwp->name, kwp->name_len, name, len) == 0)
{
return kwp->type;
}
@ -5309,7 +5314,7 @@ static int __deparse_func (ase_awk_pair_t* pair, void* arg)
ase_awk_afn_t* afn = (ase_awk_afn_t*)pair->val;
ase_size_t i, n;
ASE_AWK_ASSERT (df->awk, ase_awk_strxncmp (
ASE_AWK_ASSERT (df->awk, ase_strxncmp (
pair->key, pair->key_len, afn->name, afn->name_len) == 0);
if (ase_awk_putsrcstr (df->awk, ASE_T("function ")) == -1) return -1;

View File

@ -1,5 +1,5 @@
/*
* $Id: rec.c,v 1.14 2007-02-03 10:47:41 bacon Exp $
* $Id: rec.c,v 1.15 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -20,8 +20,8 @@ int ase_awk_setrec (
if (idx == 0)
{
if (str == ASE_AWK_STR_BUF(&run->inrec.line) &&
len == ASE_AWK_STR_LEN(&run->inrec.line))
if (str == ASE_STR_BUF(&run->inrec.line) &&
len == ASE_STR_LEN(&run->inrec.line))
{
if (ase_awk_clrrec (run, ase_true) == -1) return -1;
}
@ -29,7 +29,7 @@ int ase_awk_setrec (
{
if (ase_awk_clrrec (run, ase_false) == -1) return -1;
if (ase_awk_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1)
if (ase_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1)
{
ase_awk_clrrec (run, ase_false);
ase_awk_setrunerror (
@ -72,8 +72,8 @@ int ase_awk_setrec (
/* recompose $0 */
v = ase_awk_makestrval (run,
ASE_AWK_STR_BUF(&run->inrec.line),
ASE_AWK_STR_LEN(&run->inrec.line));
ASE_STR_BUF(&run->inrec.line),
ASE_STR_LEN(&run->inrec.line));
if (v == ASE_NULL)
{
ase_awk_clrrec (run, ase_false);
@ -124,8 +124,8 @@ static int __split_record (ase_awk_run_t* run)
}
/* scan the input record to count the fields */
p = ASE_AWK_STR_BUF(&run->inrec.line);
len = ASE_AWK_STR_LEN(&run->inrec.line);
p = ASE_STR_BUF(&run->inrec.line);
len = ASE_STR_LEN(&run->inrec.line);
nflds = 0;
while (p != ASE_NULL)
@ -160,8 +160,8 @@ static int __split_record (ase_awk_run_t* run)
(tok != ASE_NULL && tok_len > 0) || tok_len == 0);
nflds++;
len = ASE_AWK_STR_LEN(&run->inrec.line) -
(p - ASE_AWK_STR_BUF(&run->inrec.line));
len = ASE_STR_LEN(&run->inrec.line) -
(p - ASE_STR_BUF(&run->inrec.line));
}
/* allocate space */
@ -183,8 +183,8 @@ static int __split_record (ase_awk_run_t* run)
}
/* scan again and split it */
p = ASE_AWK_STR_BUF(&run->inrec.line);
len = ASE_AWK_STR_LEN(&run->inrec.line);
p = ASE_STR_BUF(&run->inrec.line);
len = ASE_STR_LEN(&run->inrec.line);
while (p != ASE_NULL)
{
@ -224,8 +224,8 @@ static int __split_record (ase_awk_run_t* run)
ase_awk_refupval (run, run->inrec.flds[run->inrec.nflds].val);
run->inrec.nflds++;
len = ASE_AWK_STR_LEN(&run->inrec.line) -
(p - ASE_AWK_STR_BUF(&run->inrec.line));
len = ASE_STR_LEN(&run->inrec.line) -
(p - ASE_STR_BUF(&run->inrec.line));
}
if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free);
@ -278,7 +278,7 @@ int ase_awk_clrrec (ase_awk_run_t* run, ase_bool_t skip_inrec_line)
}
ASE_AWK_ASSERT (run->awk, run->inrec.nflds == 0);
if (!skip_inrec_line) ase_awk_str_clear (&run->inrec.line);
if (!skip_inrec_line) ase_str_clear (&run->inrec.line);
return n;
}
@ -305,7 +305,7 @@ static int __recomp_record_fields (
* number of fields that the current record can hold,
* the field spaces are resized */
if (run->awk->prmfns.realloc != ASE_NULL)
if (run->awk->prmfns.mmgr.realloc != ASE_NULL)
{
tmp = ASE_AWK_REALLOC (
run->awk, run->inrec.flds,
@ -329,8 +329,8 @@ static int __recomp_record_fields (
}
if (run->inrec.flds != ASE_NULL)
{
ASE_AWK_MEMCPY (run->awk, tmp, run->inrec.flds,
ASE_SIZEOF(*run->inrec.flds) * run->inrec.maxflds);
ase_memcpy (tmp, run->inrec.flds,
ASE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds);
ASE_AWK_FREE (run->awk, run->inrec.flds);
}
}
@ -341,13 +341,13 @@ static int __recomp_record_fields (
lv = lv - 1; /* adjust the value to 0-based index */
ase_awk_str_clear (&run->inrec.line);
ase_str_clear (&run->inrec.line);
for (i = 0; i < max; i++)
{
if (i > 0)
{
if (ase_awk_str_ncat (
if (ase_str_ncat (
&run->inrec.line,
run->global.ofs.ptr,
run->global.ofs.len) == (ase_size_t)-1)
@ -363,11 +363,11 @@ static int __recomp_record_fields (
ase_awk_val_t* tmp;
run->inrec.flds[i].ptr =
ASE_AWK_STR_BUF(&run->inrec.line) +
ASE_AWK_STR_LEN(&run->inrec.line);
ASE_STR_BUF(&run->inrec.line) +
ASE_STR_LEN(&run->inrec.line);
run->inrec.flds[i].len = len;
if (ase_awk_str_ncat (
if (ase_str_ncat (
&run->inrec.line, str, len) == (ase_size_t)-1)
{
ase_awk_setrunerror (
@ -393,11 +393,11 @@ static int __recomp_record_fields (
else if (i >= nflds)
{
run->inrec.flds[i].ptr =
ASE_AWK_STR_BUF(&run->inrec.line) +
ASE_AWK_STR_LEN(&run->inrec.line);
ASE_STR_BUF(&run->inrec.line) +
ASE_STR_LEN(&run->inrec.line);
run->inrec.flds[i].len = 0;
if (ase_awk_str_cat (
if (ase_str_cat (
&run->inrec.line, ASE_T("")) == (ase_size_t)-1)
{
ase_awk_setrunerror (
@ -420,11 +420,11 @@ static int __recomp_record_fields (
tmp = (ase_awk_val_str_t*)run->inrec.flds[i].val;
run->inrec.flds[i].ptr =
ASE_AWK_STR_BUF(&run->inrec.line) +
ASE_AWK_STR_LEN(&run->inrec.line);
ASE_STR_BUF(&run->inrec.line) +
ASE_STR_LEN(&run->inrec.line);
run->inrec.flds[i].len = tmp->len;
if (ase_awk_str_ncat (&run->inrec.line,
if (ase_str_ncat (&run->inrec.line,
tmp->buf, tmp->len) == (ase_size_t)-1)
{
ase_awk_setrunerror (

View File

@ -1,5 +1,5 @@
/*
* $Id: rex.c,v 1.65 2007-02-18 16:45:18 bacon Exp $
* $Id: rex.c,v 1.66 2007-02-23 08:17:49 bacon Exp $
*
* {License}
*/
@ -163,15 +163,13 @@ static int __add_code (__builder_t* rex, void* data, ase_size_t len);
static ase_size_t __get_code (__builder_t* builder, ase_size_t pos)
{
ase_size_t code;
ASE_AWK_MEMCPY (builder->awk,
&code, &builder->code.buf[pos], ASE_SIZEOF(code));
ase_memcpy (&code, &builder->code.buf[pos], ASE_SIZEOF(code));
return code;
}
static void __set_code (__builder_t* builder, ase_size_t pos, ase_size_t code)
{
ASE_AWK_MEMCPY (builder->awk,
&builder->code.buf[pos], &code, ASE_SIZEOF(code));
ase_memcpy (&builder->code.buf[pos], &code, ASE_SIZEOF(code));
}
#endif
@ -970,7 +968,7 @@ static int __add_code (__builder_t* builder, void* data, ase_size_t len)
if (capa == 0) capa = DEF_CODE_CAPA;
while (len > capa - builder->code.size) { capa = capa * 2; }
if (builder->awk->prmfns.realloc != ASE_NULL)
if (builder->awk->prmfns.mmgr.realloc != ASE_NULL)
{
tmp = (ase_byte_t*) ASE_AWK_REALLOC (
builder->awk, builder->code.buf, capa);
@ -991,8 +989,7 @@ static int __add_code (__builder_t* builder, void* data, ase_size_t len)
if (builder->code.buf != ASE_NULL)
{
ASE_AWK_MEMCPY (builder->awk, tmp,
builder->code.buf, builder->code.capa);
ase_memcpy (tmp, builder->code.buf, builder->code.capa);
ASE_AWK_FREE (builder->awk, builder->code.buf);
}
}
@ -1001,8 +998,7 @@ static int __add_code (__builder_t* builder, void* data, ase_size_t len)
builder->code.capa = capa;
}
ASE_AWK_MEMCPY (builder->awk,
&builder->code.buf[builder->code.size], data, len);
ase_memcpy (&builder->code.buf[builder->code.size], data, len);
builder->code.size += len;
return 0;

View File

@ -1,5 +1,5 @@
/*
* $Id: run.c,v 1.328 2007-02-17 15:26:58 bacon Exp $
* $Id: run.c,v 1.329 2007-02-23 08:17:50 bacon Exp $
*
* {License}
*/
@ -246,7 +246,7 @@ static int __set_global (
if (var != ASE_NULL)
{
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -615,7 +615,7 @@ void ase_awk_setrunerror (
if (errmsg == ASE_NULL) run->errmsg[0] = ASE_T('\0');
else if (errmsg != run->errmsg)
{
ase_awk_strxcpy (run->errmsg, ASE_COUNTOF(run->errmsg), errmsg);
ase_strxcpy (run->errmsg, ASE_COUNTOF(run->errmsg), errmsg);
}
}
@ -655,7 +655,7 @@ int ase_awk_run (ase_awk_t* awk,
}
/* clear the run object space */
ASE_AWK_MEMSET (awk, run, 0, ASE_SIZEOF(ase_awk_run_t));
ase_memset (run, 0, ASE_SIZEOF(ase_awk_run_t));
/* add the run object to the awk object */
__add_run (awk, run);
@ -844,24 +844,24 @@ static int __init_run (
run->inrec.nflds = 0;
run->inrec.maxflds = 0;
run->inrec.d0 = ase_awk_val_nil;
if (ase_awk_str_open (
&run->inrec.line, DEF_BUF_CAPA, run->awk) == ASE_NULL)
if (ase_str_open (
&run->inrec.line, DEF_BUF_CAPA, &run->awk->prmfns.mmgr) == ASE_NULL)
{
*errnum = ASE_AWK_ENOMEM;
return -1;
}
if (ase_awk_str_open (&run->format.out, 256, run->awk) == ASE_NULL)
if (ase_str_open (&run->format.out, 256, &run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_str_close (&run->inrec.line);
ase_str_close (&run->inrec.line);
*errnum = ASE_AWK_ENOMEM;
return -1;
}
if (ase_awk_str_open (&run->format.fmt, 256, run->awk) == ASE_NULL)
if (ase_str_open (&run->format.fmt, 256, &run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_str_close (&run->format.out);
ase_awk_str_close (&run->inrec.line);
ase_str_close (&run->format.out);
ase_str_close (&run->inrec.line);
*errnum = ASE_AWK_ENOMEM;
return -1;
}
@ -869,9 +869,9 @@ static int __init_run (
if (ase_awk_map_open (&run->named,
run, DEF_BUF_CAPA, __free_namedval, run->awk) == ASE_NULL)
{
ase_awk_str_close (&run->format.fmt);
ase_awk_str_close (&run->format.out);
ase_awk_str_close (&run->inrec.line);
ase_str_close (&run->format.fmt);
ase_str_close (&run->format.out);
ase_str_close (&run->inrec.line);
*errnum = ASE_AWK_ENOMEM;
return -1;
}
@ -881,9 +881,9 @@ static int __init_run (
if (run->format.tmp.ptr == ASE_NULL)
{
ase_awk_map_close (&run->named);
ase_awk_str_close (&run->format.fmt);
ase_awk_str_close (&run->format.out);
ase_awk_str_close (&run->inrec.line);
ase_str_close (&run->format.fmt);
ase_str_close (&run->format.out);
ase_str_close (&run->inrec.line);
*errnum = ASE_AWK_ENOMEM;
return -1;
}
@ -898,14 +898,15 @@ static int __init_run (
{
ASE_AWK_FREE (run->awk, run->format.tmp.ptr);
ase_awk_map_close (&run->named);
ase_awk_str_close (&run->format.fmt);
ase_awk_str_close (&run->format.out);
ase_awk_str_close (&run->inrec.line);
ase_str_close (&run->format.fmt);
ase_str_close (&run->format.out);
ase_str_close (&run->inrec.line);
*errnum = ASE_AWK_ENOMEM;
return -1;
}
ASE_AWK_MEMSET (run->awk, run->pattern_range_state, 0,
ase_memset (
run->pattern_range_state, 0,
run->awk->tree.chain_size * ASE_SIZEOF(ase_byte_t));
}
else run->pattern_range_state = ASE_NULL;
@ -997,8 +998,8 @@ static void __deinit_run (ase_awk_run_t* run)
ASE_AWK_FREE (run->awk, run->format.tmp.ptr);
run->format.tmp.ptr = ASE_NULL;
run->format.tmp.len = 0;
ase_awk_str_close (&run->format.fmt);
ase_awk_str_close (&run->format.out);
ase_str_close (&run->format.fmt);
ase_str_close (&run->format.out);
/* destroy input record. ase_awk_clrrec should be called
* before the run stack has been destroyed because it may try
@ -1010,7 +1011,7 @@ static void __deinit_run (ase_awk_run_t* run)
run->inrec.flds = ASE_NULL;
run->inrec.maxflds = 0;
}
ase_awk_str_close (&run->inrec.line);
ase_str_close (&run->inrec.line);
/* destroy run stack */
if (run->stack != ASE_NULL)
@ -1321,7 +1322,7 @@ static int run_main (
nde.line = 0;
nde.next = ASE_NULL;
nde.what.afn.name.ptr = (ase_char_t*)main;
nde.what.afn.name.len = ase_awk_strlen(main);
nde.what.afn.name.len = ase_strlen(main);
nde.args = ASE_NULL;
nde.nargs = 0;
@ -1355,8 +1356,9 @@ static int run_main (
}
tmp->type = ASE_AWK_NDE_STR;
tmp->buf = ase_awk_strxdup (run->awk,
runarg[i].ptr, runarg[i].len);
tmp->buf = ase_strxdup (
runarg[i].ptr, runarg[i].len,
&run->awk->prmfns.mmgr);
if (tmp->buf == ASE_NULL)
{
ASE_AWK_FREE (run->awk, tmp);
@ -1715,8 +1717,8 @@ static int __run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde)
n = ase_awk_writeextio_str (run,
ASE_AWK_OUT_CONSOLE, ASE_T(""),
ASE_AWK_STR_BUF(&run->inrec.line),
ASE_AWK_STR_LEN(&run->inrec.line));
ASE_STR_BUF(&run->inrec.line),
ASE_STR_LEN(&run->inrec.line));
if (n == -1)
{
ase_awk_refdownval (run, run->inrec.d0);
@ -2119,7 +2121,7 @@ static int __walk_foreach (ase_awk_pair_t* pair, void* arg)
ase_awk_val_t* str;
str = (ase_awk_val_t*) ase_awk_makestrval (
w->run, pair->key, ase_awk_strlen(pair->key));
w->run, pair->key, ase_strlen(pair->key));
if (str == ASE_NULL)
{
ase_awk_setrunerror (
@ -2409,7 +2411,7 @@ static int __run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde)
if (val->type != ASE_AWK_VAL_MAP)
{
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("'%.*s' not deletable"),
var->id.name_len, var->id.name);
@ -2520,7 +2522,7 @@ static int __run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde)
if (val->type != ASE_AWK_VAL_MAP)
{
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("'%.*s' not deletable"),
var->id.name_len, var->id.name);
@ -2651,8 +2653,8 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde)
* input record */
n = ase_awk_writeextio_str (
run, nde->out_type, dst,
ASE_AWK_STR_BUF(&run->inrec.line),
ASE_AWK_STR_LEN(&run->inrec.line));
ASE_STR_BUF(&run->inrec.line),
ASE_STR_LEN(&run->inrec.line));
if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/)
{
if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out);
@ -3101,7 +3103,7 @@ static ase_awk_val_t* __do_assignment_scalar (
{
/* once a variable becomes a map,
* it cannot be changed to a scalar variable */
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -3135,7 +3137,7 @@ static ase_awk_val_t* __do_assignment_scalar (
{
/* once the variable becomes a map,
* it cannot be changed to a scalar variable */
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -3155,7 +3157,7 @@ static ase_awk_val_t* __do_assignment_scalar (
{
/* once the variable becomes a map,
* it cannot be changed to a scalar variable */
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -3810,14 +3812,15 @@ static int __cmp_int_str (
if (run->global.ignorecase)
{
n = ase_awk_strxncasecmp (
run->awk, str, len,
n = ase_strxncasecmp (
str, len,
((ase_awk_val_str_t*)right)->buf,
((ase_awk_val_str_t*)right)->len);
((ase_awk_val_str_t*)right)->len,
&run->awk->prmfns.ccls);
}
else
{
n = ase_awk_strxncmp (
n = ase_strxncmp (
str, len,
((ase_awk_val_str_t*)right)->buf,
((ase_awk_val_str_t*)right)->len);
@ -3881,14 +3884,15 @@ static int __cmp_real_str (
if (run->global.ignorecase)
{
n = ase_awk_strxncasecmp (
run->awk, str, len,
n = ase_strxncasecmp (
str, len,
((ase_awk_val_str_t*)right)->buf,
((ase_awk_val_str_t*)right)->len);
((ase_awk_val_str_t*)right)->len,
&run->awk->prmfns.ccls);
}
else
{
n = ase_awk_strxncmp (
n = ase_strxncmp (
str, len,
((ase_awk_val_str_t*)right)->buf,
((ase_awk_val_str_t*)right)->len);
@ -3927,12 +3931,13 @@ static int __cmp_str_str (
if (run->global.ignorecase)
{
n = ase_awk_strxncasecmp (run->awk,
ls->buf, ls->len, rs->buf, rs->len);
n = ase_strxncasecmp (
ls->buf, ls->len, rs->buf, rs->len,
&run->awk->prmfns.ccls);
}
else
{
n = ase_awk_strxncmp (
n = ase_strxncmp (
ls->buf, ls->len, rs->buf, rs->len);
}
@ -4361,7 +4366,7 @@ static ase_awk_val_t* __eval_binop_exp (
ase_real_t r1, r2;
ase_awk_val_t* res;
ASE_AWK_ASSERTX (run->awk, run->awk->prmfns.pow != ASE_NULL,
ASE_AWK_ASSERTX (run->awk, run->awk->prmfns.misc.pow != ASE_NULL,
"the pow function should be provided when the awk object is created to make the exponentiation work properly.");
n1 = ase_awk_valtonum (run, left, &l1, &r1);
@ -4422,14 +4427,14 @@ static ase_awk_val_t* __eval_binop_exp (
{
/* left - int, right - real */
res = ase_awk_makerealval (run,
run->awk->prmfns.pow((ase_real_t)l1,(ase_real_t)r2));
run->awk->prmfns.misc.pow((ase_real_t)l1,(ase_real_t)r2));
}
else
{
/* left - real, right - real */
ASE_AWK_ASSERT (run->awk, n3 == 3);
res = ase_awk_makerealval (run,
run->awk->prmfns.pow((ase_real_t)r1,(ase_real_t)r2));
run->awk->prmfns.misc.pow((ase_real_t)r1,(ase_real_t)r2));
}
if (res == ASE_NULL)
@ -5238,13 +5243,13 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde)
{
ase_char_t* fmt = ASE_T("function '%.*s' not found");
ase_char_t* fmt2 = ASE_T("function '%.*s..' not found");
ase_size_t len = ase_awk_strlen(fmt);
ase_size_t len2 = ase_awk_strlen(fmt2);
ase_size_t len = ase_strlen(fmt);
ase_size_t len2 = ase_strlen(fmt2);
if (len2 < ASE_COUNTOF(run->errmsg) &&
call->what.afn.name.len > ASE_COUNTOF(run->errmsg)-len2)
{
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg,
ASE_COUNTOF(run->errmsg),
fmt2,
@ -5253,7 +5258,7 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde)
}
else
{
run->awk->prmfns.sprintf (
run->awk->prmfns.misc.sprintf (
run->errmsg,
ASE_COUNTOF(run->errmsg),
fmt,
@ -5404,7 +5409,7 @@ static ase_awk_val_t* __eval_call (
ASE_AWK_ASSERT (run->awk,
bfn_arg_spec == ASE_NULL ||
(bfn_arg_spec != ASE_NULL &&
ase_awk_strlen(bfn_arg_spec) > nargs));
ase_strlen(bfn_arg_spec) > nargs));
if (bfn_arg_spec != ASE_NULL &&
bfn_arg_spec[nargs] == ASE_T('r'))
@ -5954,7 +5959,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde)
ase_awk_val_t* v, * res;
ase_char_t* in = ASE_NULL;
const ase_char_t* dst;
ase_awk_str_t buf;
ase_str_t buf;
int n;
p = (ase_awk_nde_getline_t*)nde;
@ -6012,7 +6017,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde)
dst = (in == ASE_NULL)? ASE_T(""): in;
/* TODO: optimize the line buffer management */
if (ase_awk_str_open (&buf, DEF_BUF_CAPA, run->awk) == ASE_NULL)
if (ase_str_open (&buf, DEF_BUF_CAPA, &run->awk->prmfns.mmgr) == ASE_NULL)
{
if (in != ASE_NULL) ASE_AWK_FREE (run->awk, in);
ase_awk_setrunerror (
@ -6027,7 +6032,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde)
{
if (run->errnum != ASE_AWK_EIOIMPL)
{
ase_awk_str_close (&buf);
ase_str_close (&buf);
ase_awk_setrunerror (
run, run->errnum, nde->line, ASE_NULL);
return ASE_NULL;
@ -6044,22 +6049,22 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde)
{
/* set $0 with the input value */
if (ase_awk_setrec (run, 0,
ASE_AWK_STR_BUF(&buf),
ASE_AWK_STR_LEN(&buf)) == -1)
ASE_STR_BUF(&buf),
ASE_STR_LEN(&buf)) == -1)
{
ase_awk_str_close (&buf);
ase_str_close (&buf);
return ASE_NULL;
}
ase_awk_str_close (&buf);
ase_str_close (&buf);
}
else
{
ase_awk_val_t* v;
v = ase_awk_makestrval (run,
ASE_AWK_STR_BUF(&buf), ASE_AWK_STR_LEN(&buf));
ase_awk_str_close (&buf);
ASE_STR_BUF(&buf), ASE_STR_LEN(&buf));
ase_str_close (&buf);
if (v == ASE_NULL)
{
ase_awk_setrunerror (
@ -6078,7 +6083,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde)
}
else
{
ase_awk_str_close (&buf);
ase_str_close (&buf);
}
skip_read:
@ -6102,7 +6107,7 @@ static int __raw_push (ase_awk_run_t* run, void* val)
n = run->stack_limit + STACK_INCREMENT;
if (run->awk->prmfns.realloc != ASE_NULL)
if (run->awk->prmfns.mmgr.realloc != ASE_NULL)
{
tmp = (void**) ASE_AWK_REALLOC (
run->awk, run->stack, n * ASE_SIZEOF(void*));
@ -6115,7 +6120,8 @@ static int __raw_push (ase_awk_run_t* run, void* val)
if (tmp == ASE_NULL) return -1;
if (run->stack != ASE_NULL)
{
ASE_AWK_MEMCPY (run->awk, tmp, run->stack,
ase_memcpy (
tmp, run->stack,
run->stack_limit * ASE_SIZEOF(void*));
ASE_AWK_FREE (run->awk, run->stack);
}
@ -6155,18 +6161,18 @@ static int __read_record (ase_awk_run_t* run)
}
/*
run->awk->prmfns.dprintf (ASE_T("len = %d str=[%s]\n"),
(int)ASE_AWK_STR_LEN(&run->inrec.line),
ASE_AWK_STR_BUF(&run->inrec.line));
(int)ASE_STR_LEN(&run->inrec.line),
ASE_STR_BUF(&run->inrec.line));
*/
if (n == 0)
{
ASE_AWK_ASSERT (run->awk, ASE_AWK_STR_LEN(&run->inrec.line) == 0);
ASE_AWK_ASSERT (run->awk, ASE_STR_LEN(&run->inrec.line) == 0);
return 0;
}
if (ase_awk_setrec (run, 0,
ASE_AWK_STR_BUF(&run->inrec.line),
ASE_AWK_STR_LEN(&run->inrec.line)) == -1) return -1;
ASE_STR_BUF(&run->inrec.line),
ASE_STR_LEN(&run->inrec.line)) == -1) return -1;
return 1;
}
@ -6176,7 +6182,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds)
ase_awk_val_t* v;
ase_char_t* ofs_free = ASE_NULL, * ofs;
ase_size_t ofs_len, i;
ase_awk_str_t tmp;
ase_str_t tmp;
ASE_AWK_ASSERT (run->awk, nflds <= run->inrec.nflds);
@ -6206,8 +6212,10 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds)
}
}
if (ase_awk_str_open (&tmp,
ASE_AWK_STR_LEN(&run->inrec.line), run->awk) == ASE_NULL)
if (ase_str_open (
&tmp,
ASE_STR_LEN(&run->inrec.line),
&run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
return -1;
@ -6215,7 +6223,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds)
for (i = 0; i < nflds; i++)
{
if (i > 0 && ase_awk_str_ncat (&tmp, ofs, ofs_len) == (ase_size_t)-1)
if (i > 0 && ase_str_ncat (&tmp, ofs, ofs_len) == (ase_size_t)-1)
{
if (ofs_free != ASE_NULL)
ASE_AWK_FREE (run->awk, ofs_free);
@ -6224,7 +6232,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds)
return -1;
}
if (ase_awk_str_ncat (&tmp,
if (ase_str_ncat (&tmp,
run->inrec.flds[i].ptr,
run->inrec.flds[i].len) == (ase_size_t)-1)
{
@ -6240,7 +6248,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds)
if (nflds > 1) ase_awk_refdownval (run, v);
v = (ase_awk_val_t*) ase_awk_makestrval (
run, ASE_AWK_STR_BUF(&tmp), ASE_AWK_STR_LEN(&tmp));
run, ASE_STR_BUF(&tmp), ASE_STR_LEN(&tmp));
if (v == ASE_NULL)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -6251,8 +6259,8 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds)
run->inrec.d0 = v;
ase_awk_refupval (run, run->inrec.d0);
ase_awk_str_swap (&tmp, &run->inrec.line);
ase_awk_str_close (&tmp);
ase_str_swap (&tmp, &run->inrec.line);
ase_str_close (&tmp);
for (i = nflds; i < run->inrec.nflds; i++)
{
@ -6294,10 +6302,12 @@ static ase_char_t* __idxnde_to_str (
else
{
/* multidimensional index */
ase_awk_str_t idxstr;
ase_str_t idxstr;
if (ase_awk_str_open (
&idxstr, DEF_BUF_CAPA, run->awk) == ASE_NULL)
if (ase_str_open (
&idxstr,
DEF_BUF_CAPA,
&run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_setrunerror (
run, ASE_AWK_ENOMEM, nde->line, ASE_NULL);
@ -6309,19 +6319,19 @@ static ase_char_t* __idxnde_to_str (
idx = __eval_expression (run, nde);
if (idx == ASE_NULL)
{
ase_awk_str_close (&idxstr);
ase_str_close (&idxstr);
return ASE_NULL;
}
ase_awk_refupval (run, idx);
if (ASE_AWK_STR_LEN(&idxstr) > 0 &&
ase_awk_str_ncat (&idxstr,
if (ASE_STR_LEN(&idxstr) > 0 &&
ase_str_ncat (&idxstr,
run->global.subsep.ptr,
run->global.subsep.len) == (ase_size_t)-1)
{
ase_awk_refdownval (run, idx);
ase_awk_str_close (&idxstr);
ase_str_close (&idxstr);
ase_awk_setrunerror (
run, ASE_AWK_ENOMEM, nde->line, ASE_NULL);
return ASE_NULL;
@ -6331,7 +6341,7 @@ static ase_char_t* __idxnde_to_str (
run, idx, 0, &idxstr, ASE_NULL) == ASE_NULL)
{
ase_awk_refdownval (run, idx);
ase_awk_str_close (&idxstr);
ase_str_close (&idxstr);
ase_awk_setrunerror (
run, run->errnum, nde->line, ASE_NULL);
return ASE_NULL;
@ -6341,16 +6351,16 @@ static ase_char_t* __idxnde_to_str (
nde = nde->next;
}
str = ASE_AWK_STR_BUF(&idxstr);
*len = ASE_AWK_STR_LEN(&idxstr);
ase_awk_str_forfeit (&idxstr);
str = ASE_STR_BUF(&idxstr);
*len = ASE_STR_LEN(&idxstr);
ase_str_forfeit (&idxstr);
}
return str;
}
ase_char_t* ase_awk_format (
ase_awk_run_t* run, ase_awk_str_t* out, ase_awk_str_t* fbu,
ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu,
const ase_char_t* fmt, ase_size_t fmt_len,
ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len)
{
@ -6360,7 +6370,7 @@ ase_char_t* ase_awk_format (
#define OUT_CHAR(c) \
do { \
if (ase_awk_str_ccat (out, (c)) == -1) \
if (ase_str_ccat (out, (c)) == -1) \
{ \
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); \
return ASE_NULL; \
@ -6369,7 +6379,7 @@ ase_char_t* ase_awk_format (
#define FMT_CHAR(c) \
do { \
if (ase_awk_str_ccat (fbu, (c)) == -1) \
if (ase_str_ccat (fbu, (c)) == -1) \
{ \
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); \
return ASE_NULL; \
@ -6405,15 +6415,15 @@ ase_char_t* ase_awk_format (
if (out == ASE_NULL) out = &run->format.out;
if (fbu == ASE_NULL) fbu = &run->format.fmt;
ase_awk_str_clear (out);
ase_awk_str_clear (fbu);
ase_str_clear (out);
ase_str_clear (fbu);
for (i = 0; i < fmt_len; i++)
{
ase_long_t width = -1, prec = -1;
ase_bool_t minus = ase_false;
if (ASE_AWK_STR_LEN(fbu) == 0)
if (ASE_STR_LEN(fbu) == 0)
{
if (fmt[i] == ASE_T('%')) FMT_CHAR (fmt[i]);
else OUT_CHAR (fmt[i]);
@ -6472,7 +6482,7 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.sprintf (
n = run->awk->prmfns.misc.sprintf (
run->format.tmp.ptr,
run->format.tmp.len,
#if ASE_SIZEOF_LONG_LONG > 0
@ -6577,7 +6587,7 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.sprintf (
n = run->awk->prmfns.misc.sprintf (
run->format.tmp.ptr,
run->format.tmp.len,
#if ASE_SIZEOF_LONG_LONG > 0
@ -6697,10 +6707,10 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.sprintf (
n = run->awk->prmfns.misc.sprintf (
run->format.tmp.ptr,
run->format.tmp.len,
ASE_AWK_STR_BUF(fbu),
ASE_STR_BUF(fbu),
#if ASE_SIZEOF_LONG_LONG > 0
(long long)l
#elif ASE_SIZEOF___INT64 > 0
@ -6784,10 +6794,10 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.sprintf (
n = run->awk->prmfns.misc.sprintf (
run->format.tmp.ptr,
run->format.tmp.len,
ASE_AWK_STR_BUF(fbu),
ASE_STR_BUF(fbu),
(long double)r);
if (n == -1)
@ -6886,7 +6896,7 @@ ase_char_t* ase_awk_format (
{
while (width > prec)
{
if (ase_awk_str_ccat (out, ASE_T(' ')) == -1)
if (ase_str_ccat (out, ASE_T(' ')) == -1)
{
ase_awk_refdownval (run, v);
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -6898,7 +6908,7 @@ ase_char_t* ase_awk_format (
if (prec > 0)
{
if (ase_awk_str_ccat (out, ch) == -1)
if (ase_str_ccat (out, ch) == -1)
{
ase_awk_refdownval (run, v);
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -6910,7 +6920,7 @@ ase_char_t* ase_awk_format (
{
while (width > prec)
{
if (ase_awk_str_ccat (out, ASE_T(' ')) == -1)
if (ase_str_ccat (out, ASE_T(' ')) == -1)
{
ase_awk_refdownval (run, v);
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -6993,7 +7003,7 @@ ase_char_t* ase_awk_format (
{
while (width > prec)
{
if (ase_awk_str_ccat (out, ASE_T(' ')) == -1)
if (ase_str_ccat (out, ASE_T(' ')) == -1)
{
if (str_free != ASE_NULL)
ASE_AWK_FREE (run->awk, str_free);
@ -7007,7 +7017,7 @@ ase_char_t* ase_awk_format (
for (k = 0; k < prec; k++)
{
if (ase_awk_str_ccat (out, str[k]) == -1)
if (ase_str_ccat (out, str[k]) == -1)
{
if (str_free != ASE_NULL)
ASE_AWK_FREE (run->awk, str_free);
@ -7023,7 +7033,7 @@ ase_char_t* ase_awk_format (
{
while (width > prec)
{
if (ase_awk_str_ccat (out, ASE_T(' ')) == -1)
if (ase_str_ccat (out, ASE_T(' ')) == -1)
{
ase_awk_refdownval (run, v);
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -7037,21 +7047,21 @@ ase_char_t* ase_awk_format (
}
else /*if (fmt[i] == ASE_T('%'))*/
{
for (j = 0; j < ASE_AWK_STR_LEN(fbu); j++)
OUT_CHAR (ASE_AWK_STR_CHAR(fbu,j));
for (j = 0; j < ASE_STR_LEN(fbu); j++)
OUT_CHAR (ASE_STR_CHAR(fbu,j));
OUT_CHAR (fmt[i]);
}
if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++;
else args = args->next;
ase_awk_str_clear (fbu);
ase_str_clear (fbu);
}
/* flush uncompleted formatting sequence */
for (j = 0; j < ASE_AWK_STR_LEN(fbu); j++)
OUT_CHAR (ASE_AWK_STR_CHAR(fbu,j));
for (j = 0; j < ASE_STR_LEN(fbu); j++)
OUT_CHAR (ASE_STR_CHAR(fbu,j));
*len = ASE_AWK_STR_LEN(out);
return ASE_AWK_STR_BUF(out);
*len = ASE_STR_LEN(out);
return ASE_STR_BUF(out);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: run.h,v 1.32 2007-02-03 10:51:13 bacon Exp $
* $Id: run.h,v 1.33 2007-02-23 08:17:50 bacon Exp $
*
* {License}
*/
@ -108,7 +108,7 @@ extern "C" {
#endif
ase_char_t* ase_awk_format (
ase_awk_run_t* run, ase_awk_str_t* out, ase_awk_str_t* fbu,
ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu,
const ase_char_t* fmt, ase_size_t fmt_len,
ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len);

View File

@ -1,167 +0,0 @@
/*
* $Id: str.c,v 1.17 2007-02-03 10:51:14 bacon Exp $
*
* {License}
*/
#include <ase/awk/awk_i.h>
ase_awk_str_t* ase_awk_str_open (
ase_awk_str_t* str, ase_size_t capa, ase_awk_t* awk)
{
if (str == ASE_NULL)
{
str = (ase_awk_str_t*)
ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_str_t));
if (str == ASE_NULL) return ASE_NULL;
str->__dynamic = ase_true;
}
else str->__dynamic = ase_false;
str->awk = awk;
str->buf = (ase_char_t*) ASE_AWK_MALLOC (
awk, ASE_SIZEOF(ase_char_t) * (capa + 1));
if (str->buf == ASE_NULL)
{
if (str->__dynamic) ASE_AWK_FREE (awk, str);
return ASE_NULL;
}
str->size = 0;
str->capa = capa;
str->buf[0] = ASE_T('\0');
return str;
}
void ase_awk_str_close (ase_awk_str_t* str)
{
ASE_AWK_FREE (str->awk, str->buf);
if (str->__dynamic) ASE_AWK_FREE (str->awk, str);
}
void ase_awk_str_forfeit (ase_awk_str_t* str)
{
if (str->__dynamic) ASE_AWK_FREE (str->awk, str);
}
void ase_awk_str_swap (ase_awk_str_t* str, ase_awk_str_t* str1)
{
ase_awk_str_t tmp;
tmp.buf = str->buf;
tmp.size = str->size;
tmp.capa = str->capa;
tmp.awk = str->awk;
str->buf = str1->buf;
str->size = str1->size;
str->capa = str1->capa;
str->awk = str1->awk;
str1->buf = tmp.buf;
str1->size = tmp.size;
str1->capa = tmp.capa;
str1->awk = tmp.awk;
}
ase_size_t ase_awk_str_cpy (ase_awk_str_t* str, const ase_char_t* s)
{
/* TODO: improve it */
return ase_awk_str_ncpy (str, s, ase_awk_strlen(s));
}
ase_size_t ase_awk_str_ncpy (
ase_awk_str_t* str, const ase_char_t* s, ase_size_t len)
{
ase_char_t* buf;
if (len > str->capa)
{
buf = (ase_char_t*) ASE_AWK_MALLOC (
str->awk, ASE_SIZEOF(ase_char_t) * (len + 1));
if (buf == ASE_NULL) return (ase_size_t)-1;
ASE_AWK_FREE (str->awk, str->buf);
str->capa = len;
str->buf = buf;
}
str->size = ase_awk_strncpy (str->buf, s, len);
str->buf[str->size] = ASE_T('\0');
return str->size;
}
ase_size_t ase_awk_str_cat (ase_awk_str_t* str, const ase_char_t* s)
{
/* TODO: improve it */
return ase_awk_str_ncat (str, s, ase_awk_strlen(s));
}
ase_size_t ase_awk_str_ncat (
ase_awk_str_t* str, const ase_char_t* s, ase_size_t len)
{
if (len > str->capa - str->size)
{
ase_char_t* tmp;
ase_size_t capa;
capa = str->size + len;
/* double the capa if necessary for concatenation */
if (capa < str->capa * 2) capa = str->capa * 2;
if (str->awk->prmfns.realloc != ASE_NULL)
{
tmp = (ase_char_t*) ASE_AWK_REALLOC (
str->awk, str->buf,
ASE_SIZEOF(ase_char_t) * (capa + 1));
if (tmp == ASE_NULL) return (ase_size_t)-1;
}
else
{
tmp = (ase_char_t*) ASE_AWK_MALLOC (
str->awk, ASE_SIZEOF(ase_char_t) * (capa + 1));
if (tmp == ASE_NULL) return (ase_size_t)-1;
if (str->buf != ASE_NULL)
{
ASE_AWK_MEMCPY (str->awk, tmp, str->buf,
ASE_SIZEOF(ase_char_t) * (str->capa + 1));
ASE_AWK_FREE (str->awk, str->buf);
}
}
str->capa = capa;
str->buf = tmp;
}
str->size += ase_awk_strncpy (&str->buf[str->size], s, len);
str->buf[str->size] = ASE_T('\0');
return str->size;
}
ase_size_t ase_awk_str_ccat (ase_awk_str_t* str, ase_char_t c)
{
return ase_awk_str_ncat (str, &c, 1);
}
ase_size_t ase_awk_str_nccat (ase_awk_str_t* str, ase_char_t c, ase_size_t len)
{
while (len > 0)
{
if (ase_awk_str_ncat (str, &c, 1) == (ase_size_t)-1)
{
return (ase_size_t)-1;
}
len--;
}
return str->size;
}
void ase_awk_str_clear (ase_awk_str_t* str)
{
str->size = 0;
str->buf[0] = ASE_T('\0');
}

View File

@ -1,63 +0,0 @@
/*
* $Id: str.h,v 1.6 2007-02-03 10:51:14 bacon Exp $
*
* {License}
*/
#ifndef _ASE_AWK_STR_H_
#define _ASE_AWK_STR_H_
#ifndef _ASE_AWK_AWK_H_
#error Never include this file directly. Include <ase/awk/awk.h> instead
#endif
#define ASE_AWK_STR_LEN(x) ((x)->size)
#define ASE_AWK_STR_SIZE(x) ((x)->size + 1)
#define ASE_AWK_STR_CAPA(x) ((x)->capa)
#define ASE_AWK_STR_BUF(x) ((x)->buf)
#define ASE_AWK_STR_CHAR(x,idx) ((x)->buf[idx])
typedef struct ase_awk_str_t ase_awk_str_t;
struct ase_awk_str_t
{
ase_char_t* buf;
ase_size_t size;
ase_size_t capa;
ase_awk_t* awk;
ase_bool_t __dynamic;
};
#ifdef __cplusplus
extern "C" {
#endif
ase_awk_str_t* ase_awk_str_open (
ase_awk_str_t* str, ase_size_t capa, ase_awk_t* awk);
void ase_awk_str_close (ase_awk_str_t* str);
void ase_awk_str_forfeit (ase_awk_str_t* str);
void ase_awk_str_swap (ase_awk_str_t* str, ase_awk_str_t* str2);
ase_size_t ase_awk_str_cpy (ase_awk_str_t* str, const ase_char_t* s);
ase_size_t ase_awk_str_ncpy (
ase_awk_str_t* str, const ase_char_t* s, ase_size_t len);
ase_size_t ase_awk_str_cat (ase_awk_str_t* str, const ase_char_t* s);
ase_size_t ase_awk_str_ncat (
ase_awk_str_t* str, const ase_char_t* s, ase_size_t len);
ase_size_t ase_awk_str_ccat (ase_awk_str_t* str, ase_char_t c);
ase_size_t ase_awk_str_nccat (ase_awk_str_t* str, ase_char_t c, ase_size_t len);
void ase_awk_str_clear (ase_awk_str_t* str);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,5 +1,5 @@
/*
* $Id: tab.c,v 1.30 2007-02-03 10:51:14 bacon Exp $
* $Id: tab.c,v 1.31 2007-02-23 08:17:51 bacon Exp $
*
* {License}
*/
@ -60,7 +60,7 @@ ase_awk_tab_t* ase_awk_tab_setcapa (ase_awk_tab_t* tab, ase_size_t capa)
if (capa > 0)
{
if (tab->awk->prmfns.realloc != ASE_NULL)
if (tab->awk->prmfns.mmgr.realloc != ASE_NULL)
{
tmp = ASE_AWK_REALLOC (tab->awk,
tab->buf, ASE_SIZEOF(*tab->buf) * capa);
@ -75,8 +75,8 @@ ase_awk_tab_t* ase_awk_tab_setcapa (ase_awk_tab_t* tab, ase_size_t capa)
{
ase_size_t x;
x = (capa > tab->capa)? tab->capa: capa;
ASE_AWK_MEMCPY (
tab->awk, tmp, tab->buf,
ase_memcpy (
tmp, tab->buf,
ASE_SIZEOF(*tab->buf) * x);
ASE_AWK_FREE (tab->awk, tab->buf);
}
@ -116,7 +116,7 @@ ase_size_t ase_awk_tab_insert (
ase_size_t i;
ase_char_t* str_dup;
str_dup = ase_awk_strxdup (tab->awk, str, len);
str_dup = ase_strxdup (str, len, &tab->awk->prmfns.mmgr);
if (str_dup == ASE_NULL) return (ase_size_t)-1;
if (index >= tab->capa)
@ -194,7 +194,7 @@ ase_size_t ase_awk_tab_find (
for (i = index; i < tab->size; i++)
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
tab->buf[i].name, tab->buf[i].name_len,
str, len) == 0) return i;
}
@ -212,7 +212,7 @@ ase_size_t ase_awk_tab_rfind (
for (i = index + 1; i-- > 0; )
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
tab->buf[i].name, tab->buf[i].name_len,
str, len) == 0) return i;
}
@ -230,7 +230,7 @@ ase_size_t ase_awk_tab_rrfind (
for (i = tab->size - index; i-- > 0; )
{
if (ase_awk_strxncmp (
if (ase_strxncmp (
tab->buf[i].name, tab->buf[i].name_len,
str, len) == 0) return i;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: tree.c,v 1.102 2007-02-03 10:51:14 bacon Exp $
* $Id: tree.c,v 1.103 2007-02-23 08:17:51 bacon Exp $
*
* {License}
*/
@ -260,11 +260,11 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
{
ase_char_t tmp[256];
#if (ASE_SIZEOF_LONG_DOUBLE != 0)
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
tmp, ASE_COUNTOF(tmp), ASE_T("%Lf"),
(long double)((ase_awk_nde_real_t*)nde)->val);
#elif (ASE_SIZEOF_DOUBLE != 0)
awk->prmfns.sprintf (
awk->prmfns.misc.sprintf (
tmp, ASE_COUNTOF(tmp), ASE_T("%f"),
(double)((ase_awk_nde_real_t*)nde)->val);
#else

View File

@ -1,5 +1,5 @@
/*
* $Id: val.c,v 1.109 2007-02-18 12:08:05 bacon Exp $
* $Id: val.c,v 1.110 2007-02-23 08:17:51 bacon Exp $
*
* {License}
*/
@ -8,13 +8,13 @@
static ase_char_t* __str_to_str (
ase_awk_run_t* run, const ase_char_t* str, ase_size_t str_len,
int opt, ase_awk_str_t* buf, ase_size_t* len);
int opt, ase_str_t* buf, ase_size_t* len);
static ase_char_t* __val_int_to_str (
ase_awk_run_t* run, ase_awk_val_int_t* v,
int opt, ase_awk_str_t* buf, ase_size_t* len);
int opt, ase_str_t* buf, ase_size_t* len);
static ase_char_t* __val_real_to_str (
ase_awk_run_t* run, ase_awk_val_real_t* v,
int opt, ase_awk_str_t* buf, ase_size_t* len);
int opt, ase_str_t* buf, ase_size_t* len);
static ase_awk_val_nil_t __awk_nil = { ASE_AWK_VAL_NIL, 0 };
static ase_awk_val_str_t __awk_zls = { ASE_AWK_VAL_STR, 0, ASE_T(""), 0 };
@ -108,7 +108,7 @@ ase_awk_val_t* ase_awk_makerealval (ase_awk_run_t* run, ase_real_t v)
ase_awk_val_t* ase_awk_makestrval0 (ase_awk_run_t* run, const ase_char_t* str)
{
return ase_awk_makestrval (run, str, ase_awk_strlen(str));
return ase_awk_makestrval (run, str, ase_strlen(str));
}
ase_awk_val_t* ase_awk_makestrval (
@ -123,7 +123,7 @@ ase_awk_val_t* ase_awk_makestrval (
val->type = ASE_AWK_VAL_STR;
val->ref = 0;
val->len = len;
val->buf = ase_awk_strxdup (run->awk, str, len);
val->buf = ase_strxdup (str, len, &run->awk->prmfns.mmgr);
if (val->buf == ASE_NULL)
{
ASE_AWK_FREE (run->awk, val);
@ -164,7 +164,7 @@ ase_awk_val_t* ase_awk_makestrval2 (
val->type = ASE_AWK_VAL_STR;
val->ref = 0;
val->len = len1 + len2;
val->buf = ase_awk_strxdup2 (run->awk, str1, len1, str2, len2);
val->buf = ase_strxdup2 (str1, len1, str2, len2, &run->awk->prmfns.mmgr);
if (val->buf == ASE_NULL)
{
ASE_AWK_FREE (run->awk, val);
@ -187,7 +187,7 @@ ase_awk_val_t* ase_awk_makerexval (
val->type = ASE_AWK_VAL_REX;
val->ref = 0;
val->len = len;
val->buf = ase_awk_strxdup (run->awk, buf, len);
val->buf = ase_strxdup (buf, len, &run->awk->prmfns.mmgr);
if (val->buf == ASE_NULL)
{
ASE_AWK_FREE (run->awk, val);
@ -202,7 +202,7 @@ ase_awk_val_t* ase_awk_makerexval (
return ASE_NULL;
}
ASE_AWK_MEMCPY (run->awk, val->code, code, ASE_AWK_REX_LEN(code));
ase_memcpy (val->code, code, ASE_AWK_REX_LEN(code));
return (ase_awk_val_t*)val;
}
@ -341,9 +341,9 @@ void ase_awk_refupval (ase_awk_run_t* run, ase_awk_val_t* val)
if (ase_awk_isbuiltinval(val)) return;
/*
run->awk->prmfns.dprintf (ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref);
run->awk->prmfns.misc.dprintf (ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref);
ase_awk_dprintval (run, val);
run->awk->prmfns.dprintf (ASE_T("\n"));
run->awk->prmfns.misc.dprintf (ASE_T("\n"));
*/
val->ref++;
@ -354,9 +354,9 @@ void ase_awk_refdownval (ase_awk_run_t* run, ase_awk_val_t* val)
if (ase_awk_isbuiltinval(val)) return;
/*
run->awk->prmfns.dprintf (ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref);
run->awk->prmfns.misc.dprintf (ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref);
ase_awk_dprintval (run, val);
run->awk->prmfns.dprintf (ASE_T("\n"));
run->awk->prmfns.misc.dprintf (ASE_T("\n"));
*/
ASE_AWK_ASSERTX (run->awk, val->ref > 0,
@ -413,7 +413,7 @@ ase_bool_t ase_awk_valtobool (ase_awk_run_t* run, ase_awk_val_t* val)
ase_char_t* ase_awk_valtostr (
ase_awk_run_t* run, ase_awk_val_t* v,
int opt, ase_awk_str_t* buf, ase_size_t* len)
int opt, ase_str_t* buf, ase_size_t* len)
{
if (v->type == ASE_AWK_VAL_NIL)
{
@ -464,7 +464,7 @@ ase_char_t* ase_awk_valtostr (
}
#ifdef _DEBUG
run->awk->prmfns.dprintf (
run->awk->prmfns.misc.dprintf (
ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtostr\n"),
v->type);
#endif
@ -475,12 +475,12 @@ ase_char_t* ase_awk_valtostr (
static ase_char_t* __str_to_str (
ase_awk_run_t* run, const ase_char_t* str, ase_size_t str_len,
int opt, ase_awk_str_t* buf, ase_size_t* len)
int opt, ase_str_t* buf, ase_size_t* len)
{
if (buf == ASE_NULL)
{
ase_char_t* tmp;
tmp = ase_awk_strxdup (run->awk, str, str_len);
tmp = ase_strxdup (str, str_len, &run->awk->prmfns.mmgr);
if (tmp == ASE_NULL)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -494,22 +494,22 @@ static ase_char_t* __str_to_str (
{
ase_size_t n;
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf);
n = ase_awk_str_ncat (buf, str, str_len);
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf);
n = ase_str_ncat (buf, str, str_len);
if (n == (ase_size_t)-1)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
return ASE_NULL;
}
if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf);
return ASE_AWK_STR_BUF(buf);
if (len != ASE_NULL) *len = ASE_STR_LEN(buf);
return ASE_STR_BUF(buf);
}
}
static ase_char_t* __val_int_to_str (
ase_awk_run_t* run, ase_awk_val_int_t* v,
int opt, ase_awk_str_t* buf, ase_size_t* len)
int opt, ase_str_t* buf, ase_size_t* len)
{
ase_char_t* tmp;
ase_long_t t;
@ -537,16 +537,16 @@ static ase_char_t* __val_int_to_str (
}
else
{
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf);
if (ase_awk_str_cat (buf, ASE_T("0")) == (ase_size_t)-1)
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf);
if (ase_str_cat (buf, ASE_T("0")) == (ase_size_t)-1)
{
ase_awk_setrunerror (
run, ASE_AWK_ENOMEM, 0, ASE_NULL);
return ASE_NULL;
}
if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf);
return ASE_AWK_STR_BUF(buf);
if (len != ASE_NULL) *len = ASE_STR_LEN(buf);
return ASE_STR_BUF(buf);
}
}
@ -570,12 +570,12 @@ static ase_char_t* __val_int_to_str (
else
{
/* clear the buffer */
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf);
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf);
tmp = ASE_AWK_STR_BUF(buf) + ASE_AWK_STR_LEN(buf);
tmp = ASE_STR_BUF(buf) + ASE_STR_LEN(buf);
/* extend the buffer */
if (ase_awk_str_nccat (
if (ase_str_nccat (
buf, ASE_T(' '), l) == (ase_size_t)-1)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
@ -596,8 +596,8 @@ static ase_char_t* __val_int_to_str (
if (buf != ASE_NULL)
{
tmp = ASE_AWK_STR_BUF(buf);
if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf);
tmp = ASE_STR_BUF(buf);
if (len != ASE_NULL) *len = ASE_STR_LEN(buf);
}
return tmp;
@ -605,11 +605,11 @@ static ase_char_t* __val_int_to_str (
static ase_char_t* __val_real_to_str (
ase_awk_run_t* run, ase_awk_val_real_t* v,
int opt, ase_awk_str_t* buf, ase_size_t* len)
int opt, ase_str_t* buf, ase_size_t* len)
{
ase_char_t* tmp;
ase_size_t tmp_len;
ase_awk_str_t out, fbu;
ase_str_t out, fbu;
if (opt & ASE_AWK_VALTOSTR_PRINT)
{
@ -622,15 +622,15 @@ static ase_char_t* __val_real_to_str (
tmp_len = run->global.convfmt.len;
}
if (ase_awk_str_open (&out, 256, run->awk) == ASE_NULL)
if (ase_str_open (&out, 256, &run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
return ASE_NULL;
}
if (ase_awk_str_open (&fbu, 256, run->awk) == ASE_NULL)
if (ase_str_open (&fbu, 256, &run->awk->prmfns.mmgr) == ASE_NULL)
{
ase_awk_str_close (&out);
ase_str_close (&out);
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
return ASE_NULL;
}
@ -639,34 +639,34 @@ static ase_char_t* __val_real_to_str (
(ase_size_t)-1, (ase_awk_nde_t*)v, &tmp_len);
if (tmp == ASE_NULL)
{
ase_awk_str_close (&fbu);
ase_awk_str_close (&out);
ase_str_close (&fbu);
ase_str_close (&out);
return ASE_NULL;
}
if (buf == ASE_NULL)
{
ase_awk_str_close (&fbu);
ase_awk_str_forfeit (&out);
ase_str_close (&fbu);
ase_str_forfeit (&out);
if (len != ASE_NULL) *len = tmp_len;
}
else
{
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf);
if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf);
if (ase_awk_str_ncat (buf, tmp, tmp_len) == (ase_size_t)-1)
if (ase_str_ncat (buf, tmp, tmp_len) == (ase_size_t)-1)
{
ase_awk_str_close (&fbu);
ase_awk_str_close (&out);
ase_str_close (&fbu);
ase_str_close (&out);
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL);
return ASE_NULL;
}
tmp = ASE_AWK_STR_BUF(buf);
if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf);
tmp = ASE_STR_BUF(buf);
if (len != ASE_NULL) *len = ASE_STR_LEN(buf);
ase_awk_str_close (&fbu);
ase_awk_str_close (&out);
ase_str_close (&fbu);
ase_str_close (&out);
}
return tmp;
@ -721,7 +721,7 @@ int ase_awk_valtonum (
}
#ifdef _DEBUG
run->awk->prmfns.dprintf (
run->awk->prmfns.misc.dprintf (
ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtonum\n"),
v->type);
#endif
@ -750,7 +750,7 @@ int ase_awk_strtonum (
}
#define __DPRINTF run->awk->prmfns.dprintf
#define __DPRINTF run->awk->prmfns.misc.dprintf
static int __print_pair (ase_awk_pair_t* pair, void* arg)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: val.h,v 1.61 2007-02-18 11:12:18 bacon Exp $
* $Id: val.h,v 1.62 2007-02-23 08:17:51 bacon Exp $
*
* {License}
*/
@ -11,7 +11,7 @@
#error Include <ase/awk/awk.h> first
#endif
#include <ase/awk/str.h>
#include <ase/cmn/str.h>
#include <ase/awk/map.h>
enum ase_awk_val_type_t
@ -189,7 +189,7 @@ ase_bool_t ase_awk_valtobool (
ase_char_t* ase_awk_valtostr (
ase_awk_run_t* run, ase_awk_val_t* val,
int opt, ase_awk_str_t* buf, ase_size_t* len);
int opt, ase_str_t* buf, ase_size_t* len);
int ase_awk_valtonum (
ase_awk_run_t* run, ase_awk_val_t* v, ase_long_t* l, ase_real_t* r);

View File

@ -1,6 +1,6 @@
OUT = asecmn
C_SRCS = str.c
C_SRCS = mem.c str.c
C_OBJS = $(C_SRCS:.c=.obj)
CC = bcc32

View File

@ -1,5 +1,5 @@
/*
* $Id: mem.h,v 1.1 2007-02-23 07:13:58 bacon Exp $
* $Id: mem.h,v 1.2 2007-02-23 08:17:51 bacon Exp $
*
* {License}
*/
@ -16,7 +16,7 @@ extern "C" {
void* ase_memcpy (void* dst, const void* src, ase_size_t n);
void* ase_memset (void* dst, int val, ase_size_t n);
int ase_memcmp (const void* s1, const void* s2, ase_size_t n);
int ase_memcmp (const void* s1, const void* s2, ase_size_t n);
#ifdef __cplusplus
}

View File

@ -1,10 +1,11 @@
/*
* $Id: str.c,v 1.4 2007-02-23 06:43:30 bacon Exp $
* $Id: str.c,v 1.5 2007-02-23 08:17:51 bacon Exp $
*
* {License}
*/
#include <ase/cmn/str.h>
#include <ase/cmn/mem.h>
ase_size_t ase_strlen (const ase_char_t* str)
{
@ -309,7 +310,7 @@ ase_size_t ase_str_ncat (ase_str_t* str, const ase_char_t* s, ase_size_t len)
if (tmp == ASE_NULL) return (ase_size_t)-1;
if (str->buf != ASE_NULL)
{
ASE_MEMCPY (str->mmgr, tmp, str->buf,
ase_memcpy (tmp, str->buf,
ASE_SIZEOF(ase_char_t)*(str->capa+1));
ASE_FREE (str->mmgr, str->buf);
}

View File

@ -1,5 +1,5 @@
/*
* $Id: macros.h,v 1.51 2007-02-23 06:43:30 bacon Exp $
* $Id: macros.h,v 1.52 2007-02-23 08:17:48 bacon Exp $
*
* {License}
*/
@ -109,10 +109,6 @@
#define ASE_FREE(mmgr,ptr) (mmgr)->free (mmgr, ptr)
#endif
#define ASE_MEMCPY(mmgr,dst,src,len) (mmgr)->memcpy (mmgr, dst, src, len)
#define ASE_MEMSET(mmgr,dst,val,len) (mmgr)->memset (mmgr, dst, val, len)
#define ASE_MEMCMP(mmgr,m1,m2,len) (mmgr)->memcmp (mmgr, m1, m2, len)
#define ASE_ISUPPER(ccls,c) (ccls)->is_upper (ccls, c)
#define ASE_ISLOWER(ccls,c) (ccls)->is_lower (ccls, c)
#define ASE_ISALPHA(ccls,c) (ccls)->is_alpha (ccls, c)

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.c,v 1.174 2007-02-21 04:09:28 bacon Exp $
* $Id: awk.c,v 1.175 2007-02-23 08:17:51 bacon Exp $
*/
#include <ase/awk/awk.h>
@ -189,7 +189,7 @@ static ase_ssize_t awk_extio_pipe (
if (ferror((FILE*)epa->handle)) return -1;
return 0;
}
return ase_awk_strlen(data);
return ase_strlen(data);
}
case ASE_AWK_IO_WRITE:
@ -268,7 +268,7 @@ static ase_ssize_t awk_extio_file (
if (ferror((FILE*)epa->handle)) return -1;
return 0;
}
return ase_awk_strlen(data);
return ase_strlen(data);
}
case ASE_AWK_IO_WRITE:
@ -383,7 +383,7 @@ static ase_ssize_t awk_extio_console (
infile_no++;
}
return ase_awk_strlen(data);
return ase_strlen(data);
}
else if (cmd == ASE_AWK_IO_WRITE)
{
@ -440,7 +440,7 @@ static int open_extio_console (ase_awk_extio_t* epa)
awk_dprintf (ASE_T(" console(r) - %s\n"), infiles[infile_no]);
if (ase_awk_setfilename (
epa->run, infiles[infile_no],
ase_awk_strlen(infiles[infile_no])) == -1)
ase_strlen(infiles[infile_no])) == -1)
{
fclose (fp);
return -1;
@ -581,32 +581,32 @@ struct prmfns_data_t
};
#endif
static void* awk_malloc (ase_size_t n, void* custom_data)
static void* awk_malloc (ase_mmgr_t* mmgr, ase_size_t n)
{
#ifdef _WIN32
return HeapAlloc (((prmfns_data_t*)custom_data)->heap, 0, n);
return HeapAlloc (((prmfns_data_t*)mmgr->custom_data)->heap, 0, n);
#else
return malloc (n);
#endif
}
static void* awk_realloc (void* ptr, ase_size_t n, void* custom_data)
static void* awk_realloc (ase_mmgr_t* mmgr, void* ptr, ase_size_t n)
{
#ifdef _WIN32
/* HeapReAlloc behaves differently from realloc */
if (ptr == NULL)
return HeapAlloc (((prmfns_data_t*)custom_data)->heap, 0, n);
return HeapAlloc (((prmfns_data_t*)mmgr->custom_data)->heap, 0, n);
else
return HeapReAlloc (((prmfns_data_t*)custom_data)->heap, 0, ptr, n);
return HeapReAlloc (((prmfns_data_t*)mmgr->custom_data)->heap, 0, ptr, n);
#else
return realloc (ptr, n);
#endif
}
static void awk_free (void* ptr, void* custom_data)
static void awk_free (ase_mmgr_t* mmgr, void* ptr)
{
#ifdef _WIN32
HeapFree (((prmfns_data_t*)custom_data)->heap, 0, ptr);
HeapFree (((prmfns_data_t*)mmgr->custom_data)->heap, 0, ptr);
#else
free (ptr);
#endif
@ -668,20 +668,20 @@ static int awk_main (int argc, ase_char_t* argv[])
{
if (mode == 0)
{
if (ase_awk_strcmp(argv[i], ASE_T("-m")) == 0)
if (ase_strcmp(argv[i], ASE_T("-m")) == 0)
{
mfn = ASE_T("main");
}
else if (ase_awk_strcmp(argv[i], ASE_T("-d")) == 0)
else if (ase_strcmp(argv[i], ASE_T("-d")) == 0)
{
deparse = 1;
}
else if (ase_awk_strcmp(argv[i], ASE_T("-f")) == 0)
else if (ase_strcmp(argv[i], ASE_T("-f")) == 0)
{
/* specify source file */
mode = 1;
}
else if (ase_awk_strcmp(argv[i], ASE_T("-a")) == 0)
else if (ase_strcmp(argv[i], ASE_T("-a")) == 0)
{
/* specify arguments */
mode = 2;
@ -734,7 +734,7 @@ static int awk_main (int argc, ase_char_t* argv[])
}
runarg[runarg_count].ptr = argv[i];
runarg[runarg_count].len = ase_awk_strlen(argv[i]);
runarg[runarg_count].len = ase_strlen(argv[i]);
runarg_count++;
mode = 0;
}
@ -752,33 +752,31 @@ static int awk_main (int argc, ase_char_t* argv[])
memset (&prmfns, 0, ASE_SIZEOF(prmfns));
prmfns.malloc = awk_malloc;
prmfns.realloc = awk_realloc;
prmfns.free = awk_free;
prmfns.memcpy = awk_memcpy;
prmfns.memset = awk_memset;
prmfns.mmgr.malloc = awk_malloc;
prmfns.mmgr.realloc = awk_realloc;
prmfns.mmgr.free = awk_free;
prmfns.is_upper = (ase_awk_isctype_t)ase_isupper;
prmfns.is_lower = (ase_awk_isctype_t)ase_islower;
prmfns.is_alpha = (ase_awk_isctype_t)ase_isalpha;
prmfns.is_digit = (ase_awk_isctype_t)ase_isdigit;
prmfns.is_xdigit = (ase_awk_isctype_t)ase_isxdigit;
prmfns.is_alnum = (ase_awk_isctype_t)ase_isalnum;
prmfns.is_space = (ase_awk_isctype_t)ase_isspace;
prmfns.is_print = (ase_awk_isctype_t)ase_isprint;
prmfns.is_graph = (ase_awk_isctype_t)ase_isgraph;
prmfns.is_cntrl = (ase_awk_isctype_t)ase_iscntrl;
prmfns.is_punct = (ase_awk_isctype_t)ase_ispunct;
prmfns.to_upper = (ase_awk_toctype_t)ase_toupper;
prmfns.to_lower = (ase_awk_toctype_t)ase_tolower;
prmfns.ccls.is_upper = ase_isupper;
prmfns.ccls.is_lower = ase_islower;
prmfns.ccls.is_alpha = ase_isalpha;
prmfns.ccls.is_digit = ase_isdigit;
prmfns.ccls.is_xdigit = ase_isxdigit;
prmfns.ccls.is_alnum = ase_isalnum;
prmfns.ccls.is_space = ase_isspace;
prmfns.ccls.is_print = ase_isprint;
prmfns.ccls.is_graph = ase_isgraph;
prmfns.ccls.is_cntrl = ase_iscntrl;
prmfns.ccls.is_punct = ase_ispunct;
prmfns.ccls.to_upper = ase_toupper;
prmfns.ccls.to_lower = ase_tolower;
prmfns.pow = awk_pow;
prmfns.sprintf = ase_sprintf;
prmfns.aprintf = awk_aprintf;
prmfns.dprintf = awk_dprintf;
prmfns.abort = awk_abort;
prmfns.lock = NULL;
prmfns.unlock = NULL;
prmfns.misc.pow = awk_pow;
prmfns.misc.sprintf = ase_sprintf;
prmfns.misc.aprintf = awk_aprintf;
prmfns.misc.dprintf = awk_dprintf;
prmfns.misc.abort = awk_abort;
prmfns.misc.lock = NULL;
prmfns.misc.unlock = NULL;
#ifdef _WIN32
prmfns_data.heap = HeapCreate (0, 1000000, 1000000);
@ -788,7 +786,7 @@ static int awk_main (int argc, ase_char_t* argv[])
return -1;
}
prmfns.custom_data = &prmfns_data;
prmfns.mmgr.custom_data = &prmfns_data;
#endif
if ((awk = ase_awk_open(&prmfns, ASE_NULL, &errnum)) == ASE_NULL)

View File

@ -1,5 +1,5 @@
/*
* $Id: types.h,v 1.71 2007-02-23 06:43:30 bacon Exp $
* $Id: types.h,v 1.72 2007-02-23 08:17:48 bacon Exp $
*
* {License}
*/
@ -238,10 +238,6 @@ typedef void* (*ase_malloc_t) (ase_mmgr_t* mmgr, ase_size_t n);
typedef void* (*ase_realloc_t) (ase_mmgr_t* mmgr, void* ptr, ase_size_t n);
typedef void (*ase_free_t) (ase_mmgr_t* mmgr, void* ptr);
typedef void* (*ase_memcpy_t) (ase_mmgr_t* mmgr, void* dst, const void* src, ase_size_t n);
typedef void* (*ase_memset_t) (ase_mmgr_t* mmgr, void* dst, int val, ase_size_t n);
typedef void* (*ase_memcmp_t) (ase_mmgr_t* mmgr, const void* m1, const void* m2, ase_size_t n);
typedef ase_bool_t (*ase_isccls_t) (ase_ccls_t* ccls, ase_cint_t c);
typedef ase_cint_t (*ase_toccls_t) (ase_ccls_t* ccls, ase_cint_t c);
@ -256,9 +252,6 @@ struct ase_mmgr_t
ase_malloc_t malloc;
ase_realloc_t realloc;
ase_free_t free;
ase_memcpy_t memcpy;
ase_memset_t memset;
ase_memcmp_t memcmp;
void* custom_data;
};