rem: unsigned long val;  if (*num != '-' && *num != '+') error (EXIT_FAILURE, 0, _("%s: `+' or `-' expected after delimeter"), str);  if (xstrtoul (num + 1, NULL, 10, &val, "") != LONGINT_OK || val > UINT_MAX) error (EXIT_FAILURE, 0, _("%s: integer expected after `%c'"), str, *num); p->offset = (unsigned int) val;  if (*num == '-') p->offset = -p->offset;
add: if (xstrtoimax (num, NULL, 10, &p->offset, "") != LONGINT_OK) error (EXIT_FAILURE, 0, _("%s: integer expected after delimiter"), str);
context: check_for_offset (struct control *p, const char *str, const char *num){  unsigned long val;  if (*num != '-' && *num != '+')    error (EXIT_FAILURE, 0, _("%s: `+' or `-' expected after delimeter"), str);  if (xstrtoul (num + 1, NULL, 10, &val, "") != LONGINT_OK      || val > UINT_MAX)    error (EXIT_FAILURE, 0, _("%s: integer expected after `%c'"), str, *num);  p->offset = (unsigned int) val;  if (*num == '-')    p->offset = -p->offset;}