summaryrefslogtreecommitdiff
path: root/Build/source/texk
diff options
context:
space:
mode:
authorAkira Kakuto <kakuto@fuk.kindai.ac.jp>2015-03-28 00:25:45 +0000
committerAkira Kakuto <kakuto@fuk.kindai.ac.jp>2015-03-28 00:25:45 +0000
commitc70ec3e0cfe1b1f8f8bcd593d8e826c381422f49 (patch)
tree795508e28bfc9d330fcf3943332781e63f279aed /Build/source/texk
parent28aff1e0215254537e412e6f8dea0b8cb7a9c04b (diff)
web2c/luatexdir: Sync with luatex trunk
git-svn-id: svn://tug.org/texlive/trunk@36652 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk')
-rw-r--r--Build/source/texk/web2c/luatexdir/NEWS2
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/lnewtokenlib.c22
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/lstatslib.c47
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/ltexlib.c4
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/luainit.w4
-rw-r--r--Build/source/texk/web2c/luatexdir/lua/luatex-api.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/luatex.c4
-rw-r--r--Build/source/texk/web2c/luatexdir/luazip/src/luazip.c17
-rw-r--r--Build/source/texk/web2c/luatexdir/pdf/pdfgen.w7
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/commands.h7
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/commands.w7
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/dumpdata.w2
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/mainbody.w4
-rw-r--r--Build/source/texk/web2c/luatexdir/tex/printing.w4
-rw-r--r--Build/source/texk/web2c/luatexdir/utils/utils.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/utils/utils.w26
16 files changed, 79 insertions, 82 deletions
diff --git a/Build/source/texk/web2c/luatexdir/NEWS b/Build/source/texk/web2c/luatexdir/NEWS
index 37986449445..3ae7880d3bb 100644
--- a/Build/source/texk/web2c/luatexdir/NEWS
+++ b/Build/source/texk/web2c/luatexdir/NEWS
@@ -2310,7 +2310,7 @@ Other news:
we probably introduced new problems as well).
* Most (all?) files now have a corrected Copyright header,
- and link in $Id: NEWS 5081 2014-11-07 18:38:33Z luigi $ and $URL: https://foundry.supelec.fr/svn/luatex/trunk/source/texk/web2c/luatexdir/NEWS $ into the object file.
+ and link in $Id: NEWS 5205 2015-03-27 19:28:05Z luigi $ and $URL: https://foundry.supelec.fr/svn/luatex/trunk/source/texk/web2c/luatexdir/NEWS $ into the object file.
* Some unnecessary files were removed from the distribution.
diff --git a/Build/source/texk/web2c/luatexdir/lua/lnewtokenlib.c b/Build/source/texk/web2c/luatexdir/lua/lnewtokenlib.c
index 1c5806d5814..df7bebf9c67 100644
--- a/Build/source/texk/web2c/luatexdir/lua/lnewtokenlib.c
+++ b/Build/source/texk/web2c/luatexdir/lua/lnewtokenlib.c
@@ -218,7 +218,7 @@ static int run_scan_dimen(lua_State * L)
if (t>0)
inf = lua_toboolean(L,1); /* inf values allowed ?*/
if (t>1)
- mu = lua_toboolean(L,2); /* mu units required ?*/
+ mu = lua_toboolean(L,2); /* mu units required ?*/
save_tex_scanner(texstate);
scan_dimen( mu,inf, false); /* arg3 = shortcut */
v = cur_val;
@@ -572,10 +572,11 @@ static int run_scan_token(lua_State * L)
/* experiment */
-/* [catcodetable] csname content : \def\csname{content} */
+/* [catcodetable] csname content : \def\csname{content} */
/* [catcodetable] csname content global : \gdef\csname{content} */
-/* [catcodetable] csname : \def\csname{} */
+/* [catcodetable] csname : \def\csname{} */
+/* TODO: check for a quick way to set a macro to empty (HH) */
static int set_macro(lua_State * L)
{
const char *name = null;
@@ -632,9 +633,9 @@ static int set_macro(lua_State * L)
t = (halfword) str2uni((const unsigned char *) str);
str += utf8_size(t);
cc = get_cat_code(ct,t);
- /* this is a relating simple converter; if more is needed one can just use */
+ /* this is a relating simple converter; if more is needed one can just use */
/* tex.print with a regular \def or \gdef and feed the string into the regular */
- /* scanner; */
+ /* scanner; */
if (cc == 0) {
/* we have a potential control sequence so we check for it */
int _lname = 0 ;
@@ -669,7 +670,7 @@ static int set_macro(lua_State * L)
}
} else {
/* just a character with some meaning, so \unknown becomes effectively */
- /* \\unknown assuming that \\ has some useful meaning of course */
+ /* \\unknown assuming that \\ has some useful meaning of course */
t = cc * (1<<21) + t ;
str = _name ;
}
@@ -684,11 +685,18 @@ static int set_macro(lua_State * L)
/* there is no fast_store_new_token(right_brace_token) needed */
define(cs, call_cmd + (a % 4), token_link(temp_token_head));
} else {
- define(cs, call_cmd + (a % 4), null);
+ halfword p ;
+ halfword q; /* new node being added to the token list via |store_new_token| */
+ p = temp_token_head;
+ set_token_info(p,null);
+ fast_store_new_token(left_brace_token);
+ fast_store_new_token(end_match_token);
+ define(cs, call_cmd + (a % 4), token_link(temp_token_head));
}
return 0;
}
+
static const struct luaL_Reg tokenlib[] = {
{"is_token", lua_tokenlib_is_token},
{"get_next", run_get_next},
diff --git a/Build/source/texk/web2c/luatexdir/lua/lstatslib.c b/Build/source/texk/web2c/luatexdir/lua/lstatslib.c
index bafe5f37a33..3d995cefa0e 100644
--- a/Build/source/texk/web2c/luatexdir/lua/lstatslib.c
+++ b/Build/source/texk/web2c/luatexdir/lua/lstatslib.c
@@ -35,7 +35,7 @@ const char *last_lua_error;
static const char *getbanner(void)
{
- return (const char *) ptexbanner;
+ return (const char *) luatex_banner;
}
static const char *getlogname(void)
@@ -43,10 +43,11 @@ static const char *getlogname(void)
return (const char *) texmf_log_name;
}
-static const char *get_pdftex_banner(void)
-{
- return (const char *) pdftex_banner;
-}
+/* Obsolete in 0.80.0 */
+/* static const char *get_pdftex_banner(void) */
+/* { */
+/* return (const char *) pdftex_banner; */
+/* } */
static const char *get_output_file_name(void)
{
@@ -84,15 +85,15 @@ static const char *luatexrevision(void)
return (const char *) (strrchr(luatex_version_string, '.') + 1);
}
-static lua_Number get_luatexhashchars(void)
+static lua_Number get_luatexhashchars(void)
{
return (lua_Number) LUAI_HASHLIMIT;
}
-static const char *get_luatexhashtype(void)
+static const char *get_luatexhashtype(void)
{
#ifdef LuajitTeX
- return (const char *)jithash_hashname;
+ return (const char *)jithash_hashname;
#else
return "lua";
#endif
@@ -181,6 +182,21 @@ static int luastate_max = 1; /* fixed value */
static int init_pool_ptr = 0;
static struct statistic stats[] = {
+
+ /* most likely accessed */
+
+ {"output_active", 'b', &output_active},
+ {"best_page_break", 'n', &best_page_break},
+
+ {"filename", 'S', (void *) &getfilename},
+ {"inputid", 'g', &(iname)},
+ {"linenumber", 'g', &line},
+
+ {"lasterrorstring", 'S', (void *) &getlasterror},
+ {"lastluaerrorstring", 'S', (void *) &getlastluaerror},
+
+ /* seldom or never accessed */
+
{"pdf_gone", 'N', &get_pdf_gone},
{"pdf_ptr", 'N', &get_pdf_ptr},
{"dvi_gone", 'g', &dvi_offset},
@@ -189,14 +205,13 @@ static struct statistic stats[] = {
{"output_file_name", 'S', (void *) &get_output_file_name},
{"log_name", 'S', (void *) &getlogname},
{"banner", 'S', (void *) &getbanner},
- {"pdftex_banner", 'S', (void *) &get_pdftex_banner},
+ {"pdftex_banner", 'S', (void *) &getbanner},
{"luatex_svn", 'G', &get_luatexsvn},
{"luatex_version", 'G', &get_luatexversion},
{"luatex_revision", 'S', (void *) &luatexrevision},
{"luatex_hashtype", 'S', (void *) &get_luatexhashtype},
{"luatex_hashchars", 'N', &get_luatexhashchars},
-
{"ini_version", 'b', &ini_version},
/*
* mem stat
@@ -243,12 +258,6 @@ static struct statistic stats[] = {
{"largest_used_mark", 'g', &biggest_used_mark},
- {"filename", 'S', (void *) &getfilename},
- {"inputid", 'g', &(iname)},
- {"linenumber", 'g', &line},
- {"lasterrorstring", 'S', (void *) &getlasterror},
- {"lastluaerrorstring", 'S', (void *) &getlastluaerror},
-
{"luabytecodes", 'g', &luabytecode_max},
{"luabytecode_bytes", 'g', &luabytecode_bytes},
{"luastates", 'g', &luastate_max},
@@ -256,8 +265,6 @@ static struct statistic stats[] = {
{"callbacks", 'g', &callback_count},
{"indirect_callbacks", 'g', &saved_callback_count},
- {"output_active", 'b', &output_active},
- {"best_page_break", 'n', &best_page_break},
{NULL, 0, 0}
};
@@ -268,7 +275,7 @@ static int stats_name_to_id(const char *name)
if (strcmp(stats[i].name, name) == 0)
return i;
}
- return 0;
+ return -1;
}
static int do_getstat(lua_State * L, int i)
@@ -333,7 +340,7 @@ static int getstats(lua_State * L)
if (lua_isstring(L, -1)) {
st = lua_tostring(L, -1);
i = stats_name_to_id(st);
- if (i > 0) {
+ if (i >= 0) {
return do_getstat(L, i);
}
}
diff --git a/Build/source/texk/web2c/luatexdir/lua/ltexlib.c b/Build/source/texk/web2c/luatexdir/lua/ltexlib.c
index 6082e337693..8883174ed2f 100644
--- a/Build/source/texk/web2c/luatexdir/lua/ltexlib.c
+++ b/Build/source/texk/web2c/luatexdir/lua/ltexlib.c
@@ -2415,8 +2415,8 @@ static int tex_run_boot(lua_State * L)
zwclose(fmt_file);
}
fix_date_and_time();
- if (format == NULL)
- make_pdftex_banner();
+ /* if (format == NULL) */
+ /* make_pdftex_banner(); */
random_seed = (microseconds * 1000) + (epochseconds % 1000000);
init_randoms(random_seed);
initialize_math();
diff --git a/Build/source/texk/web2c/luatexdir/lua/luainit.w b/Build/source/texk/web2c/luatexdir/lua/luainit.w
index 37ec143f5b4..139b888cb8e 100644
--- a/Build/source/texk/web2c/luatexdir/lua/luainit.w
+++ b/Build/source/texk/web2c/luatexdir/lua/luainit.w
@@ -852,6 +852,7 @@ static void mk_suffixlist(void)
}
#endif
+
@ @c
void lua_initialize(int ac, char **av)
{
@@ -882,8 +883,7 @@ void lua_initialize(int ac, char **av)
banner = xmalloc(len);
sprintf(banner, fmt, luatex_version_string, luatex_svn);
}
- ptexbanner = banner;
-
+ luatex_banner = banner;
kpse_invocation_name = kpse_program_basename(argv[0]);
/* be 'luac' */
diff --git a/Build/source/texk/web2c/luatexdir/lua/luatex-api.h b/Build/source/texk/web2c/luatexdir/lua/luatex-api.h
index 8d4f2a371d3..4313b812ae4 100644
--- a/Build/source/texk/web2c/luatexdir/lua/luatex-api.h
+++ b/Build/source/texk/web2c/luatexdir/lua/luatex-api.h
@@ -170,7 +170,7 @@ extern int luastate_bytes;
extern int callback_count;
extern int saved_callback_count;
-extern const char *ptexbanner;
+extern const char *luatex_banner;
extern const char *last_lua_error;
diff --git a/Build/source/texk/web2c/luatexdir/luatex.c b/Build/source/texk/web2c/luatexdir/luatex.c
index 396b1f934de..43a53861e7f 100644
--- a/Build/source/texk/web2c/luatexdir/luatex.c
+++ b/Build/source/texk/web2c/luatexdir/luatex.c
@@ -26,7 +26,7 @@
#define TeX
-int luatex_svn = 5195;
+int luatex_svn = 5208;
int luatex_version = 80; /* \.{\\luatexversion} */
int luatex_revision = '0'; /* \.{\\luatexrevision} */
int luatex_date_info = 2015031900; /* the compile date is now hardwired */
@@ -442,7 +442,7 @@ string dump_name;
/* The C version of the jobname, if given. */
const_string c_job_name;
-const char *ptexbanner;
+const char *luatex_banner;
#ifdef _MSC_VER
/* Invalid parameter handler */
diff --git a/Build/source/texk/web2c/luatexdir/luazip/src/luazip.c b/Build/source/texk/web2c/luatexdir/luazip/src/luazip.c
index eb731349f0d..a7248ae4759 100644
--- a/Build/source/texk/web2c/luatexdir/luazip/src/luazip.c
+++ b/Build/source/texk/web2c/luatexdir/luazip/src/luazip.c
@@ -97,15 +97,22 @@ static int zip_open (lua_State *L) {
return 1;
}
+
static int zip_close (lua_State *L) {
ZZIP_DIR* f = tofile(L, 1);
- if (zzip_dir_close(f) == 0)
+ if (zzip_dir_refcount(f) != 0)
{
- *(ZZIP_DIR**)lua_touserdata(L, 1) = NULL; /* mark file as close */
- lua_pushboolean(L, 1);
- }
- else
lua_pushboolean(L, 0);
+ } else {
+ if (zzip_dir_close(f) == 0)
+ {
+ *(ZZIP_DIR**)lua_touserdata(L, 1) = NULL; /* mark file as close */
+ lua_pushboolean(L, 1);
+ }
+ else {
+ lua_pushboolean(L, 0);
+ }
+ }
return 1;
}
diff --git a/Build/source/texk/web2c/luatexdir/pdf/pdfgen.w b/Build/source/texk/web2c/luatexdir/pdf/pdfgen.w
index 04bc321ba7f..c818c39e08a 100644
--- a/Build/source/texk/web2c/luatexdir/pdf/pdfgen.w
+++ b/Build/source/texk/web2c/luatexdir/pdf/pdfgen.w
@@ -1778,15 +1778,14 @@ void set_job_id(PDF pdf, int year, int month, int day, int time)
name_string = makecstring(job_name);
format_string = makecstring(format_ident);
- make_pdftex_banner();
slen = SMALL_BUF_SIZE +
- strlen(name_string) + strlen(format_string) + strlen(pdftex_banner);
+ strlen(name_string) + strlen(format_string) + strlen(luatex_banner);
s = xtalloc(slen, char);
/* The Web2c version string starts with a space. */
i = snprintf(s, slen,
"%.4d/%.2d/%.2d %.2d:%.2d %s %s %s",
year, month, day, time / 60, time % 60,
- name_string, format_string, pdftex_banner);
+ name_string, format_string, luatex_banner);
check_nprintf(i, slen);
pdf->job_id_string = xstrdup(s);
xfree(s);
@@ -2355,7 +2354,7 @@ static int pdf_print_info(PDF pdf, int luatexversion,
if (!trapped_given) {
pdf_dict_add_name(pdf, "Trapped", "False");
}
- pdf_dict_add_string(pdf, "PTEX.Fullbanner", pdftex_banner);
+ pdf_dict_add_string(pdf, "PTEX.Fullbanner", luatex_banner);
pdf_end_dict(pdf);
pdf_end_obj(pdf);
return k;
diff --git a/Build/source/texk/web2c/luatexdir/tex/commands.h b/Build/source/texk/web2c/luatexdir/tex/commands.h
index 52857215b51..0a0663f428b 100644
--- a/Build/source/texk/web2c/luatexdir/tex/commands.h
+++ b/Build/source/texk/web2c/luatexdir/tex/commands.h
@@ -235,9 +235,10 @@ typedef enum {
font_name_code, /* command code for \.{\\fontname} */
etex_code, /* command code for \.{\\eTeXVersion} */
format_name_code, /* command code for \.{\\AlephVersion} */
- pdftex_revision_code, /* command code for \.{\\pdftexrevision} */
+ pdftex_revision_code, /* command code for \.{\\pdftexrevision}: OBSOLETE */
# define pdftex_first_expand_code pdftex_revision_code /* base for \pdfTeX's command codes */
- pdftex_banner_code, /* command code for \.{\\pdftexbanner} */
+ /*pdftex_banner_code,*/ /* command code for \.{\\pdftexbanner}: OBSOLETE */
+ luatex_banner_code, /* command code for \.{\\luatexbanner}: */
pdf_font_name_code, /* command code for \.{\\pdffontname} */
pdf_font_objnum_code, /* command code for \.{\\pdffontobjnum} */
pdf_font_size_code, /* command code for \.{\\pdffontsize} */
@@ -273,7 +274,7 @@ typedef enum {
last_node_type_code, /* code for \.{\\lastnodetype} */
input_line_no_code, /* code for \.{\\inputlineno} */
badness_code, /* code for \.{\\badness} */
- pdftex_version_code, /* code for \.{\\pdftexversion} */
+ pdftex_version_code, /* code for \.{\\pdftexversion} */ /*OBSOLETE */
# define pdftex_first_rint_code pdftex_version_code /* base for \pdfTeX's command codes */
pdf_last_obj_code, /* code for \.{\\pdflastobj} */
pdf_last_xform_code, /* code for \.{\\pdflastxform} */
diff --git a/Build/source/texk/web2c/luatexdir/tex/commands.w b/Build/source/texk/web2c/luatexdir/tex/commands.w
index 1ba433884b0..fe52171a438 100644
--- a/Build/source/texk/web2c/luatexdir/tex/commands.w
+++ b/Build/source/texk/web2c/luatexdir/tex/commands.w
@@ -448,7 +448,7 @@ void initialize_commands(void)
primitive_tex("lastskip", last_item_cmd, lastskip_code, 0);
primitive_tex("inputlineno", last_item_cmd, input_line_no_code, 0);
primitive_tex("badness", last_item_cmd, badness_code, 0);
- primitive_pdftex("pdftexversion", last_item_cmd, pdftex_version_code, 0);
+ primitive_pdftex("pdftexversion", last_item_cmd, luatex_version_code, 0); /*OBSOLETE */
primitive_luatex("luatexversion", last_item_cmd, luatex_version_code, 0);
primitive_pdftex("pdflastobj", last_item_cmd, pdf_last_obj_code, 0);
primitive_pdftex("pdflastxform", last_item_cmd, pdf_last_xform_code, 0);
@@ -471,10 +471,11 @@ void initialize_commands(void)
primitive_etex("eTeXVersion", convert_cmd, etex_code, 0);
primitive_tex("fontname", convert_cmd, font_name_code, 0);
primitive_luatex("fontid", convert_cmd, font_id_code, 0);
- primitive_pdftex("pdftexrevision", convert_cmd, pdftex_revision_code, 0);
+ primitive_pdftex("pdftexrevision", convert_cmd, luatex_revision_code, 0); /*OBSOLETE*/
primitive_luatex("luatexrevision", convert_cmd, luatex_revision_code, 0);
primitive_luatex("luatexdatestamp", convert_cmd, luatex_date_code, 0);
- primitive_pdftex("pdftexbanner", convert_cmd, pdftex_banner_code, 0);
+ primitive_pdftex("pdftexbanner", convert_cmd, luatex_banner_code, 0); /*OBSOLETE*/
+ primitive_pdftex("luatexbanner", convert_cmd, luatex_banner_code, 0); /*will replace pdftexbanner*/
primitive_pdftex("pdffontname", convert_cmd, pdf_font_name_code, 0);
primitive_pdftex("pdffontobjnum", convert_cmd, pdf_font_objnum_code, 0);
primitive_pdftex("pdffontsize", convert_cmd, pdf_font_size_code, 0);
diff --git a/Build/source/texk/web2c/luatexdir/tex/dumpdata.w b/Build/source/texk/web2c/luatexdir/tex/dumpdata.w
index 674a7cd7ae4..c3ac9dbf37a 100644
--- a/Build/source/texk/web2c/luatexdir/tex/dumpdata.w
+++ b/Build/source/texk/web2c/luatexdir/tex/dumpdata.w
@@ -506,7 +506,7 @@ boolean load_fmt_file(const char *fmtname)
undump_font(k);
}
undump_math_data();
- make_pdftex_banner();
+ /*make_pdftex_banner();*/
/* Undump the hyphenation tables */
undump_language_data();
diff --git a/Build/source/texk/web2c/luatexdir/tex/mainbody.w b/Build/source/texk/web2c/luatexdir/tex/mainbody.w
index 56191cbe25e..a98bd74a9e0 100644
--- a/Build/source/texk/web2c/luatexdir/tex/mainbody.w
+++ b/Build/source/texk/web2c/luatexdir/tex/mainbody.w
@@ -446,8 +446,8 @@ void main_body(void)
else
buffer[ilimit] = (packed_ASCII_code) int_par(end_line_char_code);
fix_date_and_time();
- if (ini_version)
- make_pdftex_banner();
+ /*if (ini_version)*/
+ /* make_pdftex_banner();*/
random_seed = (microseconds * 1000) + (epochseconds % 1000000);
init_randoms(random_seed);
initialize_math();
diff --git a/Build/source/texk/web2c/luatexdir/tex/printing.w b/Build/source/texk/web2c/luatexdir/tex/printing.w
index 0cc4185823a..72889583191 100644
--- a/Build/source/texk/web2c/luatexdir/tex/printing.w
+++ b/Build/source/texk/web2c/luatexdir/tex/printing.w
@@ -21,7 +21,7 @@
#include "ptexlib.h"
-#include "lua/luatex-api.h" /* for ptexbanner */
+#include "lua/luatex-api.h" /* for luatex_banner */
@ @c
#define font_id_text(A) cs_text(font_id_base+(A))
@@ -533,7 +533,7 @@ void log_banner(const char *v, int ver)
@ @c
void print_version_banner(void)
{
- fprintf(term_out, "%s", ptexbanner);
+ fprintf(term_out, "%s", luatex_banner);
}
@ The procedure |print_esc| prints a string that is preceded by
diff --git a/Build/source/texk/web2c/luatexdir/utils/utils.h b/Build/source/texk/web2c/luatexdir/utils/utils.h
index 135bd5dafc0..6818c33c765 100644
--- a/Build/source/texk/web2c/luatexdir/utils/utils.h
+++ b/Build/source/texk/web2c/luatexdir/utils/utils.h
@@ -24,7 +24,6 @@
extern int epochseconds;
extern int microseconds;
-extern char *pdftex_banner;
void make_subset_tag(fd_entry *);
@@ -32,7 +31,6 @@ __attribute__ ((format(printf, 1, 2)))
void tex_printf(const char *, ...);
void garbage_warning(void);
-void make_pdftex_banner(void);
size_t xfwrite(void *, size_t size, size_t nmemb, FILE *);
int xfflush(FILE *);
int xgetc(FILE *);
diff --git a/Build/source/texk/web2c/luatexdir/utils/utils.w b/Build/source/texk/web2c/luatexdir/utils/utils.w
index c1ada7c5e93..131ee3b6bc2 100644
--- a/Build/source/texk/web2c/luatexdir/utils/utils.w
+++ b/Build/source/texk/web2c/luatexdir/utils/utils.w
@@ -35,7 +35,7 @@
#include "zlib.h"
#include "md5.h"
-#include "lua/luatex-api.h" /* for ptexbanner */
+#include "lua/luatex-api.h" /* for luatex_banner */
#include "png.h"
#include "mplib.h"
@@ -195,30 +195,6 @@ void garbage_warning(void)
remove_pdffile(static_pdf);
}
-@ @c
-char *pdftex_banner = NULL;
-
-@ @c
-void make_pdftex_banner(void)
-{
- char *s;
- unsigned int slen;
- int i;
-
- if (pdftex_banner != NULL)
- return;
-
- slen = (unsigned int) (SMALL_BUF_SIZE +
- strlen(ptexbanner) +
- strlen(versionstring) +
- strlen(kpathsea_version_string));
- s = xtalloc(slen, char);
- /* The Web2c version string starts with a space. */
- i = snprintf(s, slen,
- "%s%s %s", ptexbanner, versionstring, kpathsea_version_string);
- check_nprintf(i, slen);
- pdftex_banner = s;
-}
@ @c
size_t xfwrite(void *ptr, size_t size, size_t nmemb, FILE * stream)