CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
pkgmk-cross.conf: adapted to 64b
[pkgutils-cross.git] / pkgadd.cc
index 4bc16520aea2b166627f549318af5ef66939909b..2310ea05ede54e09e61bcb8637d9b44527939fc9 100644 (file)
--- a/pkgadd.cc
+++ b/pkgadd.cc
@@ -2,8 +2,10 @@
 //  pkgutils
 // 
 //  Copyright (c) 2000-2005 Per Liden
-//  Copyright (c) 2006-2007 by CRUX team (http://crux.nu)
-// 
+//  Copyright (c) 2006-2013 by CRUX team (http://crux.nu)
+//
+//  Patches for alternative pkgadd.conf file by Jose V Beneyto <sepen@crux.nu>
+//
 //  This program is free software; you can redistribute it and/or modify
 //  it under the terms of the GNU General Public License as published by
 //  the Free Software Foundation; either version 2 of the License, or
@@ -33,6 +35,7 @@ void pkgadd::run(int argc, char** argv)
        // Check command line options
        //
        string o_root;
+       string o_config;
        string o_package;
        bool o_upgrade = false;
        bool o_force = false;
@@ -43,6 +46,10 @@ void pkgadd::run(int argc, char** argv)
                        assert_argument(argv, argc, i);
                        o_root = argv[i + 1];
                        i++;
+               } else if (option == "-c" || option == "--config") {
+                       assert_argument(argv, argc, i);
+                       o_config = argv[i + 1];
+                       i++;
                } else if (option == "-u" || option == "--upgrade") {
                        o_upgrade = true;
                } else if (option == "-f" || option == "--force") {
@@ -71,7 +78,7 @@ void pkgadd::run(int argc, char** argv)
                db_open(o_root);
 
                pair<string, pkginfo_t> package = pkg_open(o_package);
-               vector<rule_t> config_rules = read_config();
+               vector<rule_t> config_rules = read_config(o_config);
 
                bool installed = db_find_pkg(package.first);
                if (installed && !o_upgrade)
@@ -112,18 +119,21 @@ void pkgadd::print_help() const
 {
        cout << "usage: " << utilname << " [options] <file>" << endl
             << "options:" << endl
-            << "  -u, --upgrade       upgrade package with the same name" << endl
-            << "  -f, --force         force install, overwrite conflicting files" << endl
-            << "  -r, --root <path>   specify alternative installation root" << endl
-            << "  -v, --version       print version and exit" << endl
-            << "  -h, --help          print help and exit" << endl;
+            << "  -u, --upgrade        upgrade package with the same name" << endl
+            << "  -f, --force          force install, overwrite conflicting files" << endl
+            << "  -r, --root <path>    specify alternative installation root" << endl
+            << "  -c, --config <file>  use alternate configuration file" << endl
+            << "  -v, --version        print version and exit" << endl
+            << "  -h, --help           print help and exit" << endl;
 }
 
-vector<rule_t> pkgadd::read_config() const
+vector<rule_t> pkgadd::read_config(string file) const
 {
        vector<rule_t> rules;
        unsigned int linecount = 0;
-       const string filename = root + PKGADD_CONF;
+       string filename = root + PKGADD_CONF;
+
+       if (!file.empty()) filename = file;
        ifstream in(filename.c_str());
 
        if (in) {