From: <i7...@us...> - 2010-02-18 10:28:47
|
Revision: 6923 http://octave.svn.sourceforge.net/octave/?rev=6923&view=rev Author: i7tiol Date: 2010-02-18 10:28:39 +0000 (Thu, 18 Feb 2010) Log Message: ----------- get rid of read/write compiler warnings Modified Paths: -------------- trunk/octave-forge/main/parallel/src/connect.cc trunk/octave-forge/main/parallel/src/sclose.cc Modified: trunk/octave-forge/main/parallel/src/connect.cc =================================================================== --- trunk/octave-forge/main/parallel/src/connect.cc 2010-02-18 06:22:10 UTC (rev 6922) +++ trunk/octave-forge/main/parallel/src/connect.cc 2010-02-18 10:28:39 UTC (rev 6923) @@ -43,6 +43,18 @@ // COMM +static void read_if_no_error (int fd, void *buf, size_t count, int est) { + if (! est) + if (read (fd, buf, count) < (ssize_t)count) + error ("read error"); +} + +static void write_if_no_error (int fd, const void *buf, size_t count, int est) { + if (! est) + if (write (fd, buf, count) < (ssize_t)count) + error ("write error"); +} + DEFUN_DLD (connect, args, , "connect (hosts)\n\ \n\ @@ -114,12 +126,11 @@ pid=getpid(); nl=htonl(num_nodes); - write(sock,&nl,sizeof(int)); + write_if_no_error(sock,&nl,sizeof(int),error_state); nl=htonl(i); - write(sock,&nl,sizeof(int)); + write_if_no_error(sock,&nl,sizeof(int),error_state); nl=htonl(pid); - write(sock,&nl,sizeof(int)); - + write_if_no_error(sock,&nl,sizeof(int),error_state); host=(char *)calloc(128,sizeof(char)); for(j=0;j<row;j++){ strncpy(host,&cm.data()[col*j],col); @@ -130,16 +141,16 @@ *pt='\0'; len=strlen(host)+1; nl=htonl(len); - write(sock,&nl,sizeof(int)); - write(sock,host,len); + write_if_no_error(sock,&nl,sizeof(int),error_state); + write_if_no_error(sock,host,len,error_state); } free(host); int comm_len; std::string directory = octave_env::getcwd (); comm_len=directory.length(); nl=htonl(comm_len); - write(sock,&nl,sizeof(int)); - write(sock,directory.c_str(),comm_len); + write_if_no_error(sock,&nl,sizeof(int),error_state); + write_if_no_error(sock,directory.c_str(),comm_len,error_state); } usleep(100); @@ -196,7 +207,7 @@ int len=0,result=0;; //send pppid nl=htonl(pid); - write(sock,&nl,sizeof(int)); + write_if_no_error(sock,&nl,sizeof(int),error_state); //send name size strncpy(myname,cm.data(),col); pt=strchr(myname,' '); @@ -206,16 +217,16 @@ *pt='\0'; len=strlen(myname); nl=htonl(len); - write(sock,&nl,sizeof(int)); + write_if_no_error(sock,&nl,sizeof(int),error_state); //send name - write(sock,myname,len+1); + write_if_no_error(sock,myname,len+1,error_state); //recv result code - read(sock,&nl,sizeof(int)); + read_if_no_error(sock,&nl,sizeof(int),error_state); result=ntohl(nl); if(result==0){ sock_v[i]=sock; //recv endian - read(sock,&nl,sizeof(int)); + read_if_no_error(sock,&nl,sizeof(int),error_state); sock_v[i+2*row]=ntohl(nl); //send endian #if defined (__BYTE_ORDER) @@ -225,7 +236,7 @@ #else # error "can not determine the byte order" #endif - write(sock,&nl,sizeof(int)); + write_if_no_error(sock,&nl,sizeof(int),error_state); break; }else{ close(sock); @@ -238,7 +249,7 @@ char lf='\n'; for(i=1;i<row;i++){ - write((int)sock_v[i+row],&lf,sizeof(char)); + write_if_no_error((int)sock_v[i+row],&lf,sizeof(char),error_state); // cout << i+row <<endl; } } Modified: trunk/octave-forge/main/parallel/src/sclose.cc =================================================================== --- trunk/octave-forge/main/parallel/src/sclose.cc 2010-02-18 06:22:10 UTC (rev 6922) +++ trunk/octave-forge/main/parallel/src/sclose.cc 2010-02-18 10:28:39 UTC (rev 6923) @@ -53,7 +53,7 @@ if(args.length () == 1) { - int i,nsock=0,sock,k,error_code,err=0,nl; + int i,nsock=0,sock,k,err=0,nl; nsock=args(0).matrix_value().rows()*2; @@ -80,9 +80,12 @@ if(pollfd[k].revents&POLLIN){ pid=getpid(); - read(pollfd[k].fd,&nl,sizeof(int)); - error_code=ntohl(nl); - write(pollfd[k].fd,&nl,sizeof(int)); + + if (read(pollfd[k].fd,&nl,sizeof(int)) < (ssize_t)sizeof(int)) + error ("read error"); + if (! error_state) + if (write(pollfd[k].fd,&nl,sizeof(int)) < (ssize_t)sizeof(int)) + error ("write error"); error("error occurred in %s\n\tsee %s:/tmp/octave_error-%s_%5d.log for detail",hehe->h_name,hehe->h_name,hehe->h_name,pid ); } if(pollfd[k].revents&POLLERR){ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |