fixed bugs in awk

- added qse_awk_seterrinf() and qse_awk_geterrinf().
- deleted qse_awk_seterrmsg()
- fixed a bug in qse_awk_geterrmsg()
- fixed wrong handling of 'length'
- changed run_printf() to flush before returning
This commit is contained in:
2009-06-15 02:40:52 +00:00
parent ee8f5ee6dd
commit f9bf649924
11 changed files with 324 additions and 253 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.h 197 2009-06-12 02:59:59Z hyunghwan.chung $
* $Id: awk.h 199 2009-06-14 08:40:52Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -173,10 +173,8 @@ typedef int (*qse_awk_sprintf_t) (
...
);
/****e* AWK/qse_awk_sio_cmd_t
* NAME
* qse_awk_sio_cmd_t - define source IO commands
* SYNOPSIS
/**
* The qse_awk_sio_cmd_t type defines source IO commands
*/
enum qse_awk_sio_cmd_t
{
@ -186,7 +184,6 @@ enum qse_awk_sio_cmd_t
QSE_AWK_SIO_WRITE = 3
};
typedef enum qse_awk_sio_cmd_t qse_awk_sio_cmd_t;
/******/
/****t* AWK/qse_awk_siof_t
* NAME
@ -539,7 +536,7 @@ enum qse_awk_errnum_t
QSE_AWK_EMAPTOSCALAR, /* cannot change a map to a scalar value */
QSE_AWK_ESCALARTOMAP, /* cannot change a scalar value to a map */
QSE_AWK_EMAPNOTALLOWED, /* a map is not allowed */
QSE_AWK_EVALTYPE, /* wrong value type */
QSE_AWK_EVALTYPE, /* invalid value type */
QSE_AWK_ERDELETE, /* delete called with a wrong target */
QSE_AWK_ERRESET, /* reset called with a wrong target */
QSE_AWK_ERNEXTBEG, /* next called from BEGIN */
@ -578,6 +575,16 @@ enum qse_awk_errnum_t
typedef enum qse_awk_errnum_t qse_awk_errnum_t;
struct qse_awk_errinf_t
{
qse_awk_errnum_t num;
qse_size_t lin;
qse_char_t msg[256];
};
typedef struct qse_awk_errinf_t qse_awk_errinf_t;
/**
* The qse_awk_errstr_t type defines a error string getter. It should return
* an error formatting string for an error number requested. A new string
@ -904,16 +911,19 @@ const qse_char_t* qse_awk_geterrmsg (
qse_awk_t* awk
);
void qse_awk_geterrinf (
qse_awk_t* awk,
qse_awk_errinf_t* errinf
);
void qse_awk_seterrnum (
qse_awk_t* awk,
qse_awk_errnum_t errnum
);
void qse_awk_seterrmsg (
qse_awk_t* awk,
qse_awk_errnum_t errnum,
qse_size_t errlin,
const qse_char_t* errmsg
void qse_awk_seterrinf (
qse_awk_t* awk,
const qse_awk_errinf_t* errinf
);
void qse_awk_geterror (
@ -1415,25 +1425,19 @@ void* qse_awk_rtx_getxtn (
);
/******/
/****f* AWK/qse_awk_rtx_getnvmap
* NAME
* qse_awk_rtx_getnvmap - get the map of named variables
* SYNOPSIS
/**
* The qse_awk_rtx_getnvmap() gets the map of named variables
*/
qse_map_t* qse_awk_rtx_getnvmap (
qse_awk_rtx_t* rtx
);
/******/
/****f* AWK/qse_awk_rtx_geterrnum
* NAME
* qse_awk_rtx_geterrnum - get an error code of a runtime context
* SYNOPSIS
/**
* The qse_awk_rtx_geterrnum() function gets an error code of a runtime context
*/
int qse_awk_rtx_geterrnum (
qse_awk_rtx_t* rtx
);
/******/
qse_size_t qse_awk_rtx_geterrlin (
qse_awk_rtx_t* rtx
@ -1443,16 +1447,9 @@ const qse_char_t* qse_awk_rtx_geterrmsg (
qse_awk_rtx_t* rtx
);
void qse_awk_rtx_seterrnum (
qse_awk_rtx_t* rtx,
qse_awk_errnum_t errnum
);
void qse_awk_rtx_seterrmsg (
qse_awk_rtx_t* rtx,
qse_awk_errnum_t errnum,
qse_size_t errlin,
const qse_char_t* errmsg
void qse_awk_rtx_geterrinf (
qse_awk_rtx_t* rtx,
qse_awk_errinf_t* errinf
);
void qse_awk_rtx_geterror (
@ -1462,6 +1459,16 @@ void qse_awk_rtx_geterror (
const qse_char_t** errmsg
);
void qse_awk_rtx_seterrnum (
qse_awk_rtx_t* rtx,
qse_awk_errnum_t errnum
);
void qse_awk_rtx_seterrinf (
qse_awk_rtx_t* rtx,
const qse_awk_errinf_t* errinf
);
void qse_awk_rtx_seterror (
qse_awk_rtx_t* rtx,
qse_awk_errnum_t errnum,