summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_params.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2005-01-26 18:12:08 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2005-01-26 18:12:08 +0000
commit85e0b5f3770fc0bb84b080740dd578169d4e511c (patch)
treeef55f3c5749a70f8100765f9e19a1bdd43ce639d /Src/Zle/zle_params.c
parent3934f7a40208adc9334b5f957be4c5b9dee29979 (diff)
downloadzsh-85e0b5f3770fc0bb84b080740dd578169d4e511c.tar.gz
zsh-85e0b5f3770fc0bb84b080740dd578169d4e511c.zip
20752: fix access to ZLE parameters
Diffstat (limited to 'Src/Zle/zle_params.c')
-rw-r--r--Src/Zle/zle_params.c52
1 files changed, 25 insertions, 27 deletions
diff --git a/Src/Zle/zle_params.c b/Src/Zle/zle_params.c
index 0698d2c96..7ea408714 100644
--- a/Src/Zle/zle_params.c
+++ b/Src/Zle/zle_params.c
@@ -175,12 +175,8 @@ static void
set_buffer(UNUSED(Param pm), char *x)
{
if(x) {
- unmetafy(x, &zlell);
- sizeline(zlell);
- strcpy((char *)zleline, x);
+ setline(x, 0);
zsfree(x);
- if(zlecs > zlell)
- zlecs = zlell;
} else
zlecs = zlell = 0;
fixsuffix();
@@ -191,7 +187,7 @@ set_buffer(UNUSED(Param pm), char *x)
static char *
get_buffer(UNUSED(Param pm))
{
- return metafy((char *)zleline, zlell, META_HEAPDUP);
+ return (char *)zlelineasstring((char *)zleline, zlell, 0, NULL, NULL, 1);
}
/**/
@@ -238,19 +234,22 @@ get_mark(UNUSED(Param pm))
static void
set_lbuffer(UNUSED(Param pm), char *x)
{
- char *y;
+ ZLE_STRING_T y;
int len;
- if(x)
- unmetafy(y = x, &len);
+ if (x && *x != ZLENUL)
+ y = stringaszleline((unsigned char *)x, &len, NULL);
else
- y = "", len = 0;
+ y = ZLENULSTR, len = 0;
sizeline(zlell - zlecs + len);
- memmove(zleline + len, zleline + zlecs, zlell - zlecs);
- memcpy(zleline, y, len);
+ memmove((char *)(zleline + len), (char *)(zleline + zlecs),
+ (zlell - zlecs) * ZLE_CHAR_SIZE);
+ ZS_memcpy(zleline, y, len);
zlell = zlell - zlecs + len;
zlecs = len;
zsfree(x);
+ if (len)
+ free(y);
fixsuffix();
menucmp = 0;
}
@@ -259,7 +258,7 @@ set_lbuffer(UNUSED(Param pm), char *x)
static char *
get_lbuffer(UNUSED(Param pm))
{
- return metafy((char *)zleline, zlecs, META_HEAPDUP);
+ return (char *)zlelineasstring(zleline, zlecs, 0, NULL, NULL, 1);
}
/**/
@@ -269,13 +268,15 @@ set_rbuffer(UNUSED(Param pm), char *x)
char *y;
int len;
- if(x)
- unmetafy(y = x, &len);
+ if (x && *x != ZLENUL)
+ y = stringaszleline((unsigned char *)x, &len, NULL);
else
- y = "", len = 0;
+ y = ZLENULSTR, len = 0;
sizeline(zlell = zlecs + len);
- memcpy(zleline + zlecs, y, len);
+ ZS_memcpy(zleline + zlecs, y, len);
zsfree(x);
+ if (len)
+ free(y);
fixsuffix();
menucmp = 0;
}
@@ -284,7 +285,8 @@ set_rbuffer(UNUSED(Param pm), char *x)
static char *
get_rbuffer(UNUSED(Param pm))
{
- return metafy((char *)zleline + zlecs, zlell - zlecs, META_HEAPDUP);
+ return (char *)zlelineasstring(zleline + zlecs, zlell - zlecs,
+ 0, NULL, NULL, 1);
}
/**/
@@ -547,27 +549,23 @@ unset_killring(Param pm, int exp)
}
static void
-set_prepost(unsigned char **textvar, int *lenvar, char *x)
+set_prepost(ZLE_STRING_T *textvar, int *lenvar, char *x)
{
if (*lenvar) {
- zfree(*textvar, *lenvar);
+ free(*textvar);
*textvar = NULL;
*lenvar = 0;
}
if (x) {
- unmetafy(x, lenvar);
- if (*lenvar) {
- *textvar = (unsigned char *)zalloc(*lenvar);
- memcpy((char *)*textvar, x, *lenvar);
- }
+ *textvar = stringaszleline((unsigned char *)x, lenvar, NULL);
free(x);
}
}
static char *
-get_prepost(unsigned char *text, int len)
+get_prepost(ZLE_STRING_T text, int len)
{
- return metafy((char *)text, len, META_HEAPDUP);
+ return (char *)zlelineasstring(text, len, 0, NULL, NULL, 1);
}
/**/