| version 1.29, 2006/01/10 11:52:56 |
version 1.34, 2015/09/25 01:47:09 |
|
|
| /* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.28 2004/10/14 10:08:09 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.33 2015/08/06 22:33:21 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 <fcntl.h> |
#include <fcntl.h> |
| #include <stdlib.h> |
#include <stdlib.h> |
| #include <unistd.h> |
#include <unistd.h> |
| |
#if (!defined(__MINGW32__) && !defined(__MINGW64__)) |
| #include <sys/wait.h> |
#include <sys/wait.h> |
| |
#else |
| |
#include <_mingw.h> |
| |
#endif |
| #include <signal.h> |
#include <signal.h> |
| #include <ctype.h> |
#include <ctype.h> |
| #include <time.h> |
#include <time.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 38 static int Verbose_get_home = 0; |
|
| Line 44 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 ErrorVerbose = 1; |
| |
static int EngineLogToStdout = 0; |
| |
|
| #define nomemory(a) {fprintf(stderr,"(%d) no more memory.\n",a);exit(10);} |
#define nomemory(a) {fprintf(stderr,"(%p) no more memory.\n",(void *)a);exit(10);} |
| #define mymalloc(a) sGC_malloc(a) |
#define mymalloc(a) sGC_malloc(a) |
| |
|
| void pathFinderErrorVerbose(int k) { |
void pathFinderErrorVerbose(int k) { |
| Line 121 void *sGC_malloc(int s) { return (void *) malloc(s); } |
|
| Line 128 void *sGC_malloc(int s) { return (void *) malloc(s); } |
|
| #define MYFORKCP_SIZE 100 |
#define MYFORKCP_SIZE 100 |
| static int Myforkchildren[MYFORKCP_SIZE]; |
static int Myforkchildren[MYFORKCP_SIZE]; |
| static int Myforkcp=0; |
static int Myforkcp=0; |
| |
#if (!defined(__MINGW32__) && !defined(__MINGW64__)) |
| static void myforkwait() { |
static void myforkwait() { |
| int status; |
int status; |
| int pid; |
int pid; |
| Line 170 int oxForkExec(char **argv) { |
|
| Line 178 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 215 int oxForkExecBlocked(char **argv) { |
|
| Line 223 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 231 int oxForkExecBlocked(char **argv) { |
|
| Line 239 int oxForkExecBlocked(char **argv) { |
|
| exit(3); |
exit(3); |
| } |
} |
| } |
} |
| |
#else |
| |
static void myforkwait() { |
| |
fprintf(stderr,"ERROR: myforkwait is not implented in mingw\n"); |
| |
return; |
| |
} |
| |
int oxForkExec(char **argv) { |
| |
/* cf. Kan/shell.c */ |
| |
fprintf(stderr,"ERROR: oxForkExec is not implented in mingw\n"); |
| |
return(-1); |
| |
} |
| |
int oxForkExecBlocked(char **argv) { |
| |
fprintf(stderr,"ERROR: oxForkExecBlocked is not implented in mingw\n"); |
| |
return(-1); |
| |
} |
| |
#endif |
| |
|
| static int getOStypei() { |
static int getOStypei() { |
| /* |
/* |
| Line 571 char *cygwinPathToWinPath(char *s) { |
|
| Line 594 char *cygwinPathToWinPath(char *s) { |
|
| } |
} |
| |
|
| if (ans[0] == '/') { |
if (ans[0] == '/') { |
| |
#if defined(__CYGWIN64__) || (defined(__CYGWIN__) && defined(__x86_64__)) |
| |
strcpy(ans,"C:\\cygwin64"); |
| |
#else |
| strcpy(ans,"C:\\cygwin"); |
strcpy(ans,"C:\\cygwin"); |
| |
#endif |
| strcat(ans,s); |
strcat(ans,s); |
| } |
} |
| |
|
| Line 1132 int oxDeleteFile(char *fname) { |
|
| Line 1159 int oxDeleteFile(char *fname) { |
|
| /* This function just kills processes, so if there is a process which |
/* This function just kills processes, so if there is a process which |
| uses ox protocol, it is not relevant to use this functions. |
uses ox protocol, it is not relevant to use this functions. |
| */ |
*/ |
| |
#if (!defined(__MINGW32__) && !defined(__MINGW64__)) |
| int oxKillAll(void) { |
int oxKillAll(void) { |
| int i; |
int i; |
| int pid; |
int pid; |
| Line 1146 int oxKillAll(void) { |
|
| Line 1174 int oxKillAll(void) { |
|
| Myforkcp = 0; |
Myforkcp = 0; |
| return(0); |
return(0); |
| } |
} |
| |
#else |
| |
int oxKillAll(void) { |
| |
fprintf(stderr,"ERROR: oxKillAll is not implented in mingw\n"); |
| |
return(-1); |
| |
} |
| |
#endif |
| void ox_pathfinder_quiet(void) { |
void ox_pathfinder_quiet(void) { |
| Verbose_get_home = 0; |
Verbose_get_home = 0; |
| Verbose = 0; |
Verbose = 0; |
| Line 1204 int oxpSendStringAsFile(char *user,char *hostname, cha |
|
| Line 1237 int oxpSendStringAsFile(char *user,char *hostname, cha |
|
| |
|
| char *oxpReadOneTimePasswordFromFile(char *filename) { |
char *oxpReadOneTimePasswordFromFile(char *filename) { |
| } |
} |
| |
|
| |
int ox_pathfinderEngineLogToStdout(int state) { |
| |
EngineLogToStdout = state; |
| |
} |