diff options
Diffstat (limited to 'src/out-default.c')
| -rw-r--r-- | src/out-default.c | 79 |
1 files changed, 1 insertions, 78 deletions
diff --git a/src/out-default.c b/src/out-default.c index 676a677..5d4b6fc 100644 --- a/src/out-default.c +++ b/src/out-default.c | |||
| @@ -39,46 +39,7 @@ | |||
| 39 | #include "strbuf.h" | 39 | #include "strbuf.h" |
| 40 | #include "time64.h" | 40 | #include "time64.h" |
| 41 | #include "hashtable.h" | 41 | #include "hashtable.h" |
| 42 | 42 | #include "common.h" | |
| 43 | #define MAC_EPOCH 978307200 | ||
| 44 | |||
| 45 | static size_t dtostr(char *buf, size_t bufsize, double realval) | ||
| 46 | { | ||
| 47 | int slen = 0; | ||
| 48 | if (isnan(realval)) { | ||
| 49 | slen = snprintf(buf, bufsize, "nan"); | ||
| 50 | } else if (isinf(realval)) { | ||
| 51 | slen = snprintf(buf, bufsize, "%cinfinity", (realval > 0.0) ? '+' : '-'); | ||
| 52 | } else if (realval == 0.0f) { | ||
| 53 | slen = snprintf(buf, bufsize, "0.0"); | ||
| 54 | } else { | ||
| 55 | slen = snprintf(buf, bufsize, "%.*g", 17, realval); | ||
| 56 | if (slen < 0) { | ||
| 57 | return 0; | ||
| 58 | } | ||
| 59 | if (!buf || bufsize == 0) { | ||
| 60 | return (size_t)slen; | ||
| 61 | } | ||
| 62 | size_t len = (size_t)slen; | ||
| 63 | if (len >= bufsize) { | ||
| 64 | len = bufsize - 1; | ||
| 65 | } | ||
| 66 | size_t i = 0; | ||
| 67 | for (i = 0; i < len; i++) { | ||
| 68 | if (buf[i] == ',') { | ||
| 69 | buf[i] = '.'; | ||
| 70 | break; | ||
| 71 | } else if (buf[i] == '.') { | ||
| 72 | break; | ||
| 73 | } | ||
| 74 | } | ||
| 75 | return len; | ||
| 76 | } | ||
| 77 | if (slen < 0) { | ||
| 78 | return 0; | ||
| 79 | } | ||
| 80 | return (size_t)slen; | ||
| 81 | } | ||
| 82 | 43 | ||
| 83 | static plist_err_t node_to_string(node_t node, bytearray_t **outbuf, uint32_t depth, uint32_t indent, int partial_data) | 44 | static plist_err_t node_to_string(node_t node, bytearray_t **outbuf, uint32_t depth, uint32_t indent, int partial_data) |
| 84 | { | 45 | { |
| @@ -313,44 +274,6 @@ static plist_err_t node_to_string(node_t node, bytearray_t **outbuf, uint32_t de | |||
| 313 | return PLIST_ERR_SUCCESS; | 274 | return PLIST_ERR_SUCCESS; |
| 314 | } | 275 | } |
| 315 | 276 | ||
| 316 | #define PO10i_LIMIT (INT64_MAX/10) | ||
| 317 | |||
| 318 | /* based on https://stackoverflow.com/a/4143288 */ | ||
| 319 | static int num_digits_i(int64_t i) | ||
| 320 | { | ||
| 321 | int n; | ||
| 322 | int64_t po10; | ||
| 323 | n=1; | ||
| 324 | if (i < 0) { | ||
| 325 | i = (i == INT64_MIN) ? INT64_MAX : -i; | ||
| 326 | n++; | ||
| 327 | } | ||
| 328 | po10=10; | ||
| 329 | while (i>=po10) { | ||
| 330 | n++; | ||
| 331 | if (po10 > PO10i_LIMIT) break; | ||
| 332 | po10*=10; | ||
| 333 | } | ||
| 334 | return n; | ||
| 335 | } | ||
| 336 | |||
| 337 | #define PO10u_LIMIT (UINT64_MAX/10) | ||
| 338 | |||
| 339 | /* based on https://stackoverflow.com/a/4143288 */ | ||
| 340 | static int num_digits_u(uint64_t i) | ||
| 341 | { | ||
| 342 | int n; | ||
| 343 | uint64_t po10; | ||
| 344 | n=1; | ||
| 345 | po10=10; | ||
| 346 | while (i>=po10) { | ||
| 347 | n++; | ||
| 348 | if (po10 > PO10u_LIMIT) break; | ||
| 349 | po10*=10; | ||
| 350 | } | ||
| 351 | return n; | ||
| 352 | } | ||
| 353 | |||
| 354 | static plist_err_t _node_estimate_size(node_t node, uint64_t *size, uint32_t depth, uint32_t indent, int partial_data, hashtable_t *visited) | 277 | static plist_err_t _node_estimate_size(node_t node, uint64_t *size, uint32_t depth, uint32_t indent, int partial_data, hashtable_t *visited) |
| 355 | { | 278 | { |
| 356 | plist_data_t data; | 279 | plist_data_t data; |
