diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-01-16 11:45:40 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-01-16 11:45:40 +0000 |
commit | d0982ab7a20bec41935e679cda7f27ff4e01df15 (patch) | |
tree | 0b57d73bacf1a3e50a19ebbbd666bc0bcb8325db /Build/source/texk/psutils/paper-size.c | |
parent | 0e7e4d3fcb2c0a18212824f21ffb8d8e11415c45 (diff) |
psutils 1.23
git-svn-id: svn://tug.org/texlive/trunk@32688 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/psutils/paper-size.c')
-rw-r--r-- | Build/source/texk/psutils/paper-size.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Build/source/texk/psutils/paper-size.c b/Build/source/texk/psutils/paper-size.c new file mode 100644 index 00000000000..2a0ed5b3749 --- /dev/null +++ b/Build/source/texk/psutils/paper-size.c @@ -0,0 +1,68 @@ +/* paper-size.c: TeX Live specific definition of paper_size() + + Copyright 2014 Peter Breitenlohner. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this library; if not, see <http://www.gnu.org/licenses/>. */ + +#include <config.h> +#include <psutil.h> +#include <paper.h> + +#define CONFIG_NAME "paper.cfg" +#define MAX_PAPER 16 +static char default_paper[MAX_PAPER]; + +static void +do_init (void) +{ + static int inited = 0; + int ch, i = 0; + char *fqpn; + FILE *fp = NULL; + + if (inited) + return; + + paperinit (); + + fqpn = kpse_find_file (CONFIG_NAME, kpse_program_text_format, false); + if (fqpn) + fp = fopen (fqpn, "r"); + if (!fp) + die ("can't open config file %s", CONFIG_NAME); + + while (i < MAX_PAPER - 1 && + (ch = fgetc (fp)) > 0 && ch != ' ' && ch != '\n' && ch != '\r') + default_paper[i++] = ch; + default_paper[i] = 0; + if (i == 0) + die ("can't read default papersize from file %s", CONFIG_NAME); + + inited = 1; +} + +int +paper_size (const char *paper_name, double *width, double *height) +{ + const struct paper *pi; + + do_init (); + + if (!(pi = paperinfo (paper_name ? paper_name : default_paper))) + return 0; + + *width = paperpswidth (pi); + *height = paperpsheight (pi); + return 1; +} |