/* Copyright (c) The Exim Maintainers 2020 - 2022 */
/* Copyright (c) University of Cambridge 1995 - 2018 */
/* See the file NOTICE for conditions of use and distribution. */
-/* SPDX-License-Identifier: GPL-2.0-only */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
#include "../exim.h"
+
+#ifdef ROUTER_MANUALROUTE
#include "rf_functions.h"
#include "manualroute.h"
/* One of route_list or route_data must be specified */
-if ((ob->route_list == NULL && ob->route_data == NULL) ||
- (ob->route_list != NULL && ob->route_data != NULL))
+if ( !ob->route_list && !ob->route_data
+ || ob->route_list && ob->route_data)
log_write(0, LOG_PANIC_DIE|LOG_CONFIG_FOR, "%s router:\n "
"route_list or route_data (but not both) must be specified",
rblock->name);
parse_route_item(const uschar *s, const uschar **domain, const uschar **hostlist,
const uschar **options)
{
-while (*s != 0 && isspace(*s)) s++;
+Uskip_whitespace(&s);
if (domain)
{
if (!*s) return FALSE; /* missing data */
*domain = string_dequote(&s);
- while (*s && isspace(*s)) s++;
+ Uskip_whitespace(&s);
}
*hostlist = string_dequote(&s);
-while (*s && isspace(*s)) s++;
+Uskip_whitespace(&s);
*options = s;
return TRUE;
}
else
{
+ GET_OPTION("route_data");
if (!(route_item = rf_expand_data(addr, ob->route_data, &rc)))
return rc;
(void) parse_route_item(route_item, NULL, &hostlist, &options);
while (*options)
{
unsigned n;
- const uschar *s = options;
- while (*options != 0 && !isspace(*options)) options++;
+ const uschar * s = options;
+
+ Uskip_nonwhite(&options);
n = options-s;
if (Ustrncmp(s, "randomize", n) == 0) randomize = TRUE;
if (*options)
{
options++;
- while (*options != 0 && isspace(*options)) options++;
+ Uskip_whitespace(&options);
}
}
return OK;
}
-#endif /*!MACRO_PREDEF*/
+#endif /*!MACRO_PREDEF*/
+#endif /*ROUTER_MANUALROUTE*/
/* End of routers/manualroute.c */