=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/ox.c,v retrieving revision 1.8 retrieving revision 1.12 diff -u -p -r1.8 -r1.12 --- OpenXM/src/ox_toolkit/ox.c 2000/01/19 19:46:42 1.8 +++ OpenXM/src/ox_toolkit/ox.c 2000/03/10 12:24:38 1.12 @@ -1,5 +1,5 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.7 2000/01/17 19:55:55 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.11 2000/02/04 08:01:30 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. @@ -15,10 +15,9 @@ #include #include #include -#include #include "mysocket.h" -#include "ox.h" +#include "ox_toolkit.h" #include "parse.h" static int cmolen_cmo_int32(cmo_int32* c); @@ -82,6 +81,8 @@ static char* new_string_set_cmo_int32(int integ static char* new_string_set_cmo_list(cmo_list *c); static char* new_string_set_cmo_zz(cmo_zz *c); +int ssh_ox_server(char *, char *, char *, short, short); + int current_fd = 0; int set_current_fd(int fd) { @@ -560,7 +561,7 @@ int print_cmo(cmo* c) { int tag = c->tag; - symbol* symp = lookup_by_tag(tag); + symbol_t symp = lookup_by_tag(tag); if (symp != NULL) { fprintf(stderr, "(%s", symp->key); }else { @@ -742,7 +743,7 @@ static char *concat_openxm_home_bin(char *s) } base = getenv("OpenXM_HOME"); - path = malloc(strlen(base)+5+strlen(s)); + path = malloc(strlen(base)+6+strlen(s)); sprintf(path, "%s/bin/%s", base, s); return path; } @@ -801,7 +802,12 @@ ox_file_t ox_start(char* host, char* ctl_prog, char* d char *oxlog; /* not overwrite */ +#if 0 setenv("OpenXM_HOME", "/usr/local/OpenXM", 0); +#endif + if (getenv("OpenXM_HOME") == NULL) { + putenv("OpenXM_HOME=/usr/local/OpenXM"); + } oxlog = concat_openxm_home_bin("oxlog"); ctl_prog = concat_openxm_home_bin(ctl_prog); @@ -843,21 +849,29 @@ ox_file_t ox_start(char* host, char* ctl_prog, char* d return sv; } +ox_file_t ox_start_remote_with_ssh(char *dat_prog, char* host) +{ + ssh_ox_server(host, "ox", dat_prog, 1200, 1300); + return ox_start_insecure_nonreverse(host, 1200, 1300); +} + /* ssh -f host oxlog xterm -e ox -ox ox_asir ... */ int ssh_ox_server(char *host, char *ctl_prog, char *dat_prog, short portControl, short portStream) { char *oxlog; char *ssh; + oxlog = concat_openxm_home_bin("oxlog"); ctl_prog = concat_openxm_home_bin(ctl_prog); dat_prog = concat_openxm_home_bin(dat_prog); - ssh = which("ssh", getenv(PATH)); + ssh = which("ssh", getenv("PATH")); if (fork() == 0) { execl(ssh, ssh, "-f", host, oxlog, "xterm", "-icon", "-e", ctl_prog, "-insecure", "-ox", dat_prog, - "-data", portStream, "-control", portControl, "-host", host, NULL); + "-data", portStream, "-control", portControl, + "-host", host, NULL); exit(1); } } @@ -887,15 +901,6 @@ ox_file_t ox_start_insecure_nonreverse(char* host, sho return sv; } -ox_file_t ox_start_insecure_nonreverse2(char* host, char *ctl_prog, char *dat_prog) -{ - short portControl= 1200; /* 自動生成させよう... */ - short portStream = 1300; - - ssh_ox_server(host, ctl_prog, dat_prog, portControl, portStream); - return ox_start_insecure_nonreverse(host, portControl, portStream); -} - void ox_reset(ox_file_t sv) { send_ox_command(sv->control, SM_control_reset_connection); @@ -1349,7 +1354,7 @@ static cmo_list* make_list_of_id(int ver, char* ver_s, static cmo_list *make_list_of_tag(int type) { cmo_list *li = new_cmo_list(); - symbol *symp; + symbol_t symp; int i = 0; while((symp = lookup(i++))->key != NULL) { if (symp->type == type) { @@ -1454,7 +1459,7 @@ static char *new_string_set_cmo_list(cmo_list *m) char *new_string_set_cmo(cmo *m) { - symbol *symp; + symbol_t symp; switch(m->tag) { case CMO_ZZ: return new_string_set_cmo_zz((cmo_zz *)m);