version 1.1, 2003/07/21 07:32:01 |
version 1.2, 2003/07/21 11:56:33 |
|
|
/* $OpenXM$ */ |
/* $OpenXM: OpenXM/src/kxx/ox100start.c,v 1.1 2003/07/21 07:32:01 takayama Exp $ */ |
/* Moved from misc-2003/07/cygwin/test.c */ |
/* Moved from misc-2003/07/cygwin/test.c */ |
#include <stdio.h> |
#include <stdio.h> |
#include <sys/types.h> |
#include <sys/types.h> |
|
|
#include <sys/wait.h> |
#include <sys/wait.h> |
#include <signal.h> |
#include <signal.h> |
#include <ctype.h> |
#include <ctype.h> |
|
#include "ox_pathfinder.h" |
|
|
extern char **environ; |
static void usage(void); |
|
|
static int getOStypei(); |
|
static char *addSlash(); |
|
static char *get_sm1_lib_path(); |
|
static char *get_k0_lib_path(); |
|
static char *get_ox_asir_path(); |
|
static char *get_ox_sm1_path(); |
|
static char *get_ox_path(); |
|
static char *get_oxc_path(); |
|
static char *get_oxlog_path(); |
|
static char **setOXenv(); |
|
static int forkExec(char **argv); |
static int forkExec(char **argv); |
static void usage(); |
|
|
|
char **catArgv(char **argv1,char **argv2); |
extern char **environ; |
|
|
char *getOStypes(); |
|
char *getOpenXM_HOME(); |
|
char *getLOAD_SM1_PATH2(); |
|
char **getServerEnv(char *oxServer); |
|
char **debugServerEnv(char *oxServer); |
|
char *cygwinPathToWinPath(char *s); |
|
|
|
static int Verbose_get_home = 1; |
|
static int NoX = 0; |
|
|
|
#define MYFORKCP_SIZE 100 |
|
static int Myforkchildren[MYFORKCP_SIZE]; |
|
static int Myforkcp=0; |
|
static void myforkwait() { |
|
int status; |
|
int pid; |
|
int i,j; |
|
signal(SIGCHLD,SIG_IGN); |
|
pid = wait(&status); |
|
fprintf(stderr,"Child process %d is exiting.\n",pid); |
|
for (i=0; i<Myforkcp; i++) { |
|
if (Myforkchildren[i] == pid) { |
|
for (j=i; j<Myforkcp-1; j++) { |
|
Myforkchildren[j] = Myforkchildren[j+1]; |
|
} |
|
if (Myforkcp > 0) Myforkcp--; |
|
} |
|
} |
|
signal(SIGCHLD,myforkwait); |
|
} |
|
|
|
#define nomemory(a) {fprintf(stderr,"(%d) no more memory.\n",a);exit(10);} |
|
#define mymalloc(a) malloc(a) |
|
|
|
#ifndef NOT_STANDALONE |
|
main(int argc,char *argv[]) { |
main(int argc,char *argv[]) { |
char *s; |
char *s; |
char s2[1024]; |
char s2[1024]; |
Line 72 main(int argc,char *argv[]) { |
|
Line 26 main(int argc,char *argv[]) { |
|
int i; |
int i; |
char *serverName; |
char *serverName; |
|
|
|
/* |
if (Verbose_get_home) { |
if (Verbose_get_home) { |
printf("ostype=%s\n",getOStypes()); |
printf("ostype=%s\n",getOStypes()); |
printf("OpenXM_HOME=%s\n",getOpenXM_HOME()); |
printf("OpenXM_HOME=%s\n",getOpenXM_HOME()); |
Line 79 main(int argc,char *argv[]) { |
|
Line 34 main(int argc,char *argv[]) { |
|
printf("k0 lib =%s\n",get_k0_lib_path()); |
printf("k0 lib =%s\n",get_k0_lib_path()); |
printf("ox_asir =%s\n",get_ox_asir_path()); |
printf("ox_asir =%s\n",get_ox_asir_path()); |
} |
} |
|
*/ |
|
|
/* Initialize parameters */ |
/* Initialize parameters */ |
serverName = NULL; |
serverName = NULL; |
Line 97 main(int argc,char *argv[]) { |
|
Line 53 main(int argc,char *argv[]) { |
|
serverName = argv[i]; |
serverName = argv[i]; |
aaa = getServerEnv(serverName); |
aaa = getServerEnv(serverName); |
}else if (strcmp(argv[i],"-nox")==0) { |
}else if (strcmp(argv[i],"-nox")==0) { |
NoX = 1; |
ox_pathfinderNoX(1); |
}else{ |
}else{ |
fprintf(stderr,"Unknown option.\n"); |
fprintf(stderr,"Unknown option.\n"); |
usage(); |
usage(); |
Line 106 main(int argc,char *argv[]) { |
|
Line 62 main(int argc,char *argv[]) { |
|
} |
} |
|
|
forkExec(aaa); |
forkExec(aaa); |
|
} |
|
|
|
#define MYFORKCP_SIZE 100 |
|
static int Myforkchildren[MYFORKCP_SIZE]; |
|
static int Myforkcp=0; |
|
static void myforkwait() { |
|
int status; |
|
int pid; |
|
int i,j; |
|
signal(SIGCHLD,SIG_IGN); |
|
pid = wait(&status); |
|
fprintf(stderr,"Child process %d is exiting.\n",pid); |
|
for (i=0; i<Myforkcp; i++) { |
|
if (Myforkchildren[i] == pid) { |
|
for (j=i; j<Myforkcp-1; j++) { |
|
Myforkchildren[j] = Myforkchildren[j+1]; |
|
} |
|
if (Myforkcp > 0) Myforkcp--; |
|
} |
|
} |
|
signal(SIGCHLD,myforkwait); |
} |
} |
#endif |
|
|
|
static void usage() { |
static void usage() { |
fprintf(stderr,"oxstart100 -oxserver xxx [-e args]\n"); |
fprintf(stderr,"oxstart100 -oxserver xxx [-e args]\n"); |
Line 143 static int forkExec(char **argv) { |
|
Line 118 static int forkExec(char **argv) { |
|
sigaddset(&sss,SIGINT); |
sigaddset(&sss,SIGINT); |
sigprocmask(SIG_BLOCK,&sss,NULL); |
sigprocmask(SIG_BLOCK,&sss,NULL); |
} |
} |
eee = setOXenv(); |
if (ox_pathfinderNoX(-1)) { |
if (NoX) { |
|
FILE *null; |
FILE *null; |
null = fopen("/dev/null","wb"); |
null = fopen("/dev/null","wb"); |
dup2(fileno(null),1); |
dup2(fileno(null),1); |
Line 156 static int forkExec(char **argv) { |
|
Line 130 static int forkExec(char **argv) { |
|
} |
} |
} |
} |
|
|
static int getOStypei() { |
|
/* |
|
0 unix |
|
1 windows-cygwin |
|
2 windows-cygwin-on-X |
|
3 windows-native |
|
*/ |
|
int ostype; |
|
char *s,*s2,*s3; |
|
#if defined(__CYGWIN__) |
|
ostype = 1; |
|
#else |
|
ostype = 0; |
|
#endif |
|
if (ostype == 0) return ostype; |
|
/* Heuristic method */ |
|
s = (char *)getenv("WINDOWID"); |
|
if (s != NULL) { |
|
return 2; |
|
} |
|
s = (char *)getenv("OSTYPE"); |
|
s2 = (char *)getenv("MACHTYPE"); |
|
s3 = (char *)getenv("PWD"); |
|
if ((s != NULL) || (s2 != NULL) || (s3 != NULL)) { |
|
return 1; |
|
} |
|
return 3; |
|
} |
|
|
|
char *getOStypes() { |
|
int ostype; |
|
ostype = getOStypei(); |
|
|
|
if (ostype == 1) { |
|
return("Windows-cygwin"); |
|
}else if (ostype == 2) { |
|
return("Windows-cygwin-on-X"); |
|
}else if (ostype == 3) { |
|
return("Windows-native"); |
|
}else{ |
|
return("unix"); |
|
} |
|
} |
|
|
|
/* |
|
kan96xx/Kan/ext.c |
|
*/ |
|
/* |
|
-1 : no file |
|
non-negative: there is a regular file or a directory |
|
*/ |
|
static int getFileSize(char *s) { |
|
struct stat buf; |
|
int m; |
|
if (s == NULL) return -1; |
|
m = stat(s,&buf); |
|
if (m == -1) { |
|
return -1; |
|
/* fail */ |
|
}else{ |
|
/* success */ |
|
return (int) buf.st_size; |
|
} |
|
} |
|
|
|
static char *addSlash(char *p) { |
|
char *p2; |
|
if ((strlen(p) == 0) || (p == NULL)) return(p); |
|
if (p[strlen(p)-1] == '/') return(p); |
|
/* Add / */ |
|
p2 = (char *) mymalloc(sizeof(char)*(strlen(p)+3)); |
|
if (p2 == NULL) { fprintf(stderr,"No more memory.\n"); exit(10); } |
|
strcpy(p2,p); strcat(p2,"/"); |
|
return(p2); |
|
|
|
} |
|
|
|
static void msg_get_home(int t,char *s) { |
|
extern int Verbose_get_home; |
|
if (!Verbose_get_home) return; |
|
if (t == 1) { |
|
fprintf(stderr,"getOpenXM_HOME(): "); |
|
}else if (t == 2) { |
|
fprintf(stderr,"getServerEnv(): "); |
|
}else if (t == 3) { |
|
fprintf(stderr,"setOXenv(): "); |
|
}else if (t == 4) { |
|
fprintf(stderr,"cygwinPathToWinPath(): "); |
|
}else if (t == 5) { |
|
fprintf(stderr,"catArgv(): "); |
|
}else{ |
|
fprintf(stderr,"getting path...: "); |
|
} |
|
if (s != NULL) { |
|
fprintf(stderr,"%s\n",s); |
|
}else{ |
|
fprintf(stderr," --NULL-- \n"); |
|
} |
|
} |
|
/* cf. k097/d.c getLOAD_K_PATH(); |
|
kan96xx/Kan/scanner.c getLOAD_SM1_PATH(); |
|
*/ |
|
char *getOpenXM_HOME() { |
|
char *p; |
|
char *h; |
|
p = getOStypes(); |
|
msg_get_home(1,p); |
|
|
|
p = (char *) getenv("OpenXM_HOME"); |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM_HOME is not found."); |
|
|
|
p = (char *) getenv("OPENXM_HOME"); |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OPENXM_HOME is not found."); |
|
|
|
if (getOStypei() == 3) { /* cygwin-native */ |
|
p = (char *) getenv("OpenXM_HOME_WIN"); |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM_HOME_WIN is not found."); |
|
|
|
p = (char *) getenv("OPENXMHOMEWIN"); |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OPENXMHOMEWIN is not found."); |
|
} |
|
|
|
/* Try to find default directories */ |
|
h = (char *)getenv("HOME"); |
|
if (h != NULL) { |
|
p = (char *)mymalloc(strlen(h)+100); |
|
if (p == NULL) { |
|
fprintf(stderr,"No more memory.\n"); exit(100); |
|
} |
|
strcat(h,"/OpenXM"); |
|
p = h; |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM is not found under the home directory."); |
|
} |
|
|
|
if (getOStypei() != 3) { |
|
p = "/usr/local/OpenXM"; |
|
}else{ |
|
p = "/cygdrive/c/usr/local/OpenXM"; |
|
} |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM is not found under /usr/local"); |
|
|
|
if (getOStypei() != 0) { |
|
p = "/cygdrive/c/OpenXM"; |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM is not found under c:\\"); |
|
|
|
p = "/cygdrive/c/OpenXM-win"; |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM-win is not found under c:\\"); |
|
|
|
p = "/cygdrive/c/Program Files/OpenXM"; |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM is not found under c:\\Program Files"); |
|
|
|
p = "/cygdrive/c/Program Files/OpenXM-win"; |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"OpenXM-win is not found under c:\\Program Files"); |
|
|
|
} |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
|
|
} |
|
|
|
static char *get_k0_lib_path() { |
|
char *oxhome; |
|
char *p; |
|
|
|
|
|
p = (char *)getenv("LOAD_K_PATH"); |
|
if (p != NULL) { |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"LOAD_K0_PATH is not found."); |
|
} |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return (char *)NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"lib/k097"); |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
} |
|
|
|
static char *get_sm1_lib_path() { |
|
char *oxhome; |
|
char *p; |
|
|
|
p = (char *)getenv("LOAD_SM1_PATH"); |
|
if (p != NULL) { |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,"LOAD_SM1_PATH is not found."); |
|
} |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"lib/sm1"); |
|
if (getFileSize(p) != -1) return addSlash(p); |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
} |
|
|
|
static char *get_ox_asir_path() { |
|
char *oxhome; |
|
char *p; |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"bin/ox_asir"); |
|
if (getFileSize(p) != -1) return p; |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"lib/asir/ox_asir"); |
|
if (getFileSize(p) != -1) return p; |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
} |
|
|
|
static char *get_ox_path() { |
|
char *oxhome; |
|
char *p; |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"bin/ox"); |
|
if (getFileSize(p) != -1) return p; |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
} |
|
|
|
|
|
static char *get_oxc_path() { |
|
char *oxhome; |
|
char *p; |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"bin/oxc"); |
|
if (getFileSize(p) != -1) return p; |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
} |
|
|
|
static char *get_oxlog_path() { |
|
char *oxhome; |
|
char *p; |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,"bin/oxlog"); |
|
if (getFileSize(p) != -1) return p; |
|
msg_get_home(1,oxhome); |
|
msg_get_home(1," is found, but "); |
|
msg_get_home(1,p); |
|
msg_get_home(1," is not found."); |
|
|
|
msg_get_home(1,"Giving up!"); |
|
return NULL; |
|
} |
|
|
|
char *cygwinPathToWinPath(char *s) { |
|
char *pos; |
|
char *ans; |
|
int i; |
|
msg_get_home(4,s); |
|
if (s == NULL) return NULL; |
|
if (strlen(s) == 0) return s; |
|
|
|
ans = (char *) mymalloc(strlen(s) + 32); |
|
if (ans == NULL) nomemory(0); |
|
|
|
pos = (char *)strstr(s,"/cygdrive/"); |
|
if (pos == s) { |
|
strcpy(ans,&(s[9])); |
|
ans[0] = s[10]; ans[1] = ':'; ans[2] = '\\'; |
|
}else{ |
|
strcpy(ans,s); |
|
} |
|
|
|
if (ans[0] == '/') { |
|
strcpy(ans,"C:\\cygwin"); |
|
strcat(ans,s); |
|
} |
|
|
|
|
|
for (i=0; i <strlen(ans); i++) { |
|
if (ans[i] == '/') ans[i] = '\\'; |
|
} |
|
return ans; |
|
} |
|
|
|
char **getServerEnv(char *oxServer) { |
|
int ostype; |
|
char *p; |
|
char *oxhome; |
|
char *xterm; |
|
char *oxlog; |
|
char *load_sm1_path; |
|
char *load_k0_path; |
|
char *openXM_HOME; |
|
#define ARGV_SIZE 100 |
|
char *argv[ARGV_SIZE]; |
|
int i,k; |
|
char **aaa; |
|
|
|
if (Verbose_get_home) { |
|
if (oxServer == NULL) { |
|
fprintf(stderr,"Server name is NULL.\n"); |
|
}else{ |
|
fprintf(stderr,"Server name is %s\n",oxServer); |
|
} |
|
} |
|
|
|
if (oxServer == NULL) return NULL; |
|
i = 0; |
|
argv[i] = NULL; |
|
|
|
ostype = getOStypei(); |
|
|
|
oxhome = getOpenXM_HOME(); |
|
if (oxhome == NULL) return NULL; |
|
p = (char *) mymalloc(strlen(oxhome)+strlen(oxServer)+100); |
|
if (p == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
|
|
strcpy(p,oxhome); |
|
strcat(p,oxServer); |
|
if (getFileSize(p) == -1) { |
|
msg_get_home(2,oxhome); |
|
msg_get_home(2," is found, but "); |
|
msg_get_home(2,p); |
|
msg_get_home(2," is not found."); |
|
return (NULL); |
|
} |
|
oxServer = (char *) mymalloc(strlen(oxhome)+strlen(oxServer)+100); |
|
if (oxServer == NULL) {fprintf(stderr,"No more memory.\n"); exit(100);} |
|
strcpy(oxServer,p); |
|
|
|
if ((ostype == 0) || (ostype == 2)) { |
|
if (!NoX) { |
|
xterm = "/usr/X11R6/bin/xterm"; |
|
if (getFileSize(xterm) == -1) { |
|
msg_get_home(2,"xterm is not found. NoX is automatically set."); |
|
NoX = 1; |
|
} |
|
} |
|
oxlog = get_oxlog_path(); |
|
xterm = "/usr/X11R6/bin/xterm -icon -e "; |
|
argv[i] = oxlog; i++; argv[i] = NULL; |
|
if (!NoX) { |
|
argv[i] = "/usr/X11R6/bin/xterm"; i++; argv[i] = NULL; |
|
argv[i] = "-icon"; i++; argv[i] = NULL; |
|
argv[i] = "-e"; i++; argv[i] = NULL; |
|
} |
|
argv[i] = get_ox_path(); i++; argv[i] = NULL; |
|
argv[i] = "-ox"; i++; argv[i] = NULL; |
|
argv[i] = oxServer; i++; argv[i] = NULL; |
|
}else{ |
|
if (!NoX) { |
|
if (getFileSize("/cygdrive/c/winnt/system32/cmd.exe") >= 0) { |
|
xterm = "/cygdrive/c/winnt/system32/cmd.exe /c start /min "; |
|
argv[i] = "/cygdrive/c/winnt/system32/cmd.exe"; i++; argv[i] = NULL; |
|
}else if (getFileSize("/cygdrive/c/windows/system32/cmd.exe") >= 0) { |
|
xterm = "/cygdrive/c/windows/system32/cmd.exe /c start /min "; |
|
argv[i] = "/cygdrive/c/windows/system32/cmd.exe"; i++; argv[i] = NULL; |
|
}else{ |
|
msg_get_home(2,"cmd.exe is not found. NoX is automatically set."); |
|
NoX = 1; |
|
} |
|
} |
|
oxlog = " "; |
|
if (!NoX) { |
|
argv[i] = "/c"; i++; argv[i] = NULL; |
|
argv[i] = "start"; i++; argv[i] = NULL; |
|
argv[i] = "/min"; i++; argv[i] = NULL; |
|
} |
|
argv[i] = cygwinPathToWinPath(get_ox_path()); i++; argv[i] = NULL; |
|
argv[i] = "-ox"; i++; argv[i] = NULL; |
|
argv[i] = oxServer; i++; argv[i] = NULL; |
|
} |
|
|
|
aaa = (char **) mymalloc(sizeof(char*)*(i+1)); |
|
if (aaa == NULL) nomemory(0); |
|
msg_get_home(2,"--------- Result --------------"); |
|
for (k=0; k<i; k++) { |
|
aaa[k] = argv[k]; |
|
msg_get_home(2,aaa[k]); |
|
aaa[k+1] = NULL; |
|
} |
|
return aaa; |
|
} |
|
|
|
char **setOXenv() { |
|
/* Do nothing. */ |
|
return NULL; |
|
} |
|
char **setOXenv_old() { |
|
char *openXM_HOME; |
|
char *load_sm1_path; |
|
char *load_k0_path; |
|
char *asir_config; |
|
char *asir_libdir; |
|
char *asirloadpath; |
|
char *asir_rsh; |
|
char *ld_library_path; |
|
char **aaa; |
|
int n,i,k; |
|
|
|
/* set environmental variables */ |
|
n = 20; /* n must be larger than the number of env vars */ |
|
n++; |
|
load_sm1_path = (char *) getenv("LOAD_SM1_PATH"); |
|
load_k0_path = (char *) getenv("LOAD_SM1_PATH"); |
|
asir_config = (char *) getenv("ASIR_CONFIG"); |
|
asir_libdir = (char *) getenv("ASIR_LIBDIR"); |
|
asirloadpath = (char *) getenv("ASIRLOADPATH"); |
|
asir_rsh = (char *) getenv("ASIR_RSH"); |
|
ld_library_path = (char *) getenv("LD_LIBRARY_PATH"); |
|
|
|
openXM_HOME = getOpenXM_HOME(); |
|
if (openXM_HOME != NULL) |
|
openXM_HOME[strlen(openXM_HOME)-1] = '\0'; |
|
/* How about ASIR... ? */ |
|
|
|
msg_get_home(3,"OpenXM_HOME is"); msg_get_home(2,openXM_HOME); |
|
msg_get_home(3,"LOAD_SM1_PATH is"); msg_get_home(2,load_sm1_path); |
|
msg_get_home(3,"LOAD_K0_PATH is"); msg_get_home(2,load_k0_path); |
|
|
|
aaa = (char **) mymalloc(sizeof(char*)*n); |
|
if (aaa == NULL) nomemory(0); |
|
|
|
i = 0; |
|
if (openXM_HOME != NULL) { |
|
aaa[i] = openXM_HOME; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
if (load_sm1_path != NULL) { |
|
aaa[i] = load_sm1_path; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
if (load_k0_path != NULL) { |
|
aaa[i] = load_k0_path; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
if (asir_config != NULL) { |
|
aaa[i] = asir_config; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
if (asir_libdir != NULL) { |
|
aaa[i] = asir_libdir; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
if (asirloadpath != NULL) { |
|
aaa[i] = asirloadpath; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
if (asir_rsh != NULL) { |
|
aaa[i] = asir_rsh; i++; aaa[i] = NULL; if (i > n-2) return aaa; |
|
} |
|
|
|
msg_get_home(3,"--------- Result --------------"); |
|
for (k=0; k<n; k++) { |
|
if (aaa[k] == NULL) break; |
|
msg_get_home(3,aaa[k]); |
|
} |
|
|
|
return aaa; |
|
} |
|
|
|
char **debugServerEnv(char *oxServer) |
|
{ |
|
int t; |
|
char **aaa; |
|
t = Verbose_get_home; |
|
Verbose_get_home = 1; |
|
aaa = getServerEnv(oxServer); |
|
Verbose_get_home = t; |
|
return ( aaa ); |
|
} |
|
|
|
char **catArgv(char **argv1,char **argv2) |
|
{ |
|
int i,n1,n2; |
|
char **argv; |
|
n1=0; |
|
while (argv1[n1] != NULL) n1++; |
|
n2=0; |
|
while (argv2[n2] != NULL) n2++; |
|
argv = (char **) mymalloc(sizeof(char *)*(n1+n2+1)); |
|
if (argv == NULL) nomemory(0); |
|
for (i=0; i<n1; i++) argv[i] = argv1[i]; |
|
for (i=0; i<n2; i++) argv[n1+i] = argv2[i]; |
|
argv[n1+n2]=NULL; |
|
for (i=0; i<n1+n2; i++) { |
|
msg_get_home(5,argv[i]); |
|
} |
|
return argv; |
|
} |
|
|
|
char *getLOAD_SM1_PATH2() { |
|
char *p; |
|
p = get_sm1_lib_path(); |
|
if (p == NULL) { |
|
return("/usr/local/lib/sm1/"); |
|
}else{ |
|
return p; |
|
} |
|
} |
|