=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/io/io_win_mini.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- OpenXM_contrib2/asir2000/io/io_win_mini.c 2006/12/05 01:47:08 1.3 +++ OpenXM_contrib2/asir2000/io/io_win_mini.c 2018/03/29 01:32:53 1.4 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/io/io_win_mini.c,v 1.2 2006/09/29 09:02:49 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/io/io_win_mini.c,v 1.3 2006/12/05 01:47:08 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -30,403 +30,403 @@ int little_endian=1; int terminate; static int available_cmo[] = { - CMO_NULL, CMO_INT32, CMO_STRING,CMO_LIST, - CMO_ERROR, CMO_ERROR2, CMO_ZERO, - 0 + CMO_NULL, CMO_INT32, CMO_STRING,CMO_LIST, + CMO_ERROR, CMO_ERROR2, CMO_ZERO, + 0 }; int ox_data_is_available(int s) { - return FP_DATA_IS_AVAILABLE(iofp[s].in); + return FP_DATA_IS_AVAILABLE(iofp[s].in); } void wait_for_data(int s) { - fd_set r; - int sock; + fd_set r; + int sock; - if ( !FP_DATA_IS_AVAILABLE(iofp[s].in) ) { - sock = iofp[s].in->fildes; - FD_ZERO(&r); - FD_SET((unsigned int)sock,&r); - select(0,&r,NULL,NULL,NULL); - } + if ( !FP_DATA_IS_AVAILABLE(iofp[s].in) ) { + sock = iofp[s].in->fildes; + FD_ZERO(&r); + FD_SET((unsigned int)sock,&r); + select(0,&r,NULL,NULL,NULL); + } } void ox_send_data(int s,pointer p) { - ERR err; + ERR err; - if ( !valid_as_cmo(p) ) - return; - ox_write_int(s,OX_DATA); - ox_write_int(s,ox_serial++); - ox_write_cmo(s,p); - ox_flush_stream(s); + if ( !valid_as_cmo(p) ) + return; + ox_write_int(s,OX_DATA); + ox_write_int(s,ox_serial++); + ox_write_cmo(s,p); + ox_flush_stream(s); } void ox_send_cmd(int s,int id) { - ox_write_int(s,OX_COMMAND); - ox_write_int(s,ox_serial++); - ox_write_int(s,id); - ox_flush_stream(s); + ox_write_int(s,OX_COMMAND); + ox_write_int(s,ox_serial++); + ox_write_int(s,id); + ox_flush_stream(s); } void ox_send_sync(int s) { - ox_write_int(s,OX_SYNC_BALL); - ox_write_int(s,ox_serial++); - ox_flush_stream(s); + ox_write_int(s,OX_SYNC_BALL); + ox_write_int(s,ox_serial++); + ox_flush_stream(s); } unsigned int ox_recv(int s, int *id, Obj *p) { - unsigned int cmd,serial; - USINT ui; + unsigned int cmd,serial; + USINT ui; - wait_for_data(s); - if ( terminate ) return -1; - ox_read_int(s,id); - ox_read_int(s,&serial); - switch ( *id ) { - case OX_COMMAND: - ox_read_int(s,&cmd); - _MKUSINT(ui,cmd); - *p = (Obj)ui; - break; - case OX_DATA: - ox_read_cmo(s,p); - break; - default: - *p = 0; - break; - } - return serial; + wait_for_data(s); + if ( terminate ) return -1; + ox_read_int(s,id); + ox_read_int(s,&serial); + switch ( *id ) { + case OX_COMMAND: + ox_read_int(s,&cmd); + _MKUSINT(ui,cmd); + *p = (Obj)ui; + break; + case OX_DATA: + ox_read_cmo(s,p); + break; + default: + *p = 0; + break; + } + return serial; } void ox_get_result(int s,Obj *rp) { - int id; - Obj obj,r; - int level; + int id; + Obj obj,r; + int level; - level = 0; - r = 0; - do { - ox_recv(s,&id,&obj); - if ( id == OX_COMMAND ) { - switch ( ((USINT)obj)->body ) { - case SM_beginBlock: - level++; - break; - case SM_endBlock: - level--; - } - } else - r = obj; - } while ( level ); - *rp = r; + level = 0; + r = 0; + do { + ox_recv(s,&id,&obj); + if ( id == OX_COMMAND ) { + switch ( ((USINT)obj)->body ) { + case SM_beginBlock: + level++; + break; + case SM_endBlock: + level--; + } + } else + r = obj; + } while ( level ); + *rp = r; } void ox_read_int(int s, int *n) { - read_int((FILE *)iofp[s].in,n); + read_int((FILE *)iofp[s].in,n); } void ox_read_cmo(int s, Obj *rp) { - read_cmo((FILE *)iofp[s].in,rp); + read_cmo((FILE *)iofp[s].in,rp); } void ox_write_int(int s, int n) { - write_int((FILE *)iofp[s].out,&n); + write_int((FILE *)iofp[s].out,&n); } void ox_write_cmo(int s, Obj obj) { - write_cmo((FILE *)iofp[s].out,obj); + write_cmo((FILE *)iofp[s].out,obj); } void ox_flush_stream(int s) { - if ( ox_batch ) - return; - if ( _fileno(&iofp[s].out->fp) < 0 ) - cflush(iofp[s].out); - else - fflush((FILE *)iofp[s].out); + if ( ox_batch ) + return; + if ( _fileno(&iofp[s].out->fp) < 0 ) + cflush(iofp[s].out); + else + fflush((FILE *)iofp[s].out); } void ox_flush_stream_force(int s) { - if ( _fileno(&iofp[s].out->fp) < 0 ) - cflush(iofp[s].out); - else - fflush((FILE *)iofp[s].out); + if ( _fileno(&iofp[s].out->fp) < 0 ) + cflush(iofp[s].out); + else + fflush((FILE *)iofp[s].out); } /* CMO I/O functions */ int valid_as_cmo(Obj obj) { - NODE m; + NODE m; - if ( !obj ) - return 1; - switch ( OID(obj) ) { - case O_STR: case O_ERR: case O_USINT: - return 1; - default: - return 0; - } + if ( !obj ) + return 1; + switch ( OID(obj) ) { + case O_STR: case O_ERR: case O_USINT: + return 1; + default: + return 0; + } } void write_cmo(FILE *s,Obj obj) { - int r; - char errmsg[BUFSIZ]; + int r; + char errmsg[BUFSIZ]; - if ( !obj ) { - r = CMO_NULL; write_int(s,&r); - return; - } - switch ( OID(obj) ) { - case O_STR: - write_cmo_string(s,(STRING)obj); - break; - case O_USINT: - write_cmo_uint(s,(USINT)obj); - break; - case O_LIST: - write_cmo_list(s,(LIST)obj); - break; - case O_ERR: - write_cmo_error(s,(ERR)obj); - break; - } + if ( !obj ) { + r = CMO_NULL; write_int(s,&r); + return; + } + switch ( OID(obj) ) { + case O_STR: + write_cmo_string(s,(STRING)obj); + break; + case O_USINT: + write_cmo_uint(s,(USINT)obj); + break; + case O_LIST: + write_cmo_list(s,(LIST)obj); + break; + case O_ERR: + write_cmo_error(s,(ERR)obj); + break; + } } int cmo_tag(Obj obj,int *tag) { - if ( !obj ) { - *tag = CMO_NULL; - return 1; - } - switch ( OID(obj) ) { - case O_STR: - *tag = CMO_STRING; break; - case O_USINT: - *tag = CMO_INT32; break; - case O_LIST: - *tag = CMO_LIST; break; - case O_ERR: - *tag = CMO_ERROR2; break; - default: - return 0; - } - return 1; + if ( !obj ) { + *tag = CMO_NULL; + return 1; + } + switch ( OID(obj) ) { + case O_STR: + *tag = CMO_STRING; break; + case O_USINT: + *tag = CMO_INT32; break; + case O_LIST: + *tag = CMO_LIST; break; + case O_ERR: + *tag = CMO_ERROR2; break; + default: + return 0; + } + return 1; } void write_cmo_uint(FILE *s,USINT ui) { - unsigned int r; + unsigned int r; - r = CMO_INT32; write_int(s,&r); - r = ui->body; write_int(s,&r); + r = CMO_INT32; write_int(s,&r); + r = ui->body; write_int(s,&r); } void write_cmo_string(FILE *s,STRING str) { - int r; - int size; - char *p; + int r; + int size; + char *p; - r = CMO_STRING; write_int(s,&r); - p = BDY(str); - size = p ? strlen(p) : 0; - write_int(s,&size); - if ( size ) - write_string(s,p,size); + r = CMO_STRING; write_int(s,&r); + p = BDY(str); + size = p ? strlen(p) : 0; + write_int(s,&size); + if ( size ) + write_string(s,p,size); } void write_cmo_list(FILE *s,LIST list) { - NODE m; - int i,n,r; + NODE m; + int i,n,r; - for ( n = 0, m = BDY(list); m; m = NEXT(m), n++ ); - r = CMO_LIST; write_int(s,&r); - write_int(s,&n); - for ( i = 0, m = BDY(list); i < n; i++, m = NEXT(m) ) - write_cmo(s,BDY(m)); + for ( n = 0, m = BDY(list); m; m = NEXT(m), n++ ); + r = CMO_LIST; write_int(s,&r); + write_int(s,&n); + for ( i = 0, m = BDY(list); i < n; i++, m = NEXT(m) ) + write_cmo(s,BDY(m)); } void write_cmo_error(FILE *s,ERR e) { - int r; + int r; - r = CMO_ERROR2; write_int(s,&r); - write_cmo(s,BDY(e)); + r = CMO_ERROR2; write_int(s,&r); + write_cmo(s,BDY(e)); } void read_cmo(FILE *s,Obj *rp) { - int id; - STRING str; - LIST list; - USINT t; - Obj obj; - ERR e; + int id; + STRING str; + LIST list; + USINT t; + Obj obj; + ERR e; - read_int(s,&id); - switch ( id ) { - /* level 0 objects */ - case CMO_NULL: - *rp = 0; - break; - case CMO_INT32: - read_cmo_uint(s,&t); *rp = (Obj)t; - break; - case CMO_STRING: - loadstring(s,&str); *rp = (Obj)str; - break; - case CMO_LIST: - read_cmo_list(s,&list); *rp = (Obj)list; - break; - case CMO_ERROR: - _MKERR(e,0); *rp = (Obj)e; - break; - case CMO_ERROR2: - read_cmo(s,&obj); _MKERR(e,obj); *rp = (Obj)e; - break; - case CMO_ZERO: - *rp = 0; - break; - default: - _MKUSINT(t,id); - t->id = O_VOID; - *rp = (Obj)t; - break; - } + read_int(s,&id); + switch ( id ) { + /* level 0 objects */ + case CMO_NULL: + *rp = 0; + break; + case CMO_INT32: + read_cmo_uint(s,&t); *rp = (Obj)t; + break; + case CMO_STRING: + loadstring(s,&str); *rp = (Obj)str; + break; + case CMO_LIST: + read_cmo_list(s,&list); *rp = (Obj)list; + break; + case CMO_ERROR: + _MKERR(e,0); *rp = (Obj)e; + break; + case CMO_ERROR2: + read_cmo(s,&obj); _MKERR(e,obj); *rp = (Obj)e; + break; + case CMO_ZERO: + *rp = 0; + break; + default: + _MKUSINT(t,id); + t->id = O_VOID; + *rp = (Obj)t; + break; + } } void read_cmo_uint(FILE *s,USINT *rp) { - unsigned int body; + unsigned int body; - read_int(s,&body); - _MKUSINT(*rp,body); + read_int(s,&body); + _MKUSINT(*rp,body); } void read_cmo_list(FILE *s,Obj *rp) { - int len; - Obj *w; - int i; - NODE n0,n1; - LIST list; + int len; + Obj *w; + int i; + NODE n0,n1; + LIST list; - read_int(s,&len); - w = (Obj *)ALLOCA(len*sizeof(Obj)); - for ( i = 0; i < len; i++ ) - read_cmo(s,&w[i]); - for ( i = len-1, n0 = 0; i >= 0; i-- ) { - _MKNODE(n1,w[i],n0); n0 = n1; - } - _MKLIST(list,n0); - *rp = (Obj)list; + read_int(s,&len); + w = (Obj *)ALLOCA(len*sizeof(Obj)); + for ( i = 0; i < len; i++ ) + read_cmo(s,&w[i]); + for ( i = len-1, n0 = 0; i >= 0; i-- ) { + _MKNODE(n1,w[i],n0); n0 = n1; + } + _MKLIST(list,n0); + *rp = (Obj)list; } void loadstring(FILE *s,STRING *p) { - char *t; + char *t; - loadstr(s,&t); _MKSTR(*p,t); + loadstr(s,&t); _MKSTR(*p,t); } void loadstr(FILE *s,char **p) { - int len; - char *t; + int len; + char *t; - read_int(s,&len); - t = (char *)malloc(len+1); - if ( len ) read_string(s,t,len); - t[len] = 0; - *p = t; + read_int(s,&len); + t = (char *)malloc(len+1); + if ( len ) read_string(s,t,len); + t[len] = 0; + *p = t; } /* low level buffered I/O functions */ int gen_fread (char *ptr,int size,int nitems,FILE *stream) { - int n; + int n; - if ( _fileno(stream) < 0 ) - n = cread(ptr,size,nitems,(STREAM *)stream); - else - n = fread(ptr,size,nitems,stream); - if ( !n ) - return 0; - else - return n; + if ( _fileno(stream) < 0 ) + n = cread(ptr,size,nitems,(STREAM *)stream); + else + n = fread(ptr,size,nitems,stream); + if ( !n ) + return 0; + else + return n; } int gen_fwrite (char *ptr,int size,int nitems,FILE *stream) { - if ( _fileno(stream) < 0 ) - return cwrite(ptr,size,nitems,(STREAM *)stream); - else - return fwrite(ptr,size,nitems,stream); + if ( _fileno(stream) < 0 ) + return cwrite(ptr,size,nitems,(STREAM *)stream); + else + return fwrite(ptr,size,nitems,stream); } void write_char(FILE *f,unsigned char *p) { - gen_fwrite(p,sizeof(unsigned char),1,f); + gen_fwrite(p,sizeof(unsigned char),1,f); } void write_short(FILE *f,unsigned short *p) { - gen_fwrite((char *)p,sizeof(unsigned short),1,f); + gen_fwrite((char *)p,sizeof(unsigned short),1,f); } void write_int(FILE *f,unsigned int *p) { - gen_fwrite((char *)p,sizeof(unsigned int),1,f); + gen_fwrite((char *)p,sizeof(unsigned int),1,f); } void write_string(FILE *f,unsigned char *p,int l) { - gen_fwrite(p,sizeof(unsigned char),l,f); + gen_fwrite(p,sizeof(unsigned char),l,f); } void read_char(FILE *f,unsigned char *p) { - gen_fread((char *)p,sizeof(unsigned char),1,f); + gen_fread((char *)p,sizeof(unsigned char),1,f); } void read_short(FILE *f,unsigned short *p) { - gen_fread((char *)p,sizeof(unsigned short),1,f); + gen_fread((char *)p,sizeof(unsigned short),1,f); } void read_int(FILE *f,unsigned int *p) { - gen_fread((char *)p,sizeof(unsigned int),1,f); + gen_fread((char *)p,sizeof(unsigned int),1,f); } void read_string(FILE *f,unsigned char *p,int l) { - gen_fread((char *)p,sizeof(unsigned char),l,f); + gen_fread((char *)p,sizeof(unsigned char),l,f); } /* dummy functions, alternative functions */ double get_current_time() { - return GetTickCount()/1000.0; + return GetTickCount()/1000.0; } void shutdown_all(){}