• Home
  • Raw
  • Download

Lines Matching +full:set +full:- +full:job +full:- +full:env +full:- +full:vars

3 /*-
11 * is granted to deal in this work without restriction, including un-
34 /*-
41 * if (flag&EXPORT), val.s contains "name=value" for E-Z exporting.
46 /* may only be set by typeset() just before call to array_index_calc() */
65 * assume caller has allocated and set up e->loc
74 l->flags = 0; in newblock()
75 /* TODO: could use e->area (l->area => l->areap) */ in newblock()
76 ainit(&l->area); in newblock()
77 if (!e->loc) { in newblock()
78 l->argc = 0; in newblock()
79 l->argv = empty; in newblock()
81 l->argc = e->loc->argc; in newblock()
82 l->argv = e->loc->argv; in newblock()
84 l->exit = l->error = NULL; in newblock()
85 ktinit(&l->area, &l->vars, 0); in newblock()
86 ktinit(&l->area, &l->funs, 0); in newblock()
87 l->next = e->loc; in newblock()
88 e->loc = l; in newblock()
98 struct block *l = e->loc; in popblock()
99 struct tbl *vp, **vpp = l->vars.tbls, *vq; in popblock()
102 e->loc = l->next; in popblock()
104 i = 1 << (l->vars.tshift); in popblock()
105 while (--i >= 0) in popblock()
106 if ((vp = *vpp++) != NULL && (vp->flag&SPECIAL)) { in popblock()
107 if ((vq = global(vp->name))->flag & ISSET) in popblock()
112 if (l->flags & BF_DOGETOPTS) in popblock()
113 user_opt = l->getopts_state; in popblock()
114 afreeall(&l->area); in popblock()
128 /* this is biased with -1 relative to VARSPEC_ENUMS */
143 while (i < V_MAX - 1) { in initvar()
146 tp->flag = DEFINED|ISSET; in initvar()
147 tp->type = ++i; in initvar()
159 if ((vp = ktsearch(&l->vars, vn, h)) != NULL) in varsearch()
161 if (l->next != NULL) { in varsearch()
162 l = l->next; in varsearch()
192 strndupx(vn, n, p - n, ATEMP); in array_index_calc()
194 varsearch(e->loc, &vp, vn, hash(vn)); in array_index_calc()
196 if (vp && (vp->flag & (DEFINED | ASSOC | ARRAY)) == in array_index_calc()
212 size_t tmplen = p - n; in array_index_calc()
216 len -= 2; in array_index_calc()
247 struct block *l = e->loc; in isglobal()
263 vp->flag = DEFINED; in isglobal()
264 vp->type = 0; in isglobal()
265 vp->areap = ATEMP; in isglobal()
269 shf_snprintf(vp->name, 12, Tf_d, c); in isglobal()
270 if (c <= l->argc) { in isglobal()
272 setstr(vp, l->argv[c], in isglobal()
276 vp->name[0] = '\0'; in isglobal()
277 vp->flag |= RDONLY; in isglobal()
280 vp->name[0] = c; in isglobal()
281 vp->name[1] = '\0'; in isglobal()
282 vp->flag |= RDONLY; in isglobal()
285 vp->flag |= ISSET|INTEGER; in isglobal()
288 vp->val.i = kshpid; in isglobal()
291 /* if no job, expand to nothing */ in isglobal()
292 if ((vp->val.i = j_async()) == 0) in isglobal()
293 vp->flag &= ~(ISSET|INTEGER); in isglobal()
296 vp->val.i = exstat & 0xFF; in isglobal()
299 vp->val.i = l->argc; in isglobal()
301 case '-': in isglobal()
302 vp->flag &= ~INTEGER; in isglobal()
303 vp->val.s = getoptions(); in isglobal()
306 vp->flag &= ~(ISSET|INTEGER); in isglobal()
310 l = varsearch(e->loc, &vp, vn, h); in isglobal()
312 vp = ktenter(&l->vars, vn, h); in isglobal()
319 vp->flag |= DEFINED; in isglobal()
321 vp->flag |= SPECIAL; in isglobal()
339 struct block *l = e->loc; in local()
351 vp->flag = DEFINED|RDONLY; in local()
352 vp->type = 0; in local()
353 vp->areap = ATEMP; in local()
356 vp = ktenter(&l->vars, vn, h); in local()
357 if (copy && !(vp->flag & DEFINED)) { in local()
360 varsearch(l->next, &vq, vn, h); in local()
362 vp->flag |= vq->flag & in local()
365 if (vq->flag & INTEGER) in local()
366 vp->type = vq->type; in local()
367 vp->u2.field = vq->u2.field; in local()
372 vp->flag |= DEFINED; in local()
374 vp->flag |= SPECIAL; in local()
389 if ((vp->flag&SPECIAL)) in str_val()
391 if (!(vp->flag&ISSET)) in str_val()
394 else if (!(vp->flag&INTEGER)) in str_val()
396 s = vp->val.s + vp->type; in str_val()
407 const char *digits = (vp->flag & UCASEV_AL) ? in str_val()
411 if (vp->flag & INT_U) in str_val()
412 n = vp->val.u; in str_val()
414 n = (vp->val.i < 0) ? -vp->val.u : vp->val.u; in str_val()
415 base = (vp->type == 0) ? 10U : (unsigned int)vp->type; in str_val()
427 /* OPTU-16 -> raw octet */ in str_val()
433 *--s = '\0'; in str_val()
435 *--s = digits[n % base]; in str_val()
439 *--s = '#'; in str_val()
440 *--s = digits[base % 10]; in str_val()
442 *--s = digits[base / 10]; in str_val()
444 if (!(vp->flag & INT_U) && vp->val.i < 0) in str_val()
445 *--s = '-'; in str_val()
447 if (vp->flag & (RJUST|LJUST)) in str_val()
456 /* set variable to string value */
463 if ((vq->flag & RDONLY) && !no_ro_check) { in setstr()
464 warningf(true, Tf_ro, vq->name); in setstr()
469 if (!(vq->flag&INTEGER)) { in setstr()
473 if ((vq->flag&ALLOC)) { in setstr()
474 cursz = strlen(vq->val.s) + 1; in setstr()
477 if (s >= vq->val.s && s < (vq->val.s + cursz)) { in setstr()
480 vq->name, s); in setstr()
485 if (s && (vq->flag & (UCASEV_AL|LCASEV|LJUST|RJUST))) in setstr()
487 if ((vq->flag&EXPORT)) in setstr()
491 vq->val.s = aresizeif(cursz, (vq->flag & ALLOC) ? in setstr()
492 vq->val.s : NULL, n, vq->areap); in setstr()
493 memcpy(vq->val.s, s, n); in setstr()
494 vq->flag |= ALLOC; in setstr()
495 vq->type = 0; in setstr()
503 vq->flag |= ISSET; in setstr()
504 if ((vq->flag&SPECIAL)) in setstr()
509 /* set variable to integer */
513 if (!(vq->flag&INTEGER)) { in setint()
514 vtemp->flag = (ISSET|INTEGER); in setint()
515 vtemp->type = 0; in setint()
516 vtemp->areap = ATEMP; in setint()
517 vtemp->val.i = n; in setint()
521 vq->val.i = n; in setint()
522 vq->flag |= ISSET; in setint()
523 if ((vq->flag&SPECIAL)) in setint()
534 if (vp->flag & SPECIAL) in getint()
536 /* XXX is it possible for ISSET to be set and val.s to be NULL? */ in getint()
537 if (!(vp->flag & ISSET) || (!(vp->flag & INTEGER) && vp->val.s == NULL)) in getint()
538 return (-1); in getint()
539 if (vp->flag & INTEGER) { in getint()
540 nump->i = vp->val.i; in getint()
541 return (vp->type); in getint()
543 s = vp->val.s + vp->type; in getint()
550 case '-': in getint()
565 !(vp->flag & ZEROFIL)) { in getint()
576 /* ksh-style base determination */ in getint()
578 return (-1); in getint()
580 /* mksh-specific extension */ in getint()
585 else if (utf_mbtowc(&wc, s) == (size_t)-1) in getint()
586 /* OPTU-8 -> OPTU-16 */ in getint()
590 * not round-tripping correctly XXX) in getint()
593 nump->u = (mksh_uari_t)wc; in getint()
608 return (-1); in getint()
610 return (-1); in getint()
616 num = -num; in getint()
617 nump->u = num; in getint()
631 if ((base = getint(vp, &num, arith)) == -1) in setint_v()
634 if (vq->type == 0) in setint_v()
636 vq->type = base; in setint_v()
644 if (!(vq->flag & INTEGER) && (vq->flag & ALLOC)) { in setint_n()
645 vq->flag &= ~ALLOC; in setint_n()
646 vq->type = 0; in setint_n()
647 afree(vq->val.s, vq->areap); in setint_n()
649 vq->val.i = num; in setint_n()
651 vq->type = newbase; in setint_n()
652 vq->flag |= ISSET|INTEGER; in setint_n()
653 if (vq->flag&SPECIAL) in setint_n()
666 if (vp->flag & (RJUST|LJUST)) { in formatstr()
667 if (!vp->u2.field) in formatstr()
669 vp->u2.field = olen; in formatstr()
670 nlen = vp->u2.field; in formatstr()
675 if (vp->flag & (RJUST|LJUST)) { in formatstr()
678 if (vp->flag & RJUST) { in formatstr()
684 /* strip trailing spaces (AT&T uses qq[-1] == ' ') */ in formatstr()
685 while (qq > s && ctype(qq[-1], C_SPACE)) { in formatstr()
686 --qq; in formatstr()
687 --slen; in formatstr()
689 if (vp->flag & ZEROFIL && vp->flag & INTEGER) { in formatstr()
697 if (vp->u2.field <= n) in formatstr()
704 while (slen > vp->u2.field) in formatstr()
705 slen -= utf_widthadj(s, &s); in formatstr()
706 if (vp->u2.field - slen) in formatstr()
707 memset(p + n, (vp->flag & ZEROFIL) ? '0' : ' ', in formatstr()
708 vp->u2.field - slen); in formatstr()
709 slen -= n; in formatstr()
710 shf_snprintf(p + vp->u2.field - slen, in formatstr()
711 psiz - (vp->u2.field - slen), in formatstr()
717 if (vp->flag & ZEROFIL) in formatstr()
720 shf_snprintf(p, psiz, "%-*.*s", in formatstr()
721 vp->u2.field, vp->u2.field, s); in formatstr()
726 if (vp->flag & UCASEV_AL) { in formatstr()
729 } else if (vp->flag & LCASEV) { in formatstr()
738 * make vp->val.s be "name=value" for quick exporting.
743 char *cp = (vp->flag & ALLOC) ? vp->val.s : NULL; in exportprep()
744 size_t namelen = strlen(vp->name); in exportprep()
747 vp->flag |= ALLOC; in exportprep()
748 vp->type = namelen + 1; in exportprep()
750 vp->val.s = aresizeif(cursz, cp, vp->type + vallen, vp->areap); in exportprep()
751 memmove(vp->val.s + vp->type, val == cp ? vp->val.s : val, vallen); in exportprep()
752 memcpy(vp->val.s, vp->name, namelen); in exportprep()
753 vp->val.s[namelen] = '='; in exportprep()
757 * lookup variable (according to (set&LOCAL)), set its attributes
759 * UCASEV_AL), and optionally set its value if an assignment.
762 typeset(const char *var, uint32_t set, uint32_t clr, int field, int base) in typeset() argument
764 return (vtypeset(NULL, var, set, clr, field, base)); in typeset()
767 vtypeset(int *ep, const char *var, uint32_t set, uint32_t clr, in vtypeset() argument
781 if ((set & (ARRAY | ASSOC)) == ASSOC) { in vtypeset()
783 set &= ~(ARRAY | ASSOC); in vtypeset()
810 if (set & IMPORT) { in vtypeset()
813 for (i = 1; i < len - 1; i++) in vtypeset()
820 len = val - var; in vtypeset()
825 } else if (set & IMPORT) { in vtypeset()
829 len = val - var; in vtypeset()
846 if (len > 3 && ord(tvar[len - 3]) == ORD('[') && in vtypeset()
847 ord(tvar[len - 2]) == ORD('*') && in vtypeset()
848 ord(tvar[len - 1]) == ORD(']')) in vtypeset()
849 tvar[len - 3] = '\0'; in vtypeset()
861 varsearch(e->loc, &vp, tvar, hash(tvar)); in vtypeset()
880 case '-': in vtypeset()
903 varsearch(e->loc, &vp, qval, hash(qval)); in vtypeset()
905 if (vp && ((vp->flag & (ARRAY | ASSOC)) == ASSOC)) in vtypeset()
910 /* prevent typeset from creating a local PATH/ENV/SHELL */ in vtypeset()
917 vp = (set & LOCAL) ? local(tvar, tobool(set & LOCAL_COPY)) : in vtypeset()
919 if (new_refflag == SRF_DISABLE && (vp->flag & (ARRAY|ASSOC)) == ASSOC) in vtypeset()
920 vp->flag &= ~ASSOC; in vtypeset()
922 if (vp->flag & ARRAY) { in vtypeset()
926 for (a = vp->u.array; a; ) { in vtypeset()
928 a = a->u.array; in vtypeset()
929 if (tmp->flag & ALLOC) in vtypeset()
930 afree(tmp->val.s, tmp->areap); in vtypeset()
931 afree(tmp, tmp->areap); in vtypeset()
933 vp->u.array = NULL; in vtypeset()
934 vp->flag &= ~ARRAY; in vtypeset()
936 vp->flag |= ASSOC; in vtypeset()
939 set &= ~(LOCAL|LOCAL_COPY); in vtypeset()
941 vpbase = (vp->flag & ARRAY) ? arraybase(tvar) : vp; in vtypeset()
944 * only allow export and readonly flag to be set; AT&T ksh in vtypeset()
946 * truncated or modified (-L/-R/-Z/-i) in vtypeset()
948 if ((vpbase->flag & RDONLY) && in vtypeset()
949 (val || clr || (set & ~(EXPORT | RDONLY)))) in vtypeset()
954 /* most calls are with set/clr == 0 */ in vtypeset()
955 if (set | clr) { in vtypeset()
959 * XXX if x[0] isn't set, there will be problems: need in vtypeset()
962 for (t = vpbase; t; t = t->u.array) { in vtypeset()
967 fake_assign = (t->flag & ISSET) && (!val || t != vp) && in vtypeset()
968 ((set & (UCASEV_AL|LCASEV|LJUST|RJUST|ZEROFIL)) || in vtypeset()
969 ((t->flag & INTEGER) && (clr & INTEGER)) || in vtypeset()
970 (!(t->flag & INTEGER) && (set & INTEGER))); in vtypeset()
972 if (t->flag & INTEGER) { in vtypeset()
976 s = t->val.s + t->type; in vtypeset()
977 free_me = (t->flag & ALLOC) ? t->val.s : in vtypeset()
980 t->flag &= ~ALLOC; in vtypeset()
982 if (!(t->flag & INTEGER) && (set & INTEGER)) { in vtypeset()
983 t->type = 0; in vtypeset()
984 t->flag &= ~ALLOC; in vtypeset()
986 t->flag = (t->flag | set) & ~clr; in vtypeset()
991 if ((set & INTEGER) && base > 0 && (!val || t != vp)) in vtypeset()
992 t->type = base; in vtypeset()
993 if (set & (LJUST|RJUST|ZEROFIL)) in vtypeset()
994 t->u2.field = field; in vtypeset()
1004 if (t->flag & INTEGER) in vtypeset()
1005 t->flag &= ~ISSET; in vtypeset()
1007 if (t->flag & ALLOC) in vtypeset()
1008 afree(t->val.s, t->areap); in vtypeset()
1009 t->flag &= ~(ISSET|ALLOC); in vtypeset()
1010 t->type = 0; in vtypeset()
1013 afree(free_me, t->areap); in vtypeset()
1022 if ((vp->flag & (ISSET|ALLOC|SPECIAL|INTEGER|UCASEV_AL|LCASEV|LJUST|RJUST)) != (ISSET|ALLOC)) { in vtypeset()
1023 /* cannot special-case this */ in vtypeset()
1029 len = strlen(vp->val.s); in vtypeset()
1031 vp->val.s = aresize(vp->val.s, len + tlen, vp->areap); in vtypeset()
1032 memcpy(vp->val.s + len, val, tlen); in vtypeset()
1035 if (vp->flag&INTEGER) { in vtypeset()
1040 vp->type = base; in vtypeset()
1051 if ((vpbase->flag & (EXPORT|INTEGER)) == EXPORT && in vtypeset()
1052 vpbase->type == 0) in vtypeset()
1053 exportprep(vpbase, (vpbase->flag & ISSET) ? in vtypeset()
1054 vpbase->val.s : null, 0); in vtypeset()
1067 if (vp->flag & ALLOC) in unset()
1068 afree(vp->val.s, vp->areap); in unset()
1069 if ((vp->flag & ARRAY) && (flags & 1)) { in unset()
1073 for (a = vp->u.array; a; ) { in unset()
1075 a = a->u.array; in unset()
1076 if (tmp->flag & ALLOC) in unset()
1077 afree(tmp->val.s, tmp->areap); in unset()
1078 afree(tmp, tmp->areap); in unset()
1080 vp->u.array = NULL; in unset()
1083 vp->flag &= ~(ALLOC|ISSET); in unset()
1087 vp->flag &= SPECIAL | ((flags & 1) ? 0 : ARRAY|DEFINED); in unset()
1088 if (vp->flag & SPECIAL) in unset()
1116 /* skip array de-reference? */ in skip_wdvarname()
1124 /* skip possible array de-reference */ in skip_wdvarname()
1136 else if (ord(c) == ORD(']') && --depth == 0) { in skip_wdvarname()
1177 for (l = e->loc; l != NULL; l = l->next) { in makenv()
1178 vpp = l->vars.tbls; in makenv()
1179 i = 1 << (l->vars.tshift); in makenv()
1180 while (--i >= 0) in makenv()
1182 (vp->flag&(ISSET|EXPORT)) == (ISSET|EXPORT)) { in makenv()
1185 uint32_t h = hash(vp->name); in makenv()
1188 for (l2 = l->next; l2 != NULL; l2 = l2->next) { in makenv()
1189 vp2 = ktsearch(&l2->vars, vp->name, h); in makenv()
1191 vp2->flag &= ~EXPORT; in makenv()
1193 if ((vp->flag&INTEGER)) { in makenv()
1197 vp->flag &= ~(INTEGER|RDONLY|SPECIAL); in makenv()
1203 if (!strcmp(vp->name, "BEGINLIBPATH") || in makenv()
1204 !strcmp(vp->name, "ENDLIBPATH") || in makenv()
1205 !strcmp(vp->name, "LIBPATHSTRICT")) in makenv()
1208 XPput(denv, vp->val.s); in makenv()
1210 if (l->flags & BF_STOPENV) in makenv()
1218 * handle special variables with side effects - PATH, SECONDS.
1228 return (tp && (tp->flag & ISSET) ? tp->type : V_NONE); in special()
1231 /* Make a variable non-special */
1242 static time_t seconds; /* time SECONDS last set */
1243 static mksh_uari_t user_lineno; /* what user set $LINENO to */
1256 switch ((st = special(vp->name))) { in getspec()
1290 vp->flag &= ~SPECIAL; in getspec()
1295 vp->flag |= SPECIAL; in getspec()
1307 * it has been set - don't do anything in this case in getspec()
1310 if (vp->flag & ISSET) { in getspec()
1312 num.i = tv.tv_sec - seconds; in getspec()
1320 vp->flag &= ~SPECIAL; in getspec()
1322 vp->flag |= SPECIAL; in getspec()
1330 int st = special(vp->name); in setspec()
1341 if (!(vp->flag&INTEGER)) { in setspec()
1357 setextlibpath(vp->name, str_val(vp)); in setspec()
1397 /* common sub-cases */ in setspec()
1400 if (vp->flag & IMPORT) { in setspec()
1402 unspecial(vp->name); in setspec()
1403 vp->flag &= ~SPECIAL; in setspec()
1413 vp->flag &= ~SPECIAL; in setspec()
1414 if (getint(vp, &num, false) == -1) { in setspec()
1417 errorf(Tf_sD_sD_s, vp->name, Tbadnum, s); in setspec()
1420 vp->flag |= SPECIAL; in setspec()
1445 /* The -1 is because line numbering starts at 1. */ in setspec()
1446 user_lineno = num.u - (mksh_uari_t)current_lineno - 1; in setspec()
1467 seconds = tv.tv_sec - num.i; in setspec()
1481 * meaning, but OPTARG does not (still set by getopts) and _ is in unsetspec()
1482 * also still set in various places. Don't know what AT&T does in unsetspec()
1487 switch (special(vp->name)) { in unsetspec()
1492 setextlibpath(vp->name, ""); in unsetspec()
1526 unspecial(vp->name); in unsetspec()
1539 unspecial(vp->name); in unsetspec()
1554 vp->flag = (vp->flag | (ARRAY | DEFINED)) & ~ASSOC; in arraysearch()
1559 curr = vp->u.array; in arraysearch()
1560 while (curr && curr->ua.index < val) { in arraysearch()
1562 curr = curr->u.array; in arraysearch()
1564 if (curr && curr->ua.index == val) { in arraysearch()
1565 if (curr->flag&ISSET) in arraysearch()
1571 len = strlen(vp->name); in arraysearch()
1573 news = alloc(offsetof(struct tbl, name[0]) + ++len, vp->areap); in arraysearch()
1574 memcpy(news->name, vp->name, len); in arraysearch()
1576 news->flag = (vp->flag & ~(ALLOC|DEFINED|ISSET|SPECIAL)) | AINDEX; in arraysearch()
1577 news->type = vp->type; in arraysearch()
1578 news->areap = vp->areap; in arraysearch()
1579 news->u2.field = vp->u2.field; in arraysearch()
1580 news->ua.index = val; in arraysearch()
1584 prev->u.array = news; in arraysearch()
1585 news->u.array = curr; in arraysearch()
1591 * Return the length of an array reference (eg, [1+2]) - cp is assumed
1604 while ((c = *s++) && (ord(c) != ORD(']') || --depth)) in array_ref_len()
1609 return (s - cp); in array_ref_len()
1626 strndupx(s, str, p - str, ATEMP); in arraybase()
1633 /* set (or overwrite, if reset) the array variable var to the values in vals */
1643 /* to get local array, use "local foo; set -A foo" */ in set_array()
1645 if (n > 0 && var[n - 1] == '+') { in set_array()
1648 strndupx(cp, var, n - 1, ATEMP); in set_array()
1653 /* Note: AT&T ksh allows set -A but not set +A of a read-only var */ in set_array()
1654 if ((vp->flag&RDONLY)) in set_array()
1656 /* This code is quite non-optimal */ in set_array()
1660 /* allocate-by-access the [0] element to keep in scope */ in set_array()
1662 /* honour set -o allexport */ in set_array()
1672 /* find out where to set when appending */ in set_array()
1673 for (vq = vp; vq; vq = vq->u.array) { in set_array()
1674 if (!(vq->flag & ISSET)) in set_array()
1687 if (ord(*ccp) == ORD(']') && --level == 0) in set_array()
1695 strndupx(cp, vals[i] + 1, ccp - (vals[i] + 1), in set_array()
1784 * C/C++ allegedly uses in its built-in rand() function in rndget()
1864 vp->flag = DEFINED | RDONLY; in record_match()
1895 /* set */ in c_typeset()
1897 /* called with 'typeset -' */ in c_typeset()
1911 * AT&T ksh seems to have 0-9 as options which are multiplied in c_typeset()
1912 * to get a number that is used with -L, -R, -Z or -i (eg, -1R2 in c_typeset()
1914 * to be grouped in an order (eg, -Lu12), but disallows -i8 -L3 and in c_typeset()
1919 while ((i = ksh_getopt(wp, &builtin_opt, opts)) != -1) { in c_typeset()
1934 * need to change the -U below as well in c_typeset()
1944 * this is supposed to set (-a) or unset (+a) the in c_typeset()
1966 /* export, readonly: POSIX -p flag */ in c_typeset()
1996 thing = '-'; in c_typeset()
2014 (wp[builtin_opt.optind][0] == '-' || in c_typeset()
2023 bi_errorf("only -t, -u and -x options may be used with -f"); in c_typeset()
2039 /* -Z implies -ZR */ in c_typeset()
2045 * are also set in this command in c_typeset()
2061 /* set variables and attributes */ in c_typeset()
2063 /* not "typeset -p varname" */ in c_typeset()
2080 f->flag |= fset; in c_typeset()
2081 f->flag &= ~fclr; in c_typeset()
2084 tobool(f->flag & FKSH), in c_typeset()
2085 wp[i], f->val.t); in c_typeset()
2104 for (l = e->loc; l; l = l->next) { in c_typeset()
2105 for (p = ktsort(&l->funs); (vp = *p++); ) { in c_typeset()
2106 if (flag && (vp->flag & flag) == 0) in c_typeset()
2108 if (thing == '-') in c_typeset()
2110 tobool(vp->flag & FKSH), in c_typeset()
2111 vp->name, vp->val.t); in c_typeset()
2113 shf_puts(vp->name, shl_stdout); in c_typeset()
2124 c_typeset_vardump_recursive(e->loc, flag, thing, pflag, istset); in c_typeset()
2134 if (l->next) in c_typeset_vardump_recursive()
2135 c_typeset_vardump_recursive(l->next, flag, thing, pflag, istset); in c_typeset_vardump_recursive()
2136 blockvars = ktsort(&l->vars); in c_typeset_vardump_recursive()
2153 * See if the parameter is set (for arrays, if any in c_typeset_vardump()
2154 * element is set). in c_typeset_vardump()
2156 for (tvp = vp; tvp; tvp = tvp->u.array) in c_typeset_vardump()
2157 if (tvp->flag & ISSET) { in c_typeset_vardump()
2163 * Check attributes - note that all array elements in c_typeset_vardump()
2171 if (!any_set && !(vp->flag & USERATTRIB)) in c_typeset_vardump()
2173 if (flag && (vp->flag & flag) == 0) in c_typeset_vardump()
2175 if (!(vp->flag & ARRAY)) in c_typeset_vardump()
2180 * Ignore array elements that aren't set unless there in c_typeset_vardump()
2181 * are no set elements, in which case the first is in c_typeset_vardump()
2184 if (any_set && !(vp->flag & ISSET)) in c_typeset_vardump()
2189 shprintf(Tf_s_s_sN, Tset, "-A", vp->name); in c_typeset_vardump()
2195 * be suitable for re-entry... in c_typeset_vardump()
2198 if (((vp->flag & (ARRAY | ASSOC)) == ASSOC)) in c_typeset_vardump()
2200 if ((vp->flag & INTEGER)) in c_typeset_vardump()
2202 if ((vp->flag & EXPORT)) in c_typeset_vardump()
2204 if ((vp->flag & RDONLY)) in c_typeset_vardump()
2206 if ((vp->flag & TRACE)) in c_typeset_vardump()
2208 if ((vp->flag & LJUST)) in c_typeset_vardump()
2209 shprintf("-L%d ", vp->u2.field); in c_typeset_vardump()
2210 if ((vp->flag & RJUST)) in c_typeset_vardump()
2211 shprintf("-R%d ", vp->u2.field); in c_typeset_vardump()
2212 if ((vp->flag & ZEROFIL)) in c_typeset_vardump()
2214 if ((vp->flag & LCASEV)) in c_typeset_vardump()
2216 if ((vp->flag & UCASEV_AL)) in c_typeset_vardump()
2218 if ((vp->flag & INT_U)) in c_typeset_vardump()
2225 shprintf("%s[%lu]", vp->name, arrayindex(vp)); in c_typeset_vardump()
2227 shf_puts(vp->name, shl_stdout); in c_typeset_vardump()
2229 (thing == '-' && (vp->flag & ISSET))) { in c_typeset_vardump()
2233 if ((vp->flag & (INTEGER | LJUST | RJUST)) == INTEGER) in c_typeset_vardump()
2242 * no set elements. in c_typeset_vardump()
2246 } while (!(any_set & 4) && (vp = vp->u.array)); in c_typeset_vardump()