CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
- Added pkginfo to .gitignore
[pkgutils-cross.git] / pkgrm.cc
1 //
2 // pkgutils
3 //
4 // Copyright (c) 2000-2005 Per Liden
5 // Copyright (c) 2006-2013 by CRUX team (http://crux.nu)
6 //
7 // This program is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 2 of the License, or
10 // (at your option) any later version.
11 //
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, write to the Free Software
19 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
20 // USA.
21 //
22
23 #include "pkgrm.h"
24 #include <unistd.h>
25
26 void pkgrm::run(int argc, char** argv)
27 {
28 //
29 // Check command line options
30 //
31 string o_package;
32 string o_root;
33
34 for (int i = 1; i < argc; i++) {
35 string option(argv[i]);
36 if (option == "-r" || option == "--root") {
37 assert_argument(argv, argc, i);
38 o_root = argv[i + 1];
39 i++;
40 } else if (option[0] == '-' || !o_package.empty()) {
41 throw runtime_error("invalid option " + option);
42 } else {
43 o_package = option;
44 }
45 }
46
47 if (o_package.empty())
48 throw runtime_error("option missing");
49
50 //
51 // Check UID
52 //
53 if (getuid())
54 throw runtime_error("only root can remove packages");
55
56 //
57 // Remove package
58 //
59 {
60 db_lock lock(o_root, true);
61 db_open(o_root);
62
63 if (!db_find_pkg(o_package))
64 throw runtime_error("package " + o_package + " not installed");
65
66 db_rm_pkg(o_package);
67 ldconfig();
68 db_commit();
69 }
70 }
71
72 void pkgrm::print_help() const
73 {
74 cout << "usage: " << utilname << " [options] <package>" << endl
75 << "options:" << endl
76 << " -r, --root <path> specify alternative installation root" << endl
77 << " -v, --version print version and exit" << endl
78 << " -h, --help print help and exit" << endl;
79 }