- if( target->write( targetPtr, j ) != j ) {
- throw "Error, target write failed";
+ while( sent < j ) {
+
+ errno = 0;
+ int dlen = target->write( targetPtr + sent, std::min( 1024, j - sent ) );
+
+ if( dlen < 0 ) {
+ throw "Error, target write failed";
+ } else if( dlen == 0 ) {
+ // sleep
+ usleep( 50000 );
+ }
+
+ if( errno != 0 ) {
+ perror( "Error" );
+ }
+
+ sent += dlen;