Bug Summary

File:bitmap/bdfutils.c
Location:line 165, column 2
Description:Value stored to 'pp' is never read

Annotated Source Code

1/************************************************************************
2Copyright 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
3
4 All Rights Reserved
5
6Permission to use, copy, modify, and distribute this software and its
7documentation for any purpose and without fee is hereby granted,
8provided that the above copyright notice appear in all copies and that
9both that copyright notice and this permission notice appear in
10supporting documentation, and that the name of Digital not be
11used in advertising or publicity pertaining to distribution of the
12software without specific, written prior permission.
13
14DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20SOFTWARE.
21
22************************************************************************/
23
24/*
25
26Copyright 1994, 1998 The Open Group
27
28Permission to use, copy, modify, distribute, and sell this software and its
29documentation for any purpose is hereby granted without fee, provided that
30the above copyright notice appear in all copies and that both that
31copyright notice and this permission notice appear in supporting
32documentation.
33
34The above copyright notice and this permission notice shall be included
35in all copies or substantial portions of the Software.
36
37THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
38OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
39MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
40IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
41OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
42ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
43OTHER DEALINGS IN THE SOFTWARE.
44
45Except as contained in this notice, the name of The Open Group shall
46not be used in advertising or otherwise to promote the sale, use or
47other dealings in this Software without prior written authorization
48from The Open Group.
49
50*/
51
52#ifdef HAVE_CONFIG_H1
53#include <config.h>
54#endif
55#include "libxfontint.h"
56
57#include <ctype.h>
58#include <stdio.h>
59#include <stdarg.h>
60
61#include <X11/fonts/fntfilst.h>
62#include <X11/fonts/fontstruct.h>
63/* use bitmap structure */
64#include <X11/fonts/bitmap.h>
65#include <X11/fonts/bdfint.h>
66
67int bdfFileLineNum;
68
69/***====================================================================***/
70
71void
72bdfError(const char* message, ...)
73{
74 va_list args;
75
76 va_start (args, message)__builtin_va_start(args, message);
77 fprintf(stderr__stderrp, "BDF Error on line %d: ", bdfFileLineNum);
78 vfprintf(stderr__stderrp, message, args);
79 va_end (args)__builtin_va_end(args);
80}
81
82/***====================================================================***/
83
84void
85bdfWarning(const char *message, ...)
86{
87 va_list args;
88
89 va_start (args, message)__builtin_va_start(args, message);
90 fprintf(stderr__stderrp, "BDF Warning on line %d: ", bdfFileLineNum);
91 vfprintf(stderr__stderrp, message, args);
92 va_end (args)__builtin_va_end(args);
93}
94
95/*
96 * read the next (non-comment) line and keep a count for error messages.
97 * Returns buf, or NULL if EOF.
98 */
99
100unsigned char *
101bdfGetLine(FontFilePtr file, unsigned char *buf, int len)
102{
103 int c;
104 unsigned char *b;
105
106 for (;;) {
107 b = buf;
108 while ((c = FontFileGetc(file)((file)->left-- ? *(file)->bufp++ : ((file)->eof = (
*(file)->input) (file)))
) != FontFileEOF-1) {
109 if (c == '\r')
110 continue;
111 if (c == '\n') {
112 bdfFileLineNum++;
113 break;
114 }
115 if (b - buf >= (len - 1))
116 break;
117 *b++ = c;
118 }
119 *b = '\0';
120 if (c == FontFileEOF-1)
121 return NULL((void *)0);
122 if (b != buf && !bdfIsPrefix(buf, "COMMENT")(!strncmp((char *)buf,"COMMENT",strlen("COMMENT"))))
123 break;
124 }
125 return buf;
126}
127
128/***====================================================================***/
129
130Atom
131bdfForceMakeAtom(const char *str, int *size)
132{
133 register int len = strlen(str);
134 Atom the_atom;
135
136 if (size != NULL((void *)0))
137 *size += len + 1;
138 the_atom = MakeAtom__libxfont__MakeAtom(str, len, TRUE1);
139 if (the_atom == None0L)
140 bdfError("Atom allocation failed\n");
141 return the_atom;
142}
143
144/***====================================================================***/
145
146/*
147 * Handle quoted strings.
148 */
149
150Atom
151bdfGetPropertyValue(char *s)
152{
153 register char *p,
154 *pp;
155 char *orig_s = s;
156 Atom atom;
157
158 /* strip leading white space */
159 while (*s && (*s == ' ' || *s == '\t'))
160 s++;
161 if (*s == 0) {
162 return bdfForceMakeAtom(s, NULL((void *)0));
163 }
164 if (*s != '"') {
165 pp = s;
Value stored to 'pp' is never read
166 /* no white space in value */
167 for (pp = s; *pp; pp++)
168 if (*pp == ' ' || *pp == '\t' || *pp == '\015' || *pp == '\n') {
169 *pp = 0;
170 break;
171 }
172 return bdfForceMakeAtom(s, NULL((void *)0));
173 }
174 /* quoted string: strip outer quotes and undouble inner quotes */
175 s++;
176 pp = p = malloc((unsigned) strlen(s) + 1);
177 if (pp == NULL((void *)0)) {
178 bdfError("Couldn't allocate property value string (%d)\n",
179 (int) strlen(s) + 1);
180 return None0L;
181 }
182 while (*s) {
183 if (*s == '"') {
184 if (*(s + 1) != '"') {
185 *p++ = 0;
186 atom = bdfForceMakeAtom(pp, NULL((void *)0));
187 free(pp);
188 return atom;
189 } else {
190 s++;
191 }
192 }
193 *p++ = *s++;
194 }
195 free (pp);
196 bdfError("unterminated quoted string property: %s\n", orig_s);
197 return None0L;
198}
199
200/***====================================================================***/
201
202/*
203 * return TRUE if string is a valid integer
204 */
205int
206bdfIsInteger(char *str)
207{
208 char c;
209
210 c = *str++;
211 if (!(isdigit((unsigned char)c) || c == '-' || c == '+'))
212 return (FALSE0);
213
214 while ((c = *str++))
215 if (!isdigit((unsigned char)c))
216 return (FALSE0);
217
218 return (TRUE1);
219}
220
221/***====================================================================***/
222
223/*
224 * make a byte from the first two hex characters in glyph picture
225 */
226
227unsigned char
228bdfHexByte(unsigned char *s)
229{
230 unsigned char b = 0;
231 register char c;
232 int i;
233
234 for (i = 2; i; i--) {
235 c = *s++;
236 if ((c >= '0') && (c <= '9'))
237 b = (b << 4) + (c - '0');
238 else if ((c >= 'A') && (c <= 'F'))
239 b = (b << 4) + 10 + (c - 'A');
240 else if ((c >= 'a') && (c <= 'f'))
241 b = (b << 4) + 10 + (c - 'a');
242 else
243 bdfError("bad hex char '%c'", c);
244 }
245 return b;
246}
247
248/***====================================================================***/
249
250/*
251 * check for known special property values
252 */
253
254static const char *SpecialAtoms[] = {
255 "FONT_ASCENT",
256#define BDF_FONT_ASCENT0 0
257 "FONT_DESCENT",
258#define BDF_FONT_DESCENT1 1
259 "DEFAULT_CHAR",
260#define BDF_DEFAULT_CHAR2 2
261 "POINT_SIZE",
262#define BDF_POINT_SIZE3 3
263 "RESOLUTION",
264#define BDF_RESOLUTION4 4
265 "X_HEIGHT",
266#define BDF_X_HEIGHT5 5
267 "WEIGHT",
268#define BDF_WEIGHT6 6
269 "QUAD_WIDTH",
270#define BDF_QUAD_WIDTH7 7
271 "FONT",
272#define BDF_FONT8 8
273 "RESOLUTION_X",
274#define BDF_RESOLUTION_X9 9
275 "RESOLUTION_Y",
276#define BDF_RESOLUTION_Y10 10
277 0,
278};
279
280Bool
281bdfSpecialProperty(FontPtr pFont, FontPropPtr prop,
282 char isString, bdfFileState *bdfState)
283{
284 const char **special;
285 const char *name;
286
287 name = NameForAtom__libxfont__NameForAtom(prop->name);
288 for (special = SpecialAtoms; *special; special++)
289 if (!strcmp(name, *special))
290 break;
291
292 switch (special - SpecialAtoms) {
293 case BDF_FONT_ASCENT0:
294 if (!isString) {
295 pFont->info.fontAscent = prop->value;
296 bdfState->haveFontAscent = TRUE1;
297 }
298 return TRUE1;
299 case BDF_FONT_DESCENT1:
300 if (!isString) {
301 pFont->info.fontDescent = prop->value;
302 bdfState->haveFontDescent = TRUE1;
303 }
304 return TRUE1;
305 case BDF_DEFAULT_CHAR2:
306 if (!isString) {
307 pFont->info.defaultCh = prop->value;
308 bdfState->haveDefaultCh = TRUE1;
309 }
310 return TRUE1;
311 case BDF_POINT_SIZE3:
312 bdfState->pointSizeProp = prop;
313 return FALSE0;
314 case BDF_RESOLUTION4:
315 bdfState->resolutionProp = prop;
316 return FALSE0;
317 case BDF_X_HEIGHT5:
318 bdfState->xHeightProp = prop;
319 return FALSE0;
320 case BDF_WEIGHT6:
321 bdfState->weightProp = prop;
322 return FALSE0;
323 case BDF_QUAD_WIDTH7:
324 bdfState->quadWidthProp = prop;
325 return FALSE0;
326 case BDF_FONT8:
327 bdfState->fontProp = prop;
328 return FALSE0;
329 case BDF_RESOLUTION_X9:
330 bdfState->resolutionXProp = prop;
331 return FALSE0;
332 case BDF_RESOLUTION_Y10:
333 bdfState->resolutionYProp = prop;
334 return FALSE0;
335 default:
336 return FALSE0;
337 }
338}