--- deliantra/server/include/cfperl.h 2007/05/27 23:14:37 1.67 +++ deliantra/server/include/cfperl.h 2007/05/28 03:47:44 1.71 @@ -240,15 +240,6 @@ add ('\n'); } - //TODO//temporary, used only for saving body locations - void put (const char *k, int v) - { - add (k); - add (' '); - add (sint32 (v)); - add ('\n'); - } - template void put_string (keyword k, const T &v) { @@ -280,32 +271,35 @@ void put (keyword k, double v) { - char buf [128]; - - snprintf (buf, 128, "%.7g", v); - - put (k, (const char *)buf); + force (MAX_KEYWORD_LEN + 2 + 32); + fadd (keyword_str [k], keyword_len [k]); + fadd (' '); + falloc (sprintf (ptr, "%.7g", v)); + fadd ('\n'); } void put_(keyword k, sint64 v) { - add (keyword_str [k], keyword_len [k]); - add (' '); + force (MAX_KEYWORD_LEN + 2 + sint64_digits); + fadd (keyword_str [k], keyword_len [k]); + fadd (' '); add (v); - add ('\n'); + fadd ('\n'); } void put_(keyword k, sint32 v) { - add (keyword_str [k], keyword_len [k]); - add (' '); + force (MAX_KEYWORD_LEN + 2 + sint32_digits); + fadd (keyword_str [k], keyword_len [k]); + fadd (' '); add (v); - add ('\n'); + fadd ('\n'); } void put (keyword kbeg, keyword kend, const shstr &v) { - add (keyword_str [kbeg], keyword_len [kbeg]); add ('\n'); + force (MAX_KEYWORD_LEN + 1); + fadd (keyword_str [kbeg], keyword_len [kbeg]); fadd ('\n'); if (expect_true (v)) { @@ -313,7 +307,8 @@ add ('\n'); } - add (keyword_str [kend], keyword_len [kend]); add ('\n'); + force (MAX_KEYWORD_LEN + 1); + fadd (keyword_str [kend], keyword_len [kend]); fadd ('\n'); } void put (keyword k, float v) { put (k, (double)v); } @@ -390,8 +385,8 @@ bool get_bool () const { return *value_nn == '1'; } sint32 get_sint32 () const; - sint64 get_sint64 () const { return atoll (value_nn); } - double get_double () const { return atof (value_nn); } + sint64 get_sint64 () const { return strtoll (value_nn, 0, 10); } + double get_double () const { return strtod (value_nn, 0); } void get (float &v) { v = get_double (); } void get (double &v) { v = get_double (); }