ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/text.c
(Generate patch)

Comparing ray/src/rt/text.c (file contents):
Revision 1.5 by greg, Thu Jan 3 11:54:54 1991 UTC vs.
Revision 1.6 by greg, Mon Jul 22 13:02:27 1991 UTC

# Line 65 | Line 65 | typedef struct font {
65          struct font  *next;             /* next font in list */
66   }  FONT;
67  
68 + extern char  *fgetword();
69 +
70   extern GLYPH  *getglyph();
71  
72   extern FONT  *getfont();
# Line 204 | Line 206 | FONT *
206   getfont(fname)                          /* return font fname */
207   char  *fname;
208   {
209 +        char  buf[16];
210          FILE  *fp;
211          char  *pathname, *err;
212          int  gn, ngv, gv;
# Line 227 | Line 230 | char  *fname;
230                                  pathname);
231                  error(SYSTEM, errmsg);
232          }
233 <        while (fscanf(fp, "%d", &gn) == 1) {    /* get each glyph */
233 >        while (fgetword(buf,sizeof(buf),fp) != NULL) {  /* get each glyph */
234 >                if (!isint(buf))
235 >                        goto nonint;
236 >                gn = atoi(buf);
237                  if (gn < 0 || gn > 255) {
238                          err = "illegal";
239                          goto fonterr;
# Line 236 | Line 242 | char  *fname;
242                          err = "duplicate";
243                          goto fonterr;
244                  }
245 <                if (fscanf(fp, "%d", &ngv) != 1 ||
246 <                                ngv < 0 || ngv > 255) {
245 >                if (fgetword(buf,sizeof(buf),fp) == NULL || !isint(buf) ||
246 >                                (ngv = atoi(buf)) < 0 || ngv > 255) {
247                          err = "bad # vertices for";
248                          goto fonterr;
249                  }
# Line 248 | Line 254 | char  *fname;
254                  *g++ = ngv;
255                  ngv *= 2;
256                  while (ngv--) {
257 <                        if (fscanf(fp, "%d", &gv) != 1 ||
258 <                                        gv < 0 || gv > 255) {
257 >                        if (fgetword(buf,sizeof(buf),fp) == NULL ||
258 >                                        !isint(buf) ||
259 >                                        (gv = atoi(buf)) < 0 || gv > 255) {
260                                  err = "bad vertex for";
261                                  goto fonterr;
262                          }
# Line 259 | Line 266 | char  *fname;
266          fclose(fp);
267          f->next = fontlist;
268          return(fontlist = f);
269 + nonint:
270 +        sprintf(errmsg, "non-integer in font file \"%s\"", pathname);
271 +        error(USER, errmsg);
272   fonterr:
273          sprintf(errmsg, "%s character (%d) in font file \"%s\"",
274                          err, gn, pathname);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines