1 # include <sysexits.h>
2 # include "useful.h"
3 
4 static char	SccsId[] = "@(#)util.c	1.2	07/25/80";
5 
6 /*
7 **  UTIL.C -- General Purpose Routines
8 **
9 **	Defines:
10 **		stripquotes
11 **		xalloc
12 **		any
13 */
14 /*
15 **  STRIPQUOTES -- Strip quotes & quote bits from a string.
16 **
17 **	Runs through a string and strips off unquoted quote
18 **	characters and quote bits.  This is done in place.
19 **
20 **	Parameters:
21 **		s -- the string to strip.
22 **
23 **	Returns:
24 **		none.
25 **
26 **	Side Effects:
27 **		none.
28 **
29 **	Requires:
30 **		none.
31 **
32 **	Called By:
33 **		deliver
34 **
35 **	History:
36 **		3/5/80 -- written.
37 */
38 
39 stripquotes(s)
40 	char *s;
41 {
42 	register char *p;
43 	register char *q;
44 	register char c;
45 
46 	for (p = q = s; (c = *p++) != '\0'; )
47 	{
48 		if (c != '"')
49 			*q++ = c & 0177;
50 	}
51 	*q = '\0';
52 }
53 /*
54 **  XALLOC -- Allocate memory and bitch wildly on failure.
55 **
56 **	THIS IS A CLUDGE.  This should be made to give a proper
57 **	error -- but after all, what can we do?
58 **
59 **	Parameters:
60 **		sz -- size of area to allocate.
61 **
62 **	Returns:
63 **		pointer to data region.
64 **
65 **	Side Effects:
66 **		Memory is allocated.
67 **
68 **	Requires:
69 **		malloc
70 **		syserr
71 **		exit
72 **
73 **	Called By:
74 **		lots of people.
75 **
76 **	History:
77 **		12/31/79 -- written.
78 */
79 
80 char *
81 xalloc(sz)
82 	register unsigned int sz;
83 {
84 	register char *p;
85 	extern char *malloc();
86 
87 	p = malloc(sz);
88 	if (p == NULL)
89 	{
90 		syserr("Out of memory!!");
91 		exit(EX_UNAVAIL);
92 	}
93 	return (p);
94 }
95 /*
96 **  ANY -- Return TRUE if the character exists in the string.
97 **
98 **	Parameters:
99 **		c -- the character.
100 **		s -- the string
101 **			(sounds like an avant garde script)
102 **
103 **	Returns:
104 **		TRUE -- if c could be found in s.
105 **		FALSE -- otherwise.
106 **
107 **	Side Effects:
108 **		none.
109 **
110 **	Requires:
111 **		none.
112 **
113 **	Called By:
114 **		prescan
115 **
116 **	History:
117 **		3/5/80 -- written.
118 */
119 
120 any(c, s)
121 	register char c;
122 	register char *s;
123 {
124 	register char c2;
125 
126 	while ((c2 = *s++) != '\0')
127 		if (c2 == c)
128 			return (TRUE);
129 	return (FALSE);
130 }
131