Browse Source

json-spirit print reals with 8 decimal places,

bitcoind help <command> instead of bitcoind <command> -?
miguelfreitas
Satoshi Nakamoto 15 years ago committed by Gavin Andresen
parent
commit
410b618d18
  1. 4
      init.cpp
  2. 2
      json/json_spirit_value.h
  3. 5
      json/json_spirit_writer_template.h
  4. 39
      rpc.cpp

4
init.cpp

@ -147,8 +147,8 @@ bool AppInit2(int argc, char* argv[])
_("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" + _("Usage:") + "\t\t\t\t\t\t\t\t\t\t\n" +
" bitcoin [options] \t " + "\n" + " bitcoin [options] \t " + "\n" +
" bitcoin [options] <command> [params]\t " + _("Send command to -server or bitcoind\n") + " bitcoin [options] <command> [params]\t " + _("Send command to -server or bitcoind\n") +
" bitcoin [options] <command> -? \t\t " + _("Get help for a command\n") + " bitcoin [options] help \t\t " + _("List commands\n") +
" bitcoin help \t\t\t " + _("List commands\n") + " bitcoin [options] help <command> \t\t " + _("Get help for a command\n") +
_("Options:\n") + _("Options:\n") +
" -conf=<file> \t " + _("Specify configuration file (default: bitcoin.conf)\n") + " -conf=<file> \t " + _("Specify configuration file (default: bitcoin.conf)\n") +
" -gen \t " + _("Generate coins\n") + " -gen \t " + _("Generate coins\n") +

2
json/json_spirit_value.h

@ -342,7 +342,7 @@ namespace json_spirit
{ {
std::ostringstream os; std::ostringstream os;
/// satoshi: tell the types by name instead of by number ///// Bitcoin: Tell the types by name instead of by number
os << "value is type " << Value_type_name[type()] << ", expected " << Value_type_name[vtype]; os << "value is type " << Value_type_name[type()] << ", expected " << Value_type_name[vtype];
throw std::runtime_error( os.str() ); throw std::runtime_error( os.str() );

5
json/json_spirit_writer_template.h

@ -124,8 +124,11 @@ namespace json_spirit
case str_type: output( value.get_str() ); break; case str_type: output( value.get_str() ); break;
case bool_type: output( value.get_bool() ); break; case bool_type: output( value.get_bool() ); break;
case int_type: output_int( value ); break; case int_type: output_int( value ); break;
case real_type: os_ << std::showpoint << std::setprecision( 16 )
/// Bitcoin: Added std::fixed and changed precision from 16 to 8
case real_type: os_ << std::showpoint << std::fixed << std::setprecision(8)
<< value.get_real(); break; << value.get_real(); break;
case null_type: os_ << "null"; break; case null_type: os_ << "null"; break;
default: assert( false ); default: assert( false );
} }

39
rpc.cpp

@ -56,10 +56,14 @@ void PrintConsole(const char* format, ...)
Value help(const Array& params, bool fHelp) Value help(const Array& params, bool fHelp)
{ {
if (fHelp || params.size() != 0) if (fHelp || params.size() > 1)
throw runtime_error( throw runtime_error(
"help\n" "help [command]\n"
"List commands."); "List commands, or get help for a command.");
string strCommand;
if (params.size() > 0)
strCommand = params[0].get_str();
string strRet; string strRet;
set<rpcfn_type> setDone; set<rpcfn_type> setDone;
@ -70,6 +74,8 @@ Value help(const Array& params, bool fHelp)
if (strMethod == "getamountreceived" || if (strMethod == "getamountreceived" ||
strMethod == "getallreceived") strMethod == "getallreceived")
continue; continue;
if (strCommand != "" && strMethod != strCommand)
continue;
try try
{ {
Array params; Array params;
@ -81,11 +87,14 @@ Value help(const Array& params, bool fHelp)
{ {
// Help text is returned in an exception // Help text is returned in an exception
string strHelp = string(e.what()); string strHelp = string(e.what());
if (strCommand == "")
if (strHelp.find('\n') != -1) if (strHelp.find('\n') != -1)
strHelp = strHelp.substr(0, strHelp.find('\n')); strHelp = strHelp.substr(0, strHelp.find('\n'));
strRet += strHelp + "\n"; strRet += strHelp + "\n";
} }
} }
if (strRet == "")
strRet = strprintf("help: unknown command: %s\n", strCommand.c_str());
strRet = strRet.substr(0,strRet.size()-1); strRet = strRet.substr(0,strRet.size()-1);
return strRet; return strRet;
} }
@ -1059,30 +1068,11 @@ int CommandLineRPC(int argc, char *argv[])
argv++; argv++;
} }
// Check that the method exists // Method
if (argc < 2) if (argc < 2)
throw runtime_error("too few parameters"); throw runtime_error("too few parameters");
string strMethod = argv[1]; string strMethod = argv[1];
if (!mapCallTable.count(strMethod))
throw runtime_error(strprintf("unknown command: %s", strMethod.c_str()));
Value result;
if (argc == 3 && strcmp(argv[2], "-?") == 0)
{
// Call help locally, help text is returned in an exception
try
{
map<string, rpcfn_type>::iterator mi = mapCallTable.find(strMethod);
Array params;
(*(*mi).second)(params, true);
}
catch (std::exception& e)
{
result = e.what();
}
}
else
{
// Parameters default to strings // Parameters default to strings
Array params; Array params;
for (int i = 2; i < argc; i++) for (int i = 2; i < argc; i++)
@ -1108,8 +1098,7 @@ int CommandLineRPC(int argc, char *argv[])
if (strMethod == "listreceivedbylabel" && n > 1) ConvertTo<bool>(params[1]); if (strMethod == "listreceivedbylabel" && n > 1) ConvertTo<bool>(params[1]);
// Execute // Execute
result = CallRPC(strMethod, params); Value result = CallRPC(strMethod, params);
}
// Print result // Print result
string strResult = (result.type() == str_type ? result.get_str() : write_string(result, true)); string strResult = (result.type() == str_type ? result.get_str() : write_string(result, true));

Loading…
Cancel
Save