mirror of
https://git.code.sf.net/p/zsh/code
synced 2026-01-26 11:14:28 +00:00
45729: internal: Add a second parameter to zlinklist2array(), analogously to hlinklist2array().
Will be used in the next commit.
This commit is contained in:
parent
d800c38507
commit
4d2bcf2fe7
@ -1,3 +1,10 @@
|
||||
2020-05-03 Daniel Shahaf <d.s@daniel.shahaf.name>
|
||||
|
||||
* 45729: Src/Modules/curses.c, Src/Zle/compcore.c,
|
||||
Src/Zle/computil.c, Src/builtin.c, Src/linklist.c: internal:
|
||||
Add a second parameter to zlinklist2array(), analogously to
|
||||
hlinklist2array().
|
||||
|
||||
2020-05-02 Daniel Shahaf <d.s@daniel.shahaf.name>
|
||||
|
||||
* unposted: Util/zyodl.vim: Use 'conceal' for some macros that
|
||||
|
||||
@ -1212,7 +1212,7 @@ zccmd_input(const char *nam, char **args)
|
||||
addlinknode(margs, "CTRL");
|
||||
if (mevent.bstate & BUTTON_ALT)
|
||||
addlinknode(margs, "ALT");
|
||||
if (!setaparam(args[3], zlinklist2array(margs)))
|
||||
if (!setaparam(args[3], zlinklist2array(margs, 1)))
|
||||
return 1;
|
||||
} else {
|
||||
#endif
|
||||
@ -1464,7 +1464,7 @@ zccmd_querychar(const char *nam, char **args)
|
||||
}
|
||||
|
||||
/* Turn this into an array and store it. */
|
||||
return !setaparam(args[1] ? args[1] : "reply", zlinklist2array(clist));
|
||||
return !setaparam(args[1] ? args[1] : "reply", zlinklist2array(clist, 1));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -648,7 +648,7 @@ callcompfunc(char *s, char *fn)
|
||||
if (compredirs)
|
||||
freearray(compredirs);
|
||||
if (rdstrs)
|
||||
compredirs = zlinklist2array(rdstrs);
|
||||
compredirs = zlinklist2array(rdstrs, 1);
|
||||
else
|
||||
compredirs = (char **) zshcalloc(sizeof(char *));
|
||||
|
||||
@ -1922,7 +1922,7 @@ set_comp_sep(void)
|
||||
mod_export void
|
||||
set_list_array(char *name, LinkList l)
|
||||
{
|
||||
setaparam(name, zlinklist2array(l));
|
||||
setaparam(name, zlinklist2array(l, 1));
|
||||
}
|
||||
|
||||
/* Get the words from a variable or a (list of words). */
|
||||
|
||||
@ -3591,7 +3591,7 @@ bin_compvalues(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
|
||||
if (cv_laststate.vals) {
|
||||
char **ret;
|
||||
|
||||
ret = zlinklist2array(cv_laststate.vals);
|
||||
ret = zlinklist2array(cv_laststate.vals, 1);
|
||||
sethparam(args[1], ret);
|
||||
|
||||
return 0;
|
||||
@ -4016,7 +4016,7 @@ bin_comptry(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
|
||||
|
||||
set = (Ctset) zalloc(sizeof(*set));
|
||||
|
||||
set->tags = zlinklist2array(list);
|
||||
set->tags = zlinklist2array(list, 1);
|
||||
set->next = NULL;
|
||||
set->ptr = NULL;
|
||||
set->tag = NULL;
|
||||
|
||||
@ -2280,7 +2280,7 @@ typeset_single(char *cname, char *pname, Param pm, UNUSED(int func),
|
||||
} else if (asg->flags & ASG_ARRAY) {
|
||||
int flags = (asg->flags & ASG_KEY_VALUE) ? ASSPM_KEY_VALUE : 0;
|
||||
if (!(pm = assignaparam(pname, asg->value.array ?
|
||||
zlinklist2array(asg->value.array) :
|
||||
zlinklist2array(asg->value.array, 1) :
|
||||
mkarray(NULL), flags)))
|
||||
return NULL;
|
||||
}
|
||||
@ -2442,7 +2442,7 @@ typeset_single(char *cname, char *pname, Param pm, UNUSED(int func),
|
||||
} else if (PM_TYPE(on) == PM_ARRAY && ASG_ARRAYP(asg)) {
|
||||
int flags = (asg->flags & ASG_KEY_VALUE) ? ASSPM_KEY_VALUE : 0;
|
||||
if (!(pm = assignaparam(pname, asg->value.array ?
|
||||
zlinklist2array(asg->value.array) :
|
||||
zlinklist2array(asg->value.array, 1) :
|
||||
mkarray(NULL), flags)))
|
||||
return NULL;
|
||||
dont_set = 1;
|
||||
@ -2536,7 +2536,7 @@ typeset_single(char *cname, char *pname, Param pm, UNUSED(int func),
|
||||
arrayval = mkarray(NULL);
|
||||
}
|
||||
} else if (asg->value.array)
|
||||
arrayval = zlinklist2array(asg->value.array);
|
||||
arrayval = zlinklist2array(asg->value.array, 1);
|
||||
else
|
||||
arrayval = mkarray(NULL);
|
||||
if (!(pm=assignaparam(pname, arrayval, flags)))
|
||||
@ -2923,7 +2923,7 @@ bin_typeset(char *name, char **argv, LinkList assigns, Options ops, int func)
|
||||
apm->ename = ztrdup(asg0.name);
|
||||
if (asg->value.array) {
|
||||
int flags = (asg->flags & ASG_KEY_VALUE) ? ASSPM_KEY_VALUE : 0;
|
||||
assignaparam(asg->name, zlinklist2array(asg->value.array), flags);
|
||||
assignaparam(asg->name, zlinklist2array(asg->value.array, 1), flags);
|
||||
} else if (oldval)
|
||||
assignsparam(asg0.name, oldval, 0);
|
||||
unqueue_signals();
|
||||
@ -3901,7 +3901,7 @@ bin_whence(char *nam, char **argv, Options ops, int func)
|
||||
}
|
||||
unqueue_signals();
|
||||
if (all) {
|
||||
allmatched = argv = zlinklist2array(matchednodes);
|
||||
allmatched = argv = zlinklist2array(matchednodes, 1);
|
||||
matchednodes = NULL;
|
||||
popheap();
|
||||
} else
|
||||
|
||||
@ -438,22 +438,27 @@ hlinklist2array(LinkList list, int copy)
|
||||
|
||||
/*
|
||||
* Convert a linked list whose data elements are strings to
|
||||
* an array. The result is a permanently allocated, freearrayable
|
||||
* array.
|
||||
* a permanently-allocated array. The elements of the array are the same
|
||||
* elements as the linked list data if copy is 0, else they are duplicated
|
||||
* into permanent memory so the result is a permanently allocated,
|
||||
* freearrayable array that's a deep copy of the linked list.
|
||||
*/
|
||||
|
||||
/**/
|
||||
mod_export char **
|
||||
zlinklist2array(LinkList list)
|
||||
zlinklist2array(LinkList list, int copy)
|
||||
{
|
||||
int l = countlinknodes(list);
|
||||
char **ret = (char **) zalloc((l + 1) * sizeof(char *)), **p;
|
||||
LinkNode n;
|
||||
|
||||
for (n = firstnode(list), p = ret; n; incnode(n), p++) {
|
||||
*p = ztrdup((char *) getdata(n));
|
||||
*p = (char *) getdata(n);
|
||||
if (copy)
|
||||
*p = ztrdup(*p);
|
||||
}
|
||||
*p = NULL;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user