]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/acquire-worker.cc
use a static FileFd::Write overload to reduce duplication of write()-retry code
[apt.git] / apt-pkg / acquire-worker.cc
index d79b2b16dfb22c3021ebda26ecbbcf4de204420c..77e2fc3119d5c430effb8940569c6015ac0cb96f 100644 (file)
@@ -433,21 +433,7 @@ bool pkgAcquire::Worker::MediaChange(string Message)
             << endl;
 
       std::string const dlstatus = status.str();
             << endl;
 
       std::string const dlstatus = status.str();
-      size_t done = 0;
-      size_t todo = dlstatus.size();
-      errno = 0;
-      int res = 0;
-      do
-      {
-        res = write(status_fd, dlstatus.c_str() + done, todo);
-        if (res < 0 && errno == EINTR)
-           continue;
-        if (res < 0)
-           break;
-        done += res;
-        todo -= res;
-      }
-      while (res > 0 && todo > 0);
+      FileFd::Write(status_fd, dlstatus.c_str(), dlstatus.size());
    }
 
    if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
    }
 
    if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
@@ -546,17 +532,10 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item)
 /* */
 bool pkgAcquire::Worker::OutFdReady()
 {
 /* */
 bool pkgAcquire::Worker::OutFdReady()
 {
-   int Res;
-   do
-   {
-      Res = write(OutFd,OutQueue.c_str(),OutQueue.length());
-   }
-   while (Res < 0 && errno == EINTR);
-   
-   if (Res <= 0)
+   if (FileFd::Write(OutFd,OutQueue.c_str(),OutQueue.length()) == false)
       return MethodFailure();
    
       return MethodFailure();
    
-   OutQueue.erase(0,Res);
+   OutQueue.clear();
    if (OutQueue.empty() == true)
       OutReady = false;
    
    if (OutQueue.empty() == true)
       OutReady = false;