Commit Graph

1102 Commits

Author SHA1 Message Date
Keith Packard d8ab9e6c42 Automatically remove invalid cache files.
Cache files for missing or more recently modified directories are
automatically removed at the end of every fc-cache run.
2006-08-31 09:42:49 -07:00
Keith Packard e9a564e2cd Serialized value lists were only including one value.
The next pointer in the serialized value list wasn't getting set, so they
were truncated at a single value.
2006-08-31 09:07:32 -07:00
Keith Packard c50ea916b0 Use intptr_t instead of off_t inside FcCache structure.
This avoids OS-dependencies in the cache file structure.
2006-08-30 23:09:39 -07:00
Keith Packard 76abb77f26 Fix fc-cat again. Sigh.
Internal interfaces in cache management changed again...
2006-08-30 22:23:25 -07:00
Keith Packard 2d3387fd72 Skip broken caches. Cache files are auto-written, don't rewrite in fc-cache.
Validate cache contents and skip broken caches, looking down cache path for
valid ones.

Every time a directory is scanned, it will be written to a cache file if
possible, so fc-cache doesn't need to re-write the cache file. This makes
detecting when the cache was generated a bit tricky, so we guess that if the
cache wasn't valid before running and is valid afterwards, the cache file
was written.

Also, allow empty charsets to be serialized with null leaves/numbers.

Eliminate a leak in FcEdit by switching to FcObject sooner.

Call FcFini from fc-match to make valgrind happy.
2006-08-30 21:59:53 -07:00
Keith Packard 09f9f6f62a Rework Object name database to unify typechecking and object lookup.
Eliminate ancient list of object name databases and load names into single
hash table that includes type information. Typecheck all pattern values to
avoid mis-typed pattern elements.
2006-08-30 18:50:58 -07:00
Keith Packard c02886485b FcCharSetSerialize was using wrong offset for leaves. Make fc-cat work.
FcCharSetSerialize was computing the offset to the unserialized leaf,
which left it pointing at random data when the cache was reloaded.

fc-cat has been updated to work with the new cache structure.

Various debug messages extended to help diagnose serialization errors.
2006-08-30 13:51:03 -07:00
Keith Packard e3096d90fd Fix build problems caused by cache rework.
Pagesize no longer matters in architecture decisions, the entire cache file
is mmaped into the library. However, lots of intptr_t values are in use now,
so that value is important.

fc-lang now requires fcserialize.c, which has been added to the repository.
2006-08-30 04:24:03 -07:00
Keith Packard 7ce1967331 Rework cache files to use offsets for all data structures.
Replace all of the bank/id pairs with simple offsets, recode several
data structures to always use offsets inside the library to avoid
conditional paths. Exposed data structures use pointers to hold offsets,
setting the low bit to distinguish between offset and pointer.

Use offset-based data structures for lang charset encodings; eliminates
separate data structure format for that file.

Much testing will be needed; offsets are likely not detected everywhere in
the library yet.
2006-08-30 04:16:22 -07:00
Keith Packard 2a9179d889 Revert to original FcFontSetMatch algorithm to avoid losing fonts.
The fancy new FcFontSetMatch algorithm would discard fonts for the
wrong reasons; fc-match sans:lang=en,ja would discard all fonts without
Japanese support. This commit reverts to the original algorithm which
ensure that FcFontSetMatch always matches the first font in the
FcFontSetSort return list.
2006-08-28 11:51:12 -07:00
Keith Packard ad05e3135b Add ppc architecture 2006-08-28 10:38:27 -07:00
Keith Packard 7a03bbdceb During test run, remove cache directory to avoid stale cache usage.
As file timestamps have only one second granularity, an old cache
file could easily be used when a test took less than 1 second to run.
Just remove the cache directory and its contents before each test is run.
Also, remove mention of the old cache file from the test config file.
2006-08-28 10:30:22 -07:00
Keith Packard 1e4080ea49 Add x86-64 architecture and signature. 2006-08-28 10:07:43 -07:00
Keith Packard 7db39f7298 Regenerate x86 line in fcarch.tmpl.h to match change in cache data.
Also remove spurious printf of directory names.
2006-08-28 09:43:12 -07:00
Keith Packard 0d9e31c810 Eliminate ./ and ../ elements from font directory names when scanning.
FcStrCanonFilename eliminates ./ and ../ elements from pathnames through
simple string editing. Also, relative path names are fixed by prepending the
current working directory.
2006-08-27 23:40:51 -07:00
Keith Packard af180c4037 Fix up fc-cache and fc-cat for no global cache changes.
fc-cache and fc-cat use internal (fcint.h) APIs that have
changed with the elimination of the global cache.
2006-08-27 22:24:39 -07:00
Keith Packard 00f059e930 Eliminate global cache. Eliminate multi-arch cache code.
With the removal of the in-directory cache files, and the addition of
per-user cache directories, there is no longer any reason to preserve the
giant global cache file. Eliminating of this unifies the cache structure
and simplifies the overall caching strategies greatly.
2006-08-27 21:53:48 -07:00
Keith Packard cf65c0557e Add architecture to cache filename.
Make cache filenames unique by inserting the architecture name into the
filename.
2006-08-27 18:29:51 -07:00
Keith Packard db50cbdaf5 Eliminate NormalizeDir. Eliminate gratuitous stat/access calls per dir.
Normalized directory names offer protection against looped directory trees
but cost enormous numbers of system calls (stat per file in the hierarchy).
Also, cache file directory name contents are validated each time the
directory is modified, don't re-validate every time the cache file is loaded
with an access and stat call.
2006-08-27 18:19:39 -07:00
Keith Packard d2f786849c Write caches to first directory with permission. Valid cache in FcDirCacheOpen.
Previous policy was to attempt to update the cache in place and bail if that
didn't work. Now, search for the first writable directory and place the
cache file there instead. Furthermore, on startup, search directory list for
valid cache files instead of bailing if the first found cache file wasn't
valid.
2006-08-27 17:04:01 -07:00
Keith Packard 2b629781d7 Construct short architecture name from architecture signature.
Map existing architecture signature to short architecture name
at build time. This architecture name is (as yet) unused, but will be used
to build per-architecture cache files with names made unique by including
the architecture name. The auto-detected architecture name can be overridden
with the --with-arch=ARCH configure option.
2006-08-27 16:25:07 -07:00
Keith Packard 199a922411 Add .gitignore 2006-08-27 16:21:16 -07:00
Patrick Lam 7410e40bd9 2006-08-04 Keith Packard (keithp@keithp.com) reviewed by: plam
Make cache directories configurable. Simplify and correct some code which
    deals with per-directory caches.
2006-08-04 16:13:00 +00:00
Patrick Lam 62a4a8459a 2006-07-19 Jon Burgess (jburgess@uklinux.net) reviewed by: plam
Fix file-descriptor leak in FcGlobalCacheDestroy.
2006-07-19 02:14:28 +00:00
Patrick Lam 1c14f2d963 2006-05-31 Yong Li (rigel863@gmail.com) reviewed by: plam, Bedhad Esfahbod
TrueType Collection table offsets are absolute, not relative.
2006-06-02 18:48:30 +00:00
Patrick Lam 31b7e6d7f5 2006-04-27 Paolo Borelli (pborelli@katamail.com) reviewed by: plam
Make FcStrCopy slightly more efficient.
2006-04-28 07:00:25 +00:00
Patrick Lam 0037aad501 Keith Packard <keithp@keithp.com>
Reduce transient memory usage during config file parsing by allocating
    smaller buffers (64 seems to be a magic number).
2006-04-27 08:13:45 +00:00
Keith Packard 529291bef4 Eliminate pattern freezing 2006-04-27 07:54:07 +00:00
Keith Packard c1c3ba06d5 Make path names in cache files absolute (NB, cache format change) Stop
permitting cache files to be stored in font dirs. Bump cache magic.
    Don't include /fonts.cache-2 in cache hash construction.
reviewed by: Patrick Lam <plam@mit.edu>
2006-04-27 07:11:44 +00:00
Patrick Lam 3b013a034a Really update for 2.3.95. 2006-04-26 14:50:41 +00:00
Patrick Lam 73775d8f28 Fix the issues with GNU libiconv vs. libc iconv (which especially appear on
Solarii). Approach suggested by Tim Mooney.
reviewed by: plam
2006-04-25 15:33:07 +00:00
Patrick Lam 4951231726 Include $(top_srcdir), $(top_srcdir)/src before anything else.
Shuffle order of includes for building out of srcdir on win32.
reviewed by: plam
2006-04-25 06:12:06 +00:00
Patrick Lam f045376c08 Include $(top_srcdir), $(top_srcdir)/src before anything else.
Shuffle order of includes for building out of srcdir on win32.
reviewed by: plam
2006-04-25 05:57:41 +00:00
Patrick Lam 55e145b025 Prevent terrible perf regression by getting the if-condition right
(reported by Wouter Bolsterlee).
2006-04-20 16:57:50 +00:00
Patrick Lam 93f67dfc73 Dominic Lachowicz <cinamod@hotmail.com>
Implement mmap-like code for Windows using MapViewOfFile.
2006-04-19 16:53:50 +00:00
Patrick Lam 56f8358364 Bump version to 2.3.95. 2006-04-19 16:17:46 +00:00
Patrick Lam c001a192af Bail gracefully if the cache file does not contain enough data. 2006-04-19 16:17:19 +00:00
Patrick Lam a77572948e Give the 'Standard Symbols L' match a strong (vs. weak) binding. 2006-04-15 00:25:20 +00:00
Patrick Lam 8cfa0bbc82 Fix Gecko-exposed segfault from my last hack to FcObjectToPtrLookup.
Simplify code and get things straight.
2006-04-14 18:35:16 +00:00
Patrick Lam b43dbbdc92 Actually, just add URW fonts as aliases for all of the PostScript fonts.
(reported by Miguel Rodriguez).
2006-04-14 15:40:58 +00:00
Patrick Lam ca2556f263 Add an alias 'Standard Symbols L' for 'Symbol'. 2006-04-14 14:51:22 +00:00
Patrick Lam 2f02e38361 Fix memory leak (Coverity defect #2089).
Ignore script if subtable is missing (Coverity defect #2088).
Fix possible null pointer dereference (Coverity defect #784) and memory
    leak (Coverity defects #785, #786).
Don't copy FcCharSet if we're going to throw it away anyway. (Reported by
    Kenichi Handa).
reviewed by: plam
2006-04-12 14:36:36 +00:00
Patrick Lam a56e89ab4f Fix bad behaviour on realloc resulting in crash.
reviewed by: plam
2006-04-12 03:02:57 +00:00
Patrick Lam 5c90509c07 Don't crash if config is null (Coverity defect #984). 2006-04-12 02:38:28 +00:00
Patrick Lam 2de24638b2 Missing bits from previous patches.
Remove extra semi-colon.
Fix memory leak in error case (Coverity defects #776, #985).
Fix memory leaks (Coverity defects #779, #781) and memory use after free
    (Coverity defect #780).
reviewed by: plam
2006-04-11 16:54:24 +00:00
Patrick Lam 04f7d3e7fd Properly convert static charsets to dynamic charsets.
Fix memory leak in error case (Coverity defects #1820, #1821, #1822).
Fix memory leak (Coverity defect #1819).
prevent crash when invalid include line is parsed (Coverity defect #763).
Fix potential null pointer access (Coverity defect #1804).
Remove dead code (Coverity defect #1194).
Prevent potential null pointer access (Coverity defect #767), ensure error
    value is read (Coverity defect #1195).
reviewed by: plam
2006-04-11 14:20:59 +00:00
Patrick Lam af2ad236f0 Survive missing docbook2pdf.
reviewed by: plam
2006-04-11 05:08:26 +00:00
Patrick Lam 67ed0b7297 Include more stub definitions to make HP-UX's C compiler happy. 2006-04-10 22:08:35 +00:00
Patrick Lam ac0010940e Swap typo in order of ALIGN and dereferencing, fixing bug 6529. 2006-04-10 21:04:54 +00:00
Patrick Lam 3ea92166a0 Fix string memory leak (Coverity defect #1823).
Fix memory leak with hash collision (Coverity defect #1824).
reviewed by: plam
2006-04-10 19:33:03 +00:00