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

Comparing ray/src/common/font.c (file contents):
Revision 2.21 by greg, Fri Nov 19 21:56:48 2021 UTC vs.
Revision 2.22 by greg, Fri Nov 19 22:51:31 2021 UTC

# Line 11 | Line 11 | static const char      RCSid[] = "$Id$";
11  
12   #include "paths.h"
13   #include "rtio.h"
14 #include "rterror.h"
14   #include "font.h"
15  
16   #define galloc(nv)      (GLYPH *)malloc(sizeof(GLYPH)+2*sizeof(GORD)*(nv))
17  
19
18   int     retainfonts = 0;                /* retain loaded fonts? */
19  
20   static FONT     *fontlist = NULL;       /* list of loaded fonts */
# Line 42 | Line 40 | getfont(                       /* return font fname */
40                  }
41                                                  /* load the font file */
42          if ((pathname = getpath(fname, getrlibpath(), R_OK)) == NULL) {
43 <                sprintf(errmsg, "cannot find font file \"%s\"", fname);
44 <                error(SYSTEM, errmsg);
43 >                fprintf(stderr, "cannot find font file \"%s\"\n", fname);
44 >                return(NULL);
45          }
46 +        if ((fp = fopen(pathname, "r")) == NULL) {
47 +                fprintf(stderr, "cannot open font file \"%s\"\n", pathname);
48 +                return(NULL);
49 +        }
50          f = (FONT *)calloc(1, sizeof(FONT));
51          if (f == NULL)
52                  goto memerr;
53 <        f->name = savestr(fname);
53 >        strcpy(f->name, fname);
54          f->nref = 1;
53        if ((fp = fopen(pathname, "r")) == NULL) {
54                sprintf(errmsg, "cannot open font file \"%s\"",
55                                pathname);
56                error(SYSTEM, errmsg);
57        }
55          wsum = hsum = ngly = 0;                 /* get each glyph */
56          while ((ngv = fgetval(fp, 'i', (char *)&gn)) != EOF) {
57                  if (ngv == 0)
# Line 113 | Line 110 | getfont(                       /* return font fname */
110          f->next = fontlist;
111          return(fontlist = f);
112   nonint:
113 <        sprintf(errmsg, "non-integer in font file \"%s\"", pathname);
114 <        error(USER, errmsg);
113 >        fprintf(stderr, "non-integer in font file \"%s\"\n", pathname);
114 >        fclose(fp);
115 >        return(NULL);
116   fonterr:
117 <        sprintf(errmsg, "%s character (%d) in font file \"%s\"",
117 >        fprintf(stderr, "%s character (%d) in font file \"%s\"\n",
118                          err, gn, pathname);
119 <        error(USER, errmsg);
119 >        fclose(fp);
120 >        return(NULL);
121   memerr:
122 <        error(SYSTEM, "out of memory in fontglyph");
123 <        return NULL; /* pro forma return */
122 >        fprintf(stderr, "out of memory in getfont()\n");
123 >        fclose(fp);
124 >        return(NULL);
125   }
126  
127  
# Line 144 | Line 144 | freefont(                      /* release a font (free all if NULL) */
144                          for (i = 0; i < 256; i++)
145                                  if (f->fg[i] != NULL)
146                                          free((void *)f->fg[i]);
147                        freestr(f->name);
147                          free((void *)f);
148                  } else
149                          fl = f;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines