version 1.18, 2000/12/05 08:30:25 |
version 1.21, 2003/02/04 20:43:55 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C; coding: euc-japan -*- */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.17 2000/12/03 16:15:03 ohara Exp $ */ |
/* $OpenXM: OpenXM/src/ox_toolkit/ox.c,v 1.20 2003/01/13 12:03:12 ohara Exp $ */ |
|
|
/* |
/* |
This module includes functions for sending/receiveng CMO's. |
This module includes functions for sending/receiveng CMO's. |
|
|
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
|
#include <stdarg.h> |
#include <string.h> |
#include <string.h> |
#include <unistd.h> |
#include <unistd.h> |
#include <fcntl.h> |
#include <fcntl.h> |
|
|
#include "ox_toolkit.h" |
#include "ox_toolkit.h" |
#include "parse.h" |
#include "parse.h" |
|
|
|
static FILE *ox_stderr = NULL; |
|
|
/* sorting by the value of CMO_xxx. (for debugging) */ |
/* sorting by the value of CMO_xxx. (for debugging) */ |
static cmo_null* receive_cmo_null(OXFILE *oxfp); |
static cmo_null* receive_cmo_null(OXFILE *oxfp); |
static cmo_int32* receive_cmo_int32(OXFILE *oxfp); |
static cmo_int32* receive_cmo_int32(OXFILE *oxfp); |
Line 271 cmo* receive_cmo(OXFILE *oxfp) |
|
Line 274 cmo* receive_cmo(OXFILE *oxfp) |
|
case CMO_QQ: |
case CMO_QQ: |
default: |
default: |
m = NULL; |
m = NULL; |
fprintf(stderr, "the CMO (%d) is not implemented.\n", tag); |
ox_printf("the CMO (%d) is not implemented.\n", tag); |
} |
} |
return m; |
return m; |
} |
} |
Line 298 void send_ox_command(OXFILE *oxfp, int sm_command) |
|
Line 301 void send_ox_command(OXFILE *oxfp, int sm_command) |
|
void ox_close(OXFILE *sv) |
void ox_close(OXFILE *sv) |
{ |
{ |
send_ox_command(oxf_control(sv), SM_control_kill); |
send_ox_command(oxf_control(sv), SM_control_kill); |
#ifdef DEBUG |
|
sleep(2); |
sleep(2); |
/* We wait thar an OpenXM server terminates. */ |
/* We wait thar an OpenXM server terminates. */ |
fprintf(stderr, "I have closed the connection to an Open XM server.\n"); |
ox_printf("I have closed the connection to an Open XM server.\n"); |
#endif |
|
} |
} |
|
|
void ox_shutdown(OXFILE *sv) |
void ox_shutdown(OXFILE *sv) |
Line 383 void ox_reset(OXFILE *sv) |
|
Line 384 void ox_reset(OXFILE *sv) |
|
} |
} |
|
|
send_ox_tag(sv, OX_SYNC_BALL); |
send_ox_tag(sv, OX_SYNC_BALL); |
#ifdef DEBUG |
ox_printf("I have reset an Open XM server.\n"); |
fprintf(stderr, "I have reset an Open XM server.\n"); |
|
#endif |
|
} |
} |
|
|
void send_ox(OXFILE *oxfp, ox *m) |
void send_ox(OXFILE *oxfp, ox *m) |
Line 562 ox_sync_ball* new_ox_sync_ball() |
|
Line 561 ox_sync_ball* new_ox_sync_ball() |
|
ox_sync_ball *m = malloc(sizeof(ox_sync_ball)); |
ox_sync_ball *m = malloc(sizeof(ox_sync_ball)); |
m->tag = OX_SYNC_BALL; |
m->tag = OX_SYNC_BALL; |
return m; |
return m; |
|
} |
|
|
|
int ox_stderr_init(FILE *fp) |
|
{ |
|
ox_stderr = fp; |
|
if (ox_stderr != NULL) { |
|
setbuf(ox_stderr, NULL); |
|
} |
|
} |
|
|
|
int ox_printf(char *format, ...) |
|
{ |
|
if (ox_stderr != NULL) { |
|
va_list ap; |
|
va_start(ap, format); |
|
vfprintf(ox_stderr, format, ap); |
|
} |
} |
} |