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; |
|
} |