Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sebastian Schrader
Kea
Commits
3d5df0f8
Commit
3d5df0f8
authored
Jan 21, 2015
by
Francis Dupont
Browse files
[master] removed use of exit() in D2 for version command line argument processing (#3616)
parent
28025bfb
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/bin/d2/d_controller.cc
View file @
3d5df0f8
// Copyright (C) 2013-201
4
Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013-201
5
Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
...
...
@@ -140,14 +140,16 @@ DControllerBase::parseArgs(int argc, char* argv[])
break
;
case
'v'
:
// Print just Kea version and exit
std
::
cout
<<
getVersion
(
false
)
<<
std
::
endl
;
exit
(
EXIT_SUCCESS
);
// gather Kea version and throw so main() can catch and return
// rather than calling exit() here which disrupts gtest.
isc_throw
(
VersionMessage
,
getVersion
(
false
));
break
;
case
'V'
:
// Print extended Kea version and exit
std
::
cout
<<
getVersion
(
true
)
<<
std
::
endl
;
exit
(
EXIT_SUCCESS
);
// gather Kea version and throw so main() can catch and return
// rather than calling exit() here which disrupts gtest.
isc_throw
(
VersionMessage
,
getVersion
(
true
));
break
;
case
'c'
:
// config file name
...
...
src/bin/d2/d_controller.h
View file @
3d5df0f8
...
...
@@ -39,6 +39,18 @@ public:
isc
::
Exception
(
file
,
line
,
what
)
{
};
};
/// @brief Exception used to convey version info upwards.
/// Since command line argument parsing is done as part of
/// DControllerBase::launch(), it uses this exception to propagate
/// version information up to main(), when command line argument
/// -v or -V is given.
class
VersionMessage
:
public
isc
::
Exception
{
public:
VersionMessage
(
const
char
*
file
,
size_t
line
,
const
char
*
what
)
:
isc
::
Exception
(
file
,
line
,
what
)
{
};
};
/// @brief Exception thrown when the application process fails.
class
ProcessInitError
:
public
isc
::
Exception
{
public:
...
...
@@ -366,7 +378,8 @@ protected:
/// @param argc is the number of command line arguments supplied
/// @param argv is the array of string (char *) command line arguments
///
/// @throw throws InvalidUsage when there are usage errors.
/// @throw InvalidUsage when there are usage errors.
/// @throw VersionMessage if the -v or -V arguments is given.
void
parseArgs
(
int
argc
,
char
*
argv
[]);
/// @brief Instantiates the application process and then initializes it.
...
...
src/bin/d2/main.cc
View file @
3d5df0f8
// Copyright (C) 2013 Internet Systems Consortium, Inc. ("ISC")
// Copyright (C) 2013
, 2015
Internet Systems Consortium, Inc. ("ISC")
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
...
...
@@ -40,6 +40,8 @@ int main(int argc, char* argv[]) {
try
{
// 'false' value disables test mode.
controller
->
launch
(
argc
,
argv
,
false
);
}
catch
(
const
VersionMessage
&
ex
)
{
std
::
cout
<<
ex
.
what
()
<<
std
::
endl
;
}
catch
(
const
isc
::
Exception
&
ex
)
{
std
::
cerr
<<
"Service failed:"
<<
ex
.
what
()
<<
std
::
endl
;
ret
=
EXIT_FAILURE
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment