*** empty log message ***
This commit is contained in:
parent
b9f2687e1d
commit
d859d98608
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk_i.h,v 1.26 2006-07-05 16:20:23 bacon Exp $
|
* $Id: awk_i.h,v 1.27 2006-07-06 13:57:31 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _XP_AWK_AWKI_H_
|
#ifndef _XP_AWK_AWKI_H_
|
||||||
@ -140,7 +140,6 @@ struct xp_awk_chain_t
|
|||||||
xp_awk_chain_t* next;
|
xp_awk_chain_t* next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct xp_awk_run_t
|
struct xp_awk_run_t
|
||||||
{
|
{
|
||||||
xp_awk_map_t named;
|
xp_awk_map_t named;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
SRCS = awk.c err.c tree.c tab.c map.c parse.c run.c sa.c val.c misc.c
|
SRCS = awk.c err.c tree.c tab.c map.c parse.c run.c sa.c val.c func.c misc.c extio.c
|
||||||
OBJS = $(SRCS:.c=.obj)
|
OBJS = $(SRCS:.c=.obj)
|
||||||
OUT = xpawk.lib
|
OUT = xpawk.lib
|
||||||
|
|
||||||
|
140
ase/awk/run.c
140
ase/awk/run.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: run.c,v 1.123 2006-07-05 16:20:23 bacon Exp $
|
* $Id: run.c,v 1.124 2006-07-06 13:57:31 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -72,9 +72,13 @@ static xp_awk_val_t* __eval_group (xp_awk_run_t* run, xp_awk_nde_t* nde);
|
|||||||
static xp_awk_val_t* __eval_assignment (
|
static xp_awk_val_t* __eval_assignment (
|
||||||
xp_awk_run_t* run, xp_awk_nde_t* nde);
|
xp_awk_run_t* run, xp_awk_nde_t* nde);
|
||||||
static xp_awk_val_t* __do_assignment (
|
static xp_awk_val_t* __do_assignment (
|
||||||
|
xp_awk_run_t* run, xp_awk_nde_t* var, xp_awk_val_t* val);
|
||||||
|
static xp_awk_val_t* __do_assignment_scalar (
|
||||||
xp_awk_run_t* run, xp_awk_nde_var_t* var, xp_awk_val_t* val);
|
xp_awk_run_t* run, xp_awk_nde_var_t* var, xp_awk_val_t* val);
|
||||||
static xp_awk_val_t* __do_assignment_map (
|
static xp_awk_val_t* __do_assignment_map (
|
||||||
xp_awk_run_t* run, xp_awk_nde_var_t* var, xp_awk_val_t* val);
|
xp_awk_run_t* run, xp_awk_nde_var_t* var, xp_awk_val_t* val);
|
||||||
|
static xp_awk_val_t* __do_assignment_pos (
|
||||||
|
xp_awk_run_t* run, xp_awk_nde_pos_t* pos, xp_awk_val_t* val);
|
||||||
|
|
||||||
static xp_awk_val_t* __eval_binary (
|
static xp_awk_val_t* __eval_binary (
|
||||||
xp_awk_run_t* run, xp_awk_nde_t* nde);
|
xp_awk_run_t* run, xp_awk_nde_t* nde);
|
||||||
@ -969,7 +973,7 @@ static int __run_for (xp_awk_run_t* run, xp_awk_nde_for_t* nde)
|
|||||||
struct __foreach_walker_t
|
struct __foreach_walker_t
|
||||||
{
|
{
|
||||||
xp_awk_run_t* run;
|
xp_awk_run_t* run;
|
||||||
xp_awk_nde_var_t* var;
|
xp_awk_nde_t* var;
|
||||||
xp_awk_nde_t* body;
|
xp_awk_nde_t* body;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1026,7 +1030,7 @@ static int __run_foreach (xp_awk_run_t* run, xp_awk_nde_foreach_t* nde)
|
|||||||
map = ((xp_awk_val_map_t*)rv)->map;
|
map = ((xp_awk_val_map_t*)rv)->map;
|
||||||
|
|
||||||
walker.run = run;
|
walker.run = run;
|
||||||
walker.var = (xp_awk_nde_var_t*)test->left;
|
walker.var = test->left;
|
||||||
walker.body = nde->body;
|
walker.body = nde->body;
|
||||||
n = xp_awk_map_walk (map, __walk_foreach, &walker);
|
n = xp_awk_map_walk (map, __walk_foreach, &walker);
|
||||||
|
|
||||||
@ -1495,22 +1499,71 @@ static xp_awk_val_t* __eval_assignment (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
xp_awk_refupval (val);
|
xp_awk_refupval (val);
|
||||||
}
|
}
|
||||||
|
|
||||||
res = __do_assignment (run, (xp_awk_nde_var_t*)ass->left, val);
|
res = __do_assignment (run, ass->left, val);
|
||||||
xp_awk_refdownval (run, val);
|
xp_awk_refdownval (run, val);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static xp_awk_val_t* __do_assignment (
|
static xp_awk_val_t* __do_assignment (
|
||||||
xp_awk_run_t* run, xp_awk_nde_var_t* var, xp_awk_val_t* val)
|
xp_awk_run_t* run, xp_awk_nde_t* var, xp_awk_val_t* val)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (val->type == XP_AWK_VAL_MAP)
|
if (val->type == XP_AWK_VAL_MAP)
|
||||||
{
|
{
|
||||||
/* a map cannot be assigned to a variable */
|
/* a map cannot be assigned to a variable */
|
||||||
PANIC (run, XP_AWK_ENOTASSIGNABLE);
|
PANIC (run, XP_AWK_ENOTASSIGNABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (var->type == XP_AWK_NDE_NAMED ||
|
||||||
|
var->type == XP_AWK_NDE_GLOBAL ||
|
||||||
|
var->type == XP_AWK_NDE_LOCAL ||
|
||||||
|
var->type == XP_AWK_NDE_ARG)
|
||||||
|
{
|
||||||
|
if (__do_assignment_scalar (
|
||||||
|
run, (xp_awk_nde_var_t*)var, val) == XP_NULL)
|
||||||
|
{
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (var->type == XP_AWK_NDE_NAMEDIDX ||
|
||||||
|
var->type == XP_AWK_NDE_GLOBALIDX ||
|
||||||
|
var->type == XP_AWK_NDE_LOCALIDX ||
|
||||||
|
var->type == XP_AWK_NDE_ARGIDX)
|
||||||
|
{
|
||||||
|
if (__do_assignment_map (
|
||||||
|
run, (xp_awk_nde_var_t*)var, val) == XP_NULL)
|
||||||
|
{
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (var->type == XP_AWK_NDE_POS)
|
||||||
|
{
|
||||||
|
if (__do_assignment_pos (
|
||||||
|
run, (xp_awk_nde_pos_t*)var, val) == XP_NULL)
|
||||||
|
{
|
||||||
|
return XP_NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xp_assert (!"should never happen - invalid variable type");
|
||||||
|
PANIC (run, XP_AWK_EINTERNAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static xp_awk_val_t* __do_assignment_scalar (
|
||||||
|
xp_awk_run_t* run, xp_awk_nde_var_t* var, xp_awk_val_t* val)
|
||||||
|
{
|
||||||
|
xp_assert (
|
||||||
|
(var->type == XP_AWK_NDE_NAMED ||
|
||||||
|
var->type == XP_AWK_NDE_GLOBAL ||
|
||||||
|
var->type == XP_AWK_NDE_LOCAL ||
|
||||||
|
var->type == XP_AWK_NDE_ARG) && var->idx == XP_NULL);
|
||||||
|
|
||||||
|
xp_assert (val->type != XP_AWK_VAL_MAP);
|
||||||
|
|
||||||
if (var->type == XP_AWK_NDE_NAMED)
|
if (var->type == XP_AWK_NDE_NAMED)
|
||||||
{
|
{
|
||||||
xp_awk_pair_t* pair;
|
xp_awk_pair_t* pair;
|
||||||
@ -1559,7 +1612,7 @@ static xp_awk_val_t* __do_assignment (
|
|||||||
STACK_LOCAL(run,var->id.idxa) = val;
|
STACK_LOCAL(run,var->id.idxa) = val;
|
||||||
xp_awk_refupval (val);
|
xp_awk_refupval (val);
|
||||||
}
|
}
|
||||||
else if (var->type == XP_AWK_NDE_ARG)
|
else /* if (var->type == XP_AWK_NDE_ARG) */
|
||||||
{
|
{
|
||||||
xp_awk_val_t* old = STACK_ARG(run,var->id.idxa);
|
xp_awk_val_t* old = STACK_ARG(run,var->id.idxa);
|
||||||
if (old->type == XP_AWK_VAL_MAP)
|
if (old->type == XP_AWK_VAL_MAP)
|
||||||
@ -1573,25 +1626,6 @@ static xp_awk_val_t* __do_assignment (
|
|||||||
STACK_ARG(run,var->id.idxa) = val;
|
STACK_ARG(run,var->id.idxa) = val;
|
||||||
xp_awk_refupval (val);
|
xp_awk_refupval (val);
|
||||||
}
|
}
|
||||||
else if (var->type == XP_AWK_NDE_NAMEDIDX ||
|
|
||||||
var->type == XP_AWK_NDE_GLOBALIDX ||
|
|
||||||
var->type == XP_AWK_NDE_LOCALIDX ||
|
|
||||||
var->type == XP_AWK_NDE_ARGIDX)
|
|
||||||
{
|
|
||||||
if (__do_assignment_map(run,var,val) == XP_NULL)
|
|
||||||
return XP_NULL;
|
|
||||||
}
|
|
||||||
else if (var->type == XP_AWK_NDE_POS)
|
|
||||||
{
|
|
||||||
/* TODO: */
|
|
||||||
xp_printf (XP_T("XP_AWK_NDE_POS not implemented\n"));
|
|
||||||
PANIC (run, XP_AWK_EINTERNAL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
xp_assert (!"should never happen - invalid variable type");
|
|
||||||
PANIC (run, XP_AWK_EINTERNAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
@ -1608,6 +1642,7 @@ static xp_awk_val_t* __do_assignment_map (
|
|||||||
var->type == XP_AWK_NDE_GLOBALIDX ||
|
var->type == XP_AWK_NDE_GLOBALIDX ||
|
||||||
var->type == XP_AWK_NDE_LOCALIDX ||
|
var->type == XP_AWK_NDE_LOCALIDX ||
|
||||||
var->type == XP_AWK_NDE_ARGIDX) && var->idx != XP_NULL);
|
var->type == XP_AWK_NDE_ARGIDX) && var->idx != XP_NULL);
|
||||||
|
xp_assert (val->type != XP_AWK_VAL_MAP);
|
||||||
|
|
||||||
if (var->type == XP_AWK_NDE_NAMEDIDX)
|
if (var->type == XP_AWK_NDE_NAMEDIDX)
|
||||||
{
|
{
|
||||||
@ -1660,7 +1695,7 @@ static xp_awk_val_t* __do_assignment_map (
|
|||||||
xp_awk_refdownval (run, (xp_awk_val_t*)map);
|
xp_awk_refdownval (run, (xp_awk_val_t*)map);
|
||||||
STACK_LOCAL(run,var->id.idxa) = tmp;
|
STACK_LOCAL(run,var->id.idxa) = tmp;
|
||||||
}
|
}
|
||||||
else
|
else /* if (var->type == XP_AWK_NDE_ARGIDX) */
|
||||||
{
|
{
|
||||||
xp_awk_refdownval (run, (xp_awk_val_t*)map);
|
xp_awk_refdownval (run, (xp_awk_val_t*)map);
|
||||||
STACK_ARG(run,var->id.idxa) = tmp;
|
STACK_ARG(run,var->id.idxa) = tmp;
|
||||||
@ -1692,6 +1727,43 @@ xp_printf (XP_T("**** index str=>%s, map->ref=%d, map->type=%d\n"), str, map->re
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static xp_awk_val_t* __do_assignment_pos (
|
||||||
|
xp_awk_run_t* run, xp_awk_nde_pos_t* pos, xp_awk_val_t* val)
|
||||||
|
{
|
||||||
|
xp_awk_val_t* v;
|
||||||
|
xp_long_t lv;
|
||||||
|
xp_real_t rv;
|
||||||
|
int n, errnum;
|
||||||
|
|
||||||
|
v = __eval_expression (run, pos->val);
|
||||||
|
if (v == XP_NULL) return XP_NULL;
|
||||||
|
|
||||||
|
xp_awk_refupval (v);
|
||||||
|
n = __val_to_num (v, &lv, &rv);
|
||||||
|
xp_awk_refdownval (run, v);
|
||||||
|
|
||||||
|
if (n == -1) PANIC (run, XP_AWK_EPOSIDX);
|
||||||
|
if (n == 1) lv = (xp_long_t)rv;
|
||||||
|
|
||||||
|
if (lv == 0)
|
||||||
|
{
|
||||||
|
if (xp_awk_valtostr (
|
||||||
|
val, &errnum, &run->inrec.line) == XP_NULL)
|
||||||
|
{
|
||||||
|
PANIC (run, errnum);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (__split_record (run) == -1) return XP_NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xp_printf (XP_T("$X assignemtn NOT IMPLEMENTED\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//xp_awk_refupval (val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
static xp_awk_val_t* __eval_binary (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
static xp_awk_val_t* __eval_binary (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
||||||
{
|
{
|
||||||
static binop_func_t __binop_func[] =
|
static binop_func_t __binop_func[] =
|
||||||
@ -2797,7 +2869,7 @@ static xp_awk_val_t* __eval_incpre (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
PANIC (run, XP_AWK_EINTERNAL);
|
PANIC (run, XP_AWK_EINTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__do_assignment(run, (xp_awk_nde_var_t*)exp->left, res) == XP_NULL)
|
if (__do_assignment (run, exp->left, res) == XP_NULL)
|
||||||
{
|
{
|
||||||
xp_awk_refdownval (run, left);
|
xp_awk_refdownval (run, left);
|
||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
@ -2911,7 +2983,7 @@ static xp_awk_val_t* __eval_incpst (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
PANIC (run, XP_AWK_EINTERNAL);
|
PANIC (run, XP_AWK_EINTERNAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__do_assignment(run, (xp_awk_nde_var_t*)exp->left, res2) == XP_NULL)
|
if (__do_assignment (run, exp->left, res2) == XP_NULL)
|
||||||
{
|
{
|
||||||
xp_awk_refdownval (run, left);
|
xp_awk_refdownval (run, left);
|
||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
@ -3424,8 +3496,7 @@ static xp_awk_val_t* __eval_getline (xp_awk_run_t* run, xp_awk_nde_t* nde)
|
|||||||
if (v == XP_NULL) PANIC (run, XP_AWK_ENOMEM);
|
if (v == XP_NULL) PANIC (run, XP_AWK_ENOMEM);
|
||||||
xp_awk_refupval (v);
|
xp_awk_refupval (v);
|
||||||
|
|
||||||
if (__do_assignment(run,
|
if (__do_assignment(run, p->var, v) == XP_NULL)
|
||||||
(xp_awk_nde_var_t*)p->var, v) == XP_NULL)
|
|
||||||
{
|
{
|
||||||
xp_awk_refdownval (run, v);
|
xp_awk_refdownval (run, v);
|
||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
@ -3546,7 +3617,8 @@ static int __split_record (xp_awk_run_t* run)
|
|||||||
nflds = 0;
|
nflds = 0;
|
||||||
while (p != XP_NULL)
|
while (p != XP_NULL)
|
||||||
{
|
{
|
||||||
p = xp_strxtok (p, len, XP_T(" \t"), &tok, &tok_len);
|
//p = xp_strxtok (p, len, XP_T(" \t"), &tok, &tok_len);
|
||||||
|
p = xp_strtok (p, XP_T(" \t"), &tok, &tok_len);
|
||||||
nflds++;
|
nflds++;
|
||||||
len = len - tok_len;
|
len = len - tok_len;
|
||||||
}
|
}
|
||||||
@ -3561,7 +3633,9 @@ static int __split_record (xp_awk_run_t* run)
|
|||||||
|
|
||||||
while (p != XP_NULL)
|
while (p != XP_NULL)
|
||||||
{
|
{
|
||||||
p = xp_strxtok (p, len, XP_T(" \t"), &tok, &tok_len);
|
// TODO: fix the problem in in xp_strxtok...
|
||||||
|
//p = xp_strxtok (p, len, XP_T(" \t"), &tok, &tok_len);
|
||||||
|
p = xp_strtok (p, XP_T(" \t"), &tok, &tok_len);
|
||||||
|
|
||||||
run->inrec.flds[run->inrec.nflds].ptr = tok;
|
run->inrec.flds[run->inrec.nflds].ptr = tok;
|
||||||
run->inrec.flds[run->inrec.nflds].len = tok_len;
|
run->inrec.flds[run->inrec.nflds].len = tok_len;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: sa.c,v 1.24 2006-07-05 16:20:23 bacon Exp $
|
* $Id: sa.c,v 1.25 2006-07-06 13:57:31 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -295,7 +295,7 @@ xp_str_t* xp_str_open (xp_str_t* str, xp_size_t capa)
|
|||||||
{
|
{
|
||||||
if (str == XP_NULL)
|
if (str == XP_NULL)
|
||||||
{
|
{
|
||||||
str = (xp_str_t*)xp_malloc (sizeof(xp_str_t));
|
str = (xp_str_t*) xp_malloc (sizeof(xp_str_t));
|
||||||
if (str == XP_NULL) return XP_NULL;
|
if (str == XP_NULL) return XP_NULL;
|
||||||
str->__dynamic = xp_true;
|
str->__dynamic = xp_true;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: val.c,v 1.35 2006-07-01 16:07:06 bacon Exp $
|
* $Id: val.c,v 1.36 2006-07-06 13:57:31 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk_i.h>
|
#include <xp/awk/awk_i.h>
|
||||||
@ -100,6 +100,7 @@ xp_awk_val_t* xp_awk_makestrval (const xp_char_t* str, xp_size_t len)
|
|||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xp_printf (XP_T("makestrval => %p\n"), val);
|
||||||
return (xp_awk_val_t*)val;
|
return (xp_awk_val_t*)val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,6 +191,7 @@ void xp_awk_freeval (xp_awk_run_t* run, xp_awk_val_t* val, xp_bool_t cache)
|
|||||||
/*xp_printf (XP_T("freeing [cache=%d] ... "), cache);
|
/*xp_printf (XP_T("freeing [cache=%d] ... "), cache);
|
||||||
xp_awk_printval (val);
|
xp_awk_printval (val);
|
||||||
xp_printf (XP_T("\n"));*/
|
xp_printf (XP_T("\n"));*/
|
||||||
|
xp_printf (XP_TEXT("freeing VAL[%p]\n"), val);
|
||||||
switch (val->type)
|
switch (val->type)
|
||||||
{
|
{
|
||||||
case XP_AWK_VAL_NIL:
|
case XP_AWK_VAL_NIL:
|
||||||
@ -217,6 +219,9 @@ xp_printf (XP_T("\n"));*/
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
case XP_AWK_VAL_STR:
|
case XP_AWK_VAL_STR:
|
||||||
|
xp_printf (XP_TEXT("freeing STR[%p/%s]\n"),
|
||||||
|
((xp_awk_val_str_t*)val)->buf,
|
||||||
|
((xp_awk_val_str_t*)val)->buf);
|
||||||
xp_free (((xp_awk_val_str_t*)val)->buf);
|
xp_free (((xp_awk_val_str_t*)val)->buf);
|
||||||
xp_free (val);
|
xp_free (val);
|
||||||
return;
|
return;
|
||||||
@ -262,11 +267,9 @@ xp_printf (XP_T("\n"));
|
|||||||
val->ref--;
|
val->ref--;
|
||||||
if (val->ref <= 0)
|
if (val->ref <= 0)
|
||||||
{
|
{
|
||||||
/*
|
xp_printf (XP_T("**FREEING ["));
|
||||||
xp_printf (XP_T("**FREEING "));
|
|
||||||
xp_awk_printval (val);
|
xp_awk_printval (val);
|
||||||
xp_printf (XP_T("\n"));
|
xp_printf (XP_T("]\n"));
|
||||||
*/
|
|
||||||
xp_awk_freeval(run, val, xp_true);
|
xp_awk_freeval(run, val, xp_true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -344,6 +347,7 @@ xp_char_t* xp_awk_valtostr (xp_awk_val_t* v, int* errnum, xp_str_t* buf)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//xp_str_clear (buf);
|
||||||
if (xp_str_cat (buf, XP_T("0")) == (xp_size_t)-1)
|
if (xp_str_cat (buf, XP_T("0")) == (xp_size_t)-1)
|
||||||
{
|
{
|
||||||
*errnum = XP_AWK_ENOMEM;
|
*errnum = XP_AWK_ENOMEM;
|
||||||
@ -371,6 +375,8 @@ xp_char_t* xp_awk_valtostr (xp_awk_val_t* v, int* errnum, xp_str_t* buf)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//xp_str_clear (buf);
|
||||||
|
|
||||||
/* get the current end of the buffer */
|
/* get the current end of the buffer */
|
||||||
tmp = XP_STR_BUF(buf) + XP_STR_LEN(buf);
|
tmp = XP_STR_BUF(buf) + XP_STR_LEN(buf);
|
||||||
|
|
||||||
@ -412,6 +418,7 @@ xp_char_t* xp_awk_valtostr (xp_awk_val_t* v, int* errnum, xp_str_t* buf)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//xp_str_clear (buf);
|
||||||
tmp = XP_STR_BUF(buf) + XP_STR_LEN(buf);
|
tmp = XP_STR_BUF(buf) + XP_STR_LEN(buf);
|
||||||
|
|
||||||
if (xp_str_ncat (buf,
|
if (xp_str_ncat (buf,
|
||||||
@ -428,6 +435,7 @@ xp_char_t* xp_awk_valtostr (xp_awk_val_t* v, int* errnum, xp_str_t* buf)
|
|||||||
|
|
||||||
/* TODO: process more value types */
|
/* TODO: process more value types */
|
||||||
|
|
||||||
|
xp_printf (XP_TEXT("*** ERROR: WRONG VALUE TYPE [%d] in xp_awk_valtostr v=> %p***\n"), v->type, v);
|
||||||
*errnum = XP_AWK_EVALTYPE;
|
*errnum = XP_AWK_EVALTYPE;
|
||||||
return XP_NULL;
|
return XP_NULL;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: awk.c,v 1.51 2006-07-02 12:16:24 bacon Exp $
|
* $Id: awk.c,v 1.52 2006-07-06 13:57:31 bacon Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <xp/awk/awk.h>
|
#include <xp/awk/awk.h>
|
||||||
@ -392,7 +392,7 @@ xp_printf (XP_TEXT("closing [%s] of type %d (console)\n"), epa->name, epa->type
|
|||||||
/* TODO: how to return error or 0 */
|
/* TODO: how to return error or 0 */
|
||||||
fputs_t (data, /*size,*/ (FILE*)epa->handle);
|
fputs_t (data, /*size,*/ (FILE*)epa->handle);
|
||||||
/*fputs_t (data, stdout);*/
|
/*fputs_t (data, stdout);*/
|
||||||
MessageBox (NULL, data, data, MB_OK);
|
/*MessageBox (NULL, data, data, MB_OK);*/
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
CC = bcc32
|
CC = bcc32
|
||||||
CFLAGS = -I..\..\.. -D__STAND_ALONE
|
CFLAGS = -I..\..\.. -D__STAND_ALONE
|
||||||
LDFLAGS = -L..\..\..\xp\bas -L..\..\..\xp\awk
|
LDFLAGS = -L..\..\..\xp\bas -L..\..\..\xp\awk
|
||||||
LIBS = import32.lib cw32mt.lib xpbas.lib xpawk.lib
|
LIBS = import32.lib cw32mt.lib xpawk.lib
|
||||||
STARTUP = c0x32w.obj
|
STARTUP = c0x32w.obj
|
||||||
|
|
||||||
all: awk
|
all: awk
|
||||||
|
@ -18,6 +18,16 @@ END
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
$3 = "10";
|
//$3 = "10";
|
||||||
print $0, $2, $5;
|
//print $0, $2, $5;
|
||||||
|
$0 = "wow this is just a test";
|
||||||
|
print "step 1--------------------";
|
||||||
|
//print $0;
|
||||||
|
a = $6;
|
||||||
|
print "step 2--------------------";
|
||||||
|
print a;
|
||||||
|
/*
|
||||||
|
print $6;
|
||||||
|
*/
|
||||||
|
print "step 3--------------------";
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user