You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by pq...@apache.org on 2005/03/12 06:21:23 UTC
svn commit: r157231 - apr/apr/trunk/file_io/unix/fullrw.c
Author: pquerna
Date: Fri Mar 11 21:21:19 2005
New Revision: 157231
URL: http://svn.apache.org/viewcvs?view=rev&rev=157231
Log:
rewrite apr_file_writev_full.
Modified:
apr/apr/trunk/file_io/unix/fullrw.c
Modified: apr/apr/trunk/file_io/unix/fullrw.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/file_io/unix/fullrw.c?view=diff&r1=157230&r2=157231
==============================================================================
--- apr/apr/trunk/file_io/unix/fullrw.c (original)
+++ apr/apr/trunk/file_io/unix/fullrw.c Fri Mar 11 21:21:19 2005
@@ -67,30 +67,19 @@
apr_size_t nvec,
apr_size_t *bytes_written)
{
- apr_status_t status;
+ apr_status_t rv = APR_SUCCESS;
+ int i;
+ apr_size_t amt = 0;
apr_size_t total = 0;
- do {
- apr_size_t i, amt;
- status = apr_file_writev(thefile, vec, nvec, &amt);
-
- /* We assume that writev will only write complete iovec areas.
- * Incomplete writes inside a single area are not supported.
- * This should be safe according to SuS v2.
- */
- for (i = 0; i < nvec; i++) {
- total += vec[i].iov_len;
- if (total >= amt) {
- vec = &vec[i+1];
- nvec -= i+1;
- break;
- }
- }
- } while (status == APR_SUCCESS && nvec > 0);
+ for (i = 0; i < nvec && rv == APR_SUCCESS; i++) {
+ rv = apr_file_write_full(thefile, vec[i].iov_base,
+ vec[i].iov_len, &amt);
+ total += amt;
+ }
if (bytes_written != NULL)
*bytes_written = total;
- return status;
+ return rv;
}
-