Annotation of /trunk/ttmkfdir/patches/ttmkfdir-3.0.9-zlib.patch
Parent Directory | Revision Log
Revision 153 -
(hide annotations)
(download)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1913 byte(s)
Tue May 8 20:52:56 2007 UTC (17 years, 4 months ago) by niro
File size: 1913 byte(s)
-import
1 | niro | 153 | --- ttmkfdir-3.0.9/encoding.cpp 2002-12-09 03:52:48.000000000 -0500 |
2 | +++ ttmkfdir-3.0.9/encoding.cpp 2003-09-12 12:32:29.000000000 -0400 | ||
3 | @@ -2,6 +2,8 @@ | ||
4 | #include <cstdio> | ||
5 | #include <cstdlib> | ||
6 | #include <cstring> | ||
7 | +#include <unistd.h> | ||
8 | +#include <zlib.h> | ||
9 | #include "freetype/freetype.h" | ||
10 | |||
11 | #include "ttmkfdir.h" | ||
12 | @@ -32,9 +34,16 @@ | ||
13 | NextFile (FILE *f, char *name) | ||
14 | { | ||
15 | char file_name [1024]; | ||
16 | - char command[1024]; | ||
17 | + char line_buf [1024]; | ||
18 | + char tmp_file_name[] = "/tmp/ttmkfdir_XXXXXX"; | ||
19 | + char inbuf[300000]; | ||
20 | + FILE *od; | ||
21 | + gzFile fd; | ||
22 | + int rvalue, tmpfd; | ||
23 | |||
24 | - if (fscanf (f, "%*s %[^\n]\n", file_name) == 1) { | ||
25 | + if (fgets (line_buf, sizeof(line_buf), f) != NULL) { | ||
26 | + | ||
27 | + sscanf (line_buf, "%*s %[^\n]\n", file_name); | ||
28 | |||
29 | if (file_name[0] == '/') { | ||
30 | name[0] = 0; | ||
31 | @@ -44,9 +53,25 @@ | ||
32 | |||
33 | strcat (name, file_name); | ||
34 | |||
35 | - sprintf (command, "exec %s < %s", (toupper(name[strlen (name) - 1]) == 'Z') | ||
36 | - ? "gzip -d" : "cat", name); | ||
37 | - return popen (command, "r"); | ||
38 | + bzero(inbuf, sizeof(inbuf)); | ||
39 | + | ||
40 | + fd = gzopen (name,"rb"); | ||
41 | + rvalue = gzread (fd, inbuf, sizeof(inbuf)); | ||
42 | + | ||
43 | + tmpfd = mkstemp (tmp_file_name); | ||
44 | + if (tmpfd == -1) { | ||
45 | + return 0; | ||
46 | + } | ||
47 | + | ||
48 | + od = fdopen (tmpfd,"w"); | ||
49 | + fputs (inbuf, od); | ||
50 | + fflush (od); | ||
51 | + fclose (od); | ||
52 | + | ||
53 | + od = fopen (tmp_file_name,"r"); | ||
54 | + unlink (tmp_file_name); | ||
55 | + return od; | ||
56 | + | ||
57 | } | ||
58 | |||
59 | return 0; | ||
60 | @@ -75,7 +100,7 @@ | ||
61 | yyrestart (input); | ||
62 | yylex (name, *this); | ||
63 | |||
64 | - pclose (input); | ||
65 | + fclose (input); | ||
66 | } | ||
67 | |||
68 | fclose (f); | ||
69 | diff -uNr ttmkfdir-3.0.9.orig/Makefile ttmkfdir-3.0.9/Makefile | ||
70 | --- ttmkfdir-3.0.9.orig/Makefile 2003-08-21 17:43:13.000000000 +1000 | ||
71 | +++ ttmkfdir-3.0.9/Makefile 2003-08-21 17:40:16.000000000 +1000 | ||
72 | @@ -28,7 +28,7 @@ | ||
73 | DEBUG=-ggdb | ||
74 | CXX=g++ | ||
75 | CXXFLAGS=-Wall -pedantic $(FREETYPE_INCL) $(DEBUG) $(OPTFLAGS) | ||
76 | -LDFLAGS=$(FREETYPE_LIB) $(DEBUG) | ||
77 | +LDFLAGS=$(FREETYPE_LIB) $(DEBUG) -lz | ||
78 | |||
79 | DESTDIR= | ||
80 | PREFIX=/usr |