static __inline int _citrus_EUC_parse_variable(_EUCEncodingInfo *ei, const void *var, size_t lenvar __unused) { char *e; const char *v; int x; /* parse variable string */ if (!var) return (EFTYPE); v = (const char *)var; while (*v == ' ' || *v == '\t') ++v; ei->mb_cur_max = 1; for (x = 0; x < 4; ++x) { ei->count[x] = (int)_bcs_strtol(v, (char **)&e, 0); if (v == e || !(v = e) || ei->count[x] < 1 || ei->count[x] > 4) { return (EFTYPE); } if (ei->mb_cur_max < ei->count[x]) ei->mb_cur_max = ei->count[x]; while (*v == ' ' || *v == '\t') ++v; ei->bits[x] = (int)_bcs_strtol(v, (char **)&e, 0); if (v == e || !(v = e)) { return (EFTYPE); } while (*v == ' ' || *v == '\t') ++v; } ei->mask = (int)_bcs_strtol(v, (char **)&e, 0); if (v == e || !(v = e)) { return (EFTYPE); } return (0); }
static int _getdewey(int dewey[], char *cp) { int i, n; for (n = 0, i = 0; i < MAXDEWEY; i++) { if (*cp == '\0') break; if (*cp == '.') cp++; if (*cp < '0' || '9' < *cp) return (0); dewey[n++] = (int)_bcs_strtol(cp, &cp, 10); } return (n); }