| 435 | } |
| 436 | |
| 437 | void md_job_log_append(md_job_t *job, const char *type, |
| 438 | const char *status, const char *detail) |
| 439 | { |
| 440 | md_json_t *entry; |
| 441 | char ts[APR_RFC822_DATE_LEN]; |
| 442 | |
| 443 | entry = md_json_create(job->p); |
| 444 | apr_rfc822_date(ts, apr_time_now()); |
| 445 | md_json_sets(ts, entry, MD_KEY_WHEN, NULL); |
| 446 | md_json_sets(type, entry, MD_KEY_TYPE, NULL); |
| 447 | if (status) md_json_sets(status, entry, MD_KEY_STATUS, NULL); |
| 448 | if (detail) md_json_sets(detail, entry, MD_KEY_DETAIL, NULL); |
| 449 | if (!job->log) job->log = md_json_create(job->p); |
| 450 | md_json_insertj(entry, 0, job->log, MD_KEY_ENTRIES, NULL); |
| 451 | md_json_limita(job->max_log, job->log, MD_KEY_ENTRIES, NULL); |
| 452 | job->dirty = 1; |
| 453 | } |
| 454 | |
| 455 | typedef struct { |
| 456 | md_job_t *job; |
no test coverage detected