]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-mark.cc
VersionHash: Do not skip too long dependency lines
[apt.git] / cmdline / apt-mark.cc
index d02e80beb44a4b50f6cdc9bae5fd844c0b761000..0cba31e703ce7b1aa3d47cb48130e80297ff7157 100644 (file)
@@ -48,9 +48,8 @@ using namespace std;
 static bool DoAuto(CommandLine &CmdL)
 {
    pkgCacheFile CacheFile;
-   pkgCache *Cache = CacheFile.GetPkgCache();
-   pkgDepCache *DepCache = CacheFile.GetDepCache();
-   if (unlikely(Cache == NULL || DepCache == NULL))
+   pkgDepCache * const DepCache = CacheFile.GetDepCache();
+   if (unlikely(DepCache == nullptr))
       return false;
 
    APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
@@ -95,9 +94,8 @@ static bool DoAuto(CommandLine &CmdL)
 static bool DoMarkAuto(CommandLine &CmdL)
 {
    pkgCacheFile CacheFile;
-   pkgCache *Cache = CacheFile.GetPkgCache();
-   pkgDepCache *DepCache = CacheFile.GetDepCache();
-   if (unlikely(Cache == NULL || DepCache == NULL))
+   pkgDepCache * const DepCache = CacheFile.GetDepCache();
+   if (unlikely(DepCache == nullptr))
       return false;
 
    APT::PackageList pkgset = APT::PackageList::FromCommandLine(CacheFile, CmdL.FileList + 1);
@@ -132,9 +130,8 @@ static bool DoMarkAuto(CommandLine &CmdL)
 static bool ShowAuto(CommandLine &CmdL)
 {
    pkgCacheFile CacheFile;
-   pkgCache *Cache = CacheFile.GetPkgCache();
-   pkgDepCache *DepCache = CacheFile.GetDepCache();
-   if (unlikely(Cache == NULL || DepCache == NULL))
+   pkgDepCache * const DepCache = CacheFile.GetDepCache();
+   if (unlikely(DepCache == nullptr))
       return false;
 
    std::vector<string> packages;
@@ -143,8 +140,8 @@ static bool ShowAuto(CommandLine &CmdL)
 
    if (CmdL.FileList[1] == 0)
    {
-      packages.reserve(Cache->HeaderP->PackageCount / 3);
-      for (pkgCache::PkgIterator P = Cache->PkgBegin(); P.end() == false; ++P)
+      packages.reserve(DepCache->Head().PackageCount / 3);
+      for (pkgCache::PkgIterator P = DepCache->PkgBegin(); P.end() == false; ++P)
         if (P->CurrentVer != 0 &&
             (((*DepCache)[P].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) == ShowAuto)
            packages.push_back(P.FullName(true));
@@ -172,8 +169,8 @@ static bool ShowAuto(CommandLine &CmdL)
 static bool DoSelection(CommandLine &CmdL)
 {
    pkgCacheFile CacheFile;
-   pkgCache *Cache = CacheFile.GetPkgCache();
-   if (unlikely(Cache == NULL))
+   pkgCache * const Cache = CacheFile.GetPkgCache();
+   if (unlikely(Cache == nullptr))
       return false;
 
    APT::VersionVector pkgset = APT::VersionVector::FromCommandLine(CacheFile, CmdL.FileList + 1, APT::CacheSetHelper::INSTCAND);
@@ -238,8 +235,8 @@ static bool DoSelection(CommandLine &CmdL)
 static bool ShowSelection(CommandLine &CmdL)                           /*{{{*/
 {
    pkgCacheFile CacheFile;
-   pkgCache *Cache = CacheFile.GetPkgCache();
-   if (unlikely(Cache == NULL))
+   pkgCache * const Cache = CacheFile.GetPkgCache();
+   if (unlikely(Cache == nullptr))
       return false;
 
    pkgCache::State::PkgSelectedState selector;
@@ -280,40 +277,19 @@ static bool ShowSelection(CommandLine &CmdL)                              /*{{{*/
    return true;
 }
                                                                        /*}}}*/
-bool ShowHelp(CommandLine &, aptDispatchWithHelp const * Cmds)         /*{{{*/
+static bool ShowHelp(CommandLine &)                                    /*{{{*/
 {
-   ioprintf(std::cout, "%s %s (%s)\n", PACKAGE, PACKAGE_VERSION, COMMON_ARCH);
-
    std::cout <<
     _("Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n"
       "\n"
       "apt-mark is a simple command line interface for marking packages\n"
-      "as manually or automatically installed. It can also list marks.\n")
-    << std::endl
-    << _("Commands:") << std::endl;
-
-   for (; Cmds->Handler != nullptr; ++Cmds)
-   {
-      if (Cmds->Help == nullptr)
-        continue;
-      std::cout << "   " << Cmds->Match << " - " << Cmds->Help << std::endl;
-   }
-
-   std::cout << std::endl
-   << _("Options:\n"
-      "  -h  This help text.\n"
-      "  -q  Loggable output - no progress indicator\n"
-      "  -qq No output except for errors\n"
-      "  -s  No-act. Just prints what would be done.\n"
-      "  -f  read/write auto/manual marking in the given file\n"
-      "  -c=? Read this configuration file\n"
-      "  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
-      "See the apt-mark(8) and apt.conf(5) manual pages for more information.")
-      << std::endl;
+      "as manually or automatically installed. It can also be used to\n"
+      "manipulate the dpkg(1) selection states of packages, and to list\n"
+      "all packages with or without a certain marking.\n");
    return true;
 }
                                                                        /*}}}*/
-std::vector<aptDispatchWithHelp> GetCommands()                         /*{{{*/
+static std::vector<aptDispatchWithHelp> GetCommands()                  /*{{{*/
 {
    return {
       {"auto",&DoAuto, _("Mark the given packages as automatically installed")},
@@ -340,10 +316,8 @@ std::vector<aptDispatchWithHelp> GetCommands()                             /*{{{*/
                                                                        /*}}}*/
 int main(int argc,const char *argv[])                                  /*{{{*/
 {
-   InitLocale();
-
    CommandLine CmdL;
-   auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_MARK, &_config, &_system, argc, argv);
+   auto const Cmds = ParseCommandLine(CmdL, APT_CMD::APT_MARK, &_config, &_system, argc, argv, &ShowHelp, &GetCommands);
 
    InitOutput();