Changeset 480 in Sophya for trunk/SophyaLib/SysTools
- Timestamp:
- Oct 20, 1999, 12:25:32 PM (26 years ago)
- Location:
- trunk/SophyaLib/SysTools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SysTools/pdlmgr.cc
r296 r480 23 23 if ( (path.length() > 0) && (path[path.length()] != '/') ) GetTmpDir() = path + '/'; 24 24 else 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 25 61 return; 26 62 } … … 49 85 50 86 // Compilation du fichier 51 #if defined(OSF1) || defined(Linux)87 #ifndef __mac__ 52 88 cmd = "cc -c -o " + fnameobj + " " + fname; 89 #else 90 cmd = "Il faut compiler !!!" + fnameobj + " " + fname; 53 91 #endif 54 92 rc = system(cmd.c_str()); … … 68 106 #if defined(OSF1) 69 107 cmd = "ld -shared -o " + fnameso + " -all " + fnameobj + " -none -lm -lc"; 70 #el se108 #elif defined(Linux) 71 109 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"; 72 120 #endif 73 121 rc = system(cmd.c_str()); … … 76 124 return(NULL); 77 125 } 78 79 126 PDynLinkMgr* rdyn = new PDynLinkMgr(fnameso, false); 80 127 rdyn->copy = true; … … 117 164 soName = fnameso; 118 165 119 #if defined(OSF1) || defined(Linux) 166 #if defined(HPUX) 167 dlhandle = NULL; 168 cerr << "PDynLinkMgr::PDynLinkMgr() Not yet available on HP-UX " << endl; 169 return; 170 #else 120 171 dlhandle = dlopen(fnameso.c_str(), RTLD_NOW); 121 172 if (dlhandle == NULL) { … … 132 183 PDynLinkMgr::~PDynLinkMgr() 133 184 { 134 #if defined(OSF1) || defined(Linux) 185 #if defined(HPUX) 186 cerr << "PDynLinkMgr::~PDynLinkMgr() Not yet available on HP-UX " << endl; 187 return; 188 #else 135 189 if (dlhandle) dlclose(dlhandle); dlhandle = NULL; 136 #endif137 190 if (copy) { 138 191 string cmd = "rm -f " + soName; 139 192 system(cmd.c_str()); 140 193 } 194 #endif 141 195 } 142 196 … … 145 199 { 146 200 DlFunction f = NULL; 147 #if defined(OSF1) || defined(Linux) 201 #if defined(HPUX) 202 cerr << "PDynLinkMgr::GetFunction() Not yet available on HP-UX " << endl; 203 return f; 204 #else 148 205 if (dlhandle != NULL) 149 206 f = (DlFunction)dlsym(dlhandle, funcname.c_str()); 150 #endif 151 if (f == NULL) cerr << "PDynLinkMgr::PDynLinkMgr(): Error linking " << funcname << endl; 207 if (f == NULL) cerr << "PDynLinkMgr::GetFunction(): Error linking " << funcname << endl; 152 208 return(f); 153 } 154 209 #endif 210 } 211 -
trunk/SophyaLib/SysTools/pdlmgr.h
r241 r480 8 8 #include "machdefs.h" 9 9 #include <string> 10 #if defined(__KCC__)11 using std::string ;12 #endif13 10 14 11 … … 41 38 #if defined(HPUX) 42 39 shl_t dlhandle; 43 #else 40 #else 44 41 void * dlhandle; 45 42 #endif -
trunk/SophyaLib/SysTools/periodic.h
r241 r480 6 6 #include "machdefs.h" 7 7 #include <list> 8 #if defined(__KCC__)9 #include <list.h>10 #endif11 8 12 9 class Periodic; -
trunk/SophyaLib/SysTools/psighand.cc
r245 r480 5 5 #include <signal.h> 6 6 #include "psighand.h" 7 #include "pexceptions.h" 7 #include "pexceptions.h" 8 8 9 using namespace PlanckDPC; 10 11 static bool sigprstate[5] = {false, false, false, false}; 9 static bool sigprstate[6] = {false, false, false, false, false, false}; 12 10 13 11 void PeidaProcessSignal(int s); 14 12 15 13 /* Nouvelle-Fonction */ 16 void PeidaConfigureSignalhandling(bool cfpe, bool csegv, bool c quit, bool cusr1, bool cusr2)14 void PeidaConfigureSignalhandling(bool cfpe, bool csegv, bool cint, bool cquit, bool cusr1, bool cusr2) 17 15 { 18 16 struct sigaction ae, ad; … … 53 51 sigprstate[1] = csegv; 54 52 } 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 55 67 // SIGQUIT 56 if (sigprstate[ 2] != cquit) {68 if (sigprstate[3] != cquit) { 57 69 if (cquit) { 58 70 sigaction(SIGQUIT, &ae, NULL); … … 63 75 puts("PeidaConfigureSignalhandling(): Back to default SIGQUIT handling ..."); 64 76 } 65 sigprstate[ 2] = cquit;77 sigprstate[3] = cquit; 66 78 } 67 79 68 80 // SIGUSR1 69 if (sigprstate[ 3] != cusr1) {81 if (sigprstate[4] != cusr1) { 70 82 if (cusr1) { 71 83 sigaction(SIGUSR1, &ae, NULL); … … 76 88 puts("PeidaConfigureSignalhandling(): Back to default SIGUSR1 handling ..."); 77 89 } 78 sigprstate[ 3] = cusr1;90 sigprstate[4] = cusr1; 79 91 } 80 // SIGUSR 181 if (sigprstate[ 4] != cusr2) {92 // SIGUSR2 93 if (sigprstate[5] != cusr2) { 82 94 if (cusr2) { 83 95 sigaction(SIGUSR2, &ae, NULL); … … 88 100 puts("PeidaConfigureSignalhandling(): Back to default SIGUSR2 handling ..."); 89 101 } 90 sigprstate[ 4] = cusr2;102 sigprstate[5] = cusr2; 91 103 } 92 104 } … … 94 106 void PeidaProcessSignal(int s) 95 107 { 108 string msg; 96 109 switch(s) 97 110 { 98 111 case SIGFPE : 99 112 puts("PeidaProcessSignal: ###Signal SIGFPE catched, throw catchedSIGFPE ###"); 100 throw CaughtSignalExc("SIGFPE"); 113 msg = "Caught SIGFPE"; 114 throw ( CaughtSignalExc(msg, s) ); 101 115 case SIGSEGV : 102 116 puts("PeidaProcessSignal: ###Signal SIGSEGV catched, throw catchedSIGSEGV ###"); 103 throw CaughtSignalExc("SIGSEGV"); 117 msg = "Caught SIGSEGV"; 118 throw ( CaughtSignalExc(msg, s) ); 104 119 case SIGINT : 105 120 puts("PeidaProcessSignal: ###Signal SIGINT catched, throw catchedSIGINT ###"); 106 throw CaughtSignalExc("SIGINT"); 121 msg = "Caught SIGINT"; 122 throw ( CaughtSignalExc(msg, s) ); 107 123 case SIGQUIT : 108 124 puts("PeidaProcessSignal: ###Signal SIGQUIT catched, throw catchedSIGQUIT ###"); 109 throw CaughtSignalExc("SIGQUIT"); 125 msg = "Caught SIGQUIT"; 126 throw ( CaughtSignalExc(msg, s) ); 110 127 case SIGUSR1 : 111 128 puts("PeidaProcessSignal: ###Signal SIGUSR1 catched, throw catchedSIGUSR1 ###"); 112 throw CaughtSignalExc("SIGUSR1"); 129 msg = "Caught SIGUSR1"; 130 throw ( CaughtSignalExc(msg, s) ); 113 131 case SIGUSR2 : 114 132 puts("PeidaProcessSignal: ###Signal SIGUSR2 catched, throw catchedSIGUSR2 ###"); 115 throw CaughtSignalExc("SIGUSR2"); 133 msg = "Caught SIGUSR2"; 134 throw ( CaughtSignalExc(msg, s) ); 116 135 default : 117 136 printf("PeidaProcessSignal: ###Signal %d catched, throw inconsistentErr ### \n", s); 118 throw CaughtSignalExc("???"); 137 msg = "Caught SIG???"; 138 throw ( CaughtSignalExc(msg, s) ); 119 139 } 140 141 // return; 120 142 } -
trunk/SophyaLib/SysTools/psighand.h
r241 r480 6 6 7 7 #include "machdefs.h" 8 void PeidaConfigureSignalhandling(bool cfpe=false, bool csegv=false, bool cquit=false, bool cusr1=false, bool cusr2=false); 8 void PeidaConfigureSignalhandling(bool cfpe=false, bool csegv=false, 9 bool cint=false, bool cquit=false, 10 bool cusr1=false, bool cusr2=false); 9 11 #endif
Note:
See TracChangeset
for help on using the changeset viewer.