*** empty log message ***

This commit is contained in:
hyung-hwan 2006-11-18 15:36:57 +00:00
parent 748d7408b1
commit 7111ee2808
9 changed files with 86 additions and 48 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk.h,v 1.142 2006-11-18 12:15:20 bacon Exp $ * $Id: awk.h,v 1.143 2006-11-18 15:36:56 bacon Exp $
*/ */
#ifndef _ASE_AWK_AWK_H_ #ifndef _ASE_AWK_AWK_H_
@ -77,11 +77,10 @@ struct ase_awk_syscas_t
ase_real_t (*pow) (ase_real_t x, ase_real_t y); ase_real_t (*pow) (ase_real_t x, ase_real_t y);
int (*sprintf) (ase_char_t* buf, ase_size_t size, ase_char_t* fmt, ...); int (*sprintf) (ase_char_t* buf, ase_size_t size, ase_char_t* fmt, ...);
int (*aprintf) (ase_char_t* fmt, ...); /* assertion */ void (*aprintf) (ase_char_t* fmt, ...); /* assertion */
int (*dprintf) (ase_char_t* fmt, ...); /* debug */ void (*dprintf) (ase_char_t* fmt, ...); /* debug */
void (*abort) (void); void (*abort) (void);
void* custom_data; void* custom_data;
}; };

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk_i.h,v 1.81 2006-11-17 07:04:31 bacon Exp $ * $Id: awk_i.h,v 1.82 2006-11-18 15:36:56 bacon Exp $
*/ */
#ifndef _ASE_AWK_AWKI_H_ #ifndef _ASE_AWK_AWKI_H_
@ -273,6 +273,16 @@ struct ase_awk_run_t
ase_awk_str_t fmt; ase_awk_str_t fmt;
ase_awk_str_t out; ase_awk_str_t out;
ase_char_t tmp[4096]; ase_char_t tmp[4096];
/*
struct
{
ase_char_t* ptr;
ase_size_t len;
} tmp;
*/
ase_bool_t c99; /* syscas.sprintf returns -1 on error */
} sprintf; } sprintf;
int errnum; int errnum;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: func.c,v 1.76 2006-11-16 15:16:25 bacon Exp $ * $Id: func.c,v 1.77 2006-11-18 15:36:57 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -1283,7 +1283,7 @@ static int __bfn_sprintf (ase_awk_run_t* run)
} }
} }
ptr = ase_awk_sprintf (run, ptr = ase_awk_format (run,
&out, &fbu, str0, len0, nargs, ASE_NULL, &len); &out, &fbu, str0, len0, nargs, ASE_NULL, &len);
if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0); if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0);
if (ptr == ASE_NULL) if (ptr == ASE_NULL)

View File

@ -1,5 +1,5 @@
/* /*
* $Id: run.c,v 1.265 2006-11-18 12:15:20 bacon Exp $ * $Id: run.c,v 1.266 2006-11-18 15:36:57 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -2478,7 +2478,7 @@ static int __formatted_output (
ase_size_t len; ase_size_t len;
int n; int n;
ptr = ase_awk_sprintf (run, ptr = ase_awk_format (run,
ASE_NULL, ASE_NULL, fmt, fmt_len, 0, args, &len); ASE_NULL, ASE_NULL, fmt, fmt_len, 0, args, &len);
if (ptr == ASE_NULL) return -1; if (ptr == ASE_NULL) return -1;
@ -5538,7 +5538,7 @@ static ase_char_t* __idxnde_to_str (
return str; return str;
} }
ase_char_t* ase_awk_sprintf ( 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_awk_str_t* out, ase_awk_str_t* fbu,
const ase_char_t* fmt, ase_size_t fmt_len, 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) ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len)
@ -5640,6 +5640,7 @@ ase_char_t* ase_awk_sprintf (
if (n == -1) return ASE_NULL; if (n == -1) return ASE_NULL;
if (n == 1) l = (ase_long_t)r; if (n == 1) l = (ase_long_t)r;
run->awk->syscas.sprintf ( run->awk->syscas.sprintf (
run->sprintf.tmp, run->sprintf.tmp,
ase_countof(run->sprintf.tmp), ase_countof(run->sprintf.tmp),
@ -5656,6 +5657,37 @@ ase_char_t* ase_awk_sprintf (
p++; p++;
} }
/*
while (1)
{
n = run->awk->syscas.sprintf (
run->sprintf.tmp.ptr,
run->sprintf.tmp.len,
#ifdef _WIN32
ASE_T("%I64d"), (__int64)l);
#else
ASE_T("%lld"), (long long)l);
#endif
if ((!run->sprintf.tmp.c99 && n == -1) ||
(run->sprintf.tmp.c99 &&
n != ase_awk_strlen(run->sprintf.tmp.ptr))
{
continue;
}
}
p = run->sprintf.tmp.ptr;
while (*p != ASE_T('\0'))
{
FMT_CHAR (*p);
p++;
}
*/
if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++; if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++;
else args = args->next; else args = args->next;
i++; i++;
@ -5793,7 +5825,6 @@ ase_char_t* ase_awk_sprintf (
if (n == -1) return ASE_NULL; if (n == -1) return ASE_NULL;
if (n == 1) l = (ase_long_t)r; if (n == 1) l = (ase_long_t)r;
/* TODO: check the return value of syscas.sprintf and handle an error */
run->awk->syscas.sprintf ( run->awk->syscas.sprintf (
run->sprintf.tmp, run->sprintf.tmp,
ase_countof(run->sprintf.tmp), ase_countof(run->sprintf.tmp),
@ -5858,7 +5889,6 @@ ase_char_t* ase_awk_sprintf (
if (n == -1) return ASE_NULL; if (n == -1) return ASE_NULL;
if (n == 0) r = (ase_real_t)l; if (n == 0) r = (ase_real_t)l;
/* TODO: check the return value of syscas.sprintf and handle an error */
run->awk->syscas.sprintf ( run->awk->syscas.sprintf (
run->sprintf.tmp, run->sprintf.tmp,
ase_countof(run->sprintf.tmp), ase_countof(run->sprintf.tmp),
@ -5999,7 +6029,6 @@ ase_char_t* ase_awk_sprintf (
else if (v->type == ASE_AWK_VAL_STR) else if (v->type == ASE_AWK_VAL_STR)
{ {
/* TODO: handle a string contailing null characters */ /* TODO: handle a string contailing null characters */
/* TODO: handle error conditions of sprintf */
run->awk->syscas.sprintf ( run->awk->syscas.sprintf (
run->sprintf.tmp, run->sprintf.tmp,
ase_countof(run->sprintf.tmp), ase_countof(run->sprintf.tmp),

View File

@ -1,5 +1,5 @@
/* /*
* $Id: run.h,v 1.24 2006-11-16 15:16:25 bacon Exp $ * $Id: run.h,v 1.25 2006-11-18 15:36:57 bacon Exp $
*/ */
#ifndef _ASE_AWK_RUN_H_ #ifndef _ASE_AWK_RUN_H_
@ -104,7 +104,7 @@ enum
extern "C" { extern "C" {
#endif #endif
ase_char_t* ase_awk_sprintf ( 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_awk_str_t* out, ase_awk_str_t* fbu,
const ase_char_t* fmt, ase_size_t fmt_len, 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); ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tree.c,v 1.87 2006-11-17 07:04:32 bacon Exp $ * $Id: tree.c,v 1.88 2006-11-18 15:36:57 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -248,7 +248,7 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
{ {
if (((ase_awk_nde_real_t*)nde)->str == ASE_NULL) if (((ase_awk_nde_real_t*)nde)->str == ASE_NULL)
{ {
ase_char_t tmp[128]; ase_char_t tmp[256];
#if (ASE_SIZEOF_LONG_DOUBLE != 0) #if (ASE_SIZEOF_LONG_DOUBLE != 0)
awk->syscas.sprintf ( awk->syscas.sprintf (
tmp, ase_countof(tmp), ASE_T("%Lf"), tmp, ase_countof(tmp), ASE_T("%Lf"),
@ -277,11 +277,6 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
ase_size_t len, i; ase_size_t len, i;
PUT_SRCSTR (awk, ASE_T("\"")); PUT_SRCSTR (awk, ASE_T("\""));
/*
PUT_SRCSTRX (awk,
((ase_awk_nde_str_t*)nde)->buf,
((ase_awk_nde_str_t*)nde)->len);
*/
ptr = ((ase_awk_nde_str_t*)nde)->buf; ptr = ((ase_awk_nde_str_t*)nde)->buf;
len = ((ase_awk_nde_str_t*)nde)->len; len = ((ase_awk_nde_str_t*)nde)->len;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: val.c,v 1.89 2006-11-18 12:15:20 bacon Exp $ * $Id: val.c,v 1.90 2006-11-18 15:36:57 bacon Exp $
*/ */
#include <ase/awk/awk_i.h> #include <ase/awk/awk_i.h>
@ -616,7 +616,7 @@ static ase_char_t* __val_real_to_str (
return ASE_NULL; return ASE_NULL;
} }
tmp = ase_awk_sprintf (run, &out, &fbu, tmp, tmp_len, tmp = ase_awk_format (run, &out, &fbu, tmp, tmp_len,
(ase_size_t)-1, (ase_awk_nde_t*)v, &tmp_len); (ase_size_t)-1, (ase_awk_nde_t*)v, &tmp_len);
if (tmp == ASE_NULL) if (tmp == ASE_NULL)
{ {

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk.c,v 1.115 2006-11-17 07:49:10 bacon Exp $ * $Id: awk.c,v 1.116 2006-11-18 15:36:57 bacon Exp $
*/ */
#include <ase/awk/awk.h> #include <ase/awk/awk.h>
@ -26,9 +26,6 @@
#define ASE_PATH_MAX PATH_MAX #define ASE_PATH_MAX PATH_MAX
#endif #endif
#define xp_vsprintf _vsntprintf
#define xp_sprintf _sntprintf
#define xp_fprintf _ftprintf
#define xp_printf _tprintf #define xp_printf _tprintf
#define xp_assert assert #define xp_assert assert
@ -108,6 +105,11 @@ static int __awk_sprintf (
va_start (ap, fmt); va_start (ap, fmt);
#if defined(_WIN32) #if defined(_WIN32)
n = _vsntprintf (buf, len, fmt, ap); n = _vsntprintf (buf, len, fmt, ap);
if (n < 0 || (ase_size_t)n >= len)
{
if (len >= 0) buf[len-1] = ASE_T('\0');
n = -1;
}
#elif defined(__MSDOS__) #elif defined(__MSDOS__)
/* TODO: check buffer overflow */ /* TODO: check buffer overflow */
n = vsprintf (buf, fmt, ap); n = vsprintf (buf, fmt, ap);
@ -118,48 +120,48 @@ static int __awk_sprintf (
return n; return n;
} }
static int __awk_aprintf (const ase_char_t* fmt, ...) static void __awk_aprintf (const ase_char_t* fmt, ...)
{ {
int n;
va_list ap; va_list ap;
#ifdef _WIN32 #ifdef _WIN32
int n;
ase_char_t buf[1024]; ase_char_t buf[1024];
#endif #endif
va_start (ap, fmt); va_start (ap, fmt);
#if defined(_WIN32) #if defined(_WIN32)
n = _vsntprintf (buf, ase_countof(buf), fmt, ap); n = _vsntprintf (buf, ase_countof(buf), fmt, ap);
if (n < 0) buf[ase_countof(buf)-1] = ASE_T('\0');
#if defined(_MSC_VER) && (_MSC_VER<1400) #if defined(_MSC_VER) && (_MSC_VER<1400)
MessageBox (NULL, buf, ASE_T("Assertion Failure"), MB_OK | MB_ICONERROR); MessageBox (NULL, buf,
ASE_T("Assertion Failure"), MB_OK|MB_ICONERROR);
#else #else
MessageBox (NULL, buf, ASE_T("\uB2DD\uAE30\uB9AC \uC870\uB610"), MB_OK | MB_ICONERROR); MessageBox (NULL, buf,
ASE_T("\uB2DD\uAE30\uB9AC \uC870\uB610"), MB_OK|MB_ICONERROR);
#endif #endif
#elif defined(__MSDOS__) #elif defined(__MSDOS__)
n = vprintf (fmt, ap); vprintf (fmt, ap);
#else #else
n = xp_vprintf (fmt, ap); xp_vprintf (fmt, ap);
#endif #endif
va_end (ap); va_end (ap);
return n;
} }
static int __awk_dprintf (const ase_char_t* fmt, ...) static void __awk_dprintf (const ase_char_t* fmt, ...)
{ {
int n;
va_list ap; va_list ap;
va_start (ap, fmt); va_start (ap, fmt);
#if defined(_WIN32) #if defined(_WIN32)
n = _vftprintf (stderr, fmt, ap); _vftprintf (stderr, fmt, ap);
#elif defined(__MSDOS__) #elif defined(__MSDOS__)
n = vfprintf (stderr, fmt, ap); vfprintf (stderr, fmt, ap);
#else #else
n = xp_vfprintf (stderr, fmt, ap); xp_vfprintf (stderr, fmt, ap);
#endif #endif
va_end (ap); va_end (ap);
return n;
} }
static ase_real_t __awk_pow (ase_real_t x, ase_real_t y) static ase_real_t __awk_pow (ase_real_t x, ase_real_t y)

View File

@ -1,16 +1,19 @@
SRCS = awk.c SRCS = awk.c
OUTS = $(SRCS:.c=.x) OBJS = $(SRCS:.c=.o)
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ -I@abs_top_builddir@/.. -I$(XPKIT) CFLAGS = @CFLAGS@ -I@abs_top_builddir@/.. -I$(XPKIT)
LDFLAGS = @LDFLAGS@ -L@abs_top_builddir@/awk -L$(XPKIT)/xp/bas LDFLAGS = @LDFLAGS@ -L@abs_top_builddir@/awk -L$(XPKIT)/xp/bas
LIBS = @LIBS@ -laseawk -lxpbas -lm LIBS = @LIBS@ -laseawk -lxpbas -lm
all: $(OUTS) all: awk
awk: $(OBJS)
$(CC) -o awk awk.o $(LDFLAGS) $(LIBS)
clean: clean:
rm -rf $(OUTS) *.o rm -rf *.o awk
.SUFFIXES: .c .x .SUFFIXES: .c .o
.c.x: .c.o:
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) $(CC) -c $(CFLAGS) $<