Changeset 10:ff5edb96f060


Ignore:
Timestamp:
02/02/11 11:01:29 (3 years ago)
Author:
Kai Engert <kaie@…>
Branch:
default
Tags:
NSS_GUI_0_3_8_RTM
Message:

Merge https://bugzilla.redhat.com/attachment.cgi?id=423619&action=diff from David Woodhouse

Location:
wrapnssgui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • wrapnssgui/Makefile

    r4 r10  
    88 
    99nss-gui: nss-gui.cpp 
    10         g++ nss-gui.cpp -o nss-gui -lboost_program_options $(CXXFLAGS) 
     10        g++ nss-gui.cpp -o nss-gui -lboost_program_options -lboost_system $(CXXFLAGS) 
    1111 
    1212nss-gui.1.xml: nss-gui.1.txt 
  • wrapnssgui/nss-gui.cpp

    r6 r10  
    3838 * ***** END LICENSE BLOCK ***** */ 
    3939 
    40 //#include <boost/filesystem/operations.hpp> 
    41 //#include <boost/filesystem/convenience.hpp> 
    42 //namespace fs = boost::filesystem; 
    4340#include <boost/program_options/cmdline.hpp> 
    4441#include <boost/program_options/options_description.hpp> 
     
    4643#include <boost/program_options/parsers.hpp> 
    4744#include <boost/program_options/value_semantic.hpp> 
     45#include <boost/algorithm/string/trim.hpp> 
    4846namespace po = boost::program_options; 
    4947#include <string> 
     
    9391      // no environment varilable, set default path 
    9492      string db_directory; 
     93      bool use_system_db = false; 
     94 
    9595      uid_t euid = geteuid(); 
    9696      if (euid == 0) { 
    97         // we are running with root permissions 
     97        // we are running with root permissions, always default to system db 
     98        use_system_db = true; 
     99      } 
     100      else { 
     101        // for non-root use system db only if libnsssysinit is enabled 
     102        std::ifstream f; 
     103        f.open("/etc/pki/nssdb/pkcs11.txt"); 
     104        if (f.is_open()) { 
     105          while (!f.eof()) { 
     106            string line; 
     107            getline(f, line); 
     108            boost::algorithm::trim(line); 
     109            if (line.empty()) 
     110              continue; 
     111            if (line[0] == '#') 
     112              continue; 
     113            if (line == "library=libnsssysinit.so") { 
     114              use_system_db = 1; 
     115              break; 
     116            } 
     117          } 
     118          f.close(); 
     119        } 
     120 
     121        if (!use_system_db) { 
     122          getenv_result = getenv("HOME"); 
     123          if (!getenv_result) { 
     124            cout << "environment variable HOME not set, cannot use automatic dbdir\n"; 
     125            return 1; 
     126          } 
     127          db_directory = getenv_result; 
     128          db_directory += "/.pki/nssdb/"; 
     129        } 
     130      } 
     131 
     132      if (use_system_db) { 
    98133        db_directory = "/etc/pki/nssdb/"; 
    99134      } 
    100       else { 
    101         getenv_result = getenv("HOME"); 
    102         if (!getenv_result) { 
    103           cout << "environment variable HOME not set, cannot use automatic dbdir\n"; 
    104           return 1; 
    105         } 
    106         db_directory = getenv_result; 
    107         db_directory += "/.pki/nssdb/"; 
    108       } 
     135 
    109136      struct stat stat_info; 
    110137      int stat_result = stat(db_directory.c_str(), &stat_info); 
     
    114141        return 1; 
    115142      } 
     143 
    116144      string nssdb = "sql:" + db_directory; 
    117145      cout << env_name << "=" << nssdb << "\n"; 
Note: See TracChangeset for help on using the changeset viewer.