summaryrefslogtreecommitdiff
path: root/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/util.cc')
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/util.cc299
1 files changed, 0 insertions, 299 deletions
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/util.cc b/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/util.cc
deleted file mode 100644
index 920c5c001d2..00000000000
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/otftotfm/util.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-/* util.{cc,hh} -- various bits
- *
- * Copyright (c) 2003-2019 Eddie Kohler
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version. This program 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 General
- * Public License for more details.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-#include "util.hh"
-#include <lcdf/error.hh>
-#include <lcdf/straccum.hh>
-#include <lcdf/vector.hh>
-#include <ctype.h>
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#if defined(_MSDOS) || defined(_WIN32)
-# include <io.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-String
-read_file(String filename, ErrorHandler *errh, bool warning)
-{
- FILE *f;
- if (!filename || filename == "-") {
- filename = "<stdin>";
- f = stdin;
-#if defined(_MSDOS) || defined(_WIN32)
- // Set the file mode to binary
- _setmode(_fileno(f), _O_BINARY);
-#endif
- } else if (!(f = fopen(filename.c_str(), "rb"))) {
- errh->xmessage((warning ? errh->e_warning : errh->e_error) + ErrorHandler::make_landmark_anno(filename), strerror(errno));
- return String();
- }
-
- StringAccum sa;
- int amt;
- do {
- if (char *x = sa.reserve(8192)) {
- amt = fread(x, 1, 8192, f);
- sa.adjust_length(amt);
- } else
- amt = 0;
- } while (amt != 0);
- if (!feof(f) || ferror(f))
- errh->xmessage((warning ? errh->e_warning : errh->e_error) + ErrorHandler::make_landmark_anno(filename), strerror(errno));
- if (f != stdin)
- fclose(f);
- return sa.take_string();
-}
-
-String
-printable_filename(const String &s)
-{
- if (!s || s == "-")
- return String::make_stable("<stdin>");
- else
- return s;
-}
-
-String
-pathname_filename(const String &path)
-{
- int slash = path.find_right('/');
- if (slash >= 0 && slash != path.length() - 1)
- return path.substring(slash + 1);
- else
- return path;
-}
-
-static String
-simplify_filename(String x)
-{
- while (x.substring(0, 2) == "./")
- x = x.substring(2);
- int pos;
- while ((pos = x.find_left("/./")) >= 0)
- x = x.substring(0, pos) + x.substring(pos + 2);
- return x;
-}
-
-bool
-same_filename(const String &a, const String &b)
-{
- return simplify_filename(a) == simplify_filename(b);
-}
-
-String
-shell_quote(const String &str)
-{
- if (!str)
- return String::make_stable("\"\"");
-
- const char *begin = str.begin();
- const char *end = str.end();
- StringAccum sa;
-
-#if defined(_MSDOS) || defined(_WIN32)
- sa.append('\"');
-
- for (const char *s = begin; s < end; ++s)
- if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '\\' || *s == ':' || *s == '.')
- /* do nothing */;
- else if (*s == '\"') {
- sa.append(begin, s);
- sa.append("\"\"\"", 3);
- begin = s + 1;
- } else {
- sa.append(begin, s + 1);
- begin = s + 1;
- }
-
- if (sa.length() > 1) {
- sa.append(begin, end);
- sa.append('\"');
- return sa.take_string();
- }
-#else
- for (const char *s = begin; s < end; s++)
- if (isalnum((unsigned char) *s) || *s == '_' || *s == '-' || *s == '+' || *s == '/' || *s == ':' || *s == '.')
- /* do nothing */;
- else {
- sa.append(begin, s);
- sa.append('\\');
- begin = s;
- }
-
- if (sa.length()) {
- sa.append(begin, end);
- return sa.take_string();
- }
-#endif
-
- return str;
-}
-
-int
-mysystem(const char *command, ErrorHandler *errh)
-{
- if (no_create) {
- errh->message("would run %s", command);
- return 0;
- } else {
- if (verbose)
- errh->message("running %s", command);
- return system(command);
- }
-}
-
-FILE*
-mypopen(const char* command, const char* type, ErrorHandler* errh)
-{
- if (no_create) {
- errh->message("would run %s", command);
- return popen("true", type);
- } else {
- if (verbose)
- errh->message("running %s", command);
- return popen(command, type);
- }
-}
-
-#if !HAVE_MKSTEMP
-static const char *
-my_tmpnam()
-{
-# ifndef WIN32
- return tmpnam(0);
-# else
- const char *dir = getenv("TEMP");
- return _tempnam(dir ? dir : ".", "otftmp.");
-# endif
-}
-#endif
-
-int
-temporary_file(String &filename, ErrorHandler *errh)
-{
- if (no_create)
- return 0; // random number suffices
-
-#if HAVE_MKSTEMP
- const char *tmpdir = getenv("TMPDIR");
- if (tmpdir)
- filename = String(tmpdir) + "/otftotfm.XXXXXX";
- else {
-# ifdef P_tmpdir
- filename = P_tmpdir "/otftotfm.XXXXXX";
-# else
- filename = "/tmp/otftotfm.XXXXXX";
-# endif
- }
- int fd = mkstemp(filename.mutable_c_str());
- if (fd < 0)
- errh->error("temporary file %<%s%>: %s", filename.c_str(), strerror(errno));
- return fd;
-#else // !HAVE_MKSTEMP
- for (int tries = 0; tries < 5; tries++) {
- if (!(filename = my_tmpnam()))
- return errh->error("cannot create temporary file");
-# ifdef O_EXCL
- int fd = ::open(filename.c_str(), O_RDWR | O_CREAT | O_EXCL | O_TRUNC, 0600);
-# else
- int fd = ::open(filename.c_str(), O_RDWR | O_CREAT | O_TRUNC, 0600);
-# endif
- if (fd >= 0)
- return fd;
- }
- return errh->error("temporary file %<%s%>: %s", filename.c_str(), strerror(errno));
-#endif
-}
-
-bool
-parse_unicode_number(const char* begin, const char* end, int require_prefix, uint32_t& result)
-{
- bool allow_lower = (require_prefix == 1);
- if (require_prefix < 0)
- /* do not look for prefix */;
- else if (begin + 7 == end && begin[0] == 'u' && begin[1] == 'n' && begin[2] == 'i')
- begin += 3;
- else if (begin + 5 <= end && begin + 7 >= end && begin[0] == 'u')
- begin++;
- else if (begin + 3 <= end && begin + 8 >= end && begin[0] == 'U' && begin[1] == '+')
- begin += 2, allow_lower = true;
- else if (require_prefix > 1)
- /* some prefix was required */
- return false;
-
- uint32_t value;
- for (value = 0; begin < end; begin++)
- if (*begin >= '0' && *begin <= '9')
- value = (value << 4) | (*begin - '0');
- else if (*begin >= 'A' && *begin <= 'F')
- value = (value << 4) | (*begin - 'A' + 10);
- else if (allow_lower && *begin >= 'a' && *begin <= 'f')
- value = (value << 4) | (*begin - 'a' + 10);
- else
- return false;
-
- if (value > 0
- && (value <= 0xD7FF || (value >= 0xE000 && value <= 0x10FFFF))) {
- result = value;
- return true;
- } else
- return false;
-}
-
-#if 0
-String
-shell_command_output(String cmdline, const String &input, ErrorHandler *errh, bool strip_newlines)
-{
- FILE *f = tmpfile();
- if (!f)
- errh->fatal("cannot create temporary file: %s", strerror(errno));
- ignore_result(fwrite(input.data(), 1, input.length(), f));
- fflush(f);
- rewind(f);
-
- String new_cmdline = cmdline + " 0<&" + String(fileno(f));
- FILE *p = popen(new_cmdline.c_str(), "r");
- if (!p)
- errh->fatal("%<%s%>: %s", cmdline.c_str(), strerror(errno));
-
- StringAccum sa;
- int amt;
- do {
- if (char *x = sa.reserve(2048)) {
- amt = fread(x, 1, 2048, p);
- sa.adjust_length(amt);
- } else
- amt = 0;
- } while (amt != 0 && sa.length() < 200000);
- if (amt != 0)
- errh->warning("%<%s%> output too long, truncated", cmdline.c_str());
- else if (!feof(p) || ferror(p))
- errh->error("%<%s%>: %s", cmdline.c_str(), strerror(errno));
-
- fclose(f);
- pclose(p);
- while (strip_newlines && sa && (sa.back() == '\n' || sa.back() == '\r'))
- sa.pop_back();
- return sa.take_string();
-}
-#endif