version 1.9, 2000/12/03 16:15:03 |
version 1.12, 2002/04/10 08:55:45 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- 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.11 2000/12/16 01:49:32 ohara Exp $ */ |
|
|
/* |
/* |
This module includes functions for sending/receiveng CMO's. |
This module includes functions for sending/receiveng CMO's. |
|
|
#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 81 static int receive_int32_lbo(OXFILE *oxfp) |
|
Line 87 static int receive_int32_lbo(OXFILE *oxfp) |
|
OXFILE *oxf_open(int fd) |
OXFILE *oxf_open(int fd) |
{ |
{ |
OXFILE *oxfp = (OXFILE *)malloc(sizeof(OXFILE)); |
OXFILE *oxfp = (OXFILE *)malloc(sizeof(OXFILE)); |
|
oxfp = (OXFILE *)malloc(sizeof(OXFILE)); |
oxfp->fd = fd; |
oxfp->fd = fd; |
oxfp->send_int32 = send_int32_nbo; |
oxfp->send_int32 = send_int32_nbo; |
oxfp->receive_int32 = receive_int32_nbo; |
oxfp->receive_int32 = receive_int32_nbo; |
Line 170 int oxf_listen(short *portp) |
|
Line 177 int oxf_listen(short *portp) |
|
OXFILE *oxf_connect_active(char *hostname, short port) |
OXFILE *oxf_connect_active(char *hostname, short port) |
{ |
{ |
int fd = mysocketOpen(hostname, port); |
int fd = mysocketOpen(hostname, port); |
return oxf_open(fd); |
return (fd < 0)? NULL: oxf_open(fd); |
} |
} |
|
|
OXFILE *oxf_connect_passive(int listened) |
OXFILE *oxf_connect_passive(int listened) |
{ |
{ |
int fd = mysocketAccept(listened); |
int fd = mysocketAccept(listened); |
return oxf_open(fd); |
return (fd < 0)? NULL: oxf_open(fd); |
} |
} |
|
|
#define LENGTH_OF_ONETIME_PASSWORD 64 |
#define LENGTH_OF_ONETIME_PASSWORD 64 |
Line 345 OXFILE *oxf_execute_cmd(OXFILE *oxfp, char *cmd) |
|
Line 352 OXFILE *oxf_execute_cmd(OXFILE *oxfp, char *cmd) |
|
int listened; |
int listened; |
|
|
if ((listened = oxf_listen(&port)) != -1) { |
if ((listened = oxf_listen(&port)) != -1) { |
send_ox_cmo(oxfp, (cmo *)new_cmo_int32(port)); |
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 *)new_cmo_string(cmd)); |
send_ox_cmo(oxfp, (cmo *)args); |
send_ox_cmo(oxfp, (cmo *)new_cmo_int32(2)); /* number of arguments */ |
send_ox_command(oxfp, SM_control_spawn_server); |
send_ox_cmo(oxfp, (cmo *)new_cmo_string("oxc_open")); |
|
send_ox_command(oxfp, SM_executeFunction); |
|
return oxf_connect_passive(listened); |
return oxf_connect_passive(listened); |
} |
} |
return NULL; |
return NULL; |