NSIS-ka
A free C++ implementation of NSIS protocols

Changeset 4216


Ignore:
Timestamp:
Aug 6, 2009, 3:02:49 PM (8 years ago)
Author:
bless
Message:
  • added commandline option for config file name (required option)
  • changes to new location of top level configfile
Location:
qos-nslp/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • qos-nslp/trunk/src/qosnslpd.cpp

    r4210 r4216  
    2525 * - starts optional modules like UDS API
    2626 */
    27 #include <unistd.h> // for getcwd() in readconfig
     27#include <unistd.h> // for getopt()
    2828#include <signal.h>
    2929
     
    102102
    103103
     104void parse_commandline(int argc, char *argv[]) {
     105        std::string usage("usage: qosnslpd -c config_file\n");
     106
     107        string configfilename;
     108        /*
     109         * Parse command line options.
     110         */
     111        while ( true ) {
     112                int c = getopt(argc, argv, "c:");
     113
     114                if ( c == -1 )
     115                        break;
     116
     117                switch ( c ) {
     118                        case 'c':
     119                                configfilename = optarg;
     120                                break;
     121                        default:
     122                                std::cerr << usage;
     123                                exit(1);
     124                }
     125        }
     126
     127        if ( configfilename == "" ) {
     128                std::cerr << usage;
     129                exit(1);
     130        }
     131        else
     132        {
     133                gconf.getparref<string>(gistconf_conffilename)= configfilename;
     134        }
     135
     136        argv += optind;
     137        argc -= optind;
     138
     139        /*
     140         * Only non-option arguments are left. The first is in argv[0].
     141         */
     142        if ( argc > 0 ) {
     143                std::cerr << usage;
     144                exit(1);
     145        }
     146}
     147
     148
    104149/** Main function of the QoS NSLP.  */
    105150int main(int argc, char** argv)
     
    135180                gconf.setRepository();
    136181
    137                 // TODO check for configuration file name parameter from command line
    138                 // read_cmdline();
     182                // check for configuration file name parameter from command line
     183                parse_commandline(argc, argv);
    139184
    140185                // read all config values from config file
     
    143188                  cfgfile.load(gconf.getparref<string>(gistconf_conffilename));
    144189                }
    145 
    146190                catch(configParException& cfgerr)
    147191                {
     
    150194                  return 1;
    151195                }
    152  
     196                catch(configfile_error& cfgerr)
     197                {
     198                  ERRLog("qosnslpd", "Error occurred while reading the configuration file: " << cfgerr.what());
     199                  cerr << cfgerr.what() << endl << "Exiting." << endl;
     200                  return 1;
     201                }
     202
    153203                AddressList *addresses = new AddressList();
    154204
  • qos-nslp/trunk/src/start-qosnslp

    r4116 r4216  
    22
    33LOGDIR=testing/logs
    4 LINKEDFILES="loadmodules intercept flush ../nsis-ka.conf"
     4LINKEDFILES="loadmodules intercept flush"
     5CONFDIR="../../etc"
    56
    67if [ \! -d $LOGDIR ]; then   mkdir -p $LOGDIR; fi
     
    2526trap handle_sigint SIGINT
    2627
    27 ./qosnslp $* 2>&1 | tee -i $LOGDIR/test-`date +"%F-%T"`-`hostname`-$$
     28./qosnslp -c ${CONFDIR}/nsis-ka.conf $* 2>&1 | tee -i $LOGDIR/test-`date +"%F-%T"`-`hostname`-$$
    2829
    2930./flush
Note: See TracChangeset for help on using the changeset viewer.