* GPL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*/
/*
done = 0;
do {
ret = write(fd, write_buf+done,write_size-done);
- if (verbose > 1 || ret <= 0) {
- rprintf(rank, n, ret <= 0,
+ if (verbose > 1 || ret < 0) {
+ rprintf(rank, n,
+ ret < 0 && errno != EINTR,
"write %d/%d @ %d: %s\n",
ret + done, write_size, done,
strerror(errno));
- if (ret <= 0)
+ if (ret < 0 && errno != EINTR)
break;
}
- done += ret;
+ if (ret > 0)
+ done += ret;
} while (done != write_size);
}
ret = write(fd, append_buf + done,
append_size - done);
if (ret < 0) {
- rprintf(rank, n, ret < 0,
+ rprintf(rank, n, errno != EINTR,
"append %u/%u: %s\n",
ret + done, append_size,
strerror(errno));
- break;
+ if (errno != EINTR)
+ break;
} else if (verbose > 1 || ret != append_size) {
rprintf(rank, n, ret != append_size,
"append %u/%u\n",
ret + done, append_size);
}
- done += ret;
+ if (ret > 0)
+ done += ret;
} while (done != append_size);
} else if (rank == trunc_rank) {
/* XXX: truncating the same file descriptor as the
if (error == 1) {
char command[4096];
+ int rc;
rprintf(rank, n, 0, STATUS_FMT"\n",
write_char, write_size, write_size,
trunc_offset, trunc_offset);
sprintf(command, "od -Ax -a %s", fnames[0]);
- system(command);
+ rc = system(command);
MPI_Abort(MPI_COMM_WORLD, 1);
}
}