diff options
author | Otavio Salvador <otavio@ossystems.com.br> | 2007-12-16 18:22:24 -0200 |
---|---|---|
committer | Otavio Salvador <otavio@ossystems.com.br> | 2007-12-16 18:22:24 -0200 |
commit | 885d204bd354739187413005874797504f3b95f3 (patch) | |
tree | 9a7f169c7e7fa49a68e990c536205c77118ad113 /cmdline/apt-get.cc | |
parent | 0d4487918ef9c7d01cf6de50e8d8515548415776 (diff) |
* Applied patch from Amos Waterland <apw@us.ibm.com> to allow apt to
work properly in initramfs, closes: #448316.
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index efb618cb0..3bcacb293 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -53,6 +53,7 @@ #include <termios.h> #include <sys/ioctl.h> #include <sys/stat.h> +#include <sys/statfs.h> #include <sys/statvfs.h> #include <signal.h> #include <unistd.h> @@ -63,6 +64,8 @@ #include <sstream> /*}}}*/ +#define RAMFS_MAGIC 0x858458f6 + using namespace std; ostream c0out(0); @@ -861,8 +864,13 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, return _error->Errno("statvfs",_("Couldn't determine free space in %s"), OutputDir.c_str()); if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize) - return _error->Error(_("You don't have enough free space in %s."), - OutputDir.c_str()); + { + struct statfs Stat; + if (statfs(OutputDir.c_str(),&Stat) != 0 || + unsigned(Stat.f_type) != RAMFS_MAGIC) + return _error->Error(_("You don't have enough free space in %s."), + OutputDir.c_str()); + } } // Fail safe check @@ -2188,8 +2196,13 @@ bool DoSource(CommandLine &CmdL) return _error->Errno("statvfs",_("Couldn't determine free space in %s"), OutputDir.c_str()); if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize) - return _error->Error(_("You don't have enough free space in %s"), - OutputDir.c_str()); + { + struct statfs Stat; + if (statfs(OutputDir.c_str(),&Stat) != 0 || + unsigned(Stat.f_type) != RAMFS_MAGIC) + return _error->Error(_("You don't have enough free space in %s"), + OutputDir.c_str()); + } // Number of bytes if (DebBytes != FetchBytes) |