only warn if (free) space can't be determined as it overflows the struct
authorDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 20 Oct 2009 06:30:21 +0000 (08:30 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Tue, 20 Oct 2009 06:30:21 +0000 (08:30 +0200)
as this prevents e.g. download operations on large RAIDs (Closes: #522238)

cmdline/apt-get.cc
debian/changelog
po/apt-all.pot

index ca14f4c..49fde74 100644 (file)
@@ -862,10 +862,14 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
    {
       struct statvfs Buf;
       string OutputDir = _config->FindDir("Dir::Cache::Archives");
-      if (statvfs(OutputDir.c_str(),&Buf) != 0)
-        return _error->Errno("statvfs",_("Couldn't determine free space in %s"),
-                             OutputDir.c_str());
-      if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize)
+      if (statvfs(OutputDir.c_str(),&Buf) != 0) {
+        if (errno == EOVERFLOW)
+           return _error->WarningE("statvfs",_("Couldn't determine free space in %s"),
+                                OutputDir.c_str());
+        else
+           return _error->Errno("statvfs",_("Couldn't determine free space in %s"),
+                                OutputDir.c_str());
+      } else if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize)
       {
          struct statfs Stat;
          if (statfs(OutputDir.c_str(),&Stat) != 0
@@ -2228,10 +2232,14 @@ bool DoSource(CommandLine &CmdL)
    // Check for enough free space
    struct statvfs Buf;
    string OutputDir = ".";
-   if (statvfs(OutputDir.c_str(),&Buf) != 0)
-      return _error->Errno("statvfs",_("Couldn't determine free space in %s"),
-                          OutputDir.c_str());
-   if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize)
+   if (statvfs(OutputDir.c_str(),&Buf) != 0) {
+      if (errno == EOVERFLOW)
+        return _error->WarningE("statvfs",_("Couldn't determine free space in %s"),
+                               OutputDir.c_str());
+      else
+        return _error->Errno("statvfs",_("Couldn't determine free space in %s"),
+                               OutputDir.c_str());
+   } else if (unsigned(Buf.f_bfree) < (FetchBytes - FetchPBytes)/Buf.f_bsize)
      {
        struct statfs Stat;
        if (statfs(OutputDir.c_str(),&Stat) != 0
index 82b0861..abfb7aa 100644 (file)
@@ -28,6 +28,7 @@ apt (0.7.25) UNRELEASED; urgency=low
     - source should displays his final pkg pick (Closes: #249383, #550952)
     - source doesn't need the complete version for match (Closes: #245250)
     - source ignores versions/releases if not available (Closes: #377424)
+    - only warn if (free) space overflows (Closes: #522238)
 
   [ Julian Andres Klode ]
   * doc/apt.conf.5.xml:
index f464ef1..46910b1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-10-19 21:03+0200\n"
+"POT-Creation-Date: 2009-10-20 08:28+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -151,7 +151,7 @@ msgstr ""
 
 #: cmdline/apt-cache.cc:1718 cmdline/apt-cdrom.cc:134 cmdline/apt-config.cc:70
 #: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:547
-#: cmdline/apt-get.cc:2645 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2653 cmdline/apt-sortpkgs.cc:144
 #, c-format
 msgid "%s %s for %s compiled on %s %s\n"
 msgstr ""
@@ -549,7 +549,7 @@ msgstr ""
 msgid "Y"
 msgstr ""
 
-#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1714
+#: cmdline/apt-get.cc:149 cmdline/apt-get.cc:1718
 #, c-format
 msgid "Regex compilation error - %s"
 msgstr ""
@@ -692,7 +692,7 @@ msgstr ""
 msgid "Some packages could not be authenticated"
 msgstr ""
 
-#: cmdline/apt-get.cc:734 cmdline/apt-get.cc:886
+#: cmdline/apt-get.cc:734 cmdline/apt-get.cc:890
 msgid "There are problems and -y was used without --force-yes"
 msgstr ""
 
@@ -708,11 +708,11 @@ msgstr ""
 msgid "Internal error, Ordering didn't finish"
 msgstr ""
 
-#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2056 cmdline/apt-get.cc:2089
+#: cmdline/apt-get.cc:811 cmdline/apt-get.cc:2060 cmdline/apt-get.cc:2093
 msgid "Unable to lock the download directory"
 msgstr ""
 
-#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2137 cmdline/apt-get.cc:2386
+#: cmdline/apt-get.cc:821 cmdline/apt-get.cc:2141 cmdline/apt-get.cc:2394
 #: apt-pkg/cachefile.cc:65
 msgid "The list of sources could not be read."
 msgstr ""
@@ -741,25 +741,26 @@ msgstr ""
 msgid "After this operation, %sB disk space will be freed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:866 cmdline/apt-get.cc:2232
+#: cmdline/apt-get.cc:867 cmdline/apt-get.cc:870 cmdline/apt-get.cc:2237
+#: cmdline/apt-get.cc:2240
 #, c-format
 msgid "Couldn't determine free space in %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:876
+#: cmdline/apt-get.cc:880
 #, c-format
 msgid "You don't have enough free space in %s."
 msgstr ""
 
-#: cmdline/apt-get.cc:892 cmdline/apt-get.cc:912
+#: cmdline/apt-get.cc:896 cmdline/apt-get.cc:916
 msgid "Trivial Only specified but this is not a trivial operation."
 msgstr ""
 
-#: cmdline/apt-get.cc:894
+#: cmdline/apt-get.cc:898
 msgid "Yes, do as I say!"
 msgstr ""
 
-#: cmdline/apt-get.cc:896
+#: cmdline/apt-get.cc:900
 #, c-format
 msgid ""
 "You are about to do something potentially harmful.\n"
@@ -767,74 +768,74 @@ msgid ""
 " ?] "
 msgstr ""
 
-#: cmdline/apt-get.cc:902 cmdline/apt-get.cc:921
+#: cmdline/apt-get.cc:906 cmdline/apt-get.cc:925
 msgid "Abort."
 msgstr ""
 
-#: cmdline/apt-get.cc:917
+#: cmdline/apt-get.cc:921
 msgid "Do you want to continue [Y/n]? "
 msgstr ""
 
-#: cmdline/apt-get.cc:989 cmdline/apt-get.cc:2283 apt-pkg/algorithms.cc:1389
+#: cmdline/apt-get.cc:993 cmdline/apt-get.cc:2291 apt-pkg/algorithms.cc:1389
 #, c-format
 msgid "Failed to fetch %s  %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1007
+#: cmdline/apt-get.cc:1011
 msgid "Some files failed to download"
 msgstr ""
 
-#: cmdline/apt-get.cc:1008 cmdline/apt-get.cc:2292
+#: cmdline/apt-get.cc:1012 cmdline/apt-get.cc:2300
 msgid "Download complete and in download only mode"
 msgstr ""
 
-#: cmdline/apt-get.cc:1014
+#: cmdline/apt-get.cc:1018
 msgid ""
 "Unable to fetch some archives, maybe run apt-get update or try with --fix-"
 "missing?"
 msgstr ""
 
-#: cmdline/apt-get.cc:1018
+#: cmdline/apt-get.cc:1022
 msgid "--fix-missing and media swapping is not currently supported"
 msgstr ""
 
-#: cmdline/apt-get.cc:1023
+#: cmdline/apt-get.cc:1027
 msgid "Unable to correct missing packages."
 msgstr ""
 
-#: cmdline/apt-get.cc:1024
+#: cmdline/apt-get.cc:1028
 msgid "Aborting install."
 msgstr ""
 
-#: cmdline/apt-get.cc:1082
+#: cmdline/apt-get.cc:1086
 #, c-format
 msgid "Note, selecting %s instead of %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1093
+#: cmdline/apt-get.cc:1097
 #, c-format
 msgid "Skipping %s, it is already installed and upgrade is not set.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1111
+#: cmdline/apt-get.cc:1115
 #, c-format
 msgid "Package %s is not installed, so not removed\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1122
+#: cmdline/apt-get.cc:1126
 #, c-format
 msgid "Package %s is a virtual package provided by:\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1134
+#: cmdline/apt-get.cc:1138
 msgid " [Installed]"
 msgstr ""
 
-#: cmdline/apt-get.cc:1139
+#: cmdline/apt-get.cc:1143
 msgid "You should explicitly select one to install."
 msgstr ""
 
-#: cmdline/apt-get.cc:1144
+#: cmdline/apt-get.cc:1148
 #, c-format
 msgid ""
 "Package %s is not available, but is referred to by another package.\n"
@@ -842,84 +843,84 @@ msgid ""
 "is only available from another source\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1163
+#: cmdline/apt-get.cc:1167
 msgid "However the following packages replace it:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1166
+#: cmdline/apt-get.cc:1170
 #, c-format
 msgid "Package %s has no installation candidate"
 msgstr ""
 
-#: cmdline/apt-get.cc:1186
+#: cmdline/apt-get.cc:1190
 #, c-format
 msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1194
+#: cmdline/apt-get.cc:1198
 #, c-format
 msgid "%s is already the newest version.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1223
+#: cmdline/apt-get.cc:1227
 #, c-format
 msgid "Release '%s' for '%s' was not found"
 msgstr ""
 
-#: cmdline/apt-get.cc:1225
+#: cmdline/apt-get.cc:1229
 #, c-format
 msgid "Version '%s' for '%s' was not found"
 msgstr ""
 
-#: cmdline/apt-get.cc:1231
+#: cmdline/apt-get.cc:1235
 #, c-format
 msgid "Selected version %s (%s) for %s\n"
 msgstr ""
 
 #. if (VerTag.empty() == false && Last == 0)
-#: cmdline/apt-get.cc:1301 cmdline/apt-get.cc:1363
+#: cmdline/apt-get.cc:1305 cmdline/apt-get.cc:1367
 #, c-format
 msgid "Ignore unavailable version '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1303
+#: cmdline/apt-get.cc:1307
 #, c-format
 msgid "Ignore unavailable target release '%s' of package '%s'"
 msgstr ""
 
-#: cmdline/apt-get.cc:1328
+#: cmdline/apt-get.cc:1332
 #, c-format
 msgid "Picking '%s' as source package instead of '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1379
+#: cmdline/apt-get.cc:1383
 msgid "The update command takes no arguments"
 msgstr ""
 
-#: cmdline/apt-get.cc:1392
+#: cmdline/apt-get.cc:1396
 msgid "Unable to lock the list directory"
 msgstr ""
 
-#: cmdline/apt-get.cc:1448
+#: cmdline/apt-get.cc:1452
 msgid "We are not supposed to delete stuff, can't start AutoRemover"
 msgstr ""
 
-#: cmdline/apt-get.cc:1497
+#: cmdline/apt-get.cc:1501
 msgid ""
 "The following packages were automatically installed and are no longer "
 "required:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1499
+#: cmdline/apt-get.cc:1503
 #, c-format
 msgid "%lu packages were automatically installed and are no longer required.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1500
+#: cmdline/apt-get.cc:1504
 msgid "Use 'apt-get autoremove' to remove them."
 msgstr ""
 
-#: cmdline/apt-get.cc:1505
+#: cmdline/apt-get.cc:1509
 msgid ""
 "Hmm, seems like the AutoRemover destroyed something which really\n"
 "shouldn't happen. Please file a bug report against apt."
@@ -935,49 +936,49 @@ msgstr ""
 #. "that package should be filed.") << endl;
 #. }
 #.
-#: cmdline/apt-get.cc:1508 cmdline/apt-get.cc:1798
+#: cmdline/apt-get.cc:1512 cmdline/apt-get.cc:1802
 msgid "The following information may help to resolve the situation:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1512
+#: cmdline/apt-get.cc:1516
 msgid "Internal Error, AutoRemover broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1531
+#: cmdline/apt-get.cc:1535
 msgid "Internal error, AllUpgrade broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1590
 #, c-format
 msgid "Couldn't find task %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:1701 cmdline/apt-get.cc:1737
+#: cmdline/apt-get.cc:1705 cmdline/apt-get.cc:1741
 #, c-format
 msgid "Couldn't find package %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:1724
+#: cmdline/apt-get.cc:1728
 #, c-format
 msgid "Note, selecting %s for regex '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1755
+#: cmdline/apt-get.cc:1759
 #, c-format
 msgid "%s set to manually installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:1768
+#: cmdline/apt-get.cc:1772
 msgid "You might want to run `apt-get -f install' to correct these:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1771
+#: cmdline/apt-get.cc:1775
 msgid ""
 "Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
 "solution)."
 msgstr ""
 
-#: cmdline/apt-get.cc:1783
+#: cmdline/apt-get.cc:1787
 msgid ""
 "Some packages could not be installed. This may mean that you have\n"
 "requested an impossible situation or if you are using the unstable\n"
@@ -985,152 +986,152 @@ msgid ""
 "or been moved out of Incoming."
 msgstr ""
 
-#: cmdline/apt-get.cc:1801
+#: cmdline/apt-get.cc:1805
 msgid "Broken packages"
 msgstr ""
 
-#: cmdline/apt-get.cc:1830
+#: cmdline/apt-get.cc:1834
 msgid "The following extra packages will be installed:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1919
+#: cmdline/apt-get.cc:1923
 msgid "Suggested packages:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1920
+#: cmdline/apt-get.cc:1924
 msgid "Recommended packages:"
 msgstr ""
 
-#: cmdline/apt-get.cc:1949
+#: cmdline/apt-get.cc:1953
 msgid "Calculating upgrade... "
 msgstr ""
 
-#: cmdline/apt-get.cc:1952 methods/ftp.cc:707 methods/connect.cc:112
+#: cmdline/apt-get.cc:1956 methods/ftp.cc:707 methods/connect.cc:112
 msgid "Failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:1957
+#: cmdline/apt-get.cc:1961
 msgid "Done"
 msgstr ""
 
-#: cmdline/apt-get.cc:2024 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:2028 cmdline/apt-get.cc:2036
 msgid "Internal error, problem resolver broke stuff"
 msgstr ""
 
-#: cmdline/apt-get.cc:2132
+#: cmdline/apt-get.cc:2136
 msgid "Must specify at least one package to fetch source for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2162 cmdline/apt-get.cc:2404
+#: cmdline/apt-get.cc:2166 cmdline/apt-get.cc:2412
 #, c-format
 msgid "Unable to find a source package for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2211
+#: cmdline/apt-get.cc:2215
 #, c-format
 msgid "Skipping already downloaded file '%s'\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2242
+#: cmdline/apt-get.cc:2250
 #, c-format
 msgid "You don't have enough free space in %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2248
+#: cmdline/apt-get.cc:2256
 #, c-format
 msgid "Need to get %sB/%sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2251
+#: cmdline/apt-get.cc:2259
 #, c-format
 msgid "Need to get %sB of source archives.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2257
+#: cmdline/apt-get.cc:2265
 #, c-format
 msgid "Fetch source %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2288
+#: cmdline/apt-get.cc:2296
 msgid "Failed to fetch some archives."
 msgstr ""
 
-#: cmdline/apt-get.cc:2316
+#: cmdline/apt-get.cc:2324
 #, c-format
 msgid "Skipping unpack of already unpacked source in %s\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2328
+#: cmdline/apt-get.cc:2336
 #, c-format
 msgid "Unpack command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2329
+#: cmdline/apt-get.cc:2337
 #, c-format
 msgid "Check if the 'dpkg-dev' package is installed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2346
+#: cmdline/apt-get.cc:2354
 #, c-format
 msgid "Build command '%s' failed.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2365
+#: cmdline/apt-get.cc:2373
 msgid "Child process failed"
 msgstr ""
 
-#: cmdline/apt-get.cc:2381
+#: cmdline/apt-get.cc:2389
 msgid "Must specify at least one package to check builddeps for"
 msgstr ""
 
-#: cmdline/apt-get.cc:2409
+#: cmdline/apt-get.cc:2417
 #, c-format
 msgid "Unable to get build-dependency information for %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2429
+#: cmdline/apt-get.cc:2437
 #, c-format
 msgid "%s has no build depends.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2481
+#: cmdline/apt-get.cc:2489
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because the package %s cannot be "
 "found"
 msgstr ""
 
-#: cmdline/apt-get.cc:2534
+#: cmdline/apt-get.cc:2542
 #, c-format
 msgid ""
 "%s dependency for %s cannot be satisfied because no available versions of "
 "package %s can satisfy version requirements"
 msgstr ""
 
-#: cmdline/apt-get.cc:2570
+#: cmdline/apt-get.cc:2578
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
 msgstr ""
 
-#: cmdline/apt-get.cc:2597
+#: cmdline/apt-get.cc:2605
 #, c-format
 msgid "Failed to satisfy %s dependency for %s: %s"
 msgstr ""
 
-#: cmdline/apt-get.cc:2613
+#: cmdline/apt-get.cc:2621
 #, c-format
 msgid "Build-dependencies for %s could not be satisfied."
 msgstr ""
 
-#: cmdline/apt-get.cc:2618
+#: cmdline/apt-get.cc:2626
 msgid "Failed to process build dependencies"
 msgstr ""
 
-#: cmdline/apt-get.cc:2650
+#: cmdline/apt-get.cc:2658
 msgid "Supported modules:"
 msgstr ""
 
-#: cmdline/apt-get.cc:2691
+#: cmdline/apt-get.cc:2699
 msgid ""
 "Usage: apt-get [options] command\n"
 "       apt-get [options] install|remove pkg1 [pkg2 ...]\n"
@@ -1174,7 +1175,7 @@ msgid ""
 "                       This APT has Super Cow Powers.\n"
 msgstr ""
 
-#: cmdline/apt-get.cc:2858
+#: cmdline/apt-get.cc:2866
 msgid ""
 "NOTE: This is only a simulation!\n"
 "      apt-get needs root privileges for real execution.\n"
@@ -2308,26 +2309,26 @@ msgstr ""
 msgid "Malformed line %u in source list %s (vendor id)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:436
+#: apt-pkg/packagemanager.cc:321 apt-pkg/packagemanager.cc:576
 #, c-format
 msgid ""
-"This installation run will require temporarily removing the essential "
-"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
-"you really want to do it, activate the APT::Force-LoopBreak option."
+"Could not perform immediate configuration on '%s'.Please see man 5 apt.conf "
+"under APT::Immediate-Configure for details. (%d)"
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:474
+#: apt-pkg/packagemanager.cc:437
 #, c-format
 msgid ""
-"Could not perform immediate configuration for on already unpacked %s.Please "
-"see man 5 apt.conf under APT::Immediate-Configure for details."
+"This installation run will require temporarily removing the essential "
+"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if "
+"you really want to do it, activate the APT::Force-LoopBreak option."
 msgstr ""
 
-#: apt-pkg/packagemanager.cc:575
+#: apt-pkg/packagemanager.cc:475
 #, c-format
 msgid ""
-"Could not perform immediate configuration on %s.Please see man 5 apt.conf "
-"under APT::Immediate-Configure for details."
+"Could not perform immediate configuration on already unpacked '%s'.Please "
+"see man 5 apt.conf under APT::Immediate-Configure for details."
 msgstr ""
 
 #: apt-pkg/pkgrecords.cc:32