added more code
This commit is contained in:
parent
01937d5282
commit
4896b3d82c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: str.h 110 2009-03-24 05:52:27Z hyunghwan.chung $
|
* $Id: str.h 126 2009-05-05 02:12:38Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -483,10 +483,18 @@ void qse_str_clear (
|
|||||||
);
|
);
|
||||||
/******/
|
/******/
|
||||||
|
|
||||||
|
/****f* Common/qse_str_swap
|
||||||
|
* NAME
|
||||||
|
* qse_str_swap - swap buffers of two dynamic string
|
||||||
|
* DESCRIPTION
|
||||||
|
* The qse_str_swap() function exchanges the pointers to a buffer between
|
||||||
|
* two strings. It updates the length and the capacity accordingly.
|
||||||
|
*/
|
||||||
void qse_str_swap (
|
void qse_str_swap (
|
||||||
qse_str_t* str,
|
qse_str_t* str1,
|
||||||
qse_str_t* str2
|
qse_str_t* str2
|
||||||
);
|
);
|
||||||
|
/******/
|
||||||
|
|
||||||
qse_size_t qse_str_cpy (
|
qse_size_t qse_str_cpy (
|
||||||
qse_str_t* str,
|
qse_str_t* str,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: str_dyn.c 124 2009-05-02 12:16:24Z hyunghwan.chung $
|
* $Id: str_dyn.c 126 2009-05-05 02:12:38Z hyunghwan.chung $
|
||||||
*
|
*
|
||||||
Copyright 2006-2009 Chung, Hyung-Hwan.
|
Copyright 2006-2009 Chung, Hyung-Hwan.
|
||||||
|
|
||||||
@ -222,10 +222,10 @@ qse_size_t qse_str_cpy (qse_str_t* str, const qse_char_t* s)
|
|||||||
|
|
||||||
qse_size_t qse_str_ncpy (qse_str_t* str, const qse_char_t* s, qse_size_t len)
|
qse_size_t qse_str_ncpy (qse_str_t* str, const qse_char_t* s, qse_size_t len)
|
||||||
{
|
{
|
||||||
qse_char_t* buf;
|
|
||||||
|
|
||||||
if (len > str->capa || str->ptr == QSE_NULL)
|
if (len > str->capa || str->ptr == QSE_NULL)
|
||||||
{
|
{
|
||||||
|
qse_char_t* buf;
|
||||||
|
|
||||||
buf = (qse_char_t*) QSE_MMGR_ALLOC (
|
buf = (qse_char_t*) QSE_MMGR_ALLOC (
|
||||||
str->mmgr, QSE_SIZEOF(qse_char_t) * (len + 1));
|
str->mmgr, QSE_SIZEOF(qse_char_t) * (len + 1));
|
||||||
if (buf == QSE_NULL) return (qse_size_t)-1;
|
if (buf == QSE_NULL) return (qse_size_t)-1;
|
||||||
|
@ -217,8 +217,8 @@ static void free_command (qse_sed_t* sed, qse_sed_cmd_t* cmd)
|
|||||||
switch (cmd->type)
|
switch (cmd->type)
|
||||||
{
|
{
|
||||||
case QSE_SED_CMD_A:
|
case QSE_SED_CMD_A:
|
||||||
case QSE_SED_CMD_C:
|
|
||||||
case QSE_SED_CMD_I:
|
case QSE_SED_CMD_I:
|
||||||
|
case QSE_SED_CMD_C:
|
||||||
if (cmd->u.text.ptr != QSE_NULL)
|
if (cmd->u.text.ptr != QSE_NULL)
|
||||||
QSE_MMGR_FREE (sed->mmgr, cmd->u.text.ptr);
|
QSE_MMGR_FREE (sed->mmgr, cmd->u.text.ptr);
|
||||||
break;
|
break;
|
||||||
@ -1576,6 +1576,20 @@ static int exec_cmd (qse_sed_t* sed, qse_sed_cmd_t* cmd)
|
|||||||
QSE_STR_LEN(&cmd->u.text));
|
QSE_STR_LEN(&cmd->u.text));
|
||||||
if (n <= -1) return -1;
|
if (n <= -1) return -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case QSE_SED_CMD_C:
|
||||||
|
// TODO: this behavior is wrong....
|
||||||
|
// fix this....
|
||||||
|
n = qse_str_ncpy (
|
||||||
|
&sed->eio.in.line,
|
||||||
|
QSE_STR_PTR(&cmd->u.text),
|
||||||
|
QSE_STR_LEN(&cmd->u.text));
|
||||||
|
if (n == (qse_size_t)-1)
|
||||||
|
{
|
||||||
|
sed->errnum = QSE_SED_ENOMEM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -1673,9 +1687,12 @@ int qse_sed_execute (qse_sed_t* sed, qse_sed_iof_t inf, qse_sed_iof_t outf)
|
|||||||
qse_xstr_t* t = QSE_LDA_DPTR(&sed->text_appended, i);
|
qse_xstr_t* t = QSE_LDA_DPTR(&sed->text_appended, i);
|
||||||
n = write_str (sed, t->ptr, t->len);
|
n = write_str (sed, t->ptr, t->len);
|
||||||
if (n <= -1) { ret = -1; goto done; }
|
if (n <= -1) { ret = -1; goto done; }
|
||||||
//n = write_str (sed, QSE_T("\n"), 1);
|
|
||||||
//if (n <= -1) { ret = -1; goto done; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* flush the output stream in case it's not flushed
|
||||||
|
* in write functions */
|
||||||
|
n = flush (sed);
|
||||||
|
if (n <= -1) goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
Loading…
Reference in New Issue
Block a user