| 512 | } |
| 513 | |
| 514 | static apr_status_t mk_group_dir(const char **pdir, md_store_fs_t *s_fs, |
| 515 | md_store_group_t group, const char *name, |
| 516 | apr_pool_t *p) |
| 517 | { |
| 518 | const perms_t *perms; |
| 519 | apr_status_t rv; |
| 520 | |
| 521 | perms = gperms(s_fs, group); |
| 522 | |
| 523 | rv = fs_get_dname(pdir, &s_fs->s, group, name, p); |
| 524 | if ((APR_SUCCESS != rv) || (MD_SG_NONE == group)) goto cleanup; |
| 525 | |
| 526 | rv = md_util_is_dir(*pdir, p); |
| 527 | if (APR_STATUS_IS_ENOENT(rv)) { |
| 528 | md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, rv, p, "not a directory, creating %s", *pdir); |
| 529 | rv = apr_dir_make_recursive(*pdir, perms->dir, p); |
| 530 | if (APR_SUCCESS != rv) goto cleanup; |
| 531 | dispatch(s_fs, MD_S_FS_EV_CREATED, group, *pdir, APR_DIR, p); |
| 532 | } |
| 533 | |
| 534 | rv = apr_file_perms_set(*pdir, perms->dir); |
| 535 | md_log_perror(MD_LOG_MARK, MD_LOG_TRACE3, rv, p, "mk_group_dir %s perm set", *pdir); |
| 536 | if (APR_STATUS_IS_ENOTIMPL(rv)) { |
| 537 | rv = APR_SUCCESS; |
| 538 | } |
| 539 | cleanup: |
| 540 | if (APR_SUCCESS != rv) { |
| 541 | md_log_perror(MD_LOG_MARK, MD_LOG_ERR, rv, p, "mk_group_dir %d %s", |
| 542 | group, (*pdir? *pdir : (name? name : "(null)"))); |
| 543 | } |
| 544 | return rv; |
| 545 | } |
| 546 | |
| 547 | static apr_status_t pfs_is_newer(void *baton, apr_pool_t *p, apr_pool_t *ptemp, va_list ap) |
| 548 | { |
no test coverage detected