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:
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);