Deleted Added
full compact
var.c (11997) var.c (18730)
1/*
2 * Copyright (c) 1988, 1989, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 1989 by Berkeley Softworks
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Adam de Boor.

--- 144 unchanged lines hidden (view full) ---

153static Var *VarFind __P((char *, GNode *, int));
154static void VarAdd __P((char *, char *, GNode *));
155static void VarDelete __P((ClientData));
156static Boolean VarHead __P((char *, Boolean, Buffer, ClientData));
157static Boolean VarTail __P((char *, Boolean, Buffer, ClientData));
158static Boolean VarSuffix __P((char *, Boolean, Buffer, ClientData));
159static Boolean VarRoot __P((char *, Boolean, Buffer, ClientData));
160static Boolean VarMatch __P((char *, Boolean, Buffer, ClientData));
1/*
2 * Copyright (c) 1988, 1989, 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 1989 by Berkeley Softworks
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * Adam de Boor.

--- 144 unchanged lines hidden (view full) ---

153static Var *VarFind __P((char *, GNode *, int));
154static void VarAdd __P((char *, char *, GNode *));
155static void VarDelete __P((ClientData));
156static Boolean VarHead __P((char *, Boolean, Buffer, ClientData));
157static Boolean VarTail __P((char *, Boolean, Buffer, ClientData));
158static Boolean VarSuffix __P((char *, Boolean, Buffer, ClientData));
159static Boolean VarRoot __P((char *, Boolean, Buffer, ClientData));
160static Boolean VarMatch __P((char *, Boolean, Buffer, ClientData));
161#ifdef SYSVVARSUB
161static Boolean VarSYSVMatch __P((char *, Boolean, Buffer, ClientData));
162static Boolean VarSYSVMatch __P((char *, Boolean, Buffer, ClientData));
163#endif
162static Boolean VarNoMatch __P((char *, Boolean, Buffer, ClientData));
163static Boolean VarSubstitute __P((char *, Boolean, Buffer, ClientData));
164static char *VarModify __P((char *, Boolean (*)(char *, Boolean, Buffer,
165 ClientData),
166 ClientData));
167static int VarPrintVar __P((ClientData, ClientData));
168
169/*-

--- 97 unchanged lines hidden (view full) ---

267 }
268 if ((var == NILLNODE) && (flags & FIND_ENV)) {
269 char *env;
270
271 if ((env = getenv (name)) != NULL) {
272 int len;
273
274 v = (Var *) emalloc(sizeof(Var));
164static Boolean VarNoMatch __P((char *, Boolean, Buffer, ClientData));
165static Boolean VarSubstitute __P((char *, Boolean, Buffer, ClientData));
166static char *VarModify __P((char *, Boolean (*)(char *, Boolean, Buffer,
167 ClientData),
168 ClientData));
169static int VarPrintVar __P((ClientData, ClientData));
170
171/*-

--- 97 unchanged lines hidden (view full) ---

269 }
270 if ((var == NILLNODE) && (flags & FIND_ENV)) {
271 char *env;
272
273 if ((env = getenv (name)) != NULL) {
274 int len;
275
276 v = (Var *) emalloc(sizeof(Var));
275 v->name = strdup(name);
277 v->name = estrdup(name);
276
277 len = strlen(env);
278
279 v->val = Buf_Init(len);
280 Buf_AddBytes(v->val, len, (Byte *)env);
281
282 v->flags = VAR_FROM_ENV;
283 return (v);

--- 36 unchanged lines hidden (view full) ---

320 char *val; /* value to set it to */
321 GNode *ctxt; /* context in which to set it */
322{
323 register Var *v;
324 int len;
325
326 v = (Var *) emalloc (sizeof (Var));
327
278
279 len = strlen(env);
280
281 v->val = Buf_Init(len);
282 Buf_AddBytes(v->val, len, (Byte *)env);
283
284 v->flags = VAR_FROM_ENV;
285 return (v);

--- 36 unchanged lines hidden (view full) ---

322 char *val; /* value to set it to */
323 GNode *ctxt; /* context in which to set it */
324{
325 register Var *v;
326 int len;
327
328 v = (Var *) emalloc (sizeof (Var));
329
328 v->name = strdup (name);
330 v->name = estrdup (name);
329
330 len = val ? strlen(val) : 0;
331 v->val = Buf_Init(len+1);
332 Buf_AddBytes(v->val, len, (Byte *)val);
333
334 v->flags = 0;
335
336 (void) Lst_AtFront (ctxt->context, (ClientData)v);

--- 433 unchanged lines hidden (view full) ---

770 Buf_AddByte(buf, (Byte)' ');
771 }
772 addSpace = TRUE;
773 Buf_AddBytes(buf, strlen(word), (Byte *)word);
774 }
775 return(addSpace);
776}
777
331
332 len = val ? strlen(val) : 0;
333 v->val = Buf_Init(len+1);
334 Buf_AddBytes(v->val, len, (Byte *)val);
335
336 v->flags = 0;
337
338 (void) Lst_AtFront (ctxt->context, (ClientData)v);

--- 433 unchanged lines hidden (view full) ---

772 Buf_AddByte(buf, (Byte)' ');
773 }
774 addSpace = TRUE;
775 Buf_AddBytes(buf, strlen(word), (Byte *)word);
776 }
777 return(addSpace);
778}
779
778
779
780#ifdef SYSVVARSUB
780/*-
781 *-----------------------------------------------------------------------
782 * VarSYSVMatch --
783 * Place the word in the buffer if it matches the given pattern.
784 * Callback function for VarModify to implement the System V %
785 * modifiers.
786 *
787 * Results:

--- 25 unchanged lines hidden (view full) ---

813
814 if ((ptr = Str_SYSVMatch(word, pat->lhs, &len)) != NULL)
815 Str_SYSVSubst(buf, pat->rhs, ptr, len);
816 else
817 Buf_AddBytes(buf, strlen(word), (Byte *) word);
818
819 return(addSpace);
820}
781/*-
782 *-----------------------------------------------------------------------
783 * VarSYSVMatch --
784 * Place the word in the buffer if it matches the given pattern.
785 * Callback function for VarModify to implement the System V %
786 * modifiers.
787 *
788 * Results:

--- 25 unchanged lines hidden (view full) ---

814
815 if ((ptr = Str_SYSVMatch(word, pat->lhs, &len)) != NULL)
816 Str_SYSVSubst(buf, pat->rhs, ptr, len);
817 else
818 Buf_AddBytes(buf, strlen(word), (Byte *) word);
819
820 return(addSpace);
821}
822#endif
821
822
823/*-
824 *-----------------------------------------------------------------------
825 * VarNoMatch --
826 * Place the word in the buffer if it doesn't match the given pattern.
827 * Callback function for VarModify to implement the :N modifier.
828 *

--- 266 unchanged lines hidden (view full) ---

1095{
1096 register char *tstr; /* Pointer into str */
1097 Var *v; /* Variable in invocation */
1098 register char *cp; /* Secondary pointer into str (place marker
1099 * for tstr) */
1100 Boolean haveModifier;/* TRUE if have modifiers for the variable */
1101 register char endc; /* Ending character when variable in parens
1102 * or braces */
823
824
825/*-
826 *-----------------------------------------------------------------------
827 * VarNoMatch --
828 * Place the word in the buffer if it doesn't match the given pattern.
829 * Callback function for VarModify to implement the :N modifier.
830 *

--- 266 unchanged lines hidden (view full) ---

1097{
1098 register char *tstr; /* Pointer into str */
1099 Var *v; /* Variable in invocation */
1100 register char *cp; /* Secondary pointer into str (place marker
1101 * for tstr) */
1102 Boolean haveModifier;/* TRUE if have modifiers for the variable */
1103 register char endc; /* Ending character when variable in parens
1104 * or braces */
1103 register char startc; /* Starting character when variable in parens
1105 register char startc=0; /* Starting character when variable in parens
1104 * or braces */
1105 int cnt; /* Used to count brace pairs when variable in
1106 * in parens or braces */
1107 char *start;
1108 Boolean dynamic; /* TRUE if the variable is local and we're
1109 * expanding it in a non-local context. This
1110 * is done to support dynamic sources. The
1111 * result is just the invocation, unaltered */

--- 500 unchanged lines hidden (view full) ---

1612 case 'R':
1613 if (tstr[1] == endc || tstr[1] == ':') {
1614 newStr = VarModify (str, VarRoot, (ClientData)0);
1615 cp = tstr + 1;
1616 termc = *cp;
1617 break;
1618 }
1619 /*FALLTHRU*/
1106 * or braces */
1107 int cnt; /* Used to count brace pairs when variable in
1108 * in parens or braces */
1109 char *start;
1110 Boolean dynamic; /* TRUE if the variable is local and we're
1111 * expanding it in a non-local context. This
1112 * is done to support dynamic sources. The
1113 * result is just the invocation, unaltered */

--- 500 unchanged lines hidden (view full) ---

1614 case 'R':
1615 if (tstr[1] == endc || tstr[1] == ':') {
1616 newStr = VarModify (str, VarRoot, (ClientData)0);
1617 cp = tstr + 1;
1618 termc = *cp;
1619 break;
1620 }
1621 /*FALLTHRU*/
1620 default: {
1622#ifdef SUNSHCMD
1623 case 's':
1624 if (tstr[1] == 'h' && (tstr[2] == endc || tstr[2] == ':')) {
1625 char *err;
1626 newStr = Cmd_Exec (str, &err);
1627 if (err)
1628 Error (err, str);
1629 cp = tstr + 2;
1630 termc = *cp;
1631 break;
1632 }
1633 /*FALLTHRU*/
1634#endif
1635 default:
1636 {
1637#ifdef SYSVVARSUB
1621 /*
1622 * This can either be a bogus modifier or a System-V
1623 * substitution command.
1624 */
1625 VarPattern pattern;
1626 Boolean eqFound;
1627
1628 pattern.flags = 0;

--- 50 unchanged lines hidden (view full) ---

1679 (ClientData)&pattern);
1680
1681 /*
1682 * Restore the nulled characters
1683 */
1684 pattern.lhs[pattern.leftLen] = '=';
1685 pattern.rhs[pattern.rightLen] = endc;
1686 termc = endc;
1638 /*
1639 * This can either be a bogus modifier or a System-V
1640 * substitution command.
1641 */
1642 VarPattern pattern;
1643 Boolean eqFound;
1644
1645 pattern.flags = 0;

--- 50 unchanged lines hidden (view full) ---

1696 (ClientData)&pattern);
1697
1698 /*
1699 * Restore the nulled characters
1700 */
1701 pattern.lhs[pattern.leftLen] = '=';
1702 pattern.rhs[pattern.rightLen] = endc;
1703 termc = endc;
1687 } else {
1704 } else
1705#endif
1706 {
1688 Error ("Unknown modifier '%c'\n", *tstr);
1689 for (cp = tstr+1;
1690 *cp != ':' && *cp != endc && *cp != '\0';
1691 cp++)
1692 continue;
1693 termc = *cp;
1694 newStr = var_Error;
1695 }

--- 328 unchanged lines hidden ---
1707 Error ("Unknown modifier '%c'\n", *tstr);
1708 for (cp = tstr+1;
1709 *cp != ':' && *cp != endc && *cp != '\0';
1710 cp++)
1711 continue;
1712 termc = *cp;
1713 newStr = var_Error;
1714 }

--- 328 unchanged lines hidden ---