Source
static zbx_mock_error_t ts_get_time(const char *text, int *hours, int *minutes, int *seconds, const char **pnext)
/*
** Zabbix
** Copyright (C) 2001-2023 Zabbix SIA
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
**
** 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 General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**/
/* output formats */
/******************************************************************************
* *
* Purpose: finds the next character after numeric time component *
* *
* Parameters: text - [IN] the text *
* *
* Return value: text after the time component *
* *
* Comments: If the first character is not a digit the source text is *
* returned. *
* *
******************************************************************************/
static const char *ts_get_component_end(const char *text)
{
while (0 != isdigit(*text))
text++;
return text;
}
/******************************************************************************
* *
* Purpose: parses year, month and day from date component having *
* YYYY-MM-DD format *
* *
* Parameters: text - [IN] the text *
* year - [OUT] the year *
* month - [OUT] the month *
* day - [OUT] the day *
* pnext - [OUT] text after date component *
* *
* Return value: ZBX_MOCK_SUCCESS - the date was parsed successfully *
* ZBX_MOCK_NOT_A_TIMESTAMP - invalid date format *
* *
* Comments: The year, month, day limits are not validated. *
* *
******************************************************************************/
static zbx_mock_error_t ts_get_date(const char *text, int *year, int *month, int *day, const char **pnext)
{
const char *year_end, *month_end, *day_end;
int value_year, value_month, value_day;
year_end = ts_get_component_end(text);
if (year_end - text != 4 || '-' != *year_end)
return ZBX_MOCK_NOT_A_TIMESTAMP;
month_end = ts_get_component_end(year_end + 1);
if (2 > month_end - year_end || 3 < month_end - year_end || '-' != *month_end)
return ZBX_MOCK_NOT_A_TIMESTAMP;
day_end = ts_get_component_end(month_end + 1);
if (2 > day_end - month_end || 3 < day_end - month_end)
return ZBX_MOCK_NOT_A_TIMESTAMP;