=================================================================== RCS file: /home/cvs/OpenXM/src/ox_toolkit/oxf.c,v retrieving revision 1.9 retrieving revision 1.14 diff -u -p -r1.9 -r1.14 --- OpenXM/src/ox_toolkit/oxf.c 2000/12/03 16:15:03 1.9 +++ OpenXM/src/ox_toolkit/oxf.c 2003/01/13 12:03:12 1.14 @@ -1,5 +1,5 @@ /* -*- mode: C; coding: euc-japan -*- */ -/* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.8 2000/12/01 07:27:03 ohara Exp $ */ +/* $OpenXM: OpenXM/src/ox_toolkit/oxf.c,v 1.13 2003/01/11 11:42:31 ohara Exp $ */ /* This module includes functions for sending/receiveng CMO's. @@ -16,6 +16,12 @@ #include #include +#if defined(__sun__) +#include +#include +#include +#endif + #include "mysocket.h" #include "ox_toolkit.h" @@ -81,6 +87,7 @@ static int receive_int32_lbo(OXFILE *oxfp) OXFILE *oxf_open(int fd) { OXFILE *oxfp = (OXFILE *)malloc(sizeof(OXFILE)); + oxfp = (OXFILE *)malloc(sizeof(OXFILE)); oxfp->fd = fd; oxfp->send_int32 = send_int32_nbo; oxfp->receive_int32 = receive_int32_nbo; @@ -170,13 +177,13 @@ int oxf_listen(short *portp) OXFILE *oxf_connect_active(char *hostname, short port) { int fd = mysocketOpen(hostname, port); - return oxf_open(fd); + return (fd < 0)? NULL: oxf_open(fd); } OXFILE *oxf_connect_passive(int listened) { int fd = mysocketAccept(listened); - return oxf_open(fd); + return (fd < 0)? NULL: oxf_open(fd); } #define LENGTH_OF_ONETIME_PASSWORD 64 @@ -264,7 +271,7 @@ int oxc_start(char *remote_host, short port, char *pas if ((pid = fork()) == 0) { sprintf(ports, "%d", port); #ifdef DEBUG - fprintf(stderr, "oxf.c:: oxc_start() does %s(ssh) -f %s -h %s -p %s -c %s\n", remote_host, cmd, localhost, ports, passwd); + ox_printf("oxf.c:: oxc_start() does %s(ssh) -f %s -h %s -p %s -c %s\n", remote_host, cmd, localhost, ports, passwd); #endif execlp("ssh", remote_host, "-f", cmd, "-h", localhost, "-p", ports,"-c", passwd, NULL); @@ -345,11 +352,9 @@ OXFILE *oxf_execute_cmd(OXFILE *oxfp, char *cmd) int listened; if ((listened = oxf_listen(&port)) != -1) { - send_ox_cmo(oxfp, (cmo *)new_cmo_int32(port)); - send_ox_cmo(oxfp, (cmo *)new_cmo_string(cmd)); - send_ox_cmo(oxfp, (cmo *)new_cmo_int32(2)); /* number of arguments */ - send_ox_cmo(oxfp, (cmo *)new_cmo_string("oxc_open")); - send_ox_command(oxfp, SM_executeFunction); + cmo_list *args = list_appendl(NULL, list_append(new_cmo_list(), new_cmo_int32(port)), new_cmo_string(cmd), NULL); + send_ox_cmo(oxfp, (cmo *)args); + send_ox_command(oxfp, SM_control_spawn_server); return oxf_connect_passive(listened); } return NULL;