summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/main.cc
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/utils/asymptote/main.cc
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/main.cc')
-rw-r--r--Build/source/utils/asymptote/main.cc259
1 files changed, 0 insertions, 259 deletions
diff --git a/Build/source/utils/asymptote/main.cc b/Build/source/utils/asymptote/main.cc
deleted file mode 100644
index e4eb1dc5904..00000000000
--- a/Build/source/utils/asymptote/main.cc
+++ /dev/null
@@ -1,259 +0,0 @@
-/************
- *
- * This file is part of the vector graphics language Asymptote
- * Copyright (C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince
- * https://asymptote.sourceforge.io
- *
- * This program 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 3 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 Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- *************/
-
-#ifdef __CYGWIN__
-#define _POSIX_C_SOURCE 200809L
-#endif
-
-#include <iostream>
-#include <cstdlib>
-#include <cerrno>
-#include <sys/wait.h>
-#include <sys/types.h>
-
-#define GC_PTHREAD_SIGMASK_NEEDED
-
-#include "common.h"
-
-#ifdef HAVE_LIBSIGSEGV
-#include <sigsegv.h>
-#endif
-
-#include "errormsg.h"
-#include "fpu.h"
-#include "settings.h"
-#include "locate.h"
-#include "interact.h"
-#include "fileio.h"
-
-#include "stack.h"
-
-using namespace settings;
-
-using interact::interactive;
-
-namespace gl {
-extern bool glexit;
-}
-
-namespace run {
-void purge();
-}
-
-#ifdef PROFILE
-namespace vm {
-extern void dumpProfile();
-};
-#endif
-
-#ifdef HAVE_LIBSIGSEGV
-void stackoverflow_handler (int, stackoverflow_context_t)
-{
- em.runtime(vm::getPos());
- cerr << "Stack overflow" << endl;
- abort();
-}
-
-int sigsegv_handler (void *, int emergency)
-{
- if(!emergency) return 0; // Really a stack overflow
- em.runtime(vm::getPos());
-#ifdef HAVE_GL
- if(gl::glthread)
- cerr << "Stack overflow or segmentation fault: rerun with -nothreads"
- << endl;
- else
-#endif
- cerr << "Segmentation fault" << endl;
- abort();
-}
-#endif
-
-void setsignal(RETSIGTYPE (*handler)(int))
-{
-#ifdef HAVE_LIBSIGSEGV
- char mystack[16384];
- stackoverflow_install_handler(&stackoverflow_handler,
- mystack,sizeof (mystack));
- sigsegv_install_handler(&sigsegv_handler);
-#endif
- Signal(SIGBUS,handler);
- Signal(SIGFPE,handler);
-}
-
-void signalHandler(int)
-{
- // Print the position and trust the shell to print an error message.
- em.runtime(vm::getPos());
-
- Signal(SIGBUS,SIG_DFL);
- Signal(SIGFPE,SIG_DFL);
-}
-
-void interruptHandler(int)
-{
- em.Interrupt(true);
-}
-
-bool hangup=false;
-void hangup_handler(int sig)
-{
- hangup=true;
-}
-
-struct Args
-{
- int argc;
- char **argv;
- Args(int argc, char **argv) : argc(argc), argv(argv) {}
-};
-
-void *asymain(void *A)
-{
- setsignal(signalHandler);
- Args *args=(Args *) A;
- fpu_trap(trap());
-
- if(interactive) {
- Signal(SIGINT,interruptHandler);
- processPrompt();
- } else if (getSetting<bool>("listvariables") && numArgs()==0) {
- try {
- doUnrestrictedList();
- } catch(handled_error) {
- em.statusError();
- }
- } else {
- int n=numArgs();
- if(n == 0) {
- int inpipe=intcast(settings::getSetting<Int>("inpipe"));
- if(inpipe >= 0) {
- Signal(SIGHUP,hangup_handler);
- camp::openpipeout();
- fprintf(camp::pipeout,"\n");
- fflush(camp::pipeout);
- }
- while(true) {
- processFile("-",true);
- try {
- setOptions(args->argc,args->argv);
- } catch(handled_error) {
- em.statusError();
- }
- if(inpipe < 0) break;
- }
- } else {
- for(int ind=0; ind < n; ind++) {
- processFile(string(getArg(ind)),n > 1);
- try {
- if(ind < n-1)
- setOptions(args->argc,args->argv);
- } catch(handled_error) {
- em.statusError();
- }
- }
- }
- }
-
-#ifdef PROFILE
- vm::dumpProfile();
-#endif
-
- if(getSetting<bool>("wait")) {
- int status;
- while(wait(&status) > 0);
- }
-#ifdef HAVE_GL
-#ifdef HAVE_PTHREAD
- if(gl::glthread) {
-#ifdef __MSDOS__ // Signals are unreliable in MSWindows
- gl::glexit=true;
-#else
- pthread_kill(gl::mainthread,SIGURG);
- pthread_join(gl::mainthread,NULL);
-#endif
- }
-#endif
-#endif
- exit(em.processStatus() || interact::interactive ? 0 : 1);
-}
-
-void exitHandler(int)
-{
- exit(0);
-}
-
-int main(int argc, char *argv[])
-{
-#ifdef HAVE_LIBGSL
- unsetenv("GSL_RNG_SEED");
- unsetenv("GSL_RNG_TYPE");
-#endif
- setsignal(signalHandler);
-
- try {
- setOptions(argc,argv);
- } catch(handled_error) {
- em.statusError();
- }
-
- Args args(argc,argv);
-#ifdef HAVE_GL
-#ifdef __APPLE__
- bool usethreads=true;
-#else
- bool usethreads=view();
-#endif
- gl::glthread=usethreads ? getSetting<bool>("threads") : false;
-#if HAVE_PTHREAD
-#ifndef HAVE_LIBOSMESA
- if(gl::glthread) {
- pthread_t thread;
- try {
- if(pthread_create(&thread,NULL,asymain,&args) == 0) {
- gl::mainthread=pthread_self();
- sigset_t set;
- sigemptyset(&set);
- sigaddset(&set, SIGCHLD);
- pthread_sigmask(SIG_BLOCK, &set, NULL);
- while(true) {
- Signal(SIGURG,exitHandler);
- camp::glrenderWrapper();
- gl::initialize=true;
- }
- } else gl::glthread=false;
- } catch(std::bad_alloc&) {
- outOfMemory();
- }
- }
-#endif
-#endif
- gl::glthread=false;
-#endif
- asymain(&args);
-}
-
-#ifdef USEGC
-GC_API void GC_CALL GC_throw_bad_alloc() {
- std::bad_alloc();
-}
-#endif
-