Преглед изворни кода

merged lp:~donkult/apt/sid

Michael Vogt пре 16 година
родитељ
комит
ff371080d8
74 измењених фајлова са 23176 додато и 18889 уклоњено
  1. 0 12
      README.arch
  2. 1 2
      apt-pkg/acquire-item.cc
  3. 2 2
      apt-pkg/contrib/mmap.cc
  4. 8 1
      apt-pkg/deb/dpkgpm.cc
  5. 11 10
      apt-pkg/depcache.cc
  6. 2 2
      apt-pkg/init.cc
  7. 14 2
      apt-pkg/packagemanager.h
  8. 2 2
      apt-pkg/policy.cc
  9. 4 4
      apt-pkg/sourcelist.cc
  10. 43 20
      cmdline/apt-get.cc
  11. 50 2
      debian/changelog
  12. 0 18
      debian/libapt-pkg-doc.doc-base.cache
  13. 31 79
      debian/rules
  14. 1 1
      doc/apt-ftparchive.1.xml
  15. 7 21
      doc/apt-get.8.xml
  16. 3 2
      doc/apt.conf.5.xml
  17. 4 6
      doc/apt.ent
  18. 19 11
      doc/apt_preferences.5.xml
  19. 265 215
      doc/po/apt-doc.pot
  20. 339 226
      doc/po/de.po
  21. 336 222
      doc/po/es.po
  22. 476 484
      doc/po/fr.po
  23. 265 217
      doc/po/it.po
  24. 334 225
      doc/po/ja.po
  25. 289 218
      doc/po/pl.po
  26. 336 223
      doc/po/pt.po
  27. 283 222
      doc/po/pt_BR.po
  28. 4 4
      doc/sources.list.5.xml
  29. 17 25
      methods/gpgv.cc
  30. 11 8
      methods/rred.cc
  31. 376 338
      po/apt-all.pot
  32. 446 371
      po/ar.po
  33. 458 373
      po/ast.po
  34. 463 375
      po/bg.po
  35. 446 370
      po/bs.po
  36. 457 373
      po/ca.po
  37. 456 373
      po/cs.po
  38. 459 373
      po/cy.po
  39. 460 377
      po/da.po
  40. 460 374
      po/de.po
  41. 454 373
      po/dz.po
  42. 460 374
      po/el.po
  43. 457 373
      po/en_GB.po
  44. 459 376
      po/es.po
  45. 457 373
      po/eu.po
  46. 458 373
      po/fi.po
  47. 469 377
      po/fr.po
  48. 455 373
      po/gl.po
  49. 451 373
      po/hu.po
  50. 461 374
      po/it.po
  51. 457 373
      po/ja.po
  52. 452 373
      po/km.po
  53. 459 374
      po/ko.po
  54. 451 375
      po/ku.po
  55. 453 375
      po/lt.po
  56. 453 373
      po/mr.po
  57. 459 374
      po/nb.po
  58. 452 373
      po/ne.po
  59. 461 374
      po/nl.po
  60. 454 373
      po/nn.po
  61. 461 374
      po/pl.po
  62. 458 373
      po/pt.po
  63. 462 373
      po/pt_BR.po
  64. 464 375
      po/ro.po
  65. 464 376
      po/ru.po
  66. 461 374
      po/sk.po
  67. 453 373
      po/sl.po
  68. 456 373
      po/sv.po
  69. 453 373
      po/th.po
  70. 454 373
      po/tl.po
  71. 457 373
      po/uk.po
  72. 456 373
      po/vi.po
  73. 454 374
      po/zh_CN.po
  74. 453 373
      po/zh_TW.po

+ 0 - 12
README.arch

@@ -1,12 +0,0 @@
-
-You can build apt from arch, but this needs the following additional
-packages (in addtion to the usual build-depends):
-autoconf automake xmlto perlsgml sgml2x sgmlspl docbook doxygen
-
-then run:
-
-$ debian/rules arch-build
-
-that will build packages in the "debian/arch-build" directory. It will
-honor "DEB_BUILD_PROG_OPTS" as options that are passed to debuild (e.g. -S 
-may be usefull).

+ 1 - 2
apt-pkg/acquire-item.cc

@@ -1685,7 +1685,6 @@ string pkgAcqFile::Custom600Headers()
 {
    if (IsIndexFile)
       return "\nIndex-File: true";
-   else
-      return string();
+   return "";
 }
 									/*}}}*/

+ 2 - 2
apt-pkg/contrib/mmap.cc

@@ -392,8 +392,8 @@ unsigned long DynamicMMap::WriteString(const char *String,
    the nearly impossible 4 to grow it before it finally give up: Never say never. */
 bool DynamicMMap::Grow() {
 	if (Limit != 0 && WorkSpace >= Limit)
-		return _error->Error(_("The size of a MMap has already reached the defined limit of %lu bytes,"
-		                       "abort the try to grow the MMap."), Limit);
+		return _error->Error(_("Unable to increase the size of the MMap as the "
+		                       "limit of %lu bytes is already reached."), Limit);
 
 	unsigned long const newSize = WorkSpace + 1024*1024;
 

+ 8 - 1
apt-pkg/deb/dpkgpm.cc

@@ -50,6 +50,7 @@ namespace
     std::make_pair("configure", N_("Configuring %s")),
     std::make_pair("remove",    N_("Removing %s")),
     std::make_pair("purge",    N_("Completely removing %s")),
+    std::make_pair("disappear", N_("Noting disappearance of %s")),
     std::make_pair("trigproc",  N_("Running post-installation trigger %s"))
   };
 
@@ -419,7 +420,8 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line)
       'processing: install: pkg'
       'processing: configure: pkg'
       'processing: remove: pkg'
-      'processing: purge: pkg' - but for apt is it a ignored "unknown" action
+      'processing: purge: pkg'
+      'processing: disappear: pkg'
       'processing: trigproc: trigger'
 	    
    */
@@ -466,6 +468,9 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line)
 	 write(OutStatusFd, status.str().c_str(), status.str().size());
       if (Debug == true)
 	 std::clog << "send: '" << status.str() << "'" << endl;
+
+      if (strncmp(action, "disappear", strlen("disappear")) == 0)
+	 disappearedPkgs.insert(string(pkg_or_trigger));
       return;
    }
 
@@ -911,6 +916,8 @@ bool pkgDPkgPM::Go(int OutStatusFd)
 	 {
 	    if((*I).Pkg.end() == true)
 	       continue;
+	    if (I->Op == Item::Configure && disappearedPkgs.find(I->Pkg.Name()) != disappearedPkgs.end())
+	       continue;
 	    Args[n++] = I->Pkg.Name();
 	    Size += strlen(Args[n-1]);
 	 }	 

+ 11 - 10
apt-pkg/depcache.cc

@@ -804,17 +804,18 @@ void pkgDepCache::Update(OpProgress *Prog)
       /* FIXME: recheck breaks proper progress reporting as we don't know
 		how many packages we need to recheck. To lower the effect
 		a bit we increase with a kill, but we should do something more clever… */
-      for(std::set<unsigned long>::const_iterator p = recheck.begin();
-	  p != recheck.end(); ++p) {
-	 if (Prog != 0 && Done%20 == 0)
-	    Prog->Progress(Done);
-	 PkgIterator P = PkgIterator(*Cache, Cache->PkgP + *p);
-	 if (RemovePseudoInstalledPkg(P, recheck) == true) {
-	    ++killed;
-	    ++Done;
+      while(recheck.empty() == false)
+	 for (std::set<unsigned long>::const_iterator p = recheck.begin();
+	     p != recheck.end(); ++p) {
+	    if (Prog != 0 && Done%20 == 0)
+	       Prog->Progress(Done);
+	    PkgIterator P = PkgIterator(*Cache, Cache->PkgP + *p);
+	    if (RemovePseudoInstalledPkg(P, recheck) == true) {
+	       ++killed;
+	       ++Done;
+	    }
+	    recheck.erase(p);
 	 }
-	 recheck.erase(p);
-      }
 
       /* Okay, we have killed a great amount of pseudopackages -
 	 we have killed so many that we have now arch "all" packages

+ 2 - 2
apt-pkg/init.cc

@@ -94,10 +94,10 @@ bool pkgInitConfig(Configuration &Cnf)
 
    // Read the configuration parts dir
    string Parts = Cnf.FindDir("Dir::Etc::parts");
-   if (FileExists(Parts) == true)
+   if (DirectoryExists(Parts) == true)
       Res &= ReadConfigDir(Cnf,Parts);
    else
-      _error->WarningE("FileExists",_("Unable to read %s"),Parts.c_str());
+      _error->WarningE("DirectoryExists",_("Unable to read %s"),Parts.c_str());
 
    // Read the main config file
    string FName = Cnf.FindFile("Dir::Etc::main");

+ 14 - 2
apt-pkg/packagemanager.h

@@ -28,6 +28,7 @@
 #include <iostream>
 #include <apt-pkg/pkgcache.h>
 #include <apt-pkg/depcache.h>
+#include <set>
 
 using std::string;
 
@@ -47,7 +48,15 @@ class pkgPackageManager : protected pkgCache::Namespace
    pkgDepCache &Cache;
    pkgOrderList *List;
    bool Debug;
-         
+
+   /** \brief saves packages dpkg let disappear
+
+       This way APT can retreat from trying to configure these
+       packages later on and a frontend can choose to display a
+       notice to inform the user about these disappears.
+   */
+   std::set<std::string> disappearedPkgs;
+
    bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0);
    void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0);
    virtual OrderResult OrderInstall();
@@ -93,7 +102,10 @@ class pkgPackageManager : protected pkgCache::Namespace
    // stuff that needs to be done after the fork
    OrderResult DoInstallPostFork(int statusFd=-1);
    bool FixMissing();
-   
+
+   /** \brief returns all packages dpkg let disappear */
+   inline std::set<std::string> GetDisappearedPackages() { return disappearedPkgs; };
+
    pkgPackageManager(pkgDepCache *Cache);
    virtual ~pkgPackageManager();
 };

+ 2 - 2
apt-pkg/policy.cc

@@ -291,9 +291,9 @@ bool ReadPinDir(pkgPolicy &Plcy,string Dir)
    if (Dir.empty() == true)
       Dir = _config->FindDir("Dir::Etc::PreferencesParts");
 
-   if (FileExists(Dir) == false)
+   if (DirectoryExists(Dir) == false)
    {
-      _error->WarningE("FileExists",_("Unable to read %s"),Dir.c_str());
+      _error->WarningE("DirectoryExists",_("Unable to read %s"),Dir.c_str());
       return true;
    }
 

+ 4 - 4
apt-pkg/sourcelist.cc

@@ -199,15 +199,15 @@ bool pkgSourceList::ReadMainList()
    
    if (FileExists(Main) == true)
       Res &= ReadAppend(Main);
-   else if (FileExists(Parts) == false)
+   else if (DirectoryExists(Parts) == false)
       // Only warn if there are no sources.list.d.
-      _error->WarningE("FileExists",_("Unable to read %s"),Main.c_str());
+      _error->WarningE("DirectoryExists", _("Unable to read %s"), Parts.c_str());
 
-   if (FileExists(Parts) == true)
+   if (DirectoryExists(Parts) == true)
       Res &= ReadSourceDir(Parts);
    else if (FileExists(Main) == false)
       // Only warn if there is no sources.list file.
-      _error->WarningE("FileExists",_("Unable to read %s"),Parts.c_str());
+      _error->WarningE("FileExists", _("Unable to read %s"), Main.c_str());
 
    return Res;
 }

+ 43 - 20
cmdline/apt-get.cc

@@ -1044,7 +1044,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
       if (Res == pkgPackageManager::Failed || _error->PendingError() == true)
 	 return false;
       if (Res == pkgPackageManager::Completed)
-	 return true;
+	 break;
       
       // Reload the fetcher object and loop again for media swapping
       Fetcher.Shutdown();
@@ -1052,7 +1052,24 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
 	 return false;
       
       _system->Lock();
-   }   
+   }
+
+   std::set<std::string> const disappearedPkgs = PM->GetDisappearedPackages();
+   if (disappearedPkgs.empty() == true)
+      return true;
+
+   string disappear;
+   for (std::set<std::string>::const_iterator d = disappearedPkgs.begin();
+	d != disappearedPkgs.end(); ++d)
+      disappear.append(*d).append(" ");
+
+   ShowList(c1out, P_("The following package disappeared from your system as\n"
+	"all files have been overwritten by other packages:",
+	"The following packages disappeared from your system as\n"
+	"all files have been overwritten by other packages:", disappearedPkgs.size()), disappear, "");
+   c0out << _("Note: This is done automatic and on purpose by dpkg.") << std::endl;
+
+   return true;
 }
 									/*}}}*/
 // TryToInstall - Try to install a single package			/*{{{*/
@@ -1936,9 +1953,10 @@ bool DoInstall(CommandLine &CmdL)
 	    {
 	       /* Skip if package is  installed already, or is about to be */
 	       string target = Start.TargetPkg().FullName(true) + " ";
-	       
-	       if ((*Start.TargetPkg()).SelectedState == pkgCache::State::Install
-		   || Cache[Start.TargetPkg()].Install())
+	       pkgCache::PkgIterator const TarPkg = Start.TargetPkg();
+	       if (TarPkg->SelectedState == pkgCache::State::Install ||
+		   TarPkg->SelectedState == pkgCache::State::Hold ||
+		   Cache[Start.TargetPkg()].Install())
 	       {
 		  foundInstalledInOrGroup=true;
 		  break;
@@ -2270,6 +2288,14 @@ bool DoSource(CommandLine &CmdL)
    // insert all downloaded uris into this set to avoid downloading them
    // twice
    set<string> queued;
+
+   // Diff only mode only fetches .diff files
+   bool const diffOnly = _config->FindB("APT::Get::Diff-Only", false);
+   // Tar only mode only fetches .tar files
+   bool const tarOnly = _config->FindB("APT::Get::Tar-Only", false);
+   // Dsc only mode only fetches .dsc files
+   bool const dscOnly = _config->FindB("APT::Get::Dsc-Only", false);
+
    // Load the requestd sources into the fetcher
    unsigned J = 0;
    for (const char **I = CmdL.FileList + 1; *I != 0; I++, J++)
@@ -2296,21 +2322,17 @@ bool DoSource(CommandLine &CmdL)
 	    Dsc[J].Version = Last->Version();
 	    Dsc[J].Dsc = flNotDir(I->Path);
 	 }
-	 
-	 // Diff only mode only fetches .diff files
-	 if (_config->FindB("APT::Get::Diff-Only",false) == true &&
-	     I->Type != "diff")
-	    continue;
-	 
-	 // Tar only mode only fetches .tar files
-	 if (_config->FindB("APT::Get::Tar-Only",false) == true &&
-	     I->Type != "tar")
-	    continue;
 
-	 // Dsc only mode only fetches .dsc files
-	 if (_config->FindB("APT::Get::Dsc-Only",false) == true &&
-	     I->Type != "dsc")
-	    continue;
+	 // Handle the only options so that multiple can be used at once
+	 if (diffOnly == true || tarOnly == true || dscOnly == true)
+	 {
+	    if ((diffOnly == true && I->Type == "diff") ||
+	        (tarOnly == true && I->Type == "tar") ||
+	        (dscOnly == true && I->Type == "dsc"))
+		; // Fine, we want this file downloaded
+	    else
+	       continue;
+	 }
 
 	 // don't download the same uri twice (should this be moved to
 	 // the fetcher interface itself?)
@@ -2424,6 +2446,7 @@ bool DoSource(CommandLine &CmdL)
    
    if (Process == 0)
    {
+      bool const fixBroken = _config->FindB("APT::Get::Fix-Broken", false);
       for (unsigned I = 0; I != J; I++)
       {
 	 string Dir = Dsc[I].Package + '-' + Cache->VS().UpstreamVersion(Dsc[I].Version.c_str());
@@ -2436,7 +2459,7 @@ bool DoSource(CommandLine &CmdL)
 
 	 // See if the package is already unpacked
 	 struct stat Stat;
-	 if (stat(Dir.c_str(),&Stat) == 0 &&
+	 if (fixBroken == false && stat(Dir.c_str(),&Stat) == 0 &&
 	     S_ISDIR(Stat.st_mode) != 0)
 	 {
 	    ioprintf(c0out ,_("Skipping unpack of already unpacked source in %s\n"),

+ 50 - 2
debian/changelog

@@ -1,9 +1,57 @@
 apt (0.7.26~exp5) UNRELEASED; urgency=low
 
+  [ David Kalnischkies ]
+  * cmdline/apt-get.cc:
+    - rerun dpkg-source in source if --fix-broken is given (Closes: #576752)
+    - don't suggest held packages as they are installed (Closes: #578135)
+    - handle multiple --{tar,diff,dsc}-only options correctly
+    - show at the end of the install process a list of disappeared packages
+  * cmdline/apt-cache.cc:
+    - use GroupCount for package names in stats and add a package struct line
+  * methods/rred.cc:
+    - use the patchfile modification time instead of the one from the
+      "old" file - thanks to Philipp Weis for noticing! (Closes: #571541)
+  * debian/rules:
+    - remove targets referring to CVS or arch as they are useless
+    - use $(CURDIR) instead of $(pwd)
+    - use dpkg-buildflags if available for CXXFLAGS
+  * README.arch:
+    - remove the file completely as it has no use nowadays
+  * apt-pkg/depcache.cc:
+    - be doublesure that the killer query is empty before starting reinstall
+  * methods/gpgv.cc:
+    - remove the keyrings count limit by using vector magic
+  * contrib/mmap.cc:
+    - clarify "MMap reached size limit" error message, thanks Ivan Masár!
+  * doc/apt.ent
+    - add entities for the current oldstable/stable/testing codenames
+  * doc/sources.list.5.xml:
+    - use stable-codename instead of stable in the examples (Closes: #531492)
+  * doc/apt_preferences.5.xml:
+    - adapt some examples here to use current codenames as well
+    - add "NotAutomatic: yes" handling, thanks Osamu Aoki (Closes: #490347)
+  * debian/libapt-pkg-doc.doc-base.cache:
+    - remove yet another reference to the removed cache.sgml
+  * doc/apt-get.8.xml:
+    - do not say explicit target_release_{name,version,codename}, it should
+      be clear by itself and 'man' can break lines again (Closes: #566166)
+    - remove the gnome-apt reference as it is removed from unstable
+  * apt-pkg/deb/dpkgpm.cc:
+    - add 'disappear' to the known processing states, thanks Jonathan Nieder
+  * apt-pkg/packagemanager.h:
+    - export info about disappeared packages with GetDisappearedPackages()
+
+  [ Jari Aalto ]
+  * debian/rules:
+    - spell out some less known options to reduce manpage consultation-rate
+    - Use POSIX command substitution: $(<command sequence>)
+    - Remove EOL whitespace (Closes: #577804)
+
+  [ Julian Andres Klode ]
   * apt-pkg/acquire-item.cc:
     - Fix pkgAcqFile::Custom600Headers() to always return something.
-
- -- Julian Andres Klode <jak@debian.org>  Fri, 07 May 2010 09:18:45 +0200
+  
+ -- David Kalnischkies <kalnischkies@gmail.com>  Thu, 06 May 2010 16:10:39 +0200
 
 apt (0.7.26~exp4) experimental; urgency=low
 

+ 0 - 18
debian/libapt-pkg-doc.doc-base.cache

@@ -1,18 +0,0 @@
-Document: libapt-pkg-doc-cache
-Title: APT Cache Specification
-Author: Jason Gunthorpe
-Abstract: The APT Cache Specification describes the complete implementation
- and format of the APT Cache file. The APT Cache file is a way for APT to
- parse and store a large number of package files for display in the UI.
- It's primary design goal is to make display of a single package in the
- tree very fast by pre-linking important things like dependencies and
- provides. The specification doubles as documentation for one of the
- in-memory structures used by the package library and the APT GUI.
-Section: Debian
-
-Format: html
-Index: /usr/share/doc/libapt-pkg-doc/cache.html/index.html
-Files: /usr/share/doc/libapt-pkg-doc/cache.html/*.html
-
-Format: text
-Files: /usr/share/doc/libapt-pkg-doc/cache.text.gz

+ 31 - 79
debian/rules

@@ -27,10 +27,14 @@ endif
 # See below
 -include build/environment.mak
 
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-  export CXXFLAGS = -O0 -g -Wall
+ifneq (,$(shell which dpkg-buildflags))
+  export CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS)
 else
-  export CXXFLAGS = -O2 -g -Wall
+  ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+    export CXXFLAGS = -O0 -g -Wall
+  else
+    export CXXFLAGS = -O2 -g -Wall
+  endif
 endif
 
 # Default rule
@@ -47,7 +51,7 @@ BASE=.
 ifdef BUILD
 BUILD_POSSIBLE := $(BUILD) $(BASE)/$(BUILD)
 else
-BUILD_POSSIBLE := $(BASE) $(BASE)/build-$(shell uname -m) $(BASE)/build
+BUILD_POSSIBLE := $(BASE) $(BASE)/build-$(shell uname --machine) $(BASE)/build
 endif
 BUILDX:= $(foreach i,$(BUILD_POSSIBLE),$(wildcard $(i)/environment.mak*))
 BUILDX:= $(patsubst %/,%,$(firstword $(dir $(BUILDX))))
@@ -82,9 +86,9 @@ LIBAPTPKG_PROVIDE=libapt-pkg$(LIBAPTPKG_MAJOR)
 LIBAPTINST_PROVIDE=libapt-inst$(LIBAPTINST_MAJOR)
 
 debian/shlibs.local: apt-pkg/makefile
-	# We have 3 shlibs.local files.. One for 'apt', one for 'apt-utils' and
+	# We have 3 shlibs.local files: One for 'apt', one for 'apt-utils' and
 	# one for the rest of the packages. This ensures that each package gets
-	# the right overrides.. 
+	# the right overrides
 	rm -rf $@ $@.apt $@.apt-utils
 	echo "libapt-pkg $(LIBAPTPKG_MAJOR)" > $@.apt
 
@@ -94,8 +98,8 @@ debian/shlibs.local: apt-pkg/makefile
 	echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@
 	echo "libapt-inst $(LIBAPTINST_MAJOR) $(LIBAPTINST_PROVIDE)" >> $@
 
-build: build/build-stamp	
-build-doc: build/build-doc-stamp	
+build: build/build-stamp
+build-doc: build/build-doc-stamp
 
 # Note that this is unconditionally done first as part of loading environment.mak
 # The true is needed to force make to reload environment.mak after running
@@ -123,10 +127,8 @@ build/build-doc-stamp: build/configure-stamp
 
 clean:
 	dh_testdir
-#	dh_testroot
-	[ -f Makefile ] && $(MAKE) clean
-	[ -f Makefile ] && $(MAKE) distclean
 
+	[ ! -f Makefile ] || $(MAKE) clean distclean
 	rm -rf build
 
 	# Add here commands to clean up after the build process.
@@ -141,23 +143,20 @@ libapt-pkg-doc: build-doc debian/shlibs.local
 	dh_installdirs -p$@
 #
 # libapt-pkg-doc install
-#	
-	dh_installdocs -p$@ $(BLD)/docs/design* $(BLD)/docs/dpkg-tech* \
-                            $(BLD)/docs/files* $(BLD)/docs/method* \
-			    doc/libapt-pkg2_to_3.txt doc/style.txt \
+#
+	dh_installdocs -p$@ $(BLD)/docs/design* \
+			    $(BLD)/docs/dpkg-tech* \
+			    $(BLD)/docs/files* \
+			    $(BLD)/docs/method* \
+			    doc/libapt-pkg2_to_3.txt \
+			    doc/style.txt \
 			    $(BLD)/doc/doxygen/html
 	dh_installexamples -p$@
-#	dh_installmenu -p$@
-#	dh_installinit -p$@
-#	dh_installcron -p$@
-#	dh_installman -p$@
 
-#	dh_undocumented -p$@
 	dh_installchangelogs -p$@
 	dh_strip -p$@
 	dh_compress -p$@
 	dh_fixperms -p$@
-#	dh_suidregister -p$@
 	dh_installdeb -p$@
 	dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE)
 	dh_md5sums -p$@
@@ -171,8 +170,10 @@ apt-doc: build-doc
 # apt-doc install
 #
 	# Copy the guides
-	dh_installdocs -p$@ $(BLD)/docs/guide*.text $(BLD)/docs/guide*.html \
-	               $(BLD)/docs/offline*.text $(BLD)/docs/offline*.html
+	dh_installdocs -p$@ $(BLD)/docs/guide*.text \
+			    $(BLD)/docs/guide*.html \
+			    $(BLD)/docs/offline*.text \
+			    $(BLD)/docs/offline*.html
 	dh_installchangelogs -p$@
 	dh_compress -p$@
 	dh_fixperms -p$@
@@ -215,7 +216,6 @@ apt: build build-doc debian/shlibs.local
 	cp debian/apt.logrotate debian/$@/etc/logrotate.d/apt
 
 	cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove
-#	head -n 500 ChangeLog > debian/ChangeLog
 
 	# copy lintian override
 	cp share/lintian-overrides debian/$@/usr/share/lintian/overrides/apt
@@ -233,9 +233,9 @@ apt: build build-doc debian/shlibs.local
 	dh_strip -p$@
 	dh_compress -p$@
 	dh_fixperms -p$@
-	dh_makeshlibs -p$@ -m$(LIBAPTPKG_MAJOR) -V '$(LIBAPTPKG_PROVIDE)'
+	dh_makeshlibs -p$@ --major=$(LIBAPTPKG_MAJOR) --version-info='$(LIBAPTPKG_PROVIDE)'
 	dh_installdeb -p$@
-	dh_shlibdeps -p$@ -l`pwd`/debian/apt/usr/lib:`pwd`/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt
+	dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt
 	dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE)
 	dh_md5sums -p$@
 	dh_builddeb -p$@
@@ -254,16 +254,11 @@ libapt-pkg-dev: build debian/shlibs.local
 	cp $(BLD)/include/apt-pkg/*.h debian/libapt-pkg-dev/usr/include/apt-pkg/
 
 	dh_installdocs -p$@
-#	dh_installmenu -p$@
-#	dh_installinit -p$@
-#	dh_installcron -p$@
-#	dh_installman -p$@
 
 	dh_installchangelogs -p$@
 	dh_strip -p$@
 	dh_compress -p$@
 	dh_fixperms -p$@
-#	dh_suidregister -p$@
 	dh_installdeb -p$@
 	dh_gencontrol -p$@ -u -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE)
 	dh_md5sums -p$@
@@ -291,9 +286,9 @@ apt-utils: build debian/shlibs.local
 	dh_strip -p$@
 	dh_compress -p$@
 	dh_fixperms -p$@
-	dh_makeshlibs -m$(LIBAPTINST_MAJOR) -V '$(LIBAPTINST_PROVIDE)' -p$@
+	dh_makeshlibs -p$@ --major=$(LIBAPTINST_MAJOR) --version-info='$(LIBAPTINST_PROVIDE)'
 	dh_installdeb -p$@
-	dh_shlibdeps -p$@ -l`pwd`/debian/apt/usr/lib:`pwd`/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt-utils
+	dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib -- -Ldebian/shlibs.local.apt-utils
 	dh_gencontrol -p$@ -u -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE)
 	dh_md5sums -p$@
 	dh_builddeb -p$@
@@ -305,7 +300,7 @@ apt-transport-https: build debian/shlibs.local libapt-pkg-dev
 	dh_installdirs -p$@
 
 	# install the method
-	mkdir -p debian/$@/usr/lib/apt/methods
+	mkdir --parents debian/$@/usr/lib/apt/methods
 	cp $(BLD)/bin/methods/https debian/$@/usr/lib/apt/methods
 
 	dh_installdocs -p$@ debian/apt-transport-https.README
@@ -319,61 +314,18 @@ apt-transport-https: build debian/shlibs.local libapt-pkg-dev
 	dh_compress -p$@
 	dh_fixperms -p$@
 	dh_installdeb -p$@
-	dh_shlibdeps -p$@ -l`pwd`/debian/apt/usr/lib:`pwd`/debian/$@/usr/lib 
+	dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib
 	dh_gencontrol -p$@
 	dh_md5sums -p$@
 	dh_builddeb -p$@
 
-source diff:
-	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
-
-# Update from CVS
-l33ch: really-clean
-	cvs update
-	buildlib/mkChangeLog
-
-# Update from CVS and then configure for build
-super-l33ch: l33ch Makefile.in
-
 configure:
 	$(MAKE) configure
 
-l33ch-stamp: super-l33ch
-	touch $@
-
 really-clean: clean
-	-find -name Makefile.in -print0 | xargs -0r rm -f
+	-find . -name Makefile.in -print0 | xargs --null --no-run-if-empty -- rm -f
 	find -name ChangeLog | xargs rm -f
 	rm -f l33ch-stamp
 
 binary: binary-indep binary-arch
 .PHONY: build clean binary-indep binary-arch binary debian/shlibs.local
-
-
-# Done by the uploader.
-#cvs update.. 
-#edit debian/changelog
-# configure.in has the version automatically updated now.
-# edit configure.in
-# debian/rules cvs-build
-
-CVS_BUILDDIR=apt-$(APT_DEBVER)
-CVS_ROOT=$(shell cat CVS/Root)
-CVS_MODULE=$(shell cat CVS/Repository)
-cvs-build:
-	rm -rf debian/cvs-build
-	mkdir -p debian/cvs-build
-	(cd debian/cvs-build;cvs -d $(CVS_ROOT) export -r$(APT_CVSTAG) -d apt-$(APT_DEBVER) $(CVS_MODULE))
-	$(MAKE) -C debian/cvs-build/$(CVS_BUILDDIR) startup doc
-	(cd debian/cvs-build/$(CVS_BUILDDIR);$(DEB_BUILD_PROG))
-
-cvs-mkul:
-	-mkdir -p ../upload-$(APT_DEBVER)
-	cp `find debian/cvs-build -maxdepth 1 -type f` ../upload-$(APT_DEBVER)
-
-arch-build:
-	rm -rf debian/arch-build
-	mkdir -p debian/arch-build/apt-$(APT_DEBVER)
-	tar -c --exclude=arch-build --no-recursion -f - `bzr inventory` | (cd debian/arch-build/$(PKG)-$(APT_DEBVER);tar xf -)
-	$(MAKE) -C debian/arch-build/apt-$(APT_DEBVER) startup doc
-	(cd debian/arch-build/apt-$(APT_DEBVER); $(DEB_BUILD_PROG); dpkg-genchanges -S > ../apt_$(APT_DEBVER)_source.changes)

+ 1 - 1
doc/apt-ftparchive.1.xml

@@ -363,7 +363,7 @@
      The <literal>Tree</literal> section takes a scope tag which sets the 
      <literal>$(DIST)</literal> variable and defines the root of the tree 
      (the path is prefixed by <literal>ArchiveDir</literal>).
-     Typically this is a setting such as <filename>dists/woody</filename>.</para>
+     Typically this is a setting such as <filename>dists/&stable-codename;</filename>.</para>
      <para>
      All of the settings defined in the <literal>TreeDefault</literal> section can be
      use in a <literal>Tree</literal> section as well as three new variables.</para>

+ 7 - 21
doc/apt-get.8.xml

@@ -46,18 +46,10 @@
 	      </option>
       </arg>
       <arg>
-		  <option>-t=</option>
-		  <group choice='req'>
-			  <arg choice='plain'>
-				  <replaceable>target_release_name</replaceable>
-			  </arg>
-			  <arg choice='plain'>
-				  <replaceable>target_release_number_expression</replaceable>
-			  </arg>
-			  <arg choice='plain'>
-				  <replaceable>target_release_codename</replaceable>
-			  </arg>
-		  </group>
+		<option>-t=</option>
+		<arg choice='plain'>
+			<replaceable>target_release</replaceable>
+		</arg>
       </arg>
 
       <group choice="req">
@@ -73,10 +65,7 @@
 							=<replaceable>pkg_version_number</replaceable>
 						</arg>
 						<arg choice='plain'>
-							/<replaceable>target_release_name</replaceable>
-						</arg>
-						<arg choice='plain'>
-							/<replaceable>target_release_codename</replaceable>
+							/<replaceable>target_release</replaceable>
 						</arg>
 					</group>
 				</arg>
@@ -92,10 +81,7 @@
 							=<replaceable>pkg_version_number</replaceable>
 						</arg>
 						<arg choice='plain'>
-							/<replaceable>target_release_name</replaceable>
-						</arg>
-						<arg choice='plain'>
-							/<replaceable>target_release_codename</replaceable>
+							/<replaceable>target_release</replaceable>
 						</arg>
 					</group>
 				</arg>
@@ -126,7 +112,7 @@
    <para><command>apt-get</command> is the command-line tool for handling packages, and may be 
    considered the user's "back-end" to other tools using the APT
    library.  Several "front-end" interfaces exist, such as &dselect;,
-   &aptitude;, &synaptic;, &gnome-apt; and &wajig;.</para>
+   &aptitude;, &synaptic; and &wajig;.</para>
 
    <para>Unless the <option>-h</option>, or <option>--help</option> option is given, one of the
    commands below must be present.</para>

+ 3 - 2
doc/apt.conf.5.xml

@@ -150,8 +150,9 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};
      </varlistentry>
      
      <varlistentry><term>Default-Release</term>
-	 <listitem><para>Default release to install packages from if more than one
-	 version available. Contains release name, codename or release version. Examples: 'stable', 'testing', 'unstable', 'lenny', 'squeeze', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
+     <listitem><para>Default release to install packages from if more than one
+     version available. Contains release name, codename or release version. Examples: 'stable', 'testing',
+     'unstable', '&stable-codename;', '&testing-codename;', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
      </varlistentry>
 
      <varlistentry><term>Ignore-Hold</term>

+ 4 - 6
doc/apt.ent

@@ -142,12 +142,6 @@
   </citerefentry>"
 >
 
-<!ENTITY gnome-apt "<citerefentry>
-    <refentrytitle><command>gnome-apt</command></refentrytitle>
-    <manvolnum>1</manvolnum>
-  </citerefentry>"
->
-
 <!ENTITY wajig "<citerefentry>
     <refentrytitle><command>wajig</command></refentrytitle>
     <manvolnum>1</manvolnum>
@@ -392,3 +386,7 @@
      This is done on purpose, to avoid losing content when the
      translation is lagging behind the original content.
 ">
+
+<!ENTITY oldstable-codename "etch">
+<!ENTITY stable-codename "lenny">
+<!ENTITY testing-codename "squeeze">

+ 19 - 11
doc/apt_preferences.5.xml

@@ -97,6 +97,12 @@ APT::Default-Release "stable";
 algorithm to set the priorities of the versions of a package.  Assign:
 
 <variablelist>
+<varlistentry>
+<term>priority 1</term>
+<listitem><simpara>to the versions coming from archives which in their <filename>Release</filename>
+files are marked as "NotAutomatic: yes" like the debian experimental archive.</simpara></listitem>
+</varlistentry>
+
 <varlistentry>
 <term>priority 100</term>
 <listitem><simpara>to the version that is already installed (if any).</simpara></listitem>
@@ -116,7 +122,9 @@ algorithm to set the priorities of the versions of a package.  Assign:
 
 <para>If the target release has not been specified then APT simply assigns
 priority 100 to all installed package versions and priority 500 to all
-uninstalled package versions.</para>
+uninstalled package versions, expect versions coming from archives which
+in their <filename>Release</filename> files are marked as "NotAutomatic: yes" -
+these versions get the priority 1.</para>
 
 <para>APT then applies the following rules, listed in order of precedence,
 to determine which version of a package to install.
@@ -218,11 +226,11 @@ Pin-Priority: 50
 </programlisting>
 
 <simpara>The following record assigns a high priority to all package versions
-belonging to any distribution whose Codename is "<literal>squeeze</literal>".</simpara>
+belonging to any distribution whose Codename is "<literal>&testing-codename;</literal>".</simpara>
 
 <programlisting>
 Package: *
-Pin: release n=squeeze
+Pin: release n=&testing-codename;
 Pin-Priority: 900
 </programlisting>
 
@@ -355,7 +363,7 @@ APT priorities:
 <para>The <filename>Release</filename> file is normally found in the directory
 <filename>.../dists/<replaceable>dist-name</replaceable></filename>:
 for example, <filename>.../dists/stable/Release</filename>,
-or <filename>.../dists/woody/Release</filename>.
+or <filename>.../dists/&stable-codename;/Release</filename>.
 It consists of a single multi-line record which applies to <emphasis>all</emphasis> of
 the packages in the directory tree below its parent.  Unlike the
 <filename>Packages</filename> file, nearly all of the lines in a <filename>Release</filename>
@@ -383,14 +391,14 @@ Pin: release a=stable
 <term>the <literal>Codename:</literal> line</term>
 <listitem><simpara>names the codename to which all the packages
 in the directory tree belong.  For example, the line
-"Codename: squeeze"
+"Codename: &testing-codename;"
 specifies that all of the packages in the directory
 tree below the parent of the <filename>Release</filename> file belong to a version named
-<literal>squeeze</literal>.  Specifying this value in the APT preferences file
+<literal>&testing-codename;</literal>.  Specifying this value in the APT preferences file
 would require the line:
 </simpara>
 <programlisting>
-Pin: release n=squeeze
+Pin: release n=&testing-codename;
 </programlisting>
 </listitem>
 </varlistentry>
@@ -590,9 +598,9 @@ the example configurations above.
 
 <programlisting>
 Explanation: Uninstall or do not install any Debian-originated package versions
-Explanation: other than those in the distribution codenamed with squeeze or sid
+Explanation: other than those in the distribution codenamed with &testing-codename; or sid
 Package: *
-Pin: release n=squeeze
+Pin: release n=&testing-codename;
 Pin-Priority: 900
 
 Explanation: Debian unstable is always codenamed with sid
@@ -608,7 +616,7 @@ Pin-Priority: -10
 
 <para>With a suitable &sources-list; file and the above preferences file,
 any of the following commands will cause APT to upgrade to the
-latest version(s) in the release codenamed with <literal>squeeze</literal>.
+latest version(s) in the release codenamed with <literal>&testing-codename;</literal>.
 
 <programlisting>
 apt-get install <replaceable>package-name</replaceable>
@@ -620,7 +628,7 @@ apt-get dist-upgrade
 <para>The following command will cause APT to upgrade the specified
 package to the latest version from the <literal>sid</literal> distribution.
 Thereafter, <command>apt-get upgrade</command> will upgrade
-the package to the most recent <literal>squeeze</literal> version if that is
+the package to the most recent <literal>&testing-codename;</literal> version if that is
 more recent than the installed version, otherwise, to the most recent
 <literal>sid</literal> version if that is more recent than the installed
 version.

Разлика између датотеке није приказан због своје велике величине
+ 265 - 215
doc/po/apt-doc.pot


Разлика између датотеке није приказан због своје велике величине
+ 339 - 226
doc/po/de.po


Разлика између датотеке није приказан због своје велике величине
+ 336 - 222
doc/po/es.po


Разлика између датотеке није приказан због своје велике величине
+ 476 - 484
doc/po/fr.po


Разлика између датотеке није приказан због своје велике величине
+ 265 - 217
doc/po/it.po


Разлика између датотеке није приказан због своје велике величине
+ 334 - 225
doc/po/ja.po


Разлика између датотеке није приказан због своје велике величине
+ 289 - 218
doc/po/pl.po


Разлика између датотеке није приказан због своје велике величине
+ 336 - 223
doc/po/pt.po


Разлика између датотеке није приказан због своје велике величине
+ 283 - 222
doc/po/pt_BR.po


+ 4 - 4
doc/sources.list.5.xml

@@ -111,8 +111,8 @@
 
    <para>Some examples:</para>
    <literallayout>
-deb http://http.us.debian.org/debian stable main contrib non-free
-deb http://http.us.debian.org/debian dists/stable-updates/
+deb http://ftp.debian.org/debian &stable-codename; main contrib non-free
+deb http://security.debian.org/ &stable-codename;/updates main contrib non-free
    </literallayout>
 
  </refsect1>
@@ -206,8 +206,8 @@ deb http://http.us.debian.org/debian dists/stable-updates/
    <literallayout>deb http://archive.debian.org/debian-archive hamm main</literallayout>
 
    <para>Uses FTP to access the archive at ftp.debian.org, under the debian
-   directory, and uses only the stable/contrib area.</para>
-   <literallayout>deb ftp://ftp.debian.org/debian stable contrib</literallayout>
+   directory, and uses only the &stable-codename;/contrib area.</para>
+   <literallayout>deb ftp://ftp.debian.org/debian &stable-codename; contrib</literallayout>
 
    <para>Uses FTP to access the archive at ftp.debian.org, under the debian
    directory, and uses only the unstable/contrib area. If this line appears as

+ 17 - 25
methods/gpgv.cc

@@ -12,6 +12,8 @@
 #include <iostream>
 #include <sstream>
 
+#include <vector>
+
 #define GNUPGPREFIX "[GNUPG:]"
 #define GNUPGBADSIG "[GNUPG:] BADSIG"
 #define GNUPGNOPUBKEY "[GNUPG:] NO_PUBKEY"
@@ -87,23 +89,18 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
       return string("Couldn't spawn new process") + strerror(errno);
    else if (pid == 0)
    {
-      const char *Args[400];
-      unsigned int i = 0;
+      std::vector<const char *> Args;
+      Args.reserve(30);
 
-      Args[i++] = gpgvpath.c_str();
-      Args[i++] = "--status-fd";
-      Args[i++] = "3";
-      Args[i++] = "--ignore-time-conflict";
+      Args.push_back(gpgvpath.c_str());
+      Args.push_back("--status-fd");
+      Args.push_back("3");
+      Args.push_back("--ignore-time-conflict");
       for (vector<string>::const_iterator K = keyrings.begin();
 	   K != keyrings.end(); ++K)
       {
-	 Args[i++] = "--keyring";
-	 Args[i++] = K->c_str();
-	 // check overflow (minus a bit of extra space at the end)
-	 if(i >= sizeof(Args)/sizeof(char*)-5) {
-	    std::clog << _("E: Too many keyrings should be passed to gpgv. Exiting.") << std::endl;
-	    exit(111);
-	 }
+	 Args.push_back("--keyring");
+	 Args.push_back(K->c_str());
       }
 
       Configuration::Item const *Opts;
@@ -115,23 +112,18 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
          {
             if (Opts->Value.empty() == true)
                continue;
-            Args[i++] = Opts->Value.c_str();
-	    // check overflow (minus a bit of extra space at the end)
-	    if(i >= sizeof(Args)/sizeof(char*)-5) { 
-	       std::clog << _("E: Argument list from Acquire::gpgv::Options too long. Exiting.") << std::endl;
-	       exit(111);
-	    }
+            Args.push_back(Opts->Value.c_str());
          }
       }
-      Args[i++] = file;
-      Args[i++] = outfile;
-      Args[i++] = NULL;
+      Args.push_back(file);
+      Args.push_back(outfile);
+      Args.push_back(NULL);
 
       if (Debug == true)
       {
          std::clog << "Preparing to exec: " << gpgvpath;
-	 for(unsigned int j=0;Args[j] != NULL; j++)
-	    std::clog << " " << Args[j];
+	 for(std::vector<const char *>::const_iterator a = Args.begin();*a != NULL; ++a)
+	    std::clog << " " << *a;
 	 std::clog << std::endl;
       }
       int const nullfd = open("/dev/null", O_RDONLY);
@@ -145,7 +137,7 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile,
       putenv((char *)"LANG=");
       putenv((char *)"LC_ALL=");
       putenv((char *)"LC_MESSAGES=");
-      execvp(gpgvpath.c_str(), (char **)Args);
+      execvp(gpgvpath.c_str(), (char **) &Args[0]);
              
       exit(111);
    }

+ 11 - 8
methods/rred.cc

@@ -477,23 +477,26 @@ bool RredMethod::Fetch(FetchItem *Itm)						/*{{{*/
    Patch.Close();
    To.Close();
 
-   // Transfer the modification times
-   struct stat Buf;
-   if (stat(Path.c_str(),&Buf) != 0)
+   /* Transfer the modification times from the patch file
+      to be able to see in which state the file should be
+      and use the access time from the "old" file */
+   struct stat BufBase, BufPatch;
+   if (stat(Path.c_str(),&BufBase) != 0 ||
+       stat(string(Path+".ed").c_str(),&BufPatch) != 0)
       return _error->Errno("stat",_("Failed to stat"));
 
    struct utimbuf TimeBuf;
-   TimeBuf.actime = Buf.st_atime;
-   TimeBuf.modtime = Buf.st_mtime;
+   TimeBuf.actime = BufBase.st_atime;
+   TimeBuf.modtime = BufPatch.st_mtime;
    if (utime(Itm->DestFile.c_str(),&TimeBuf) != 0)
       return _error->Errno("utime",_("Failed to set modification time"));
 
-   if (stat(Itm->DestFile.c_str(),&Buf) != 0)
+   if (stat(Itm->DestFile.c_str(),&BufBase) != 0)
       return _error->Errno("stat",_("Failed to stat"));
 
    // return done
-   Res.LastModified = Buf.st_mtime;
-   Res.Size = Buf.st_size;
+   Res.LastModified = BufBase.st_mtime;
+   Res.Size = BufBase.st_size;
    Res.TakeHashes(Hash);
    URIDone(Res);
 

Разлика између датотеке није приказан због своје велике величине
+ 376 - 338
po/apt-all.pot


Разлика између датотеке није приказан због своје велике величине
+ 446 - 371
po/ar.po


Разлика између датотеке није приказан због своје велике величине
+ 458 - 373
po/ast.po


Разлика између датотеке није приказан због своје велике величине
+ 463 - 375
po/bg.po


Разлика између датотеке није приказан због своје велике величине
+ 446 - 370
po/bs.po


Разлика између датотеке није приказан због своје велике величине
+ 457 - 373
po/ca.po


Разлика између датотеке није приказан због своје велике величине
+ 456 - 373
po/cs.po


Разлика између датотеке није приказан због своје велике величине
+ 459 - 373
po/cy.po


Разлика између датотеке није приказан због своје велике величине
+ 460 - 377
po/da.po


Разлика између датотеке није приказан због своје велике величине
+ 460 - 374
po/de.po


Разлика између датотеке није приказан због своје велике величине
+ 454 - 373
po/dz.po


Разлика између датотеке није приказан због своје велике величине
+ 460 - 374
po/el.po


Разлика између датотеке није приказан због своје велике величине
+ 457 - 373
po/en_GB.po


Разлика између датотеке није приказан због своје велике величине
+ 459 - 376
po/es.po


Разлика између датотеке није приказан због своје велике величине
+ 457 - 373
po/eu.po


Разлика између датотеке није приказан због своје велике величине
+ 458 - 373
po/fi.po


Разлика између датотеке није приказан због своје велике величине
+ 469 - 377
po/fr.po


Разлика између датотеке није приказан због своје велике величине
+ 455 - 373
po/gl.po


Разлика између датотеке није приказан због своје велике величине
+ 451 - 373
po/hu.po


Разлика између датотеке није приказан због своје велике величине
+ 461 - 374
po/it.po


Разлика између датотеке није приказан због своје велике величине
+ 457 - 373
po/ja.po


Разлика између датотеке није приказан због своје велике величине
+ 452 - 373
po/km.po


Разлика између датотеке није приказан због своје велике величине
+ 459 - 374
po/ko.po


Разлика између датотеке није приказан због своје велике величине
+ 451 - 375
po/ku.po


Разлика између датотеке није приказан због своје велике величине
+ 453 - 375
po/lt.po


Разлика између датотеке није приказан због своје велике величине
+ 453 - 373
po/mr.po


Разлика између датотеке није приказан због своје велике величине
+ 459 - 374
po/nb.po


Разлика између датотеке није приказан због своје велике величине
+ 452 - 373
po/ne.po


Разлика између датотеке није приказан због своје велике величине
+ 461 - 374
po/nl.po


Разлика између датотеке није приказан због своје велике величине
+ 454 - 373
po/nn.po


Разлика између датотеке није приказан због своје велике величине
+ 461 - 374
po/pl.po


Разлика између датотеке није приказан због своје велике величине
+ 458 - 373
po/pt.po


Разлика између датотеке није приказан због своје велике величине
+ 462 - 373
po/pt_BR.po


Разлика између датотеке није приказан због своје велике величине
+ 464 - 375
po/ro.po


Разлика између датотеке није приказан због своје велике величине
+ 464 - 376
po/ru.po


Разлика између датотеке није приказан због своје велике величине
+ 461 - 374
po/sk.po


Разлика између датотеке није приказан због своје велике величине
+ 453 - 373
po/sl.po


Разлика између датотеке није приказан због своје велике величине
+ 456 - 373
po/sv.po


Разлика између датотеке није приказан због своје велике величине
+ 453 - 373
po/th.po


Разлика између датотеке није приказан због своје велике величине
+ 454 - 373
po/tl.po


Разлика између датотеке није приказан због своје велике величине
+ 457 - 373
po/uk.po


Разлика између датотеке није приказан због своје велике величине
+ 456 - 373
po/vi.po


Разлика између датотеке није приказан због своје велике величине
+ 454 - 374
po/zh_CN.po


Разлика између датотеке није приказан због своје велике величине
+ 453 - 373
po/zh_TW.po