Source
xxxxxxxxxx
/* if range is specified, extract the end value, otherwise set end value equal to the start value */
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/******************************************************************************
* *
* Purpose: Checks if the specified character is allowed whitespace character *
* that can be used before or after iprange definition. *
* *
* Parameters: value - [IN] character to check *
* *
* Return value: SUCCEED - value is whitespace character *
* FAIL - otherwise *
* *
******************************************************************************/
static int iprange_is_whitespace_character(unsigned char value)
{
switch (value)
{
case ' ':
case '\r':
case '\n':
case '\t':
return SUCCEED;
default:
return FAIL;
}
}
/******************************************************************************
* *
* Purpose: calculates length of address data without trailing whitespace *
* *
******************************************************************************/
static size_t iprange_address_length(const char *address)
{
size_t len;
const char *ptr;
len = strlen(address);
ptr = address + len - 1;
while (0 < len && SUCCEED == iprange_is_whitespace_character(*ptr))
{
ptr--;
len--;
}
return len;