| 62 | } |
| 63 | |
| 64 | static const char *duration_print(apr_pool_t *p, int roughly, apr_interval_time_t duration) |
| 65 | { |
| 66 | const char *s = "", *sep = ""; |
| 67 | long days = (long)(apr_time_sec(duration) / MD_SECS_PER_DAY); |
| 68 | int rem = (int)(apr_time_sec(duration) % MD_SECS_PER_DAY); |
| 69 | |
| 70 | s = roughly? "~" : ""; |
| 71 | if (days > 0) { |
| 72 | s = apr_psprintf(p, "%s%ld days", s, days); |
| 73 | if (roughly) return s; |
| 74 | sep = " "; |
| 75 | } |
| 76 | if (rem > 0) { |
| 77 | int hours = (rem / MD_SECS_PER_HOUR); |
| 78 | rem = (rem % MD_SECS_PER_HOUR); |
| 79 | if (hours > 0) { |
| 80 | s = apr_psprintf(p, "%s%s%d hours", s, sep, hours); |
| 81 | if (roughly) return s; |
| 82 | sep = " "; |
| 83 | } |
| 84 | if (rem > 0) { |
| 85 | int minutes = (rem / 60); |
| 86 | rem = (rem % 60); |
| 87 | if (minutes > 0) { |
| 88 | s = apr_psprintf(p, "%s%s%d minutes", s, sep, minutes); |
| 89 | if (roughly) return s; |
| 90 | sep = " "; |
| 91 | } |
| 92 | if (rem > 0) { |
| 93 | s = apr_psprintf(p, "%s%s%d seconds", s, sep, rem); |
| 94 | if (roughly) return s; |
| 95 | sep = " "; |
| 96 | } |
| 97 | } |
| 98 | } |
| 99 | else if (days == 0) { |
| 100 | s = "0 seconds"; |
| 101 | if (duration != 0) { |
| 102 | s = apr_psprintf(p, "%d ms", (int)apr_time_msec(duration)); |
| 103 | } |
| 104 | } |
| 105 | return s; |
| 106 | } |
| 107 | |
| 108 | const char *md_duration_print(apr_pool_t *p, apr_interval_time_t duration) |
| 109 | { |
no outgoing calls
no test coverage detected