diff options
author | Eliot Horowitz <eliot@10gen.com> | 2009-11-13 21:07:15 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2009-11-13 21:07:15 -0500 |
commit | ca785a040086939005a88b06fa77f9133751450e (patch) | |
tree | 710812089ab3fc3cd5d8a22d7e1f97da0226ea0c /tools | |
parent | 02dfcf62e7136b0b1dc74d9c9fe8e37a020d7b8f (diff) | |
download | mongo-ca785a040086939005a88b06fa77f9133751450e.tar.gz |
BDONObjBuilder::apendAsNumber
better fix for SERVER-423
Diffstat (limited to 'tools')
-rw-r--r-- | tools/import.cpp | 47 |
1 files changed, 1 insertions, 46 deletions
diff --git a/tools/import.cpp b/tools/import.cpp index 93b071ebd7f..9e4c44bf0f9 100644 --- a/tools/import.cpp +++ b/tools/import.cpp @@ -39,53 +39,8 @@ class Import : public Tool { const char * _sep; bool _ignoreBlanks; - bool _appendNumber( BSONObjBuilder& b , const string& fieldName , const string& data ){ - if ( data.size() == 0 ) - return false; - - unsigned int pos=0; - if ( data[0] == '-' ) - pos++; - - bool hasDec = false; - - for ( ; pos<data.size(); pos++ ){ - if ( isdigit(data[pos]) ) - continue; - - if ( data[pos] == '.' ){ - if ( hasDec ) - return false; - hasDec = true; - continue; - } - - return false; - } - - if ( hasDec ){ - double d = atof( data.c_str() ); - b.append( fieldName.c_str() , d ); - return true; - } - - if ( data.size() < 8 ){ - b.append( fieldName , atoi( data.c_str() ) ); - return true; - } - - try { - long long num = boost::lexical_cast<long long>( data ); - b.append( fieldName.c_str() , num ); - return true; - } - catch(bad_lexical_cast &){ - return false; - } - } - void _append( BSONObjBuilder& b , const string& fieldName , const string& data ){ - if ( _appendNumber( b , fieldName , data ) ) + if ( b.appendAsNumber( fieldName , data ) ) return; if ( _ignoreBlanks && data.size() == 0 ) |