Changeset 8179
- Timestamp:
- Apr 8, 2009, 5:25:17 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/bencode.c
r8160 r8179 817 817 } 818 818 819 #if 0820 tr_benc*821 tr_bencDictAddReal( tr_benc * dict, const char * key, double d )822 {823 ccc824 char buf[128];825 char * locale;826 827 /* the json spec requires a '.' decimal point regardless of locale */828 locale = tr_strdup( setlocale ( LC_NUMERIC, NULL ) );829 setlocale( LC_NUMERIC, "POSIX" );830 tr_snprintf( buf, sizeof( buf ), "%f", d );831 setlocale( LC_NUMERIC, locale );832 tr_free( locale );833 834 return tr_bencDictAddStr( dict, key, buf );835 }836 #endif837 838 819 tr_benc* 839 820 tr_bencDictAddList( tr_benc * dict, … … 1109 1090 saveBoolFunc( const tr_benc * val, void * evbuf ) 1110 1091 { 1111 evbuffer_add_printf( evbuf, "i%de", val->val.b?1:0 ); 1092 if( val->val.b ) 1093 evbuffer_add( evbuf, "i1e", 3 ); 1094 else 1095 evbuffer_add( evbuf, "i0e", 3 ); 1112 1096 } 1113 1097 … … 1145 1129 void * evbuf ) 1146 1130 { 1147 evbuffer_add _printf( evbuf, "d");1131 evbuffer_add( evbuf, "d", 1 ); 1148 1132 } 1149 1133 … … 1152 1136 void * evbuf ) 1153 1137 { 1154 evbuffer_add _printf( evbuf, "l");1138 evbuffer_add( evbuf, "l", 1 ); 1155 1139 } 1156 1140 … … 1159 1143 void * evbuf ) 1160 1144 { 1161 evbuffer_add _printf( evbuf, "e");1145 evbuffer_add( evbuf, "e", 1 ); 1162 1146 } 1163 1147 … … 1251 1235 jsonIndent( struct jsonWalk * data ) 1252 1236 { 1237 int i; 1238 char buf[1024], *pch=buf; 1253 1239 const int width = tr_list_size( data->parents ) * 4; 1254 1240 1255 evbuffer_add_printf( data->out, "\n%*.*s", width, width, " " ); 1241 *pch++ = '\n'; 1242 for( i=0; i<width; ++i ) 1243 *pch++ = ' '; 1244 1245 evbuffer_add( data->out, buf, pch-buf ); 1256 1246 } 1257 1247 … … 1269 1259 const int i = parentState->childIndex++; 1270 1260 if( !( i % 2 ) ) 1271 evbuffer_add _printf( data->out, ": ");1261 evbuffer_add( data->out, ": ", 2 ); 1272 1262 else 1273 1263 { 1274 evbuffer_add _printf( data->out, ", ");1264 evbuffer_add( data->out, ", ", 2 ); 1275 1265 jsonIndent( data ); 1276 1266 } … … 1281 1271 { 1282 1272 ++parentState->childIndex; 1283 evbuffer_add _printf( data->out, ", ");1273 evbuffer_add( data->out, ", ", 2 ); 1284 1274 jsonIndent( data ); 1285 1275 break; … … 1325 1315 struct jsonWalk * data = vdata; 1326 1316 1327 evbuffer_add_printf( data->out, "%s", (val->val.b?"true":"false") ); 1317 if( val->val.b ) 1318 evbuffer_add( data->out, "true", 4 ); 1319 else 1320 evbuffer_add( data->out, "false", 5 ); 1321 1328 1322 jsonChildFunc( data ); 1329 1323 } … … 1346 1340 1347 1341 static void 1348 jsonStringFunc( const tr_benc * val, 1349 void * vdata ) 1350 { 1351 struct jsonWalk * data = vdata; 1342 jsonStringFunc( const tr_benc * val, void * vdata ) 1343 { 1344 struct jsonWalk * data = vdata; 1352 1345 const unsigned char *it, *end; 1353 1346 1354 evbuffer_add _printf( data->out, "\"");1347 evbuffer_add( data->out, "\"", 1 ); 1355 1348 for( it = (const unsigned char*)val->val.s.s, end = it + val->val.s.i; 1356 1349 it != end; ++it ) … … 1358 1351 switch( *it ) 1359 1352 { 1353 case '"': 1354 case '\\': 1360 1355 case '/': 1361 evbuffer_add_printf( data->out, "\\/" ); break;1362 1363 1356 case '\b': 1364 evbuffer_add_printf( data->out, "\\b" ); break;1365 1366 1357 case '\f': 1367 evbuffer_add_printf( data->out, "\\f" ); break;1368 1369 1358 case '\n': 1370 evbuffer_add_printf( data->out, "\\n" ); break;1371 1372 1359 case '\r': 1373 evbuffer_add_printf( data->out, "\\r" ); break; 1374 1375 case '\t': 1376 evbuffer_add_printf( data->out, "\\t" ); break; 1377 1378 case '"': 1379 evbuffer_add_printf( data->out, "\\\"" ); break; 1380 1381 case '\\': 1382 evbuffer_add_printf( data->out, "\\\\" ); break; 1360 case '\t': { 1361 char buf[2] = { '\\', *it }; 1362 evbuffer_add( data->out, buf, 2 ); 1363 break; 1364 } 1383 1365 1384 1366 default: … … 1386 1368 { 1387 1369 /*fprintf( stderr, "[%c]\n", *it );*/ 1388 evbuffer_add _printf( data->out, "%c", *it);1370 evbuffer_add( data->out, it, 1 ); 1389 1371 } 1390 1372 else … … 1404 1386 } 1405 1387 } 1406 evbuffer_add _printf( data->out, "\"");1388 evbuffer_add( data->out, "\"", 1 ); 1407 1389 jsonChildFunc( data ); 1408 1390 } … … 1415 1397 1416 1398 jsonPushParent( data, val ); 1417 evbuffer_add _printf( data->out, "{");1399 evbuffer_add( data->out, "{", 1 ); 1418 1400 if( val->val.l.count ) 1419 1401 jsonIndent( data ); … … 1428 1410 1429 1411 jsonPushParent( data, val ); 1430 evbuffer_add _printf( data->out, "[");1412 evbuffer_add( data->out, "[", 1 ); 1431 1413 if( nChildren ) 1432 1414 jsonIndent( data ); … … 1458 1440 jsonIndent( data ); 1459 1441 if( tr_bencIsDict( val ) ) 1460 evbuffer_add _printf( data->out, "}");1442 evbuffer_add( data->out, "}", 1 ); 1461 1443 else /* list */ 1462 evbuffer_add _printf( data->out, "]");1444 evbuffer_add( data->out, "]", 1 ); 1463 1445 jsonChildFunc( data ); 1464 1446 }
Note: See TracChangeset
for help on using the changeset viewer.