/usr/share/doc/libcupt4-doc/examples/show-upgradeable/show-upgradeable.cpp is in libcupt4-doc 2.9.9.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | /**************************************************************************
* Copyright (C) 2010-2011 by Eugene V. Lyubimkin *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License *
* (version 3 or above) as published by the Free Software Foundation. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU GPL *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA *
**************************************************************************/
/// shows installed and preferred versions for all upgradeable manually installed packages.
#include <iostream>
using std::cout;
using std::endl;
#include <cupt/common.hpp>
#include <cupt/config.hpp>
#include <cupt/cache.hpp>
#include <cupt/system/state.hpp>
#include <cupt/cache/binarypackage.hpp>
#include <cupt/cache/binaryversion.hpp>
int main()
{
try
{
cupt::shared_ptr< cupt::Config > config(new cupt::Config());
cupt::Cache cache(config, false, true, true); // include binary installed packages
for (const auto& packageName: cache.getSystemState()->getInstalledPackageNames())
{
if (cache.isAutomaticallyInstalled(packageName))
{
continue;
}
auto package = cache.getBinaryPackage(packageName);
if (!package)
{
cupt::fatal2("no binary package '%s'", packageName);
}
auto installedVersion = package->getInstalledVersion();
if (!installedVersion)
{
cupt::fatal2("no installed version in package '%s'", packageName);
}
auto preferredVersion = cache.getPreferredVersion(package);
if (!preferredVersion)
{
cupt::fatal2("unable to get preferred version for package '%s'", packageName);
}
if (installedVersion != preferredVersion)
{
cout << packageName << ": " << installedVersion->versionString
<< " -> " << preferredVersion->versionString << endl;
}
}
}
catch (cupt::Exception&)
{
return EXIT_FAILURE;
}
return 0;
}
|