Code review changes: Renamed function and added some documentation about what the function does and why

This commit is contained in:
Christopher Gilbert 2016-08-30 20:32:30 +01:00
parent a91bca7937
commit 68bd463bea
2 changed files with 32 additions and 6 deletions

View File

@ -53,9 +53,22 @@ void version()
exit(0);
}
void setEnv()
/*
The equivalent of setlocale(LC_ALL, C) is called before any user code is run.
If the user has an invalid environment setting then it is possible for the call
to set locale to fail, so there are only two possible actions, the first is to
throw a runtime exception and cause the program to quit (default behaviour),
or the second is to modify the environment to something sensible (least
surprising behaviour).
The follow code produces the least surprising behaviour. It will use the user
specified default locale if it is valid, and if not then it will modify the
environment the process is running in to use a sensible default. This also means
that users do not need to install language packs for their OS.
*/
void setDefaultOrCLocale()
{
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
#if __unix__
if (!std::setlocale(LC_ALL, ""))
{
setenv("LC_ALL", "C", 1);
@ -67,7 +80,7 @@ enum Mode { Binary, Hex, Assembly, ParseTree, Disassemble };
int main(int argc, char** argv)
{
setEnv();
setDefaultOrCLocale();
unsigned optimise = 1;
string infile;
Mode mode = Hex;

View File

@ -27,9 +27,22 @@
using namespace std;
void setEnv()
/*
The equivalent of setlocale(LC_ALL, C) is called before any user code is run.
If the user has an invalid environment setting then it is possible for the call
to set locale to fail, so there are only two possible actions, the first is to
throw a runtime exception and cause the program to quit (default behaviour),
or the second is to modify the environment to something sensible (least
surprising behaviour).
The follow code produces the least surprising behaviour. It will use the user
specified default locale if it is valid, and if not then it will modify the
environment the process is running in to use a sensible default. This also means
that users do not need to install language packs for their OS.
*/
void setDefaultOrCLocale()
{
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
#if __unix__
if (!std::setlocale(LC_ALL, ""))
{
setenv("LC_ALL", "C", 1);
@ -39,7 +52,7 @@ void setEnv()
int main(int argc, char** argv)
{
setEnv();
setDefaultOrCLocale();
dev::solidity::CommandLineInterface cli;
if (!cli.parseArguments(argc, argv))
return 1;