summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Lam <plam@MIT.EDU>2006-01-30 15:59:17 +0000
committerPatrick Lam <plam@MIT.EDU>2006-01-30 15:59:17 +0000
commit2c4e0124976724a7ae56bfee0ac4f7046c819ea8 (patch)
tree0a2a3bbf9a90c2c91ae7d811289acf92f345865b
parentc5411c4cae9389ad875fbbeedeaba0644f5e399f (diff)
Update fc-cat to handle subdir lists in global cache file.
Another FcCacheReadString return value check.
-rw-r--r--ChangeLog9
-rw-r--r--fc-cat/fc-cat.c10
-rw-r--r--src/fccache.c11
3 files changed, 28 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 4755e7fb..5057b59c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2006-01-30 Patrick Lam <plam@mit.edu>
+ * fc-cat/fc-cat.c (FcCacheGlobalFileReadAndPrint):
+
+ Update fc-cat to handle subdir lists in global cache file.
+
+ * src/fccache.c (FcGlobalCacheLoad):
+
+ Another FcCacheReadString return value check.
+
2006-01-30 Mike Fabian <mfabian@suse.de>
reviewed by: plam
diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c
index 3b24302d..a203d749 100644
--- a/fc-cat/fc-cat.c
+++ b/fc-cat/fc-cat.c
@@ -174,6 +174,7 @@ FcCacheGlobalFileReadAndPrint (FcFontSet * set, FcStrSet *dirs, char *cache_file
int fd;
char * current_arch_machine_name;
char candidate_arch_machine_name[9+MACHINE_SIGNATURE_SIZE];
+ char subdirName[FC_MAX_FILE_LEN + 1 + 12 + 1];
off_t current_arch_start = 0;
if (!cache_file)
@@ -202,6 +203,15 @@ FcCacheGlobalFileReadAndPrint (FcFontSet * set, FcStrSet *dirs, char *cache_file
printf ("fc-cat: printing global cache contents for dir %s\n",
name_buf);
+ do
+ {
+ if (!FcCacheReadString (fd, subdirName,
+ sizeof (subdirName)) ||
+ !strlen (subdirName))
+ break;
+ /* then don't do anything with subdirName. */
+ } while (1);
+
if (!FcDirCacheConsume (fd, name_buf, set, 0))
goto bail1;
diff --git a/src/fccache.c b/src/fccache.c
index 5af247a1..3dd7eae3 100644
--- a/src/fccache.c
+++ b/src/fccache.c
@@ -240,7 +240,8 @@ FcGlobalCacheLoad (FcGlobalCache *cache,
{
off_t targ;
- if (!FcCacheReadString (cache->fd, name_buf, sizeof (name_buf)) || !strlen(name_buf))
+ if (!FcCacheReadString (cache->fd, name_buf, sizeof (name_buf)) ||
+ !strlen(name_buf))
break;
/* Directory must be older than the global cache file; also
@@ -269,8 +270,14 @@ FcGlobalCacheLoad (FcGlobalCache *cache,
d->offset = lseek (cache->fd, 0, SEEK_CUR);
d->subdirs = FcStrSetCreate();
- while (strlen(FcCacheReadString (cache->fd, subdirName, sizeof (subdirName))) > 0)
+ do
+ {
+ if (!FcCacheReadString (cache->fd, subdirName,
+ sizeof (subdirName)) ||
+ !strlen (subdirName))
+ break;
FcStrSetAdd (d->subdirs, (FcChar8 *)subdirName);
+ } while (1);
if (read (cache->fd, &d->metadata, sizeof (FcCache)) != sizeof (FcCache))
goto bail1;