version 1.1, 2000/10/10 05:23:21 |
version 1.5, 2002/04/24 07:45:14 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C; coding: euc-japan -*- */ |
/* $OpenXM$ */ |
/* $OpenXM: OpenXM/src/ox_toolkit/oxf_old.c,v 1.4 2002/04/10 08:55:45 ohara Exp $ */ |
|
|
/* このモジュールは互換性のためのものです。*/ |
/* このモジュールは互換性のためのものです。*/ |
|
|
|
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
#include <unistd.h> |
#include <unistd.h> |
#include <errno.h> |
|
#include <fcntl.h> |
#include <fcntl.h> |
#include <sys/file.h> |
#include <sys/file.h> |
#include <sys/param.h> |
#include <sys/param.h> |
#include <time.h> |
#include <time.h> |
|
|
|
#if defined(__sun__) |
|
#include <netdb.h> |
|
#include <sys/types.h> |
|
#include <netinet/in.h> |
|
#endif |
|
|
#include "mysocket.h" |
#include "mysocket.h" |
#include "ox_toolkit.h" |
#include "ox_toolkit.h" |
|
|
Line 22 OXFILE *oxf_control_set(OXFILE *oxfp, OXFILE *ctl) |
|
Line 27 OXFILE *oxf_control_set(OXFILE *oxfp, OXFILE *ctl) |
|
return oxfp; |
return oxfp; |
} |
} |
|
|
|
static char *OpenXM_HOME = "/usr/local/OpenXM"; |
static char *concat_openxm_home_bin(char *s); |
static char *concat_openxm_home_bin(char *s); |
|
|
OXFILE * ox_start(char* host, char* prog1, char* prog2); |
OXFILE * ox_start(char* host, char* prog1, char* prog2); |
Line 77 static OXFILE *mysocketAccept2(int listened, char *pas |
|
Line 83 static OXFILE *mysocketAccept2(int listened, char *pas |
|
static char *concat_openxm_home_bin(char *s) |
static char *concat_openxm_home_bin(char *s) |
{ |
{ |
char *path; |
char *path; |
char *base; |
|
|
|
/* if s includes '/' then it is not concaticated. */ |
/* if s includes '/' then it is not concaticated. */ |
if (strchr(s, '/') != NULL) { |
if (strchr(s, '/') != NULL) { |
return s; |
return s; |
} |
} |
|
|
base = getenv("OpenXM_HOME"); |
path = malloc(strlen(OpenXM_HOME)+6+strlen(s)); |
path = malloc(strlen(base)+6+strlen(s)); |
sprintf(path, "%s/bin/%s", OpenXM_HOME, s); |
sprintf(path, "%s/bin/%s", base, s); |
|
return path; |
return path; |
} |
} |
|
|
void set_OpenXM_HOME() |
void set_OpenXM_HOME() |
{ |
{ |
/* Solaris does not have the setenv(). */ |
char *e; |
if (getenv("OpenXM_HOME") == NULL) { |
if ((e = getenv("OpenXM_HOME")) != NULL |
putenv("OpenXM_HOME=/usr/local/OpenXM"); |
#if defined(__CYGWIN__) |
|
|| (e = getenv("OPENXM_HOME")) != NULL |
|
#endif |
|
) { |
|
OpenXM_HOME = e; |
} |
} |
} |
} |
|
|
void ox_exec_local(char* host, char* ctl_prog, char* dat_prog, int portControl, int portStream, char *passwd) |
void ox_exec_local(char* ctl_prog, char* dat_prog, int portControl, int portStream, char *passwd) |
{ |
{ |
char ctl[128], dat[128]; |
char ctl[128], dat[128]; |
|
char localhost[MAXHOSTNAMELEN]; |
|
|
sprintf(ctl, "%d", portControl); |
sprintf(ctl, "%d", portControl); |
sprintf(dat, "%d", portStream); |
sprintf(dat, "%d", portStream); |
Line 109 void ox_exec_local(char* host, char* ctl_prog, char* d |
|
Line 118 void ox_exec_local(char* host, char* ctl_prog, char* d |
|
ctl_prog = concat_openxm_home_bin(ctl_prog); |
ctl_prog = concat_openxm_home_bin(ctl_prog); |
dat_prog = concat_openxm_home_bin(dat_prog); |
dat_prog = concat_openxm_home_bin(dat_prog); |
|
|
if (fork() == 0) { |
if (gethostname(localhost, MAXHOSTNAMELEN)==0) { |
execlp("oxlog", "oxlog", "xterm", "-icon", "-e", ctl_prog, |
if (fork() == 0) { |
"-reverse", "-ox", dat_prog, |
execlp("oxlog", "oxlog", "xterm", "-icon", "-e", ctl_prog, |
"-data", dat, "-control", ctl, "-pass", passwd, |
"-reverse", "-ox", dat_prog, |
"-host", host, NULL); |
"-data", dat, "-control", ctl, "-pass", passwd, |
exit(1); |
"-host", localhost, NULL); |
} |
exit(1); |
|
} |
|
} |
} |
} |
|
|
/* |
/* |
Line 133 OXFILE *ox_start(char* host, char* ctl_prog, char* dat |
|
Line 143 OXFILE *ox_start(char* host, char* ctl_prog, char* dat |
|
OXFILE *st, *ct; |
OXFILE *st, *ct; |
char *passwd = generate_otp(); |
char *passwd = generate_otp(); |
int listen[2]; |
int listen[2]; |
short ports[2] = {0}; /* short! */ |
int ports[2] = {0}; /* short! */ |
|
|
listen[0] = mysocketListen(host, &ports[0]); |
/* host を無視 */ |
listen[1] = mysocketListen(host, &ports[1]); |
listen[0] = oxf_listen(&ports[0]); |
|
listen[1] = oxf_listen(&ports[1]); |
|
|
ox_exec_local(host, ctl_prog, dat_prog, ports[0], ports[1], passwd); |
ox_exec_local(ctl_prog, dat_prog, ports[0], ports[1], passwd); |
|
|
ct = mysocketAccept2(listen[0], passwd); |
ct = mysocketAccept2(listen[0], passwd); |
if (ct != NULL) { |
if (ct != NULL) { |
usleep(10); /* zzz... */ |
usleep(10); /* zzz... */ |
Line 193 OXFILE *ox_start_remote_with_ssh(char *dat_prog, char* |
|
Line 203 OXFILE *ox_start_remote_with_ssh(char *dat_prog, char* |
|
ssh_ox_server(remote_host, "ox", dat_prog, 1200, 1300); |
ssh_ox_server(remote_host, "ox", dat_prog, 1200, 1300); |
return ox_start_insecure(remote_host, 1200, 1300); |
return ox_start_insecure(remote_host, 1200, 1300); |
} |
} |
|
|