/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.
*/
#ifndef mod_md_md_util_h #define mod_md_md_util_h
#include <stdio.h> #include <apr_file_io.h>
struct apr_array_header_t; struct apr_table_t;
/**************************************************************************************************/ /* pool utils */
/** * Init the data to empty, overwriting any content.
*/ void md_data_null(md_data_t *d);
/** * Create a new md_data_t, providing `len` bytes allocated from pool `p`.
*/
md_data_t *md_data_pmake(apr_size_t len, apr_pool_t *p); /** * Initialize md_data_t 'd', providing `len` bytes allocated from pool `p`.
*/ void md_data_pinit(md_data_t *d, apr_size_t len, apr_pool_t *p); /** * Initialize md_data_t 'd', by borrowing 'len' bytes in `data` without copying. * `d` will not take ownership.
*/ void md_data_init(md_data_t *d, constchar *data, apr_size_t len);
/** * Initialize md_data_t 'd', by borrowing the NUL-terminated `str`. * `d` will not take ownership.
*/ void md_data_init_str(md_data_t *d, constchar *str);
/** * Free any present data and clear (NULL) it. Passing NULL is permitted.
*/ void md_data_clear(md_data_t *d);
/** * In an array of pointers, remove all entries == elem. Returns the number * of entries removed.
*/ int md_array_remove(struct apr_array_header_t *a, void *elem);
/* * Remove the ith entry from the array. * @return != 0 iff an entry was removed, e.g. idx was not outside range
*/ int md_array_remove_at(struct apr_array_header_t *a, int idx);
/**************************************************************************************************/ /* string related */ char *md_util_str_tolower(char *s);
/** * Return != 0 iff array is either NULL or empty
*/ int md_array_is_empty(conststruct apr_array_header_t *array);
int md_array_str_index(conststruct apr_array_header_t *array, constchar *s, int start, int case_sensitive);
int md_array_str_eq(conststruct apr_array_header_t *a1, conststruct apr_array_header_t *a2, int case_sensitive);
/** * Create a new array with duplicates removed.
*/ struct apr_array_header_t *md_array_str_compact(apr_pool_t *p, struct apr_array_header_t *src, int case_sensitive);
/** * Create a new array with all occurrences of <exclude> removed.
*/ struct apr_array_header_t *md_array_str_remove(apr_pool_t *p, struct apr_array_header_t *src, constchar *exclude, int case_sensitive);
int md_array_str_add_missing(struct apr_array_header_t *dest, struct apr_array_header_t *src, int case_sensitive);
/**************************************************************************************************/ /* process execution */
/**************************************************************************************************/ /* dns name check */
/** * Is a host/domain name using allowed characters. Not a wildcard. * @param domain name to check * @param need_fqdn iff != 0, check that domain contains '.' * @return != 0 iff domain looks like a non-wildcard, legal DNS domain name.
*/ int md_dns_is_name(apr_pool_t *p, constchar *domain, int need_fqdn);
/** * Check if the given domain is a valid wildcard DNS name, e.g. *.example.org * @param domain name to check * @return != 0 iff domain is a DNS wildcard.
*/ int md_dns_is_wildcard(apr_pool_t *p, constchar *domain);
/** * Determine iff pattern matches domain, including case-ignore and wildcard domains. * It is assumed that both names follow dns syntax. * @return != 0 iff pattern matches domain
*/ int md_dns_matches(constchar *pattern, constchar *domain);
/** * Create a new array with the minimal set out of the given domain names that match all * of them. If none of the domains is a wildcard, only duplicates are removed. * If domains contain a wildcard, any name matching the wildcard will be removed.
*/ struct apr_array_header_t *md_dns_make_minimal(apr_pool_t *p, struct apr_array_header_t *domains);
/** * Determine if the given domains cover the name, including wildcard matching. * @return != 0 iff name is matched by list of domains
*/ int md_dns_domains_match(const apr_array_header_t *domains, constchar *name);
/** * @return != 0 iff `name` is matched by a wildcard pattern in `domains`
*/ int md_is_wild_match(const apr_array_header_t *domains, constchar *name);
/**************************************************************************************************/ /* file system related */
/** * Remove a file/directory and all files/directories contain up to max_level. If max_level == 0, * only an empty directory or a file can be removed.
*/
apr_status_t md_util_rm_recursive(constchar *fpath, apr_pool_t *p, int max_level);
/** * Depth first traversal of directory tree starting at path.
*/
apr_status_t md_util_tree_do(md_util_fdo_cb *cb, void *baton, apr_pool_t *p, constchar *path, int follow_links);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.