some code fixes and refactoring
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
98
lib/sed.c
98
lib/sed.c
@ -452,7 +452,7 @@ static int add_command_block (hawk_sed_t* sed)
|
||||
hawk_sed_cmd_blk_t* b;
|
||||
|
||||
b = (hawk_sed_cmd_blk_t*)hawk_sed_callocmem(sed, HAWK_SIZEOF(*b));
|
||||
if (b == HAWK_NULL) return -1;
|
||||
if (HAWK_UNLIKELY(!b)) return -1;
|
||||
|
||||
b->next = HAWK_NULL;
|
||||
b->len = 0;
|
||||
@ -815,7 +815,7 @@ static hawk_sed_adr_t* get_address (hawk_sed_t* sed, hawk_sed_adr_t* a, int exte
|
||||
else if (c == HAWK_T('/'))
|
||||
{
|
||||
/* /REGEX/ */
|
||||
a->u.rex = compile_rex_address (sed, c);
|
||||
a->u.rex = compile_rex_address(sed, c);
|
||||
if (a->u.rex == HAWK_NULL) return HAWK_NULL;
|
||||
a->type = HAWK_SED_ADR_REX;
|
||||
NXTSC (sed, c, HAWK_NULL);
|
||||
@ -830,7 +830,7 @@ static hawk_sed_adr_t* get_address (hawk_sed_t* sed, hawk_sed_adr_t* a, int exte
|
||||
return HAWK_NULL;
|
||||
}
|
||||
|
||||
a->u.rex = compile_rex_address (sed, c);
|
||||
a->u.rex = compile_rex_address(sed, c);
|
||||
if (a->u.rex == HAWK_NULL) return HAWK_NULL;
|
||||
a->type = HAWK_SED_ADR_REX;
|
||||
NXTSC (sed, c, HAWK_NULL);
|
||||
@ -886,7 +886,7 @@ do { \
|
||||
hawk_ooecs_t* t = HAWK_NULL;
|
||||
|
||||
t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 128);
|
||||
if (t == HAWK_NULL) goto oops;
|
||||
if (HAWK_UNLIKELY(!t)) goto oops;
|
||||
|
||||
c = CURSC (sed);
|
||||
|
||||
@ -994,7 +994,7 @@ static int get_label (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (hawk_map_insert (
|
||||
if (hawk_map_insert(
|
||||
&sed->tmp.labs,
|
||||
HAWK_OOECS_PTR(&sed->tmp.lab), HAWK_OOECS_LEN(&sed->tmp.lab),
|
||||
cmd, 0) == HAWK_NULL)
|
||||
@ -1062,7 +1062,7 @@ static int get_branch_target (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
}
|
||||
|
||||
t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32);
|
||||
if (t == HAWK_NULL) goto oops;
|
||||
if (HAWK_UNLIKELY(!t)) goto oops;
|
||||
|
||||
while (IS_LABCHAR(c))
|
||||
{
|
||||
@ -1072,7 +1072,7 @@ static int get_branch_target (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
|
||||
if (terminate_command (sed) <= -1) goto oops;
|
||||
|
||||
pair = hawk_map_search (&sed->tmp.labs, HAWK_OOECS_PTR(t), HAWK_OOECS_LEN(t));
|
||||
pair = hawk_map_search(&sed->tmp.labs, HAWK_OOECS_PTR(t), HAWK_OOECS_LEN(t));
|
||||
if (pair == HAWK_NULL)
|
||||
{
|
||||
/* label not resolved yet */
|
||||
@ -1111,7 +1111,7 @@ static int get_file (hawk_sed_t* sed, hawk_oocs_t* xstr)
|
||||
}
|
||||
|
||||
t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32);
|
||||
if (t == HAWK_NULL) goto oops;
|
||||
if (HAWK_UNLIKELY(!t)) goto oops;
|
||||
|
||||
do
|
||||
{
|
||||
@ -1205,7 +1205,7 @@ static int get_subst (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
hawk_ooecs_clear(t[0]);
|
||||
|
||||
t[1] = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32);
|
||||
if (t[1] == HAWK_NULL) goto oops;
|
||||
if (HAWK_UNLIKELY(!t[1])) goto oops;
|
||||
|
||||
if (pickup_rex(sed, delim, 0, cmd, t[0]) <= -1) goto oops;
|
||||
if (pickup_rex(sed, delim, 1, cmd, t[1]) <= -1) goto oops;
|
||||
@ -1324,7 +1324,7 @@ static int get_transet (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
}
|
||||
|
||||
t = hawk_ooecs_open(hawk_sed_getgem(sed), 0, 32);
|
||||
if (t == HAWK_NULL) goto oops;
|
||||
if (HAWK_UNLIKELY(!t)) goto oops;
|
||||
|
||||
NXTSC_GOTO(sed, c, oops);
|
||||
while (c != delim)
|
||||
@ -1393,7 +1393,7 @@ static int add_cut_selector_block (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
hawk_sed_cut_sel_t* b;
|
||||
|
||||
b = (hawk_sed_cut_sel_t*)hawk_sed_callocmem(sed, HAWK_SIZEOF(*b));
|
||||
if (b == HAWK_NULL) return -1;
|
||||
if (HAWK_UNLIKELY(!b)) return -1;
|
||||
|
||||
b->next = HAWK_NULL;
|
||||
b->len = 0;
|
||||
@ -2137,11 +2137,11 @@ static int write_str (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
/*if (write_char (sed, str[i]) <= -1) return -1;*/
|
||||
/*if (write_char(sed, str[i]) <= -1) return -1;*/
|
||||
sed->e.out.buf[sed->e.out.len++] = str[i];
|
||||
if (sed->e.out.len >= HAWK_COUNTOF(sed->e.out.buf))
|
||||
{
|
||||
if (flush (sed) <= -1) return -1;
|
||||
if (flush(sed) <= -1) return -1;
|
||||
flush_needed = 0;
|
||||
}
|
||||
/* TODO: handle different line ending convension... */
|
||||
@ -2152,13 +2152,12 @@ static int write_str (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int write_first_line (
|
||||
hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
static int write_first_line (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
{
|
||||
hawk_oow_t i;
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (write_char (sed, str[i]) <= -1) return -1;
|
||||
if (write_char(sed, str[i]) <= -1) return -1;
|
||||
/* TODO: handle different line ending convension... */
|
||||
if (str[i] == HAWK_T('\n')) break;
|
||||
}
|
||||
@ -2175,14 +2174,14 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width)
|
||||
|
||||
HAWK_ASSERT(base >= 2 && base <= 36);
|
||||
|
||||
if (x < 0)
|
||||
/*if (x < 0)
|
||||
{
|
||||
if (write_char(sed, HAWK_T('-')) <= -1) return -1;
|
||||
if (width > 0) width--;
|
||||
}
|
||||
}*/
|
||||
|
||||
x = x / base;
|
||||
if (x < 0) x = -x;
|
||||
/*if (x < 0) x = -x;*/
|
||||
|
||||
while (x > 0)
|
||||
{
|
||||
@ -2195,13 +2194,13 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width)
|
||||
{
|
||||
while (--width > dig)
|
||||
{
|
||||
if (write_char (sed, HAWK_T('0')) <= -1) return -1;
|
||||
if (write_char(sed, HAWK_T('0')) <= -1) return -1;
|
||||
}
|
||||
}
|
||||
|
||||
while (y > 0)
|
||||
{
|
||||
if (write_char (sed, NTOC(y % base)) <= -1) return -1;
|
||||
if (write_char(sed, NTOC(y % base)) <= -1) return -1;
|
||||
y = y / base;
|
||||
dig--;
|
||||
}
|
||||
@ -2209,10 +2208,10 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width)
|
||||
while (dig > 0)
|
||||
{
|
||||
dig--;
|
||||
if (write_char (sed, HAWK_T('0')) <= -1) return -1;
|
||||
if (write_char(sed, HAWK_T('0')) <= -1) return -1;
|
||||
}
|
||||
if (last < 0) last = -last;
|
||||
if (write_char (sed, NTOC(last)) <= -1) return -1;
|
||||
/*if (last < 0) last = -last;*/
|
||||
if (write_char(sed, NTOC(last)) <= -1) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -2224,8 +2223,7 @@ static int write_num (hawk_sed_t* sed, hawk_oow_t x, int base, int width)
|
||||
#define WRITE_NUM(sed,num,base,width) \
|
||||
do { if (write_num(sed,num,base,width) <= -1) return -1; } while (0)
|
||||
|
||||
static int write_str_clearly (
|
||||
hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
static int write_str_clearly (hawk_sed_t* sed, const hawk_ooch_t* str, hawk_oow_t len)
|
||||
{
|
||||
const hawk_ooch_t* p = str;
|
||||
const hawk_ooch_t* end = str + len;
|
||||
@ -2238,50 +2236,50 @@ static int write_str_clearly (
|
||||
switch (c)
|
||||
{
|
||||
case HAWK_T('\\'):
|
||||
WRITE_STR (sed, HAWK_T("\\\\"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\\\"), 2);
|
||||
break;
|
||||
/*case HAWK_T('\0'):
|
||||
WRITE_STR (sed, HAWK_T("\\0"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\0"), 2);
|
||||
break;*/
|
||||
case HAWK_T('\n'):
|
||||
WRITE_STR (sed, HAWK_T("$\n"), 2);
|
||||
WRITE_STR(sed, HAWK_T("$\n"), 2);
|
||||
break;
|
||||
case HAWK_T('\a'):
|
||||
WRITE_STR (sed, HAWK_T("\\a"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\a"), 2);
|
||||
break;
|
||||
case HAWK_T('\b'):
|
||||
WRITE_STR (sed, HAWK_T("\\b"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\b"), 2);
|
||||
break;
|
||||
case HAWK_T('\f'):
|
||||
WRITE_STR (sed, HAWK_T("\\f"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\f"), 2);
|
||||
break;
|
||||
case HAWK_T('\r'):
|
||||
WRITE_STR (sed, HAWK_T("\\r"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\r"), 2);
|
||||
break;
|
||||
case HAWK_T('\t'):
|
||||
WRITE_STR (sed, HAWK_T("\\t"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\t"), 2);
|
||||
break;
|
||||
case HAWK_T('\v'):
|
||||
WRITE_STR (sed, HAWK_T("\\v"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\v"), 2);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if (hawk_is_ooch_print(c)) WRITE_CHAR (sed, c);
|
||||
if (hawk_is_ooch_print(c)) WRITE_CHAR(sed, c);
|
||||
else
|
||||
{
|
||||
#if defined(HAWK_OOCH_IS_BCH)
|
||||
WRITE_CHAR (sed, HAWK_T('\\'));
|
||||
WRITE_NUM (sed, (unsigned char)c, 8, HAWK_SIZEOF(hawk_ooch_t)*3);
|
||||
WRITE_CHAR(sed, HAWK_T('\\'));
|
||||
WRITE_NUM(sed, (hawk_bchu_t)c, 8, HAWK_SIZEOF(hawk_ooch_t)*3);
|
||||
#else
|
||||
if (HAWK_SIZEOF(hawk_ooch_t) <= 2)
|
||||
{
|
||||
WRITE_STR (sed, HAWK_T("\\u"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\u"), 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
WRITE_STR (sed, HAWK_T("\\U"), 2);
|
||||
WRITE_STR(sed, HAWK_T("\\U"), 2);
|
||||
}
|
||||
WRITE_NUM (sed, c, 16, HAWK_SIZEOF(hawk_ooch_t)*2);
|
||||
WRITE_NUM(sed, (hawk_oochu_t)c, 16, HAWK_SIZEOF(hawk_ooch_t)*2);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -2289,7 +2287,7 @@ static int write_str_clearly (
|
||||
}
|
||||
|
||||
if (len > 1 && end[-1] != HAWK_T('\n'))
|
||||
WRITE_STR (sed, HAWK_T("$\n"), 2);
|
||||
WRITE_STR(sed, HAWK_T("$\n"), 2);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -2394,7 +2392,7 @@ static int write_file (hawk_sed_t* sed, hawk_sed_cmd_t* cmd, int first_line)
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
if (write_char (sed, buf[i]) <= -1) return -1;
|
||||
if (write_char(sed, buf[i]) <= -1) return -1;
|
||||
|
||||
/* TODO: support different line end convension */
|
||||
if (buf[i] == HAWK_T('\n')) goto done;
|
||||
@ -2424,7 +2422,7 @@ static int link_append (hawk_sed_t* sed, hawk_sed_cmd_t* cmd)
|
||||
|
||||
/* otherwise, link it using a linked list */
|
||||
app = hawk_sed_allocmem(sed, HAWK_SIZEOF(*app));
|
||||
if (app == HAWK_NULL)
|
||||
if (HAWK_UNLIKELY(!app))
|
||||
{
|
||||
ADJERR_LOC (sed, &cmd->loc);
|
||||
return -1;
|
||||
@ -2785,13 +2783,13 @@ static int split_into_fields_for_cut (
|
||||
if (sed->e.cutf.flds == sed->e.cutf.sflds)
|
||||
{
|
||||
tmp = hawk_sed_allocmem(sed, HAWK_SIZEOF(*tmp) * nsz);
|
||||
if (tmp == HAWK_NULL) return -1;
|
||||
if (HAWK_UNLIKELY(!tmp)) return -1;
|
||||
HAWK_MEMCPY (tmp, sed->e.cutf.flds, HAWK_SIZEOF(*tmp) * sed->e.cutf.cflds);
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = hawk_sed_reallocmem(sed, sed->e.cutf.flds, HAWK_SIZEOF(*tmp) * nsz);
|
||||
if (tmp == HAWK_NULL) return -1;
|
||||
if (HAWK_UNLIKELY(!tmp)) return -1;
|
||||
}
|
||||
|
||||
sed->e.cutf.flds = tmp;
|
||||
@ -3718,7 +3716,7 @@ int hawk_sed_exec (hawk_sed_t* sed, hawk_sed_io_impl_t inf, hawk_sed_io_impl_t o
|
||||
#if defined(HAWK_ENABLE_SED_TRACER)
|
||||
if (sed->opt.tracer) sed->opt.tracer(sed, HAWK_SED_TRACER_EXEC, c);
|
||||
#endif
|
||||
j = exec_cmd (sed, c);
|
||||
j = exec_cmd(sed, c);
|
||||
if (j == HAWK_NULL) { ret = -1; goto done; }
|
||||
if (j == &sed->cmd.quit_quiet) goto done;
|
||||
if (j == &sed->cmd.quit)
|
||||
@ -3866,7 +3864,7 @@ const hawk_ooch_t* hawk_sed_setcompidwithucstr (hawk_sed_t* sed, const hawk_uch_
|
||||
len = hawk_count_oocstr(id);
|
||||
#endif
|
||||
cid = hawk_sed_allocmem(sed, HAWK_SIZEOF(*cid) + ((len + 1) * HAWK_SIZEOF(hawk_ooch_t)));
|
||||
if (cid == HAWK_NULL)
|
||||
if (HAWK_UNLIKELY(!cid))
|
||||
{
|
||||
/* mark that an error has occurred */
|
||||
sed->src.unknown_cid.buf[0] = HAWK_T('\0');
|
||||
@ -3944,7 +3942,7 @@ void hawk_sed_getspace (hawk_sed_t* sed, hawk_sed_space_t space, hawk_oocs_t* st
|
||||
void* hawk_sed_allocmem (hawk_sed_t* sed, hawk_oow_t size)
|
||||
{
|
||||
void* ptr = HAWK_MMGR_ALLOC(hawk_sed_getmmgr(sed), size);
|
||||
if (ptr == HAWK_NULL) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM);
|
||||
if (HAWK_UNLIKELY(!ptr)) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM);
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@ -3959,7 +3957,7 @@ void* hawk_sed_callocmem (hawk_sed_t* sed, hawk_oow_t size)
|
||||
void* hawk_sed_reallocmem (hawk_sed_t* sed, void* ptr, hawk_oow_t size)
|
||||
{
|
||||
void* nptr = HAWK_MMGR_REALLOC(hawk_sed_getmmgr(sed), ptr, size);
|
||||
if (nptr == HAWK_NULL) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM);
|
||||
if (HAWK_UNLIKELY(!nptr)) hawk_sed_seterrnum(sed, HAWK_NULL, HAWK_ENOMEM);
|
||||
return nptr;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user