http_aux.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2002-2003 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* This structure defines the static area where gethostbyname()
* stores the hostent data that it returns to the caller.
*/
static struct {
} hostinfo;
int h_errno;
/* Very stripped-down gethostbyname() */
struct hostent *
gethostbyname(const char *nam)
{
if (get_default_fs() == NULL) {
return (NULL);
}
return (NULL);
}
}
}
#define SKIP_SPACE(_p) \
{ \
char _c; \
p++; \
if (_c == '\0') \
goto next_line; \
}
#define SKIP_TOKEN(_p) \
{ \
char _c; \
p++; \
if (_c == '\0') \
goto next_line; \
}
{ \
_p++; \
*_p = '\0'; \
}
#define BUFSZ 1024
static in_addr_t
{
FILE *h;
char *l, *p, *s;
return ((in_addr_t)-1);
}
(void) fclose(h);
return ((in_addr_t)-1);
}
TRIM_LINE(l);
p = l;
SKIP_SPACE(p);
if (first_token) {
SKIP_TOKEN(p);
*p++ = '\0';
goto next_token;
}
s = (char *)nam;
if (*p++ == *s++) {
while ((c = *s++) == *p && c != '\0')
p++;
goto match;
}
SKIP_TOKEN(p);
goto next_token;
(void) fclose(h);
return (inet_addr((const char *)l));
}
static in_addr_t
{
char c;
/*
* Collect number up to ``.''.
* Values are specified as for C:
* 0x=hex, 0=octal, other=decimal.
*/
if (*cp == '0') {
else
base = 8;
}
while ((c = *cp) != 0) {
if (isdigit(c)) {
if ((c - '0') >= base)
break;
cp++;
continue;
}
cp++;
continue;
}
break;
}
if (*cp == '.') {
/*
* Internet format:
* a.b.c.d
* a.b.c (with c treated as 16-bits)
* a.b (with b treated as 24 bits)
*/
return ((in_addr_t)-1);
goto again;
}
/*
* Check for trailing characters.
*/
return ((in_addr_t)-1);
/*
* Concoct the address according to
* the number of parts specified.
*/
switch (n) {
case 1: /* a -- 32 bits */
break;
case 2: /* a.b -- 8.24 bits */
break;
case 3: /* a.b.c -- 8.8.16 bits */
break;
case 4: /* a.b.c.d -- 8.8.8.8 bits */
break;
default:
return ((in_addr_t)-1);
}
return (val);
}