bincimap

Log | Files | Refs | LICENSE

commit 7002ba9598d3f65892e98b8a42780dd9c30548f8
parent 2c02aac9f9ccd703a93e585c8ee45ead3e73e022
Author: andreaha <andreaha@b31fe1f4-c0d1-0310-8000-a34f4ae90293>
Date:   Sun,  7 Mar 2004 21:36:57 +0000

- Fixed a mistake with handling the new command line parser. The
  precedence of global config, command line arguments and local config
  are now identical to that in 1.2.6.


git-svn-id: file:///home/cwright/convert/bincimap/trunk@61 b31fe1f4-c0d1-0310-8000-a34f4ae90293

Diffstat:
Mbincimap.spec.in | 5+++++
Mconfigure.in | 2+-
Msrc/session-initialize-bincimap-up.cc | 3+++
Msrc/session-initialize-bincimapd.cc | 3+++
Msrc/session.cc | 17+++++++++--------
Msrc/session.h | 3+++
6 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/bincimap.spec.in b/bincimap.spec.in @@ -189,6 +189,11 @@ install man/bincimap.conf.5 $MAN/man5 #----------------------------------------------------------------------- %changelog +* Sun Mar 07 2004 Andreas Aardal Hanssen <andreas-binc@bincimap.org> +- Fixed a mistake with handling the new command line parser. The + precedence of global config, command line arguments and local config + are now identical to that in 1.2.6. + * Thu Mar 04 2004 Andreas Aardal Hanssen <andreas-binc@bincimap.org> - configure.in now also searches correctly for the OpenSSL include path. diff --git a/configure.in b/configure.in @@ -10,7 +10,7 @@ dnl USA. dnl Process this file with autoconf to produce a configure script. dnl AC_PREREQ(2.57) -AC_INIT(bincimap, 1.2.7beta4, andreas-binc@bincimap.org) +AC_INIT(bincimap, 1.2.7beta5, andreas-binc@bincimap.org) AC_CONFIG_SRCDIR([config.h.in]) AM_CONFIG_HEADER([config.h]) AM_INIT_AUTOMAKE diff --git a/src/session-initialize-bincimap-up.cc b/src/session-initialize-bincimap-up.cc @@ -127,6 +127,9 @@ bool Session::initialize(int argc, char *argv[]) // Read configuration settings session.initConfig(); + // Let the command line args override the global settings. + session.assignCommandLineArgs(); + // log settings string ipenv = session.globalconfig["Log"]["ip environment variable"]; // Initialize logger diff --git a/src/session-initialize-bincimapd.cc b/src/session-initialize-bincimapd.cc @@ -90,6 +90,9 @@ bool Session::initialize(int argc, char *argv[]) if (!session.parseRequestLine(argc, argv)) return false; + // Assign command line arguments to global config. + session.assignCommandLineArgs(); + // log settings string ipenv = session.globalconfig["Log"]["ip environment variable"]; // Initialize logger diff --git a/src/session.cc b/src/session.cc @@ -172,10 +172,9 @@ int Session::getReadBytes(void) const return readbytes; } +//---------------------------------------------------------------------- bool Session::parseRequestLine(int argc, char * argv[]) { - CommandLineArgs args; - args.addOptional("h|?|help", "Display this help screen", true); args.addOptional("v|version", "Display the version of Binc IMAP", true); args.addOptional("s|ssl", "Toggle enabling of SSL", true); @@ -214,8 +213,14 @@ bool Session::parseRequestLine(int argc, char * argv[]) command.ssl = args["ssl"] == "yes" ? true : false; command.configfile = args["conf"]; - string tmp; + unparsedArgs = argv + args.argc(); + return true; +} + +//---------------------------------------------------------------------- +void Session::assignCommandLineArgs(void) +{ if (args.hasArg("allow-plain")) globalconfig["Authentication"]["allow plain auth in non ssl"] = args["allow-plain"]; @@ -227,7 +232,7 @@ bool Session::parseRequestLine(int argc, char * argv[]) if (args.hasArg("logtype")) globalconfig["Log"]["type"] = args["logtype"]; - + if (args.hasArg("ip-variable")) globalconfig["Log"]["environment ip variable"] = args["ip-variable"]; @@ -281,10 +286,6 @@ bool Session::parseRequestLine(int argc, char * argv[]) if (args.hasArg("verify-peer")) globalconfig["SSL"]["verify peer"] = args["verify-peer"]; - - unparsedArgs = argv + args.argc(); - - return true; } //---------------------------------------------------------------------- diff --git a/src/session.h b/src/session.h @@ -40,6 +40,7 @@ #include <string> #include <vector> #include <map> +#include "argparser.h" namespace Binc { @@ -74,6 +75,7 @@ namespace Binc { std::map<std::string, std::map<std::string, std::string> > globalconfig; std::map<std::string, std::map<std::string, std::string> > localconfig; + CommandLineArgs args; int timeout() const; @@ -88,6 +90,7 @@ namespace Binc { void exportToEnv(void); void importFromEnv(void); bool parseRequestLine(int argc, char * argv[]); + void assignCommandLineArgs(void); int getWriteBytes(void) const; int getReadBytes(void) const; void addWriteBytes(int);