<< Drive << ":" // drive
<< msg.str() // l10n message
<< endl;
- write(status_fd, status.str().c_str(), status.str().size());
+
+ 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);
}
if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
<< ":" << (CurrentBytes/float(TotalBytes)*100.0)
<< ":" << msg
<< endl;
- write(fd, status.str().c_str(), status.str().size());
+
+ std::string const dlstatus = status.str();
+ size_t done = 0;
+ size_t todo = dlstatus.size();
+ errno = 0;
+ int res = 0;
+ do
+ {
+ res = write(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);
}
return true;
Out.close();
- link(DFile.c_str(),string(DFile + '~').c_str());
+ if (FileExists(DFile) == true && link(DFile.c_str(),string(DFile + '~').c_str()) != 0)
+ return _error->Errno("link", "Failed to link %s to %s~", DFile.c_str(), DFile.c_str());
if (rename(NewFile.c_str(),DFile.c_str()) != 0)
return _error->Errno("rename","Failed to rename %s.new to %s",
DFile.c_str(),DFile.c_str());
return false;
}
- chdir(StartDir.c_str());
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir","Unable to change to %s", StartDir.c_str());
if (_config->FindB("Debug::aptcdrom",false) == true)
{
struct stat St;
if (stat(Dir->d_name,&St) != 0)
{
- chdir(StartDir.c_str());
+ _error->Errno("stat",_("Unable to stat %s."),Dir->d_name);
closedir(D);
- return _error->Errno("stat",_("Unable to stat %s."),Dir->d_name);
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir", _("Unable to change to %s"), StartDir.c_str());
+ return false;
}
// Grab the package name
Erase(Dir->d_name,Pkg,Ver,St);
};
- chdir(StartDir.c_str());
closedir(D);
- return true;
+ if (chdir(StartDir.c_str()) != 0)
+ return _error->Errno("chdir", _("Unable to change to %s"), StartDir.c_str());
+ return true;
}
/*}}}*/
if (!home)
return -1;
- asprintf (&netrcfile, "%s%s%s", home, DIR_CHAR, NETRC);
- if(!netrcfile)
+ if (asprintf (&netrcfile, "%s%s%s", home, DIR_CHAR, NETRC) == -1 || netrcfile == NULL)
return -1;
else
netrc_alloc = true;
[ Michael Vogt ]
* apt-pkg/packagemanager.cc:
- fix inconsistent clog/cout usage in the debug output
-
+
[ David Kalnischkies ]
* apt-pkg/packagemanager.cc:
- recheck all dependencies if we changed a package in SmartConfigure
as this could break an earlier dependency (LP: #940396)
- recheck dependencies in SmartUnpack after a change, too
+ * apt-pkg/acquire-worker.cc:
+ - check return of write() as gcc recommends
+ * apt-pkg/acquire.cc:
+ - check return of write() as gcc recommends
+ * apt-pkg/cdrom.cc:
+ - check return of chdir() and link() as gcc recommends
+ * apt-pkg/clean.cc:
+ - check return of chdir() as gcc recommends
+ * apt-pkg/contrib/netrc.cc:
+ - check return of asprintf() as gcc recommends
- -- David Kalnischkies <kalnischkies@gmail.com> Tue, 13 Mar 2012 12:38:35 +0100
+ -- David Kalnischkies <kalnischkies@gmail.com> Tue, 20 Mar 2012 17:00:14 +0100
apt (0.8.16~exp13) experimental; urgency=low