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