+static int yaz_sru_decode_integer(ODR odr, const char *pname,
+ const char *valstr, int **valp,
+ Z_SRW_diagnostic **diag, int *num_diag,
+ int min_value)
+{
+ int ival;
+ if (!valstr)
+ return 0;
+ if (sscanf(valstr, "%d", &ival) != 1)
+ {
+ yaz_add_srw_diagnostic(odr, diag, num_diag,
+ YAZ_SRW_UNSUPP_PARAMETER_VALUE, pname);
+ return 0;
+ }
+ if (min_value >= 0 && ival < min_value)
+ {
+ yaz_add_srw_diagnostic(odr, diag, num_diag,
+ YAZ_SRW_UNSUPP_PARAMETER_VALUE, pname);
+ return 0;
+ }
+ *valp = odr_intdup(odr, ival);
+ return 1;
+}
+