Update some instances of file movement in the ISC release.
This commit is contained in:
parent
6592086aee
commit
4649cc23c5
|
@ -40,8 +40,8 @@ MROBJDIR!=cd $(.CURDIR)/../minires; \
|
||||||
printf "xxx: .MAKE\n\t@echo \$${.OBJDIR}\n" | ${MAKE} -s -f-
|
printf "xxx: .MAKE\n\t@echo \$${.OBJDIR}\n" | ${MAKE} -s -f-
|
||||||
|
|
||||||
CPPFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../includes
|
CPPFLAGS+= -I${.CURDIR}/.. -I${.CURDIR}/../includes
|
||||||
LDADD= ${COBJDIR}/libdhcp.a ${OMOBJDIR}/libomapi.a ${MROBJDIR}/libminires.a
|
LDADD= ${OMOBJDIR}/libomapi.a ${COBJDIR}/libdhcp.a ${MROBJDIR}/libminires.a
|
||||||
DPADD= ${COBJDIR}/libdhcp.a ${OMOBJDIR}/libomapi.a ${MROBJDIR}/libminires.a
|
DPADD= ${OMOBJDIR}/libomapi.a ${COBJDIR}/libdhcp.a ${MROBJDIR}/libminires.a
|
||||||
|
|
||||||
.if exists(${.CURDIR}/../../Makefile.inc)
|
.if exists(${.CURDIR}/../../Makefile.inc)
|
||||||
.include "${.CURDIR}/../../Makefile.inc"
|
.include "${.CURDIR}/../../Makefile.inc"
|
||||||
|
|
|
@ -33,7 +33,7 @@ MAN = dhcp-options.5 dhcp-eval.5
|
||||||
LIB = dhcp
|
LIB = dhcp
|
||||||
SRCS = raw.c parse.c nit.c icmp.c dispatch.c conflex.c upf.c bpf.c socket.c \
|
SRCS = raw.c parse.c nit.c icmp.c dispatch.c conflex.c upf.c bpf.c socket.c \
|
||||||
lpf.c dlpi.c packet.c tr.c ethernet.c memory.c print.c options.c \
|
lpf.c dlpi.c packet.c tr.c ethernet.c memory.c print.c options.c \
|
||||||
inet.c convert.c tree.c tables.c hash.c alloc.c fddi.c \
|
inet.c tree.c tables.c alloc.c fddi.c \
|
||||||
inet_addr.c dns.c resolv.c execute.c discover.c comapi.c
|
inet_addr.c dns.c resolv.c execute.c discover.c comapi.c
|
||||||
|
|
||||||
MKLINT= no
|
MKLINT= no
|
||||||
|
|
|
@ -1,193 +0,0 @@
|
||||||
/* convert.c
|
|
||||||
|
|
||||||
Safe copying of option values into and out of the option buffer, which
|
|
||||||
can't be assumed to be aligned. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1996-1999 Internet Software Consortium.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of The Internet Software Consortium nor the names
|
|
||||||
* of its contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
|
|
||||||
* CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
||||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
|
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This software has been written for the Internet Software Consortium
|
|
||||||
* by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
|
|
||||||
* To learn more about the Internet Software Consortium, see
|
|
||||||
* ``http://www.isc.org/''. To learn more about Vixie Enterprises,
|
|
||||||
* see ``http://www.vix.com''. To learn more about Nominum, Inc., see
|
|
||||||
* ``http://www.nominum.com''.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lint
|
|
||||||
static char copyright[] =
|
|
||||||
"$Id: convert.c,v 1.1.1.4 2000/04/22 07:11:32 mellon Exp $ Copyright (c) 1996-1999 The Internet Software Consortium. All rights reserved.\n";
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
#include "dhcpd.h"
|
|
||||||
|
|
||||||
u_int32_t getULong (buf)
|
|
||||||
const unsigned char *buf;
|
|
||||||
{
|
|
||||||
unsigned long ibuf;
|
|
||||||
|
|
||||||
memcpy (&ibuf, buf, sizeof (u_int32_t));
|
|
||||||
return ntohl (ibuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t getLong (buf)
|
|
||||||
const unsigned char *buf;
|
|
||||||
{
|
|
||||||
long ibuf;
|
|
||||||
|
|
||||||
memcpy (&ibuf, buf, sizeof (int32_t));
|
|
||||||
return ntohl (ibuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
u_int32_t getUShort (buf)
|
|
||||||
const unsigned char *buf;
|
|
||||||
{
|
|
||||||
unsigned short ibuf;
|
|
||||||
|
|
||||||
memcpy (&ibuf, buf, sizeof (u_int16_t));
|
|
||||||
return ntohs (ibuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t getShort (buf)
|
|
||||||
const unsigned char *buf;
|
|
||||||
{
|
|
||||||
short ibuf;
|
|
||||||
|
|
||||||
memcpy (&ibuf, buf, sizeof (int16_t));
|
|
||||||
return ntohs (ibuf);
|
|
||||||
}
|
|
||||||
|
|
||||||
void putULong (obuf, val)
|
|
||||||
unsigned char *obuf;
|
|
||||||
u_int32_t val;
|
|
||||||
{
|
|
||||||
u_int32_t tmp = htonl (val);
|
|
||||||
memcpy (obuf, &tmp, sizeof tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void putLong (obuf, val)
|
|
||||||
unsigned char *obuf;
|
|
||||||
int32_t val;
|
|
||||||
{
|
|
||||||
int32_t tmp = htonl (val);
|
|
||||||
memcpy (obuf, &tmp, sizeof tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void putUShort (obuf, val)
|
|
||||||
unsigned char *obuf;
|
|
||||||
u_int32_t val;
|
|
||||||
{
|
|
||||||
u_int16_t tmp = htons (val);
|
|
||||||
memcpy (obuf, &tmp, sizeof tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void putShort (obuf, val)
|
|
||||||
unsigned char *obuf;
|
|
||||||
int32_t val;
|
|
||||||
{
|
|
||||||
int16_t tmp = htons (val);
|
|
||||||
memcpy (obuf, &tmp, sizeof tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void putUChar (obuf, val)
|
|
||||||
unsigned char *obuf;
|
|
||||||
u_int32_t val;
|
|
||||||
{
|
|
||||||
*obuf = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
u_int32_t getUChar (obuf)
|
|
||||||
const unsigned char *obuf;
|
|
||||||
{
|
|
||||||
return obuf [0];
|
|
||||||
}
|
|
||||||
|
|
||||||
int converted_length (buf, base, width)
|
|
||||||
const unsigned char *buf;
|
|
||||||
unsigned int base;
|
|
||||||
unsigned int width;
|
|
||||||
{
|
|
||||||
u_int32_t number;
|
|
||||||
u_int32_t column;
|
|
||||||
int power = 1;
|
|
||||||
u_int32_t newcolumn = base;
|
|
||||||
|
|
||||||
if (base > 16)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (width == 1)
|
|
||||||
number = getUChar (buf);
|
|
||||||
else if (width == 2)
|
|
||||||
number = getUShort (buf);
|
|
||||||
else if (width == 4)
|
|
||||||
number = getULong (buf);
|
|
||||||
|
|
||||||
do {
|
|
||||||
column = newcolumn;
|
|
||||||
|
|
||||||
if (number < column)
|
|
||||||
return power;
|
|
||||||
power++;
|
|
||||||
newcolumn = column * base;
|
|
||||||
/* If we wrap around, it must be the next power of two up. */
|
|
||||||
} while (newcolumn > column);
|
|
||||||
|
|
||||||
return power;
|
|
||||||
}
|
|
||||||
|
|
||||||
int binary_to_ascii (outbuf, inbuf, base, width)
|
|
||||||
unsigned char *outbuf;
|
|
||||||
const unsigned char *inbuf;
|
|
||||||
unsigned int base;
|
|
||||||
unsigned int width;
|
|
||||||
{
|
|
||||||
u_int32_t number;
|
|
||||||
static char h2a [] = "0123456789abcdef";
|
|
||||||
int power = converted_length (inbuf, base, width);
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
if (base > 16)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (width == 1)
|
|
||||||
number = getUChar (inbuf);
|
|
||||||
else if (width == 2)
|
|
||||||
number = getUShort (inbuf);
|
|
||||||
else if (width == 4)
|
|
||||||
number = getULong (inbuf);
|
|
||||||
|
|
||||||
for (i = power - 1 ; i >= 0; i--) {
|
|
||||||
outbuf [i] = h2a [number % base];
|
|
||||||
number /= base;
|
|
||||||
}
|
|
||||||
|
|
||||||
return power;
|
|
||||||
}
|
|
|
@ -1,284 +0,0 @@
|
||||||
/* hash.c
|
|
||||||
|
|
||||||
Routines for manipulating hash tables... */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 1995-2000 Internet Software Consortium.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of The Internet Software Consortium nor the names
|
|
||||||
* of its contributors may be used to endorse or promote products derived
|
|
||||||
* from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
|
|
||||||
* CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
||||||
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
|
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This software has been written for the Internet Software Consortium
|
|
||||||
* by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
|
|
||||||
* To learn more about the Internet Software Consortium, see
|
|
||||||
* ``http://www.isc.org/''. To learn more about Vixie Enterprises,
|
|
||||||
* see ``http://www.vix.com''. To learn more about Nominum, Inc., see
|
|
||||||
* ``http://www.nominum.com''.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef lint
|
|
||||||
static char copyright[] =
|
|
||||||
"$Id: hash.c,v 1.4 2000/06/24 06:50:02 mellon Exp $ Copyright (c) 1995-2000 The Internet Software Consortium. All rights reserved.\n";
|
|
||||||
#endif /* not lint */
|
|
||||||
|
|
||||||
#include "dhcpd.h"
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
static int do_hash PROTO ((const unsigned char *, unsigned, unsigned));
|
|
||||||
static int do_case_hash PROTO ((const unsigned char *, unsigned, unsigned));
|
|
||||||
|
|
||||||
struct hash_table *new_hash (hash_reference referencer,
|
|
||||||
hash_dereference dereferencer,
|
|
||||||
int casep)
|
|
||||||
{
|
|
||||||
struct hash_table *rv = new_hash_table (DEFAULT_HASH_SIZE, MDL);
|
|
||||||
if (!rv)
|
|
||||||
return rv;
|
|
||||||
memset (&rv -> buckets [0], 0,
|
|
||||||
DEFAULT_HASH_SIZE * sizeof (struct hash_bucket *));
|
|
||||||
rv -> referencer = referencer;
|
|
||||||
rv -> dereferencer = dereferencer;
|
|
||||||
if (casep) {
|
|
||||||
rv -> cmp = casecmp;
|
|
||||||
rv -> do_hash = do_case_hash;
|
|
||||||
} else {
|
|
||||||
rv -> cmp = (hash_comparator_t)memcmp;
|
|
||||||
rv -> do_hash = do_hash;
|
|
||||||
}
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int do_case_hash (name, len, size)
|
|
||||||
const unsigned char *name;
|
|
||||||
unsigned len;
|
|
||||||
unsigned size;
|
|
||||||
{
|
|
||||||
register int accum = 0;
|
|
||||||
register const unsigned char *s = (const unsigned char *)name;
|
|
||||||
int i = len;
|
|
||||||
register unsigned c;
|
|
||||||
|
|
||||||
while (i--) {
|
|
||||||
/* Make the hash case-insensitive. */
|
|
||||||
c = *s++;
|
|
||||||
if (isascii (c) && isupper (c))
|
|
||||||
c = tolower (c);
|
|
||||||
|
|
||||||
/* Add the character in... */
|
|
||||||
accum = (accum << 1) + c;
|
|
||||||
|
|
||||||
/* Add carry back in... */
|
|
||||||
while (accum > 65535) {
|
|
||||||
accum = (accum & 65535) + (accum >> 16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return accum % size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int do_hash (name, len, size)
|
|
||||||
const unsigned char *name;
|
|
||||||
unsigned len;
|
|
||||||
unsigned size;
|
|
||||||
{
|
|
||||||
register int accum = 0;
|
|
||||||
register const unsigned char *s = (const unsigned char *)name;
|
|
||||||
int i = len;
|
|
||||||
|
|
||||||
while (i--) {
|
|
||||||
/* Add the character in... */
|
|
||||||
accum = (accum << 1) + *s++;
|
|
||||||
|
|
||||||
/* Add carry back in... */
|
|
||||||
while (accum > 65535) {
|
|
||||||
accum = (accum & 65535) + (accum >> 16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return accum % size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void add_hash (table, name, len, pointer, file, line)
|
|
||||||
struct hash_table *table;
|
|
||||||
unsigned len;
|
|
||||||
const unsigned char *name;
|
|
||||||
hashed_object_t *pointer;
|
|
||||||
const char *file;
|
|
||||||
int line;
|
|
||||||
{
|
|
||||||
int hashno;
|
|
||||||
struct hash_bucket *bp;
|
|
||||||
void *foo;
|
|
||||||
|
|
||||||
if (!table)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!len)
|
|
||||||
len = strlen ((const char *)name);
|
|
||||||
|
|
||||||
hashno = (*table -> do_hash) (name, len, table -> hash_count);
|
|
||||||
bp = new_hash_bucket (file, line);
|
|
||||||
|
|
||||||
if (!bp) {
|
|
||||||
log_error ("Can't add %s to hash table.", name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
bp -> name = name;
|
|
||||||
if (table -> referencer) {
|
|
||||||
foo = &bp -> value;
|
|
||||||
(*(table -> referencer)) (foo, pointer, file, line);
|
|
||||||
} else
|
|
||||||
bp -> value = pointer;
|
|
||||||
bp -> next = table -> buckets [hashno];
|
|
||||||
bp -> len = len;
|
|
||||||
table -> buckets [hashno] = bp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void delete_hash_entry (table, name, len, file, line)
|
|
||||||
struct hash_table *table;
|
|
||||||
unsigned len;
|
|
||||||
const unsigned char *name;
|
|
||||||
const char *file;
|
|
||||||
int line;
|
|
||||||
{
|
|
||||||
int hashno;
|
|
||||||
struct hash_bucket *bp, *pbp = (struct hash_bucket *)0;
|
|
||||||
void *foo;
|
|
||||||
|
|
||||||
if (!table)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!len)
|
|
||||||
len = strlen ((const char *)name);
|
|
||||||
|
|
||||||
hashno = (*table -> do_hash) (name, len, table -> hash_count);
|
|
||||||
|
|
||||||
/* Go through the list looking for an entry that matches;
|
|
||||||
if we find it, delete it. */
|
|
||||||
for (bp = table -> buckets [hashno]; bp; bp = bp -> next) {
|
|
||||||
if ((!bp -> len &&
|
|
||||||
!strcmp ((const char *)bp -> name, (const char *)name)) ||
|
|
||||||
(bp -> len == len &&
|
|
||||||
!(*table -> cmp) (bp -> name, name, len))) {
|
|
||||||
if (pbp) {
|
|
||||||
pbp -> next = bp -> next;
|
|
||||||
} else {
|
|
||||||
table -> buckets [hashno] = bp -> next;
|
|
||||||
}
|
|
||||||
if (table -> dereferencer) {
|
|
||||||
foo = &bp -> value;
|
|
||||||
(*(table -> dereferencer)) (foo, file, line);
|
|
||||||
}
|
|
||||||
free_hash_bucket (bp, file, line);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
pbp = bp; /* jwg, 9/6/96 - nice catch! */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int hash_lookup (vp, table, name, len, file, line)
|
|
||||||
hashed_object_t **vp;
|
|
||||||
struct hash_table *table;
|
|
||||||
const unsigned char *name;
|
|
||||||
unsigned len;
|
|
||||||
const char *file;
|
|
||||||
int line;
|
|
||||||
{
|
|
||||||
int hashno;
|
|
||||||
struct hash_bucket *bp;
|
|
||||||
|
|
||||||
if (!table)
|
|
||||||
return 0;
|
|
||||||
if (!len)
|
|
||||||
len = strlen ((const char *)name);
|
|
||||||
|
|
||||||
hashno = (*table -> do_hash) (name, len, table -> hash_count);
|
|
||||||
|
|
||||||
for (bp = table -> buckets [hashno]; bp; bp = bp -> next) {
|
|
||||||
if (len == bp -> len
|
|
||||||
&& !(*table -> cmp) (bp -> name, name, len)) {
|
|
||||||
if (table -> referencer)
|
|
||||||
(*table -> referencer) (vp, bp -> value,
|
|
||||||
file, line);
|
|
||||||
else
|
|
||||||
*vp = bp -> value;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int hash_foreach (struct hash_table *table, hash_foreach_func func)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
struct hash_bucket *bp, *next;
|
|
||||||
int count = 0;
|
|
||||||
|
|
||||||
if (!table)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
for (i = 0; i < table -> hash_count; i++) {
|
|
||||||
bp = table -> buckets [i];
|
|
||||||
while (bp) {
|
|
||||||
next = bp -> next;
|
|
||||||
(*func) (bp -> name, bp -> len, bp -> value);
|
|
||||||
bp = next;
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
int casecmp (const void *v1, const void *v2, unsigned long len)
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
const char *s = v1;
|
|
||||||
const char *t = v2;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
{
|
|
||||||
int c1, c2;
|
|
||||||
if (isascii (s [i]) && isupper (s [i]))
|
|
||||||
c1 = tolower (s [i]);
|
|
||||||
else
|
|
||||||
c1 = s [i];
|
|
||||||
|
|
||||||
if (isascii (t [i]) && isupper (t [i]))
|
|
||||||
c2 = tolower (t [i]);
|
|
||||||
else
|
|
||||||
c2 = t [i];
|
|
||||||
|
|
||||||
if (c1 < c2)
|
|
||||||
return -1;
|
|
||||||
if (c1 > c2)
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
HASH_FUNCTIONS (group, const char *, struct group_object)
|
|
||||||
HASH_FUNCTIONS (universe, const char *, struct universe)
|
|
||||||
HASH_FUNCTIONS (option, const char *, struct option)
|
|
|
@ -31,7 +31,8 @@
|
||||||
|
|
||||||
LIB = omapi
|
LIB = omapi
|
||||||
SRCS = protocol.c buffer.c alloc.c result.c connection.c errwarn.c \
|
SRCS = protocol.c buffer.c alloc.c result.c connection.c errwarn.c \
|
||||||
listener.c dispatch.c generic.c support.c handle.c message.c
|
listener.c dispatch.c generic.c support.c handle.c message.c \
|
||||||
|
auth.c convert.c hash.c
|
||||||
|
|
||||||
MKLINT= no
|
MKLINT= no
|
||||||
MKPIC= no
|
MKPIC= no
|
||||||
|
|
Loading…
Reference in New Issue