~ubuntu-branches/ubuntu/saucy/luatex/saucy

« back to all changes in this revision

Viewing changes to source/texk/web2c/luatexdir/font/subfont.c

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Preining
  • Date: 2009-12-25 09:47:05 UTC
  • mfrom: (1.1.9 upstream) (4.2.3 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091225094705-y33rpflo8t4u9nag
Tags: 0.50.0-1
* new upstream release
* disable fix-hurd-ftbfs patch, included upstream
* disable upstram-fixes, included upstream
* disable ubuntu_libpoppler-0.11, not needed anymore

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#include <string.h>
23
23
 
24
24
static const char _svn_version[] =
25
 
    "$Id: subfont.c 2448 2009-06-08 07:43:50Z taco $ $URL: http://foundry.supelec.fr/svn/luatex/tags/beta-0.40.6/source/texk/web2c/luatexdir/font/subfont.c $";
 
25
    "$Id: subfont.c 3261 2009-12-18 11:38:21Z taco $ $URL: http://foundry.supelec.fr/svn/luatex/tags/beta-0.50.0/source/texk/web2c/luatexdir/font/subfont.c $";
26
26
 
27
27
static struct avl_table *sfd_tree = NULL;
28
28
 
29
29
static unsigned char *sfd_buffer = NULL;
30
 
static integer sfd_size = 0;
31
 
static integer sfd_curbyte = 0;
 
30
static int sfd_size = 0;
 
31
static int sfd_curbyte = 0;
32
32
 
33
33
#define SFD_BUF_SIZE    SMALL_BUF_SIZE
34
34
 
35
35
#define sfd_close()     xfclose(sfd_file, cur_file_name)
36
 
#define sfd_open()      (sfd_file = fopen((char *) nameoffile + 1, FOPEN_RBIN_MODE))
 
36
#define sfd_open(a)      (sfd_file = fopen((char *)(a), FOPEN_RBIN_MODE))
37
37
 
38
38
#define sfd_read_file() readbinfile(sfd_file,&sfd_buffer,&sfd_size)
39
39
#define sfd_getchar()   sfd_buffer[sfd_curbyte++]
119
119
    void **aa;
120
120
    sfd_entry *sfd, tmp_sfd;
121
121
    subfont_entry *sf;
122
 
    char *ftemp = NULL;
 
122
 
123
123
    char buf[SMALL_BUF_SIZE], *p;
124
124
    long int i, j, k;
125
125
    int n;
134
134
    sfd = (sfd_entry *) avl_find(sfd_tree, &tmp_sfd);
135
135
    if (sfd != NULL)
136
136
        return sfd;
137
 
    set_cur_file_name(sfd_name);
138
137
    if (sfd_buffer != NULL) {
139
138
        xfree(sfd_buffer);
140
139
        sfd_buffer = NULL;
142
141
    sfd_curbyte = 0;
143
142
    sfd_size = 0;
144
143
 
145
 
    callback_id = callback_defined(find_sfd_file_callback);
146
 
    if (callback_id > 0) {
147
 
        if (run_callback(callback_id, "S->S", cur_file_name, &ftemp)) {
148
 
            if (ftemp != NULL && strlen(ftemp)) {
149
 
                if (cur_file_name)
150
 
                    free(cur_file_name);
151
 
                cur_file_name = xstrdup(ftemp);
152
 
                free(ftemp);
153
 
            }
154
 
        }
155
 
    } else {
156
 
        cur_file_name = kpse_find_file(cur_file_name, kpse_sfd_format, 0);
157
 
    }
158
 
    callback_id = callback_defined(read_sfd_file_callback);
159
 
    if (callback_id > 0) {
160
 
        if (!(run_callback(callback_id, "S->bSd", cur_file_name,
161
 
                           &file_opened, &sfd_buffer, &sfd_size) &&
162
 
              file_opened && sfd_size > 0)) {
163
 
            pdftex_warn("cannot open SFD file for reading");
164
 
            cur_file_name = NULL;
165
 
            return NULL;
166
 
        }
167
 
    } else {
168
 
        if (!sfd_open()) {
169
 
            pdftex_warn("cannot open SFD file for reading");
170
 
            cur_file_name = NULL;
171
 
            return NULL;
172
 
        }
173
 
        sfd_read_file();
174
 
        sfd_close();
 
144
    cur_file_name = luatex_find_file(sfd_name, find_sfd_file_callback);
 
145
    if (cur_file_name) {
 
146
        callback_id = callback_defined(read_sfd_file_callback);
 
147
        if (callback_id > 0) {
 
148
            if (!(run_callback(callback_id, "S->bSd", cur_file_name,
 
149
                               &file_opened, &sfd_buffer, &sfd_size) &&
 
150
                  file_opened && sfd_size > 0)) {
 
151
                pdftex_warn("cannot open SFD file for reading");
 
152
                cur_file_name = NULL;
 
153
                return NULL;
 
154
            }
 
155
        } else {
 
156
            if (!sfd_open(cur_file_name)) {
 
157
                pdftex_warn("cannot open SFD file for reading");
 
158
                cur_file_name = NULL;
 
159
                return NULL;
 
160
            }
 
161
            sfd_read_file();
 
162
            sfd_close();
 
163
        }
175
164
    }
176
165
    tex_printf("{");
177
166
    tex_printf("%s", cur_file_name);