예제 #1
0
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);
}
예제 #2
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);
}