| version 1.26, 2004/03/05 06:26:52 |
version 1.32, 2015/08/03 20:56:50 |
|
|
| /* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.25 2004/03/04 12:22:47 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.31 2010/08/30 04:17:17 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 <string.h> |
#include <string.h> |
| #include "ox_pathfinder.h" |
#include "ox_pathfinder.h" |
| |
|
| |
void *sGC_malloc(int); |
| |
|
| int OX_P_stdin = -1; |
int OX_P_stdin = -1; |
| int OX_P_stdout = -1; |
int OX_P_stdout = -1; |
| int OX_P_stderr = -1; |
int OX_P_stderr = -1; |
| Line 37 static void msgPathFinder(char *s); |
|
| Line 39 static void msgPathFinder(char *s); |
|
| static int Verbose_get_home = 0; |
static int Verbose_get_home = 0; |
| static int Verbose = 1; |
static int Verbose = 1; |
| static int NoX = 0; |
static int NoX = 0; |
| |
static int ErrorVerbose = 1; |
| |
static int EngineLogToStdout = 0; |
| |
|
| |
#define nomemory(a) {fprintf(stderr,"(%p) no more memory.\n",(void *)a);exit(10);} |
| #define nomemory(a) {fprintf(stderr,"(%d) no more memory.\n",a);exit(10);} |
|
| #define mymalloc(a) sGC_malloc(a) |
#define mymalloc(a) sGC_malloc(a) |
| |
|
| |
void pathFinderErrorVerbose(int k) { |
| |
static int prev; |
| |
if (k >= 0) { |
| |
prev = ErrorVerbose; |
| |
ErrorVerbose = k; |
| |
}else{ |
| |
ErrorVerbose = prev; |
| |
} |
| |
} |
| static void errorPathFinder(char *s) { |
static void errorPathFinder(char *s) { |
| /* Todo; we need to return the error message to the client if it is used |
/* Todo; we need to return the error message to the client if it is used |
| in ox_shell */ |
in ox_shell */ |
| fprintf(stderr,"Error: %s",s); |
if (ErrorVerbose) fprintf(stderr,"Error: %s",s); |
| } |
} |
| static void msgPathFinder(char *s) { |
static void msgPathFinder(char *s) { |
| /* Todo; we need to return the error message to the client if it is used |
/* Todo; we need to return the error message to the client if it is used |
| Line 161 int oxForkExec(char **argv) { |
|
| Line 173 int oxForkExec(char **argv) { |
|
| sigaddset(&sss,SIGINT); |
sigaddset(&sss,SIGINT); |
| sigprocmask(SIG_BLOCK,&sss,NULL); |
sigprocmask(SIG_BLOCK,&sss,NULL); |
| } |
} |
| if (NoX) { |
if (NoX && (!EngineLogToStdout)) { |
| FILE *null; |
FILE *null; |
| null = fopen("/dev/null","wb"); |
null = fopen("/dev/null","wb"); |
| if (OX_P_stdout >= 0) dup2(OX_P_stdout,1); else dup2(fileno(null),1); |
if (OX_P_stdout >= 0) dup2(OX_P_stdout,1); else dup2(fileno(null),1); |
| Line 206 int oxForkExecBlocked(char **argv) { |
|
| Line 218 int oxForkExecBlocked(char **argv) { |
|
| sigaddset(&sss,SIGINT); |
sigaddset(&sss,SIGINT); |
| sigprocmask(SIG_BLOCK,&sss,NULL); |
sigprocmask(SIG_BLOCK,&sss,NULL); |
| } |
} |
| if (NoX) { |
if (NoX && (!EngineLogToStdout)) { |
| FILE *null; |
FILE *null; |
| null = fopen("/dev/null","wb"); |
null = fopen("/dev/null","wb"); |
| if (OX_P_stdout >= 0) dup2(OX_P_stdout,1); else dup2(fileno(null),1); |
if (OX_P_stdout >= 0) dup2(OX_P_stdout,1); else dup2(fileno(null),1); |
| Line 562 char *cygwinPathToWinPath(char *s) { |
|
| Line 574 char *cygwinPathToWinPath(char *s) { |
|
| } |
} |
| |
|
| if (ans[0] == '/') { |
if (ans[0] == '/') { |
| |
#if defined(__CYGWIN64__) |
| |
strcpy(ans,"C:\\cygwin64"); |
| |
#else |
| strcpy(ans,"C:\\cygwin"); |
strcpy(ans,"C:\\cygwin"); |
| |
#endif |
| strcat(ans,s); |
strcat(ans,s); |
| } |
} |
| |
|
| Line 1011 char *getCommandPath(char *cmdname) |
|
| Line 1027 char *getCommandPath(char *cmdname) |
|
| if (getFileSize(cmdname) >= 0) { /* Todo: isExecutableFile() */ |
if (getFileSize(cmdname) >= 0) { /* Todo: isExecutableFile() */ |
| }else{ |
}else{ |
| msg = (char *)mymalloc(strlen(cmdname)+30); |
msg = (char *)mymalloc(strlen(cmdname)+30); |
| sprintf(msg,"getCommandPath: %s is not found."); |
sprintf(msg,"getCommandPath: %s is not found.",cmdname); |
| errorPathFinder(msg); |
errorPathFinder(msg); |
| return NULL; |
return NULL; |
| } |
} |
| Line 1160 char *oxTermWhich_unix(int *typep) { |
|
| Line 1176 char *oxTermWhich_unix(int *typep) { |
|
| |
|
| return NULL; |
return NULL; |
| } |
} |
| |
|
| |
int oxpSendStringAsFile(char *user,char *hostname, char *filename, char *str) |
| |
{ |
| |
FILE *fp; |
| |
int i; |
| |
char *comm; |
| |
char *argv[10]; |
| |
mode_t oumask; |
| |
oumask = umask((mode_t) (64-1)); |
| |
/* 077=111 111 */ |
| |
fp = fopen(filename,"w"); |
| |
umask(oumask); |
| |
if (fp == NULL) { |
| |
return -1; |
| |
} |
| |
for (i=0; i <strlen(str); i++) { |
| |
fputc(str[i],fp); |
| |
} |
| |
fclose(fp); |
| |
if (strcmp(hostname,"localhost") == 0) return 0; |
| |
comm = (char *)malloc(strlen(user)+strlen(hostname)+strlen(filename)*2+1024); |
| |
if (comm == NULL) return -2; |
| |
|
| |
argv[0] = getCommandPath("scp"); |
| |
if (argv[0] == NULL) return -3; |
| |
argv[1] = filename; |
| |
comm = (char *)malloc(strlen(user)+strlen(hostname)+strlen(filename)+256); |
| |
sprintf(comm,"%s@%s:%s",user,hostname,filename); |
| |
argv[2] = comm; |
| |
argv[3] = NULL; |
| |
return oxForkExec(argv); |
| |
} |
| |
|
| |
char *oxpReadOneTimePasswordFromFile(char *filename) { |
| |
} |
| |
|
| |
int ox_pathfinderEngineLogToStdout(int state) { |
| |
EngineLogToStdout = state; |
| |
} |