⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 res_debug.c

📁 bind 9.3结合mysql数据库
💻 C
📖 第 1 页 / 共 3 页
字号:
	while (isdigit((unsigned char)*cp))		secs = secs * 10 + (*cp++ - '0');	if (*cp == '.') {		/* decimal seconds */		cp++;		if (isdigit((unsigned char)*cp)) {			secsfrac = (*cp++ - '0') * 100;			if (isdigit((unsigned char)*cp)) {				secsfrac += (*cp++ - '0') * 10;				if (isdigit((unsigned char)*cp)) {					secsfrac += (*cp++ - '0');				}			}		}	}	while (!isspace((unsigned char)*cp))	/* if any trailing garbage */		cp++;	while (isspace((unsigned char)*cp))		cp++; fndhemi:	switch (*cp) {	case 'N': case 'n':	case 'E': case 'e':		retval = ((unsigned)1<<31)			+ (((((deg * 60) + min) * 60) + secs) * 1000)			+ secsfrac;		break;	case 'S': case 's':	case 'W': case 'w':		retval = ((unsigned)1<<31)			- (((((deg * 60) + min) * 60) + secs) * 1000)			- secsfrac;		break;	default:		retval = 0;	/* invalid value -- indicates error */		break;	}	switch (*cp) {	case 'N': case 'n':	case 'S': case 's':		*which = 1;	/* latitude */		break;	case 'E': case 'e':	case 'W': case 'w':		*which = 2;	/* longitude */		break;	default:		*which = 0;	/* error */		break;	}	cp++;			/* skip the hemisphere */	while (!isspace((unsigned char)*cp))	/* if any trailing garbage */		cp++;	while (isspace((unsigned char)*cp))	/* move to next field */		cp++;	*latlonstrptr = cp;	return (retval);}/* converts a zone file representation in a string to an RDATA on-the-wire * representation. */intloc_aton(ascii, binary)	const char *ascii;	u_char *binary;{	const char *cp, *maxcp;	u_char *bcp;	u_int32_t latit = 0, longit = 0, alt = 0;	u_int32_t lltemp1 = 0, lltemp2 = 0;	int altmeters = 0, altfrac = 0, altsign = 1;	u_int8_t hp = 0x16;	/* default = 1e6 cm = 10000.00m = 10km */	u_int8_t vp = 0x13;	/* default = 1e3 cm = 10.00m */	u_int8_t siz = 0x12;	/* default = 1e2 cm = 1.00m */	int which1 = 0, which2 = 0;	cp = ascii;	maxcp = cp + strlen(ascii);	lltemp1 = latlon2ul(&cp, &which1);	lltemp2 = latlon2ul(&cp, &which2);	switch (which1 + which2) {	case 3:			/* 1 + 2, the only valid combination */		if ((which1 == 1) && (which2 == 2)) { /* normal case */			latit = lltemp1;			longit = lltemp2;		} else if ((which1 == 2) && (which2 == 1)) { /* reversed */			longit = lltemp1;			latit = lltemp2;		} else {	/* some kind of brokenness */			return (0);		}		break;	default:		/* we didn't get one of each */		return (0);	}	/* altitude */	if (*cp == '-') {		altsign = -1;		cp++;	}    	if (*cp == '+')		cp++;	while (isdigit((unsigned char)*cp))		altmeters = altmeters * 10 + (*cp++ - '0');	if (*cp == '.') {		/* decimal meters */		cp++;		if (isdigit((unsigned char)*cp)) {			altfrac = (*cp++ - '0') * 10;			if (isdigit((unsigned char)*cp)) {				altfrac += (*cp++ - '0');			}		}	}	alt = (10000000 + (altsign * (altmeters * 100 + altfrac)));	while (!isspace((unsigned char)*cp) && (cp < maxcp)) /* if trailing garbage or m */		cp++;	while (isspace((unsigned char)*cp) && (cp < maxcp))		cp++;	if (cp >= maxcp)		goto defaults;	siz = precsize_aton(&cp);		while (!isspace((unsigned char)*cp) && (cp < maxcp))	/* if trailing garbage or m */		cp++;	while (isspace((unsigned char)*cp) && (cp < maxcp))		cp++;	if (cp >= maxcp)		goto defaults;	hp = precsize_aton(&cp);	while (!isspace((unsigned char)*cp) && (cp < maxcp))	/* if trailing garbage or m */		cp++;	while (isspace((unsigned char)*cp) && (cp < maxcp))		cp++;	if (cp >= maxcp)		goto defaults;	vp = precsize_aton(&cp); defaults:	bcp = binary;	*bcp++ = (u_int8_t) 0;	/* version byte */	*bcp++ = siz;	*bcp++ = hp;	*bcp++ = vp;	PUTLONG(latit,bcp);	PUTLONG(longit,bcp);	PUTLONG(alt,bcp);    	return (16);		/* size of RR in octets */}/* takes an on-the-wire LOC RR and formats it in a human readable format. */const char *loc_ntoa(binary, ascii)	const u_char *binary;	char *ascii;{	static const char *error = "?";	static char tmpbuf[sizeof"1000 60 60.000 N 1000 60 60.000 W -12345678.00m 90000000.00m 90000000.00m 90000000.00m"];	const u_char *cp = binary;	int latdeg, latmin, latsec, latsecfrac;	int longdeg, longmin, longsec, longsecfrac;	char northsouth, eastwest;	const char *altsign;	int altmeters, altfrac;	const u_int32_t referencealt = 100000 * 100;	int32_t latval, longval, altval;	u_int32_t templ;	u_int8_t sizeval, hpval, vpval, versionval;    	char *sizestr, *hpstr, *vpstr;	versionval = *cp++;	if (ascii == NULL)		ascii = tmpbuf;	if (versionval) {		(void) sprintf(ascii, "; error: unknown LOC RR version");		return (ascii);	}	sizeval = *cp++;	hpval = *cp++;	vpval = *cp++;	GETLONG(templ, cp);	latval = (templ - ((unsigned)1<<31));	GETLONG(templ, cp);	longval = (templ - ((unsigned)1<<31));	GETLONG(templ, cp);	if (templ < referencealt) { /* below WGS 84 spheroid */		altval = referencealt - templ;		altsign = "-";	} else {		altval = templ - referencealt;		altsign = "";	}	if (latval < 0) {		northsouth = 'S';		latval = -latval;	} else		northsouth = 'N';	latsecfrac = latval % 1000;	latval = latval / 1000;	latsec = latval % 60;	latval = latval / 60;	latmin = latval % 60;	latval = latval / 60;	latdeg = latval;	if (longval < 0) {		eastwest = 'W';		longval = -longval;	} else		eastwest = 'E';	longsecfrac = longval % 1000;	longval = longval / 1000;	longsec = longval % 60;	longval = longval / 60;	longmin = longval % 60;	longval = longval / 60;	longdeg = longval;	altfrac = altval % 100;	altmeters = (altval / 100);	sizestr = strdup(precsize_ntoa(sizeval));	hpstr = strdup(precsize_ntoa(hpval));	vpstr = strdup(precsize_ntoa(vpval));	sprintf(ascii,	    "%d %.2d %.2d.%.3d %c %d %.2d %.2d.%.3d %c %s%d.%.2dm %sm %sm %sm",		latdeg, latmin, latsec, latsecfrac, northsouth,		longdeg, longmin, longsec, longsecfrac, eastwest,		altsign, altmeters, altfrac,		(sizestr != NULL) ? sizestr : error,		(hpstr != NULL) ? hpstr : error,		(vpstr != NULL) ? vpstr : error);	if (sizestr != NULL)		free(sizestr);	if (hpstr != NULL)		free(hpstr);	if (vpstr != NULL)		free(vpstr);	return (ascii);}/* Return the number of DNS hierarchy levels in the name. */intdn_count_labels(const char *name) {	int i, len, count;	len = strlen(name);	for (i = 0, count = 0; i < len; i++) {		/* XXX need to check for \. or use named's nlabels(). */		if (name[i] == '.')			count++;	}	/* don't count initial wildcard */	if (name[0] == '*')		if (count)			count--;	/* don't count the null label for root. */	/* if terminating '.' not found, must adjust */	/* count to include last label */	if (len > 0 && name[len-1] != '.')		count++;	return (count);}/*  * Make dates expressed in seconds-since-Jan-1-1970 easy to read.   * SIG records are required to be printed like this, by the Secure DNS RFC. */char *p_secstodate (u_long secs) {	/* XXX nonreentrant */	static char output[15];		/* YYYYMMDDHHMMSS and null */	time_t clock = secs;	struct tm *time;#ifdef HAVE_TIME_R	struct tm res;		time = gmtime_r(&clock, &res);#else	time = gmtime(&clock);#endif	time->tm_year += 1900;	time->tm_mon += 1;	sprintf(output, "%04d%02d%02d%02d%02d%02d",		time->tm_year, time->tm_mon, time->tm_mday,		time->tm_hour, time->tm_min, time->tm_sec);	return (output);}u_int16_tres_nametoclass(const char *buf, int *successp) {	unsigned long result;	char *endptr;	int success;	result = sym_ston(__p_class_syms, buf, &success);	if (success)		goto done;	if (strncasecmp(buf, "CLASS", 5) != 0 ||	    !isdigit((unsigned char)buf[5]))		goto done;	errno = 0;	result = strtoul(buf + 5, &endptr, 10);	if (errno == 0 && *endptr == '\0' && result <= 0xffffU)		success = 1; done:	if (successp)		*successp = success;	return (result);}u_int16_tres_nametotype(const char *buf, int *successp) {	unsigned long result;	char *endptr;	int success;	result = sym_ston(__p_type_syms, buf, &success);	if (success)		goto done;	if (strncasecmp(buf, "type", 4) != 0 ||	    !isdigit((unsigned char)buf[4]))		goto done;	errno = 0;	result = strtoul(buf + 4, &endptr, 10);	if (errno == 0 && *endptr == '\0' && result <= 0xffffU)		success = 1; done:	if (successp)		*successp = success;	return (result);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -