[BACK]Return to ws_fileio.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/ws_fileio.c between version 1.11 and 1.12

version 1.11, 2015/08/14 13:51:55 version 1.12, 2018/03/29 01:32:54
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/ws_fileio.c,v 1.10 2015/08/06 10:01:52 fujimoto Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/ws_fileio.c,v 1.11 2015/08/14 13:51:55 fujimoto Exp $
 */  */
 #if defined(VISUAL) || defined(__MINGW32__) || defined(MPI)  #if defined(VISUAL) || defined(__MINGW32__) || defined(MPI)
 #include<stdio.h>  #include<stdio.h>
Line 62  unsigned element_size;
Line 62  unsigned element_size;
 int count;  int count;
 STREAM* s;  STREAM* s;
 {  {
         int length,total,r;    int length,total,r;
         char *p;    char *p;
   
         if (!s || !s->read_flag || !data    if (!s || !s->read_flag || !data
                 || !element_size || !count)      || !element_size || !count)
                 return 0;      return 0;
   
         length = element_size * count;    length = element_size * count;
   
         total = length;    total = length;
         p = data;    p = data;
         while ( length > (r = s->buf_size - s->p) ) {    while ( length > (r = s->buf_size - s->p) ) {
                 memcpy((void *)p,(void *)(s->buf+s->p),r);      memcpy((void *)p,(void *)(s->buf+s->p),r);
                 s->p += r;      s->p += r;
                 p += r;      p += r;
                 length -= r;      length -= r;
                 if ( !WSIO_fillbuf(s) )      if ( !WSIO_fillbuf(s) )
                         return (total-length)/ element_size;        return (total-length)/ element_size;
         }    }
         memcpy((void *)p,(void *)(s->buf+s->p),length);    memcpy((void *)p,(void *)(s->buf+s->p),length);
         s->p += length;    s->p += length;
         return count;    return count;
 }  }
   
 int cwrite (data, element_size, count, s)  int cwrite (data, element_size, count, s)
Line 92  unsigned element_size;
Line 92  unsigned element_size;
 int count;  int count;
 STREAM* s;  STREAM* s;
 {  {
         int length,total,r;    int length,total,r;
         char *p;    char *p;
   
         if (!s || s->read_flag || !data    if (!s || s->read_flag || !data
                 || !element_size || !count)      || !element_size || !count)
                 return 0;      return 0;
   
         length = element_size * count;    length = element_size * count;
   
         total = length;    total = length;
         p = data;    p = data;
         while ( length > (r = s->buf_size - s->p) ) {    while ( length > (r = s->buf_size - s->p) ) {
                 memcpy((void *)(s->buf+s->p),(void *)p,r);      memcpy((void *)(s->buf+s->p),(void *)p,r);
                 s->p += r;      s->p += r;
                 p += r;      p += r;
                 length -= r;      length -= r;
                 if ( !WSIO_flushbuf(s) )      if ( !WSIO_flushbuf(s) )
                         return (total-length)/ element_size;        return (total-length)/ element_size;
         }    }
         memcpy((void *)(s->buf+s->p),(void *)p,length);    memcpy((void *)(s->buf+s->p),(void *)p,length);
         s->p += length;    s->p += length;
         return count;    return count;
 }  }
   
 int cflush(s)  int cflush(s)
 STREAM* s;  STREAM* s;
 {  {
         if (!s || s->read_flag)    if (!s || s->read_flag)
                 return EOF;      return EOF;
   
         if (!WSIO_flushbuf(s))    if (!WSIO_flushbuf(s))
                 return EOF;      return EOF;
         else    else
                 return 0;      return 0;
 }  }
   
 int WSIO_fillbuf(s)  int WSIO_fillbuf(s)
 STREAM* s;  STREAM* s;
 {  {
         s->buf_size = WSIO_read(s->buf, s->max_buf_size, s);    s->buf_size = WSIO_read(s->buf, s->max_buf_size, s);
         s->p = 0;    s->p = 0;
   
         return s->buf_size;    return s->buf_size;
 }  }
   
 int WSIO_flushbuf(s)  int WSIO_flushbuf(s)
 STREAM* s;  STREAM* s;
 {  {
         int rst;    int rst;
   
   
         rst = WSIO_write(s->buf, s->p, s);    rst = WSIO_write(s->buf, s->p, s);
         s->p = 0;    s->p = 0;
   
         return rst;    return rst;
 }  }
   
 STREAM* WSIO_open(fildes, mode)  STREAM* WSIO_open(fildes, mode)
 int fildes;  int fildes;
 char* mode;  char* mode;
 {  {
         STREAM* rst = 0;    STREAM* rst = 0;
         int flag = 0;    int flag = 0;
   
         rst = (STREAM*)malloc(sizeof(STREAM));    rst = (STREAM*)malloc(sizeof(STREAM));
         if (rst) {    if (rst) {
 #if defined(VISUAL)  #if defined(VISUAL)
 #if _MSC_VER < 1500  #if _MSC_VER < 1500
                 _fileno(&rst->fp) = -1;      _fileno(&rst->fp) = -1;
 #else  #else
                 (&rst->fp)->_file = -1;      (&rst->fp)->_file = -1;
 #endif  #endif
 #elif defined(MPI)  #elif defined(MPI)
 #if defined(sparc) || defined(__FreeBSD__)  #if defined(sparc) || defined(__FreeBSD__)
                 (&rst->fp)->_file = -1;      (&rst->fp)->_file = -1;
 #elif defined(linux)  #elif defined(linux)
                 (&rst->fp)->_fileno = -1;      (&rst->fp)->_fileno = -1;
 #else  #else
                 fileno(&rst->fp) = -1;      fileno(&rst->fp) = -1;
 #endif  #endif
 #endif  #endif
                 rst->fildes = fildes;      rst->fildes = fildes;
   
                 if (mode[0] == 'r') {      if (mode[0] == 'r') {
                         rst->read_flag = 1;        rst->read_flag = 1;
                         rst->p = WSIO_STRING_LENGTH;        rst->p = WSIO_STRING_LENGTH;
                 } else {      } else {
                         rst->read_flag = 0;        rst->read_flag = 0;
                         rst->p = 0;        rst->p = 0;
                 }      }
                 rst->max_buf_size = rst->buf_size = WSIO_STRING_LENGTH;      rst->max_buf_size = rst->buf_size = WSIO_STRING_LENGTH;
                 rst->buf = (char*)malloc(WSIO_STRING_LENGTH);      rst->buf = (char*)malloc(WSIO_STRING_LENGTH);
                 if (!rst->buf) {      if (!rst->buf) {
                         free (rst);        free (rst);
                         rst = 0;        rst = 0;
                 }      }
                 rst->eof = 0;      rst->eof = 0;
                 rst->error = 0;      rst->error = 0;
         }    }
         return rst;    return rst;
 }  }
   
 int WSIO_read (data, count, s)  int WSIO_read (data, count, s)
Line 199  char* data;
Line 199  char* data;
 int count;  int count;
 STREAM* s;  STREAM* s;
 {  {
         int size;    int size;
   
         if (!s)    if (!s)
                 return 0;      return 0;
   
 #if defined(VISUAL) || defined(__MINGW32__)  #if defined(VISUAL) || defined(__MINGW32__)
         size = recv(s->fildes,data,count,0);    size = recv(s->fildes,data,count,0);
 #elif defined(MPI)  #elif defined(MPI)
         {    {
                 MPI_Status status;      MPI_Status status;
   
                 MPI_Recv(&size,1,MPI_INT,s->fildes,0,MPI_COMM_WORLD,&status);      MPI_Recv(&size,1,MPI_INT,s->fildes,0,MPI_COMM_WORLD,&status);
                 if ( size > count )      if ( size > count )
                         size = count;        size = count;
                 MPI_Recv(data,size,MPI_CHAR,s->fildes,0,MPI_COMM_WORLD,&status);      MPI_Recv(data,size,MPI_CHAR,s->fildes,0,MPI_COMM_WORLD,&status);
         }    }
 #endif  #endif
         return size;    return size;
 }  }
   
 int WSIO_write (data, count, s)  int WSIO_write (data, count, s)
Line 224  char* data;
Line 224  char* data;
 int count;  int count;
 STREAM* s;  STREAM* s;
 {  {
         int size;    int size;
   
         if (!s || !count)    if (!s || !count)
                 return 0;      return 0;
   
 #if defined(VISUAL) || defined(__MINGW32__)  #if defined(VISUAL) || defined(__MINGW32__)
         size = send(s->fildes,data,count,0);    size = send(s->fildes,data,count,0);
         return size;    return size;
 #elif defined(MPI)  #elif defined(MPI)
         MPI_Ssend(&count,1,MPI_INT,s->fildes,0,MPI_COMM_WORLD);    MPI_Ssend(&count,1,MPI_INT,s->fildes,0,MPI_COMM_WORLD);
         MPI_Ssend(data,count,MPI_CHAR,s->fildes,0,MPI_COMM_WORLD);    MPI_Ssend(data,count,MPI_CHAR,s->fildes,0,MPI_COMM_WORLD);
         return count;    return count;
 #endif  #endif
 }  }
   
Line 244  int mpi_nprocs,mpi_myid;
Line 244  int mpi_nprocs,mpi_myid;
   
 void mpi_init()  void mpi_init()
 {  {
         int argc;    int argc;
         char *argv[1];    char *argv[1];
   
         argc = 0; argv[0] = 0;    argc = 0; argv[0] = 0;
         MPI_Init(&argc,&argv);    MPI_Init(&argc,&argv);
         MPI_Comm_size(MPI_COMM_WORLD,&mpi_nprocs);    MPI_Comm_size(MPI_COMM_WORLD,&mpi_nprocs);
         MPI_Comm_rank(MPI_COMM_WORLD,&mpi_myid);    MPI_Comm_rank(MPI_COMM_WORLD,&mpi_myid);
 }  }
   
 void mpi_finalize()  void mpi_finalize()
 {  {
         MPI_Finalize();    MPI_Finalize();
 }  }
 #endif  #endif
 #endif  #endif

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>