]> git.wh0rd.org - fontconfig.git/commitdiff
src/fccache.c (FcGlobalCacheLoad, FcGlobalCacheSave, FcDirCacheConsume,
authorPatrick Lam <plam@MIT.EDU>
Sun, 5 Feb 2006 02:57:21 +0000 (02:57 +0000)
committerPatrick Lam <plam@MIT.EDU>
Sun, 5 Feb 2006 02:57:21 +0000 (02:57 +0000)
    FcDirCacheWrite)
Check I/O call return values and eliminate unused variable warnings.
reviewed by: plam

ChangeLog
fc-cat/fc-cat.c
src/fccache.c
src/fcxml.c

index de2c143ffa3624701bdd185b4dd56ecabf3b10cf..76aeb622a1d7f24a8b6d4996c9e4fd7ea3df32c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-02-03  Takashi IWAI  <tiwai@suse.de>
+       reviewed by: plam
+
+       * fc-cat/fc-cat.c (FcCacheGlobalFileReadAndPrint, main,
+                          FcCacheFileRead):
+
+       * src/fccache.c (FcGlobalCacheLoad, FcGlobalCacheSave, 
+                        FcDirCacheConsume, FcDirCacheWrite)
+       * src/fcxml.c (FcConfigMessage):
+
+       Check I/O call return values and eliminate unused variable
+       warnings.
+
 2006-02-03  Takashi Iwai  <tiwai@suse.de>
        reviewed by: plam
 
index a203d7496f2097bbb91f75841c7a135a459e0f68..d6247114f227935898581f635d3e38eea301e59d 100644 (file)
@@ -196,7 +196,7 @@ FcCacheGlobalFileReadAndPrint (FcFontSet * set, FcStrSet *dirs, char *cache_file
 
     while (1) 
     {
-       char * dir, * ls;
+       char * dir;
        FcCacheReadString (fd, name_buf, sizeof (name_buf));
        if (!strlen(name_buf))
            break;
@@ -241,7 +241,6 @@ FcCacheFileRead (FcFontSet * set, FcStrSet *dirs, char *cache_file)
 {
     int fd;
     char * current_arch_machine_name;
-    char candidate_arch_machine_name[9+MACHINE_SIGNATURE_SIZE];
     off_t current_arch_start = 0;
     char subdirName[FC_MAX_FILE_LEN + 1 + 12 + 1];
     static char name_buf[8192], *dir;
@@ -411,7 +410,7 @@ main (int argc, char **argv)
     if (i >= argc)
         usage (argv[0]);
 
-    if (name_buf = FcCacheFileRead (fs, dirs, argv[i]))
+    if ((name_buf = FcCacheFileRead (fs, dirs, argv[i])) != 0)
        FcCachePrintSet (fs, dirs, name_buf);
     else
     {
index 0de020ceb4050d7cbaae896a59af6dbeb25b4d00..8813bd5e6aa05201ed1e2dd4e9ff432c7c74926f 100644 (file)
@@ -251,11 +251,20 @@ FcGlobalCacheLoad (FcGlobalCache    *cache,
            (config_time.set && cache_stat.st_mtime < config_time.time))
         {
             FcCache md;
+           off_t off;
 
-            FcStrSetAdd (staleDirs, FcStrCopy ((FcChar8 *)name_buf));
-            read (cache->fd, &md, sizeof (FcCache));
-            lseek (cache->fd, FcCacheNextOffset (lseek(cache->fd, 0, SEEK_CUR)) + md.count, SEEK_SET);
-            continue;
+           FcStrSetAdd (staleDirs, FcStrCopy ((FcChar8 *)name_buf));
+           if (read (cache->fd, &md, sizeof (FcCache)) != sizeof(FcCache)) 
+           {
+               perror ("read metadata");
+               goto bail1;
+           }
+           off = FcCacheNextOffset (lseek(cache->fd, 0, SEEK_CUR)) + md.count;
+           if (lseek (cache->fd, off, SEEK_SET) != off) {
+               perror ("lseek");
+               goto bail1;
+           }
+           continue;
         }
 
        d = malloc (sizeof (FcGlobalCacheDir));
@@ -465,21 +474,38 @@ FcGlobalCacheSave (FcGlobalCache    *cache,
 
     for (dir = cache->dirs; dir; dir = dir->next)
     {
-        if (dir->name)
-        {
+       if (dir->name)
+       {
            const char * d = (const char *)FcConfigNormalizeFontDir (config, (const FcChar8 *)dir->name);
+           off_t off;
 
-            FcCacheWriteString (fd, d);
+           FcCacheWriteString (fd, d);
 
            for (i = 0; i < dir->subdirs->size; i++)
                FcCacheWriteString (fd, (char *)dir->subdirs->strs[i]);
            FcCacheWriteString (fd, "");
            
-            write (fd, &dir->metadata, sizeof(FcCache));
-            lseek (fd, FcCacheNextOffset (lseek(fd, 0, SEEK_CUR)), SEEK_SET);
-            write (fd, dir->ent, dir->metadata.count);
-            free (dir->ent);
-        }
+           if (write (fd, &dir->metadata, sizeof(FcCache)) != sizeof(FcCache))
+           {
+               perror ("write metadata");
+               free (dir->ent);
+               continue;
+           }
+           off = FcCacheNextOffset (lseek(fd, 0, SEEK_CUR));
+           if (lseek (fd, off, SEEK_SET) != off)
+           {
+               perror ("lseek");
+               free (dir->ent);
+               continue;
+           }
+           if (write (fd, dir->ent, dir->metadata.count) != dir->metadata.count)
+           {
+               perror ("write dirent");
+               free (dir->ent);
+               continue;
+           }
+          free (dir->ent);
+       }
     }
     FcCacheWriteString (fd, "");
 
@@ -1025,7 +1051,8 @@ FcDirCacheConsume (int fd, const char * dir, FcFontSet *set, FcConfig *config)
     void * current_dir_block;
     off_t pos;
 
-    read(fd, &metadata, sizeof(FcCache));
+    if (read(fd, &metadata, sizeof(FcCache)) != sizeof(FcCache))
+       return FcFalse;
     if (metadata.magic != FC_CACHE_MAGIC)
         return FcFalse;
 
@@ -1238,11 +1265,18 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
         FcCacheWriteString (fd, (char *)dirs->strs[i]);
     FcCacheWriteString (fd, "");
 
-    write (fd, &metadata, sizeof(FcCache));
+    if (write (fd, &metadata, sizeof(FcCache)) != sizeof(FcCache)) {
+       perror("write metadata");
+       goto bail5;
+    }
     if (metadata.count)
     {
-       lseek (fd, FcCacheNextOffset (lseek(fd, 0, SEEK_END)), SEEK_SET);
-       write (fd, current_dir_block, metadata.count);
+       off_t off = FcCacheNextOffset (lseek(fd, 0, SEEK_END));
+       if (lseek (fd, off, SEEK_SET) != off)
+           perror("lseek");
+       else if (write (fd, current_dir_block, metadata.count) !=
+                metadata.count)
+           perror("write current_dir_block");
        free (current_dir_block);
     }
 
index e65ccbfdfce589a763350526cf4d5d75606e1424..c9e44e375ec851732630345439207c6e661f9a4d 100644 (file)
@@ -493,10 +493,10 @@ FcConfigMessage (FcConfigParse *parse, FcConfigSeverity severe, const char *fmt,
     {
        if (parse->name)
            fprintf (stderr, "Fontconfig %s: \"%s\", line %d: ", s,
-                    parse->name, XML_GetCurrentLineNumber (parse->parser));
+                    parse->name, (int)XML_GetCurrentLineNumber (parse->parser));
        else
            fprintf (stderr, "Fontconfig %s: line %d: ", s,
-                    XML_GetCurrentLineNumber (parse->parser));
+                    (int)XML_GetCurrentLineNumber (parse->parser));
        if (severe >= FcSevereError)
            parse->error = FcTrue;
     }