Changeset 480 in Sophya for trunk/SophyaLib/SysTools


Ignore:
Timestamp:
Oct 20, 1999, 12:25:32 PM (26 years ago)
Author:
ansari
Message:

MAJ / PEIDA 3.8 , Reza 20/10/99

Location:
trunk/SophyaLib/SysTools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/SysTools/pdlmgr.cc

    r296 r480  
    2323if ( (path.length() > 0) && (path[path.length()] != '/')  ) GetTmpDir() = path + '/';
    2424else GetTmpDir() = path;
     25#if defined(OSF1) || defined(Linux) || defined(SunOS)
     26  string cmd = "LD_LIBRARY_PATH=";
     27  char* varenv=NULL;
     28  varenv=getenv("LD_LIBRARY_PATH");
     29#elif defined(IRIX64)
     30  string cmd = "LD_LIBRARYN32_PATH=";
     31  char* varenv=NULL;
     32  varenv=getenv("LD_LIBRARYN32_PATH");
     33
     34  if (varenv == NULL) {
     35    cmd += '.'; 
     36    if (path.length() > 0)  cmd += ':' + path;
     37    }
     38  else {
     39    if (varenv[0] != '.') cmd += ".:";
     40    if (path.length() > 0)  cmd += path + ':';
     41    cmd += varenv;
     42    putenv(cmd.c_str());
     43    }
     44#elif defined(AIX)
     45  string cmd = "LIBPATH=";
     46  char* varenv=NULL;
     47  varenv=getenv("LIBPATH");
     48  if (varenv == NULL) {
     49    cmd += '.'; 
     50    if (path.length() > 0)  cmd += ':' + path;
     51    cmd += ":/usr/lib:/lib";
     52    }
     53  else {
     54    if (varenv[0] != '.') cmd += ".:";
     55    if (path.length() > 0)  cmd += path + ':';
     56    cmd += varenv;
     57    putenv(const_cast<char *>(cmd.c_str()));
     58    }
     59
     60#endif
    2561return;
    2662}
     
    4985
    5086// Compilation du fichier
    51 #if defined(OSF1) || defined(Linux)
     87#ifndef __mac__
    5288cmd = "cc -c -o " + fnameobj + " " + fname;
     89#else
     90cmd = "Il faut compiler !!!" + fnameobj + " " + fname;
    5391#endif
    5492rc = system(cmd.c_str());
     
    68106#if defined(OSF1)
    69107  cmd = "ld -shared -o " + fnameso + " -all " + fnameobj + " -none -lm -lc";
    70 #else
     108#elif defined(Linux)
    71109  cmd = "ld -shared -o " + fnameso + " " + fnameobj + " -lm -lc";
     110#elif defined(SunOS)
     111  cmd = "ld -G -o " + fnameso + " " + fnameobj + " -lm -lc";
     112#elif defined(IRIX64)
     113  cmd = "ld -shared -o " + fnameso + " " + fnameobj + " -lm -lc";
     114#elif defined(AIX)
     115  cmd = "ld -G -bnogc -bexpall -bM:1L -o " + fnameso + " " + fnameobj;
     116#elif defined(HPUX)
     117  cmd = "ld -b -o " + fnameso + " " + fnameobj + " -lm -lc";
     118#else
     119  cmd = "ld -o " + fnameso + " " + fnameobj + " -lm -lc";
    72120#endif
    73121rc = system(cmd.c_str());
     
    76124  return(NULL);
    77125  }
    78 
    79126PDynLinkMgr* rdyn = new PDynLinkMgr(fnameso, false);
    80127rdyn->copy = true;
     
    117164soName = fnameso;
    118165
    119 #if defined(OSF1) || defined(Linux)
     166#if defined(HPUX)
     167dlhandle = NULL;
     168cerr << "PDynLinkMgr::PDynLinkMgr() Not yet available on HP-UX " << endl;
     169return;
     170#else
    120171dlhandle =  dlopen(fnameso.c_str(), RTLD_NOW);
    121172if (dlhandle == NULL) {
     
    132183PDynLinkMgr::~PDynLinkMgr()
    133184{
    134 #if defined(OSF1) || defined(Linux)
     185#if defined(HPUX)
     186cerr << "PDynLinkMgr::~PDynLinkMgr() Not yet available on HP-UX " << endl;
     187return;
     188#else
    135189if (dlhandle) dlclose(dlhandle);    dlhandle = NULL;
    136 #endif
    137190if (copy) {
    138191  string cmd = "rm -f " + soName;
    139192  system(cmd.c_str());
    140193  }
     194#endif
    141195}
    142196
     
    145199{
    146200DlFunction f = NULL;
    147 #if defined(OSF1) || defined(Linux)
     201#if defined(HPUX)
     202cerr << "PDynLinkMgr::GetFunction() Not yet available on HP-UX " << endl;
     203return f;
     204#else
    148205if (dlhandle != NULL) 
    149206  f = (DlFunction)dlsym(dlhandle, funcname.c_str());
    150 #endif
    151 if (f == NULL) cerr << "PDynLinkMgr::PDynLinkMgr(): Error linking " << funcname << endl;
     207if (f == NULL) cerr << "PDynLinkMgr::GetFunction(): Error linking " << funcname << endl;
    152208return(f);
    153 }
    154 
     209#endif
     210}
     211
  • trunk/SophyaLib/SysTools/pdlmgr.h

    r241 r480  
    88#include "machdefs.h"
    99#include <string>
    10 #if defined(__KCC__)
    11 using std::string ;
    12 #endif
    1310
    1411
     
    4138#if defined(HPUX)
    4239  shl_t dlhandle;
    43 #else
     40#else 
    4441  void * dlhandle;
    4542#endif
  • trunk/SophyaLib/SysTools/periodic.h

    r241 r480  
    66#include "machdefs.h"
    77#include <list>
    8 #if defined(__KCC__)
    9 #include <list.h>
    10 #endif
    118
    129class Periodic;
  • trunk/SophyaLib/SysTools/psighand.cc

    r245 r480  
    55#include <signal.h>
    66#include "psighand.h"
    7 #include "pexceptions.h" 
     7#include "pexceptions.h"
    88
    9 using namespace PlanckDPC;
    10 
    11 static bool sigprstate[5] = {false, false, false, false};
     9static bool sigprstate[6] = {false, false, false, false, false, false};
    1210
    1311void PeidaProcessSignal(int s);
    1412
    1513/* Nouvelle-Fonction */
    16 void PeidaConfigureSignalhandling(bool cfpe, bool csegv, bool cquit, bool cusr1, bool cusr2)
     14void PeidaConfigureSignalhandling(bool cfpe, bool csegv, bool cint, bool cquit, bool cusr1, bool cusr2)
    1715{
    1816  struct sigaction ae, ad;
     
    5351    sigprstate[1] = csegv;
    5452    }
     53
     54// SIGINT
     55  if (sigprstate[2] != cint) {
     56    if (cquit)   {
     57      sigaction(SIGINT, &ae, NULL);
     58      puts("PeidaConfigureSignalhandling(): Activating SIGINT handling (-> throw) ...");
     59      }
     60    else  {
     61      sigaction(SIGINT, &ad, NULL);
     62      puts("PeidaConfigureSignalhandling(): Back to default SIGINT handling ...");
     63      }
     64    sigprstate[2] = cint;
     65    }
     66 
    5567// SIGQUIT
    56   if (sigprstate[2] != cquit) {
     68  if (sigprstate[3] != cquit) {
    5769    if (cquit)   {
    5870      sigaction(SIGQUIT, &ae, NULL);
     
    6375      puts("PeidaConfigureSignalhandling(): Back to default SIGQUIT handling ...");
    6476      }
    65     sigprstate[2] = cquit;
     77    sigprstate[3] = cquit;
    6678    }
    6779 
    6880// SIGUSR1
    69   if (sigprstate[3] != cusr1) {
     81  if (sigprstate[4] != cusr1) {
    7082    if (cusr1)   {
    7183      sigaction(SIGUSR1, &ae, NULL);
     
    7688      puts("PeidaConfigureSignalhandling(): Back to default SIGUSR1 handling ...");
    7789      }
    78     sigprstate[3] = cusr1;
     90    sigprstate[4] = cusr1;
    7991    }
    80 // SIGUSR1
    81   if (sigprstate[4] != cusr2) {
     92// SIGUSR2
     93  if (sigprstate[5] != cusr2) {
    8294    if (cusr2)   {
    8395      sigaction(SIGUSR2, &ae, NULL);
     
    88100      puts("PeidaConfigureSignalhandling(): Back to default SIGUSR2 handling ...");
    89101      }
    90     sigprstate[4] = cusr2;
     102    sigprstate[5] = cusr2;
    91103    }   
    92104}
     
    94106void PeidaProcessSignal(int s)
    95107{
     108string msg;
    96109switch(s)
    97110  {
    98111  case SIGFPE :
    99112    puts("PeidaProcessSignal: ###Signal SIGFPE catched, throw catchedSIGFPE ###");
    100     throw CaughtSignalExc("SIGFPE");
     113    msg = "Caught SIGFPE";
     114    throw ( CaughtSignalExc(msg, s) );
    101115  case SIGSEGV :
    102116    puts("PeidaProcessSignal: ###Signal SIGSEGV catched, throw catchedSIGSEGV ###");
    103     throw CaughtSignalExc("SIGSEGV");
     117    msg = "Caught SIGSEGV";
     118    throw ( CaughtSignalExc(msg, s) );
    104119  case SIGINT :
    105120    puts("PeidaProcessSignal: ###Signal SIGINT catched, throw catchedSIGINT ###");
    106     throw CaughtSignalExc("SIGINT");
     121    msg = "Caught SIGINT";
     122    throw ( CaughtSignalExc(msg, s) );
    107123  case SIGQUIT :
    108124    puts("PeidaProcessSignal: ###Signal SIGQUIT catched, throw catchedSIGQUIT ###");
    109     throw CaughtSignalExc("SIGQUIT");
     125    msg = "Caught SIGQUIT";
     126    throw ( CaughtSignalExc(msg, s) );
    110127  case SIGUSR1 :
    111128    puts("PeidaProcessSignal: ###Signal SIGUSR1 catched, throw catchedSIGUSR1 ###");
    112     throw CaughtSignalExc("SIGUSR1");
     129    msg = "Caught SIGUSR1";
     130    throw ( CaughtSignalExc(msg, s) );
    113131  case SIGUSR2 :
    114132    puts("PeidaProcessSignal: ###Signal SIGUSR2 catched, throw catchedSIGUSR2 ###");
    115     throw CaughtSignalExc("SIGUSR2");
     133    msg = "Caught SIGUSR2";
     134    throw ( CaughtSignalExc(msg, s) );
    116135  default :
    117136    printf("PeidaProcessSignal: ###Signal %d catched, throw  inconsistentErr ### \n", s);
    118     throw CaughtSignalExc("???");
     137    msg = "Caught SIG???";
     138    throw ( CaughtSignalExc(msg, s) );
    119139  }
     140
     141// return;
    120142}
  • trunk/SophyaLib/SysTools/psighand.h

    r241 r480  
    66
    77#include "machdefs.h"
    8 void PeidaConfigureSignalhandling(bool cfpe=false, bool csegv=false, bool cquit=false, bool cusr1=false, bool cusr2=false);
     8void PeidaConfigureSignalhandling(bool cfpe=false, bool csegv=false,
     9                                  bool cint=false, bool cquit=false,
     10                                  bool cusr1=false, bool cusr2=false);
    911#endif
Note: See TracChangeset for help on using the changeset viewer.