| 441 | } |
| 442 | |
| 443 | static apr_status_t fs_fload(void **pvalue, md_store_fs_t *s_fs, const char *fpath, |
| 444 | md_store_group_t group, md_store_vtype_t vtype, |
| 445 | apr_pool_t *p, apr_pool_t *ptemp) |
| 446 | { |
| 447 | apr_status_t rv; |
| 448 | const char *pass; |
| 449 | apr_size_t pass_len; |
| 450 | |
| 451 | if (pvalue != NULL) { |
| 452 | switch (vtype) { |
| 453 | case MD_SV_TEXT: |
| 454 | rv = md_text_fread8k((const char **)pvalue, p, fpath); |
| 455 | break; |
| 456 | case MD_SV_JSON: |
| 457 | rv = md_json_readf((md_json_t **)pvalue, p, fpath); |
| 458 | break; |
| 459 | case MD_SV_CERT: |
| 460 | rv = md_cert_fload((md_cert_t **)pvalue, p, fpath); |
| 461 | break; |
| 462 | case MD_SV_PKEY: |
| 463 | get_pass(&pass, &pass_len, s_fs, group); |
| 464 | rv = md_pkey_fload((md_pkey_t **)pvalue, p, pass, pass_len, fpath); |
| 465 | break; |
| 466 | case MD_SV_CHAIN: |
| 467 | rv = md_chain_fload((apr_array_header_t **)pvalue, p, fpath); |
| 468 | break; |
| 469 | default: |
| 470 | rv = APR_ENOTIMPL; |
| 471 | break; |
| 472 | } |
| 473 | md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, rv, ptemp, |
| 474 | "loading type %d from %s", vtype, fpath); |
| 475 | } |
| 476 | else { /* check for existence only */ |
| 477 | rv = md_util_is_file(fpath, p); |
| 478 | } |
| 479 | return rv; |
| 480 | } |
| 481 | |
| 482 | static apr_status_t pfs_load(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap) |
| 483 | { |
no test coverage detected