Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

There is a power in giving more clarity to code by taking advantage of the human eye’s desire to seek patterns. Compare this code:

Code Block
languagecpp
void APPcreateNonblockingPipe(int Pipe[2]){
   BAS_FUNCTION(APPcreateNonblockingPipe);
   if (-1 == pipe(Pipe))                          { BASerrorMessage(errno); }
   if (-1 == fcntl(Pipe[0], F_SETFL, O_NONBLOCK)) { BASerrorMessage(errno); }
   if (-1 == fcntl(Pipe[1], F_SETFL, O_NONBLOCK)) { BASerrorMessage(errno); }
   BAS_TRC("Read Pipe = " <<
Pipe[0] << " Write Pipe = " << Pipe[1]);
}

To this code:

Code Block
languagecpp
void APPcreateNonblockingPipe(int Pipe[2]){
   BAS_FUNCTION(APPcreateNonblockingPipe);
   

...

int 

...

Result 

...

= pipe(Pipe)

...

;
   if (Result == -1){
      BASerrorMessage(errno); 
   }    
  

...

 Result = fcntl(Pipe[0], F_SETFL, O_NONBLOCK);
   if (Result == -1){
     

...

 BASerrorMessage(errno); 
   }    

...


   Result =

...

 fcntl(Pipe[1], F_SETFL, O_NONBLOCK)) 

...


   if 

...

(

...

Result == -1){
  

...

 

...

 

...

 

...

 

...

BASerrorMessage(errno); 
   }    
}

The former form is easier to comprehend what we are doing because we can visually see we are doing the same operation to the parts of the pipe.

The code creates a pipe and makes both the read and write end nonblocking.