1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-28 17:10:59 +01:00

12138: setting arrays in math context

This commit is contained in:
Peter Stephenson 2000-07-03 10:10:07 +00:00
parent 43f3a58597
commit a7f0716ddb
3 changed files with 38 additions and 13 deletions

View file

@ -1898,7 +1898,7 @@ setiparam(char *s, zlong val)
{
struct value vbuf;
Value v;
char *t = s;
char *t = s, *ss;
Param pm;
mnumber mnval;
@ -1908,10 +1908,18 @@ setiparam(char *s, zlong val)
return NULL;
}
if (!(v = getvalue(&vbuf, &s, 1))) {
pm = createparam(t, PM_INTEGER);
if ((ss = strchr(s, '[')))
*ss = '\0';
pm = createparam(t, ss ? PM_ARRAY : PM_INTEGER);
DPUTS(!pm, "BUG: parameter not created");
pm->u.val = val;
return pm;
if (ss) {
*ss = '[';
v = getvalue(&vbuf, &t, 1);
DPUTS(!v, "BUG: value not found for new parameter");
} else {
pm->u.val = val;
return pm;
}
}
mnval.type = MN_INTEGER;
mnval.u.l = val;
@ -1930,7 +1938,7 @@ setnparam(char *s, mnumber val)
{
struct value vbuf;
Value v;
char *t = s;
char *t = s, *ss = NULL;
Param pm;
if (!isident(s)) {
@ -1939,15 +1947,23 @@ setnparam(char *s, mnumber val)
return NULL;
}
if (!(v = getvalue(&vbuf, &s, 1))) {
pm = createparam(t, (val.type & MN_INTEGER) ? PM_INTEGER
: PM_FFLOAT);
if ((ss = strchr(s, '[')))
*ss = '\0';
pm = createparam(t, ss ? PM_ARRAY :
(val.type & MN_INTEGER) ? PM_INTEGER : PM_FFLOAT);
DPUTS(!pm, "BUG: parameter not created");
if (val.type & MN_INTEGER) {
pm->ct = outputradix;
pm->u.val = val.u.l;
} else
pm->u.dval = val.u.d;
return pm;
if (ss) {
*ss = '[';
v = getvalue(&vbuf, &t, 1);
DPUTS(!v, "BUG: value not found for new parameter");
} else {
if (val.type & MN_INTEGER) {
pm->ct = outputradix;
pm->u.val = val.u.l;
} else
pm->u.dval = val.u.d;
return pm;
}
}
setnumvalue(v, val);
return v->pm;