X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/50914ffaff8154a665e812c2d72c1195fc74dc33..7b464090c26153e808b90726e2faa58029f6bb88:/apt-pkg/deb/dpkgpm.cc diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 91f74e128..ea64ef089 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: dpkgpm.cc,v 1.22 2001/05/27 04:40:57 jgg Exp $ +// $Id: dpkgpm.cc,v 1.26 2003/04/27 03:02:40 doogie Exp $ /* ###################################################################### DPKG Package Manager - Provide an interface to dpkg @@ -144,7 +144,6 @@ bool pkgDPkgPM::RunScripts(const char *Cnf) return true; } - /*}}}*/ // DPkgPM::SendV2Pkgs - Send version 2 package info /*{{{*/ // --------------------------------------------------------------------- @@ -315,12 +314,6 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) Die = !SendV2Pkgs(F); fclose(F); - if (Die == true) - { - kill(Process,SIGINT); - ExecWait(Process,Opts->Value.c_str(),true); - return _error->Error("Failure running script %s",Opts->Value.c_str()); - } // Clean up the sub process if (ExecWait(Process,Opts->Value.c_str()) == false) @@ -329,13 +322,15 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) return true; } - /*}}}*/ // DPkgPM::Go - Run the sequence /*{{{*/ // --------------------------------------------------------------------- /* This globs the operations and calls dpkg */ bool pkgDPkgPM::Go() { + unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",350); + unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",8192); + if (RunScripts("DPkg::Pre-Invoke") == false) return false; @@ -348,13 +343,13 @@ bool pkgDPkgPM::Go() for (; J != List.end() && J->Op == I->Op; J++); // Generate the argument list - const char *Args[400]; - if (J - I > 350) - J = I + 350; + const char *Args[MaxArgs + 50]; + if (J - I > (signed)MaxArgs) + J = I + MaxArgs; unsigned int n = 0; unsigned long Size = 0; - string Tmp = _config->Find("Dir::Bin::dpkg","dpkg").c_str(); + string Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); Args[n++] = Tmp.c_str(); Size += strlen(Args[n-1]); @@ -406,7 +401,7 @@ bool pkgDPkgPM::Go() // Write in the file or package names if (I->Op == Item::Install) { - for (;I != J && Size < 1024; I++) + for (;I != J && Size < MaxArgBytes; I++) { if (I->File[0] != '/') return _error->Error("Internal Error, Pathname to install is not absolute '%s'",I->File.c_str()); @@ -416,7 +411,7 @@ bool pkgDPkgPM::Go() } else { - for (;I != J && Size < 1024; I++) + for (;I != J && Size < MaxArgBytes; I++) { Args[n++] = I->Pkg.Name(); Size += strlen(Args[n-1]);