apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Branko ─îibej <br...@xbc.nu>
Subject Proposal: new filepath API for search paths
Date Wed, 05 Feb 2003 19:58:48 GMT
I'd like to propose a new function in the apr_filepath module, to be
added for 0.9.2 and/or httpd-2.0.45:

/**
 * Split a search path defined in an environment variable (e.g., @c $PATH)
 * into separate components
 * @ingroup apr_filepath
 * @param pathelts the returned components of the search path
 * @param envvar the name of the environment variable with the search path
 * @param p the pool to allocate the array and path components from
 * @deffunc apr_status_t apr_filepath_splitenv(apr_array_header_t **pathelts, const char *envvar,
apr_pool_t *p)
 * @remark if the environment variable does not exist, the result code will
 * be @c APR_ENOENT; other codes are implementation-specific.
 */
APR_DECLARE(apr_status_t) apr_filepath_splitenv(apr_array_header_t **pathelts,
                                                const char *envvar,
                                                apr_pool_t *p);


The apr-iconv module would use this to interpret the APR_ICONV_PATH
variable in a way that's compatible with other functions that accept
paths (e.g., the returned path components would be in UTF-8 on most
Windows variants). For example, the module loading code in
iconv-module.c would look like the following, instead of the apr_strtok
based implementation we have now:

    status = apr_filepath_splitenv(&pathelts, "APR_ICONV_PATH", subpool);
    if (!status)
    {
        int i;
        char **elts = (char **)pathelts->elts;
        for (i = 0; i < pathelts->nelts; ++i)
        {
            if (iconv_getpathname(buf, elts[i], buffer, subpool) == 0)
            {
                apr_pool_destroy(subpool);
                return APR_SUCCESS;
            }
        }
    }


I have a workinng Windows and Unix implementation, but would like to get
some feedback on the proposed interface before checking in the code.

-- 
Brane ─îibej   <brane@xbc.nu>   http://www.xbc.nu/brane/


Mime
View raw message