mirror of
https://github.com/neovim/neovim.git
synced 2025-10-13 05:16:09 +00:00
env_iter: Learn delim
parameter.
This commit is contained in:
@@ -521,10 +521,11 @@ static char *remove_tail(char *path, char *pend, char *dirname)
|
||||
return pend;
|
||||
}
|
||||
|
||||
/// Iterate over colon-separated list
|
||||
/// Iterate over a delimited list.
|
||||
///
|
||||
/// @note Environment variables must not be modified during iteration.
|
||||
///
|
||||
/// @param[in] delim Delimiter character.
|
||||
/// @param[in] val Value of the environment variable to iterate over.
|
||||
/// @param[in] iter Pointer used for iteration. Must be NULL on first
|
||||
/// iteration.
|
||||
@@ -533,18 +534,19 @@ static char *remove_tail(char *path, char *pend, char *dirname)
|
||||
/// @param[out] len Location where current directory length should be saved.
|
||||
///
|
||||
/// @return Next iter argument value or NULL when iteration should stop.
|
||||
const void *vim_colon_env_iter(const char *const val,
|
||||
const void *const iter,
|
||||
const char **const dir,
|
||||
size_t *const len)
|
||||
FUNC_ATTR_NONNULL_ARG(1, 3, 4) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
const void *vim_env_iter(const char delim,
|
||||
const char *const val,
|
||||
const void *const iter,
|
||||
const char **const dir,
|
||||
size_t *const len)
|
||||
FUNC_ATTR_NONNULL_ARG(2, 4, 5) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
const char *varval = (const char *) iter;
|
||||
if (varval == NULL) {
|
||||
varval = val;
|
||||
}
|
||||
*dir = varval;
|
||||
const char *const dirend = strchr(varval, ':');
|
||||
const char *const dirend = strchr(varval, delim);
|
||||
if (dirend == NULL) {
|
||||
*len = strlen(varval);
|
||||
return NULL;
|
||||
@@ -554,10 +556,11 @@ const void *vim_colon_env_iter(const char *const val,
|
||||
}
|
||||
}
|
||||
|
||||
/// Iterate over colon-separated list in reverse order
|
||||
/// Iterate over a delimited list in reverse order.
|
||||
///
|
||||
/// @note Environment variables must not be modified during iteration.
|
||||
///
|
||||
/// @param[in] delim Delimiter character.
|
||||
/// @param[in] val Value of the environment variable to iterate over.
|
||||
/// @param[in] iter Pointer used for iteration. Must be NULL on first
|
||||
/// iteration.
|
||||
@@ -566,18 +569,19 @@ const void *vim_colon_env_iter(const char *const val,
|
||||
/// @param[out] len Location where current directory length should be saved.
|
||||
///
|
||||
/// @return Next iter argument value or NULL when iteration should stop.
|
||||
const void *vim_colon_env_iter_rev(const char *const val,
|
||||
const void *const iter,
|
||||
const char **const dir,
|
||||
size_t *const len)
|
||||
FUNC_ATTR_NONNULL_ARG(1, 3, 4) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
const void *vim_env_iter_rev(const char delim,
|
||||
const char *const val,
|
||||
const void *const iter,
|
||||
const char **const dir,
|
||||
size_t *const len)
|
||||
FUNC_ATTR_NONNULL_ARG(2, 4, 5) FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
const char *varend = (const char *) iter;
|
||||
if (varend == NULL) {
|
||||
varend = val + strlen(val) - 1;
|
||||
}
|
||||
const size_t varlen = (size_t) (varend - val) + 1;
|
||||
const char *const colon = xmemrchr(val, ':', varlen);
|
||||
const size_t varlen = (size_t)(varend - val) + 1;
|
||||
const char *const colon = xmemrchr(val, (uint8_t)delim, varlen);
|
||||
if (colon == NULL) {
|
||||
*len = varlen;
|
||||
*dir = val;
|
||||
|
Reference in New Issue
Block a user