public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Orphaned Packages Process <packaging-reports@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/pads] rawhide: Orphaned for 6+ weeks
Date: Wed, 22 Jul 2026 05:23:28 GMT	[thread overview]
Message-ID: <178469780826.1.10852557131615079775.rpms-pads-ddfaf23f7505@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/pads
Branch : rawhide
Commit : ddfaf23f7505ecef48df144bc248c65682aaecf0
Author : Orphaned Packages Process <packaging-reports@fedoraproject.org>
Date   : 2026-07-22T00:23:22-05:00
Stats  : +1/-17540 in 27 file(s)
URL    : https://src.fedoraproject.org/rpms/pads/c/ddfaf23f7505ecef48df144bc248c65682aaecf0?branch=rawhide

Log:
Orphaned for 6+ weeks

---
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 3d507cb..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-pads-1.2.tar.gz

diff --git a/dead.package b/dead.package
new file mode 100644
index 0000000..5204a84
--- /dev/null
+++ b/dead.package
@@ -0,0 +1 @@
+Orphaned for 6+ weeks

diff --git a/pads+vlan.patch b/pads+vlan.patch
deleted file mode 100644
index eb6b755..0000000
--- a/pads+vlan.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-diff -r -c ./src/packet.c ../pads-1.2+vlan/src/packet.c
-*** ./src/packet.c	2005-02-15 20:47:35.000000000 -0500
---- ../pads-1.2+vlan/src/packet.c	2007-08-24 10:11:59.000000000 -0400
-***************
-*** 35,59 ****
-   *		: 1 - Packet
-   * RETURN	: None!
-   * ---------------------------------------------------------- */
-  void process_eth (const struct pcap_pkthdr* pkthdr, const u_char* packet)
-  {
-      struct ether_header *ethh;		/* net/ethernet.h */
-  
-!     /* Extract the ethernet header from the packet. */
-!     ethh = (struct ether_header*) packet;
-  
-      /* Determine what type of ethernet packet this is. */
-      switch (ntohs(ethh->ether_type)) {
-  	/* IP */
-  	case ETHERTYPE_IP:
-! 	    process_ip (pkthdr, packet, sizeof(struct ether_header));
-! 	    break;
-  
-  	/* ARP */
-  	case ETHERTYPE_ARP:
-! 	    process_arp (pkthdr, packet, sizeof(struct ether_header));
-  	    break;
-! 
-  	/* Unknown Type */
-  	default:
-  	    return;
---- 35,72 ----
-   *		: 1 - Packet
-   * RETURN	: None!
-   * ---------------------------------------------------------- */
-+ 
-+ /* Update - david@vorant.com  18 June 2007
-+  * Try to detect whether the packet has an 802.1Q VLAN tag on it.  If so,
-+  * try to automatically skip the tag and treat it as regular TCP/IP traffic.
-+  * Otherwise the handler won't process the packet.  This is useful when,
-+  * for example, you are monitoring a VLAN trunk line.
-+  */
-  void process_eth (const struct pcap_pkthdr* pkthdr, const u_char* packet)
-  {
-      struct ether_header *ethh;		/* net/ethernet.h */
-+     u_char * my_packet;
-  
-!     my_packet = (u_char *)packet;
-  
-+     /* Extract the ethernet header from the packet. */
-+     ethh = (struct ether_header*) my_packet;
-+     if(ntohs(ethh->ether_type) == VLAN_ETHERTYPE) { /* strip the vlan tags */
-+       ethh = (struct ether_header*) (packet + VLAN_HDRLEN);
-+       my_packet += VLAN_HDRLEN;
-+     }
-      /* Determine what type of ethernet packet this is. */
-      switch (ntohs(ethh->ether_type)) {
-  	/* IP */
-  	case ETHERTYPE_IP:
-! 	  process_ip (pkthdr, my_packet, sizeof(struct ether_header));
-! 	  break;
-  
-  	/* ARP */
-  	case ETHERTYPE_ARP:
-! 	    process_arp (pkthdr, my_packet, sizeof(struct ether_header));
-  	    break;
-!  
-  	/* Unknown Type */
-  	default:
-  	    return;
-***************
-*** 113,120 ****
-      struct ip *iph;			/* netinet/ip.h */
-  
-      /* Extract the IP header from this packet. */
-!     iph = (struct ip*)(packet + len);
-! 
-      /* Determine what type of IP packet this is. */
-      switch (iph->ip_p) {
-  	case IPPROTO_TCP:
---- 126,132 ----
-      struct ip *iph;			/* netinet/ip.h */
-  
-      /* Extract the IP header from this packet. */
-!       iph = (struct ip*)(packet + len);
-      /* Determine what type of IP packet this is. */
-      switch (iph->ip_p) {
-  	case IPPROTO_TCP:
-diff -r -c ./src/packet.h ../pads-1.2+vlan/src/packet.h
-*** ./src/packet.h	2005-02-10 01:05:05.000000000 -0500
---- ../pads-1.2+vlan/src/packet.h	2007-08-24 10:11:02.000000000 -0400
-***************
-*** 40,45 ****
---- 40,51 ----
-  #endif /* ifdef LINUX */
-  
-  
-+ /* 802.1Q VLAN tags are 4 bytes long. */
-+ #define VLAN_HDRLEN 4
-+ 
-+ /* This is the decimal equivalent of the VLAN tag's ether frame type */
-+ #define VLAN_ETHERTYPE 33024
-+ 
-  /* INCLUDES ---------------------------------------- */
-  #include "global.h"
-  
-***************
-*** 47,53 ****
-  #include <netinet/tcp.h>
-  #include <netinet/ip_icmp.h>
-  
-- 
-  /* DATA STRUCTURES --------------------------------- */
-  
-  /*
---- 53,58 ----
-diff -r -c ./src/pads.c ../pads-1.2+vlan/src/pads.c
-*** ./src/pads.c	2005-06-15 18:00:40.000000000 -0400
---- ../pads-1.2+vlan/src/pads.c	2007-06-18 15:29:17.000000000 -0400
-***************
-*** 204,209 ****
---- 204,210 ----
-  void
-  main_pads (void)
-  {
-+     char pcap_filter[1044];
-      /* Initialize */
-      init_pads();
-  
-***************
-*** 255,262 ****
-  
-      /* Compile libpcap filter */
-      if (prog_argc > 0) {
-!         log_message("Filter:  %s\n", gc.pcap_filter);
-!         if (pcap_compile(gc.handle, &gc.filter, gc.pcap_filter, 0, gc.net) == -1) {
-              err_message("Unable to compile pcap filter!  %s", pcap_geterr(gc.handle));
-          }
-          if (pcap_setfilter(gc.handle, &gc.filter)) {
---- 256,269 ----
-  
-      /* Compile libpcap filter */
-      if (prog_argc > 0) {
-!       if(gc.pcap_filter) {
-! 	strcpy(pcap_filter, "(ip or vlan) and ");
-! 	strncat(pcap_filter, gc.pcap_filter, 1024);
-!       } else {
-! 	strcpy(pcap_filter, "(ip or vlan)");
-!       }
-!         log_message("Filter:  %s\n", pcap_filter);
-!         if (pcap_compile(gc.handle, &gc.filter, pcap_filter, 0, gc.net) == -1) {
-              err_message("Unable to compile pcap filter!  %s", pcap_geterr(gc.handle));
-          }
-          if (pcap_setfilter(gc.handle, &gc.filter)) {

diff --git a/pads-1.2-arp.patch b/pads-1.2-arp.patch
deleted file mode 100644
index b47e0c2..0000000
--- a/pads-1.2-arp.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-diff -urp pads-1.2.orig/src/mac-resolution.c pads-1.2/src/mac-resolution.c
---- pads-1.2.orig/src/mac-resolution.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/mac-resolution.c	2008-07-07 12:07:36.000000000 -0400
-@@ -160,7 +160,7 @@ int add_vendor (char *mac, char *vendor)
-  * INPUT        : 0 - MAC Address
-  * RETURN       : Vendor Name
-  * ---------------------------------------------------------- */
--bstring get_vendor (char *m)
-+bstring get_vendor (const char *m)
- {
-     Vendor *list;
-     char mac[4];
-diff -urp pads-1.2.orig/src/mac-resolution.h pads-1.2/src/mac-resolution.h
---- pads-1.2.orig/src/mac-resolution.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/mac-resolution.h	2008-07-07 12:07:36.000000000 -0400
-@@ -41,7 +41,7 @@
- int init_mac_resolution (void);
- int parse_raw_mac (bstring line);
- int add_vendor (char *mac, char *vendor);
--bstring get_vendor (char *m);
-+bstring get_vendor (const char *m);
- void end_mac_resolution (void);
- 
- #ifdef DEBUG
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-07-02 09:24:19.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-07-07 12:07:36.000000000 -0400
-@@ -91,6 +91,7 @@ init_output_csv (bstring filename)
- 	/* File does not exist, create new.. */
- 	if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "w")) != NULL) {
- 	    fprintf(output_csv_conf.file, "asset,port,proto,service,application,discovered\n");
-+	    fflush(output_csv_conf.file);
- 
- 	} else {
- 	    err_message("Cannot open file %s!", bdata(output_csv_conf.filename));
-@@ -216,8 +217,11 @@ parse_raw_report (bstring line)
-     /* Add Asset to Data Structure */
-     if (proto == 0 && ret != -1) {
- 	/* ARP */
--	mac2hex((char *)bdata(application), mac_addr, MAC_LEN);
--	add_arp_asset(ip_addr, mac_addr, discovered);
-+	if (mac2hex((char *)bdata(application), mac_addr, MAC_LEN) == 0)
-+		add_arp_asset(ip_addr, mac_addr, discovered);
-+	else
-+		log_message("Error parsing HWaddr %s - skipping", 
-+			(char *)bdata(application));
-     } else {
- 	/* Everything Else */
- 	add_asset(ip_addr, port, proto, service, application, discovered);
-diff -urp pads-1.2.orig/src/storage.c pads-1.2/src/storage.c
---- pads-1.2.orig/src/storage.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/storage.c	2008-07-07 12:07:36.000000000 -0400
-@@ -108,7 +108,7 @@ int check_arp_asset (struct in_addr ip_a
-     rec = arp_asset_list;
-     while (rec != NULL) {
- 	if (rec->ip_addr.s_addr == ip_addr.s_addr
--		&& (strcmp(rec->mac_addr, mac_addr) == 0)) {
-+		&& (memcmp(rec->mac_addr, mac_addr, MAC_LEN) == 0)) {
- 	    return 0;
- 
- 	} else {
-@@ -200,7 +200,7 @@ void add_asset (struct in_addr ip_addr,
-  *		: 2 - Discovered
-  * RETURN	: None!
-  * ---------------------------------------------------------- */
--void add_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN],
-+void add_arp_asset (struct in_addr ip_addr, const char *mac_addr,
- 		    time_t discovered)
- {
-     ArpAsset *list;
-diff -urp pads-1.2.orig/src/storage.h pads-1.2/src/storage.h
---- pads-1.2.orig/src/storage.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/storage.h	2008-07-07 12:07:36.000000000 -0400
-@@ -52,7 +52,7 @@ int check_tcp_asset (struct in_addr ip_a
- int check_icmp_asset (struct in_addr ip_addr);
- int check_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN]);
- void add_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application, time_t discovered);
--void add_arp_asset (struct in_addr ip_addr, char mac_addr[MAC_LEN], time_t discovered);
-+void add_arp_asset (struct in_addr ip_addr, const char *mac_addr, time_t discovered);
- unsigned short get_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
- short update_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto, unsigned short i_attempts);
- short update_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application);
-diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-07-02 09:24:19.000000000 -0400
-+++ pads-1.2/src/util.c	2008-07-07 12:08:00.000000000 -0400
-@@ -27,6 +27,7 @@
-  **************************************************************************/
- #include <unistd.h>
- #include <ctype.h>
-+#include <errno.h>
- #include "util.h"
- #include "pads.h"
- 
-@@ -426,31 +427,39 @@ drop_privs (bstring newuser, bstring new
-  * INPUT        : 0 - MAC Address
-  *              : 1 - Converted
-  *              : 0 - Size of 1
-- * RETURN       : None
-+ * RETURN       : 0 - success, -1 failure
-  * ---------------------------------------------------------- */
--void
-+int
- mac2hex(const char *mac, char *dst, int len)
- {
-     int i;
--    long l;
--    char *pp;
-+    unsigned long l;
- 
-     if (len < 6)
--        return;
-+        return -1;
- 
-     while (isspace(*mac))
-         mac++;
- 
-     /* expect 6 hex octets separated by ':' or space/NUL if last octet */
--    for (i = 0; i < 6; i++) {
--        l = strtol(mac, &pp, 16);
--        if (pp == mac || l > 0xFF || l < 0)
--            return;
--        if (!(*pp == ':' || (i == 5 && (isspace(*pp) || *pp == '\0'))))
--            return;
--        dst[i] = (u_char) l;
--        mac = pp + 1;
-+    for (i = 0; i < MAC_LEN; i++) {
-+        char tmp[3];
-+
-+        while (*mac == ':' || *mac == ' ')
-+            mac++;
-+        if (mac[0] == 0 || mac[1] == 0)
-+            return -1;
-+        tmp[0] = mac[0];
-+        tmp[1] = mac[1];
-+        tmp[2] = 0;
-+        errno = 0;
-+        l = strtoul(tmp, NULL, 16);
-+        if (errno)
-+            return -1;
-+        dst[i] = (u_char)(l & 0xFF);
-+        mac+=2;
-     }
-+    return 0;
- }
- 
- /* ----------------------------------------------------------
-@@ -464,11 +473,11 @@ mac2hex(const char *mac, char *dst, int 
- char *
- hex2mac(const char *mac)
- {
--    static char buf[18];
-+    static char buf[32];
- 
-     snprintf(buf, sizeof(buf), "%02X:%02X:%02X:%02X:%02X:%02X",
--        mac[0], mac[1], mac[2],
--        mac[3], mac[4], mac[5]);
-+        (mac[0] & 0xFF) , (mac[1] & 0xFF), (mac[2] & 0xFF),
-+        (mac[3] & 0xFF), (mac[4] & 0xFF), (mac[5] & 0xFF));
- 
-     return buf;
- }
-diff -urp pads-1.2.orig/src/util.h pads-1.2/src/util.h
---- pads-1.2.orig/src/util.h	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/util.h	2008-07-07 12:07:36.000000000 -0400
-@@ -52,7 +52,7 @@ size_t strlcpy(char *dst, const char *sr
- size_t strlcat(char *dst, const char *src, size_t len);
- #endif
- void drop_privs (bstring newuser, bstring newgroup);
--void mac2hex(const char *mac, char *dst, int len);
-+int mac2hex(const char *mac, char *dst, int len);
- char *hex2mac(const char *mac);
- 
- /* GLOBALS ----------------------------------------- */

diff --git a/pads-1.2-bstring.patch b/pads-1.2-bstring.patch
deleted file mode 100644
index 7e78e6d..0000000
--- a/pads-1.2-bstring.patch
+++ /dev/null
@@ -1,4671 +0,0 @@
-diff -urp pads-1.2.orig/lib/bstring/bstraux.c pads-1.2/lib/bstring/bstraux.c
---- pads-1.2.orig/lib/bstring/bstraux.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/lib/bstring/bstraux.c	2008-07-10 18:09:21.000000000 -0400
-@@ -1,8 +1,8 @@
- /*
-  * This source file is part of the bstring string library.  This code was
-- * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source 
-- * license. Refer to the accompanying documentation for details on usage and 
-- * license.
-+ * written by Paul Hsieh in 2002-2008, and is covered by the BSD open source 
-+ * license and the GPL. Refer to the accompanying documentation for details 
-+ * on usage and license.
-  */
- 
- /*
-@@ -17,28 +17,16 @@
- #include <stdlib.h>
- #include <string.h>
- #include <limits.h>
-+#include <ctype.h>
- #include "bstrlib.h"
- #include "bstraux.h"
- 
--/*  int bTrunc (bstring b, int n)
-- *
-- *  Truncate the bstring to at most n characters.
-- */
--int bTrunc (bstring b, int n) {
--	if (b == NULL || n < 0 || b->mlen < b->slen) return -__LINE__;
--	if (b->slen > n) {
--		b->slen = n;
--		b->data[n] = '\0';	/* Required for Clib interoperability */
--	}
--	return 0;
--}
--
- /*  bstring bTail (bstring b, int n)
-  *
-  *  Return with a string of the last n characters of b.
-  */
- bstring bTail (bstring b, int n) {
--	if (b == NULL || n < 0 || b->mlen < b->slen) return NULL;
-+	if (b == NULL || n < 0 || (b->mlen < b->slen && b->mlen > 0)) return NULL;
- 	if (n >= b->slen) return bstrcpy (b);
- 	return bmidstr (b, b->slen - n, n);
- }
-@@ -48,7 +36,7 @@ bstring bTail (bstring b, int n) {
-  *  Return with a string of the first n characters of b.
-  */
- bstring bHead (bstring b, int n) {
--	if (b == NULL || n < 0 || b->mlen < b->slen) return NULL;
-+	if (b == NULL || n < 0 || (b->mlen < b->slen && b->mlen > 0)) return NULL;
- 	if (n >= b->slen) return bstrcpy (b);
- 	return bmidstr (b, 0, n);
- }
-@@ -57,10 +45,10 @@ bstring bHead (bstring b, int n) {
-  *
-  *  Fill a given bstring with the character in parameter c, for a length n.
-  */
--int bFill (bstring a, char c, int len) {
--	if (a == NULL || len < 0 || a->mlen < a->slen) return -__LINE__;
--	a->slen = 0;
--	return bsetstr (a, len, NULL, c);
-+int bFill (bstring b, char c, int len) {
-+	if (b == NULL || len < 0 || (b->mlen < b->slen && b->mlen > 0)) return -__LINE__;
-+	b->slen = 0;
-+	return bsetstr (b, len, NULL, c);
- }
- 
- /*  int bReplicate (bstring b, int n)
-@@ -79,14 +67,16 @@ int bReverse (bstring b) {
- int i, n, m;
- unsigned char t;
- 
--	if (b == NULL || b->slen < 2 || b->mlen < b->slen) return -__LINE__;
-+	if (b == NULL || b->slen < 0 || b->mlen < b->slen) return -__LINE__;
- 	n = b->slen;
--	m = ((unsigned)n) >> 1;
--	n--;
--	for (i=0; i < m; i++) {
--		t = b->data[n - i];
--		b->data[n - i] = b->data[i];
--		b->data[i] = t;
-+	if (2 <= n) {
-+		m = ((unsigned)n) >> 1;
-+		n--;
-+		for (i=0; i < m; i++) {
-+			t = b->data[n - i];
-+			b->data[n - i] = b->data[i];
-+			b->data[i] = t;
-+		}
- 	}
- 	return 0;
- }
-@@ -106,7 +96,7 @@ int bInsertChrs (bstring b, int pos, int
- 	if (pos < b->slen) memmove (b->data + pos + len, b->data + pos, b->slen - pos);
- 	memset (b->data + pos, c, len);
- 	b->slen += len;
--	b->data[b->slen] = '\0';
-+	b->data[b->slen] = (unsigned char) '\0';
- 	return BSTR_OK;
- }
- 
-@@ -128,7 +118,7 @@ unsigned char c = (unsigned char) space;
- 	}
- 	if (j > 0 && b->data[j-1] == c) j--;
- 
--	b->data[j] = '\0';
-+	b->data[j] = (unsigned char) '\0';
- 	b->slen = j;
- 	return BSTR_OK;
- }
-@@ -170,6 +160,7 @@ int bJustifyMargin (bstring b, int width
- struct bstrList * sl;
- int i, l, c;
- 
-+	if (b == NULL || b->slen < 0 || b->mlen == 0 || b->mlen < b->slen) return -__LINE__;
- 	if (NULL == (sl = bsplit (b, (unsigned char) space))) return -__LINE__;
- 	for (l=c=i=0; i < sl->qty; i++) {
- 		if (sl->entry[i]->slen > 0) {
-@@ -201,28 +192,74 @@ int i, l, c;
- 	return BSTR_OK;
- }
- 
--/*  char * bStr2NetStr (const bstring b)
-+static size_t readNothing (void *buff, size_t elsize, size_t nelem, void *parm) {
-+	buff = buff;
-+	elsize = elsize;
-+	nelem = nelem;
-+	parm = parm;
-+	return 0; /* Immediately indicate EOF. */
-+}
-+
-+/*  struct bStream * bsFromBstr (const_bstring b);
-+ *
-+ *  Create a bStream whose contents are a copy of the bstring passed in.
-+ *  This allows the use of all the bStream APIs with bstrings.
-+ */
-+struct bStream * bsFromBstr (const_bstring b) {
-+struct bStream * s = bsopen ((bNread) readNothing, NULL);
-+	bsunread (s, b); /* Push the bstring data into the empty bStream. */
-+	return s;
-+}
-+
-+static size_t readRef (void *buff, size_t elsize, size_t nelem, void *parm) {
-+struct tagbstring * t = (struct tagbstring *) parm;
-+size_t tsz = elsize * nelem;
-+
-+	if (tsz > (size_t) t->slen) tsz = (size_t) t->slen;
-+	if (tsz > 0) {
-+		memcpy (buff, t->data, tsz);
-+		t->slen -= (int) tsz;
-+		t->data += tsz;
-+		return tsz / elsize;
-+	}
-+	return 0;
-+}
-+
-+/*  The "by reference" version of the above function.  This function puts
-+ *  a number of restrictions on the call site (the passed in struct 
-+ *  tagbstring *will* be modified by this function, and the source data
-+ *  must remain alive and constant for the lifetime of the bStream).  
-+ *  Hence it is not presented as an extern.
-+ */
-+static struct bStream * bsFromBstrRef (struct tagbstring * t) {
-+	if (!t) return NULL;
-+	return bsopen ((bNread) readRef, t);
-+}
-+
-+/*  char * bStr2NetStr (const_bstring b)
-  *
-  *  Convert a bstring to a netstring.  See 
-  *  http://cr.yp.to/proto/netstrings.txt for a description of netstrings.
-- *  Note: 1) The value returned should be freed with a call to free() at the
-- *           point when it will no longer be referenced to avoid a memory 
-+ *  Note: 1) The value returned should be freed with a call to bcstrfree() at 
-+ *           the point when it will no longer be referenced to avoid a memory 
-  *           leak.
-  *        2) If the returned value is non-NULL, then it also '\0' terminated
-  *           in the character position one past the "," terminator.
-  */
--char * bStr2NetStr (const bstring b) {
-+char * bStr2NetStr (const_bstring b) {
-+char strnum[sizeof (b->slen) * 3 + 1];
- bstring s;
- unsigned char * buff;
- 
- 	if (b == NULL || b->data == NULL || b->slen < 0) return NULL;
--	if (NULL == (s = bformat ("%d:", b->slen))
--	 || bconcat (s, b) == BSTR_ERR || bconchar (s, ',') == BSTR_ERR) {
-+	sprintf (strnum, "%d:", b->slen);
-+	if (NULL == (s = bfromcstr (strnum))
-+	 || bconcat (s, b) == BSTR_ERR || bconchar (s, (char) ',') == BSTR_ERR) {
- 		bdestroy (s);
- 		return NULL;
- 	}
- 	buff = s->data;
--	free (s);
-+	bcstrfree ((char *) s);
- 	return (char *) buff;
- }
- 
-@@ -253,18 +290,18 @@ bstring b;
- 		return NULL;
- 	}
- 	memcpy (b->data, buff + i + 1, x);
--	b->data[x] = '\0';
-+	b->data[x] = (unsigned char) '\0';
- 	b->slen = x;
- 	return b;
- }
- 
--static unsigned char b64ETable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-+static char b64ETable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
- 
--/*  bstring bBase64Encode (const bstring b)
-+/*  bstring bBase64Encode (const_bstring b)
-  *
-- *  Generate a base64 encoding.
-+ *  Generate a base64 encoding.  See: RFC1341
-  */
--bstring bBase64Encode (const bstring b) {
-+bstring bBase64Encode (const_bstring b) {
- int i, c0, c1, c2, c3;
- bstring out;
- 
-@@ -273,16 +310,16 @@ bstring out;
- 	out = bfromcstr ("");
- 	for (i=0; i + 2 < b->slen; i += 3) {
- 		if (i && ((i % 57) == 0)) {
--			if (bconchar (out, '\015') < 0 || bconchar (out, '\012') < 0) {
-+			if (bconchar (out, (char) '\015') < 0 || bconchar (out, (char) '\012') < 0) {
- 				bdestroy (out);
- 				return NULL;
- 			}
- 		}
- 		c0 = b->data[i] >> 2;
- 		c1 = ((b->data[i] << 4) |
--			  (b->data[i+1] >> 4)) & 0x3F;
-+		      (b->data[i+1] >> 4)) & 0x3F;
- 		c2 = ((b->data[i+1] << 2) |
--			  (b->data[i+2] >> 6)) & 0x3F;
-+		      (b->data[i+2] >> 6)) & 0x3F;
- 		c3 = b->data[i+2] & 0x3F;
- 		if (bconchar (out, b64ETable[c0]) < 0 ||
- 			bconchar (out, b64ETable[c1]) < 0 ||
-@@ -294,7 +331,7 @@ bstring out;
- 	}
- 
- 	if (i && ((i % 57) == 0)) {
--		if (bconchar (out, '\015') < 0 || bconchar (out, '\012') < 0) {
-+		if (bconchar (out, (char) '\015') < 0 || bconchar (out, (char) '\012') < 0) {
- 			bdestroy (out);
- 			return NULL;
- 		}
-@@ -308,7 +345,7 @@ bstring out;
- 			if (bconchar (out, b64ETable[c0]) < 0 ||
- 				bconchar (out, b64ETable[c1]) < 0 ||
- 				bconchar (out, b64ETable[c2]) < 0 ||
--				bconchar (out, '=') < 0) {
-+				bconchar (out, (char) '=') < 0) {
- 				bdestroy (out);
- 				return NULL;
- 			}
-@@ -317,8 +354,8 @@ bstring out;
- 				c1 = (b->data[i] << 4) & 0x3F;
- 			if (bconchar (out, b64ETable[c0]) < 0 ||
- 				bconchar (out, b64ETable[c1]) < 0 ||
--				bconchar (out, '=') < 0 ||
--				bconchar (out, '=') < 0) {
-+				bconchar (out, (char) '=') < 0 ||
-+				bconchar (out, (char) '=') < 0) {
- 				bdestroy (out);
- 				return NULL;
- 			}
-@@ -344,23 +381,28 @@ static int base64DecodeSymbol (unsigned 
-    else                   return B64_ERR;
- }
- 
--/*  bstring bBase64Decode (const bstring b)
-+/*  bstring bBase64DecodeEx (const_bstring b, int * boolTruncError)
-  *
-  *  Decode a base64 block of data.  All MIME headers are assumed to have been
-- *  removed.
-+ *  removed.  See: RFC1341
-  */
--bstring bBase64Decode (const bstring b) {
-+bstring bBase64DecodeEx (const_bstring b, int * boolTruncError) {
- int i, v;
- unsigned char c0, c1, c2;
- bstring out;
- 
- 	if (b == NULL || b->slen < 0 || b->data == NULL) return NULL;
-+	if (boolTruncError) *boolTruncError = 0;
- 	out = bfromcstr ("");
- 	i = 0;
- 	for (;;) {
- 		do {
- 			if (i >= b->slen) return out;
--			if (b->data[i] == '=') {
-+			if (b->data[i] == '=') {	/* Bad "too early" truncation */
-+				if (boolTruncError) {
-+					*boolTruncError = 1;
-+					return out;
-+				}
- 				bdestroy (out);
- 				return NULL;
- 			}
-@@ -369,7 +411,11 @@ bstring out;
- 		} while (v < 0);
- 		c0 = (unsigned char) (v << 2);
- 		do {
--			if (i >= b->slen || b->data[i] == '=') {
-+			if (i >= b->slen || b->data[i] == '=') {	/* Bad "too early" truncation */
-+				if (boolTruncError) {
-+					*boolTruncError = 1;
-+					return out;
-+				}
- 				bdestroy (out);
- 				return NULL;
- 			}
-@@ -380,13 +426,21 @@ bstring out;
- 		c1  = (unsigned char) (v << 4);
- 		do {
- 			if (i >= b->slen) {
-+				if (boolTruncError) {
-+					*boolTruncError = 1;
-+					return out;
-+				}
- 				bdestroy (out);
- 				return NULL;
- 			}
- 			if (b->data[i] == '=') {
- 				i++;
- 				if (i >= b->slen || b->data[i] != '=' || bconchar (out, c0) < 0) {
--					bdestroy (out);
-+					if (boolTruncError) {
-+						*boolTruncError = 1;
-+						return out;
-+					}
-+					bdestroy (out); /* Missing "=" at the end. */
- 					return NULL;
- 				}
- 				return out;
-@@ -398,14 +452,23 @@ bstring out;
- 		c2  = (unsigned char) (v << 6);
- 		do {
- 			if (i >= b->slen) {
-+				if (boolTruncError) {
-+					*boolTruncError = 1;
-+					return out;
-+				}
- 				bdestroy (out);
- 				return NULL;
- 			}
- 			if (b->data[i] == '=') {
- 				if (bconchar (out, c0) < 0 || bconchar (out, c1) < 0) {
--					bconchar (out, c0);
-+					if (boolTruncError) {
-+						*boolTruncError = 1;
-+						return out;
-+					}
-+					bdestroy (out);
- 					return NULL;
- 				}
-+				if (boolTruncError) *boolTruncError = 0;
- 				return out;
- 			}
- 			v = base64DecodeSymbol (b->data[i]);
-@@ -415,7 +478,11 @@ bstring out;
- 		if (bconchar (out, c0) < 0 ||
- 			bconchar (out, c1) < 0 ||
- 			bconchar (out, c2) < 0) {
--			bconchar (out, c0);
-+			if (boolTruncError) {
-+				*boolTruncError = -1;
-+				return out;
-+			}
-+			bdestroy (out);
- 			return NULL;
- 		}
- 	}
-@@ -425,69 +492,230 @@ bstring out;
- 
- struct bUuInOut {
- 	bstring src, dst;
-+	int * badlines;
- };
- 
-+#define UU_MAX_LINELEN 45
-+
- static int bUuDecLine (void * parm, int ofs, int len) {
- struct bUuInOut * io = (struct bUuInOut *) parm;
- bstring s = io->src;
- bstring t = io->dst;
--int i, llen;
-+int i, llen, otlen, ret, c0, c1, c2, c3, d0, d1, d2, d3;
- 
- 	if (len == 0) return 0;
- 	llen = UU_DECODE_BYTE (s->data[ofs]);
-+	ret = 0;
- 
--	if (((unsigned) llen) > 45) return -__LINE__;
--	if (len > (i = (int) ((4/3.0)*llen + 1.5))) len = i;
-+	otlen = t->slen;
- 
--	for (i=1; i < len; i += 4) {
--		int c0, c1, c2, c3;
-+	if (((unsigned) llen) > UU_MAX_LINELEN) { ret = -__LINE__; 
-+		goto bl;
-+	}
-+
-+	llen += t->slen;
- 
--		c0 =                 UU_DECODE_BYTE (s->data[ofs + i + 0]);
--		c1 = (i + 1 < len) ? UU_DECODE_BYTE (s->data[ofs + i + 1]) : -1;
--		c2 = (i + 2 < len) ? UU_DECODE_BYTE (s->data[ofs + i + 2]) : -1;
--		c3 = (i + 3 < len) ? UU_DECODE_BYTE (s->data[ofs + i + 3]) : -1;
--
--		if (((unsigned) (c0|c1) >= 0x40) || c2 >= 0x40 || c3 >= 0x40) return -__LINE__;
--
--		if (bconchar (t, (char)((c0 << 2) | ((c1 >> 4) & 0x03))) < 0) return -__LINE__;
--		if ((unsigned) c2 < 0x40) {
--			if (bconchar (t, (char)((c1 << 4) | ((c2 >> 2) & 0x0F))) < 0) return -__LINE__;
--			if ((unsigned) c3 < 0x40) if (bconchar (t, (char)((c2 << 6) | (c3 & 0x3F))) < 0) return -__LINE__;
-+	for (i=1; i < s->slen && t->slen < llen;i += 4) {
-+		unsigned char outoctet[3];
-+		c0 = UU_DECODE_BYTE (d0 = (int) bchare (s, i+ofs+0, ' ' - 1));
-+		c1 = UU_DECODE_BYTE (d1 = (int) bchare (s, i+ofs+1, ' ' - 1));
-+		c2 = UU_DECODE_BYTE (d2 = (int) bchare (s, i+ofs+2, ' ' - 1));
-+		c3 = UU_DECODE_BYTE (d3 = (int) bchare (s, i+ofs+3, ' ' - 1));
-+
-+		if (((unsigned) (c0|c1) >= 0x40)) { if (!ret) ret = -__LINE__;
-+			if (d0 > 0x60 || (d0 < (' ' - 1) && !isspace (d0)) ||
-+			    d1 > 0x60 || (d1 < (' ' - 1) && !isspace (d1))) {
-+				t->slen = otlen;
-+				goto bl;
-+			}
-+			c0 = c1 = 0;
-+		}
-+		outoctet[0] = (unsigned char) ((c0 << 2) | ((unsigned) c1 >> 4));
-+		if (t->slen+1 >= llen) {
-+			if (0 > bconchar (t, (char) outoctet[0])) return -__LINE__;
-+			break;
-+		}
-+		if ((unsigned) c2 >= 0x40) { if (!ret) ret = -__LINE__;
-+			if (d2 > 0x60 || (d2 < (' ' - 1) && !isspace (d2))) {
-+				t->slen = otlen;
-+				goto bl;
-+			}
-+			c2 = 0;
-+		}
-+		outoctet[1] = (unsigned char) ((c1 << 4) | ((unsigned) c2 >> 2));
-+		if (t->slen+2 >= llen) {
-+			if (0 > bcatblk (t, outoctet, 2)) return -__LINE__;
-+			break;
- 		}
-+		if ((unsigned) c3 >= 0x40) { if (!ret) ret = -__LINE__;
-+			if (d3 > 0x60 || (d3 < (' ' - 1) && !isspace (d3))) {
-+				t->slen = otlen;
-+				goto bl;
-+			}
-+			c3 = 0;
-+		}
-+		outoctet[2] = (unsigned char) ((c2 << 6) | ((unsigned) c3));
-+		if (0 > bcatblk (t, outoctet, 3)) return -__LINE__;
- 	}
--	return 0;
-+	if (t->slen < llen) { if (0 == ret) ret = -__LINE__;
-+		t->slen = otlen;
-+	}
-+	bl:;
-+	if (ret && io->badlines) {
-+		(*io->badlines)++;
-+		return 0;
-+	}
-+	return ret;
- }
- 
--/*  bstring bUuDecode (const bstring src)
-+/*  bstring bUuDecodeEx (const_bstring src, int * badlines)
-  *
-- *  Performs a UUDecode of a block of data.  It is assumed that the "begin"
-- *  and "end" lines have already been stripped off.  The potential security
-- *  problem of writing the filename in the begin line is something that is
-- *  beyond the scope of a portable library.
-+ *  Performs a UUDecode of a block of data.  If there are errors in the
-+ *  decoding, they are counted up and returned in "badlines", if badlines is
-+ *  not NULL. It is assumed that the "begin" and "end" lines have already 
-+ *  been stripped off.  The potential security problem of writing the 
-+ *  filename in the begin line is something that is beyond the scope of a 
-+ *  portable library.
-  */
-+
- #ifdef _MSC_VER
- #pragma warning(disable:4204)
- #endif
--bstring bUuDecode (const bstring src) {
--struct tagbstring ws = bsStatic ("\r\n");
--struct bUuInOut io;
- 
--	if (src == NULL || src->slen < 0 || src->data == NULL) return NULL;
--	io.src = src;
--	io.dst = bfromcstr ("");
--	if (bsplitscb (src, &ws, 0, bUuDecLine, &io) < 0) bstrFree (io.dst);
--	return io.dst;
-+bstring bUuDecodeEx (const_bstring src, int * badlines) {
-+struct tagbstring t;
-+struct bStream * s;
-+struct bStream * d;
-+bstring b;
-+
-+	if (!src) return NULL;
-+	t = *src; /* Short lifetime alias to header of src */
-+	s = bsFromBstrRef (&t); /* t is undefined after this */
-+	if (!s) return NULL;
-+	d = bsUuDecode (s, badlines);
-+	b = bfromcstralloc (256, "");
-+	if (NULL == b || 0 > bsread (b, d, INT_MAX)) {
-+		bdestroy (b);
-+		bsclose (d);
-+		bsclose (s);
-+		return NULL;
-+	}
-+	return b;
-+}
-+
-+struct bsUuCtx {
-+	struct bUuInOut io;
-+	struct bStream * sInp;
-+};
-+
-+static size_t bsUuDecodePart (void *buff, size_t elsize, size_t nelem, void *parm) {
-+static struct tagbstring eol = bsStatic ("\r\n");
-+struct bsUuCtx * luuCtx = (struct bsUuCtx *) parm;
-+size_t tsz;
-+int l, lret;
-+
-+	if (NULL == buff || NULL == parm) return 0;
-+	tsz = elsize * nelem;
-+
-+	CheckInternalBuffer:;
-+	/* If internal buffer has sufficient data, just output it */
-+	if (((size_t) luuCtx->io.dst->slen) > tsz) {
-+		memcpy (buff, luuCtx->io.dst->data, tsz);
-+		bdelete (luuCtx->io.dst, 0, (int) tsz);
-+		return nelem;
-+	}
-+
-+	DecodeMore:;
-+	if (0 <= (l = binchr (luuCtx->io.src, 0, &eol))) {
-+		int ol = 0;
-+		struct tagbstring t;
-+		bstring s = luuCtx->io.src;
-+		luuCtx->io.src = &t;
-+
-+		do {
-+			if (l > ol) {
-+				bmid2tbstr (t, s, ol, l - ol);
-+				lret = bUuDecLine (&luuCtx->io, 0, t.slen);
-+				if (0 > lret) {
-+					luuCtx->io.src = s;
-+					goto Done;
-+				}
-+			}
-+			ol = l + 1;
-+			if (((size_t) luuCtx->io.dst->slen) > tsz) break;
-+			l = binchr (s, ol, &eol);
-+		} while (BSTR_ERR != l);
-+		bdelete (s, 0, ol);
-+		luuCtx->io.src = s;
-+		goto CheckInternalBuffer;
-+	}
-+
-+	if (BSTR_ERR != bsreada (luuCtx->io.src, luuCtx->sInp, bsbufflength (luuCtx->sInp, BSTR_BS_BUFF_LENGTH_GET))) {
-+		goto DecodeMore;
-+	}
-+
-+	bUuDecLine (&luuCtx->io, 0, luuCtx->io.src->slen);
-+
-+	Done:;
-+	/* Output any lingering data that has been translated */
-+	if (((size_t) luuCtx->io.dst->slen) > 0) {
-+		if (((size_t) luuCtx->io.dst->slen) > tsz) goto CheckInternalBuffer;
-+		memcpy (buff, luuCtx->io.dst->data, luuCtx->io.dst->slen);
-+		tsz = luuCtx->io.dst->slen / elsize;
-+		luuCtx->io.dst->slen = 0;
-+		if (tsz > 0) return tsz;
-+	}
-+
-+	/* Deallocate once EOF becomes triggered */
-+	bdestroy (luuCtx->io.dst);
-+	bdestroy (luuCtx->io.src);
-+	free (luuCtx);
-+	return 0;
-+}
-+
-+/*  bStream * bsUuDecode (struct bStream * sInp, int * badlines)
-+ *
-+ *  Creates a bStream which performs the UUDecode of an an input stream.  If
-+ *  there are errors in the decoding, they are counted up and returned in 
-+ *  "badlines", if badlines is not NULL. It is assumed that the "begin" and 
-+ *  "end" lines have already been stripped off.  The potential security 
-+ *  problem of writing the filename in the begin line is something that is 
-+ *  beyond the scope of a portable library.
-+ */
-+
-+struct bStream * bsUuDecode (struct bStream * sInp, int * badlines) {
-+struct bsUuCtx * luuCtx = (struct bsUuCtx *) malloc (sizeof (struct bsUuCtx));
-+struct bStream * sOut;
-+
-+	if (NULL == luuCtx) return NULL;
-+
-+	luuCtx->io.src = bfromcstr ("");
-+	luuCtx->io.dst = bfromcstr ("");
-+	if (NULL == luuCtx->io.dst || NULL == luuCtx->io.src) {
-+		CleanUpFailureToAllocate:;
-+		bdestroy (luuCtx->io.dst);
-+		bdestroy (luuCtx->io.src);
-+		free (luuCtx);
-+		return NULL;
-+	}
-+	luuCtx->io.badlines = badlines;
-+	if (badlines) *badlines = 0;
-+
-+	luuCtx->sInp = sInp;
-+
-+	sOut = bsopen ((bNread) bsUuDecodePart, luuCtx);
-+	if (NULL == sOut) goto CleanUpFailureToAllocate;
-+	return sOut;
- }
- 
--#define UU_MAX_LINELEN 45
- #define UU_ENCODE_BYTE(b) (char) (((b) == 0) ? '`' : ((b) + ' '))
- 
--/*  bstring bUuEncode (const bstring src)
-+/*  bstring bUuEncode (const_bstring src)
-  *
-  *  Performs a UUEncode of a block of data.  The "begin" and "end" lines are 
-  *  not appended.
-  */
--bstring bUuEncode (const bstring src) {
-+bstring bUuEncode (const_bstring src) {
- bstring out;
- int i, j, jm;
- unsigned int c0, c1, c2;
-@@ -500,18 +728,18 @@ unsigned int c0, c1, c2;
- 			break;
- 		}
- 		for (j = i; j < jm; j += 3) {
--			c0 = bchar (src, j    );
--			c1 = bchar (src, j + 1);
--			c2 = bchar (src, j + 2);
-+			c0 = (unsigned int) bchar (src, j    );
-+			c1 = (unsigned int) bchar (src, j + 1);
-+			c2 = (unsigned int) bchar (src, j + 2);
- 			if (bconchar (out, UU_ENCODE_BYTE ( (c0 & 0xFC) >> 2)) < 0 ||
--				bconchar (out, UU_ENCODE_BYTE (((c0 & 0x03) << 4) | ((c1 & 0xF0) >> 4))) < 0 ||
--				bconchar (out, UU_ENCODE_BYTE (((c1 & 0x0F) << 2) | ((c2 & 0xC0) >> 6))) < 0 ||
--				bconchar (out, UU_ENCODE_BYTE ( (c2 & 0x3F))) < 0) {
--					bstrFree (out);
--					goto End;
--				}
-+			    bconchar (out, UU_ENCODE_BYTE (((c0 & 0x03) << 4) | ((c1 & 0xF0) >> 4))) < 0 ||
-+			    bconchar (out, UU_ENCODE_BYTE (((c1 & 0x0F) << 2) | ((c2 & 0xC0) >> 6))) < 0 ||
-+			    bconchar (out, UU_ENCODE_BYTE ( (c2 & 0x3F))) < 0) {
-+				bstrFree (out);
-+				goto End;
-+			}
- 		}
--		if (bconchar (out, '\r') < 0 || bconchar (out, '\n') < 0) {
-+		if (bconchar (out, (char) '\r') < 0 || bconchar (out, (char) '\n') < 0) {
- 			bstrFree (out);
- 			break;
- 		}
-@@ -520,13 +748,13 @@ unsigned int c0, c1, c2;
- 	return out;
- }
- 
--/*  bstring bYEncode (const bstring src)
-+/*  bstring bYEncode (const_bstring src)
-  *
-  *  Performs a YEncode of a block of data.  No header or tail info is 
-  *  appended.  See: http://www.yenc.org/whatis.htm and 
-  *  http://www.yenc.org/yenc-draft.1.3.txt
-  */
--bstring bYEncode (const bstring src) {
-+bstring bYEncode (const_bstring src) {
- int i;
- bstring out;
- unsigned char c;
-@@ -536,7 +764,7 @@ unsigned char c;
- 	for (i=0; i < src->slen; i++) {
- 		c = (unsigned char)(src->data[i] + 42);
- 		if (c == '=' || c == '\0' || c == '\r' || c == '\n') {
--			if (0 > bconchar (out, '=')) {
-+			if (0 > bconchar (out, (char) '=')) {
- 				bdestroy (out);
- 				return NULL;
- 			}
-@@ -550,21 +778,27 @@ unsigned char c;
- 	return out;
- }
- 
--/*  bstring bYDecode (const bstring src)
-+/*  bstring bYDecode (const_bstring src)
-  *
-  *  Performs a YDecode of a block of data.  See: 
-  *  http://www.yenc.org/whatis.htm and http://www.yenc.org/yenc-draft.1.3.txt
-  */
--bstring bYDecode (const bstring src) {
-+#define MAX_OB_LEN (64)
-+
-+bstring bYDecode (const_bstring src) {
- int i;
- bstring out;
- unsigned char c;
-+unsigned char octetbuff[MAX_OB_LEN];
-+int obl;
- 
- 	if (src == NULL || src->slen < 0 || src->data == NULL) return NULL;
- 	if ((out = bfromcstr ("")) == NULL) return NULL;
-+
-+	obl = 0;
-+
- 	for (i=0; i < src->slen; i++) {
--		c = src->data[i];
--		if (c == '=') {
-+		if ('=' == (c = src->data[i])) { /* The = escape mode */
- 			i++;
- 			if (i >= src->slen) {
- 				bdestroy (out);
-@@ -572,7 +806,7 @@ unsigned char c;
- 			}
- 			c = (unsigned char) (src->data[i] - 64);
- 		} else {
--			if (c == '\0') {
-+			if ('\0' == c) {
- 				bdestroy (out);
- 				return NULL;
- 			}
-@@ -580,11 +814,320 @@ unsigned char c;
- 			/* Extraneous CR/LFs are to be ignored. */
- 			if (c == '\r' || c == '\n') continue;
- 		}
--		if (0 > bconchar (out, (char)(c - (unsigned char) 42))) {
--			bdestroy (out);
--			return NULL;
-+
-+		octetbuff[obl] = (unsigned char) ((int) c - 42);
-+		obl++;
-+
-+		if (obl >= MAX_OB_LEN) {
-+			if (0 > bcatblk (out, octetbuff, obl)) {
-+				bdestroy (out);
-+				return NULL;
-+			}
-+			obl = 0;
- 		}
- 	}
-+
-+	if (0 > bcatblk (out, octetbuff, obl)) {
-+		bdestroy (out);
-+		out = NULL;
-+	}
- 	return out;
- }
- 
-+/*  bstring bStrfTime (const char * fmt, const struct tm * timeptr)
-+ *
-+ *  Takes a format string that is compatible with strftime and a struct tm
-+ *  pointer, formats the time according to the format string and outputs
-+ *  the bstring as a result. Note that if there is an early generation of a 
-+ *  '\0' character, the bstring will be truncated to this end point.
-+ */
-+bstring bStrfTime (const char * fmt, const struct tm * timeptr) {
-+#if defined (__TURBOC__) && !defined (__BORLANDC__)
-+static struct tagbstring ns = bsStatic ("bStrfTime Not supported");
-+	fmt = fmt;
-+	timeptr = timeptr;
-+	return &ns;
-+#else
-+bstring buff;
-+int n;
-+size_t r;
-+
-+	if (fmt == NULL) return NULL;
-+
-+	/* Since the length is not determinable beforehand, a search is
-+	   performed using the truncating "strftime" call on increasing 
-+	   potential sizes for the output result. */
-+
-+	if ((n = (int) (2*strlen (fmt))) < 16) n = 16;
-+	buff = bfromcstralloc (n+2, "");
-+
-+	for (;;) {
-+		if (BSTR_OK != balloc (buff, n + 2)) {
-+			bdestroy (buff);
-+			return NULL;
-+		}
-+
-+		r = strftime ((char *) buff->data, n + 1, fmt, timeptr);
-+
-+		if (r > 0) {
-+			buff->slen = (int) r;
-+			break;
-+		}
-+
-+		n += n;
-+	}
-+
-+	return buff;
-+#endif
-+}
-+
-+/*  int bSetCstrChar (bstring a, int pos, char c)
-+ *
-+ *  Sets the character at position pos to the character c in the bstring a.
-+ *  If the character c is NUL ('\0') then the string is truncated at this
-+ *  point.  Note: this does not enable any other '\0' character in the bstring
-+ *  as terminator indicator for the string.  pos must be in the position 
-+ *  between 0 and b->slen inclusive, otherwise BSTR_ERR will be returned.
-+ */
-+int bSetCstrChar (bstring b, int pos, char c) {
-+	if (NULL == b || b->mlen <= 0 || b->slen < 0 || b->mlen < b->slen)
-+		return BSTR_ERR;
-+	if (pos < 0 || pos > b->slen) return BSTR_ERR;
-+
-+	if (pos == b->slen) {
-+		if ('\0' != c) return bconchar (b, c);
-+		return 0;
-+	}
-+
-+	b->data[pos] = (unsigned char) c;
-+	if ('\0' == c) b->slen = pos;
-+
-+	return 0;
-+}
-+
-+/*  int bSetChar (bstring b, int pos, char c)
-+ *
-+ *  Sets the character at position pos to the character c in the bstring a.
-+ *  The string is not truncated if the character c is NUL ('\0').  pos must
-+ *  be in the position between 0 and b->slen inclusive, otherwise BSTR_ERR
-+ *  will be returned.
-+ */
-+int bSetChar (bstring b, int pos, char c) {
-+	if (NULL == b || b->mlen <= 0 || b->slen < 0 || b->mlen < b->slen)
-+		return BSTR_ERR;
-+	if (pos < 0 || pos > b->slen) return BSTR_ERR;
-+
-+	if (pos == b->slen) {
-+		return bconchar (b, c);
-+	}
-+
-+	b->data[pos] = (unsigned char) c;
-+	return 0;
-+}
-+
-+#define INIT_SECURE_INPUT_LENGTH (256)
-+
-+/*  bstring bSecureInput (int maxlen, int termchar, 
-+ *                        bNgetc vgetchar, void * vgcCtx)
-+ *
-+ *  Read input from an abstracted input interface, for a length of at most
-+ *  maxlen characters.  If maxlen <= 0, then there is no length limit put
-+ *  on the input.  The result is terminated early if vgetchar() return EOF
-+ *  or the user specified value termchar.
-+ *
-+ */
-+bstring bSecureInput (int maxlen, int termchar, bNgetc vgetchar, void * vgcCtx) {
-+int i, m, c;
-+bstring b, t;
-+
-+	if (!vgetchar) return NULL;
-+
-+	b = bfromcstralloc (INIT_SECURE_INPUT_LENGTH, "");
-+	if ((c = UCHAR_MAX + 1) == termchar) c++;
-+
-+	for (i=0; ; i++) {
-+		if (termchar == c || (maxlen > 0 && i >= maxlen)) c = EOF;
-+		else c = vgetchar (vgcCtx);
-+
-+		if (EOF == c) break;
-+
-+		if (i+1 >= b->mlen) {
-+
-+			/* Double size, but deal with unusual case of numeric
-+			   overflows */
-+
-+			if ((m = b->mlen << 1)   <= b->mlen &&
-+			    (m = b->mlen + 1024) <= b->mlen &&
-+			    (m = b->mlen + 16)   <= b->mlen &&
-+			    (m = b->mlen + 1)    <= b->mlen) t = NULL;
-+			else t = bfromcstralloc (m, "");
-+
-+			if (t) memcpy (t->data, b->data, i);
-+			bSecureDestroy (b); /* Cleanse previous buffer */
-+			b = t;
-+			if (!b) return b;
-+		}
-+
-+		b->data[i] = (unsigned char) c;
-+	}
-+
-+	b->slen = i;
-+	b->data[i] = (unsigned char) '\0';
-+	return b;
-+}
-+
-+#define BWS_BUFF_SZ (1024)
-+
-+struct bwriteStream {
-+    bstring buff;    /* Buffer for underwrites                   */
-+    void * parm;     /* The stream handle for core stream        */
-+    bNwrite writeFn; /* fwrite work-a-like fnptr for core stream */
-+    int isEOF;       /* track stream's EOF state                 */
-+    int minBuffSz;
-+};
-+
-+/*  struct bwriteStream * bwsOpen (bNwrite writeFn, void * parm)
-+ *
-+ *  Wrap a given open stream (described by a fwrite work-a-like function 
-+ *  pointer and stream handle) into an open bwriteStream suitable for write
-+ *  streaming functions.
-+ */
-+struct bwriteStream * bwsOpen (bNwrite writeFn, void * parm) {
-+struct bwriteStream * ws;
-+
-+	if (NULL == writeFn) return NULL;
-+	ws = (struct bwriteStream *) malloc (sizeof (struct bwriteStream));
-+	if (ws) {
-+		if (NULL == (ws->buff = bfromcstr (""))) {
-+			free (ws);
-+			ws = NULL;
-+		} else {
-+			ws->parm = parm;
-+			ws->writeFn = writeFn;
-+			ws->isEOF = 0;
-+			ws->minBuffSz = BWS_BUFF_SZ;
-+		}
-+	}
-+	return ws;
-+}
-+
-+#define internal_bwswriteout(ws,b) { \
-+	if ((b)->slen > 0) { \
-+		if (1 != (ws->writeFn ((b)->data, (b)->slen, 1, ws->parm))) { \
-+			ws->isEOF = 1; \
-+			return BSTR_ERR; \
-+		} \
-+	} \
-+}
-+
-+/*  int bwsWriteFlush (struct bwriteStream * ws)
-+ *
-+ *  Force any pending data to be written to the core stream.
-+ */
-+int bwsWriteFlush (struct bwriteStream * ws) {
-+	if (NULL == ws || ws->isEOF || 0 >= ws->minBuffSz || 
-+	    NULL == ws->writeFn || NULL == ws->buff) return BSTR_ERR;
-+	internal_bwswriteout (ws, ws->buff);
-+	ws->buff->slen = 0;
-+	return 0;
-+}
-+
-+/*  int bwsWriteBstr (struct bwriteStream * ws, const_bstring b)
-+ *
-+ *  Send a bstring to a bwriteStream.  If the stream is at EOF BSTR_ERR is
-+ *  returned.  Note that there is no deterministic way to determine the exact
-+ *  cut off point where the core stream stopped accepting data.
-+ */
-+int bwsWriteBstr (struct bwriteStream * ws, const_bstring b) {
-+struct tagbstring t;
-+int l;
-+
-+	if (NULL == ws || NULL == b || NULL == ws->buff ||
-+	    ws->isEOF || 0 >= ws->minBuffSz || NULL == ws->writeFn)
-+		return BSTR_ERR;
-+
-+	/* Buffer prepacking optimization */
-+	if (b->slen > 0 && ws->buff->mlen - ws->buff->slen > b->slen) {
-+		static struct tagbstring empty = bsStatic ("");
-+		if (0 > bconcat (ws->buff, b)) return BSTR_ERR;
-+		return bwsWriteBstr (ws, &empty);
-+	}
-+
-+	if (0 > (l = ws->minBuffSz - ws->buff->slen)) {
-+		internal_bwswriteout (ws, ws->buff);
-+		ws->buff->slen = 0;
-+		l = ws->minBuffSz;
-+	}
-+
-+	if (b->slen < l) return bconcat (ws->buff, b);
-+
-+	if (0 > bcatblk (ws->buff, b->data, l)) return BSTR_ERR;
-+	internal_bwswriteout (ws, ws->buff);
-+	ws->buff->slen = 0;
-+
-+	bmid2tbstr (t, (bstring) b, l, b->slen);
-+
-+	if (t.slen >= ws->minBuffSz) {
-+		internal_bwswriteout (ws, &t);
-+		return 0;
-+	}
-+
-+	return bassign (ws->buff, &t);
-+}
-+
-+/*  int bwsWriteBlk (struct bwriteStream * ws, void * blk, int len)
-+ *
-+ *  Send a block of data a bwriteStream.  If the stream is at EOF BSTR_ERR is 
-+ *  returned.
-+ */
-+int bwsWriteBlk (struct bwriteStream * ws, void * blk, int len) {
-+struct tagbstring t;
-+	if (NULL == blk || len < 0) return BSTR_ERR;
-+	blk2tbstr (t, blk, len);
-+	return bwsWriteBstr (ws, &t);
-+}
-+
-+/*  int bwsIsEOF (const struct bwriteStream * ws)
-+ *
-+ *  Returns 0 if the stream is currently writable, 1 if the core stream has 
-+ *  responded by not accepting the previous attempted write.
-+ */
-+int bwsIsEOF (const struct bwriteStream * ws) {
-+	if (NULL == ws || NULL == ws->buff || 0 > ws->minBuffSz || 
-+	    NULL == ws->writeFn) return BSTR_ERR;
-+	return ws->isEOF;
-+}
-+
-+/*  int bwsBuffLength (struct bwriteStream * ws, int sz)
-+ *
-+ *  Set the length of the buffer used by the bwsStream.  If sz is zero, the 
-+ *  length is not set.  This function returns with the previous length.
-+ */
-+int bwsBuffLength (struct bwriteStream * ws, int sz) {
-+int oldSz;
-+	if (ws == NULL || sz < 0) return BSTR_ERR;
-+	oldSz = ws->minBuffSz;
-+	if (sz > 0) ws->minBuffSz = sz;
-+	return oldSz;
-+}
-+
-+/*  void * bwsClose (struct bwriteStream * s)
-+ *
-+ *  Close the bwriteStream, and return the handle to the stream that was 
-+ *  originally used to open the given stream.  Note that even if the stream
-+ *  is at EOF it still needs to be closed with a call to bwsClose.
-+ */
-+void * bwsClose (struct bwriteStream * ws) {
-+void * parm;
-+	if (NULL == ws || NULL == ws->buff || 0 >= ws->minBuffSz || 
-+	    NULL == ws->writeFn) return NULL;
-+	bwsWriteFlush (ws);
-+	parm = ws->parm;
-+	ws->parm = NULL;
-+	ws->minBuffSz = -1;
-+	ws->writeFn = NULL;
-+	bstrFree (ws->buff);
-+	free (ws);
-+	return parm;
-+}
-+
-diff -urp pads-1.2.orig/lib/bstring/bstraux.h pads-1.2/lib/bstring/bstraux.h
---- pads-1.2.orig/lib/bstring/bstraux.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/lib/bstring/bstraux.h	2008-07-10 18:09:21.000000000 -0400
-@@ -1,14 +1,14 @@
- /*
-  * This source file is part of the bstring string library.  This code was
-- * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source 
-- * license. Refer to the accompanying documentation for details on usage and 
-- * license.
-+ * written by Paul Hsieh in 2002-2008, and is covered by the BSD open source 
-+ * license and the GPL. Refer to the accompanying documentation for details 
-+ * on usage and license.
-  */
- 
- /*
-  * bstraux.h
-  *
-- * This file is not necessarily part of the core bstring library itself, but
-+ * This file is not a necessary part of the core bstring library itself, but
-  * is just an auxilliary module which includes miscellaneous or trivial 
-  * functions.
-  */
-@@ -16,37 +16,47 @@
- #ifndef BSTRAUX_INCLUDE
- #define BSTRAUX_INCLUDE
- 
-+#include <time.h>
- #include "bstrlib.h"
- 
- #ifdef __cplusplus
- extern "C" {
- #endif
- 
-+/* Safety mechanisms */
- #define bstrDeclare(b)               bstring (b) = NULL; 
- #define bstrFree(b)                  {if ((b) != NULL && (b)->slen >= 0 && (b)->mlen >= (b)->slen) { bdestroy (b); (b) = NULL; }}
- 
--/* Backward compatibilty with previous version of Bstrlib */
-+/* Backward compatibilty with previous versions of Bstrlib */
- #define bAssign(a,b)                 ((bassign)((a), (b)))
- #define bSubs(b,pos,len,a,c)         ((breplace)((b),(pos),(len),(a),(unsigned char)(c)))
--#define bStrchr(b,c)                 ((bstrchr)((b),(c)))
--#define bStrchrFast(b,c)             ((bstrchr)((b),(c)))
-+#define bStrchr(b,c)                 ((bstrchr)((b), (c)))
-+#define bStrchrFast(b,c)             ((bstrchr)((b), (c)))
- #define bCatCstr(b,s)                ((bcatcstr)((b), (s)))
- #define bCatBlk(b,s,len)             ((bcatblk)((b),(s),(len)))
--#define bCatStatic(b,s)              bCatBlk ((b), (s), sizeof (s) - 1)
-+#define bCatStatic(b,s)              bCatBlk ((b), ("" s ""), sizeof (s) - 1)
-+#define bTrunc(b,n)                  ((btrunc)((b), (n)))
- #define bReplaceAll(b,find,repl,pos) ((bfindreplace)((b),(find),(repl),(pos)))
- #define bUppercase(b)                ((btoupper)(b))
- #define bLowercase(b)                ((btolower)(b))
--#define bCaselessCmp(a,b)            ((bstricmp)(a,b))
--#define bCaselessNCmp(a,b,n)         ((bstrnicmp)(a,b,n))
-+#define bCaselessCmp(a,b)            ((bstricmp)((a), (b)))
-+#define bCaselessNCmp(a,b,n)         ((bstrnicmp)((a), (b), (n)))
-+#define bBase64Decode(b)             (bBase64DecodeEx ((b), NULL))
-+#define bUuDecode(b)                 (bUuDecodeEx ((b), NULL))
- 
- /* Unusual functions */
--extern int bTrunc (bstring b, int n);
-+extern struct bStream * bsFromBstr (const_bstring b);
- extern bstring bTail (bstring b, int n);
- extern bstring bHead (bstring b, int n);
-+extern int bSetCstrChar (bstring a, int pos, char c);
-+extern int bSetChar (bstring b, int pos, char c);
- extern int bFill (bstring a, char c, int len);
- extern int bReplicate (bstring b, int n);
- extern int bReverse (bstring b);
- extern int bInsertChrs (bstring b, int pos, int len, unsigned char c, unsigned char fill);
-+extern bstring bStrfTime (const char * fmt, const struct tm * timeptr);
-+#define bAscTime(t) (bStrfTime ("%c\n", (t)))
-+#define bCTime(t)   ((t) ? bAscTime (localtime (t)) : NULL)
- 
- /* Spacing formatting */
- extern int bJustifyLeft (bstring b, int space);
-@@ -55,14 +65,45 @@ extern int bJustifyMargin (bstring b, in
- extern int bJustifyCenter (bstring b, int width, int space);
- 
- /* Esoteric standards specific functions */
--extern char * bStr2NetStr (const bstring b);
-+extern char * bStr2NetStr (const_bstring b);
- extern bstring bNetStr2Bstr (const char * buf);
--extern bstring bBase64Encode (const bstring b);
--extern bstring bBase64Decode (const bstring b);
--extern bstring bUuDecode (const bstring src);
--extern bstring bUuEncode (const bstring src);
--extern bstring bYEncode (const bstring src);
--extern bstring bYDecode (const bstring src);
-+extern bstring bBase64Encode (const_bstring b);
-+extern bstring bBase64DecodeEx (const_bstring b, int * boolTruncError);
-+extern struct bStream * bsUuDecode (struct bStream * sInp, int * badlines);
-+extern bstring bUuDecodeEx (const_bstring src, int * badlines);
-+extern bstring bUuEncode (const_bstring src);
-+extern bstring bYEncode (const_bstring src);
-+extern bstring bYDecode (const_bstring src);
-+
-+/* Writable stream */
-+typedef int (* bNwrite) (const void * buf, size_t elsize, size_t nelem, void * parm);
-+
-+struct bwriteStream * bwsOpen (bNwrite writeFn, void * parm);
-+int bwsWriteBstr (struct bwriteStream * stream, const_bstring b);
-+int bwsWriteBlk (struct bwriteStream * stream, void * blk, int len);
-+int bwsWriteFlush (struct bwriteStream * stream);
-+int bwsIsEOF (const struct bwriteStream * stream);
-+int bwsBuffLength (struct bwriteStream * stream, int sz);
-+void * bwsClose (struct bwriteStream * stream);
-+
-+/* Security functions */
-+#define bSecureDestroy(b) {	                                            \
-+bstring bstr__tmp = (b);	                                            \
-+	if (bstr__tmp && bstr__tmp->mlen > 0 && bstr__tmp->data) {          \
-+	    (void) memset (bstr__tmp->data, 0, (size_t) bstr__tmp->mlen);   \
-+	    bdestroy (bstr__tmp);                                           \
-+	}                                                                   \
-+}
-+#define bSecureWriteProtect(t) {	                                              \
-+	if ((t).mlen >= 0) {                                                          \
-+	    if ((t).mlen > (t).slen)) {                                               \
-+	        (void) memset ((t).data + (t).slen, 0, (size_t) (t).mlen - (t).slen); \
-+	    }                                                                         \
-+	    (t).mlen = -1;                                                            \
-+	}                                                                             \
-+}
-+extern bstring bSecureInput (int maxlen, int termchar, 
-+                             bNgetc vgetchar, void * vgcCtx);
- 
- #ifdef __cplusplus
- }
-diff -urp pads-1.2.orig/lib/bstring/bstrlib.c pads-1.2/lib/bstring/bstrlib.c
---- pads-1.2.orig/lib/bstring/bstrlib.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/lib/bstring/bstrlib.c	2008-07-10 18:09:06.000000000 -0400
-@@ -1,8 +1,8 @@
- /*
-  * This source file is part of the bstring string library.  This code was
-- * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source 
-- * license. Refer to the accompanying documentation for details on usage and 
-- * license.
-+ * written by Paul Hsieh in 2002-2008, and is covered by the BSD open source 
-+ * license and the GPL. Refer to the accompanying documentation for details 
-+ * on usage and license.
-  */
- 
- /*
-@@ -12,6 +12,7 @@
-  */
- 
- #include <stdio.h>
-+#include <stddef.h>
- #include <stdarg.h>
- #include <stdlib.h>
- #include <string.h>
-@@ -24,9 +25,41 @@
- #include "memdbg.h"
- #endif
- 
-+#ifndef bstr__alloc
-+#define bstr__alloc(x) malloc (x)
-+#endif
-+
-+#ifndef bstr__free
-+#define bstr__free(p) free (p)
-+#endif
-+
-+#ifndef bstr__realloc
-+#define bstr__realloc(p,x) realloc ((p), (x))
-+#endif
-+
-+#ifndef bstr__memcpy
-+#define bstr__memcpy(d,s,l) memcpy ((d), (s), (l))
-+#endif
-+
-+#ifndef bstr__memmove
-+#define bstr__memmove(d,s,l) memmove ((d), (s), (l))
-+#endif
-+
-+#ifndef bstr__memset
-+#define bstr__memset(d,c,l) memset ((d), (c), (l))
-+#endif
-+
-+#ifndef bstr__memcmp
-+#define bstr__memcmp(d,c,l) memcmp ((d), (c), (l))
-+#endif
-+
-+#ifndef bstr__memchr
-+#define bstr__memchr(s,c,l) memchr ((s), (c), (l))
-+#endif
-+
- /* Just a length safe wrapper for memmove. */
- 
--#define bBlockCopy(D,S,L) { if ((L) > 0) memmove ((D),(S),(L)); }
-+#define bBlockCopy(D,S,L) { if ((L) > 0) bstr__memmove ((D),(S),(L)); }
- 
- /* Compute the snapped size for a given requested size.  By snapping to powers
-    of 2 like this, repeated reallocations are avoided. */
-@@ -35,16 +68,21 @@ static int snapUpSize (int i) {
- 		i = 8;
- 	} else {
- 		unsigned int j;
--		j = i;
-+		j = (unsigned int) i;
- 
--		/* Assumes your system is at least 32 bits, and your string is
--		   at most 4GB is size. */
- 		j |= (j >>  1);
- 		j |= (j >>  2);
- 		j |= (j >>  4);
--		j |= (j >>  8);
--		j |= (j >> 16);
--		i = j + 1;		/* Least power of two greater than i */
-+		j |= (j >>  8);		/* Ok, since int >= 16 bits */
-+#if (UINT_MAX != 0xffff)
-+		j |= (j >> 16);		/* For 32 bit int systems */
-+#if (UINT_MAX > 0xffffffffUL)
-+		j |= (j >> 32);		/* For 64 bit int systems */
-+#endif
-+#endif
-+		/* Least power of two greater than i */
-+		j++;
-+		if ((int) j >= i) i = (int) j;
- 	}
- 	return i;
- }
-@@ -53,16 +91,17 @@ static int snapUpSize (int i) {
-  *
-  *  Increase the size of the memory backing the bstring b to at least len.
-  */
--int balloc (bstring b, int len) {
--	if (b == NULL || b->data == NULL || b->slen < 0 || b->mlen < 0 || 
--	    b->mlen < b->slen || len <= 0) {
-+int balloc (bstring b, int olen) {
-+	int len;
-+	if (b == NULL || b->data == NULL || b->slen < 0 || b->mlen <= 0 || 
-+	    b->mlen < b->slen || olen <= 0) {
- 		return BSTR_ERR;
- 	}
- 
--	if (len >= b->mlen) {
-+	if (olen >= b->mlen) {
- 		unsigned char * x;
- 
--		len = snapUpSize (len);
-+		if ((len = snapUpSize (olen)) <= b->mlen) return BSTR_OK;
- 
- 		/* Assume probability of a non-moving realloc is 0.125 */
- 		if (7 * b->mlen < 8 * b->slen) {
-@@ -70,26 +109,66 @@ int balloc (bstring b, int len) {
- 			/* If slen is close to mlen in size then use realloc to reduce
- 			   the memory defragmentation */
- 
--			x = (unsigned char *) realloc (b->data, len);
--			if (x == NULL) return BSTR_ERR;
-+			reallocStrategy:;
-+
-+			x = (unsigned char *) bstr__realloc (b->data, (size_t) len);
-+			if (x == NULL) {
-+
-+				/* Since we failed, try allocating the tighest possible 
-+				   allocation */
-+
-+				if (NULL == (x = (unsigned char *) bstr__realloc (b->data, (size_t) (len = olen)))) {
-+					return BSTR_ERR;
-+				}
-+			}
- 		} else {
- 
- 			/* If slen is not close to mlen then avoid the penalty of copying
- 			   the extra bytes that are allocated, but not considered part of
- 			   the string */
- 
--			x = (unsigned char *) malloc (len);
--			if (x == NULL) {
--				x = (unsigned char *) realloc (b->data, len);
--				if (x == NULL) return BSTR_ERR;
-+			if (NULL == (x = (unsigned char *) bstr__alloc ((size_t) len))) {
-+
-+				/* Perhaps there is no available memory for the two 
-+				   allocations to be in memory at once */
-+
-+				goto reallocStrategy;
-+
- 			} else {
--				if (b->slen) memcpy ((char *) x, (char *) b->data, b->slen);
--				free (b->data);
-+				if (b->slen) bstr__memcpy ((char *) x, (char *) b->data, (size_t) b->slen);
-+				bstr__free (b->data);
- 			}
- 		}
- 		b->data = x;
- 		b->mlen = len;
--		b->data[b->slen] = '\0';
-+		b->data[b->slen] = (unsigned char) '\0';
-+	}
-+
-+	return BSTR_OK;
-+}
-+
-+/*  int ballocmin (bstring b, int len)
-+ *
-+ *  Set the size of the memory backing the bstring b to len or b->slen+1,
-+ *  whichever is larger.  Note that repeated use of this function can degrade
-+ *  performance.
-+ */
-+int ballocmin (bstring b, int len) {
-+	unsigned char * s;
-+
-+	if (b == NULL || b->data == NULL || (b->slen+1) < 0 || b->mlen <= 0 || 
-+	    b->mlen < b->slen || len <= 0) {
-+		return BSTR_ERR;
-+	}
-+
-+	if (len < b->slen + 1) len = b->slen + 1;
-+
-+	if (len != b->mlen) {
-+		s = (unsigned char *) bstr__realloc (b->data, (size_t) len);
-+		if (NULL == s) return BSTR_ERR;
-+		s[b->slen] = (unsigned char) '\0';
-+		b->data = s;
-+		b->mlen = len;
- 	}
- 
- 	return BSTR_OK;
-@@ -97,31 +176,58 @@ int balloc (bstring b, int len) {
- 
- /*  bstring bfromcstr (const char * str)
-  *
-- *  Create a bstring which contains the content of the '\0' terminated char *
-+ *  Create a bstring which contains the contents of the '\0' terminated char *
-  *  buffer str.
-  */
- bstring bfromcstr (const char * str) {
- bstring b;
--int i,j;
-+int i;
-+size_t j;
- 
- 	if (str == NULL) return NULL;
--	b = (bstring) malloc (sizeof (struct tagbstring));
--	if (b == NULL) return NULL;
--	j = (int) (strlen) (str); 
--	b->slen = j;
-+	j = (strlen) (str);
-+	i = snapUpSize ((int) (j + (2 - (j != 0))));
-+	if (i <= (int) j) return NULL;
-+
-+	b = (bstring) bstr__alloc (sizeof (struct tagbstring));
-+	if (NULL == b) return NULL;
-+	b->slen = (int) j;
-+	if (NULL == (b->data = (unsigned char *) bstr__alloc (b->mlen = i))) {
-+		bstr__free (b);
-+		return NULL;
-+	}
- 
--	i = j + (2 - (j != 0));
--	i = snapUpSize (i);
-+	bstr__memcpy (b->data, str, j+1);
-+	return b;
-+}
- 
--	b->mlen = i;
-+/*  bstring bfromcstralloc (int mlen, const char * str)
-+ *
-+ *  Create a bstring which contains the contents of the '\0' terminated char *
-+ *  buffer str.  The memory buffer backing the string is at least len 
-+ *  characters in length.
-+ */
-+bstring bfromcstralloc (int mlen, const char * str) {
-+bstring b;
-+int i;
-+size_t j;
- 
--	b->data = (unsigned char *) malloc (b->mlen);
--	if (b->data == NULL) {
--		free (b);
-+	if (str == NULL) return NULL;
-+	j = (strlen) (str);
-+	i = snapUpSize ((int) (j + (2 - (j != 0))));
-+	if (i <= (int) j) return NULL;
-+
-+	b = (bstring) bstr__alloc (sizeof (struct tagbstring));
-+	if (b == NULL) return NULL;
-+	b->slen = (int) j;
-+	if (i < mlen) i = mlen;
-+
-+	if (NULL == (b->data = (unsigned char *) bstr__alloc (b->mlen = i))) {
-+		bstr__free (b);
- 		return NULL;
- 	}
- 
--	memcpy (b->data, str, j+1);
-+	bstr__memcpy (b->data, str, j+1);
- 	return b;
- }
- 
-@@ -135,7 +241,7 @@ bstring b;
- int i;
- 
- 	if (blk == NULL || len < 0) return NULL;
--	b = (bstring) malloc (sizeof (struct tagbstring));
-+	b = (bstring) bstr__alloc (sizeof (struct tagbstring));
- 	if (b == NULL) return NULL;
- 	b->slen = len;
- 
-@@ -144,81 +250,96 @@ int i;
- 
- 	b->mlen = i;
- 
--	b->data = (unsigned char *) malloc (b->mlen) ;
-+	b->data = (unsigned char *) bstr__alloc ((size_t) b->mlen);
- 	if (b->data == NULL) {
--		free (b);
-+		bstr__free (b);
- 		return NULL;
- 	}
- 
--	if (len > 0) memcpy (b->data, blk, len);
--	b->data[len] = '\0';
-+	if (len > 0) bstr__memcpy (b->data, blk, (size_t) len);
-+	b->data[len] = (unsigned char) '\0';
- 
- 	return b;
- }
- 
--/*  char * bstr2cstr (const bstring s, char z)
-+/*  char * bstr2cstr (const_bstring s, char z)
-  *
-  *  Create a '\0' terminated char * buffer which is equal to the contents of 
-- *  the bstring s, except that any contained '\0' characters are converted to 
-- *  the character in z. This returned value should be freed with a free() 
-- *  call, by the calling application.
-+ *  the bstring s, except that any contained '\0' characters are converted 
-+ *  to the character in z. This returned value should be freed with a 
-+ *  bcstrfree () call, by the calling application.
-  */
--char * bstr2cstr (const bstring b, char z) {
--int i,l;
-+char * bstr2cstr (const_bstring b, char z) {
-+int i, l;
- char * r;
- 
- 	if (b == NULL || b->slen < 0 || b->data == NULL) return NULL;
- 	l = b->slen;
--	r = (char *) malloc (l + 1);
-+	r = (char *) bstr__alloc ((size_t) (l + 1));
- 	if (r == NULL) return r;
- 
- 	for (i=0; i < l; i ++) {
- 		r[i] = (char) ((b->data[i] == '\0') ? z : (char) (b->data[i]));
- 	}
- 
--	r[l] = '\0';
-+	r[l] = (unsigned char) '\0';
- 
- 	return r;
- }
- 
--/*  int bcstrfree (const char * s)
-+/*  int bcstrfree (char * s)
-  *
-  *  Frees a C-string generated by bstr2cstr ().  This is normally unnecessary
-- *  since it just wraps a call to free (), however, if malloc () and free () 
-- *  have been redefined as a macros within the bstrlib module (via defining 
-- *  them in memdbg.h after defining BSTRLIB_MEMORY_DEBUG) with some 
-- *  difference in behaviour from the std library functions, then this allows 
-- *  a correct way of freeing the memory that allows higher level code to be 
-- *  independent from these macro redefinitions.
-+ *  since it just wraps a call to bstr__free (), however, if bstr__alloc () 
-+ *  and bstr__free () have been redefined as a macros within the bstrlib 
-+ *  module (via defining them in memdbg.h after defining 
-+ *  BSTRLIB_MEMORY_DEBUG) with some difference in behaviour from the std 
-+ *  library functions, then this allows a correct way of freeing the memory 
-+ *  that allows higher level code to be independent from these macro 
-+ *  redefinitions.
-  */
- int bcstrfree (char * s) {
- 	if (s) {
--		free (s);
-+		bstr__free (s);
- 		return BSTR_OK;
- 	}
- 	return BSTR_ERR;
- }
- 
--/*  int bconcat (bstring b0, const bstring b1)
-+/*  int bconcat (bstring b0, const_bstring b1)
-  *
-  *  Concatenate the bstring b1 to the bstring b0.
-  */
--int bconcat (bstring b0, const bstring b1) {
-+int bconcat (bstring b0, const_bstring b1) {
- int len, d;
-+bstring aux = (bstring) b1;
-+
-+	if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL) return BSTR_ERR;
- 
--	if (b0 == NULL || b1 == NULL) return BSTR_ERR;
- 	d = b0->slen;
- 	len = b1->slen;
--	if ((d | (b0->mlen - d) | len) < 0) return BSTR_ERR;
--	if (balloc (b0, d + len + 1) != BSTR_OK) return BSTR_ERR;
--	bBlockCopy (&b0->data[d], &b1->data[0], len);
--	b0->data[d + len] = '\0';
--	b0->slen += len;
--	return 0;
-+	if ((d | (b0->mlen - d) | len | (d + len)) < 0) return BSTR_ERR;
-+
-+	if (b0->mlen <= d + len + 1) {
-+		ptrdiff_t pd = b1->data - b0->data;
-+		if (0 <= pd && pd < b0->mlen) {
-+			if (NULL == (aux = bstrcpy (b1))) return BSTR_ERR;
-+		}
-+		if (balloc (b0, d + len + 1) != BSTR_OK) {
-+			if (aux != b1) bdestroy (aux);
-+			return BSTR_ERR;
-+		}
-+	}
-+
-+	bBlockCopy (&b0->data[d], &aux->data[0], (size_t) len);
-+	b0->data[d + len] = (unsigned char) '\0';
-+	b0->slen = d + len;
-+	if (aux != b1) bdestroy (aux);
-+	return BSTR_OK;
- }
- 
- /*  int bconchar (bstring b, char c)
-- *
-+/ *
-  *  Concatenate the single character c to the bstring b.
-  */
- int bconchar (bstring b, char c) {
-@@ -228,9 +349,9 @@ int d;
- 	d = b->slen;
- 	if ((d | (b->mlen - d)) < 0 || balloc (b, d + 2) != BSTR_OK) return BSTR_ERR;
- 	b->data[d] = (unsigned char) c;
--	b->data[d + 1] = '\0';
-+	b->data[d + 1] = (unsigned char) '\0';
- 	b->slen++;
--	return 0;
-+	return BSTR_OK;
- }
- 
- /*  int bcatcstr (bstring b, const char * s)
-@@ -238,11 +359,11 @@ int d;
-  *  Concatenate a char * string to a bstring.
-  */
- int bcatcstr (bstring b, const char * s) {
--struct tagbstring t;
- char * d;
- int i, l;
- 
--	if (b == NULL || b->data == NULL || b->slen < 0 || s == NULL) return BSTR_ERR;
-+	if (b == NULL || b->data == NULL || b->slen < 0 || b->mlen < b->slen
-+	 || b->mlen <= 0 || s == NULL) return BSTR_ERR;
- 
- 	/* Optimistically concatenate directly */
- 	l = b->mlen - b->slen;
-@@ -256,34 +377,40 @@ int i, l;
- 	b->slen += i;
- 
- 	/* Need to explicitely resize and concatenate tail */
--	cstr2tbstr (t, s);
--	return bconcat (b, &t);
-+	return bcatblk (b, (const void *) s, (int) strlen (s));
- }
- 
--/*  int bcatblk (bstring b, unsigned char * s, int len)
-+/*  int bcatblk (bstring b, const void * s, int len)
-  *
-  *  Concatenate a fixed length buffer to a bstring.
-  */
--int bcatblk (bstring b, const unsigned char * s, int len) {
--struct tagbstring t;
-+int bcatblk (bstring b, const void * s, int len) {
-+int nl;
-+
-+	if (b == NULL || b->data == NULL || b->slen < 0 || b->mlen < b->slen
-+	 || b->mlen <= 0 || s == NULL || len < 0) return BSTR_ERR;
-+
-+	if (0 > (nl = b->slen + len)) return BSTR_ERR; /* Overflow? */
-+	if (b->mlen <= nl && 0 > balloc (b, nl + 1)) return BSTR_ERR;
- 
--	if (s == NULL || len < 0) return BSTR_ERR;
--	blk2tbstr (t, s, len);
--	return bconcat (b, &t);
-+	bBlockCopy (&b->data[b->slen], s, (size_t) len);
-+	b->slen = nl;
-+	b->data[nl] = (unsigned char) '\0';
-+	return BSTR_OK;
- }
- 
--/*  bstring bstrcpy (const bstring b)
-+/*  bstring bstrcpy (const_bstring b)
-  *
-  *  Create a copy of the bstring b.
-  */
--bstring bstrcpy (const bstring b) {
-+bstring bstrcpy (const_bstring b) {
- bstring b0;
- int i,j;
- 
- 	/* Attempted to copy an invalid string? */
- 	if (b == NULL || b->slen < 0 || b->data == NULL) return NULL;
- 
--	b0 = (bstring) malloc (sizeof (struct tagbstring));
-+	b0 = (bstring) bstr__alloc (sizeof (struct tagbstring));
- 	if (b0 == NULL) {
- 		/* Unable to allocate memory for string header */
- 		return NULL;
-@@ -292,13 +419,13 @@ int i,j;
- 	i = b->slen;
- 	j = snapUpSize (i + 1);
- 
--	b0->data = (unsigned char *) malloc (j);
-+	b0->data = (unsigned char *) bstr__alloc (j);
- 	if (b0->data == NULL) {
- 		j = i + 1;
--		b0->data = (unsigned char *) malloc (j);
-+		b0->data = (unsigned char *) bstr__alloc (j);
- 		if (b0->data == NULL) {
- 			/* Unable to allocate memory for string data */
--			free (b0);
-+			bstr__free (b0);
- 			return NULL;
- 		}
- 	}
-@@ -306,35 +433,127 @@ int i,j;
- 	b0->mlen = j;
- 	b0->slen = i;
- 
--	if (i) memcpy ((char *) b0->data, (char *) b->data, i);
--	b0->data[b0->slen] = '\0';
-+	if (i) bstr__memcpy ((char *) b0->data, (char *) b->data, i);
-+	b0->data[b0->slen] = (unsigned char) '\0';
- 
- 	return b0;
- }
- 
--/*  int bassign (bstring a, const bstring b)
-+/*  int bassign (bstring a, const_bstring b)
-  *
-  *  Overwrite the string a with the contents of string b.
-  */
--int bassign (bstring a, const bstring b) {
--	if (b == NULL || b->data == NULL || b->slen < 0 ) 
-+int bassign (bstring a, const_bstring b) {
-+	if (b == NULL || b->data == NULL || b->slen < 0)
- 		return BSTR_ERR;
- 	if (b->slen != 0) {
- 		if (balloc (a, b->slen) != BSTR_OK) return BSTR_ERR;
--		memmove (a->data, b->data, b->slen);
-+		bstr__memmove (a->data, b->data, b->slen);
- 	} else {
- 		if (a == NULL || a->data == NULL || a->mlen < a->slen || 
- 		    a->slen < 0 || a->mlen == 0) 
- 			return BSTR_ERR;
- 	}
--	a->data[b->slen] = '\0';
-+	a->data[b->slen] = (unsigned char) '\0';
- 	a->slen = b->slen;
- 	return BSTR_OK;
- }
- 
--#define    ascii(c) ((unsigned char)(c) < 128)
--#define   upcase(c) ((c) + (((ascii(c) && islower(c)) ? ('A'-'a') : 0)))
--#define downcase(c) ((c) + (((ascii(c) && isupper(c)) ? ('a'-'A') : 0)))
-+/*  int bassignmidstr (bstring a, const_bstring b, int left, int len)
-+ *
-+ *  Overwrite the string a with the middle of contents of string b 
-+ *  starting from position left and running for a length len.  left and 
-+ *  len are clamped to the ends of b as with the function bmidstr.
-+ */
-+int bassignmidstr (bstring a, const_bstring b, int left, int len) {
-+	if (b == NULL || b->data == NULL || b->slen < 0)
-+		return BSTR_ERR;
-+
-+	if (left < 0) {
-+		len += left;
-+		left = 0;
-+	}
-+
-+	if (len > b->slen - left) len = b->slen - left;
-+
-+	if (a == NULL || a->data == NULL || a->mlen < a->slen ||
-+	    a->slen < 0 || a->mlen == 0)
-+		return BSTR_ERR;
-+
-+	if (len > 0) {
-+		if (balloc (a, len) != BSTR_OK) return BSTR_ERR;
-+		bstr__memmove (a->data, b->data + left, len);
-+		a->slen = len;
-+	} else {
-+		a->slen = 0;
-+	}
-+	a->data[a->slen] = (unsigned char) '\0';
-+	return BSTR_OK;
-+}
-+
-+/*  int bassigncstr (bstring a, const char * str)
-+ *
-+ *  Overwrite the string a with the contents of char * string str.  Note that 
-+ *  the bstring a must be a well defined and writable bstring.  If an error 
-+ *  occurs BSTR_ERR is returned however a may be partially overwritten.
-+ */
-+int bassigncstr (bstring a, const char * str) {
-+int i;
-+size_t len;
-+	if (a == NULL || a->data == NULL || a->mlen < a->slen ||
-+	    a->slen < 0 || a->mlen == 0 || NULL == str) 
-+		return BSTR_ERR;
-+
-+	for (i=0; i < a->mlen; i++) {
-+		if ('\0' == (a->data[i] = str[i])) {
-+			a->slen = i;
-+			return BSTR_OK;
-+		}
-+	}
-+
-+	a->slen = i;
-+	len = strlen (str + i);
-+	if (len > INT_MAX || i + len + 1 > INT_MAX ||
-+	    0 > balloc (a, (int) (i + len + 1))) return BSTR_ERR;
-+	bBlockCopy (a->data + i, str + i, (size_t) len + 1);
-+	a->slen += (int) len;
-+	return BSTR_OK;
-+}
-+
-+/*  int bassignblk (bstring a, const void * s, int len)
-+ *
-+ *  Overwrite the string a with the contents of the block (s, len).  Note that 
-+ *  the bstring a must be a well defined and writable bstring.  If an error 
-+ *  occurs BSTR_ERR is returned and a is not overwritten.
-+ */
-+int bassignblk (bstring a, const void * s, int len) {
-+	if (a == NULL || a->data == NULL || a->mlen < a->slen ||
-+	    a->slen < 0 || a->mlen == 0 || NULL == s || len + 1 < 1) 
-+		return BSTR_ERR;
-+	if (len + 1 > a->mlen && 0 > balloc (a, len + 1)) return BSTR_ERR;
-+	bBlockCopy (a->data, s, (size_t) len);
-+	a->data[len] = (unsigned char) '\0';
-+	a->slen = len;
-+	return BSTR_OK;
-+}
-+
-+/*  int btrunc (bstring b, int n)
-+ *
-+ *  Truncate the bstring to at most n characters.
-+ */
-+int btrunc (bstring b, int n) {
-+	if (n < 0 || b == NULL || b->data == NULL || b->mlen < b->slen ||
-+	    b->slen < 0 || b->mlen <= 0) return BSTR_ERR;
-+	if (b->slen > n) {
-+		b->slen = n;
-+		b->data[n] = (unsigned char) '\0';
-+	}
-+	return BSTR_OK;
-+}
-+
-+#define   upcase(c) (toupper ((unsigned char) c))
-+#define downcase(c) (tolower ((unsigned char) c))
-+#define   wspace(c) (isspace ((unsigned char) c))
- 
- /*  int btoupper (bstring b)
-  *
-@@ -343,7 +562,7 @@ int bassign (bstring a, const bstring b)
- int btoupper (bstring b) {
- int i, len;
- 	if (b == NULL || b->data == NULL || b->mlen < b->slen ||
--	    b->slen < 0) return BSTR_ERR;
-+	    b->slen < 0 || b->mlen <= 0) return BSTR_ERR;
- 	for (i=0, len = b->slen; i < len; i++) {
- 		b->data[i] = (unsigned char) upcase (b->data[i]);
- 	}
-@@ -357,50 +576,60 @@ int i, len;
- int btolower (bstring b) {
- int i, len;
- 	if (b == NULL || b->data == NULL || b->mlen < b->slen ||
--	    b->slen < 0) return BSTR_ERR;
-+	    b->slen < 0 || b->mlen <= 0) return BSTR_ERR;
- 	for (i=0, len = b->slen; i < len; i++) {
- 		b->data[i] = (unsigned char) downcase (b->data[i]);
- 	}
--	return 0;
-+	return BSTR_OK;
- }
- 
--/*  int bstricmp (const bstring b0, const bstring b1)
-+/*  int bstricmp (const_bstring b0, const_bstring b1)
-  *
-  *  Compare two strings without differentiating between case.  The return 
-  *  value is the difference of the values of the characters where the two 
-- *  strings first differ, (taking a '\0' to be the character at the end of 
-- *  any bstring) otherwise 0 is returned indicating that the strings are
-- *  equal.
-+ *  strings first differ after lower case transformation, otherwise 0 is 
-+ *  returned indicating that the strings are equal.  If the lengths are 
-+ *  different, then a difference from 0 is given, but if the first extra 
-+ *  character is '\0', then it is taken to be the value UCHAR_MAX+1.
-  */
--int bstricmp (const bstring b0, const bstring b1) {
-+int bstricmp (const_bstring b0, const_bstring b1) {
- int i, v, n;
- 
- 	if (bdata (b0) == NULL || b0->slen < 0 || 
- 	    bdata (b1) == NULL || b1->slen < 0) return SHRT_MIN;
--	n = b0->slen; if (n > b1->slen) n = b1->slen;
--	if (b0->slen == b1->slen && b0->data == b1->data) return 0;
-+	if ((n = b0->slen) > b1->slen) n = b1->slen;
-+	else if (b0->slen == b1->slen && b0->data == b1->data) return BSTR_OK;
- 
- 	for (i = 0; i < n; i ++) {
--		v  = ((char) downcase (b0->data[i]));
--		v -= ((char) downcase (b1->data[i]));
--		if (v != 0) return v;
--		if (b0->data[i] == '\0') return 0;
-+		v  = (char) downcase (b0->data[i])
-+		   - (char) downcase (b1->data[i]);
-+		if (0 != v) return v;
- 	}
- 
--	if (b0->slen > n) return   ((char) downcase (b0->data[n]));
--	if (b1->slen > n) return - ((char) downcase (b1->data[n]));
--	return 0;
-+	if (b0->slen > n) {
-+		v = (char) downcase (b0->data[n]);
-+		if (v) return v;
-+		return UCHAR_MAX + 1;
-+	}
-+	if (b1->slen > n) {
-+		v = - (char) downcase (b1->data[n]);
-+		if (v) return v;
-+		return - (int) (UCHAR_MAX + 1);
-+	}
-+	return BSTR_OK;
- }
- 
--/*  int bstrnicmp (const bstring b0, const bstring b1, int n)
-+/*  int bstrnicmp (const_bstring b0, const_bstring b1, int n)
-  *
-  *  Compare two strings without differentiating between case for at most n
-  *  characters.  If the position where the two strings first differ is
-  *  before the nth position, the return value is the difference of the values
-- *  of the characters, (taking a '\0' to be the character at the end of any
-- *  bstring) otherwise 0 is returned.
-+ *  of the characters, otherwise 0 is returned.  If the lengths are different
-+ *  and less than n characters, then a difference from 0 is given, but if the 
-+ *  first extra character is '\0', then it is taken to be the value 
-+ *  UCHAR_MAX+1.
-  */
--int bstrnicmp (const bstring b0, const bstring b1, int n) {
-+int bstrnicmp (const_bstring b0, const_bstring b1, int n) {
- int i, v, m;
- 
- 	if (bdata (b0) == NULL || b0->slen < 0 || 
-@@ -411,20 +640,26 @@ int i, v, m;
- 
- 	if (b0->data != b1->data) {
- 		for (i = 0; i < m; i ++) {
--			v =  ((char) downcase (b0->data[i]));
--			v -= ((char) downcase (b1->data[i]));
--			if (v != 0) return v;
--			if (b0->data[i] == '\0') return 0;
-+			v  = (char) downcase (b0->data[i]);
-+			v -= (char) downcase (b1->data[i]);
-+			if (v != 0) return b0->data[i] - b1->data[i];
- 		}
- 	}
- 
--	if (n == m || b0->slen == b1->slen) return 0;
-+	if (n == m || b0->slen == b1->slen) return BSTR_OK;
- 
--	if (b0->slen > m) return (char) downcase (b0->data[m]);
--	return                 - (char) downcase (b1->data[m]);
-+	if (b0->slen > m) {
-+		v = (char) downcase (b0->data[m]);
-+		if (v) return v;
-+		return UCHAR_MAX + 1;
-+	}
-+
-+	v = - (char) downcase (b1->data[m]);
-+	if (v) return v;
-+	return - (int) (UCHAR_MAX + 1);
- }
- 
--/*  int biseqcaseless (const bstring b0, const bstring b1)
-+/*  int biseqcaseless (const_bstring b0, const_bstring b1)
-  *
-  *  Compare two strings for equality without differentiating between case.  
-  *  If the strings differ other than in case, 0 is returned, if the strings 
-@@ -432,12 +667,12 @@ int i, v, m;
-  *  the length of the strings are different, this function is O(1).  '\0' 
-  *  termination characters are not treated in any special way.
-  */
--int biseqcaseless (const bstring b0, const bstring b1) {
-+int biseqcaseless (const_bstring b0, const_bstring b1) {
- int i, n;
- 
- 	if (bdata (b0) == NULL || b0->slen < 0 || 
- 	    bdata (b1) == NULL || b1->slen < 0) return BSTR_ERR;
--	if (b0->slen != b1->slen) return 0;
-+	if (b0->slen != b1->slen) return BSTR_OK;
- 	if (b0->data == b1->data || b0->slen == 0) return 1;
- 	for (i=0, n=b0->slen; i < n; i++) {
- 		if (b0->data[i] != b1->data[i]) {
-@@ -448,22 +683,141 @@ int i, n;
- 	return 1;
- }
- 
--/*  int biseq (const bstring b0, const bstring b1)
-+/*  int bisstemeqcaselessblk (const_bstring b0, const void * blk, int len)
-+ *
-+ *  Compare beginning of string b0 with a block of memory of length len 
-+ *  without differentiating between case for equality.  If the beginning of b0
-+ *  differs from the memory block other than in case (or if b0 is too short), 
-+ *  0 is returned, if the strings are the same, 1 is returned, if there is an 
-+ *  error, -1 is returned.  '\0' characters are not treated in any special 
-+ *  way.
-+ */
-+int bisstemeqcaselessblk (const_bstring b0, const void * blk, int len) {
-+int i;
-+
-+	if (bdata (b0) == NULL || b0->slen < 0 || NULL == blk || len < 0)
-+		return BSTR_ERR;
-+	if (b0->slen < len) return BSTR_OK;
-+	if (b0->data == (const unsigned char *) blk || len == 0) return 1;
-+
-+	for (i = 0; i < len; i ++) {
-+		if (b0->data[i] != ((const unsigned char *) blk)[i]) {
-+			if (downcase (b0->data[i]) != 
-+			    downcase (((const unsigned char *) blk)[i])) return 0;
-+		}
-+	}
-+	return 1;
-+}
-+
-+/*
-+ * int bltrimws (bstring b)
-+ *
-+ * Delete whitespace contiguous from the left end of the string.
-+ */
-+int bltrimws (bstring b) {
-+int i, len;
-+
-+	if (b == NULL || b->data == NULL || b->mlen < b->slen ||
-+	    b->slen < 0 || b->mlen <= 0) return BSTR_ERR;
-+
-+	for (len = b->slen, i = 0; i < len; i++) {
-+		if (!wspace (b->data[i])) {
-+			return bdelete (b, 0, i);
-+		}
-+	}
-+
-+	b->data[0] = (unsigned char) '\0';
-+	b->slen = 0;
-+	return BSTR_OK;
-+}
-+
-+/*
-+ * int brtrimws (bstring b)
-+ *
-+ * Delete whitespace contiguous from the right end of the string.
-+ */
-+int brtrimws (bstring b) {
-+int i;
-+
-+	if (b == NULL || b->data == NULL || b->mlen < b->slen ||
-+	    b->slen < 0 || b->mlen <= 0) return BSTR_ERR;
-+
-+	for (i = b->slen - 1; i >= 0; i--) {
-+		if (!wspace (b->data[i])) {
-+			if (b->mlen > i) b->data[i+1] = (unsigned char) '\0';
-+			b->slen = i + 1;
-+			return BSTR_OK;
-+		}
-+	}
-+
-+	b->data[0] = (unsigned char) '\0';
-+	b->slen = 0;
-+	return BSTR_OK;
-+}
-+
-+/*
-+ * int btrimws (bstring b)
-+ *
-+ * Delete whitespace contiguous from both ends of the string.
-+ */
-+int btrimws (bstring b) {
-+int i, j;
-+
-+	if (b == NULL || b->data == NULL || b->mlen < b->slen ||
-+	    b->slen < 0 || b->mlen <= 0) return BSTR_ERR;
-+
-+	for (i = b->slen - 1; i >= 0; i--) {
-+		if (!wspace (b->data[i])) {
-+			if (b->mlen > i) b->data[i+1] = (unsigned char) '\0';
-+			b->slen = i + 1;
-+			for (j = 0; wspace (b->data[j]); j++) {}
-+			return bdelete (b, 0, j);
-+		}
-+	}
-+
-+	b->data[0] = (unsigned char) '\0';
-+	b->slen = 0;
-+	return BSTR_OK;
-+}
-+
-+/*  int biseq (const_bstring b0, const_bstring b1)
-  *
-  *  Compare the string b0 and b1.  If the strings differ, 0 is returned, if 
-  *  the strings are the same, 1 is returned, if there is an error, -1 is 
-  *  returned.  If the length of the strings are different, this function is
-  *  O(1).  '\0' termination characters are not treated in any special way.
-  */
--int biseq (const bstring b0, const bstring b1) {
-+int biseq (const_bstring b0, const_bstring b1) {
- 	if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL ||
- 		b0->slen < 0 || b1->slen < 0) return BSTR_ERR;
--	if (b0->slen != b1->slen) return 0;
-+	if (b0->slen != b1->slen) return BSTR_OK;
- 	if (b0->data == b1->data || b0->slen == 0) return 1;
--	return !memcmp (b0->data, b1->data, b0->slen);
-+	return !bstr__memcmp (b0->data, b1->data, b0->slen);
-+}
-+
-+/*  int bisstemeqblk (const_bstring b0, const void * blk, int len)
-+ *
-+ *  Compare beginning of string b0 with a block of memory of length len for 
-+ *  equality.  If the beginning of b0 differs from the memory block (or if b0 
-+ *  is too short), 0 is returned, if the strings are the same, 1 is returned, 
-+ *  if there is an error, -1 is returned.  '\0' characters are not treated in 
-+ *  any special way.
-+ */
-+int bisstemeqblk (const_bstring b0, const void * blk, int len) {
-+int i;
-+
-+	if (bdata (b0) == NULL || b0->slen < 0 || NULL == blk || len < 0)
-+		return BSTR_ERR;
-+	if (b0->slen < len) return BSTR_OK;
-+	if (b0->data == (const unsigned char *) blk || len == 0) return 1;
-+
-+	for (i = 0; i < len; i ++) {
-+		if (b0->data[i] != ((const unsigned char *) blk)[i]) return BSTR_OK;
-+	}
-+	return 1;
- }
- 
--/*  int biseqcstr (const bstring b, const char *s)
-+/*  int biseqcstr (const_bstring b, const char *s)
-  *
-  *  Compare the bstring b and char * string s.  The C string s must be '\0' 
-  *  terminated at exactly the length of the bstring b, and the contents 
-@@ -474,16 +828,40 @@ int biseq (const bstring b0, const bstri
-  *  other.  If the strings are equal 1 is returned, if they are unequal 0 is 
-  *  returned and if there is a detectable error BSTR_ERR is returned.
-  */
--int biseqcstr (const bstring b, const char * s) {
-+int biseqcstr (const_bstring b, const char * s) {
-+int i;
-+	if (b == NULL || s == NULL || b->data == NULL || b->slen < 0) return BSTR_ERR;
-+	for (i=0; i < b->slen; i++) {
-+		if (s[i] == '\0' || b->data[i] != (unsigned char) s[i]) return BSTR_OK;
-+	}
-+	return s[i] == '\0';
-+}
-+
-+/*  int biseqcstrcaseless (const_bstring b, const char *s)
-+ *
-+ *  Compare the bstring b and char * string s.  The C string s must be '\0' 
-+ *  terminated at exactly the length of the bstring b, and the contents 
-+ *  between the two must be identical except for case with the bstring b with 
-+ *  no '\0' characters for the two contents to be considered equal.  This is 
-+ *  equivalent to the condition that their current contents will be always be 
-+ *  equal ignoring case when comparing them in the same format after 
-+ *  converting one or the other.  If the strings are equal, except for case, 
-+ *  1 is returned, if they are unequal regardless of case 0 is returned and 
-+ *  if there is a detectable error BSTR_ERR is returned.
-+ */
-+int biseqcstrcaseless (const_bstring b, const char * s) {
- int i;
- 	if (b == NULL || s == NULL || b->data == NULL || b->slen < 0) return BSTR_ERR;
- 	for (i=0; i < b->slen; i++) {
--		if (s[i] == '\0' || b->data[i] != s[i]) return 0;
-+		if (s[i] == '\0' || 
-+		    (b->data[i] != (unsigned char) s[i] && 
-+		     downcase (b->data[i]) != (unsigned char) downcase (s[i])))
-+			return BSTR_OK;
- 	}
- 	return s[i] == '\0';
- }
- 
--/*  int bstrcmp (const bstring b0, const bstring b1)
-+/*  int bstrcmp (const_bstring b0, const_bstring b1)
-  *
-  *  Compare the string b0 and b1.  If there is an error, SHRT_MIN is returned, 
-  *  otherwise a value less than or greater than zero, indicating that the 
-@@ -497,27 +875,27 @@ int i;
-  *  standard C library counter part strcmp, the comparison does not proceed 
-  *  past any '\0' termination characters encountered.
-  */
--int bstrcmp (const bstring b0, const bstring b1) {
-+int bstrcmp (const_bstring b0, const_bstring b1) {
- int i, v, n;
- 
- 	if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL ||
- 		b0->slen < 0 || b1->slen < 0) return SHRT_MIN;
- 	n = b0->slen; if (n > b1->slen) n = b1->slen;
- 	if (b0->slen == b1->slen && (b0->data == b1->data || b0->slen == 0))
--		return 0;
-+		return BSTR_OK;
- 
- 	for (i = 0; i < n; i ++) {
- 		v = ((char) b0->data[i]) - ((char) b1->data[i]);
- 		if (v != 0) return v;
--		if (b0->data[i] == '\0') return 0;
-+		if (b0->data[i] == (unsigned char) '\0') return BSTR_OK;
- 	}
- 
- 	if (b0->slen > n) return 1;
- 	if (b1->slen > n) return -1;
--	return 0;
-+	return BSTR_OK;
- }
- 
--/*  int bstrncmp (const bstring b0, const bstring b1, int n)
-+/*  int bstrncmp (const_bstring b0, const_bstring b1, int n)
-  *
-  *  Compare the string b0 and b1 for at most n characters.  If there is an 
-  *  error, SHRT_MIN is returned, otherwise a value is returned as if b0 and 
-@@ -527,7 +905,7 @@ int i, v, n;
-  *  part strcmp, the comparison does not proceed past any '\0' termination 
-  *  characters encountered.
-  */
--int bstrncmp (const bstring b0, const bstring b1, int n) {
-+int bstrncmp (const_bstring b0, const_bstring b1, int n) {
- int i, v, m;
- 
- 	if (b0 == NULL || b1 == NULL || b0->data == NULL || b1->data == NULL ||
-@@ -540,24 +918,24 @@ int i, v, m;
- 		for (i = 0; i < m; i ++) {
- 			v = ((char) b0->data[i]) - ((char) b1->data[i]);
- 			if (v != 0) return v;
--			if (b0->data[i] == '\0') return 0;
-+			if (b0->data[i] == (unsigned char) '\0') return BSTR_OK;
- 		}
- 	}
- 
--	if (n == m || b0->slen == b1->slen) return 0;
-+	if (n == m || b0->slen == b1->slen) return BSTR_OK;
- 
- 	if (b0->slen > m) return 1;
- 	return -1;
- }
- 
--/*  bstring bmidstr (const bstring b, int left, int len)
-+/*  bstring bmidstr (const_bstring b, int left, int len)
-  *
-  *  Create a bstring which is the substring of b starting from position left
-  *  and running for a length len (clamped by the end of the bstring b.)  If
-  *  b is detectably invalid, then NULL is returned.  The section described 
-  *  by (left, len) is clamped to the boundaries of b.
-  */
--bstring bmidstr (const bstring b, int left, int len) {
-+bstring bmidstr (const_bstring b, int left, int len) {
- 
- 	if (b == NULL || b->slen < 0 || b->data == NULL) return NULL;
- 
-@@ -586,7 +964,8 @@ int bdelete (bstring b, int pos, int len
- 		pos = 0;
- 	}
- 
--	if (len < 0 || b == NULL || b->data == NULL || b->slen < 0 || b->mlen < b->slen) 
-+	if (len < 0 || b == NULL || b->data == NULL || b->slen < 0 || 
-+	    b->mlen < b->slen || b->mlen <= 0) 
- 		return BSTR_ERR;
- 	if (len > 0 && pos < b->slen) {
- 		if (pos + len >= b->slen) {
-@@ -597,23 +976,24 @@ int bdelete (bstring b, int pos, int len
- 			            b->slen - (pos+len));
- 			b->slen -= len;
- 		}
--		b->data[b->slen] = '\0';
-+		b->data[b->slen] = (unsigned char) '\0';
- 	}
- 	return BSTR_OK;
- }
- 
- /*  int bdestroy (bstring b)
-  *
-- *  free up the bstring.  Note that if b is detectably invalid or not writable
-+ *  Free up the bstring.  Note that if b is detectably invalid or not writable
-  *  then no action is performed and BSTR_ERR is returned.  Like a freed memory
-  *  allocation, dereferences, writes or any other action on b after it has 
-  *  been bdestroyed is undefined.
-  */
- int bdestroy (bstring b) {
--	if (b == NULL || b->slen < 0 || b->mlen <= 0 || b->data == NULL)
-+	if (b == NULL || b->slen < 0 || b->mlen <= 0 || b->mlen < b->slen ||
-+	    b->data == NULL)
- 		return BSTR_ERR;
- 
--	free (b->data);
-+	bstr__free (b->data);
- 
- 	/* In case there is any stale usage, there is one more chance to 
- 	   notice this error. */
-@@ -622,11 +1002,11 @@ int bdestroy (bstring b) {
- 	b->mlen = -__LINE__;
- 	b->data = NULL;
- 
--	free (b);
--	return 0;
-+	bstr__free (b);
-+	return BSTR_OK;
- }
- 
--/*  int binstr (const bstring b1, int pos, const bstring b2)
-+/*  int binstr (const_bstring b1, int pos, const_bstring b2)
-  *
-  *  Search for the bstring b2 in b1 starting from position pos, and searching 
-  *  forward.  If it is found then return with the first position where it is 
-@@ -635,7 +1015,141 @@ int bdestroy (bstring b) {
-  *  search algorithm.  Because of this there are many degenerate cases where 
-  *  this can take much longer than it needs to.
-  */
--int binstr (const bstring b1, int pos, const bstring b2) {
-+int binstr (const_bstring b1, int pos, const_bstring b2) {
-+int j, ii, ll, lf;
-+unsigned char * d0;
-+unsigned char c0;
-+register unsigned char * d1;
-+register unsigned char c1;
-+register int i;
-+
-+	if (b1 == NULL || b1->data == NULL || b1->slen < 0 ||
-+	    b2 == NULL || b2->data == NULL || b2->slen < 0) return BSTR_ERR;
-+	if (b1->slen == pos) return (b2->slen == 0)?pos:BSTR_ERR;
-+	if (b1->slen < pos || pos < 0) return BSTR_ERR;
-+	if (b2->slen == 0) return pos;
-+
-+	/* No space to find such a string? */
-+	if ((lf = b1->slen - b2->slen + 1) <= pos) return BSTR_ERR;
-+
-+	/* An obvious alias case */
-+	if (b1->data == b2->data && pos == 0) return 0;
-+
-+	i = pos;
-+
-+	d0 = b2->data;
-+	d1 = b1->data;
-+	ll = b2->slen;
-+
-+	/* Peel off the b2->slen == 1 case */
-+	c0 = d0[0];
-+	if (1 == ll) {
-+		for (;i < lf; i++) if (c0 == d1[i]) return i;
-+		return BSTR_ERR;
-+	}
-+
-+	c1 = c0;
-+	j = 0;
-+	lf = b1->slen - 1;
-+
-+	ii = -1;
-+	if (i < lf) do {
-+		/* Unrolled current character test */
-+		if (c1 != d1[i]) {
-+			if (c1 != d1[1+i]) {
-+				i += 2;
-+				continue;
-+			}
-+			i++;
-+		}
-+
-+		/* Take note if this is the start of a potential match */
-+		if (0 == j) ii = i;
-+
-+		/* Shift the test character down by one */
-+		j++;
-+		i++;
-+
-+		/* If this isn't past the last character continue */
-+		if (j < ll) {
-+			c1 = d0[j];
-+			continue;
-+		}
-+
-+		N0:;
-+
-+		/* If no characters mismatched, then we matched */
-+		if (i == ii+j) return ii;
-+
-+		/* Shift back to the beginning */
-+		i -= j;
-+		j  = 0;
-+		c1 = c0;
-+	} while (i < lf);
-+
-+	/* Deal with last case if unrolling caused a misalignment */
-+	if (i == lf && ll == j+1 && c1 == d1[i]) goto N0;
-+
-+	return BSTR_ERR;
-+}
-+
-+/*  int binstrr (const_bstring b1, int pos, const_bstring b2)
-+ *
-+ *  Search for the bstring b2 in b1 starting from position pos, and searching 
-+ *  backward.  If it is found then return with the first position where it is 
-+ *  found, otherwise return BSTR_ERR.  Note that this is just a brute force 
-+ *  string searcher that does not attempt clever things like the Boyer-Moore 
-+ *  search algorithm.  Because of this there are many degenerate cases where 
-+ *  this can take much longer than it needs to.
-+ */
-+int binstrr (const_bstring b1, int pos, const_bstring b2) {
-+int j, i, l;
-+unsigned char * d0, * d1;
-+
-+	if (b1 == NULL || b1->data == NULL || b1->slen < 0 ||
-+	    b2 == NULL || b2->data == NULL || b2->slen < 0) return BSTR_ERR;
-+	if (b1->slen == pos && b2->slen == 0) return pos;
-+	if (b1->slen < pos || pos < 0) return BSTR_ERR;
-+	if (b2->slen == 0) return pos;
-+
-+	/* Obvious alias case */
-+	if (b1->data == b2->data && pos == 0 && b2->slen <= b1->slen) return 0;
-+
-+	i = pos;
-+	if ((l = b1->slen - b2->slen) < 0) return BSTR_ERR;
-+
-+	/* If no space to find such a string then snap back */
-+	if (l + 1 <= i) i = l;
-+	j = 0;
-+
-+	d0 = b2->data;
-+	d1 = b1->data;
-+	l  = b2->slen;
-+
-+	for (;;) {
-+		if (d0[j] == d1[i + j]) {
-+			j ++;
-+			if (j >= l) return i;
-+		} else {
-+			i --;
-+			if (i < 0) break;
-+			j=0;
-+		}
-+	}
-+
-+	return BSTR_ERR;
-+}
-+
-+/*  int binstrcaseless (const_bstring b1, int pos, const_bstring b2)
-+ *
-+ *  Search for the bstring b2 in b1 starting from position pos, and searching 
-+ *  forward but without regard to case.  If it is found then return with the 
-+ *  first position where it is found, otherwise return BSTR_ERR.  Note that 
-+ *  this is just a brute force string searcher that does not attempt clever 
-+ *  things like the Boyer-Moore search algorithm.  Because of this there are 
-+ *  many degenerate cases where this can take much longer than it needs to.
-+ */
-+int binstrcaseless (const_bstring b1, int pos, const_bstring b2) {
- int j, i, l, ll;
- unsigned char * d0, * d1;
- 
-@@ -651,7 +1165,7 @@ unsigned char * d0, * d1;
- 	if (l <= pos) return BSTR_ERR;
- 
- 	/* An obvious alias case */
--	if (b1->data == b2->data && pos == 0) return 0;
-+	if (b1->data == b2->data && pos == 0) return BSTR_OK;
- 
- 	i = pos;
- 	j = 0;
-@@ -661,7 +1175,7 @@ unsigned char * d0, * d1;
- 	ll = b2->slen;
- 
- 	for (;;) {
--		if (d0[j] == d1[i + j]) {
-+		if (d0[j] == d1[i + j] || downcase (d0[j]) == downcase (d1[i + j])) {
- 			j ++;
- 			if (j >= ll) return i;
- 		} else {
-@@ -674,16 +1188,16 @@ unsigned char * d0, * d1;
- 	return BSTR_ERR;
- }
- 
--/*  int binstrr (const bstring b1, int pos, const bstring b2)
-+/*  int binstrrcaseless (const_bstring b1, int pos, const_bstring b2)
-  *
-  *  Search for the bstring b2 in b1 starting from position pos, and searching 
-- *  backward.  If it is found then return with the first position where it is 
-- *  found, otherwise return BSTR_ERR.  Note that this is just a brute force 
-- *  string searcher that does not attempt clever things like the Boyer-Moore 
-- *  search algorithm.  Because of this there are many degenerate cases where 
-- *  this can take much longer than it needs to.
-+ *  backward but without regard to case.  If it is found then return with the 
-+ *  first position where it is found, otherwise return BSTR_ERR.  Note that 
-+ *  this is just a brute force string searcher that does not attempt clever 
-+ *  things like the Boyer-Moore search algorithm.  Because of this there are 
-+ *  many degenerate cases where this can take much longer than it needs to.
-  */
--int binstrr (const bstring b1, int pos, const bstring b2) {
-+int binstrrcaseless (const_bstring b1, int pos, const_bstring b2) {
- int j, i, l;
- unsigned char * d0, * d1;
- 
-@@ -694,7 +1208,7 @@ unsigned char * d0, * d1;
- 	if (b2->slen == 0) return pos;
- 
- 	/* Obvious alias case */
--	if (b1->data == b2->data && pos == 0 && b2->slen <= b1->slen) return 0;
-+	if (b1->data == b2->data && pos == 0 && b2->slen <= b1->slen) return BSTR_OK;
- 
- 	i = pos;
- 	if ((l = b1->slen - b2->slen) < 0) return BSTR_ERR;
-@@ -708,7 +1222,7 @@ unsigned char * d0, * d1;
- 	l  = b2->slen;
- 
- 	for (;;) {
--		if (d0[j] == d1[i + j]) {
-+		if (d0[j] == d1[i + j] || downcase (d0[j]) == downcase (d1[i + j])) {
- 			j ++;
- 			if (j >= l) return i;
- 		} else {
-@@ -721,78 +1235,96 @@ unsigned char * d0, * d1;
- 	return BSTR_ERR;
- }
- 
--/*  int bstrchr (const bstring b, int c)
-+
-+/*  int bstrchrp (const_bstring b, int c, int pos)
-  *
-- *  Search for the character c in b forwards from the start of the string.
-+ *  Search for the character c in b forwards from the position pos 
-+ *  (inclusive).
-  */
--int bstrchr (const bstring b, int c) {
-+int bstrchrp (const_bstring b, int c, int pos) {
- unsigned char * p;
- 
--	if (b == NULL || b->data == NULL || b->slen <= 0) return BSTR_ERR;
--	p = memchr (b->data, (unsigned char) c, b->slen);
-+	if (b == NULL || b->data == NULL || b->slen <= pos || pos < 0) return BSTR_ERR;
-+	p = (unsigned char *) bstr__memchr ((b->data + pos), (unsigned char) c, (b->slen - pos));
- 	if (p) return (int) (p - b->data);
- 	return BSTR_ERR;
- }
- 
--/*  int bstrrchr (const bstring b, int c)
-+/*  int bstrrchrp (const_bstring b, int c, int pos)
-  *
-- *  Search for the character c in b backwards from the end of the string.
-+ *  Search for the character c in b backwards from the position pos in string 
-+ *  (inclusive).
-  */
--int bstrrchr (const bstring b, int c) {
-+int bstrrchrp (const_bstring b, int c, int pos) {
- int i;
--
--	if (b == NULL || b->data == NULL || b->slen <= 0) return BSTR_ERR;
--	for (i=b->slen-1; i >= 0; i--) {
-+ 
-+	if (b == NULL || b->data == NULL || b->slen <= pos || pos < 0) return BSTR_ERR;
-+	for (i=pos; i >= 0; i--) {
- 		if (b->data[i] == (unsigned char) c) return i;
- 	}
- 	return BSTR_ERR;
- }
- 
--#define LONG_LOG_BITS_QTY (5)
-+#if !defined (BSTRLIB_AGGRESSIVE_MEMORY_FOR_SPEED_TRADEOFF)
-+#define LONG_LOG_BITS_QTY (3)
- #define LONG_BITS_QTY (1 << LONG_LOG_BITS_QTY)
--#define LONG_TYPE unsigned long
-+#define LONG_TYPE unsigned char
- 
--struct charField { LONG_TYPE content[(1 << CHAR_BIT) / LONG_BITS_QTY]; };
-+#define CFCLEN ((1 << CHAR_BIT) / LONG_BITS_QTY)
-+struct charField { LONG_TYPE content[CFCLEN]; };
- #define testInCharField(cf,c) ((cf)->content[(c) >> LONG_LOG_BITS_QTY] & (((long)1) << ((c) & (LONG_BITS_QTY-1))))
-+#define setInCharField(cf,idx) { \
-+	unsigned int c = (unsigned int) (idx); \
-+	(cf)->content[c >> LONG_LOG_BITS_QTY] |= (LONG_TYPE) (1ul << (c & (LONG_BITS_QTY-1))); \
-+}
-+
-+#else
-+
-+#define CFCLEN (1 << CHAR_BIT)
-+struct charField { unsigned char content[CFCLEN]; };
-+#define testInCharField(cf,c) ((cf)->content[(unsigned char) (c)])
-+#define setInCharField(cf,idx) (cf)->content[(unsigned int) (idx)] = ~0
-+
-+#endif
- 
- /* Convert a bstring to charField */
--static int buildCharField (struct charField * cf, const bstring b1) {
-+static int buildCharField (struct charField * cf, const_bstring b) {
- int i;
--	if (b1 == NULL || b1->data == NULL || b1->slen <= 0) return BSTR_ERR;
--	memset ((void *) &cf->content, 0, sizeof (struct charField));
--	for (i=0; i < b1->slen; i++) {
--		unsigned int c = (unsigned int) b1->data[i];
--		cf->content[c >> LONG_LOG_BITS_QTY] |= ((LONG_TYPE) 1) << (c & (LONG_BITS_QTY-1));
-+	if (b == NULL || b->data == NULL || b->slen <= 0) return BSTR_ERR;
-+	memset ((void *) cf->content, 0, sizeof (struct charField));
-+	for (i=0; i < b->slen; i++) {
-+		setInCharField (cf, b->data[i]);
- 	}
--	return 0;
-+	return BSTR_OK;
- }
- 
- static void invertCharField (struct charField * cf) {
- int i;
--	for (i=0; i < ((1 << CHAR_BIT) / LONG_BITS_QTY); i++) cf->content[i] = ~cf->content[i];
-+	for (i=0; i < CFCLEN; i++) cf->content[i] = ~cf->content[i];
- }
- 
- /* Inner engine for binchr */
- static int binchrCF (const unsigned char * data, int len, int pos, const struct charField * cf) {
- int i;
- 	for (i=pos; i < len; i++) {
--		unsigned int c = (unsigned int) data[i];
-+		unsigned char c = (unsigned char) data[i];
- 		if (testInCharField (cf, c)) return i;
- 	}
- 	return BSTR_ERR;
- }
- 
--/*  int binchr (const bstring b0, int pos, const bstring b1);
-+/*  int binchr (const_bstring b0, int pos, const_bstring b1);
-  *
-  *  Search for the first position in b0 starting from pos or after, in which 
-  *  one of the characters in b1 is found and return it.  If such a position 
-  *  does not exist in b0, then BSTR_ERR is returned.
-  */
--int binchr (const bstring b0, int pos, const bstring b1) {
-+int binchr (const_bstring b0, int pos, const_bstring b1) {
- struct charField chrs;
- 	if (pos < 0 || b0 == NULL || b0->data == NULL ||
- 	    b0->slen <= pos) return BSTR_ERR;
--	if (buildCharField (&chrs, b1) < 0) return BSTR_ERR;
-+	if (1 == b1->slen) return bstrchrp (b0, b1->data[0], pos);
-+	if (0 > buildCharField (&chrs, b1)) return BSTR_ERR;
- 	return binchrCF (b0->data, b0->slen, pos, &chrs);
- }
- 
-@@ -806,28 +1338,29 @@ int i;
- 	return BSTR_ERR;
- }
- 
--/*  int binchrr (const bstring b0, int pos, const bstring b1);
-+/*  int binchrr (const_bstring b0, int pos, const_bstring b1);
-  *
-  *  Search for the last position in b0 no greater than pos, in which one of 
-  *  the characters in b1 is found and return it.  If such a position does not 
-  *  exist in b0, then BSTR_ERR is returned.
-  */
--int binchrr (const bstring b0, int pos, const bstring b1) {
-+int binchrr (const_bstring b0, int pos, const_bstring b1) {
- struct charField chrs;
--	if (pos < 0 || b0 == NULL || b0->data == NULL ||
-+	if (pos < 0 || b0 == NULL || b0->data == NULL || b1 == NULL ||
- 	    b0->slen < pos) return BSTR_ERR;
- 	if (pos == b0->slen) pos--;
--	if (buildCharField (&chrs, b1) < 0) return BSTR_ERR;
-+	if (1 == b1->slen) return bstrrchrp (b0, b1->data[0], pos);
-+	if (0 > buildCharField (&chrs, b1)) return BSTR_ERR;
- 	return binchrrCF (b0->data, pos, &chrs);
- }
- 
--/*  int bninchr (const bstring b0, int pos, const bstring b1);
-+/*  int bninchr (const_bstring b0, int pos, const_bstring b1);
-  *
-  *  Search for the first position in b0 starting from pos or after, in which 
-  *  none of the characters in b1 is found and return it.  If such a position 
-  *  does not exist in b0, then BSTR_ERR is returned.
-  */
--int bninchr (const bstring b0, int pos, const bstring b1) {
-+int bninchr (const_bstring b0, int pos, const_bstring b1) {
- struct charField chrs;
- 	if (pos < 0 || b0 == NULL || b0->data == NULL || 
- 	    b0->slen <= pos) return BSTR_ERR;
-@@ -836,13 +1369,13 @@ struct charField chrs;
- 	return binchrCF (b0->data, b0->slen, pos, &chrs);
- }
- 
--/*  int bninchrr (const bstring b0, int pos, const bstring b1);
-+/*  int bninchrr (const_bstring b0, int pos, const_bstring b1);
-  *
-  *  Search for the last position in b0 no greater than pos, in which none of 
-  *  the characters in b1 is found and return it.  If such a position does not 
-  *  exist in b0, then BSTR_ERR is returned.
-  */
--int bninchrr (const bstring b0, int pos, const bstring b1) {
-+int bninchrr (const_bstring b0, int pos, const_bstring b1) {
- struct charField chrs;
- 	if (pos < 0 || b0 == NULL || b0->data == NULL || 
- 	    b0->slen < pos) return BSTR_ERR;
-@@ -859,44 +1392,50 @@ struct charField chrs;
-  *  appended as necessary to make up the gap between the end of b0 and pos.
-  *  If b1 is NULL, it behaves as if it were a 0-length string.
-  */
--int bsetstr (bstring b0, int pos, const bstring b1, unsigned char fill) {
--int d;
--int newlen;
--	if (pos < 0 || b0 == NULL || b0->slen < 0 || b0->mlen < b0->slen) return BSTR_ERR;
-+int bsetstr (bstring b0, int pos, const_bstring b1, unsigned char fill) {
-+int d, newlen;
-+ptrdiff_t pd;
-+bstring aux = (bstring) b1;
-+
-+	if (pos < 0 || b0 == NULL || b0->slen < 0 || NULL == b0->data || 
-+	    b0->mlen < b0->slen || b0->mlen <= 0) return BSTR_ERR;
- 	if (b1 != NULL && (b1->slen < 0 || b1->data == NULL)) return BSTR_ERR;
- 
-+	d = pos;
-+
- 	/* Aliasing case */
--	if ((b1 != NULL) && (b0->data == b1->data) && (pos < b0->slen)) {
--		bstring tmp = bstrcpy (b1);
--		if (tmp == NULL) return BSTR_ERR;
--		d = bsetstr (b0, pos, tmp, fill);
--		bdestroy (tmp);
--		return d;
-+	if (NULL != aux) {
-+		if ((pd = (ptrdiff_t) (b1->data - b0->data)) >= 0 && pd < (ptrdiff_t) b0->mlen) {
-+			if (NULL == (aux = bstrcpy (b1))) return BSTR_ERR;
-+		}
-+		d += aux->slen;
- 	}
- 
- 	/* Increase memory size if necessary */
--	d = pos + blength (b1);
--	if (balloc (b0, d + 1) != BSTR_OK) return BSTR_ERR;
-+	if (balloc (b0, d + 1) != BSTR_OK) {
-+		if (aux != b1) bdestroy (aux);
-+		return BSTR_ERR;
-+	}
- 
- 	newlen = b0->slen;
- 
- 	/* Fill in "fill" character as necessary */
- 	if (pos > newlen) {
--		int i;
--		for (i = b0->slen; i < pos; i ++) b0->data[i] = fill;
-+		bstr__memset (b0->data + b0->slen, (int) fill, (size_t) (pos - b0->slen));
- 		newlen = pos;
- 	}
- 
- 	/* Copy b1 to position pos in b0. */
--	if (b1 != NULL) {
--		bBlockCopy ((char *) (b0->data + pos), (char *) b1->data, b1->slen);
-+	if (aux != NULL) {
-+		bBlockCopy ((char *) (b0->data + pos), (char *) aux->data, aux->slen);
-+		if (aux != b1) bdestroy (aux);
- 	}
- 
- 	/* Indicate the potentially increased size of b0 */
- 	if (d > newlen) newlen = d;
- 
- 	b0->slen = newlen;
--	b0->data[newlen] = '\0';
-+	b0->data[newlen] = (unsigned char) '\0';
- 
- 	return BSTR_OK;
- }
-@@ -908,40 +1447,45 @@ int newlen;
-  *  make up the gap between the end of b1 and pos.  Unlike bsetstr, binsert
-  *  does not allow b2 to be NULL.
-  */
--int binsert (bstring b1, int pos, const bstring b2, unsigned char fill) {
-+int binsert (bstring b1, int pos, const_bstring b2, unsigned char fill) {
- int d, l;
-+ptrdiff_t pd;
-+bstring aux = (bstring) b2;
- 
- 	if (pos < 0 || b1 == NULL || b2 == NULL || b1->slen < 0 || 
--	    b2->slen < 0 || b1->mlen < b1->slen) return BSTR_ERR;
-+	    b2->slen < 0 || b1->mlen < b1->slen || b1->mlen <= 0) return BSTR_ERR;
- 
- 	/* Aliasing case */
--	if ((unsigned int)(b2->data - b1->data) < (unsigned int)b1->slen) {
--		bstring tmp;
--		d = binsert (b1, pos, tmp = bstrcpy (b2), fill);
--		bdestroy (tmp);
--		return d;
-+	if ((pd = (ptrdiff_t) (b2->data - b1->data)) >= 0 && pd < (ptrdiff_t) b1->mlen) {
-+		if (NULL == (aux = bstrcpy (b2))) return BSTR_ERR;
- 	}
- 
- 	/* Compute the two possible end pointers */
--	d = b1->slen + b2->slen;
--	l = pos + b2->slen;
-+	d = b1->slen + aux->slen;
-+	l = pos + aux->slen;
-+	if ((d|l) < 0) return BSTR_ERR;
- 
- 	if (l > d) {
- 		/* Inserting past the end of the string */
--		if (balloc (b1, l + 1) != BSTR_OK) return BSTR_ERR;
--		for (d = b1->slen; d < pos; d++) b1->data[d] = fill;
-+		if (balloc (b1, l + 1) != BSTR_OK) {
-+			if (aux != b2) bdestroy (aux);
-+			return BSTR_ERR;
-+		}
-+		bstr__memset (b1->data + b1->slen, (int) fill, (size_t) (pos - b1->slen));
- 		b1->slen = l;
- 	} else {
- 		/* Inserting in the middle of the string */
--		if (balloc (b1, d + 1) != BSTR_OK) return BSTR_ERR;
--		for (l = d - 1; l >= pos + b2->slen; l--) {
--			b1->data[l] = b1->data[l - b2->slen];
-+		if (balloc (b1, d + 1) != BSTR_OK) {
-+			if (aux != b2) bdestroy (aux);
-+			return BSTR_ERR;
- 		}
-+		bBlockCopy (b1->data + l, b1->data + pos, d - l);
- 		b1->slen = d;
- 	}
--	bBlockCopy (b1->data + pos, b2->data, b2->slen);
--	b1->data[b1->slen] = '\0';
--	return 0;
-+	bBlockCopy (b1->data + pos, aux->data, aux->slen);
-+	b1->data[b1->slen] = (unsigned char) '\0';
-+	if (aux != b2) bdestroy (aux);
-+	return BSTR_OK;
- }
- 
- /*  int breplace (bstring b1, int pos, int len, bstring b2, 
-@@ -950,167 +1494,203 @@ int d, l;
-  *  Replace a section of a string from pos for a length len with the string b2.
-  *  fill is used is pos > b1->slen.
-  */
--int breplace (bstring b1, int pos, int len, const bstring b2, 
-+int breplace (bstring b1, int pos, int len, const_bstring b2, 
- 			  unsigned char fill) {
--int ret;
--
--	if (pos < 0 || len < 0 || b1 == NULL || b2 == NULL || 
--	    b1->data == NULL || b2->data == NULL || b1->slen < 0 ||
--	    b2->slen < 0 || b1->mlen < b1->slen) return BSTR_ERR;
-+int pl, ret;
-+ptrdiff_t pd;
-+bstring aux = (bstring) b2;
-+
-+	if (pos < 0 || len < 0 || (pl = pos + len) < 0 || b1 == NULL || 
-+	    b2 == NULL || b1->data == NULL || b2->data == NULL || 
-+	    b1->slen < 0 || b2->slen < 0 || b1->mlen < b1->slen ||
-+	    b1->mlen <= 0) return BSTR_ERR;
- 
- 	/* Straddles the end? */
--	if (pos + len >= b1->slen) {
-+	if (pl >= b1->slen) {
- 		if ((ret = bsetstr (b1, pos, b2, fill)) < 0) return ret;
- 		if (pos + b2->slen < b1->slen) {
- 			b1->slen = pos + b2->slen;
--			b1->data[b1->slen] = '\0';
-+			b1->data[b1->slen] = (unsigned char) '\0';
- 		}
- 		return ret;
- 	}
- 
- 	/* Aliasing case */
--	if ((unsigned int)(b2->data - b1->data) < (unsigned int)b1->slen) {
--		bstring tmp;
--		ret = breplace (b1, pos, len, tmp = bstrcpy (b2), fill);
--		bdestroy (tmp);
--		return ret;
-+	if ((pd = (ptrdiff_t) (b2->data - b1->data)) >= 0 && pd < (ptrdiff_t) b1->slen) {
-+		if (NULL == (aux = bstrcpy (b2))) return BSTR_ERR;
- 	}
- 
--	if (b2->slen > len) {
--		if (balloc (b1, b1->slen + b2->slen - len) != BSTR_OK) return BSTR_ERR;
-+	if (aux->slen > len) {
-+		if (balloc (b1, b1->slen + aux->slen - len) != BSTR_OK) {
-+			if (aux != b2) bdestroy (aux);
-+			return BSTR_ERR;
-+		}
- 	}
- 
--	if (b2->slen != len) memmove (b1->data + pos + b2->slen, b1->data + pos + len, b1->slen - (pos + len));
--	memcpy (b1->data + pos, b2->data, b2->slen);
--	b1->slen += b2->slen - len;
--	b1->data[b1->slen] = '\0';
-+	if (aux->slen != len) bstr__memmove (b1->data + pos + aux->slen, b1->data + pos + len, b1->slen - (pos + len));
-+	bstr__memcpy (b1->data + pos, aux->data, aux->slen);
-+	b1->slen += aux->slen - len;
-+	b1->data[b1->slen] = (unsigned char) '\0';
-+	if (aux != b2) bdestroy (aux);
- 	return BSTR_OK;
- }
- 
--/*  int bfindreplace (bstring b, const bstring find, const bstring repl, 
-+/*  int bfindreplace (bstring b, const_bstring find, const_bstring repl, 
-  *                    int pos)
-  *
-  *  Replace all occurrences of a find string with a replace string after a
-  *  given point in a bstring.
-  */
--int bfindreplace (bstring b, const bstring find, const bstring repl, int pos) {
-+
-+typedef int (*instr_fnptr) (const_bstring s1, int pos, const_bstring s2);
-+
-+static int findreplaceengine (bstring b, const_bstring find, const_bstring repl, int pos, instr_fnptr instr) {
- int i, ret, slen, mlen, delta, acc;
- int * d;
-+int static_d[32];
-+ptrdiff_t pd;
-+bstring auxf = (bstring) find;
-+bstring auxr = (bstring) repl;
- 
- 	if (b == NULL || b->data == NULL || find == NULL ||
- 	    find->data == NULL || repl == NULL || repl->data == NULL || 
- 	    pos < 0 || find->slen <= 0 || b->mlen < 0 || b->slen > b->mlen || 
--	    b->slen < 0 || repl->slen < 0) return BSTR_ERR;
--	if (pos > b->slen - find->slen) return 0;
-+	    b->mlen <= 0 || b->slen < 0 || repl->slen < 0) return BSTR_ERR;
-+	if (pos > b->slen - find->slen) return BSTR_OK;
- 
- 	/* Alias with find string */
--	i = find->data - b->data;
--	if (pos - find->slen < i && i < b->slen) {
--		bstring t;
--		i = bfindreplace (b, t = bstrcpy (find), repl, pos);
--		bdestroy (t);
--		return i;
-+	pd = (ptrdiff_t) (find->data - b->data);
-+	if ((ptrdiff_t) (pos - find->slen) < pd && pd < (ptrdiff_t) b->slen) {
-+		if (NULL == (auxf = bstrcpy (find))) return BSTR_ERR;
- 	}
- 
- 	/* Alias with repl string */
--	i = repl->data - b->data;
--	if (pos - repl->slen < i && i < b->slen) {
--		bstring t;
--		i = bfindreplace (b, find, t = bstrcpy (repl), pos);
--		bdestroy (t);
--		return i;
-+	pd = (ptrdiff_t) (repl->data - b->data);
-+	if ((ptrdiff_t) (pos - repl->slen) < pd && pd < (ptrdiff_t) b->slen) {
-+		if (NULL == (auxr = bstrcpy (repl))) {
-+			if (auxf != find) bdestroy (auxf);
-+			return BSTR_ERR;
-+		}
- 	}
- 
--	delta = find->slen - repl->slen;
-+	delta = auxf->slen - auxr->slen;
- 
- 	/* in-place replacement since find and replace strings are of equal 
- 	   length */
- 	if (delta == 0) {
--		while ((pos = binstr (b, pos, find)) >= 0) {
--			memcpy (b->data + pos, repl->data, repl->slen);
--			pos += find->slen;
-+		while ((pos = instr (b, pos, auxf)) >= 0) {
-+			bstr__memcpy (b->data + pos, auxr->data, auxr->slen);
-+			pos += auxf->slen;
- 		}
--		return 0;
-+		if (auxf != find) bdestroy (auxf);
-+		if (auxr != repl) bdestroy (auxr);
-+		return BSTR_OK;
- 	}
- 
--	/* shrinking replacement since find->slen > repl->slen */
-+	/* shrinking replacement since auxf->slen > auxr->slen */
- 	if (delta > 0) {
- 		acc = 0;
- 
--		while ((i = binstr (b, pos, find)) >= 0) {
--			if (acc && i > pos) {
--				memmove (b->data + pos - acc, b->data + pos, 
--				         i - pos);
--			}
--			if (repl->slen) {
--				memmove (b->data + i - acc, repl->data, 
--				         repl->slen);
--			}
-+		while ((i = instr (b, pos, auxf)) >= 0) {
-+			if (acc && i > pos)
-+				bstr__memmove (b->data + pos - acc, b->data + pos, i - pos);
-+			if (auxr->slen)
-+				bstr__memcpy (b->data + i - acc, auxr->data, auxr->slen);
- 			acc += delta;
--			pos = i + find->slen;
-+			pos = i + auxf->slen;
- 		}
- 
- 		if (acc) {
- 			i = b->slen;
--			if (i > pos) {
--				memmove (b->data + pos - acc, b->data + pos, 
--				         i - pos);
--			}
-+			if (i > pos)
-+				bstr__memmove (b->data + pos - acc, b->data + pos, i - pos);
- 			b->slen -= acc;
--			b->data[b->slen] = '\0';
-+			b->data[b->slen] = (unsigned char) '\0';
- 		}
- 
--		return 0;
-+		if (auxf != find) bdestroy (auxf);
-+		if (auxr != repl) bdestroy (auxr);
-+		return BSTR_OK;
- 	}
- 
- 	/* expanding replacement since find->slen < repl->slen.  Its a lot 
- 	   more complicated. */
- 
--	mlen = 8;
--	d = (int *) malloc (sizeof (int *) * mlen);
--	if (d == NULL) return BSTR_ERR;
--	slen = 0;
-+	mlen = 32;
-+	d = (int *) static_d; /* Avoid malloc for trivial cases */
-+	acc = slen = 0;
- 
--	while ((pos = binstr (b, pos, find)) >= 0) {
--		int * t;
-+	while ((pos = instr (b, pos, auxf)) >= 0) {
- 		if (slen + 1 >= mlen) {
-+			int sl;
-+			int * t;
- 			mlen += mlen;
--			t = (int *) realloc (d, sizeof (int *) * mlen);
--			if (t == NULL) {
--				free (d);
--				return BSTR_ERR;
-+			sl = sizeof (int *) * mlen;
-+			if (static_d == d) d = NULL;
-+			if (sl < mlen || NULL == (t = (int *) bstr__realloc (d, sl))) {
-+				ret = BSTR_ERR;
-+				goto done;
- 			}
-+			if (NULL == d) bstr__memcpy (t, static_d, sizeof (static_d));
- 			d = t;
- 		}
- 		d[slen] = pos;
- 		slen++;
--		pos += find->slen;
-+		acc -= delta;
-+		pos += auxf->slen;
-+		if (pos < 0 || acc < 0) {
-+			ret = BSTR_ERR;
-+			goto done;
-+		}
- 	}
- 	d[slen] = b->slen;
- 
--	acc = slen * (-delta);
- 	if (BSTR_OK == (ret = balloc (b, b->slen + acc + 1))) {
- 		b->slen += acc;
- 		for (i = slen-1; i >= 0; i--) {
- 			int s, l;
--			s = d[i] + find->slen;
-+			s = d[i] + auxf->slen;
- 			l = d[i+1] - s;
- 			if (l) {
--				memmove (b->data + s + acc, b->data + s, l);
-+				bstr__memmove (b->data + s + acc, b->data + s, l);
- 			}
--			if (repl->slen) {
--				memmove (b->data + s + acc - repl->slen, 
--				         repl->data, repl->slen);
-+			if (auxr->slen) {
-+				bstr__memmove (b->data + s + acc - auxr->slen, 
-+				         auxr->data, auxr->slen);
- 			}
- 			acc += delta;		
- 		}
--		b->data[b->slen] = '\0';
-+		b->data[b->slen] = (unsigned char) '\0';
- 	}
- 
--	free (d);
-+	done:;
-+	if (static_d == d) d = NULL;
-+	bstr__free (d);
-+	if (auxf != find) bdestroy (auxf);
-+	if (auxr != repl) bdestroy (auxr);
- 	return ret;
- }
- 
-+/*  int bfindreplace (bstring b, const_bstring find, const_bstring repl, 
-+ *                    int pos)
-+ *
-+ *  Replace all occurrences of a find string with a replace string after a
-+ *  given point in a bstring.
-+ */
-+int bfindreplace (bstring b, const_bstring find, const_bstring repl, int pos) {
-+	return findreplaceengine (b, find, repl, pos, binstr);
-+}
-+
-+/*  int bfindreplacecaseless (bstring b, const_bstring find, const_bstring repl, 
-+ *                    int pos)
-+ *
-+ *  Replace all occurrences of a find string, ignoring case, with a replace 
-+ *  string after a given point in a bstring.
-+ */
-+int bfindreplacecaseless (bstring b, const_bstring find, const_bstring repl, int pos) {
-+	return findreplaceengine (b, find, repl, pos, binstrcaseless);
-+}
-+
- /*  int binsertch (bstring b, int pos, int len, unsigned char fill)
-  *
-  *  Inserts the character fill repeatedly into b at position pos for a 
-@@ -1119,42 +1699,41 @@ int * d;
-  *  end of b and the position pos + len.
-  */
- int binsertch (bstring b, int pos, int len, unsigned char fill) {
--int d, l;
-+int d, l, i;
- 
- 	if (pos < 0 || b == NULL || b->slen < 0 || b->mlen < b->slen ||
--	    len < 0) return BSTR_ERR;
-+	    b->mlen <= 0 || len < 0) return BSTR_ERR;
- 
- 	/* Compute the two possible end pointers */
- 	d = b->slen + len;
- 	l = pos + len;
-+	if ((d|l) < 0) return BSTR_ERR;
- 
- 	if (l > d) {
- 		/* Inserting past the end of the string */
- 		if (balloc (b, l + 1) != BSTR_OK) return BSTR_ERR;
--		len += pos - b->slen;
- 		pos = b->slen;
- 		b->slen = l;
- 	} else {
- 		/* Inserting in the middle of the string */
- 		if (balloc (b, d + 1) != BSTR_OK) return BSTR_ERR;
--		for (l = d - 1; l >= pos + len; l--) {
--			b->data[l] = b->data[l - len];
-+		for (i = d - 1; i >= l; i--) {
-+			b->data[i] = b->data[i - len];
- 		}
- 		b->slen = d;
- 	}
- 
--	d = pos + len;
--	for (l=pos; l < d; l++) b->data[l] = fill;
--	b->data[b->slen] = '\0';
--	return 0;
-+	for (i=pos; i < l; i++) b->data[i] = fill;
-+	b->data[b->slen] = (unsigned char) '\0';
-+	return BSTR_OK;
- }
- 
- /*  int bpattern (bstring b, int len)
-  *
-- *  Replicate the starting bstring, b, end to end repeatedly until it surpasses
-- *  len characters, then chop the result to exactly len characters.  This 
-- *  function operates in-place.  The function will return with BSTR_ERR if b 
-- *  is NULL or of length 0, otherwise BSTR_OK is returned.
-+ *  Replicate the bstring, b in place, end to end repeatedly until it 
-+ *  surpasses len characters, then chop the result to exactly len characters. 
-+ *  This function operates in-place.  The function will return with BSTR_ERR 
-+ *  if b is NULL or of length 0, otherwise BSTR_OK is returned.
-  */
- int bpattern (bstring b, int len) {
- int i, d;
-@@ -1165,84 +1744,148 @@ int i, d;
- 		if (d == 1) return bsetstr (b, len, NULL, b->data[0]);
- 		for (i = d; i < len; i++) b->data[i] = b->data[i - d];
- 	}
--	b->data[len] = '\0';
-+	b->data[len] = (unsigned char) '\0';
- 	b->slen = len;
--	return 0;
-+	return BSTR_OK;
- }
- 
--/*  bstring bgets (bNgetc getcPtr, void * parm, char terminator)
-+#define BS_BUFF_SZ (1024)
-+
-+/*  int breada (bstring b, bNread readPtr, void * parm)
-+ *
-+ *  Use a finite buffer fread-like function readPtr to concatenate to the 
-+ *  bstring b the entire contents of file-like source data in a roughly 
-+ *  efficient way.
-+ */
-+int breada (bstring b, bNread readPtr, void * parm) {
-+int i, l, n;
-+
-+	if (b == NULL || b->mlen <= 0 || b->slen < 0 || b->mlen < b->slen ||
-+	    b->mlen <= 0 || readPtr == NULL) return BSTR_ERR;
-+
-+	i = b->slen;
-+	for (n=i+16; ; n += ((n < BS_BUFF_SZ) ? n : BS_BUFF_SZ)) {
-+		if (BSTR_OK != balloc (b, n + 1)) return BSTR_ERR;
-+		l = (int) readPtr ((void *) (b->data + i), 1, n - i, parm);
-+		i += l;
-+		b->slen = i;
-+		if (i < n) break;
-+	}
-+
-+	b->data[i] = (unsigned char) '\0';
-+	return BSTR_OK;
-+}
-+
-+/*  bstring bread (bNread readPtr, void * parm)
-+ *
-+ *  Use a finite buffer fread-like function readPtr to create a bstring 
-+ *  filled with the entire contents of file-like source data in a roughly 
-+ *  efficient way.
-+ */
-+bstring bread (bNread readPtr, void * parm) {
-+bstring buff;
-+
-+	if (0 > breada (buff = bfromcstr (""), readPtr, parm)) {
-+		bdestroy (buff);
-+		return NULL;
-+	}
-+	return buff;
-+}
-+
-+/*  int bassigngets (bstring b, bNgetc getcPtr, void * parm, char terminator)
-  *
-  *  Use an fgetc-like single character stream reading function (getcPtr) to 
-- *  obtain a sequence of characters which are concatenated into a bstring.  
-- *  The stream read is terminated by the passed in terminator function.
-+ *  obtain a sequence of characters which are concatenated to the end of the
-+ *  bstring b.  The stream read is terminated by the passed in terminator 
-+ *  parameter.
-  *
-  *  If getcPtr returns with a negative number, or the terminator character 
-- *  (which is appended) is read, then the stream reading is halted as the 
-- *  result obtained thus far is returned.  If no characters are read, or 
-- *  there is some other detectable error, NULL is returned.
-+ *  (which is appended) is read, then the stream reading is halted and the 
-+ *  function returns with a partial result in b.  If there is an empty partial
-+ *  result, 1 is returned.  If no characters are read, or there is some other 
-+ *  detectable error, BSTR_ERR is returned.
-  */
--bstring bgets (bNgetc getcPtr, void * parm, char terminator) {
-+int bassigngets (bstring b, bNgetc getcPtr, void * parm, char terminator) {
- int c, d, e;
--bstring buff;
- 
--	if (getcPtr == NULL) return NULL;
--	buff = bfromcstr ("");
--	if (buff == NULL) return NULL;
-+	if (b == NULL || b->mlen <= 0 || b->slen < 0 || b->mlen < b->slen ||
-+	    b->mlen <= 0 || getcPtr == NULL) return BSTR_ERR;
- 	d = 0;
--	e = buff->mlen - 2;
-+	e = b->mlen - 2;
- 
- 	while ((c = getcPtr (parm)) >= 0) {
- 		if (d > e) {
--			buff->slen = d;
--			if (balloc (buff, d + 2) != BSTR_OK) {
--				bdestroy (buff);
--				return NULL;
--			}
--			e = buff->mlen - 2;
-+			b->slen = d;
-+			if (balloc (b, d + 2) != BSTR_OK) return BSTR_ERR;
-+			e = b->mlen - 2;
- 		}
--		buff->data[d] = (unsigned char) c;
-+		b->data[d] = (unsigned char) c;
- 		d++;
- 		if (c == terminator) break;
- 	}
- 
--	buff->data[d] = '\0';
--	buff->slen = d;
-+	b->data[d] = (unsigned char) '\0';
-+	b->slen = d;
- 
--	if (d == 0) {
--		bdestroy (buff);
--		buff = NULL;
-+	return d == 0 && c < 0;
-+}
-+
-+/*  int bgetsa (bstring b, bNgetc getcPtr, void * parm, char terminator)
-+ *
-+ *  Use an fgetc-like single character stream reading function (getcPtr) to 
-+ *  obtain a sequence of characters which are concatenated to the end of the
-+ *  bstring b.  The stream read is terminated by the passed in terminator 
-+ *  parameter.
-+ *
-+ *  If getcPtr returns with a negative number, or the terminator character 
-+ *  (which is appended) is read, then the stream reading is halted and the 
-+ *  function returns with a partial result concatentated to b.  If there is 
-+ *  an empty partial result, 1 is returned.  If no characters are read, or 
-+ *  there is some other detectable error, BSTR_ERR is returned.
-+ */
-+int bgetsa (bstring b, bNgetc getcPtr, void * parm, char terminator) {
-+int c, d, e;
-+
-+	if (b == NULL || b->mlen <= 0 || b->slen < 0 || b->mlen < b->slen ||
-+	    b->mlen <= 0 || getcPtr == NULL) return BSTR_ERR;
-+	d = b->slen;
-+	e = b->mlen - 2;
-+
-+	while ((c = getcPtr (parm)) >= 0) {
-+		if (d > e) {
-+			b->slen = d;
-+			if (balloc (b, d + 2) != BSTR_OK) return BSTR_ERR;
-+			e = b->mlen - 2;
-+		}
-+		b->data[d] = (unsigned char) c;
-+		d++;
-+		if (c == terminator) break;
- 	}
- 
--	return buff;
--}
-+	b->data[d] = (unsigned char) '\0';
-+	b->slen = d;
- 
--#define BS_BUFF_SZ (1024)
-+	return d == 0 && c < 0;
-+}
- 
--/*  bstring bread (bNread readPtr, void * parm)
-+/*  bstring bgets (bNgetc getcPtr, void * parm, char terminator)
-  *
-- *  Translate a finite buffer fread-like function into something which can
-- *  fill in a bstring in a roughly efficient way.
-+ *  Use an fgetc-like single character stream reading function (getcPtr) to 
-+ *  obtain a sequence of characters which are concatenated into a bstring.  
-+ *  The stream read is terminated by the passed in terminator function.
-+ *
-+ *  If getcPtr returns with a negative number, or the terminator character 
-+ *  (which is appended) is read, then the stream reading is halted and the 
-+ *  result obtained thus far is returned.  If no characters are read, or 
-+ *  there is some other detectable error, NULL is returned.
-  */
--bstring bread (bNread readPtr, void * parm) {
--int i, l, n;
-+bstring bgets (bNgetc getcPtr, void * parm, char terminator) {
- bstring buff;
- 
--	if (readPtr == NULL) return NULL;
--	buff = bfromcstr ("");
--	if (buff == NULL) return NULL;
--
--	for (i=0, n=16; ; n += ((n < BS_BUFF_SZ) ? n : BS_BUFF_SZ)) {
--		if (BSTR_OK != balloc (buff, n + 1)) {
--			bdestroy (buff);
--			return NULL;
--		}
--		l = (int) readPtr ((void *) (buff->data + i), 1, n - i, parm);
--		i += l;
--		buff->slen = i;
--		if (i < n) break;
-+	if (0 > bgetsa (buff = bfromcstr (""), getcPtr, parm, terminator) || 0 >= buff->slen) {
-+		bdestroy (buff);
-+		buff = NULL;
- 	}
--
--	buff->data[i] = '\0';
- 	return buff;
- }
- 
-@@ -1264,7 +1907,7 @@ struct bStream * bsopen (bNread readPtr,
- struct bStream * s;
- 
- 	if (readPtr == NULL) return NULL;
--	s = (struct bStream *) malloc (sizeof (struct bStream));
-+	s = (struct bStream *) bstr__alloc (sizeof (struct bStream));
- 	if (s == NULL) return NULL;
- 	s->parm = parm;
- 	s->buff = bfromcstr ("");
-@@ -1276,7 +1919,7 @@ struct bStream * s;
- 
- /*  int bsbufflength (struct bStream * s, int sz)
-  *
-- *  Set the length of the buffer used by the bsStream.  If sz is zero, the 
-+ *  Set the length of the buffer used by the bStream.  If sz is zero, the 
-  *  length is not set.  This function returns with the previous length.
-  */
- int bsbufflength (struct bStream * s, int sz) {
-@@ -1306,7 +1949,7 @@ void * parm;
- 	parm = s->parm;
- 	s->parm = NULL;
- 	s->isEOF = 1;
--	free (s);
-+	bstr__free (s);
- 	return parm;
- }
- 
-@@ -1318,29 +1961,30 @@ void * parm;
-  *  returned, but will be retained for subsequent read operations.
-  */
- int bsreadlna (bstring r, struct bStream * s, char terminator) {
--int i, l;
-+int i, l, ret, rlo;
- char * b;
- struct tagbstring x;
- 
--	if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0)
--		return BSTR_ERR;
-+	if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0 ||
-+	    r->slen < 0 || r->mlen < r->slen) return BSTR_ERR;
- 	l = s->buff->slen;
- 	if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR;
- 	b = (char *) s->buff->data;
- 	x.data = (unsigned char *) b;
- 
- 	/* First check if the current buffer holds the terminator */
--	b[l] = terminator;
-+	b[l] = terminator; /* Set sentinel */
- 	for (i=0; b[i] != terminator; i++) ;
- 	if (i < l) {
--		int ret;
- 		x.slen = i + 1;
- 		ret = bconcat (r, &x);
- 		s->buff->slen = l;
- 		if (BSTR_OK == ret) bdelete (s->buff, 0, i + 1);
--		return BSTR_ERR & -(r->slen == 0);
-+		return BSTR_OK;
- 	}
- 
-+	rlo = r->slen;
-+
- 	/* If not then just concatenate the entire buffer to the output */
- 	x.slen = l;
- 	if (BSTR_OK != bconcat (r, &x)) return BSTR_ERR;
-@@ -1348,30 +1992,29 @@ struct tagbstring x;
- 	/* Perform direct in-place reads into the destination to allow for
- 	   the minimum of data-copies */
- 	for (;;) {
--		balloc (r, r->slen + s->maxBuffSz + 1);
-+		if (BSTR_OK != balloc (r, r->slen + s->maxBuffSz + 1)) return BSTR_ERR;
- 		b = (char *) (r->data + r->slen);
- 		l = (int) s->readFnPtr (b, 1, s->maxBuffSz, s->parm);
- 		if (l <= 0) {
--			r->data[r->slen] = '\0';
-+			r->data[r->slen] = (unsigned char) '\0';
- 			s->buff->slen = 0;
- 			s->isEOF = 1;
- 			/* If nothing was read return with an error message */
--			return BSTR_ERR & -(r->slen == 0);
-+			return BSTR_ERR & -(r->slen == rlo);
- 		}
--		b[l] = terminator;
-+		b[l] = terminator; /* Set sentinel */
- 		for (i=0; b[i] != terminator; i++) ;
--		if (i < l) {
--
--			/* Terminator found, push over-read back to buffer */
--			i++;
--			r->slen += i;
--			s->buff->slen = l - i;
--			memcpy (s->buff->data, b + i, l - i);
--			r->data[r->slen] = '\0';
--			return BSTR_OK;
--		}
-+		if (i < l) break;
- 		r->slen += l;
- 	}
-+
-+	/* Terminator found, push over-read back to buffer */
-+	i++;
-+	r->slen += i;
-+	s->buff->slen = l - i;
-+	bstr__memcpy (s->buff->data, b + i, l - i);
-+	r->data[r->slen] = (unsigned char) '\0';
-+	return BSTR_OK;
- }
- 
- /*  int bsreadlnsa (bstring r, struct bStream * s, bstring term)
-@@ -1381,14 +2024,15 @@ struct tagbstring x;
-  *  This function may read additional characters from the core stream that 
-  *  are not returned, but will be retained for subsequent read operations.
-  */
--int bsreadlnsa (bstring r, struct bStream * s, const bstring term) {
--int i, l;
-+int bsreadlnsa (bstring r, struct bStream * s, const_bstring term) {
-+int i, l, ret, rlo;
- unsigned char * b;
- struct tagbstring x;
- struct charField cf;
- 
--	if (s == NULL || s->buff == NULL || r == NULL || term == NULL 
--	 || term->data == NULL || r->mlen <= 0) return BSTR_ERR;
-+	if (s == NULL || s->buff == NULL || r == NULL || term == NULL ||
-+	    term->data == NULL || r->mlen <= 0 || r->slen < 0 ||
-+	    r->mlen < r->slen) return BSTR_ERR;
- 	if (term->slen == 1) return bsreadlna (r, s, term->data[0]);
- 	if (term->slen < 1 || buildCharField (&cf, term)) return BSTR_ERR;
- 
-@@ -1398,17 +2042,18 @@ struct charField cf;
- 	x.data = b;
- 
- 	/* First check if the current buffer holds the terminator */
--	b[l] = term->data[0];
-+	b[l] = term->data[0]; /* Set sentinel */
- 	for (i=0; !testInCharField (&cf, b[i]); i++) ;
- 	if (i < l) {
--		int ret;
- 		x.slen = i + 1;
- 		ret = bconcat (r, &x);
- 		s->buff->slen = l;
- 		if (BSTR_OK == ret) bdelete (s->buff, 0, i + 1);
--		return BSTR_ERR & -(r->slen == 0);
-+		return BSTR_OK;
- 	}
- 
-+	rlo = r->slen;
-+
- 	/* If not then just concatenate the entire buffer to the output */
- 	x.slen = l;
- 	if (BSTR_OK != bconcat (r, &x)) return BSTR_ERR;
-@@ -1416,30 +2061,30 @@ struct charField cf;
- 	/* Perform direct in-place reads into the destination to allow for
- 	   the minimum of data-copies */
- 	for (;;) {
--		balloc (r, r->slen + s->maxBuffSz + 1);
-+		if (BSTR_OK != balloc (r, r->slen + s->maxBuffSz + 1)) return BSTR_ERR;
- 		b = (unsigned char *) (r->data + r->slen);
- 		l = (int) s->readFnPtr (b, 1, s->maxBuffSz, s->parm);
- 		if (l <= 0) {
--			r->data[r->slen] = '\0';
-+			r->data[r->slen] = (unsigned char) '\0';
- 			s->buff->slen = 0;
- 			s->isEOF = 1;
- 			/* If nothing was read return with an error message */
--			return BSTR_ERR & -(r->slen == 0);
-+			return BSTR_ERR & -(r->slen == rlo);
- 		}
- 
--		b[l] = term->data[0];
-+		b[l] = term->data[0]; /* Set sentinel */
- 		for (i=0; !testInCharField (&cf, b[i]); i++) ;
--		if (i < l) {
--			/* Terminator found, push over-read back to buffer */
--			i++;
--			r->slen += i;
--			s->buff->slen = l - i;
--			memcpy (s->buff->data, b + i, l - i);
--			r->data[r->slen] = '\0';
--			return BSTR_OK;
--		}
-+		if (i < l) break;
- 		r->slen += l;
- 	}
-+
-+	/* Terminator found, push over-read back to buffer */
-+	i++;
-+	r->slen += i;
-+	s->buff->slen = l - i;
-+	bstr__memcpy (s->buff->data, b + i, l - i);
-+	r->data[r->slen] = (unsigned char) '\0';
-+	return BSTR_OK;
- }
- 
- /*  int bsreada (bstring r, struct bStream * s, int n)
-@@ -1451,29 +2096,45 @@ struct charField cf;
-  *  additional characters from the core stream beyond virtual stream pointer.
-  */
- int bsreada (bstring r, struct bStream * s, int n) {
--int l;
-+int l, ret, orslen;
- char * b;
- struct tagbstring x;
- 
- 	if (s == NULL || s->buff == NULL || r == NULL || r->mlen <= 0
--	 || r->slen < 0 || n <= 0) return BSTR_ERR;
-+	 || r->slen < 0 || r->mlen < r->slen || n <= 0) return BSTR_ERR;
- 
- 	n += r->slen;
- 	if (n <= 0) return BSTR_ERR;
- 
- 	l = s->buff->slen;
-+
-+	orslen = r->slen;
-+
-+	if (0 == l) {
-+		if (s->isEOF) return BSTR_ERR;
-+		if (r->mlen > n) {
-+			l = (int) s->readFnPtr (r->data + r->slen, 1, n - r->slen, s->parm);
-+			if (0 >= l || l > n - r->slen) {
-+				s->isEOF = 1;
-+				return BSTR_ERR;
-+			}
-+			r->slen += l;
-+			r->data[r->slen] = (unsigned char) '\0';
-+			return 0;
-+		}
-+	}
-+
- 	if (BSTR_OK != balloc (s->buff, s->maxBuffSz + 1)) return BSTR_ERR;
- 	b = (char *) s->buff->data;
- 	x.data = (unsigned char *) b;
- 
- 	do {
- 		if (l + r->slen >= n) {
--			int ret;
- 			x.slen = n - r->slen;
- 			ret = bconcat (r, &x);
- 			s->buff->slen = l;
- 			if (BSTR_OK == ret) bdelete (s->buff, 0, x.slen);
--			return BSTR_ERR & -(r->slen == 0);
-+			return BSTR_ERR & -(r->slen == orslen);
- 		}
- 
- 		x.slen = l;
-@@ -1488,7 +2149,7 @@ struct tagbstring x;
- 	if (l < 0) l = 0;
- 	if (l == 0) s->isEOF = 1;
- 	s->buff->slen = l;
--	return BSTR_ERR & -(r->slen == 0);
-+	return BSTR_ERR & -(r->slen == orslen);
- }
- 
- /*  int bsreadln (bstring r, struct bStream * s, char terminator)
-@@ -1513,7 +2174,7 @@ int bsreadln (bstring r, struct bStream 
-  *  This function may read additional characters from the core stream that 
-  *  are not returned, but will be retained for subsequent read operations.
-  */
--int bsreadlns (bstring r, struct bStream * s, const bstring term) {
-+int bsreadlns (bstring r, struct bStream * s, const_bstring term) {
- 	if (s == NULL || s->buff == NULL || r == NULL || term == NULL 
- 	 || term->data == NULL || r->mlen <= 0) return BSTR_ERR;
- 	if (term->slen == 1) return bsreadln (r, s, term->data[0]);
-@@ -1539,15 +2200,15 @@ int bsread (bstring r, struct bStream * 
- 	return bsreada (r, s, n);
- }
- 
--/*  int bsunread (struct bStream * s, const bstring b)
-+/*  int bsunread (struct bStream * s, const_bstring b)
-  *
-  *  Insert a bstring into the bStream at the current position.  These 
-  *  characters will be read prior to those that actually come from the core 
-  *  stream.
-  */
--int bsunread (struct bStream * s, const bstring b) {
-+int bsunread (struct bStream * s, const_bstring b) {
- 	if (s == NULL || s->buff == NULL) return BSTR_ERR;
--	return binsert (s->buff, 0, b, '?');
-+	return binsert (s->buff, 0, b, (unsigned char) '?');
- }
- 
- /*  int bspeek (bstring r, const struct bStream * s)
-@@ -1556,27 +2217,23 @@ int bsunread (struct bStream * s, const 
-  *  read prior to reads from the core stream.
-  */
- int bspeek (bstring r, const struct bStream * s) {
--	if (s == NULL || s->buff == NULL || r == NULL || r->slen > r->mlen || r->slen < 0) return BSTR_ERR;
--	r->slen = 0;
--	return bconcat (r, s->buff);
-+	if (s == NULL || s->buff == NULL) return BSTR_ERR;
-+	return bassign (r, s->buff);
- }
- 
--/*  bstring bjoin (const struct bstrList * bl, const bstring sep);
-+/*  bstring bjoin (const struct bstrList * bl, const_bstring sep);
-  *
-  *  Join the entries of a bstrList into one bstring by sequentially 
-  *  concatenating them with the sep string in between.  If there is an error 
-  *  NULL is returned, otherwise a bstring with the correct result is returned.
-  */
--bstring bjoin (const struct bstrList * bl, const bstring sep) {
-+bstring bjoin (const struct bstrList * bl, const_bstring sep) {
- bstring b;
- int i, c, v;
- 
- 	if (bl == NULL || bl->qty < 0) return NULL;
- 	if (sep != NULL && (sep->slen < 0 || sep->data == NULL)) return NULL;
- 
--	b = (bstring) malloc (sizeof (struct tagbstring));
--	if (b == NULL) return NULL; /* Out of memory */
--
- 	for (i = 0, c = 1; i < bl->qty; i++) {
- 		v = bl->entry[i]->slen;
- 		if (v < 0) return NULL;	/* Invalid input */
-@@ -1585,30 +2242,35 @@ int i, c, v;
- 	}
- 
- 	if (sep != NULL) c += (bl->qty - 1) * sep->slen;
--	b->data = (unsigned char *) malloc (c);
--	if (b->data == NULL) return NULL;
-+
-+	b = (bstring) bstr__alloc (sizeof (struct tagbstring));
-+	if (NULL == b) return NULL; /* Out of memory */
-+	b->data = (unsigned char *) bstr__alloc (c);
-+	if (b->data == NULL) {
-+		bstr__free (b);
-+		return NULL;
-+	}
- 
- 	b->mlen = c;
- 	b->slen = c-1;
- 
- 	for (i = 0, c = 0; i < bl->qty; i++) {
- 		if (i > 0 && sep != NULL) {
--			memcpy (b->data + c, sep->data, sep->slen);
-+			bstr__memcpy (b->data + c, sep->data, sep->slen);
- 			c += sep->slen;
- 		}
- 		v = bl->entry[i]->slen;
--		memcpy (b->data + c, bl->entry[i]->data, v);
-+		bstr__memcpy (b->data + c, bl->entry[i]->data, v);
- 		c += v;
--
- 	}
--	b->data[c] = '\0';
-+	b->data[c] = (unsigned char) '\0';
- 	return b;
- }
- 
- #define BSSSC_BUFF_LEN (256)
- 
--/*  int bssplitscb (struct bStream * s, const bstring splitStr, 
-- *	int (* cb) (void * parm, int ofs, const bstring entry), void * parm)
-+/*  int bssplitscb (struct bStream * s, const_bstring splitStr, 
-+ *	int (* cb) (void * parm, int ofs, const_bstring entry), void * parm)
-  *
-  *  Iterate the set of disjoint sequential substrings read from a stream 
-  *  divided by any of the characters in splitStr.  An empty splitStr causes 
-@@ -1624,8 +2286,8 @@ int i, c, v;
-  *  return with a negative value, otherwise bssplitscb will continue in an 
-  *  undefined manner.
-  */
--int bssplitscb (struct bStream * s, const bstring splitStr, 
--	int (* cb) (void * parm, int ofs, const bstring entry), void * parm) {
-+int bssplitscb (struct bStream * s, const_bstring splitStr, 
-+	int (* cb) (void * parm, int ofs, const_bstring entry), void * parm) {
- struct charField chrs;
- bstring buff;
- int i, p, ret;
-@@ -1646,16 +2308,21 @@ int i, p, ret;
- 			if (i >= buff->slen) {
- 				bsreada (buff, s, BSSSC_BUFF_LEN);
- 				if (i >= buff->slen) {
--					if ((ret = cb (parm, p, buff)) > 0) ret = 0;
-+					if (0 < (ret = cb (parm, p, buff))) ret = 0;
- 					break;
- 				}
- 			}
- 			if (testInCharField (&chrs, buff->data[i])) {
- 				struct tagbstring t;
-+				unsigned char c;
-+
- 				blk2tbstr (t, buff->data + i + 1, buff->slen - (i + 1));
- 				if ((ret = bsunread (s, &t)) < 0) break;
- 				buff->slen = i;
-+				c = buff->data[i];
-+				buff->data[i] = (unsigned char) '\0';
- 				if ((ret = cb (parm, p, buff)) < 0) break;
-+				buff->data[i] = c;
- 				buff->slen = 0;
- 				p += i + 1;
- 				i = -1;
-@@ -1668,25 +2335,155 @@ int i, p, ret;
- 	return ret;
- }
- 
-+/*  int bssplitstrcb (struct bStream * s, const_bstring splitStr, 
-+ *	int (* cb) (void * parm, int ofs, const_bstring entry), void * parm)
-+ *
-+ *  Iterate the set of disjoint sequential substrings read from a stream 
-+ *  divided by the entire substring splitStr.  An empty splitStr causes 
-+ *  each character of the stream to be iterated.
-+ *
-+ *  Note: At the point of calling the cb function, the bStream pointer is 
-+ *  pointed exactly at the position right after having read the split 
-+ *  character.  The cb function can act on the stream by causing the bStream
-+ *  pointer to move, and bssplitscb will continue by starting the next split
-+ *  at the position of the pointer after the return from cb.
-+ *
-+ *  However, if the cb causes the bStream s to be destroyed then the cb must
-+ *  return with a negative value, otherwise bssplitscb will continue in an 
-+ *  undefined manner.
-+ */
-+int bssplitstrcb (struct bStream * s, const_bstring splitStr, 
-+	int (* cb) (void * parm, int ofs, const_bstring entry), void * parm) {
-+bstring buff;
-+int i, p, ret;
-+
-+	if (cb == NULL || s == NULL || s->readFnPtr == NULL 
-+	 || splitStr == NULL || splitStr->slen < 0) return BSTR_ERR;
-+
-+	if (splitStr->slen == 1) return bssplitscb (s, splitStr, cb, parm);
-+
-+	if (NULL == (buff = bfromcstr (""))) return BSTR_ERR;
-+
-+	if (splitStr->slen == 0) {
-+		for (i=0; bsreada (buff, s, BSSSC_BUFF_LEN) >= 0; i++) {
-+			if ((ret = cb (parm, 0, buff)) < 0) {
-+				bdestroy (buff);
-+				return ret;
-+			}
-+			buff->slen = 0;
-+		}
-+		return BSTR_OK;
-+	} else {
-+		ret = p = i = 0;
-+		for (i=p=0;;) {
-+			if ((ret = binstr (buff, 0, splitStr)) >= 0) {
-+				struct tagbstring t;
-+				blk2tbstr (t, buff->data, ret);
-+				i = ret + splitStr->slen;
-+				if ((ret = cb (parm, p, &t)) < 0) break;
-+				p += i;
-+				bdelete (buff, 0, i);
-+			} else {
-+				bsreada (buff, s, BSSSC_BUFF_LEN);
-+				if (bseof (s)) {
-+					if ((ret = cb (parm, p, buff)) > 0) ret = 0;
-+					break;
-+				}
-+			}
-+		}
-+	}
-+
-+	bdestroy (buff);
-+	return ret;
-+}
-+
-+/*  int bstrListCreate (void)
-+ *
-+ *  Create a bstrList.
-+ */
-+struct bstrList * bstrListCreate (void) {
-+struct bstrList * sl = (struct bstrList *) bstr__alloc (sizeof (struct bstrList));
-+	if (sl) {
-+		sl->entry = (bstring *) bstr__alloc (1*sizeof (bstring));
-+		if (!sl->entry) {
-+			bstr__free (sl);
-+			sl = NULL;
-+		} else {
-+			sl->qty = 0;
-+			sl->mlen = 1;
-+		}
-+	}
-+	return sl;
-+}
-+
- /*  int bstrListDestroy (struct bstrList * sl)
-  *
-- *  Destroy a bstrList that has been created by bsplit or bsplits.
-+ *  Destroy a bstrList that has been created by bsplit, bsplits or bstrListCreate.
-  */
- int bstrListDestroy (struct bstrList * sl) {
- int i;
--	if (sl == NULL) return BSTR_ERR;
-+	if (sl == NULL || sl->qty < 0) return BSTR_ERR;
- 	for (i=0; i < sl->qty; i++) {
- 		if (sl->entry[i]) {
- 			bdestroy (sl->entry[i]);
- 			sl->entry[i] = NULL;
- 		}
- 	}
--	sl->qty = -1;
--	free (sl);
-+	sl->qty  = -1;
-+	sl->mlen = -1;
-+	bstr__free (sl->entry);
-+	sl->entry = NULL;
-+	bstr__free (sl);
-+	return BSTR_OK;
-+}
-+
-+/*  int bstrListAlloc (struct bstrList * sl, int msz)
-+ *
-+ *  Ensure that there is memory for at least msz number of entries for the
-+ *  list.
-+ */
-+int bstrListAlloc (struct bstrList * sl, int msz) {
-+bstring * l;
-+int smsz;
-+size_t nsz;
-+	if (!sl || msz <= 0 || !sl->entry || sl->qty < 0 || sl->mlen <= 0 || sl->qty > sl->mlen) return BSTR_ERR;
-+	if (sl->mlen >= msz) return BSTR_OK;
-+	smsz = snapUpSize (msz);
-+	nsz = ((size_t) smsz) * sizeof (bstring);
-+	if (nsz < (size_t) smsz) return BSTR_ERR;
-+	l = (bstring *) bstr__realloc (sl->entry, nsz);
-+	if (!l) {
-+		smsz = msz;
-+		nsz = ((size_t) smsz) * sizeof (bstring);
-+		l = (bstring *) bstr__realloc (sl->entry, nsz);
-+		if (!l) return BSTR_ERR;
-+	}
-+	sl->mlen = smsz;
-+	sl->entry = l;
-+	return BSTR_OK;
-+}
-+
-+/*  int bstrListAllocMin (struct bstrList * sl, int msz)
-+ *
-+ *  Try to allocate the minimum amount of memory for the list to include at
-+ *  least msz entries or sl->qty whichever is greater.
-+ */
-+int bstrListAllocMin (struct bstrList * sl, int msz) {
-+bstring * l;
-+size_t nsz;
-+	if (!sl || msz <= 0 || !sl->entry || sl->qty < 0 || sl->mlen <= 0 || sl->qty > sl->mlen) return BSTR_ERR;
-+	if (msz < sl->qty) msz = sl->qty;
-+	if (sl->mlen == msz) return BSTR_OK;
-+	nsz = ((size_t) msz) * sizeof (bstring);
-+	if (nsz < (size_t) msz) return BSTR_ERR;
-+	l = (bstring *) bstr__realloc (sl->entry, nsz);
-+	if (!l) return BSTR_ERR;
-+	sl->mlen = msz;
-+	sl->entry = l;
- 	return BSTR_OK;
- }
- 
--/*  int bsplitcb (const bstring str, unsigned char splitChar, int pos,
-+/*  int bsplitcb (const_bstring str, unsigned char splitChar, int pos,
-  *	int (* cb) (void * parm, int ofs, int len), void * parm)
-  *
-  *  Iterate the set of disjoint sequential substrings over str divided by the
-@@ -1701,7 +2498,7 @@ int i;
-  *  cb function destroys str, then it *must* return with a negative value, 
-  *  otherwise bsplitcb will continue in an undefined manner.
-  */
--int bsplitcb (const bstring str, unsigned char splitChar, int pos,
-+int bsplitcb (const_bstring str, unsigned char splitChar, int pos,
- 	int (* cb) (void * parm, int ofs, int len), void * parm) {
- int i, p, ret;
- 
-@@ -1715,11 +2512,11 @@ int i, p, ret;
- 		}
- 		if ((ret = cb (parm, p, i - p)) < 0) return ret;
- 		p = i + 1;
--	} while (p < str->slen);
--	return 0;
-+	} while (p <= str->slen);
-+	return BSTR_OK;
- }
- 
--/*  int bsplitscb (const bstring str, const bstring splitStr, int pos,
-+/*  int bsplitscb (const_bstring str, const_bstring splitStr, int pos,
-  *	int (* cb) (void * parm, int ofs, int len), void * parm)
-  *
-  *  Iterate the set of disjoint sequential substrings over str divided by any 
-@@ -1735,7 +2532,7 @@ int i, p, ret;
-  *  cb function destroys str, then it *must* return with a negative value, 
-  *  otherwise bsplitscb will continue in an undefined manner.
-  */
--int bsplitscb (const bstring str, const bstring splitStr, int pos,
-+int bsplitscb (const_bstring str, const_bstring splitStr, int pos,
- 	int (* cb) (void * parm, int ofs, int len), void * parm) {
- struct charField chrs;
- int i, p, ret;
-@@ -1759,56 +2556,102 @@ int i, p, ret;
- 		}
- 		if ((ret = cb (parm, p, i - p)) < 0) return ret;
- 		p = i + 1;
--	} while (p < str->slen);
--	return 0;
-+	} while (p <= str->slen);
-+	return BSTR_OK;
- }
- 
--#include <stddef.h>
-+/*  int bsplitstrcb (const_bstring str, const_bstring splitStr, int pos,
-+ *	int (* cb) (void * parm, int ofs, int len), void * parm)
-+ *
-+ *  Iterate the set of disjoint sequential substrings over str divided by the 
-+ *  substring splitStr.  An empty splitStr causes the whole str to be 
-+ *  iterated once.
-+ *
-+ *  Note: Non-destructive modification of str from within the cb function 
-+ *  while performing this split is not undefined.  bsplitstrcb behaves in 
-+ *  sequential lock step with calls to cb.  I.e., after returning from a cb 
-+ *  that return a non-negative integer, bsplitscb continues from the position 
-+ *  1 character after the last detected split character and it will halt 
-+ *  immediately if the length of str falls below this point.  However, if the 
-+ *  cb function destroys str, then it *must* return with a negative value, 
-+ *  otherwise bsplitscb will continue in an undefined manner.
-+ */
-+int bsplitstrcb (const_bstring str, const_bstring splitStr, int pos,
-+	int (* cb) (void * parm, int ofs, int len), void * parm) {
-+int i, p, ret;
- 
--#ifdef offsetof
--#define BLE_SZ (offsetof (struct bstrList, entry))
--#else
--#define BLE_SZ (sizeof (struct bstrList))
--#endif
-+	if (cb == NULL || str == NULL || pos < 0 || pos > str->slen 
-+	 || splitStr == NULL || splitStr->slen < 0) return BSTR_ERR;
-+
-+	if (0 == splitStr->slen) {
-+		for (i=pos; i < str->slen; i++) {
-+			if ((ret = cb (parm, i, 1)) < 0) return ret;
-+		}
-+		return BSTR_OK;
-+	}
-+
-+	if (splitStr->slen == 1) 
-+		return bsplitcb (str, splitStr->data[0], pos, cb, parm);
-+
-+	for (i=p=pos; i <= str->slen - splitStr->slen; i++) {
-+		if (0 == bstr__memcmp (splitStr->data, str->data + i, splitStr->slen)) {
-+			if ((ret = cb (parm, p, i - p)) < 0) return ret;
-+			i += splitStr->slen;
-+			p = i;
-+		}
-+	}
-+	if ((ret = cb (parm, p, str->slen - p)) < 0) return ret;
-+	return BSTR_OK;
-+}
- 
- struct genBstrList {
- 	bstring b;
- 	struct bstrList * bl;
--	int mlen;
- };
- 
- static int bscb (void * parm, int ofs, int len) {
--struct genBstrList * g = (struct genBstrList *)parm;
--	if (g->bl->qty >= g->mlen) {
--		int mlen = g->mlen * 2;
--		struct bstrList * tbl;
-+struct genBstrList * g = (struct genBstrList *) parm;
-+	if (g->bl->qty >= g->bl->mlen) {
-+		int mlen = g->bl->mlen * 2;
-+		bstring * tbl;
-+
-+		while (g->bl->qty >= mlen) {
-+			if (mlen < g->bl->mlen) return BSTR_ERR;
-+			mlen += mlen;
-+		}
- 
--		while (g->bl->qty >= mlen) mlen += mlen;
--		tbl = (struct bstrList *) realloc (g->bl, BLE_SZ + sizeof (bstring) * (mlen));
-+		tbl = (bstring *) bstr__realloc (g->bl->entry, sizeof (bstring) * mlen);
- 		if (tbl == NULL) return BSTR_ERR;
--		g->bl = tbl;
--		g->mlen = mlen;
-+
-+		g->bl->entry = tbl;
-+		g->bl->mlen = mlen;
- 	}
- 
- 	g->bl->entry[g->bl->qty] = bmidstr (g->b, ofs, len);
- 	g->bl->qty++;
--	return 0;
-+	return BSTR_OK;
- }
- 
--/*  struct bstrList * bsplit (const bstring str, unsigned char splitChar)
-+/*  struct bstrList * bsplit (const_bstring str, unsigned char splitChar)
-  *
-  *  Create an array of sequential substrings from str divided by the character
-  *  splitChar.  
-  */
--struct bstrList * bsplit (const bstring str, unsigned char splitChar) {
-+struct bstrList * bsplit (const_bstring str, unsigned char splitChar) {
- struct genBstrList g;
- 
- 	if (str == NULL || str->data == NULL || str->slen < 0) return NULL;
- 
--	g.b = str;
--	g.mlen = 4;
--	g.bl = (struct bstrList *) malloc (BLE_SZ + sizeof (bstring) * g.mlen);
-+	g.bl = (struct bstrList *) bstr__alloc (sizeof (struct bstrList));
- 	if (g.bl == NULL) return NULL;
-+	g.bl->mlen = 4;
-+	g.bl->entry = (bstring *) bstr__alloc (g.bl->mlen * sizeof (bstring));
-+	if (NULL == g.bl->entry) {
-+		bstr__free (g.bl);
-+		return NULL;
-+	}
-+
-+	g.b = (bstring) str;
- 	g.bl->qty = 0;
- 	if (bsplitcb (str, splitChar, 0, bscb, &g) < 0) {
- 		bstrListDestroy (g.bl);
-@@ -1817,24 +2660,58 @@ struct genBstrList g;
- 	return g.bl;
- }
- 
--/*  struct bstrList * bsplits (const bstring str, bstring splitStr)
-+/*  struct bstrList * bsplitstr (const_bstring str, const_bstring splitStr)
-+ *
-+ *  Create an array of sequential substrings from str divided by the entire
-+ *  substring splitStr.
-+ */
-+struct bstrList * bsplitstr (const_bstring str, const_bstring splitStr) {
-+struct genBstrList g;
-+
-+	if (str == NULL || str->data == NULL || str->slen < 0) return NULL;
-+
-+	g.bl = (struct bstrList *) bstr__alloc (sizeof (struct bstrList));
-+	if (g.bl == NULL) return NULL;
-+	g.bl->mlen = 4;
-+	g.bl->entry = (bstring *) bstr__alloc (g.bl->mlen * sizeof (bstring));
-+	if (NULL == g.bl->entry) {
-+		bstr__free (g.bl);
-+		return NULL;
-+	}
-+
-+	g.b = (bstring) str;
-+	g.bl->qty = 0;
-+	if (bsplitstrcb (str, splitStr, 0, bscb, &g) < 0) {
-+		bstrListDestroy (g.bl);
-+		return NULL;
-+	}
-+	return g.bl;
-+}
-+
-+/*  struct bstrList * bsplits (const_bstring str, bstring splitStr)
-  *
-  *  Create an array of sequential substrings from str divided by any of the 
-  *  characters in splitStr.  An empty splitStr causes a single entry bstrList
-  *  containing a copy of str to be returned.
-  */
--struct bstrList * bsplits (const bstring str, const bstring splitStr) {
-+struct bstrList * bsplits (const_bstring str, const_bstring splitStr) {
- struct genBstrList g;
- 
- 	if (     str == NULL ||      str->slen < 0 ||      str->data == NULL ||
- 	    splitStr == NULL || splitStr->slen < 0 || splitStr->data == NULL)
- 		return NULL;
- 
--	g.b = str;
--	g.mlen = 4;
--	g.bl = (struct bstrList *) malloc (BLE_SZ + sizeof (bstring) * g.mlen);
-+	g.bl = (struct bstrList *) bstr__alloc (sizeof (struct bstrList));
- 	if (g.bl == NULL) return NULL;
-+	g.bl->mlen = 4;
-+	g.bl->entry = (bstring *) bstr__alloc (g.bl->mlen * sizeof (bstring));
-+	if (NULL == g.bl->entry) {
-+		bstr__free (g.bl);
-+		return NULL;
-+	}
-+	g.b = (bstring) str;
- 	g.bl->qty = 0;
-+
- 	if (bsplitscb (str, splitStr, 0, bscb, &g) < 0) {
- 		bstrListDestroy (g.bl);
- 		return NULL;
-@@ -1842,7 +2719,7 @@ struct genBstrList g;
- 	return g.bl;
- }
- 
--#if defined(__TURBOC__)
-+#if defined (__TURBOC__) && !defined (__BORLANDC__)
- # ifndef BSTRLIB_NOVSNP
- #  define BSTRLIB_NOVSNP
- # endif
-@@ -1869,6 +2746,8 @@ extern int vsnprintf (char *buf, size_t 
- #endif
- #endif
- 
-+#if !defined (BSTRLIB_NOVSNP)
-+
- #ifndef START_VSNBUFF
- #define START_VSNBUFF (16)
- #endif
-@@ -1880,16 +2759,18 @@ extern int vsnprintf (char *buf, size_t 
-    than n, then changing n to the return value will reduce the number of
-    iterations required. */
- 
--/*  bstring bformata (bstring b, const char * fmt, ...)
-+/*  int bformata (bstring b, const char * fmt, ...)
-  *
-- *  Takes the same parameters as printf (), but rather than outputting results
-- *  to stdio, it forms appends the results to a bstring which contains what 
-- *  would have been output. Note that if there is an early generation of a 
-- *  '\0' character, the bstring will be truncated to this end point.
-+ *  After the first parameter, it takes the same parameters as printf (), but 
-+ *  rather than outputting results to stdio, it appends the results to 
-+ *  a bstring which contains what would have been output. Note that if there 
-+ *  is an early generation of a '\0' character, the bstring will be truncated 
-+ *  to this end point.
-  */
- int bformata (bstring b, const char * fmt, ...) {
- va_list arglist;
--int n, slen, r;
-+bstring buff;
-+int n, r;
- 
- 	if (b == NULL || fmt == NULL || b->data == NULL || b->mlen <= 0 
- 	 || b->slen < 0 || b->slen > b->mlen) return BSTR_ERR;
-@@ -1898,25 +2779,81 @@ int n, slen, r;
- 	   performed using the truncating "vsnprintf" call (to avoid buffer
- 	   overflows) on increasing potential sizes for the output result. */
- 
--	slen = b->slen;
--	if ((n = 2*strlen (fmt)) < START_VSNBUFF) n = START_VSNBUFF;
-+	if ((n = (int) (2*strlen (fmt))) < START_VSNBUFF) n = START_VSNBUFF;
-+	if (NULL == (buff = bfromcstralloc (n + 2, ""))) {
-+		n = 1;
-+		if (NULL == (buff = bfromcstralloc (n + 2, ""))) return BSTR_ERR;
-+	}
- 
- 	for (;;) {
--		if (BSTR_OK != balloc (b, n + 2 + slen)) return BSTR_ERR;
-+		va_start (arglist, fmt);
-+		exvsnprintf (r, (char *) buff->data, n + 1, fmt, arglist);
-+		va_end (arglist);
-+
-+		buff->data[n] = (unsigned char) '\0';
-+		buff->slen = (int) (strlen) ((char *) buff->data);
-+
-+		if (buff->slen < n) break;
- 
-+		if (r > n) n = r; else n += n;
-+
-+		if (BSTR_OK != balloc (buff, n + 2)) {
-+			bdestroy (buff);
-+			return BSTR_ERR;
-+		}
-+	}
-+
-+	r = bconcat (b, buff);
-+	bdestroy (buff);
-+	return r;
-+}
-+
-+/*  int bassignformat (bstring b, const char * fmt, ...)
-+ *
-+ *  After the first parameter, it takes the same parameters as printf (), but 
-+ *  rather than outputting results to stdio, it outputs the results to 
-+ *  the bstring parameter b. Note that if there is an early generation of a 
-+ *  '\0' character, the bstring will be truncated to this end point.
-+ */
-+int bassignformat (bstring b, const char * fmt, ...) {
-+va_list arglist;
-+bstring buff;
-+int n, r;
-+
-+	if (b == NULL || fmt == NULL || b->data == NULL || b->mlen <= 0 
-+	 || b->slen < 0 || b->slen > b->mlen) return BSTR_ERR;
-+
-+	/* Since the length is not determinable beforehand, a search is
-+	   performed using the truncating "vsnprintf" call (to avoid buffer
-+	   overflows) on increasing potential sizes for the output result. */
-+
-+	if ((n = (int) (2*strlen (fmt))) < START_VSNBUFF) n = START_VSNBUFF;
-+	if (NULL == (buff = bfromcstralloc (n + 2, ""))) {
-+		n = 1;
-+		if (NULL == (buff = bfromcstralloc (n + 2, ""))) return BSTR_ERR;
-+	}
-+
-+	for (;;) {
- 		va_start (arglist, fmt);
--		exvsnprintf (r, (char *) b->data + slen, n + 1, fmt, arglist);
-+		exvsnprintf (r, (char *) buff->data, n + 1, fmt, arglist);
- 		va_end (arglist);
- 
--		b->data[n + slen] = '\0';
--		b->slen = slen + (int) (strlen) ((char *) b->data + slen);
-+		buff->data[n] = (unsigned char) '\0';
-+		buff->slen = (int) (strlen) ((char *) buff->data);
- 
--		if (b->slen - slen < n) break;
-+		if (buff->slen < n) break;
- 
- 		if (r > n) n = r; else n += n;
-+
-+		if (BSTR_OK != balloc (buff, n + 2)) {
-+			bdestroy (buff);
-+			return BSTR_ERR;
-+		}
- 	}
- 
--	return 0;
-+	r = bassign (b, buff);
-+	bdestroy (buff);
-+	return r;
- }
- 
- /*  bstring bformat (const char * fmt, ...)
-@@ -1937,27 +2874,82 @@ int n, r;
- 	   performed using the truncating "vsnprintf" call (to avoid buffer
- 	   overflows) on increasing potential sizes for the output result. */
- 
--	if ((n = 2*strlen (fmt)) < START_VSNBUFF) n = START_VSNBUFF;
--	buff = bfromcstr ("");
-+	if ((n = (int) (2*strlen (fmt))) < START_VSNBUFF) n = START_VSNBUFF;
-+	if (NULL == (buff = bfromcstralloc (n + 2, ""))) {
-+		n = 1;
-+		if (NULL == (buff = bfromcstralloc (n + 2, ""))) return NULL;
-+	}
- 
- 	for (;;) {
--		if (BSTR_OK != balloc (buff, n + 2)) {
--			bdestroy (buff);
--			return NULL;
--		}
--
- 		va_start (arglist, fmt);
- 		exvsnprintf (r, (char *) buff->data, n + 1, fmt, arglist);
- 		va_end (arglist);
- 
--		buff->data[n] = '\0';
-+		buff->data[n] = (unsigned char) '\0';
- 		buff->slen = (int) (strlen) ((char *) buff->data);
- 
- 		if (buff->slen < n) break;
- 
- 		if (r > n) n = r; else n += n;
-+
-+		if (BSTR_OK != balloc (buff, n + 2)) {
-+			bdestroy (buff);
-+			return NULL;
-+		}
- 	}
- 
- 	return buff;
- }
- 
-+/*  int bvcformata (bstring b, int count, const char * fmt, va_list arglist)
-+ *
-+ *  The bvcformata function formats data under control of the format control 
-+ *  string fmt and attempts to append the result to b.  The fmt parameter is 
-+ *  the same as that of the printf function.  The variable argument list is 
-+ *  replaced with arglist, which has been initialized by the va_start macro.
-+ *  The size of the output is upper bounded by count.  If the required output
-+ *  exceeds count, the string b is not augmented with any contents and a value
-+ *  below BSTR_ERR is returned.  If a value below -count is returned then it
-+ *  is recommended that the negative of this value be used as an update to the
-+ *  count in a subsequent pass.  On other errors, such as running out of 
-+ *  memory, parameter errors or numeric wrap around BSTR_ERR is returned.  
-+ *  BSTR_OK is returned when the output is successfully generated and 
-+ *  appended to b.
-+ *
-+ *  Note: There is no sanity checking of arglist, and this function is
-+ *  destructive of the contents of b from the b->slen point onward.  If there 
-+ *  is an early generation of a '\0' character, the bstring will be truncated 
-+ *  to this end point.
-+ */
-+int bvcformata (bstring b, int count, const char * fmt, va_list arg) {
-+int n, r, l;
-+
-+	if (b == NULL || fmt == NULL || count <= 0 || b->data == NULL
-+	 || b->mlen <= 0 || b->slen < 0 || b->slen > b->mlen) return BSTR_ERR;
-+
-+	if (count > (n = b->slen + count) + 2) return BSTR_ERR;
-+	if (BSTR_OK != balloc (b, n + 2)) return BSTR_ERR;
-+
-+	exvsnprintf (r, (char *) b->data + b->slen, count + 2, fmt, arg);
-+
-+	/* Did the operation complete successfully within bounds? */
-+
-+	if (n >= (l = b->slen + (int) (strlen) ((const char *) b->data + b->slen))) {
-+		b->slen = l;
-+		return BSTR_OK;
-+	}
-+
-+	/* Abort, since the buffer was not large enough.  The return value 
-+	   tries to help set what the retry length should be. */
-+
-+	b->data[b->slen] = '\0';
-+	if (r > count+1) l = r; else {
-+		l = count+count;
-+		if (count > l) l = INT_MAX;
-+	}
-+	n = -l;
-+	if (n > BSTR_ERR-1) n = BSTR_ERR-1;
-+	return n;
-+}
-+
-+#endif
-diff -urp pads-1.2.orig/lib/bstring/bstrlib.h pads-1.2/lib/bstring/bstrlib.h
---- pads-1.2.orig/lib/bstring/bstrlib.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/lib/bstring/bstrlib.h	2008-07-10 18:09:06.000000000 -0400
-@@ -1,8 +1,8 @@
- /*
-  * This source file is part of the bstring string library.  This code was
-- * written by Paul Hsieh in 2002-2004, and is covered by the BSD open source 
-- * license. Refer to the accompanying documentation for details on usage and 
-- * license.
-+ * written by Paul Hsieh in 2002-2008, and is covered by the BSD open source 
-+ * license and the GPL. Refer to the accompanying documentation for details 
-+ * on usage and license.
-  */
- 
- /*
-@@ -21,80 +21,140 @@ extern "C" {
- #include <stdarg.h>
- #include <string.h>
- #include <limits.h>
-+#include <ctype.h>
-+
-+#if !defined (BSTRLIB_VSNP_OK) && !defined (BSTRLIB_NOVSNP)
-+# if defined (__TURBOC__) && !defined (__BORLANDC__)
-+#  define BSTRLIB_NOVSNP
-+# endif
-+#endif
- 
- #define BSTR_ERR (-1)
- #define BSTR_OK (0)
-+#define BSTR_BS_BUFF_LENGTH_GET (0)
- 
- typedef struct tagbstring * bstring;
-+typedef const struct tagbstring * const_bstring;
- 
- /* Copy functions */
- #define cstr2bstr bfromcstr
- extern bstring bfromcstr (const char * str);
-+extern bstring bfromcstralloc (int mlen, const char * str);
- extern bstring blk2bstr (const void * blk, int len);
--extern char * bstr2cstr (const bstring s, char z);
-+extern char * bstr2cstr (const_bstring s, char z);
- extern int bcstrfree (char * s);
--extern bstring bstrcpy (const bstring b1);
--extern int bassign (bstring a, const bstring b);
-+extern bstring bstrcpy (const_bstring b1);
-+extern int bassign (bstring a, const_bstring b);
-+extern int bassignmidstr (bstring a, const_bstring b, int left, int len);
-+extern int bassigncstr (bstring a, const char * str);
-+extern int bassignblk (bstring a, const void * s, int len);
- 
- /* Destroy function */
- extern int bdestroy (bstring b);
- 
--/* Space allocation hinting function */
-+/* Space allocation hinting functions */
- extern int balloc (bstring s, int len);
-+extern int ballocmin (bstring b, int len);
- 
- /* Substring extraction */
--extern bstring bmidstr (const bstring b, int left, int len);
-+extern bstring bmidstr (const_bstring b, int left, int len);
- 
- /* Various standard manipulations */
--extern int bconcat (bstring b0, const bstring b1);
-+extern int bconcat (bstring b0, const_bstring b1);
- extern int bconchar (bstring b0, char c);
- extern int bcatcstr (bstring b, const char * s);
--extern int bcatblk (bstring b, const unsigned char * s, int len);
--extern int binsert (bstring s1, int pos, const bstring s2, unsigned char fill);
-+extern int bcatblk (bstring b, const void * s, int len);
-+extern int binsert (bstring s1, int pos, const_bstring s2, unsigned char fill);
- extern int binsertch (bstring s1, int pos, int len, unsigned char fill);
--extern int breplace (bstring b1, int pos, int len, const bstring b2, unsigned char fill);
-+extern int breplace (bstring b1, int pos, int len, const_bstring b2, unsigned char fill);
- extern int bdelete (bstring s1, int pos, int len);
--extern int bsetstr (bstring b0, int pos, const bstring b1, unsigned char fill);
-+extern int bsetstr (bstring b0, int pos, const_bstring b1, unsigned char fill);
-+extern int btrunc (bstring b, int n);
- 
- /* Scan/search functions */
--extern int bstricmp (const bstring b0, const bstring b1);
--extern int bstrnicmp (const bstring b0, const bstring b1, int n);
--extern int biseqcaseless (const bstring b0, const bstring b1);
--extern int biseq (const bstring b0, const bstring b1);
--extern int biseqcstr (const bstring b, const char * s);
--extern int bstrcmp (const bstring b0, const bstring b1);
--extern int bstrncmp (const bstring b0, const bstring b1, int n);
--extern int binstr (const bstring s1, int pos, const bstring s2);
--extern int binstrr (const bstring s1, int pos, const bstring s2);
--extern int bstrchr (const bstring b, int c);
--extern int bstrrchr (const bstring b, int c);
--extern int binchr (const bstring b0, int pos, const bstring b1);
--extern int binchrr (const bstring b0, int pos, const bstring b1);
--extern int bninchr (const bstring b0, int pos, const bstring b1);
--extern int bninchrr (const bstring b0, int pos, const bstring b1);
--extern int bfindreplace (bstring b, const bstring find, const bstring repl, int pos);
-+extern int bstricmp (const_bstring b0, const_bstring b1);
-+extern int bstrnicmp (const_bstring b0, const_bstring b1, int n);
-+extern int biseqcaseless (const_bstring b0, const_bstring b1);
-+extern int bisstemeqcaselessblk (const_bstring b0, const void * blk, int len);
-+extern int biseq (const_bstring b0, const_bstring b1);
-+extern int bisstemeqblk (const_bstring b0, const void * blk, int len);
-+extern int biseqcstr (const_bstring b, const char * s);
-+extern int biseqcstrcaseless (const_bstring b, const char * s);
-+extern int bstrcmp (const_bstring b0, const_bstring b1);
-+extern int bstrncmp (const_bstring b0, const_bstring b1, int n);
-+extern int binstr (const_bstring s1, int pos, const_bstring s2);
-+extern int binstrr (const_bstring s1, int pos, const_bstring s2);
-+extern int binstrcaseless (const_bstring s1, int pos, const_bstring s2);
-+extern int binstrrcaseless (const_bstring s1, int pos, const_bstring s2);
-+extern int bstrchrp (const_bstring b, int c, int pos);
-+extern int bstrrchrp (const_bstring b, int c, int pos);
-+#define bstrchr(b,c) bstrchrp ((b), (c), 0)
-+#define bstrrchr(b,c) bstrrchrp ((b), (c), blength(b)-1)
-+extern int binchr (const_bstring b0, int pos, const_bstring b1);
-+extern int binchrr (const_bstring b0, int pos, const_bstring b1);
-+extern int bninchr (const_bstring b0, int pos, const_bstring b1);
-+extern int bninchrr (const_bstring b0, int pos, const_bstring b1);
-+extern int bfindreplace (bstring b, const_bstring find, const_bstring repl, int pos);
-+extern int bfindreplacecaseless (bstring b, const_bstring find, const_bstring repl, int pos);
- 
-+/* List of string container functions */
- struct bstrList {
--    int qty;
--    bstring entry[1];
-+    int qty, mlen;
-+    bstring * entry;
- };
-+extern struct bstrList * bstrListCreate (void);
-+extern int bstrListDestroy (struct bstrList * sl);
-+extern int bstrListAlloc (struct bstrList * sl, int msz);
-+extern int bstrListAllocMin (struct bstrList * sl, int msz);
- 
- /* String split and join functions */
--extern struct bstrList * bsplit (const bstring str, unsigned char splitChar);
--extern struct bstrList * bsplits (const bstring str, const bstring splitStr);
--extern bstring bjoin (const struct bstrList * bl, const bstring sep);
--extern int bstrListDestroy (struct bstrList * sl);
--extern int bsplitcb (const bstring str, unsigned char splitChar, int pos,
-+extern struct bstrList * bsplit (const_bstring str, unsigned char splitChar);
-+extern struct bstrList * bsplits (const_bstring str, const_bstring splitStr);
-+extern struct bstrList * bsplitstr (const_bstring str, const_bstring splitStr);
-+extern bstring bjoin (const struct bstrList * bl, const_bstring sep);
-+extern int bsplitcb (const_bstring str, unsigned char splitChar, int pos,
-+	int (* cb) (void * parm, int ofs, int len), void * parm);
-+extern int bsplitscb (const_bstring str, const_bstring splitStr, int pos,
- 	int (* cb) (void * parm, int ofs, int len), void * parm);
--extern int bsplitscb (const bstring str, const bstring splitStr, int pos,
-+extern int bsplitstrcb (const_bstring str, const_bstring splitStr, int pos,
- 	int (* cb) (void * parm, int ofs, int len), void * parm);
- 
- /* Miscellaneous functions */
- extern int bpattern (bstring b, int len);
- extern int btoupper (bstring b);
- extern int btolower (bstring b);
-+extern int bltrimws (bstring b);
-+extern int brtrimws (bstring b);
-+extern int btrimws (bstring b);
-+
-+#if !defined (BSTRLIB_NOVSNP)
- extern bstring bformat (const char * fmt, ...);
- extern int bformata (bstring b, const char * fmt, ...);
-+extern int bassignformat (bstring b, const char * fmt, ...);
-+extern int bvcformata (bstring b, int count, const char * fmt, va_list arglist);
-+
-+#define bvformata(ret, b, fmt, lastarg) { \
-+bstring bstrtmp_b = (b); \
-+const char * bstrtmp_fmt = (fmt); \
-+int bstrtmp_r = BSTR_ERR, bstrtmp_sz = 16; \
-+	for (;;) { \
-+		va_list bstrtmp_arglist; \
-+		va_start (bstrtmp_arglist, lastarg); \
-+		bstrtmp_r = bvcformata (bstrtmp_b, bstrtmp_sz, bstrtmp_fmt, bstrtmp_arglist); \
-+		va_end (bstrtmp_arglist); \
-+		if (bstrtmp_r >= 0) { /* Everything went ok */ \
-+			bstrtmp_r = BSTR_OK; \
-+			break; \
-+		} else if (-bstrtmp_r <= bstrtmp_sz) { /* A real error? */ \
-+			bstrtmp_r = BSTR_ERR; \
-+			break; \
-+		} \
-+		bstrtmp_sz = -bstrtmp_r; /* Doubled or target size */ \
-+	} \
-+	ret = bstrtmp_r; \
-+}
-+
-+#endif
- 
- typedef int (*bNgetc) (void *parm);
- typedef size_t (* bNread) (void *buff, size_t elsize, size_t nelem, void *parm);
-@@ -102,21 +162,26 @@ typedef size_t (* bNread) (void *buff, s
- /* Input functions */
- extern bstring bgets (bNgetc getcPtr, void * parm, char terminator);
- extern bstring bread (bNread readPtr, void * parm);
-+extern int bgetsa (bstring b, bNgetc getcPtr, void * parm, char terminator);
-+extern int bassigngets (bstring b, bNgetc getcPtr, void * parm, char terminator);
-+extern int breada (bstring b, bNread readPtr, void * parm);
- 
- /* Stream functions */
- extern struct bStream * bsopen (bNread readPtr, void * parm);
- extern void * bsclose (struct bStream * s);
- extern int bsbufflength (struct bStream * s, int sz);
- extern int bsreadln (bstring b, struct bStream * s, char terminator);
--extern int bsreadlns (bstring r, struct bStream * s, const bstring term);
-+extern int bsreadlns (bstring r, struct bStream * s, const_bstring term);
- extern int bsread (bstring b, struct bStream * s, int n);
- extern int bsreadlna (bstring b, struct bStream * s, char terminator);
--extern int bsreadlnsa (bstring r, struct bStream * s, const bstring term);
-+extern int bsreadlnsa (bstring r, struct bStream * s, const_bstring term);
- extern int bsreada (bstring b, struct bStream * s, int n);
--extern int bsunread (struct bStream * s, const bstring b);
-+extern int bsunread (struct bStream * s, const_bstring b);
- extern int bspeek (bstring r, const struct bStream * s);
--extern int bssplitscb (struct bStream * s, const bstring splitStr, 
--	int (* cb) (void * parm, int ofs, const bstring entry), void * parm);
-+extern int bssplitscb (struct bStream * s, const_bstring splitStr, 
-+	int (* cb) (void * parm, int ofs, const_bstring entry), void * parm);
-+extern int bssplitstrcb (struct bStream * s, const_bstring splitStr, 
-+	int (* cb) (void * parm, int ofs, const_bstring entry), void * parm);
- extern int bseof (const struct bStream * s);
- 
- struct tagbstring {
-@@ -126,9 +191,9 @@ struct tagbstring {
- };
- 
- /* Accessor macros */
--#define blengthe(b, e)      (((b) == (void *)0 || (b)->slen < 0) ? (unsigned int)(e) : ((b)->slen))
-+#define blengthe(b, e)      (((b) == (void *)0 || (b)->slen < 0) ? (int)(e) : ((b)->slen))
- #define blength(b)          (blengthe ((b), 0))
--#define bdataofse(b, o, e)  (((b) == (void *)0 || (b)->data == (void*)0) ? (unsigned char *)(e) : ((b)->data) + (o))
-+#define bdataofse(b, o, e)  (((b) == (void *)0 || (b)->data == (void*)0) ? (char *)(e) : ((char *)(b)->data) + (o))
- #define bdataofs(b, o)      (bdataofse ((b), (o), (void *)0))
- #define bdatae(b, e)        (bdataofse (b, 0, e))
- #define bdata(b)            (bdataofs (b, 0))
-@@ -136,28 +201,101 @@ struct tagbstring {
- #define bchar(b, p)         bchare ((b), (p), '\0')
- 
- /* Static constant string initialization macro */
--#define bsStatic(q)         {-__LINE__, sizeof(q)-1, (unsigned char *)(q)}
-+#define bsStaticMlen(q,m)   {(m), (int) sizeof(q)-1, (unsigned char *) ("" q "")}
-+#if defined(_MSC_VER)
-+# define bsStatic(q)        bsStaticMlen(q,-32)
-+#endif
-+#ifndef bsStatic
-+# define bsStatic(q)        bsStaticMlen(q,-__LINE__)
-+#endif
-+
-+/* Static constant block parameter pair */
-+#define bsStaticBlkParms(q) ((void *)("" q "")), ((int) sizeof(q)-1)
- 
- /* Reference building macros */
- #define cstr2tbstr btfromcstr
--#define btfromcstr(t,s) {                         \
--    (t).data = (unsigned char *) (s);             \
--    (t).slen = (int) (strlen) ((char *)(t).data); \
--    (t).mlen = -1;                                \
-+#define btfromcstr(t,s) {                                            \
-+    (t).data = (unsigned char *) (s);                                \
-+    (t).slen = ((t).data) ? ((int) (strlen) ((char *)(t).data)) : 0; \
-+    (t).mlen = -1;                                                   \
- }
- #define blk2tbstr(t,s,l) {            \
-+    (t).data = (unsigned char *) (s); \
-     (t).slen = l;                     \
-     (t).mlen = -1;                    \
--    (t).data = (unsigned char *) (s); \
-+}
-+#define btfromblk(t,s,l) blk2tbstr(t,s,l)
-+#define bmid2tbstr(t,b,p,l) {                                                \
-+    const_bstring bstrtmp_s = (b);                                           \
-+    if (bstrtmp_s && bstrtmp_s->data && bstrtmp_s->slen >= 0) {              \
-+        int bstrtmp_left = (p);                                              \
-+        int bstrtmp_len  = (l);                                              \
-+        if (bstrtmp_left < 0) {                                              \
-+            bstrtmp_len += bstrtmp_left;                                     \
-+            bstrtmp_left = 0;                                                \
-+        }                                                                    \
-+        if (bstrtmp_len > bstrtmp_s->slen - bstrtmp_left)                    \
-+            bstrtmp_len = bstrtmp_s->slen - bstrtmp_left;                    \
-+        if (bstrtmp_len <= 0) {                                              \
-+            (t).data = (unsigned char *)"";                                  \
-+            (t).slen = 0;                                                    \
-+        } else {                                                             \
-+            (t).data = bstrtmp_s->data + bstrtmp_left;                       \
-+            (t).slen = bstrtmp_len;                                          \
-+        }                                                                    \
-+    } else {                                                                 \
-+        (t).data = (unsigned char *)"";                                      \
-+        (t).slen = 0;                                                        \
-+    }                                                                        \
-+    (t).mlen = -__LINE__;                                                    \
-+}
-+#define btfromblkltrimws(t,s,l) {                                            \
-+    int bstrtmp_idx = 0, bstrtmp_len = (l);                                  \
-+    unsigned char * bstrtmp_s = (s);                                         \
-+    if (bstrtmp_s && bstrtmp_len >= 0) {                                     \
-+        for (; bstrtmp_idx < bstrtmp_len; bstrtmp_idx++) {                   \
-+            if (!isspace (bstrtmp_s[bstrtmp_idx])) break;                    \
-+        }                                                                    \
-+    }                                                                        \
-+    (t).data = bstrtmp_s + bstrtmp_idx;                                      \
-+    (t).slen = bstrtmp_len - bstrtmp_idx;                                    \
-+    (t).mlen = -__LINE__;                                                    \
-+}
-+#define btfromblkrtrimws(t,s,l) {                                            \
-+    int bstrtmp_len = (l) - 1;                                               \
-+    unsigned char * bstrtmp_s = (s);                                         \
-+    if (bstrtmp_s && bstrtmp_len >= 0) {                                     \
-+        for (; bstrtmp_len >= 0; bstrtmp_len--) {                            \
-+            if (!isspace (bstrtmp_s[bstrtmp_len])) break;                    \
-+        }                                                                    \
-+    }                                                                        \
-+    (t).data = bstrtmp_s;                                                    \
-+    (t).slen = bstrtmp_len + 1;                                              \
-+    (t).mlen = -__LINE__;                                                    \
-+}
-+#define btfromblktrimws(t,s,l) {                                             \
-+    int bstrtmp_idx = 0, bstrtmp_len = (l) - 1;                              \
-+    unsigned char * bstrtmp_s = (s);                                         \
-+    if (bstrtmp_s && bstrtmp_len >= 0) {                                     \
-+        for (; bstrtmp_idx <= bstrtmp_len; bstrtmp_idx++) {                  \
-+            if (!isspace (bstrtmp_s[bstrtmp_idx])) break;                    \
-+        }                                                                    \
-+        for (; bstrtmp_len >= bstrtmp_idx; bstrtmp_len--) {                  \
-+            if (!isspace (bstrtmp_s[bstrtmp_len])) break;                    \
-+        }                                                                    \
-+    }                                                                        \
-+    (t).data = bstrtmp_s + bstrtmp_idx;                                      \
-+    (t).slen = bstrtmp_len + 1 - bstrtmp_idx;                                \
-+    (t).mlen = -__LINE__;                                                    \
- }
- 
- /* Write protection macros */
--#define bwriteprotect(t) { if ((t).mlen >=  0) (t).mlen = -1; }
--#define bwriteallow(t)   { if ((t).mlen == -1) (t).mlen = (t).slen + ((t).slen == 0); }
-+#define bwriteprotect(t)     { if ((t).mlen >=  0) (t).mlen = -1; }
-+#define bwriteallow(t)       { if ((t).mlen == -1) (t).mlen = (t).slen + ((t).slen == 0); }
-+#define biswriteprotected(t) ((t).mlen <= 0)
- 
- #ifdef __cplusplus
- }
- #endif
- 
--
- #endif

diff --git a/pads-1.2-cleanup.patch b/pads-1.2-cleanup.patch
deleted file mode 100644
index ab63f0c..0000000
--- a/pads-1.2-cleanup.patch
+++ /dev/null
@@ -1,931 +0,0 @@
-diff -urp pads-1.2.orig/src/configuration.c pads-1.2/src/configuration.c
---- pads-1.2.orig/src/configuration.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/configuration.c	2008-06-30 13:28:28.000000000 -0400
-@@ -26,6 +26,9 @@
-  *
-  **************************************************************************/
- #include "configuration.h"
-+#include "util.h"
-+#include "bstring/util.h"
-+#include "monnet.h"
- 
- /* Variable Declarations */
- 
-@@ -44,7 +47,7 @@ void init_configuration (bstring filenam
- 
-     verbose_message("config - Processing '%s'.", bdata(filename));
- 
--    if ((fp = fopen(bdata(filename), "r")) == NULL) {
-+    if ((fp = fopen((char *)bdata(filename), "r")) == NULL) {
-         err_message("Unable to open configuration file - %s", bdata(filename));
-     }
- 
-@@ -59,7 +62,7 @@ void init_configuration (bstring filenam
-     /* Clean Up */
-     bdestroy(filedata);
-     bstrListDestroy(lines);
--    close(fp);
-+    fclose(fp);
- }
- 
- /* ----------------------------------------------------------
-@@ -147,7 +150,7 @@ void parse_line (bstring line)
- 
-     } else if ((biseqcstr(param, "network")) == 1) {
-         /* NETWORK */
--        parse_networks(bdata(value));
-+        parse_networks((char *)bdata(value));
- 
-     }
- 
-diff -urp pads-1.2.orig/src/global.h pads-1.2/src/global.h
---- pads-1.2.orig/src/global.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/global.h	2008-06-30 13:28:28.000000000 -0400
-@@ -25,6 +25,9 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef GLOBAL_HEADER
-+#define GLOBAL_HEADER
-+
- #ifdef HAVE_CONFIG_H
- #include "config.h"
- #endif
-@@ -68,6 +71,7 @@
- #include <netinet/if_ether.h>
- #include <pcap.h>
- #include <pcre.h>
-+#include <time.h>
- 
- #include "bstring/bstrlib.h"
- 
-@@ -160,3 +164,6 @@ extern GC gc;
- 
- /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4:
-  */
-+
-+#endif
-+
-diff -urp pads-1.2.orig/src/identification.c pads-1.2/src/identification.c
---- pads-1.2.orig/src/identification.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/identification.c	2008-06-30 13:28:28.000000000 -0400
-@@ -26,6 +26,9 @@
-  *
-  **************************************************************************/
- #include "identification.h"
-+#include "util.h"
-+#include "storage.h"
-+#include "output/output.h"
- 
- Signature *signature_list;
- 
-@@ -57,7 +60,7 @@ int init_identification()
-     }
- 
-     /* Open Signature File */
--    if ((fp = fopen(bdata(filename), "r")) == NULL) {
-+    if ((fp = fopen((char *)bdata(filename), "r")) == NULL) {
-         err_message("Unable to open signature file - %s", bdata(filename));
-     }
- 
-@@ -73,7 +76,7 @@ int init_identification()
-     bdestroy(filename);
-     bdestroy(filedata);
-     bstrListDestroy(lines);
--    close(fp);
-+    fclose(fp);
- 
-     return 0;
- }
-@@ -91,7 +94,7 @@ int init_identification()
- int parse_raw_signature (bstring line, int lineno)
- {
-     struct bstrList *raw_sig;
--    struct bstrList *title;
-+    struct bstrList *title = NULL;
-     Signature *sig;
-     bstring pcre_string;
-     const char *err;            /* PCRE */
-@@ -101,7 +104,7 @@ int parse_raw_signature (bstring line, i
- 
-     /* Check to see if this line has something to read. */
-     if (line->data[0] == '\0' || line->data[0] == '#')
--        return;
-+        return -1;
- 
-     /* Split Line */
-     if ((raw_sig = bsplit(line, ',')) == NULL)
-@@ -125,8 +128,10 @@ int parse_raw_signature (bstring line, i
- 
-     /* Split Title */
-     if (raw_sig->entry[1] != NULL && ret != -1)
--        if ((title = bsplit(raw_sig->entry[1], '/')) == NULL)
--            ret = -1;
-+        title = bsplit(raw_sig->entry[1], '/');
-+    if (title == NULL)
-+            return -1;
-+
-     if (title->qty < 3)
-         ret = -1;
- 
-@@ -145,7 +150,7 @@ int parse_raw_signature (bstring line, i
- 
-         /* PCRE */
-         if (pcre_string != NULL) {
--            if ((sig->regex = pcre_compile (bdata(pcre_string), 0, &err, &erroffset, NULL)) == NULL) {
-+            if ((sig->regex = pcre_compile ((char *)bdata(pcre_string), 0, &err, &erroffset, NULL)) == NULL) {
-                 err_message("Unable to compile signature:  %s at line %d (%s)",
-                 err, lineno, bdata(line));
-             ret = -1;
-@@ -265,7 +270,6 @@ int pcre_identify (struct in_addr ip_add
-     Signature *list = signature_list;
-     int rc;
-     int ovector[15];
--    int i;
-     bstring app;
- 
-     while (list != NULL) {
-@@ -312,18 +316,18 @@ bstring get_app_name (Signature *sig,
- 
-     /* Create Application string using the values in signature[i].title.  */
-     if (sig->title.app != NULL) {
--        strlcpy(app, bdata(sig->title.app), MAX_APP);
-+        strlcpy(app, (char *)bdata(sig->title.app), MAX_APP);
-     }
-     if (sig->title.ver != NULL) {
-         if (sig->title.ver->slen > 0) {
-             strcat(app, " ");
--            strlcat(app, bdata(sig->title.ver), MAX_VER);
-+            strlcat(app, (char *)bdata(sig->title.ver), MAX_VER);
-         }
-     }
-     if (sig->title.misc != NULL) {
-         if (sig->title.misc->slen > 0) {
-             strcat(app, " (");
--            strlcat(app, bdata(sig->title.misc), MAX_MISC);
-+            strlcat(app, (char *)bdata(sig->title.misc), MAX_MISC);
-             strcat(app, ")");
-         }
-     }
-@@ -416,7 +420,8 @@ void print_signature()
-         printf("2a: %s\n", bdata(list->title.app));
-         printf("2b: %s\n", bdata(list->title.ver));
-         printf("2c: %s\n", bdata(list->title.misc));
--        printf("3:  %s\n", list->regex);
-+        // FIXME: This is a compiled expression
-+        // printf("3:  %s\n", list->regex);
-         printf("\n");
- 
-         i++;
-diff -urp pads-1.2.orig/src/mac-resolution.c pads-1.2/src/mac-resolution.c
---- pads-1.2.orig/src/mac-resolution.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/mac-resolution.c	2008-06-30 13:28:28.000000000 -0400
-@@ -32,6 +32,7 @@
- #ifndef DISABLE_VENDOR
- 
- #include "mac-resolution.h"
-+#include "util.h"
- 
- Vendor *vendor_list = NULL;
- 
-@@ -60,7 +61,7 @@ int init_mac_resolution (void) {
-     }
- 
-     /* Open Signature File */
--    if ((fp = fopen(bdata(filename), "r")) == NULL) {
-+    if ((fp = fopen((char *)bdata(filename), "r")) == NULL) {
-         err_message("Unable to open MAC resolution file - %s", bdata(filename));
-     }
- 
-@@ -79,7 +80,7 @@ int init_mac_resolution (void) {
-         bdestroy(filedata);
-     if (lines != NULL)
-         bstrListDestroy(lines);
--    close(fp);
-+    fclose(fp);
- 
-     return 0;
- }
-@@ -99,10 +100,8 @@ int parse_raw_mac (bstring line)
-     char vendor[80];
-     int m1, m2, m3;
- 
--    int pos;
--
-     /* Parse out the contents of the line. */
--    if (sscanf(bdata(line), "%02X:%02X:%02X %80[^,\n],\n", &m1, &m2, &m3, vendor) != 4)
-+    if (sscanf((char *)bdata(line), "%02X:%02X:%02X %80[^,\n],\n", &m1, &m2, &m3, vendor) != 4)
-         return -1;
- 
-     mac[0] = (char) (m1);
-@@ -215,7 +214,7 @@ void show_vendor (void){
-     list = vendor_list;
- 
-     while(list != NULL) {
--        printf("Mac: %s\nVendor: %s\n\n", list->mac, bdata(list->vendor));
-+        printf("Mac: %u\nVendor: %s\n\n", list->mac, bdata(list->vendor));
-         list = list->next;
-     }
- }
-diff -urp pads-1.2.orig/src/monnet.c pads-1.2/src/monnet.c
---- pads-1.2.orig/src/monnet.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/monnet.c	2008-06-30 13:28:28.000000000 -0400
-@@ -27,7 +27,10 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#include <stdlib.h>
-+#include <arpa/inet.h>
- #include "monnet.h"
-+#include "util.h"
- 
- struct mon_net *mn;
- 
-@@ -45,7 +48,6 @@ void parse_networks (char *cmdline)
- {
-     int i = 0;
-     char network[16], netmask[3], tmp[16];
--    struct in_addr in_net;
- 
-     /* Make sure something was defined. */
-     if (cmdline == NULL)
-@@ -81,7 +83,7 @@ void parse_networks (char *cmdline)
- 	    i++;
- 	}
- 
--	*cmdline++;
-+	cmdline++;
-     }
- }
- 
-diff -urp pads-1.2.orig/src/output/output.c pads-1.2/src/output/output.c
---- pads-1.2.orig/src/output/output.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output.c	2008-06-30 13:28:28.000000000 -0400
-@@ -26,6 +26,10 @@
-  *
-  **************************************************************************/
- #include "output.h"
-+#include "output-screen.h"
-+#include "output-csv.h"
-+#include "output-fifo.h"
-+#include "storage.h"
- 
- /* Global Variables */
- OutputPluginList *output_plugin_list;
-@@ -149,7 +153,7 @@ int print_asset (struct in_addr ip_addr,
- 
-     /* Make sure that a record was found. */
-     if (rec == NULL)
--	return;
-+	return -1;
- 
-     /* Cycle through output plugins and print to those that are active. */
-     head = output_plugin_list;
-@@ -182,7 +186,7 @@ int print_arp_asset (struct in_addr ip_a
- 
-     /* Find Asset */
-     ArpAsset *list;
--    ArpAsset *rec;
-+    ArpAsset *rec = NULL;
- 
-     list = (ArpAsset *)get_arp_pointer();
-     while (list != NULL) {
-@@ -199,7 +203,7 @@ int print_arp_asset (struct in_addr ip_a
- 
-     /* Make sure that a record was found. */
-     if (rec == NULL)
--	return;
-+	return -1;
- 
-     /* Cycle through output plugins and print to those that are active. */
-     head = output_plugin_list;
-@@ -298,8 +302,8 @@ void end_output (void)
- #ifdef DEBUG
- int debug_output_list (void)
- {
--    OutputPluginList *head, *head2;
--    OutputPlugin *tmp, *tmp2;
-+    OutputPluginList *head;
-+    OutputPlugin *tmp;
-     int i = 1;
- 
-     printf("output_plugin_list:\n");
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-06-30 13:28:28.000000000 -0400
-@@ -24,7 +24,10 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#include <arpa/inet.h>
- #include "output-csv.h"
-+#include "util.h"
-+#include "storage.h"
- 
- OutputCSVConf output_csv_conf;
- 
-@@ -40,7 +43,6 @@ int
- setup_output_csv (void)
- {
-     OutputPlugin *plugin;
--    bstring name;
- 
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
-@@ -68,7 +70,7 @@ setup_output_csv (void)
-  *		: will read in the file and add each asset
-  *		: to the asset data structure.
-  * INPUT	: 0 - CSV filename
-- * RETURN	: None!
-+ * RETURN	: 0 success, -1 fail
-  * --------------------------------------------------------- */
- int
- init_output_csv (bstring filename)
-@@ -84,14 +86,15 @@ init_output_csv (bstring filename)
- 	output_csv_conf.filename = bstrcpy(bfromcstr("assets.csv"));
- 
-     /* Check to see if *filename exists. */
--    if ((fp = fopen(bdata(output_csv_conf.filename), "r")) == NULL) {
-+    if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) {
- 
- 	/* File does not exist, create new.. */
--	if ((output_csv_conf.file = fopen(bdata(output_csv_conf.filename), "w")) != NULL) {
-+	if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "w")) != NULL) {
- 	    fprintf(output_csv_conf.file, "asset,port,proto,service,application,discovered\n");
- 
- 	} else {
- 	    err_message("Cannot open file %s!", bdata(output_csv_conf.filename));
-+	    return -1;
- 	}
- 
-     } else {
-@@ -101,12 +104,13 @@ init_output_csv (bstring filename)
- 	read_report_file();
- 
- 	/* Open file and assign it to the global FILE pointer.  */
--	if ((output_csv_conf.file = fopen(bdata(output_csv_conf.filename), "a")) == NULL) {
-+	if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "a")) == NULL) {
- 	    err_message("Cannot open file %s!", bdata(output_csv_conf.filename));
-+	    return -1;
- 	}
-     }
- 
--    return;
-+    return 0;
- }
- 
- /* ----------------------------------------------------------
-@@ -129,7 +133,7 @@ read_report_file (void)
-     printf("[-] Processing Existing %s\n", bdata(output_csv_conf.filename));
- 
-     /* Open Signature File */
--    if ((fp = fopen(bdata(output_csv_conf.filename), "r")) == NULL) {
-+    if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) {
- 	err_message("Unable to open CSV file - %s", bdata(output_csv_conf.filename));
-     }
- 
-@@ -144,7 +148,7 @@ read_report_file (void)
-     /* Clean Up */
-     bdestroy(filedata);
-     bstrListDestroy(lines);
--    close(fp);
-+    fclose(fp);
- }
- 
- /* ----------------------------------------------------------
-@@ -172,7 +176,7 @@ parse_raw_report (bstring line)
- 
-     /* Check to see if this line has something to read. */
-     if (line->data[0] == '\0' || line->data[0] == '#')
--	return;
-+	return -1;
- 
-     /* Break line apart. */
-     if ((list = bsplit(line, ',')) == NULL)
-@@ -186,13 +190,13 @@ parse_raw_report (bstring line)
-     }
- 
-     /* Place data from 'list' into temporary data storage. */
--    if ((inet_aton(bdata(list->entry[0]), &ip_addr)) == -1)
-+    if ((inet_aton((char *)bdata(list->entry[0]), &ip_addr)) == -1)
- 	ret = -1;
- 
--    if ((port = htons(atoi(bdata(list->entry[1])))) == -1)
-+    if ((port = htons(atoi((char *)bdata(list->entry[1])))) == -1)
- 	ret = -1;
- 
--    if ((proto = atoi(bdata(list->entry[2]))) == -1)
-+    if ((proto = atoi((char *)bdata(list->entry[2]))) == -1)
- 	ret = -1;
- 
-     if ((service = bstrcpy(list->entry[3])) == NULL)
-@@ -201,7 +205,7 @@ parse_raw_report (bstring line)
-     if ((application = bstrcpy(list->entry[4])) == NULL)
-         ret = -1;
- 
--    if ((discovered = atol(bdata(list->entry[5]))) == -1)
-+    if ((discovered = atol((char *)bdata(list->entry[5]))) == -1)
- 	ret = -1;
- 
-     /* Make sure that this line contains 'good' data. */
-@@ -211,7 +215,7 @@ parse_raw_report (bstring line)
-     /* Add Asset to Data Structure */
-     if (proto == 0 && ret != -1) {
- 	/* ARP */
--	mac2hex(bdata(application), mac_addr, MAC_LEN);
-+	mac2hex((char *)bdata(application), mac_addr, MAC_LEN);
- 	add_arp_asset(ip_addr, mac_addr, discovered);
-     } else {
- 	/* Everything Else */
-@@ -249,8 +253,9 @@ print_asset_csv (Asset *rec)
- 	if (gc.hide_unknowns == 0 || ((biseqcstr(rec->service, "unknown") != 0) &&
- 		    (biseqcstr(rec->application, "unknown") != 0))) {
- 	    fprintf(output_csv_conf.file, "%s,%d,%d,%s,%s,%d\n",
--		    inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, bdata(rec->service),
--		    bdata(rec->application), rec->discovered);
-+		    inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto,
-+		     bdata(rec->service), bdata(rec->application),
-+		     (int)rec->discovered);
- 	    fflush(output_csv_conf.file);
- 	}
-     } else {
-@@ -277,11 +282,13 @@ print_arp_asset_csv (ArpAsset *rec)
-     /* Print to File */
-     if (output_csv_conf.file != NULL) {
- 	if (rec->mac_resolved != NULL) {
--	    fprintf(output_csv_conf.file, "%s,0,0,ARP (%s),%s,%d\n", inet_ntoa(rec->ip_addr),
--		    bdata(rec->mac_resolved), hex2mac(rec->mac_addr), rec->discovered);
-+	    fprintf(output_csv_conf.file, "%s,0,0,ARP (%s),%s,%d\n",
-+		inet_ntoa(rec->ip_addr), bdata(rec->mac_resolved),
-+		hex2mac(rec->mac_addr), (int)rec->discovered);
- 	} else {
--	    fprintf(output_csv_conf.file, "%s,0,0,ARP,%s,%d\n", inet_ntoa(rec->ip_addr),
--		    hex2mac(rec->mac_addr), rec->discovered);
-+	    fprintf(output_csv_conf.file, "%s,0,0,ARP,%s,%d\n",
-+			inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr),
-+			(int)rec->discovered);
- 	}
- 
- 	fflush(output_csv_conf.file);
-@@ -311,5 +318,7 @@ end_output_csv ()
- 
-     if (output_csv_conf.filename != NULL)
- 	bdestroy(output_csv_conf.filename);
-+
-+    return 0;
- }
- 
-diff -urp pads-1.2.orig/src/output/output-csv.h pads-1.2/src/output/output-csv.h
---- pads-1.2.orig/src/output/output-csv.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output-csv.h	2008-06-30 13:28:28.000000000 -0400
-@@ -25,6 +25,8 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef OUTPUT_CSV_HEADER
-+#define OUTPUT_CSV_HEADER
- 
- /* DEFINES ----------------------------------------- */
- #ifdef LINUX
-@@ -64,3 +66,5 @@ int print_asset_csv (Asset *rec);
- int print_arp_asset_csv (ArpAsset *rec);
- int end_output_csv (void);
- 
-+#endif
-+
-diff -urp pads-1.2.orig/src/output/output-fifo.c pads-1.2/src/output/output-fifo.c
---- pads-1.2.orig/src/output/output-fifo.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output-fifo.c	2008-06-30 13:28:45.000000000 -0400
-@@ -25,7 +25,9 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#include <arpa/inet.h>
- #include "output-fifo.h"
-+#include "util.h"
- 
- /*
-  * MODULE NOTES
-@@ -66,7 +68,6 @@ int
- setup_output_fifo (void)
- {
-     OutputPlugin *plugin;
--    bstring name;
- 
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
-@@ -92,15 +93,11 @@ setup_output_fifo (void)
-  * DESCRIPTION	: This function will initialize the FIFO
-  *		: file.
-  * INPUT	: 0 - FIFO filename
-- * RETURN	: None!
-+ * RETURN	: 0 success, -1 failure
-  * --------------------------------------------------------- */
- int
- init_output_fifo (bstring fifo_file)
- {
--    FILE *fp;
--    register u_int len = 0;
--    char *filename;
--
-     verbose_message("Initializing FIFO output plugin.");
- 
-     /* Make sure report_file isn't NULL. */
-@@ -109,13 +106,13 @@ init_output_fifo (bstring fifo_file)
- 
-     output_fifo_conf.filename = bstrcpy(fifo_file);
- 
--    mkfifo (bdata(fifo_file), S_IFIFO | 0755);
-+    mkfifo ((char *)bdata(fifo_file), 0755);
- 
-     verbose_message("Open FIFO File\n");
--    if ((output_fifo_conf.file = fopen(bdata(fifo_file), "w+")) == NULL)
-+    if ((output_fifo_conf.file = fopen((char*)bdata(fifo_file), "w+")) == NULL)
- 	err_message("Unable to open FIFO file (%s)!\n", bdata(fifo_file));
- 
--    return;
-+    return 0;
- }
- 
- /* ----------------------------------------------------------
-@@ -138,8 +135,9 @@ print_asset_fifo (Asset *rec)
- 	if (gc.hide_unknowns == 0 || ((biseq(rec->service, bfromcstr("unknown")) != 0) &&
- 		    (biseq(rec->application, bfromcstr("unknown")) != 0))) {
- 	    fprintf(output_fifo_conf.file, "01,%s,%d,%d,%s,%s,%d\n",
--		    inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, bdata(rec->service),
--		    bdata(rec->application), rec->discovered);
-+			inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto,
-+			bdata(rec->service), bdata(rec->application),
-+			(int)rec->discovered);
- 	    fflush(output_fifo_conf.file);
- 	}
-     } else {
-@@ -165,11 +163,13 @@ print_arp_asset_fifo (ArpAsset *rec)
-     /* Print to File */
-     if (output_fifo_conf.file != NULL) {
- 	if (rec->mac_resolved != NULL) {
--	    fprintf(output_fifo_conf.file, "02,%s,%s,%s,%d\n", inet_ntoa(rec->ip_addr),
--		    rec->mac_resolved, hex2mac(&rec->mac_addr), rec->discovered);
-+	    fprintf(output_fifo_conf.file, "02,%s,%s,%s,%d\n",
-+		inet_ntoa(rec->ip_addr), bdata(rec->mac_resolved),
-+		 hex2mac(rec->mac_addr), (int)rec->discovered);
- 	} else {
--	    fprintf(output_fifo_conf.file, "02,%s,unknown,%s,%d\n", inet_ntoa(rec->ip_addr),
--		    hex2mac(&rec->mac_addr), rec->discovered);
-+	    fprintf(output_fifo_conf.file, "02,%s,unknown,%s,%d\n",
-+			inet_ntoa(rec->ip_addr), hex2mac(rec->mac_addr),
-+			(int)rec->discovered);
- 	}
- 
- 	fflush(output_fifo_conf.file);
-@@ -196,7 +196,8 @@ print_stat_fifo (Asset *rec)
- {
-     if (output_fifo_conf.file != NULL) {
- 	fprintf(output_fifo_conf.file, "03,%s,%d,%d,%d\n",
--		inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto, time(NULL));
-+		inet_ntoa(rec->ip_addr), ntohs(rec->port), rec->proto,
-+		(int)time(NULL));
- 	fflush(output_fifo_conf.file);
- 
-     } else {
-diff -urp pads-1.2.orig/src/output/output-fifo.h pads-1.2/src/output/output-fifo.h
---- pads-1.2.orig/src/output/output-fifo.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output-fifo.h	2008-06-30 13:28:28.000000000 -0400
-@@ -25,6 +25,8 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef OUTPUT_FIFO_HEADER
-+#define OUTPUT_FIFO_HEADER
- 
- /* DEFINES ----------------------------------------- */
- #ifdef LINUX
-@@ -56,9 +58,11 @@ typedef struct _OutputFIFOConf
- 
- 
- /* PROTOTYPES -------------------------------------- */
-+int setup_output_fifo (void);
- int init_output_fifo (bstring fifo_file);
- int print_asset_fifo (Asset *rec);
- int print_arp_asset_fifo (ArpAsset *rec);
- int print_stat_fifo (Asset *rec);
- int end_output_fifo (void);
- 
-+#endif
-diff -urp pads-1.2.orig/src/output/output.h pads-1.2/src/output/output.h
---- pads-1.2.orig/src/output/output.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output.h	2008-06-30 13:28:28.000000000 -0400
-@@ -25,6 +25,8 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef OUTPUT_HEADER
-+#define OUTPUT_HEADER
- 
- /* DEFINES ----------------------------------------- */
- #ifdef LINUX
-@@ -77,3 +79,4 @@ int print_arp_asset (struct in_addr ip_a
- int print_stat(struct in_addr ip_addr, u_int16_t port, unsigned short proto);
- void end_output (void);
- 
-+#endif
-diff -urp pads-1.2.orig/src/output/output-screen.c pads-1.2/src/output/output-screen.c
---- pads-1.2.orig/src/output/output-screen.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output-screen.c	2008-06-30 13:28:28.000000000 -0400
-@@ -24,7 +24,9 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#include <arpa/inet.h>
- #include "output-screen.h"
-+#include "util.h"
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: setup_output_screen
-@@ -38,7 +40,6 @@ int
- setup_output_screen (void)
- {
-     OutputPlugin *plugin;
--    bstring name;
- 
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
-diff -urp pads-1.2.orig/src/output/output-screen.h pads-1.2/src/output/output-screen.h
---- pads-1.2.orig/src/output/output-screen.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/output-screen.h	2008-06-30 13:28:28.000000000 -0400
-@@ -25,6 +25,8 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef OUTPUT_SCREEN_HEADER
-+#define OUTPUT_SCREEN_HEADER
- 
- /* DEFINES ----------------------------------------- */
- #ifdef LINUX
-@@ -43,16 +45,12 @@
- #include "output.h"
- 
- 
--/* TYPEDEFS ---------------------------------------- */
--typedef struct _OutputCSVConf
--{
--    FILE *file;
--} OutputCSVConf;
--
--
- /* PROTOTYPES -------------------------------------- */
- int setup_output_screen (void);
- int init_output_screen (bstring args);
- int print_asset_screen (Asset *rec);
- int print_arp_asset_screen (ArpAsset *rec);
- int end_output_screen (void);
-+
-+#endif
-+
-diff -urp pads-1.2.orig/src/packet.c pads-1.2/src/packet.c
---- pads-1.2.orig/src/packet.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/packet.c	2008-06-30 13:28:28.000000000 -0400
-@@ -26,6 +26,10 @@
-  *
-  **************************************************************************/
- #include "packet.h"
-+#include "output/output.h"
-+#include "storage.h"
-+#include "monnet.h"
-+#include "identification.h"
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: process_eth
-@@ -157,9 +161,9 @@ void process_arp (const struct pcap_pkth
- 	case ARPOP_REPLY:
- 	    memcpy(&ip_addr.s_addr, arph->arp_spa, sizeof(u_int8_t) * 4);
- 
--	    if (check_arp_asset(ip_addr, arph->arp_sha) == 1) {
--		add_arp_asset(ip_addr, arph->arp_sha, 0);
--		print_arp_asset (ip_addr, arph->arp_sha);
-+	    if (check_arp_asset(ip_addr, (char *)arph->arp_sha) == 1) {
-+		add_arp_asset(ip_addr, (char *)arph->arp_sha, 0);
-+		print_arp_asset (ip_addr, (char *)arph->arp_sha);
- 	    }
- 
- 	    break;
-@@ -222,7 +226,7 @@ void process_tcp (const struct pcap_pkth
- 		 * Check to see if this ACK packet needs to be
- 		 * identified.
- 		 */
--		payload = (u_char *)(packet + sizeof(struct tcphdr) + len);
-+		payload = (char *)(packet + sizeof(struct tcphdr) + len);
- 
- 		/* Attempt to identify this asset.  */
- 		if(tcp_identify(ip_src, tcph->th_sport, payload,
-diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-06-30 13:28:28.000000000 -0400
-@@ -26,6 +26,13 @@
-  *
-  **************************************************************************/
- #include "pads.h"
-+#include "util.h"
-+#include "storage.h"
-+#include "output/output.h"
-+#include "identification.h"
-+#include "mac-resolution.h"
-+#include "monnet.h"
-+#include "configuration.h"
- 
- /* Variable Declarations */
- GC gc;                                  /* Global Configuration */
-@@ -34,6 +41,9 @@ proc_t processor;
- char **prog_argv;
- int prog_argc;
- 
-+/* Function Declarations */
-+static int process_cmdline (int argc, char *argv[]);
-+
- /* ----------------------------------------------------------
-  * FUNCTION     : process_pkt
-  * DESCRIPTION  : This function takes data from libpcap and
-@@ -210,7 +220,7 @@ main_pads (void)
-     if (gc.pcap_file) {
-         /* Read from PCAP file specified by '-r' switch. */
-         log_message("Reading from file %s\n", bdata(gc.pcap_file));
--        if (!(gc.handle = pcap_open_offline(bdata(gc.pcap_file), errbuf))) {
-+        if (!(gc.handle = pcap_open_offline((char *)bdata(gc.pcap_file), errbuf))) {
-             err_message("Unable to open %s.  (%s)", bdata(gc.pcap_file), errbuf);
-         }
- 
-@@ -268,7 +278,7 @@ main_pads (void)
-     /* Open banner dump file if specified (-d). */
-     if (gc.dump_file) {
-         verbose_message("Opening Banner Dump File");
--        if (!(gc.dumper = pcap_dump_open(gc.handle, bdata(gc.dump_file))))
-+        if (!(gc.dumper = pcap_dump_open(gc.handle, (char *)bdata(gc.dump_file))))
-             err_message("Cannot open dump file - %s\n", pcap_geterr(gc.handle));
-     }
- 
-@@ -323,7 +333,7 @@ end_pads(void)
- 
-     /* Remove PID File */
-     if (gc.daemon_mode == 1)
--        if ((unlink(bdata(gc.pid_file))) != 0)
-+        if ((unlink((char *)bdata(gc.pid_file))) != 0)
-             log_message("WARNING:  Unable to remove PID file - %s\n", bdata(gc.pid_file));
- 
-     /* End Modules */
-@@ -370,7 +380,7 @@ end_pads(void)
-  * RETURN       : 0 - Success
-  *              : -1 - Error
-  * ---------------------------------------------------------- */
--int
-+static int
- process_cmdline (int argc, char *argv[])
- {
-     int ch;
-@@ -477,11 +487,6 @@ sig_hup_handler(int signal)
- int
- main(int argc, char *argv[])
- {
--    /* Variables */
--    int i;
--    struct pcap_pkthdr header;      /* The header that pcap gives us */
--    const u_char *packet;           /* The actual packet */
--
-     /* Copy Command Line Args */
-     prog_argc = argc;
-     prog_argv = argv;
-diff -urp pads-1.2.orig/src/storage.c pads-1.2/src/storage.c
---- pads-1.2.orig/src/storage.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/storage.c	2008-06-30 13:28:28.000000000 -0400
-@@ -24,7 +24,10 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#include <arpa/inet.h>
-+#include <netinet/ether.h>
- #include "storage.h"
-+#include "mac-resolution.h"
- 
- Asset *asset_list;
- ArpAsset *arp_asset_list;
-@@ -400,7 +403,7 @@ inline Asset *
- find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto)
- {
-     Asset *list;
--    Asset *rec;
-+    Asset *rec = NULL;
- 
-     list = asset_list;
- 
-@@ -469,7 +472,7 @@ void print_database ()
-     while (rec != NULL) {
- 	printf("%d:  %s,%d,%d,%d,%s,%s,%d\n",
- 		id, inet_ntoa(rec->ip_addr), ntohs(rec->port),
--		rec->proto, rec->discovered,
-+		rec->proto, (int)rec->discovered,
- 		bdata(rec->service), bdata(rec->application),
- 		rec->i_attempts);
- 	rec = rec->next;
-@@ -482,7 +485,7 @@ void print_database ()
-     arp = arp_asset_list;
-     while (arp != NULL) {
- 	printf("%d:  %s,%s,%d\n", id, inet_ntoa(arp->ip_addr),
--		ether_ntoa(&arp->mac_addr), arp->discovered);
-+		ether_ntoa((struct ether_addr *)arp->mac_addr), (int)arp->discovered);
- 	arp = arp->next;
- 	id++;
-     }
-diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/util.c	2008-06-30 13:28:28.000000000 -0400
-@@ -25,8 +25,10 @@
-  * $Id: pads-1.2-cleanup.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#include <unistd.h>
-+#include <ctype.h>
- #include "util.h"
--
-+#include "pads.h"
- 
- /* ----------------------------------------------------------
-  * FUNCTION     : strip_comment
-@@ -60,11 +62,12 @@ strip_comment (char *string)
- int
- chomp (char *string, int size)
- {
--    for (size; size >= 0; size--) {
-+    while (size >= 0) {
-         if (string[size] == '\n') {
-             string[size] = '\0';
-             return 1;
-         }
-+        size--;
-     }
- 
-     return 0;
-@@ -121,7 +124,7 @@ init_pid_file (bstring pid_file, bstring
-         gc.pid_file = bfromcstr("/var/run/pads.pid");
- 
-     /* Create PID File */
--    if ((fp = fopen(bdata(gc.pid_file), "w")) != NULL) {
-+    if ((fp = fopen((char *)bdata(gc.pid_file), "w")) != NULL) {
-         pid = (int) getpid();
-         fprintf(fp, "%d\n", pid);
-         fclose(fp);
-@@ -133,11 +136,11 @@ init_pid_file (bstring pid_file, bstring
-     if (user == NULL || group == NULL)
-         return;
- 
--    if ((this_group = getgrnam(bdata(group))) == NULL)
-+    if ((this_group = getgrnam((char *)bdata(group))) == NULL)
-         err_message("'%s' group does not appear to exist.", bdata(group));
--    if ((this_user = getpwnam(bdata(user))) == NULL)
-+    if ((this_user = getpwnam((char *)bdata(user))) == NULL)
-         err_message("'%s' user does not appear to exist.", bdata(user));
--    if ((chown(pid_file, this_user->pw_uid, this_group->gr_gid)) != 0)
-+    if ((chown((char *)bdata(pid_file), this_user->pw_uid, this_group->gr_gid)) != 0)
-         err_message("Unable to change PID file's ownership.");
- 
- }
-@@ -343,7 +346,7 @@ strlcpy(char *dst, const char *src, size
- size_t
- strlcat(char *dst, const char *src, size_t len) {
-   char       *dstptr = dst;
--  size_t     dstlen, tocopy;
-+  size_t     dstlen, tocopy = len;
-   const char *srcptr = src;
- 
-   while (tocopy-- && *dstptr) dstptr++;
-@@ -384,10 +387,10 @@ drop_privs (bstring newuser, bstring new
-     if (newuser == NULL || newgroup == NULL)
-         return;
- 
--    if ((this_group = getgrnam(bdata(newgroup))) == NULL)
-+    if ((this_group = getgrnam((char *)bdata(newgroup))) == NULL)
-         err_message("'%s' group does not appear to exist.", bdata(newgroup));
- 
--    if ((this_user = getpwnam(bdata(newuser))) == NULL)
-+    if ((this_user = getpwnam((char *)bdata(newuser))) == NULL)
-         err_message("'%s' user does not appear to exist.", bdata(newuser));
- 
-     /* Set Group */
-@@ -458,7 +461,7 @@ mac2hex(const char *mac, char *dst, int 
-  * RETURN       : 0 - MAC Address String
-  * ---------------------------------------------------------- */
- char *
--hex2mac(unsigned const char *mac)
-+hex2mac(const char *mac)
- {
-     static char buf[18];
- 
-diff -urp pads-1.2.orig/src/util.h pads-1.2/src/util.h
---- pads-1.2.orig/src/util.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/util.h	2008-06-30 13:28:28.000000000 -0400
-@@ -53,6 +53,6 @@ size_t strlcat(char *dst, const char *sr
- #endif
- void drop_privs (bstring newuser, bstring newgroup);
- void mac2hex(const char *mac, char *dst, int len);
--char *hex2mac(unsigned const char *mac);
-+char *hex2mac(const char *mac);
- 
- /* GLOBALS ----------------------------------------- */

diff --git a/pads-1.2-daemon.patch b/pads-1.2-daemon.patch
deleted file mode 100644
index 4ea55c4..0000000
--- a/pads-1.2-daemon.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-diff -urp pads-1.2.orig/src/configuration.c pads-1.2/src/configuration.c
---- pads-1.2.orig/src/configuration.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/configuration.c	2008-07-15 15:59:49.000000000 -0400
-@@ -115,7 +115,7 @@ void parse_line (bstring line)
-             else
-                 gc.daemon_mode = 0;
-         }
--
-+        become_daemon();
-     } else if ((biseqcstr(param, "pid_file")) == 1) {
-             /* PID FILE */
-         gc.pid_file = bstrcpy(value);
-diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-07-12 08:36:10.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-07-15 16:02:25.000000000 -0400
-@@ -236,21 +236,13 @@ init_pads (void)
-         if ((activate_output_plugin(name, gc.report_file)) == -1)
-             err_message("Error:  'activate_output_plugin' in function 'init_pads' failed.");
-         bdestroy(name);
-+        become_daemon();
-     }
- 
-     /* Initialize Modules */
-     init_identification();
-     init_mac_resolution();
- 
--    /* Daemon Mode:  fork child process */
--    if (gc.daemon_mode) {
--        verbose_message("[-] Daemonizing...\n");
--        if (daemon(0, 0) < 0) {
--            err_message("Daemonize failed");
--        }
--        init_pid_file(gc.pid_file, gc.priv_user, gc.priv_group);
--    }
--
-     /* Signal Trapping */
-     (void) signal(SIGTERM, sig_term_handler);
-     (void) signal(SIGINT, sig_int_handler);
-@@ -291,9 +283,13 @@ main_pads (void)
- 
-         /* Determine Sniffing Interface */
-         if (!gc.dev) {
-+            char *dev;
-             verbose_message("Looking for sniffing interface");
--            if (!(gc.dev = pcap_lookupdev(errbuf)))
--                err_message("Unable to find a sniffing interface!  (%s)", errbuf);
-+            dev = pcap_lookupdev(errbuf);
-+            if (!dev)
-+                err_message("Unable to find a sniffing interface!  (%s)",
-+                        errbuf);
-+            gc.dev = strdup(dev);
-         }
- 
-         /* Set up libpcap connection. */
-diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/util.c	2008-07-15 16:02:38.000000000 -0400
-@@ -81,7 +81,7 @@ chomp (char *string, int size)
-  * INPUT        : 0 - PID filename
-  * RETURN       : None!
-  * ---------------------------------------------------------- */
--void
-+static void
- init_pid_file (bstring pid_file, bstring user, bstring group)
- {
-     int pid;
-@@ -116,6 +116,23 @@ init_pid_file (bstring pid_file, bstring
- }
- 
- /* ----------------------------------------------------------
-+ *  * FUNCTION     : become_daemon
-+ *   * DESCRIPTION  : This function makes pads into a daemon
-+ *    * RETURN       : none
-+ *     * ---------------------------------------------------------- */
-+void become_daemon(void)
-+{
-+    if (gc.daemon_mode) {
-+        /* Daemon Mode:  fork child process */
-+        verbose_message("[-] Daemonizing...\n");
-+        if (daemon(0, 0) < 0) {
-+            err_message("Daemonize failed");
-+        }
-+        init_pid_file(gc.pid_file, gc.priv_user, gc.priv_group);
-+    }
-+}
-+
-+/* ----------------------------------------------------------
-  * FUNCTION     : copy_argv
-  * DESCRIPTION  : This function will flatten argv into a
-  *              : single string.  This function was taken
-diff -urp pads-1.2.orig/src/util.h pads-1.2/src/util.h
---- pads-1.2.orig/src/util.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/util.h	2008-07-15 16:03:04.000000000 -0400
-@@ -39,7 +39,7 @@
- /* PROTOTYPES -------------------------------------- */
- void strip_comment (char *string);
- int chomp (char *string, int size);
--void init_pid_file (bstring pid_file, bstring user, bstring group);
-+void become_daemon(void);
- char *copy_argv(register char **argv);
- void log_message (const char *msg, ...)
- #ifdef __GNUC__

diff --git a/pads-1.2-daemonize.patch b/pads-1.2-daemonize.patch
deleted file mode 100644
index 1e0d801..0000000
--- a/pads-1.2-daemonize.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-diff -urp pads-1.2.orig/etc/pads.conf pads-1.2/etc/pads.conf
---- pads-1.2.orig/etc/pads.conf	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/etc/pads.conf	2008-07-01 15:54:01.000000000 -0400
-@@ -15,7 +15,7 @@
- # -------------------------
- # This parameter determines whether the application will go into the background.
- # 0 = Disable, 1 = Enable
--daemon 0
-+daemon 1
- 
- # pid_file
- # -------------------------
-@@ -62,13 +62,13 @@ pid_file /var/run/pads.pid
- # -------------------------
- # This output plugin displays PADS data to the screen.  It is mainly used for
- # debugging purposes.
--output screen
-+#output screen
- 
- # output:  csv
- # -------------------------
- # This output plugin writes PADS data to a CSV file.  Optionally, a CSV filename
- # can be specified as an argument.
--output csv: assets.csv
-+output csv: /etc/pads-assets.csv
- 
- # output:  fifo
- # -------------------------
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-07-01 15:53:30.000000000 -0400
-@@ -130,7 +130,8 @@ read_report_file (void)
-     struct bstrList *lines;
-     int i;
- 
--    printf("[-] Processing Existing %s\n", bdata(output_csv_conf.filename));
-+
-+    log_message("[-] Processing Existing %s\n", bdata(output_csv_conf.filename));
- 
-     /* Open Signature File */
-     if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) {
-diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-07-01 15:53:30.000000000 -0400
-@@ -195,6 +195,9 @@ init_pads (void)
-     /* Process the command line parameters. */
-     process_cmdline(prog_argc, prog_argv);
- 
-+    if (!gc.daemon_mode)
-+        print_header();
-+
-     /* Initialize Output Module */
-     init_output();
- 
-@@ -523,7 +526,6 @@ main(int argc, char *argv[])
-     prog_argv = argv;
- 
-     /* Main Program */
--    print_header();
-     main_pads();
- 
-     return(0);
-diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-07-01 12:46:15.000000000 -0400
-+++ pads-1.2/src/util.c	2008-07-01 15:53:30.000000000 -0400
-@@ -85,7 +85,8 @@ daemonize ()
- {
-     pid_t pid;
- 
--    printf("[-] Daemonizing...\n");
-+    if (!gc.daemon_mode)
-+        printf("[-] Daemonizing...\n");
- 
-     pid = fork();
-     if (pid > 0) {

diff --git a/pads-1.2-disable-debug.patch b/pads-1.2-disable-debug.patch
deleted file mode 100644
index 4fd8665..0000000
--- a/pads-1.2-disable-debug.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur pads-1.2.orig/src/global.h pads-1.2/src/global.h
---- pads-1.2.orig/src/global.h	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/global.h	2008-07-01 13:57:59.000000000 -0400
-@@ -45,7 +45,7 @@
- 
- #define I_ATTEMPTS 4
- 
--#define DEBUG
-+//#define DEBUG
- 
- #define PADS_SIGNATURE_LIST "pads-signature-list"
- #define PADS_ETHER_CODES "pads-ether-codes"

diff --git a/pads-1.2-ether-codes-update.patch b/pads-1.2-ether-codes-update.patch
deleted file mode 100644
index cd448df..0000000
--- a/pads-1.2-ether-codes-update.patch
+++ /dev/null
@@ -1,6223 +0,0 @@
---- pads-1.2.orig/etc/pads-ether-codes	2005-02-10 01:05:01.000000000 -0500
-+++ pads-1.2/etc/pads-ether-codes	2004-07-20 10:33:42.000000000 -0400
-@@ -32,7 +40,7 @@
- 00:00:14  Netronix
- 00:00:15  Datapoint Corporation
- 00:00:16  Du Pont Pixel Systems     .
--00:00:17  Private
-+00:00:17  Tekelec
- 00:00:18  Webster Computer Corporation
- 00:00:19  Applied Dynamics International
- 00:00:1A  Advanced Micro Devices
-@@ -47,11 +55,11 @@
- 00:00:23  Abb Industrial Systems Ab
- 00:00:24  Connect As
- 00:00:25  Ramtek Corp.
--00:00:26  Sha-ken Co., Ltd.
-+00:00:26  Sha-Ken Co., Ltd.
- 00:00:27  Japan Radio Company
- 00:00:28  Prodigy Systems Corporation
- 00:00:29  Imc Networks Corp.
--00:00:2A  Trw - Sedd/inp
-+00:00:2A  Trw - Sedd/Inp
- 00:00:2B  Crisp Automation, Inc
- 00:00:2C  Autotote Limited
- 00:00:2D  Chromatics Inc
-@@ -91,10 +99,10 @@
- 00:00:4F  Logicraft, Inc.
- 00:00:50  Radisys Corporation
- 00:00:51  Hob Electronic Gmbh & Co. Kg
--00:00:52  Intrusion.com, Inc.
-+00:00:52  Intrusion.Com, Inc.
- 00:00:53  Compucorp
- 00:00:54  Modicon, Inc.
--00:00:55  Commissariat A L`energie Atom.
-+00:00:55  Commissariat A L`Energie Atom.
- 00:00:56  Dr. B. Struck
- 00:00:57  Scitex Corporation Ltd.
- 00:00:58  Racore Computer Products Inc.
-@@ -108,7 +116,7 @@
- 00:00:60  Kontron Elektronik Gmbh
- 00:00:61  Gateway Communications
- 00:00:62  Bull Hn Information Systems
--00:00:63  Dr.ing.seufert Gmbh
-+00:00:63  Dr.Ing.Seufert Gmbh
- 00:00:64  Yokogawa Digital Computer Corp
- 00:00:65  Network Associates, Inc.
- 00:00:66  Talaris Systems, Inc.
-@@ -116,11 +124,11 @@
- 00:00:68  Rosemount Controls
- 00:00:69  Concord Communications Inc
- 00:00:6A  Computer Consoles Inc.
--00:00:6B  Silicon Graphics Inc./mips
-+00:00:6B  Silicon Graphics Inc./Mips
- 00:00:6C  Private
- 00:00:6D  Cray Communications, Ltd.
- 00:00:6E  Artisoft, Inc.
--00:00:6F  Madge Networks Ltd.
-+00:00:6F  Madge Ltd.
- 00:00:70  Hcl Limited
- 00:00:71  Adra Systems Inc.
- 00:00:72  Miniware Technology
-@@ -136,8 +144,8 @@
- 00:00:7C  Ampere Incorporated
- 00:00:7D  Sun Microsystems, Inc.
- 00:00:7E  Clustrix Corporation
--00:00:7F  Linotype-hell Ag
--00:00:80  Cray Communications A/s
-+00:00:7F  Linotype-Hell Ag
-+00:00:80  Cray Communications A/S
- 00:00:81  Bay Networks
- 00:00:82  Lectra Systemes Sa
- 00:00:83  Tadpole Technology Plc
-@@ -149,7 +157,7 @@
- 00:00:89  Cayman Systems Inc.
- 00:00:8A  Datahouse Information Systems
- 00:00:8B  Infotron
--00:00:8C  Alloy Computer Products (australia) Pty Ltd
-+00:00:8C  Alloy Computer Products (Australia) Pty Ltd
- 00:00:8D  Verdix Corporation
- 00:00:8E  Solbourne Computer, Inc.
- 00:00:8F  Raytheon Company
-@@ -163,11 +171,11 @@
- 00:00:97  Epoch Systems
- 00:00:98  Crosscomm Corporation
- 00:00:99  Mtx, Inc.
--00:00:9A  Rc Computer A/s
-+00:00:9A  Rc Computer A/S
- 00:00:9B  Information International, Inc
--00:00:9C  Rolm Mil-spec Computers
-+00:00:9C  Rolm Mil-Spec Computers
- 00:00:9D  Locus Computing Corporation
--00:00:9E  Marli S.a.
-+00:00:9E  Marli S.A.
- 00:00:9F  Ameristar Technologies Inc.
- 00:00:A0  Tokyo Sanyo Electric Co. Ltd.
- 00:00:A1  Marquette Electric Co.
-@@ -185,34 +193,34 @@
- 00:00:AD  Bruker Instruments Inc.
- 00:00:AE  Dassault Electronique
- 00:00:AF  Nuclear Data Instrumentation
--00:00:B0  Rnd-rad Network Devices
-+00:00:B0  Rnd-Rad Network Devices
- 00:00:B1  Alpha Microsystems Inc.
- 00:00:B2  Televideo Systems, Inc.
- 00:00:B3  Cimlinc Incorporated
- 00:00:B4  Edimax Computer Company
- 00:00:B5  Datability Software Sys. Inc.
--00:00:B6  Micro-matic Research
-+00:00:B6  Micro-Matic Research
- 00:00:B7  Dove Computer Corporation
- 00:00:B8  Seikosha Co., Ltd.
- 00:00:B9  Mcdonnell Douglas Computer Sys
- 00:00:BA  Siig, Inc.
--00:00:BB  Tri-data
--00:00:BC  Allen-bradley Co. Inc.
-+00:00:BB  Tri-Data
-+00:00:BC  Allen-Bradley Co. Inc.
- 00:00:BD  Mitsubishi Cable Company
- 00:00:BE  The Nti Group
- 00:00:BF  Symmetric Computer Systems
- 00:00:C0  Western Digital Corporation
--00:00:C1  Madge Networks Ltd.
-+00:00:C1  Madge Ltd.
- 00:00:C2  Information Presentation Tech.
- 00:00:C3  Harris Corp Computer Sys Div
- 00:00:C4  Waters Div. Of Millipore
--00:00:C5  Farallon Computing/netopia
-+00:00:C5  Farallon Computing/Netopia
- 00:00:C6  Eon Systems
- 00:00:C7  Arix Corporation
- 00:00:C8  Altos Computer Systems
- 00:00:C9  Emulex Corporation
- 00:00:CA  Applitek
--00:00:CB  Compu-shack Electronic Gmbh
-+00:00:CB  Compu-Shack Electronic Gmbh
- 00:00:CC  Densan Co., Ltd.
- 00:00:CD  Allied Telesyn Research Ltd.
- 00:00:CE  Megadata Corp.
-@@ -267,8 +275,8 @@
- 00:00:FF  Camtec Electronics Ltd.
- 00:01:00  Equip'trans
- 00:01:01  Private
--00:01:02  3com Corporation
--00:01:03  3Com 3CRWE62092A
-+00:01:02  3Com Corporation
-+00:01:03  3Com Corporation
- 00:01:04  Dvico Co., Ltd.
- 00:01:05  Beckhoff Gmbh
- 00:01:06  Tews Datentechnik Gmbh
-@@ -279,12 +287,12 @@
- 00:01:0B  Space Cyberlink, Inc.
- 00:01:0C  System Talks Inc.
- 00:01:0D  Coreco, Inc.
--00:01:0E  Bri-link Technologies Co., Ltd
-+00:01:0E  Bri-Link Technologies Co., Ltd
- 00:01:0F  Nishan Systems, Inc.
- 00:01:10  Gotham Networks
- 00:01:11  Idigm Inc.
- 00:01:12  Shark Multimedia Inc.
--00:01:13  Olympus Optical Co., Ltd.
-+00:01:13  Olympus Corporation
- 00:01:14  Kanda Tsushin Kogyo Co., Ltd.
- 00:01:15  Extratech Corporation
- 00:01:16  Netspect Technologies, Inc.
-@@ -297,8 +305,8 @@
- 00:01:1D  Centillium Communications
- 00:01:1E  Precidia Technologies, Inc.
- 00:01:1F  Rc Networks, Inc.
--00:01:20  Oscilloquartz S.a.
--00:01:21  Rapidstream Inc.
-+00:01:20  Oscilloquartz S.A.
-+00:01:21  Watchguard Technologies, Inc.
- 00:01:22  Trend Communications, Ltd.
- 00:01:23  Digital Electronics Corp.
- 00:01:24  Acer Incorporated
-@@ -337,9 +345,9 @@
- 00:01:45  Winsystems, Inc.
- 00:01:46  Tesco Controls, Inc.
- 00:01:47  Zhone Technologies
--00:01:48  X-traweb Inc.
--00:01:49  T.d.t. Transfer Data Test Gmbh
--00:01:4A  Sony Computer Science Labs., I
-+00:01:48  X-Traweb Inc.
-+00:01:49  T.D.T. Transfer Data Test Gmbh
-+00:01:4A  Sony Corporation
- 00:01:4B  Ennovate Networks, Inc.
- 00:01:4C  Berkeley Process Control
- 00:01:4D  Shin Kin Enterprises Co., Ltd
-@@ -349,16 +357,16 @@
- 00:01:51  Ensemble Communications
- 00:01:52  Chromatek Inc.
- 00:01:53  Archtek Telecom Corporation
--00:01:54  G3m Corporation
-+00:01:54  G3M Corporation
- 00:01:55  Promise Technology, Inc.
--00:01:56  Firewiredirect.com, Inc.
-+00:01:56  Firewiredirect.Com, Inc.
- 00:01:57  Syswave Co., Ltd
--00:01:58  Electro Industries/gauge Tech
-+00:01:58  Electro Industries/Gauge Tech
- 00:01:59  S1 Corporation
- 00:01:5A  Digital Video Broadcasting
--00:01:5B  Italtel S.p.a/rf-up-i
-+00:01:5B  Italtel S.P.A/Rf-Up-I
- 00:01:5C  Cadant Inc.
--00:01:5D  Pirus Networks
-+00:01:5D  Sun Microsystems, Inc
- 00:01:5E  Best Technology Co., Ltd.
- 00:01:5F  Digital Design Gmbh
- 00:01:60  Elmex Co., Ltd.
-@@ -367,14 +375,14 @@
- 00:01:63  Cisco Systems, Inc.
- 00:01:64  Cisco Systems, Inc.
- 00:01:65  Airswitch Corporation
--00:01:66  Tc Group A/s
--00:01:67  Hioki E.e. Corporation
-+00:01:66  Tc Group A/S
-+00:01:67  Hioki E.E. Corporation
- 00:01:68  Vitana Corporation
- 00:01:69  Celestix Networks Pte Ltd.
- 00:01:6A  Alitec
- 00:01:6B  Lightchip, Inc.
- 00:01:6C  Foxconn
--00:01:6D  Triton Network Systems
-+00:01:6D  Carriercomm Inc.
- 00:01:6E  Conklin Corporation
- 00:01:6F  Haitai Electronics Co., Ltd.
- 00:01:70  Ese Embedded System Engineer'g
-@@ -389,7 +397,7 @@
- 00:01:79  Wireless Technology, Inc.
- 00:01:7A  Chengdu Maipu Electric Industrial Co., Ltd.
- 00:01:7B  Heidelberger Druckmaschinen Ag
--00:01:7C  Ag-e Gmbh
-+00:01:7C  Ag-E Gmbh
- 00:01:7D  Thermoquest
- 00:01:7E  Adtek System Science Co., Ltd.
- 00:01:7F  Experience Music Project
-@@ -400,7 +408,7 @@
- 00:01:84  Sieb & Meyer Ag
- 00:01:85  Aloka Co., Ltd.
- 00:01:86  Disch Gmbh
--00:01:87  I2se Gmbh
-+00:01:87  I2Se Gmbh
- 00:01:88  Lxco Technologies Ag
- 00:01:89  Refraction Technology, Inc.
- 00:01:8A  Roi Computer Ag
-@@ -409,7 +417,7 @@
- 00:01:8D  Audesi Technologies
- 00:01:8E  Logitec Corporation
- 00:01:8F  Kenetec, Inc.
--00:01:90  Smk-m
-+00:01:90  Smk-M
- 00:01:91  Syred Data Systems
- 00:01:92  Texas Digital Systems
- 00:01:93  Hanbyul Telecom Co., Ltd.
-@@ -422,23 +430,23 @@
- 00:01:9A  Leunig Gmbh
- 00:01:9B  Kyoto Microcomputer Co., Ltd.
- 00:01:9C  Jds Uniphase Inc.
--00:01:9D  E-control Systems, Inc.
-+00:01:9D  E-Control Systems, Inc.
- 00:01:9E  Ess Technology, Inc.
- 00:01:9F  Phonex Broadband
- 00:01:A0  Infinilink Corporation
--00:01:A1  Mag-tek, Inc.
-+00:01:A1  Mag-Tek, Inc.
- 00:01:A2  Logical Co., Ltd.
- 00:01:A3  Genesys Logic, Inc.
- 00:01:A4  Microlink Corporation
- 00:01:A5  Nextcomm, Inc.
--00:01:A6  Scientific-atlanta Arcodan A/s
-+00:01:A6  Scientific-Atlanta Arcodan A/S
- 00:01:A7  Unex Technology Corporation
- 00:01:A8  Welltech Computer Co., Ltd.
- 00:01:A9  Bmw Ag
- 00:01:AA  Airspan Communications, Ltd.
- 00:01:AB  Main Street Networks
- 00:01:AC  Sitara Networks, Inc.
--00:01:AD  Coach Master International  D.b.a. Cmi Worldwide, Inc.
-+00:01:AD  Coach Master International  D.B.A. Cmi Worldwide, Inc.
- 00:01:AE  Trex Enterprises
- 00:01:AF  Motorola Computer Group
- 00:01:B0  Fulltek Technology Co., Ltd.
-@@ -447,28 +455,29 @@
- 00:01:B3  Precision Electronic Manufacturing
- 00:01:B4  Wayport, Inc.
- 00:01:B5  Turin Networks, Inc.
--00:01:B6  Saejin T&m Co., Ltd.
-+00:01:B6  Saejin T&M Co., Ltd.
- 00:01:B7  Centos, Inc.
- 00:01:B8  Netsensity, Inc.
- 00:01:B9  Skf Condition Monitoring
--00:01:BA  Ic-net, Inc.
-+00:01:BA  Ic-Net, Inc.
- 00:01:BB  Frequentis
- 00:01:BC  Brains Corporation
--00:01:BD  Peterson Electro-musical Products, Inc.
-+00:01:BD  Peterson Electro-Musical Products, Inc.
- 00:01:BE  Gigalink Co., Ltd.
- 00:01:BF  Teleforce Co., Ltd.
- 00:01:C0  Compulab, Ltd.
--00:01:C1  Exbit Technology
-+00:01:C1  Vitesse Semiconductor Corporation
- 00:01:C2  Ark Research Corp.
- 00:01:C3  Acromag, Inc.
- 00:01:C4  Neowave, Inc.
- 00:01:C5  Simpler Networks
- 00:01:C6  Quarry Technologies
- 00:01:C7  Cisco Systems, Inc.
-+00:01:C8  Thomas Conrad Corp.
- 00:01:C8  Conrad Corp.
- 00:01:C9  Cisco Systems, Inc.
- 00:01:CA  Geocast Network Systems, Inc.
--00:01:CB  Netgame, Ltd.
-+00:01:CB  Evr
- 00:01:CC  Japan Total Design Communication Co., Ltd.
- 00:01:CD  Artem
- 00:01:CE  Custom Micro Products, Ltd.
-@@ -495,12 +504,12 @@
- 00:01:E3  Siemens Ag
- 00:01:E4  Sitera, Inc.
- 00:01:E5  Supernet, Inc.
--00:01:E6  Hewlett-packard Company
--00:01:E7  Hewlett-packard Company
-+00:01:E6  Hewlett-Packard Company
-+00:01:E7  Hewlett-Packard Company
- 00:01:E8  Force10 Networks, Inc.
--00:01:E9  Litton Marine Systems B.v.
-+00:01:E9  Litton Marine Systems B.V.
- 00:01:EA  Cirilium Corp.
--00:01:EB  C-com Corporation
-+00:01:EB  C-Com Corporation
- 00:01:EC  Ericsson Group
- 00:01:ED  Seta Corp.
- 00:01:EE  Comtrol Europe, Ltd.
-@@ -510,7 +519,7 @@
- 00:01:F2  Mark Of The Unicorn, Inc.
- 00:01:F3  Qps, Inc.
- 00:01:F4  Enterasys Networks
--00:01:F5  Erim S.a.
-+00:01:F5  Erim S.A.
- 00:01:F6  Association Of Musical Electronics Industry
- 00:01:F7  Image Display Systems, Inc.
- 00:01:F8  Adherent Systems, Ltd.
-@@ -527,31 +536,31 @@
- 00:02:03  Woonsang Telecom, Inc.
- 00:02:04  Bodmann Industries Elektronik Gmbh
- 00:02:05  Hitachi Denshi, Ltd.
--00:02:06  Telital R&d Denmark A/s
--00:02:07  Private
-+00:02:06  Telital R&D Denmark A/S
-+00:02:07  Visionglobal Network Corp.
- 00:02:08  Unify Networks, Inc.
- 00:02:09  Shenzhen Sed Information Technology Co., Ltd.
- 00:02:0A  Gefran Spa
- 00:02:0B  Native Networks, Inc.
--00:02:0C  Metro-optix
--00:02:0D  Micronpc.com
-+00:02:0C  Metro-Optix
-+00:02:0D  Micronpc.Com
- 00:02:0E  Laurel Networks, Inc.
- 00:02:0F  Aatr
- 00:02:10  Fenecom
- 00:02:11  Nature Worldwide Technology Corp.
- 00:02:12  Sierracom
--00:02:13  S.d.e.l.
-+00:02:13  S.D.E.L.
- 00:02:14  Dtvro
--00:02:15  Cotas Computer Technology A/b
-+00:02:15  Cotas Computer Technology A/B
- 00:02:16  Cisco Systems, Inc.
- 00:02:17  Cisco Systems, Inc.
- 00:02:18  Advanced Scientific Corp
- 00:02:19  Paralon Technologies
- 00:02:1A  Zuma Networks
--00:02:1B  Kollmorgen-servotronix
-+00:02:1B  Kollmorgen-Servotronix
- 00:02:1C  Network Elements, Inc.
- 00:02:1D  Data General Communication Ltd.
--00:02:1E  Simtel S.r.l.
-+00:02:1E  Simtel S.R.L.
- 00:02:1F  Aculab Plc
- 00:02:20  Canon Aptex, Inc.
- 00:02:21  Dsp Application, Ltd.
-@@ -568,9 +577,9 @@
- 00:02:2C  Abb Bomem, Inc.
- 00:02:2D  Agere Systems
- 00:02:2E  Teac Corp. R& D
--00:02:2F  P-cube, Ltd.
-+00:02:2F  P-Cube, Ltd.
- 00:02:30  Intersoft Electronics
--00:02:31  Ingersoll-rand
-+00:02:31  Ingersoll-Rand
- 00:02:32  Avision, Inc.
- 00:02:33  Mantra Communications, Inc.
- 00:02:34  Imperial Technology, Inc.
-@@ -583,16 +592,16 @@
- 00:02:3B  Redback Networks
- 00:02:3C  Creative Technology, Ltd.
- 00:02:3D  Nuspeed, Inc.
--00:02:3E  Selta Telematica S.p.a
-+00:02:3E  Selta Telematica S.P.A
- 00:02:3F  Compal Electronics, Inc.
- 00:02:40  Seedek Co., Ltd.
--00:02:41  Amer.com
-+00:02:41  Amer.Com
- 00:02:42  Videoframe Systems
- 00:02:43  Raysis Co., Ltd.
- 00:02:44  Surecom Technology Co.
- 00:02:45  Lampus Co, Ltd.
--00:02:46  All-win Tech Co., Ltd.
--00:02:47  Great Dragon Information Technology (group) Co., Ltd.
-+00:02:46  All-Win Tech Co., Ltd.
-+00:02:47  Great Dragon Information Technology (Group) Co., Ltd.
- 00:02:48  Pilz Gmbh & Co.
- 00:02:49  Aviv Infocom Co, Ltd.
- 00:02:4A  Cisco Systems, Inc.
-@@ -600,7 +609,7 @@
- 00:02:4C  Sibyte, Inc.
- 00:02:4D  Mannesman Dematic Colby Pty. Ltd.
- 00:02:4E  Datacard Group
--00:02:4F  Ipm Datacom S.r.l.
-+00:02:4F  Ipm Datacom S.R.L.
- 00:02:50  Geyser Networks, Inc.
- 00:02:51  Soma Networks
- 00:02:52  Carrier Corporation
-@@ -610,10 +619,10 @@
- 00:02:56  Alpha Processor, Inc.
- 00:02:57  Microcom Corp.
- 00:02:58  Flying Packets Communications
--00:02:59  Tsann Kuen China (shanghai)enterprise Co., Ltd. It Group
-+00:02:59  Tsann Kuen China (Shanghai)Enterprise Co., Ltd. It Group
- 00:02:5A  Catena Networks
- 00:02:5B  Cambridge Silicon Radio
--00:02:5C  Sci Systems (kunshan) Co., Ltd.
-+00:02:5C  Sci Systems (Kunshan) Co., Ltd.
- 00:02:5D  Calix Networks
- 00:02:5E  High Technology Ltd
- 00:02:5F  Nortel Networks
-@@ -621,7 +630,7 @@
- 00:02:61  I3 Micro Technology Ab
- 00:02:62  Soyo Group Soyo Com Tech Co., Ltd
- 00:02:63  Ups Manufacturing Srl
--00:02:64  Audioramp.com
-+00:02:64  Audioramp.Com
- 00:02:65  Virditech Co. Ltd.
- 00:02:66  Thermalogic Corporation
- 00:02:67  Node Runner, Inc.
-@@ -635,25 +644,25 @@
- 00:02:6F  Senao International Co., Ltd.
- 00:02:70  Crewave Co., Ltd.
- 00:02:71  Vpacket Communications
--00:02:72  Cc&c Technologies, Inc.
-+00:02:72  Cc&C Technologies, Inc.
- 00:02:73  Coriolis Networks
- 00:02:74  Tommy Technologies Corp.
- 00:02:75  Smart Technologies, Inc.
- 00:02:76  Primax Electronics Ltd.
- 00:02:77  Cash Systemes Industrie
--00:02:78  Samsung Electro-mechanics Co., Ltd.
-+00:02:78  Samsung Electro-Mechanics Co., Ltd.
- 00:02:79  Control Applications, Ltd.
- 00:02:7A  Ioi Technology Corporation
- 00:02:7B  Amplify Net, Inc.
- 00:02:7C  Trilithic, Inc.
- 00:02:7D  Cisco Systems, Inc.
- 00:02:7E  Cisco Systems, Inc.
--00:02:7F  Ask-technologies.com
-+00:02:7F  Ask-Technologies.Com
- 00:02:80  Mu Net, Inc.
--00:02:81  Madge Networks Limited
-+00:02:81  Madge Ltd.
- 00:02:82  Viaclix, Inc.
- 00:02:83  Spectrum Controls, Inc.
--00:02:84  Alstom T&d P&c
-+00:02:84  Alstom T&D P&C
- 00:02:85  Riverstone Networks
- 00:02:86  Occam Networks
- 00:02:87  Adapcom
-@@ -661,7 +670,7 @@
- 00:02:89  Dne Technologies
- 00:02:8A  Ambit Microsystems Corporation
- 00:02:8B  Vdsl Systems Oy
--00:02:8C  Micrel-synergy Semiconductor
-+00:02:8C  Micrel-Synergy Semiconductor
- 00:02:8D  Movita Technologies, Inc.
- 00:02:8E  Rapid 5 Networks, Inc.
- 00:02:8F  Globetek, Inc.
-@@ -670,14 +679,14 @@
- 00:02:92  Logic Innovations, Inc.
- 00:02:93  Solid Data Systems
- 00:02:94  Tokyo Sokushin Co., Ltd.
--00:02:95  Ip.access Limited
-+00:02:95  Ip.Access Limited
- 00:02:96  Lectron Co,. Ltd.
--00:02:97  C-cor.net
-+00:02:97  C-Cor.Net
- 00:02:98  Broadframe Corporation
- 00:02:99  Apex, Inc.
- 00:02:9A  Storage Apps
- 00:02:9B  Kreatel Communications Ab
--00:02:9C  3com
-+00:02:9C  3Com
- 00:02:9D  Merix Corp.
- 00:02:9E  Information Equipment Co., Ltd.
- 00:02:9F  L-3 Communication Aviation Recorders
-@@ -690,11 +699,11 @@
- 00:02:A6  Effinet Systems Co., Ltd.
- 00:02:A7  Vivace Networks
- 00:02:A8  Air Link Technology
--00:02:A9  Racom, S.r.o.
-+00:02:A9  Racom, S.R.O.
- 00:02:AA  Plcom Co., Ltd.
- 00:02:AB  Ctc Union Technologies Co., Ltd.
--00:02:AC  3par Data
--00:02:AD  Asahi Optical Co., Ltd.
-+00:02:AC  3Par Data
-+00:02:AD  Pentax Corpotation
- 00:02:AE  Scannex Electronics Ltd.
- 00:02:AF  Telecruz Technology, Inc.
- 00:02:B0  Hokubu Communication & Industrial Co., Ltd.
-@@ -721,11 +730,11 @@
- 00:02:C5  Evertz Microsystems Ltd.
- 00:02:C6  Data Track Technology Plc
- 00:02:C7  Alps Electric Co., Ltd.
--00:02:C8  Technocom Communications Technology (pte) Ltd
-+00:02:C8  Technocom Communications Technology (Pte) Ltd
- 00:02:C9  Mellanox Technologies
- 00:02:CA  Endpoints, Inc.
- 00:02:CB  Tristate Ltd.
--00:02:CC  M.c.c.i
-+00:02:CC  M.C.C.I
- 00:02:CD  Teledream, Inc.
- 00:02:CE  Foxjet, Inc.
- 00:02:CF  Zygate Communications, Inc.
-@@ -748,18 +757,18 @@
- 00:02:E0  Etas Gmbh
- 00:02:E1  Integrated Network Corporation
- 00:02:E2  Ndc Infared Engineering
--00:02:E3  Lite-on Communications, Inc.
-+00:02:E3  Lite-On Communications, Inc.
- 00:02:E4  Jc Hyun Systems, Inc.
- 00:02:E5  Timeware Ltd.
- 00:02:E6  Gould Instrument Systems, Inc.
- 00:02:E7  Cab Gmbh & Co Kg
--00:02:E8  E.d.&a.
--00:02:E9  Cs Systemes De Securite - C3s
--00:02:EA  Videonics, Inc.
-+00:02:E8  E.D.&A.
-+00:02:E9  Cs Systemes De Securite - C3S
-+00:02:EA  Focus Enhancements
- 00:02:EB  Pico Communications
- 00:02:EC  Maschoff Design Engineering
- 00:02:ED  Dxo Telecom Co., Ltd.
--00:02:EE  Nokia Danmark A/s
-+00:02:EE  Nokia Danmark A/S
- 00:02:EF  Ccc Network Systems Group Ltd.
- 00:02:F0  Ame Optimedia Technology Co., Ltd.
- 00:02:F1  Pinetron Co., Ltd.
-@@ -772,14 +781,14 @@
- 00:02:F8  Seakr Engineering, Inc.
- 00:02:F9  Mimos Semiconductor Sdn Bhd
- 00:02:FA  Dx Antenna Co., Ltd.
--00:02:FB  Baumuller Aulugen-systemtechnik Gmbh
-+00:02:FB  Baumuller Aulugen-Systemtechnik Gmbh
- 00:02:FC  Cisco Systems, Inc.
- 00:02:FD  Cisco Systems, Inc.
- 00:02:FE  Viditec, Inc.
--00:02:FF  Handan Broad Infocom
-+00:02:FF  Handan Broadinfocom
- 00:03:00  Netcontinuum, Inc.
- 00:03:01  Avantas Networks Corporation
--00:03:02  Oasys Telecom, Inc.
-+00:03:02  Charles Industries, Ltd.
- 00:03:03  Jama Electronics Co., Ltd.
- 00:03:04  Pacific Broadband Communications
- 00:03:05  Smart Network Devices Gmbh
-@@ -792,10 +801,10 @@
- 00:03:0C  Telesoft Technologies Ltd.
- 00:03:0D  Uniwill Computer Corp.
- 00:03:0E  Core Communications Co., Ltd.
--00:03:0F  Digital China (shanghai) Networks Ltd.
-+00:03:0F  Digital China (Shanghai) Networks Ltd.
- 00:03:10  Link Evolution Corp.
- 00:03:11  Micro Technology Co., Ltd.
--00:03:12  Tr-systemtechnik Gmbh
-+00:03:12  Tr-Systemtechnik Gmbh
- 00:03:13  Access Media Spa
- 00:03:14  Teleware Network Systems
- 00:03:15  Cidco Incorporated
-@@ -813,11 +822,11 @@
- 00:03:21  Reco Research Co., Ltd.
- 00:03:22  Idis Co., Ltd.
- 00:03:23  Cornet Technology, Inc.
--00:03:24  Tottori Sanyo Electric Co., Ltd.
-+00:03:24  Sanyo Multimedia Tottori Co., Ltd.
- 00:03:25  Arima Computer Corp.
- 00:03:26  Iwasaki Information Systems Co., Ltd.
- 00:03:27  Act'l
--00:03:28  Private
-+00:03:28  Mace Group, Inc.
- 00:03:29  F3, Inc.
- 00:03:2A  Unidata Communication Systems, Inc.
- 00:03:2B  Gai Datenfunksysteme Gmbh
-@@ -844,19 +853,19 @@
- 00:03:40  Floware Wireless Systems, Ltd.
- 00:03:41  Axon Digital Design
- 00:03:42  Nortel Networks
--00:03:43  Martin Professional A/s
--00:03:44  Tietech.co., Ltd.
-+00:03:43  Martin Professional A/S
-+00:03:44  Tietech.Co., Ltd.
- 00:03:45  Routrek Networks Corporation
- 00:03:46  Hitachi Kokusai Electric, Inc.
- 00:03:47  Intel Corporation
- 00:03:48  Norscan Instruments, Ltd.
--00:03:49  Vidicode Datacommunicatie B.v.
-+00:03:49  Vidicode Datacommunicatie B.V.
- 00:03:4A  Rias Corporation
- 00:03:4B  Nortel Networks
- 00:03:4C  Shanghai Digivision Technology Co., Ltd.
- 00:03:4D  Chiaro Networks, Ltd.
- 00:03:4E  Pos Data Company, Ltd.
--00:03:4F  Sur-gard Security
-+00:03:4F  Sur-Gard Security
- 00:03:50  Bticino Spa
- 00:03:51  Diebold, Inc.
- 00:03:52  Colubris Networks
-@@ -864,13 +873,13 @@
- 00:03:54  Fiber Logic Communications
- 00:03:55  Terabeam Internet Systems
- 00:03:56  Wincor Nixdorf Gmbh & Co Kg
--00:03:57  Intervoice-brite, Inc.
-+00:03:57  Intervoice-Brite, Inc.
- 00:03:58  Icable System Co., Ltd.
- 00:03:59  Digitalsis
- 00:03:5A  Photron Limited
- 00:03:5B  Bridgewave Communications
- 00:03:5C  Saint Song Corp.
--00:03:5D  Bosung Hi-net Co., Ltd.
-+00:03:5D  Bosung Hi-Net Co., Ltd.
- 00:03:5E  Metropolitan Area Networks, Inc.
- 00:03:5F  Prueftechnik Condition Monitoring Gmbh & Co. Kg
- 00:03:60  Pac Interactive Technology, Inc.
-@@ -887,12 +896,12 @@
- 00:03:6B  Cisco Systems, Inc.
- 00:03:6C  Cisco Systems, Inc.
- 00:03:6D  Runtop, Inc.
--00:03:6E  Nicon Systems (pty) Limited
-+00:03:6E  Nicon Systems (Pty) Limited
- 00:03:6F  Telsey Spa
- 00:03:70  Nxtv, Inc.
- 00:03:71  Acomz Networks Corp.
- 00:03:72  Ulan
--00:03:73  Aselsan A.s
-+00:03:73  Aselsan A.S
- 00:03:74  Hunter Watertech
- 00:03:75  Netmedia, Inc.
- 00:03:76  Graphtec Technology, Inc.
-@@ -907,7 +916,7 @@
- 00:03:7F  Atheros Communications, Inc.
- 00:03:80  Ssh Communications Security Corp.
- 00:03:81  Ingenico International
--00:03:82  A-one Co., Ltd.
-+00:03:82  A-One Co., Ltd.
- 00:03:83  Metera Networks, Inc.
- 00:03:84  Aeta
- 00:03:85  Actelis Networks, Inc.
-@@ -916,13 +925,13 @@
- 00:03:88  Fastfame Technology Co., Ltd.
- 00:03:89  Plantronics
- 00:03:8A  America Online, Inc.
--00:03:8B  Plus-one I&t, Inc.
-+00:03:8B  Plus-One I&T, Inc.
- 00:03:8C  Total Impact
- 00:03:8D  Pcs Revenue Control Systems, Inc.
- 00:03:8E  Atoga Systems, Inc.
- 00:03:8F  Weinschel Corporation
- 00:03:90  Digital Video Communications, Inc.
--00:03:91  Private
-+00:03:91  Advanced Digital Broadcast, Ltd.
- 00:03:92  Hyundai Teletek Co., Ltd.
- 00:03:93  Apple Computer, Inc.
- 00:03:94  Connect One
-@@ -943,7 +952,7 @@
- 00:03:A3  Mavix, Ltd.
- 00:03:A4  Data Storage And Information Management
- 00:03:A5  Medea Corporation
--00:03:A6  Private
-+00:03:A6  Traxit Technology, Inc.
- 00:03:A7  Unixtar Technology, Inc.
- 00:03:A8  Idot Computers, Inc.
- 00:03:A9  Axcent Media Ag
-@@ -971,7 +980,7 @@
- 00:03:BF  Centerpoint Broadband Technologies, Inc.
- 00:03:C0  Rftnc Co., Ltd.
- 00:03:C1  Packet Dynamics Ltd
--00:03:C2  Solphone K.k.
-+00:03:C2  Solphone K.K.
- 00:03:C3  Micronik Multimedia
- 00:03:C4  Tomra Systems Asa
- 00:03:C5  Mobotix Ag
-@@ -1022,9 +1031,9 @@
- 00:03:F2  Seneca Networks
- 00:03:F3  Dazzle Multimedia, Inc.
- 00:03:F4  Netburner
--00:03:F5  Chip2chip
-+00:03:F5  Chip2Chip
- 00:03:F6  Allegro Networks, Inc.
--00:03:F7  Plast-control Gmbh
-+00:03:F7  Plast-Control Gmbh
- 00:03:F8  Sancastle Technologies, Inc.
- 00:03:F9  Pleiades Communications, Inc.
- 00:03:FA  Timetra Networks
-@@ -1032,7 +1041,7 @@
- 00:03:FC  Intertex Data Ab
- 00:03:FD  Cisco Systems, Inc.
- 00:03:FE  Cisco Systems, Inc.
--00:03:FF  Connectix
-+00:03:FF  Microsoft Corporation
- 00:04:00  Lexmark International, Inc.
- 00:04:01  Osaki Electric Co., Ltd.
- 00:04:02  Nexsan Technologies, Ltd.
-@@ -1044,7 +1053,7 @@
- 00:04:08  Sanko Electronics Co., Ltd.
- 00:04:09  Cratos Networks
- 00:04:0A  Sage Systems
--00:04:0B  3com Europe Ltd.
-+00:04:0B  3Com Europe Ltd.
- 00:04:0C  Kanno Work's Ltd.
- 00:04:0D  Avaya, Inc.
- 00:04:0E  Avm Gmbh
-@@ -1055,9 +1064,9 @@
- 00:04:13  Snom Technology Ag
- 00:04:14  Umezawa Musen Denki Co., Ltd.
- 00:04:15  Rasteme Systems Co., Ltd.
--00:04:16  Parks S/a Comunicacoes Digitais
-+00:04:16  Parks S/A Comunicacoes Digitais
- 00:04:17  Elau Ag
--00:04:18  Teltronic S.a.u.
-+00:04:18  Teltronic S.A.U.
- 00:04:19  Fibercycle Networks, Inc.
- 00:04:1A  Ines Gmbh
- 00:04:1B  Digital Interfaces Ltd.
-@@ -1069,7 +1078,7 @@
- 00:04:21  Ocular Networks
- 00:04:22  Gordon Kapes, Inc.
- 00:04:23  Intel Corporation
--00:04:24  Tmc S.r.l.
-+00:04:24  Tmc S.R.L.
- 00:04:25  Atmel Corporation
- 00:04:26  Autosys
- 00:04:27  Cisco Systems, Inc.
-@@ -1084,7 +1093,7 @@
- 00:04:30  Netgem
- 00:04:31  Globalstreams, Inc.
- 00:04:32  Voyetra Turtle Beach, Inc.
--00:04:33  Cyberboard A/s
-+00:04:33  Cyberboard A/S
- 00:04:34  Accelent Systems, Inc.
- 00:04:35  Comptek International, Inc.
- 00:04:36  Elansat Technologies, Inc.
-@@ -1118,12 +1127,12 @@
- 00:04:52  Rocketlogix, Inc.
- 00:04:53  Yottayotta, Inc.
- 00:04:54  Quadriga Uk
--00:04:55  Antara.net
-+00:04:55  Antara.Net
- 00:04:56  Pipinghot Networks
- 00:04:57  Universal Access Technology, Inc.
- 00:04:58  Fusion X Co., Ltd.
- 00:04:59  Veristar Corporation
--00:04:5A  Linksys WPC11, WUSB11
-+00:04:5A  The Linksys Group, Inc.
- 00:04:5B  Techsan Electronics Co., Ltd.
- 00:04:5C  Mobiwave Pte Ltd
- 00:04:5D  Beka Elektronik
-@@ -1132,9 +1141,9 @@
- 00:04:60  Knilink Technology, Inc.
- 00:04:61  Epox Computer Co., Ltd.
- 00:04:62  Dakos Data & Communication Co., Ltd.
--00:04:63  Philips Communication Security & Imaging
-+00:04:63  Bosch Security Systems
- 00:04:64  Fantasma Networks, Inc.
--00:04:65  I.s.t Isdn-support Technik Gmbh
-+00:04:65  I.S.T Isdn-Support Technik Gmbh
- 00:04:66  Armitel Co.
- 00:04:67  Wuhan Research Institute Of Mii
- 00:04:68  Vivity, Inc.
-@@ -1144,14 +1153,14 @@
- 00:04:6C  Cyber Technology Co., Ltd.
- 00:04:6D  Cisco Systems, Inc.
- 00:04:6E  Cisco Systems, Inc.
--00:04:6F  Digitel S/a Industria Eletronica
-+00:04:6F  Digitel S/A Industria Eletronica
- 00:04:70  Ipunplugged Ab
- 00:04:71  Iprad
- 00:04:72  Telelynx, Inc.
- 00:04:73  Photonex Corporation
- 00:04:74  Legrand
--00:04:75  3Com Corporation
--00:04:76  3Com Corporation
-+00:04:75  3 Com Corporation
-+00:04:76  3 Com Corporation
- 00:04:77  Scalant Systems, Inc.
- 00:04:78  G. Star Technology Corporation
- 00:04:79  Radius Co., Ltd.
-@@ -1169,7 +1178,7 @@
- 00:04:85  Picolight
- 00:04:86  Ittc, University Of Kansas
- 00:04:87  Cogency Semiconductor, Inc.
--00:04:88  Eurotherm Action Incorporated.
-+00:04:88  Eurotherm Controls
- 00:04:89  Yafo Networks, Inc.
- 00:04:8A  Temia Vertriebs Gmbh
- 00:04:8B  Poscon Corporation
-@@ -1195,7 +1204,7 @@
- 00:04:9F  Metrowerks
- 00:04:A0  Verity Instruments, Inc.
- 00:04:A1  Pathway Connectivity
--00:04:A2  L.s.i. Japan Co., Ltd.
-+00:04:A2  L.S.I. Japan Co., Ltd.
- 00:04:A3  Microchip Technology, Inc.
- 00:04:A4  Netenabled, Inc.
- 00:04:A5  Barco Projection Systems Nv
-@@ -1215,10 +1224,10 @@
- 00:04:B3  Videotek, Inc.
- 00:04:B4  Ciac
- 00:04:B5  Equitrac Corporation
--00:04:B6  Tellumat (pty) Ltd.
--00:04:B7  Amb I.t. Holding
-+00:04:B6  Stratex Networks, Inc.
-+00:04:B7  Amb I.T. Holding
- 00:04:B8  Kumahira Co., Ltd.
--00:04:B9  S.i. Soubou, Inc.
-+00:04:B9  S.I. Soubou, Inc.
- 00:04:BA  Kdd Media Will Corporation
- 00:04:BB  Bardac Corporation
- 00:04:BC  Giantec, Inc.
-@@ -1229,7 +1238,7 @@
- 00:04:C1  Cisco Systems, Inc.
- 00:04:C2  Magnipix, Inc.
- 00:04:C3  Castor Informatique
--00:04:C4  Allen & Health Limited
-+00:04:C4  Allen & Heath Limited
- 00:04:C5  Ase Technologies, Usa
- 00:04:C6  Yamaha Motor Co., Ltd.
- 00:04:C7  Netmount
-@@ -1237,11 +1246,11 @@
- 00:04:C9  Micro Electron Co., Ltd.
- 00:04:CA  Freems Corp.
- 00:04:CB  Tdsoft Communication, Ltd.
--00:04:CC  Peek Traffic B.v.
-+00:04:CC  Peek Traffic B.V.
- 00:04:CD  Informedia Research Group
- 00:04:CE  Patria Ailon
- 00:04:CF  Seagate Technology
--00:04:D0  Softlink S.r.o.
-+00:04:D0  Softlink S.R.O.
- 00:04:D1  Drew Technologies, Inc.
- 00:04:D2  Adcon Telemetry Ag
- 00:04:D3  Toyokeiki Co., Ltd.
-@@ -1259,7 +1268,7 @@
- 00:04:DF  Teracom Telematica Ltda.
- 00:04:E0  Procket Networks
- 00:04:E1  Infinior Microsystems
--00:04:E2  SMC SMC2632W
-+00:04:E2  Smc Networks, Inc.
- 00:04:E3  Accton Technology Corp.
- 00:04:E4  Daeryung Ind., Inc.
- 00:04:E5  Glonet Systems, Inc.
-@@ -1267,7 +1276,7 @@
- 00:04:E7  Lightpointe Communications, Inc
- 00:04:E8  Ier, Inc.
- 00:04:E9  Infiniswitch Corporation
--00:04:EA  Hewlett-packard Company
-+00:04:EA  Hewlett-Packard Company
- 00:04:EB  Paxonet Communications, Inc.
- 00:04:EC  Memobox Sa
- 00:04:ED  Billion Electric Co., Ltd.
-@@ -1276,7 +1285,7 @@
- 00:04:F0  International Computers, Ltd
- 00:04:F1  Wherenet
- 00:04:F2  Circa Communications, Ltd.
--00:04:F3  Fs Forth-systeme Gmbh
-+00:04:F3  Fs Forth-Systeme Gmbh
- 00:04:F4  Infinite Electronics Inc.
- 00:04:F5  Snowshore Networks, Inc.
- 00:04:F6  Amphus
-@@ -1285,7 +1294,7 @@
- 00:04:F9  Xtera Communications, Inc.
- 00:04:FA  Mist Inc.
- 00:04:FB  Commtech, Inc.
--00:04:FC  Stratus Computer (de), Inc.
-+00:04:FC  Stratus Computer (De), Inc.
- 00:04:FD  Japan Control Engineering Co., Ltd.
- 00:04:FE  Pelago Networks
- 00:04:FF  Acronet Co., Ltd.
-@@ -1303,8 +1312,8 @@
- 00:05:0B  Sicom Systems, Inc.
- 00:05:0C  Network Photonics, Inc.
- 00:05:0D  Midstream Technologies, Inc.
--00:05:0E  3ware, Inc.
--00:05:0F  Tanaka S/s Ltd.
-+00:05:0E  3Ware, Inc.
-+00:05:0F  Tanaka S/S Ltd.
- 00:05:10  Infinite Shanghai Communication Terminals Ltd.
- 00:05:11  Complementary Technologies Ltd
- 00:05:12  Meshnetworks, Inc.
-@@ -1315,17 +1324,17 @@
- 00:05:17  Shellcomm, Inc.
- 00:05:18  Jupiters Technology
- 00:05:19  Siemens Building Technologies Ag,
--00:05:1A  3com Europe Ltd.
-+00:05:1A  3Com Europe Ltd.
- 00:05:1B  Magic Control Technology Corporation
- 00:05:1C  Xnet Technology Corp.
- 00:05:1D  Airocon, Inc.
--00:05:1E  Rhapsody Networks
-+00:05:1E  Brocade Communications Systems, Inc.
- 00:05:1F  Taijin Media Co., Ltd.
- 00:05:20  Smartronix, Inc.
- 00:05:21  Control Microsystems
--00:05:22  Lea*d Corporation, Inc.
-+00:05:22  Lea*D Corporation, Inc.
- 00:05:23  Avl List Gmbh
--00:05:24  Btl System (hk) Limited
-+00:05:24  Btl System (Hk) Limited
- 00:05:25  Puretek Industrial Co., Ltd.
- 00:05:26  Ipas Gmbh
- 00:05:27  Sj Tek Co. Ltd
-@@ -1359,7 +1368,7 @@
- 00:05:43  Iq Wireless Gmbh
- 00:05:44  Valley Technologies, Inc.
- 00:05:45  Internet Photonics
--00:05:46  K-solutions Inc.
-+00:05:46  K-Solutions Inc.
- 00:05:47  Starent Networks
- 00:05:48  Disco Corporation
- 00:05:49  Salira Optical Network Systems
-@@ -1369,7 +1378,7 @@
- 00:05:4D  Brans Technologies, Inc.
- 00:05:4E  Philips Components
- 00:05:4F  Private
--00:05:50  Digi-tech Communications Limited
-+00:05:50  Digi-Tech Communications Limited
- 00:05:51  F & S Elektronik Systeme Gmbh
- 00:05:52  Xycotec Computer Gmbh
- 00:05:53  Dvc Company, Inc.
-@@ -1378,25 +1387,25 @@
- 00:05:56  360 Systems
- 00:05:57  Agile Tv Corporation
- 00:05:58  Synchronous, Inc.
--00:05:59  Intracom S.a.
-+00:05:59  Intracom S.A.
- 00:05:5A  Power Dsine Ltd.
- 00:05:5B  Charles Industries, Ltd.
- 00:05:5C  Kowa Company, Ltd.
--00:05:5D  D-Link DWL-650, DWL-650H
-+00:05:5D  D-Link Systems, Inc.
- 00:05:5E  Cisco Systems, Inc.
- 00:05:5F  Cisco Systems, Inc.
--00:05:60  Leader Comm.co., Ltd
-+00:05:60  Leader Comm.Co., Ltd
- 00:05:61  Nac Image Technology, Inc.
- 00:05:62  Digital View Limited
--00:05:63  J-works, Inc.
-+00:05:63  J-Works, Inc.
- 00:05:64  Tsinghua Bitway Co., Ltd.
- 00:05:65  Tailyn Communication Company Ltd.
--00:05:66  Secui.com Corporation
-+00:05:66  Secui.Com Corporation
- 00:05:67  Etymonic Design, Inc.
- 00:05:68  Piltofish Networks Ab
- 00:05:69  Vmware, Inc.
--00:05:6A  Private
--00:05:6B  C.p. Technology Co., Ltd.
-+00:05:6A  Heuft Systemtechnik Gmbh
-+00:05:6B  C.P. Technology Co., Ltd.
- 00:05:6C  Hung Chang Co., Ltd.
- 00:05:6D  Pacific Corporation
- 00:05:6E  National Enhance Technology, Inc.
-@@ -1406,7 +1415,7 @@
- 00:05:72  Deonet Co., Ltd.
- 00:05:73  Cisco Systems, Inc.
- 00:05:74  Cisco Systems, Inc.
--00:05:75  Cds-electronics Bv
-+00:05:75  Cds-Electronics Bv
- 00:05:76  Nsm Technology Ltd.
- 00:05:77  Sm Information & Communication
- 00:05:78  Private
-@@ -1431,7 +1440,7 @@
- 00:05:8B  Ipmental, Inc.
- 00:05:8C  Opentech Inc.
- 00:05:8D  Lynx Photonic Networks, Inc.
--00:05:8E  Ahead Communications System Gmbh
-+00:05:8E  Flextronics International Gmbh & Co. Nfg. Kg
- 00:05:8F  Clcsoft Co.
- 00:05:90  Swissvoice Ltd.
- 00:05:91  Active Silicon Ltd.
-@@ -1441,8 +1450,8 @@
- 00:05:95  Alesis Corporation
- 00:05:96  Genotech Co., Ltd.
- 00:05:97  Eagle Traffic Control Systems
--00:05:98  Cronos S.r.l.
--00:05:99  Pei Electronics, Inc.
-+00:05:98  Cronos S.R.L.
-+00:05:99  Drs Test And Energy Management Or Drs-Tem
- 00:05:9A  Cisco Systems, Inc.
- 00:05:9B  Cisco Systems, Inc.
- 00:05:9C  Kleinknecht Gmbh, Ing. Buero
-@@ -1464,11 +1473,11 @@
- 00:05:AC  Northern Digital, Inc.
- 00:05:AD  Topspin Communications, Inc.
- 00:05:AE  Mediaport Usa
--00:05:AF  Innoscan Computing A/s
-+00:05:AF  Innoscan Computing A/S
- 00:05:B0  Korea Computer Technology Co., Ltd.
- 00:05:B1  Asb Technology Bv
- 00:05:B2  Medison Co., Ltd.
--00:05:B3  Asahi-engineering Co., Ltd.
-+00:05:B3  Asahi-Engineering Co., Ltd.
- 00:05:B4  Aceex Corporation
- 00:05:B5  Broadcom Technologies
- 00:05:B6  Insys Microelectronics Gmbh
-@@ -1482,13 +1491,13 @@
- 00:05:BE  Kongsberg Seatex As
- 00:05:BF  Justezy Technology, Inc.
- 00:05:C0  Digital Network Alacarte Co., Ltd.
--00:05:C1  A-kyung Motion, Inc.
--00:05:C2  Digital Archway, Inc.
-+00:05:C1  A-Kyung Motion, Inc.
-+00:05:C2  Soronti, Inc.
- 00:05:C3  Pacific Instruments, Inc.
- 00:05:C4  Telect, Inc.
- 00:05:C5  Flaga Hf
- 00:05:C6  Triz Communications
--00:05:C7  I/f-com A/s
-+00:05:C7  I/F-Com A/S
- 00:05:C8  Verytech
- 00:05:C9  Lg Innotek
- 00:05:CA  Hitron Technology, Inc.
-@@ -1517,7 +1526,7 @@
- 00:05:E1  Trellis Photonics, Ltd.
- 00:05:E2  Creativ Network Technologies
- 00:05:E3  Lightsand Communications, Inc.
--00:05:E4  Red Lion Controls L.p.
-+00:05:E4  Red Lion Controls L.P.
- 00:05:E5  Renishaw Plc
- 00:05:E6  Egenera, Inc.
- 00:05:E7  Netrake Corp.
-@@ -1543,19 +1552,19 @@
- 00:05:FB  Sharegate, Inc.
- 00:05:FC  Schenck Pegasus Corp.
- 00:05:FD  Packetlight Networks Ltd.
--00:05:FE  Traficon N.v.
-+00:05:FE  Traficon N.V.
- 00:05:FF  Sns Solutions, Inc.
- 00:06:00  Tokyo Electronic Industry Co., Ltd.
- 00:06:01  Otanikeiki Co., Ltd.
- 00:06:02  Cirkitech Electronics Co.
- 00:06:03  Baker Hughes Inc.
--00:06:04  @track Communications, Inc.
-+00:06:04  @Track Communications, Inc.
- 00:06:05  Inncom International, Inc.
- 00:06:06  Rapidwan, Inc.
- 00:06:07  Omni Directional Control Technology Inc.
--00:06:08  At-sky Sas
-+00:06:08  At-Sky Sas
- 00:06:09  Crossport Systems
--00:06:0A  Blue2space
-+00:06:0A  Blue2Space
- 00:06:0B  Paceline Systems Corporation
- 00:06:0C  Melco Industries, Inc.
- 00:06:0D  Wave7 Optics
-@@ -1582,7 +1591,7 @@
- 00:06:22  Chung Fu Chen Yeh Enterprise Corp.
- 00:06:23  Mge Ups Systems France
- 00:06:24  Gentner Communications Corp.
--00:06:25  Linksys WPC11 v2.5, D-Link DCF-650W, Linksys WPC11 v3
-+00:06:25  The Linksys Group, Inc.
- 00:06:26  Mwe Gmbh
- 00:06:27  Uniwide Technologies, Inc.
- 00:06:28  Cisco Systems, Inc.
-@@ -1590,7 +1599,7 @@
- 00:06:2A  Cisco Systems, Inc.
- 00:06:2B  Intraserver Technology
- 00:06:2C  Network Robots, Inc.
--00:06:2D  Touchstar Technologies, L.l.c.
-+00:06:2D  Touchstar Technologies, L.L.C.
- 00:06:2E  Aristos Logic Corp.
- 00:06:2F  Pivotech Systems Inc.
- 00:06:30  Adtranz Sweden
-@@ -1600,8 +1609,8 @@
- 00:06:34  Gte Airfone Inc.
- 00:06:35  Packetair Networks, Inc.
- 00:06:36  Jedai Broadband Networks
--00:06:37  Toptrend-meta Information (shenzhen) Inc.
--00:06:38  Sungjin C&c Co., Ltd.
-+00:06:37  Toptrend-Meta Information (Shenzhen) Inc.
-+00:06:38  Sungjin C&C Co., Ltd.
- 00:06:39  Newtec
- 00:06:3A  Dura Micro, Inc.
- 00:06:3B  Arcturus Networks, Inc.
-@@ -1616,15 +1625,15 @@
- 00:06:44  Neix Inc.
- 00:06:45  Meisei Electric Co. Ltd.
- 00:06:46  Shenzhen Xunbao Network Technology Co Ltd
--00:06:47  Etrali S.a.
-+00:06:47  Etrali S.A.
- 00:06:48  Seedsware, Inc.
- 00:06:49  Quante
--00:06:4A  Honeywell Co., Ltd. (korea)
-+00:06:4A  Honeywell Co., Ltd. (Korea)
- 00:06:4B  Alexon Co., Ltd.
- 00:06:4C  Invicta Networks, Inc.
- 00:06:4D  Sencore
- 00:06:4E  Broad Net Technology Inc.
--00:06:4F  Pro-nets Technology Corporation
-+00:06:4F  Pro-Nets Technology Corporation
- 00:06:50  Tiburon Networks, Inc.
- 00:06:51  Aspen Networks Inc.
- 00:06:52  Cisco Systems, Inc.
-@@ -1634,7 +1643,7 @@
- 00:06:56  Tactel Ab
- 00:06:57  Market Central, Inc.
- 00:06:58  Helmut Fischer Gmbh & Co. Kg
--00:06:59  Eal (apeldoorn) B.v.
-+00:06:59  Eal (Apeldoorn) B.V.
- 00:06:5A  Strix Systems
- 00:06:5B  Dell Computer Corp.
- 00:06:5C  Malachite Technologies, Inc.
-@@ -1654,7 +1663,7 @@
- 00:06:6A  Infinicon Systems, Inc.
- 00:06:6B  Sysmex Corporation
- 00:06:6C  Robinson Corporation
--00:06:6D  Compuprint S.p.a.
-+00:06:6D  Compuprint S.P.A.
- 00:06:6E  Delta Electronics, Inc.
- 00:06:6F  Korea Data Systems
- 00:06:70  Upponetti Oy
-@@ -1668,7 +1677,7 @@
- 00:06:78  Marantz Japan, Inc.
- 00:06:79  Konami Corporation
- 00:06:7A  Jmp Systems
--00:06:7B  Toplink C&c Corporation
-+00:06:7B  Toplink C&C Corporation
- 00:06:7C  Cisco Systems, Inc.
- 00:06:7D  Takasago Ltd.
- 00:06:7E  Wincom Systems, Inc.
-@@ -1683,9 +1692,9 @@
- 00:06:87  Omnitron Systems Technology, Inc.
- 00:06:88  Telways Communication Co., Ltd.
- 00:06:89  Ylez Technologies Pte Ltd
--00:06:8A  Neuronnet Co. Ltd. R&d Center
-+00:06:8A  Neuronnet Co. Ltd. R&D Center
- 00:06:8B  Airrunner Technologies, Inc.
--00:06:8C  3com Corporation
-+00:06:8C  3Com Corporation
- 00:06:8D  Sangate Systems
- 00:06:8E  Hid Corporation
- 00:06:8F  Telemonitor, Inc.
-@@ -1711,12 +1720,12 @@
- 00:06:A3  Bitran Corporation
- 00:06:A4  Innowell Corp.
- 00:06:A5  Pinon Corp.
--00:06:A6  Artistic Licence (uk) Ltd
-+00:06:A6  Artistic Licence (Uk) Ltd
- 00:06:A7  Primarion
- 00:06:A8  Kc Technology, Inc.
- 00:06:A9  Universal Instruments Corp.
- 00:06:AA  Miltope Corporation
--00:06:AB  W-link Systems, Inc.
-+00:06:AB  W-Link Systems, Inc.
- 00:06:AC  Intersoft Co.
- 00:06:AD  Kb Electronics Ltd.
- 00:06:AE  Himachal Futuristic Communications Ltd
-@@ -1727,10 +1736,10 @@
- 00:06:B3  Diagraph Corporation
- 00:06:B4  Vorne Industries, Inc.
- 00:06:B5  Luminent, Inc.
--00:06:B6  Nir-or Israel Ltd.
-+00:06:B6  Nir-Or Israel Ltd.
- 00:06:B7  Telem Gmbh
- 00:06:B8  Bandspeed Pty Ltd
--00:06:B9  A5tek Corp.
-+00:06:B9  A5Tek Corp.
- 00:06:BA  Westwave Communications
- 00:06:BB  Ati Technologies Inc.
- 00:06:BC  Macrolink, Inc.
-@@ -1744,33 +1753,33 @@
- 00:06:C4  Piolink Inc.
- 00:06:C5  Innovi Technologies Limited
- 00:06:C6  Lesswire Ag
--00:06:C7  Rfnet Technologies Pte Ltd (s)
-+00:06:C7  Rfnet Technologies Pte Ltd (S)
- 00:06:C8  Sumitomo Metal Micro Devices, Inc.
- 00:06:C9  Technical Marketing Research, Inc.
--00:06:CA  American Computer & Digital Components, Inc. (acdc)
--00:06:CB  Jotron Electronics A/s
-+00:06:CA  American Computer & Digital Components, Inc. (Acdc)
-+00:06:CB  Jotron Electronics A/S
- 00:06:CC  Jmi Electronics Co., Ltd.
- 00:06:CD  Creoscitex Corporation Ltd.
- 00:06:CE  Dateno
--00:06:CF  Thales Avionics In-flight Systems, Llc
-+00:06:CF  Thales Avionics In-Flight Systems, Llc
- 00:06:D0  Elgar Electronics Corp.
- 00:06:D1  Tahoe Networks, Inc.
- 00:06:D2  Tundra Semiconductor Corp.
--00:06:D3  Alpha Telecom, Inc. U.s.a.
-+00:06:D3  Alpha Telecom, Inc. U.S.A.
- 00:06:D4  Interactive Objects, Inc.
- 00:06:D5  Diamond Systems Corp.
- 00:06:D6  Cisco Systems, Inc.
- 00:06:D7  Cisco Systems, Inc.
- 00:06:D8  Maple Optical Systems
--00:06:D9  Ipm-net S.p.a.
-+00:06:D9  Ipm-Net S.P.A.
- 00:06:DA  Itran Communications Ltd.
- 00:06:DB  Ichips Co., Ltd.
--00:06:DC  Syabas Technology (amquest)
-+00:06:DC  Syabas Technology (Amquest)
- 00:06:DD  At & T Laboratories - Cambridge Ltd
- 00:06:DE  Flash Technology
- 00:06:DF  Aidonic Corporation
- 00:06:E0  Mat Co., Ltd.
--00:06:E1  Techno Trade S.a
-+00:06:E1  Techno Trade S.A
- 00:06:E2  Ceemax Technology Co., Ltd.
- 00:06:E3  Quantitative Imaging Corporation
- 00:06:E4  Citel Technologies Ltd.
-@@ -1779,11 +1788,11 @@
- 00:06:E7  Bit Blitz Communications Inc.
- 00:06:E8  Optical Network Testing, Inc.
- 00:06:E9  Intime Corp.
--00:06:EA  Elzet80 Mikrocomputer Gmbh&co. Kg
-+00:06:EA  Elzet80 Mikrocomputer Gmbh&Co. Kg
- 00:06:EB  Global Data
--00:06:EC  M/a Com Private Radio System Inc.
-+00:06:EC  M/A Com Private Radio System Inc.
- 00:06:ED  Inara Networks
--00:06:EE  Shenyang Neu-era Information & Technology Stock Co., Ltd
-+00:06:EE  Shenyang Neu-Era Information & Technology Stock Co., Ltd
- 00:06:EF  Maxxan Systems, Inc.
- 00:06:F0  Digeo, Inc.
- 00:06:F1  Optillion
-@@ -1793,13 +1802,13 @@
- 00:06:F8  Private
- 00:06:F9  Mitsui Zosen Systems Research Inc.
- 00:06:FA  Ip Square Co, Ltd.
--00:06:FB  Hitachi Koki Co., Ltd.
-+00:06:FB  Hitachi Printing Solutions, Ltd.
- 00:06:FC  Fnet Co., Ltd.
- 00:06:FD  Comjet Information Systems Corp.
- 00:06:FE  Celion Networks, Inc.
- 00:06:FF  Sheba Systems Co., Ltd.
- 00:07:00  Zettamedia Korea
--00:07:01  Racal-datacom
-+00:07:01  Racal-Datacom
- 00:07:02  Varian Medical Systems
- 00:07:03  Csee Transport
- 00:07:05  Endress & Hauser Gmbh & Co
-@@ -1809,9 +1818,9 @@
- 00:07:09  Westerstrand Urfabrik Ab
- 00:07:0A  Unicom Automation Co., Ltd.
- 00:07:0B  Octal, Sa
--00:07:0C  Sva-intrusion.com Co. Ltd.
-+00:07:0C  Sva-Intrusion.Com Co. Ltd.
- 00:07:0D  Cisco Systems Inc.
--00:07:0E  Cisco AIR-PCM352
-+00:07:0E  Cisco Systems Inc.
- 00:07:0F  Fujant, Inc.
- 00:07:10  Adax, Inc.
- 00:07:11  Acterna
-@@ -1825,9 +1834,9 @@
- 00:07:19  Mobiis Co., Ltd.
- 00:07:1A  Finedigital Inc.
- 00:07:1B  Position Technology Inc.
--00:07:1C  At&t Fixed Wireless Services
--00:07:1D  Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.a.
--00:07:1E  Tri-m Engineering / Nupak Dev. Corp.
-+00:07:1C  At&T Fixed Wireless Services
-+00:07:1D  Satelsa Sistemas Y Aplicaciones De Telecomunicaciones, S.A.
-+00:07:1E  Tri-M Engineering / Nupak Dev. Corp.
- 00:07:1F  European Systems Integration
- 00:07:20  Trutzschler Gmbh & Co. Kg
- 00:07:21  Formac Elektronik Gmbh
-@@ -1835,7 +1844,7 @@
- 00:07:23  Elcon Systemtechnik Gmbh
- 00:07:24  Telemax Co., Ltd.
- 00:07:25  Bematech International Corp.
--00:07:27  Zi Corporation (hk) Ltd.
-+00:07:27  Zi Corporation (Hk) Ltd.
- 00:07:28  Neo Telecom
- 00:07:29  Kistler Instrumente Ag
- 00:07:2A  Innovance Networks
-@@ -1848,7 +1857,7 @@
- 00:07:31  Spiricon, Inc.
- 00:07:32  Aaeon Technology Inc.
- 00:07:33  Dancontrol Engineering
--00:07:34  Agile Storage, Inc.
-+00:07:34  Onstor, Inc.
- 00:07:35  Flarion Technologies, Inc.
- 00:07:36  Data Video Technologies Co., Ltd.
- 00:07:37  Soriya Co. Ltd.
-@@ -1858,7 +1867,7 @@
- 00:07:3B  Tenovis Gmbh & Co Kg
- 00:07:3C  Telecom Design
- 00:07:3D  Nanjing Postel Telecommunications Co., Ltd.
--00:07:3E  China Great-wall Computer Shenzhen Co., Ltd.
-+00:07:3E  China Great-Wall Computer Shenzhen Co., Ltd.
- 00:07:3F  Woojyun Systec Co., Ltd.
- 00:07:40  Melco Inc.
- 00:07:41  Sierra Automated Systems
-@@ -1876,8 +1885,8 @@
- 00:07:4D  Zebra Technologies Corp.
- 00:07:4E  Naughty Boy Co., Ltd.
- 00:07:4F  Cisco Systems, Inc.
--00:07:50  Cisco AIR-LMC352
--00:07:51  M.u.t. - Gmbh
-+00:07:50  Cisco Systems, Inc.
-+00:07:51  M.U.T. - Gmbh
- 00:07:52  Rhythm Watch Co., Ltd.
- 00:07:53  Beijing Qxcomm Technology Co., Ltd.
- 00:07:54  Xyterra Computing, Inc.
-@@ -1900,7 +1909,7 @@
- 00:07:65  Jade Quantum Technologies, Inc.
- 00:07:66  Chou Chin Industrial Co., Ltd.
- 00:07:67  Yuxing Electronics Company Limited
--00:07:68  Danfoss A/s
-+00:07:68  Danfoss A/S
- 00:07:69  Italiana Macchi Spa
- 00:07:6A  Nexteye Co., Ltd.
- 00:07:6B  Stralfors Ab
-@@ -1910,7 +1919,7 @@
- 00:07:6F  Synoptics Limited
- 00:07:70  Locusnetworks Corporation
- 00:07:71  Embedded System Corporation
--00:07:72  Shanghai Bell Company Limited
-+00:07:72  Alcatel Shanghai Bell Co., Ltd.
- 00:07:73  Ascom Powerline Communications Ltd.
- 00:07:74  Guangzhou Thinker Technology Co. Ltd.
- 00:07:75  Valence Semiconductor, Inc.
-@@ -1939,12 +1948,12 @@
- 00:07:8D  Netengines Ltd.
- 00:07:8E  Garz & Friche Gmbh
- 00:07:8F  Emkay Innovative Products
--00:07:90  Tri-m Technologies (s) Limited
-+00:07:90  Tri-M Technologies (S) Limited
- 00:07:91  International Data Communications, Inc.
- 00:07:92  Suetron Electronic Gmbh
--00:07:93  Private
-+00:07:93  Shin Satellite Public Company Limited
- 00:07:94  Simple Devices, Inc.
--00:07:95  Elitegroup Computer System Co. (ecs)
-+00:07:95  Elitegroup Computer System Co. (Ecs)
- 00:07:96  Lsi Systems, Inc.
- 00:07:97  Netpower Co., Ltd.
- 00:07:98  Selea Srl
-@@ -1955,24 +1964,24 @@
- 00:07:9D  Musashi Co., Ltd.
- 00:07:9E  Ilinx Co., Ltd.
- 00:07:9F  Action Digital Inc.
--00:07:A0  E-watch Inc.
--00:07:A1  Viasys Critical Care
-+00:07:A0  E-Watch Inc.
-+00:07:A1  Viasys Healthcare Gmbh
- 00:07:A2  Opteon Corporation
- 00:07:A3  Ositis Software, Inc.
- 00:07:A4  Gn Netcom Ltd.
--00:07:A5  Y.d.k Co. Ltd.
-+00:07:A5  Y.D.K Co. Ltd.
- 00:07:A6  Home Automation, Inc.
--00:07:A7  A-z Inc.
-+00:07:A7  A-Z Inc.
- 00:07:A8  Haier Group Technologies Ltd.
- 00:07:A9  Novasonics
- 00:07:AA  Quantum Data Inc.
- 00:07:AC  Eolring
--00:07:AD  Pentacon Gmbh Foto-und Feinwerktechnik
-+00:07:AD  Pentacon Gmbh Foto-Und Feinwerktechnik
- 00:07:AE  Layer N Networks
--00:07:AF  N-tron Corp.
-+00:07:AF  N-Tron Corp.
- 00:07:B0  Office Details, Inc.
- 00:07:B1  Equator Technologies
--00:07:B2  Transaccess S.a.
-+00:07:B2  Transaccess S.A.
- 00:07:B3  Cisco Systems Inc.
- 00:07:B4  Cisco Systems Inc.
- 00:07:B5  Any One Wireless Ltd.
-@@ -1981,7 +1990,7 @@
- 00:07:B8  American Predator Corp.
- 00:07:B9  Ginganet Corporation
- 00:07:BA  Xebeo Communications, Inc.
--00:07:BB  Confluence Networks
-+00:07:BB  Candera Inc.
- 00:07:BC  Identix Inc.
- 00:07:BD  Radionet Ltd.
- 00:07:BE  Datalogic Spa
-@@ -2005,9 +2014,9 @@
- 00:07:D0  Automat Engenharia De Automaoa Ltda.
- 00:07:D1  Spectrum Signal Processing Inc.
- 00:07:D2  Logopak Systeme
--00:07:D3  Stork Digital Imaging B.v.
-+00:07:D3  Stork Digital Imaging B.V.
- 00:07:D4  Zhejiang Yutong Network Communication Co Ltd.
--00:07:D5  3e Technologies Int;., Inc.
-+00:07:D5  3E Technologies Int;., Inc.
- 00:07:D6  Commil Ltd.
- 00:07:D7  Caporis Networks Ag
- 00:07:D8  Hitron Systems Inc.
-@@ -2055,12 +2064,12 @@
- 00:08:02  Compaq Computer Corporation
- 00:08:03  Cos Tron
- 00:08:04  Ica Inc.
--00:08:05  Techno-holon Corporation
-+00:08:05  Techno-Holon Corporation
- 00:08:06  Raonet Systems, Inc.
- 00:08:07  Access Devices Limited
- 00:08:08  Ppt Vision, Inc.
- 00:08:09  Systemonic Ag
--00:08:0A  Espera-werke Gmbh
-+00:08:0A  Espera-Werke Gmbh
- 00:08:0B  Birka Bpa Informationssystem Ab
- 00:08:0C  Vda Elettronica Srl
- 00:08:0D  Toshiba
-@@ -2072,18 +2081,18 @@
- 00:08:13  Diskbank, Inc.
- 00:08:14  Til Technologies
- 00:08:15  Cats Co., Ltd.
--00:08:16  Bluetags A/s
-+00:08:16  Bluetags A/S
- 00:08:17  Emergecore Networks Llc
- 00:08:18  Pixelworks, Inc.
- 00:08:19  Banksys
- 00:08:1A  Sanrad Intelligence Storage Communications (2000) Ltd.
- 00:08:1B  Windigo Systems
--00:08:1C  @pos.com
-+00:08:1C  @Pos.Com
- 00:08:1D  Ipsil, Incorporated
- 00:08:1E  Repeatit Ab
- 00:08:1F  Pou Yuen Tech Corp. Ltd.
- 00:08:20  Cisco Systems Inc.
--00:08:21  Cisco	AIR-PCM352
-+00:08:21  Cisco Systems Inc.
- 00:08:22  Inpro Comm
- 00:08:23  Texa Corp.
- 00:08:24  Promatek Industries Ltd.
-@@ -2104,7 +2113,7 @@
- 00:08:52  Davolink Co. Inc.
- 00:08:53  Schleicher Gmbh & Co. Relaiswerke Kg
- 00:08:54  Netronix, Inc.
--00:08:55  Nasa-goddard Space Flight Center
-+00:08:55  Nasa-Goddard Space Flight Center
- 00:08:56  Gamatronic Electronic Industries Ltd.
- 00:08:57  Polaris Networks, Inc.
- 00:08:58  Novatechnology Inc.
-@@ -2113,18 +2122,18 @@
- 00:08:5B  Hanbit Electronics Co., Ltd.
- 00:08:5C  Shanghai Dare Technologies Co. Ltd.
- 00:08:5D  Aastra
--00:08:5E  Pco Computer Optics Gmbh
--00:08:5F  Picanol N.v.
-+00:08:5E  Pco Ag
-+00:08:5F  Picanol N.V.
- 00:08:60  Lodgenet Entertainment Corp.
- 00:08:61  Softenergy Co., Ltd.
- 00:08:62  Nec Eluminant Technologies, Inc.
- 00:08:63  Entrisphere Inc.
--00:08:64  Fasy S.p.a.
-+00:08:64  Fasy S.P.A.
- 00:08:65  Jascom Co., Ltd
- 00:08:66  Dsx Access Systems, Inc.
- 00:08:67  Uptime Devices
- 00:08:68  Puroptix
--00:08:69  Command-e Technology Co.,ltd.
-+00:08:69  Command-E Technology Co.,Ltd.
- 00:08:6A  Industrie Technik Ips Gmbh
- 00:08:6B  Mipsys
- 00:08:6C  Plasmon Lms
-@@ -2134,33 +2143,33 @@
- 00:08:70  Rasvia Systems, Inc.
- 00:08:71  Northdata Co., Ltd.
- 00:08:72  Sorenson Technologies, Inc.
--00:08:73  Dap Design B.v.
-+00:08:73  Dap Design B.V.
- 00:08:74  Dell Computer Corp.
- 00:08:75  Acorp Electronics Corp.
- 00:08:76  Sdsystem
--00:08:77  Liebert Hiross S.p.a.
-+00:08:77  Liebert Hiross S.P.A.
- 00:08:78  Benchmark Storage Innovations
- 00:08:79  Cem Corporation
- 00:08:7A  Wipotec Gmbh
--00:08:7B  Rtx Telecom A/s
-+00:08:7B  Rtx Telecom A/S
- 00:08:7C  Cisco Systems, Inc.
- 00:08:7D  Cisco Systems Inc.
--00:08:7E  Bon Electro-telecom Inc.
-+00:08:7E  Bon Electro-Telecom Inc.
- 00:08:7F  Spaun Electronic Gmbh & Co. Kg
- 00:08:80  Broadtel Canada Communications Inc.
--00:08:81  Digital Hands Co.,ltd.
-+00:08:81  Digital Hands Co.,Ltd.
- 00:08:82  Sigma Corporation
--00:08:83  Hewlett-packard Company
-+00:08:83  Hewlett-Packard Company
- 00:08:84  Index Braille Ab
- 00:08:85  Ems Dr. Thomas Wuensche
- 00:08:86  Hansung Teliann, Inc.
--00:08:87  Private
-+00:08:87  Maschinenfabrik Reinhausen Gmbh
- 00:08:88  Oullim Information Technology Inc,.
- 00:08:89  Echostar Technologies Corp
--00:08:8A  Minds@work
-+00:08:8A  Minds@Work
- 00:08:8B  Tropic Networks Inc.
- 00:08:8C  Quanta Network Systems Inc.
--00:08:8D  Sigma-links Inc.
-+00:08:8D  Sigma-Links Inc.
- 00:08:8E  Nihon Computer Co., Ltd.
- 00:08:8F  Advanced Digital Technology
- 00:08:90  Avilinks Sa
-@@ -2168,7 +2177,7 @@
- 00:08:92  Em Solutions
- 00:08:93  Private
- 00:08:94  Innovision Multimedia Ltd.
--00:08:95  Private
-+00:08:95  Dirc Technologie Gmbh & Co.Kg
- 00:08:96  Printronix, Inc.
- 00:08:97  Quake Technologies
- 00:08:98  Gigabit Optics Corporation
-@@ -2176,8 +2185,8 @@
- 00:08:9A  Alcatel Microelectronics
- 00:08:9B  Icp Electronics Inc.
- 00:08:9C  Elecs Industry Co., Ltd.
--00:08:9D  Uhd-elektronik
--00:08:9E  Beijing Enter-net Co.ltd
-+00:08:9D  Uhd-Elektronik
-+00:08:9E  Beijing Enter-Net Co.Ltd
- 00:08:9F  Efm Networks
- 00:08:A0  Stotz Feinmesstechnik Gmbh
- 00:08:A1  Cnet Technology Inc.
-@@ -2190,58 +2199,58 @@
- 00:08:A8  Systec Co., Ltd.
- 00:08:A9  Sangsang Technology, Inc.
- 00:08:AA  Karam
--00:08:AB  Enerlinx.com, Inc.
-+00:08:AB  Enerlinx.Com, Inc.
- 00:08:AC  Private
--00:08:AD  Toyo-linx Co., Ltd.
-+00:08:AD  Toyo-Linx Co., Ltd.
- 00:08:AE  Packetfront
- 00:08:AF  Novatec Corporation
- 00:08:B0  Bktel Communications Gmbh
- 00:08:B1  Proquent Systems
--00:08:B2  Shenzhen Compass Technology Development Co.,ltd
-+00:08:B2  Shenzhen Compass Technology Development Co.,Ltd
- 00:08:B3  Fastwel
- 00:08:B4  Syspol
- 00:08:B5  Tai Guen Enterprise Co., Ltd
- 00:08:B6  Routefree, Inc.
- 00:08:B7  Hit Incorporated
--00:08:B8  E.f. Johnson
-+00:08:B8  E.F. Johnson
- 00:08:B9  Kaon Media Co., Ltd.
- 00:08:BA  Erskine Systems Ltd
- 00:08:BB  Netexcell
- 00:08:BC  Ilevo Ab
--00:08:BD  Tepg-us
-+00:08:BD  Tepg-Us
- 00:08:BE  Xenpak Msa Group
- 00:08:BF  Aptus Elektronik Ab
- 00:08:C0  Asa Systems
- 00:08:C1  Avistar Communications Corporation
- 00:08:C2  Cisco Systems
--00:08:C3  Contex A/s
--00:08:C4  Private
-+00:08:C3  Contex A/S
-+00:08:C4  Hikari Co.,Ltd.
- 00:08:C5  Liontech Co., Ltd.
- 00:08:C6  Philips Consumer Communications
- 00:08:C7  Compaq Computer Corporation
- 00:08:C8  Soneticom, Inc.
- 00:08:C9  Technisat Digital Gmbh
--00:08:CA  Twinhan Technology Co.,ltd
-+00:08:CA  Twinhan Technology Co.,Ltd
- 00:08:CB  Zeta Broadband Inc.
- 00:08:CC  Remotec, Inc.
--00:08:CD  With-net Inc
-+00:08:CD  With-Net Inc
- 00:08:CE  Private
- 00:08:CF  Nippon Koei Power Systems Co., Ltd.
- 00:08:D0  Musashi Engineering Co., Ltd.
- 00:08:D1  Karel Inc.
- 00:08:D2  Zoom Networks Inc.
--00:08:D3  Hercules Technologies S.a.
-+00:08:D3  Hercules Technologies S.A.
- 00:08:D4  Ineoquest Technologies, Inc
- 00:08:D5  Vanguard Managed Solutions
- 00:08:D6  Hassnet Inc.
- 00:08:D7  How Corporation
- 00:08:D8  Dowkey Microwave
--00:08:D9  Mitadenshi Co.,ltd
-+00:08:D9  Mitadenshi Co.,Ltd
- 00:08:DA  Sofaware Technologies Ltd.
- 00:08:DB  Corrigent Systems
- 00:08:DC  Wiznet
- 00:08:DD  Telena Communications, Inc.
--00:08:DE  3up Systems
-+00:08:DE  3Up Systems
- 00:08:DF  Alistel Inc.
- 00:08:E0  Ato Technology Ltd.
- 00:08:E1  Barix Ag
-@@ -2250,31 +2259,31 @@
- 00:08:E4  Envenergy Inc
- 00:08:E5  Idk Corporation
- 00:08:E6  Littlefeet
--00:08:E7  Shi Controlsystems,ltd.
-+00:08:E7  Shi Controlsystems,Ltd.
- 00:08:E8  Excel Master Ltd.
- 00:08:E9  Nextgig
- 00:08:EA  Motion Control Engineering, Inc
--00:08:EB  Romwin Co.,ltd.
-+00:08:EB  Romwin Co.,Ltd.
- 00:08:EC  Zonu, Inc.
--00:08:ED  St&t Instrument Corp.
-+00:08:ED  St&T Instrument Corp.
- 00:08:EE  Logic Product Development
--00:08:EF  Dibal,s.a.
-+00:08:EF  Dibal,S.A.
- 00:08:F0  Next Generation Systems, Inc.
- 00:08:F1  Voltaire
--00:08:F2  Private
-+00:08:F2  C&S Technology
- 00:08:F3  Wany
- 00:08:F4  Bluetake Technology Co., Ltd.
--00:08:F5  Yestechnology Co.,ltd.
--00:08:F6  Sumitomo Electric Hightechs.co.,ltd.
--00:08:F7  Hitachi Ltd, Semiconductor &amp; Integrated Circuits Gr
-+00:08:F5  Yestechnology Co.,Ltd.
-+00:08:F6  Sumitomo Electric Hightechs.Co.,Ltd.
-+00:08:F7  Hitachi Ltd, Semiconductor &Amp; Integrated Circuits Gr
- 00:08:F8  Guardall Ltd
- 00:08:F9  Padcom, Inc.
--00:08:FA  Karl E.brinkmann Gmbh
--00:08:FB  Private
-+00:08:FA  Karl E.Brinkmann Gmbh
-+00:08:FB  Sonosite, Inc.
- 00:08:FC  Gigaphoton Inc.
- 00:08:FD  Bluekorea Co., Ltd.
--00:08:FE  Private
--00:08:FF  Trilogy Broadcast (holdings) Ltd
-+00:08:FE  Unik C&C Co.,Ltd.
-+00:08:FF  Trilogy Broadcast (Holdings) Ltd
- 00:09:00  Tmt
- 00:09:01  Shenzhen Shixuntong Information & Technoligy Co
- 00:09:02  Redline Communications Inc.
-@@ -2284,13 +2293,13 @@
- 00:09:06  Esteem Networks
- 00:09:07  Chrysalis Development
- 00:09:08  Vtech Technology Corp.
--00:09:09  Telenor Connect A/s
-+00:09:09  Telenor Connect A/S
- 00:09:0A  Snedfar Technology Co., Ltd.
- 00:09:0B  Mtl  Instruments Plc
- 00:09:0C  Mayekawa Mfg. Co. Ltd.
--00:09:0D  Private
-+00:09:0D  Leader Electronics Corp.
- 00:09:0E  Helix Technology Inc.
--00:09:0F  Private
-+00:09:0F  Fortinet Inc.
- 00:09:10  Simple Access Inc.
- 00:09:11  Cisco Systems
- 00:09:12  Cisco Systems
-@@ -2299,50 +2308,50 @@
- 00:09:15  Cas Corp.
- 00:09:16  Listman Home Technologies, Inc.
- 00:09:17  Wem Technology Inc
--00:09:18  Samsung Techwin Co.,ltd
-+00:09:18  Samsung Techwin Co.,Ltd
- 00:09:19  Mds Gateways
- 00:09:1A  Macat Optics & Electronics Co., Ltd.
- 00:09:1B  Digital Generation Inc.
- 00:09:1C  Cachevision, Inc
- 00:09:1D  Proteam Computer Corporation
- 00:09:1E  Firstech Technology Corp.
--00:09:1F  A&amp;d Co., Ltd.
--00:09:20  Private
-+00:09:1F  A&Amp;D Co., Ltd.
-+00:09:20  Epox Computer Co.,Ltd.
- 00:09:21  Planmeca Oy
- 00:09:22  Touchless Sensor Technology Ag
- 00:09:23  Heaman System Co., Ltd
- 00:09:24  Telebau Gmbh
- 00:09:25  Vsn Systemen Bv
- 00:09:26  Yoda Communications, Inc.
--00:09:27  Toyokeiki Co.,ltd.
-+00:09:27  Toyokeiki Co.,Ltd.
- 00:09:28  Telecore Inc
--00:09:29  Sanyo Industries (uk) Limited
--00:09:2A  Mytecs Co.,ltd.
-+00:09:29  Sanyo Industries (Uk) Limited
-+00:09:2A  Mytecs Co.,Ltd.
- 00:09:2B  Iqstor Networks, Inc.
- 00:09:2C  Hitpoint Inc.
- 00:09:2D  High Tech Computer, Corp.
--00:09:2E  B&tech System Inc.
-+00:09:2E  B&Tech System Inc.
- 00:09:2F  Akom Technology Corporation
- 00:09:30  Aeroconcierge Inc.
- 00:09:31  Future Internet, Inc.
- 00:09:32  Omnilux
- 00:09:33  Optovalley Co. Ltd.
--00:09:34  Dream-multimedia-tv Gmbh
-+00:09:34  Dream-Multimedia-Tv Gmbh
- 00:09:35  Sandvine Incorporated
--00:09:36  Ipetronik Gmbh & Co.kg
-+00:09:36  Ipetronik Gmbh & Co.Kg
- 00:09:37  Inventec Appliance Corp
- 00:09:38  Allot Communications
--00:09:39  Shibasoku Co.,ltd.
-+00:09:39  Shibasoku Co.,Ltd.
- 00:09:3A  Molex Fiber Optics
- 00:09:3B  Hyundai Networks Inc.
--00:09:3C  Jacques Technologies P/l
--00:09:3D  Private
--00:09:3E  C&i Technologies
--00:09:3F  Double-win Enterpirse Co., Ltd
-+00:09:3C  Jacques Technologies P/L
-+00:09:3D  Newisys,Inc.
-+00:09:3E  C&I Technologies
-+00:09:3F  Double-Win Enterpirse Co., Ltd
- 00:09:40  Agfeo Gmbh & Co. Kg
--00:09:41  Allied Telesis K.k.
-+00:09:41  Allied Telesis K.K.
- 00:09:42  Cresco, Ltd.
--00:09:43  Cisco	AIR-LMC352
-+00:09:43  Cisco Systems
- 00:09:44  Cisco Systems
- 00:09:45  Palmmicro Communications Inc
- 00:09:46  Cluster Labs Gmbh
-@@ -2351,31 +2360,31 @@
- 00:09:49  Glyph Technologies Inc.
- 00:09:4A  Homenet Communications
- 00:09:4B  Fillfactory Nv
--00:09:4C  Communication Weaver Co.,ltd.
-+00:09:4C  Communication Weaver Co.,Ltd.
- 00:09:4D  Braintree Communications Pty Ltd
- 00:09:4E  Bartech Systems International, Inc
--00:09:4F  Private
-+00:09:4F  Elmegt Gmbh & Co. Kg
- 00:09:50  Independent Storage Corporation
--00:09:51  Private
-+00:09:51  Apogee Instruments, Inc
- 00:09:52  Auerswald Gmbh & Co. Kg
--00:09:53  Linkage System Integration Co.ltd.
-+00:09:53  Linkage System Integration Co.Ltd.
- 00:09:54  Amit Spol. S. R. O.
- 00:09:55  Young Generation International Corp.
--00:09:56  Network Systems Group, Ltd. (nsg)
-+00:09:56  Network Systems Group, Ltd. (Nsg)
- 00:09:57  Supercaller, Inc.
--00:09:58  Intelnet S.a.
-+00:09:58  Intelnet S.A.
- 00:09:59  Sitecsoft
- 00:09:5A  Racewood Technology
--00:09:5B  Netgear MA701, MA401RA
--00:09:5C  Private
-+00:09:5B  Netgear, Inc.
-+00:09:5C  Philips Medical Systems - Cardiac And Monitoring Systems (Cm
- 00:09:5D  Dialogue Technology Corp.
- 00:09:5E  Masstech Group Inc.
- 00:09:5F  Telebyte, Inc.
- 00:09:60  Yozan Inc.
- 00:09:61  Switchgear And Instrumentation Ltd
- 00:09:62  Filetrac As
--00:09:63  Private
--00:09:64  Hi-techniques
-+00:09:63  Dominion Lasercom Inc.
-+00:09:64  Hi-Techniques
- 00:09:65  Private
- 00:09:66  Thales Navigation
- 00:09:67  Tachyon, Inc
-@@ -2386,23 +2395,23 @@
- 00:09:6C  Imedia Semiconductor Corp.
- 00:09:6D  Powernet Technologies Corp.
- 00:09:6E  Giant Electronics Ltd.
--00:09:6F  Beijing Zhongqing Elegant Tech. Corp.,limited
-+00:09:6F  Beijing Zhongqing Elegant Tech. Corp.,Limited
- 00:09:70  Vibration Research Corporation
- 00:09:71  Time Management, Inc.
--00:09:72  Securebase,inc
-+00:09:72  Securebase,Inc
- 00:09:73  Lenten Technology Co., Ltd.
- 00:09:74  Innopia Technologies, Inc.
- 00:09:75  Fsona Communications Corporation
--00:09:76  Private
-+00:09:76  Datasoft Isdn Systems Gmbh
- 00:09:77  Brunner Elektronik Ag
- 00:09:78  Aiji System Co., Ltd.
- 00:09:79  Advanced Television Systems Committee, Inc.
- 00:09:7A  Louis Design Labs.
- 00:09:7B  Cisco Systems
--00:09:7C  Cisco	AIR-LMC352
-+00:09:7C  Cisco Systems
- 00:09:7D  Secwell Networks Oy
- 00:09:7E  Imi Technology Co., Ltd
--00:09:7F  Private
-+00:09:7F  Vsecure 2000 Ltd.
- 00:09:80  Power Zenith Inc.
- 00:09:81  Newport Networks
- 00:09:82  Loewe Opta Gmbh
-@@ -2410,31 +2419,31 @@
- 00:09:84  Mycasa Network Inc.
- 00:09:85  Auto Telecom Company
- 00:09:86  Metalink Ltd.
--00:09:87  Nishi Nippon Electric Wire & Cable Co.,ltd.
-+00:09:87  Nishi Nippon Electric Wire & Cable Co.,Ltd.
- 00:09:88  Nudian Electron Co., Ltd.
- 00:09:89  Vividlogic Inc.
- 00:09:8A  Equallogic Inc
- 00:09:8B  Entropic Communications, Inc.
- 00:09:8C  Possio Ab
--00:09:8D  Dct Ltd (digital Communication Technologies Ltd)
-+00:09:8D  Dct Ltd (Digital Communication Technologies Ltd)
- 00:09:8E  Ipcas Gmbh
- 00:09:8F  Cetacean Networks
- 00:09:90  Acksys Communications & Systems
- 00:09:91  Ge Fanuc Automation Manufacturing, Inc.
--00:09:92  Interepoch Technology,inc.
-+00:09:92  Interepoch Technology,Inc.
- 00:09:93  Visteon Corporation
- 00:09:94  Cronyx Engineering
- 00:09:95  Castle Technology Ltd
- 00:09:96  Rdi
- 00:09:97  Nortel Networks
--00:09:98  Private
-+00:09:98  Capinfo Company Limited
- 00:09:99  Cp Georges Renault
- 00:09:9A  Elmo Company, Limited
- 00:09:9B  Western Telematic Inc.
- 00:09:9C  Naval Research Laboratory
- 00:09:9D  Haliplex Communications
- 00:09:9E  Testech, Inc.
--00:09:9F  Private
-+00:09:9F  Videx Inc.
- 00:09:A0  Microtechno Corporation
- 00:09:A1  Telewise Communications, Inc.
- 00:09:A2  Interface Co., Ltd.
-@@ -2442,33 +2451,33 @@
- 00:09:A4  Hartec Corporation
- 00:09:A5  Hansung Eletronic Industries Development Co., Ltd
- 00:09:A6  Ignis Optics, Inc.
--00:09:A7  Bang & Olufsen A/s
-+00:09:A7  Bang & Olufsen A/S
- 00:09:A8  Eastmode Pte Ltd
- 00:09:A9  Ikanos Communications
- 00:09:AA  Data Comm For Business, Inc.
- 00:09:AB  Netcontrol Oy
- 00:09:AC  Lanvoice
- 00:09:AD  Hyundai Syscomm, Inc.
--00:09:AE  Okano Electric Co.,ltd
--00:09:AF  E-generis
-+00:09:AE  Okano Electric Co.,Ltd
-+00:09:AF  E-Generis
- 00:09:B0  Onkyo Corporation
- 00:09:B1  Kanematsu Electronics, Ltd.
--00:09:B2  L&f Inc.
-+00:09:B2  L&F Inc.
- 00:09:B3  Mcm Systems Ltd
- 00:09:B4  Kisan Telecom Co., Ltd.
--00:09:B5  3j Tech. Co., Ltd.
-+00:09:B5  3J Tech. Co., Ltd.
- 00:09:B6  Cisco Systems
- 00:09:B7  Cisco Systems
- 00:09:B8  Entise Systems
- 00:09:B9  Action Imaging Solutions
- 00:09:BA  Maku Informationstechik Gmbh
- 00:09:BB  Mathstar, Inc.
--00:09:BC  Private
-+00:09:BC  Digital Safety Technologies Inc.
- 00:09:BD  Epygi Technologies, Ltd.
--00:09:BE  Mamiya-op Co.,ltd.
--00:09:BF  Nintendo Co.,ltd.
--00:09:C0  6wind
--00:09:C1  Proces-data A/s
-+00:09:BE  Mamiya-Op Co.,Ltd.
-+00:09:BF  Nintendo Co.,Ltd.
-+00:09:C0  6Wind
-+00:09:C1  Proces-Data A/S
- 00:09:C2  Private
- 00:09:C3  Netas
- 00:09:C4  Medicore Co., Ltd
-@@ -2477,10 +2486,10 @@
- 00:09:C7  Movistec
- 00:09:C8  Sinagawa Tsushin Keisou Service
- 00:09:C9  Bluewinc Co., Ltd.
--00:09:CA  Imaxnetworks(shenzhen)limited.
-+00:09:CA  Imaxnetworks(Shenzhen)Limited.
- 00:09:CB  Hbrain
- 00:09:CC  Moog Gmbh
--00:09:CD  Hudson Soft Co.,ltd.
-+00:09:CD  Hudson Soft Co.,Ltd.
- 00:09:CE  Spacebridge Semiconductor Corp.
- 00:09:CF  Iad Gmbh
- 00:09:D0  Versatel Networks
-@@ -2492,35 +2501,35 @@
- 00:09:D6  Knc One Gmbh
- 00:09:D7  Dc Security Products
- 00:09:D8  Private
--00:09:D9  Private
-+00:09:D9  Neoscale Systems, Inc
- 00:09:DA  Control Module Inc.
- 00:09:DB  Espace
- 00:09:DC  Galaxis Technology Ag
- 00:09:DD  Mavin Technology Inc.
- 00:09:DE  Samjin Information & Communications Co., Ltd.
--00:09:DF  Vestel Komunikasyon Sanayi Ve Ticaret A.s.
--00:09:E0  Xemics S.a.
-+00:09:DF  Vestel Komunikasyon Sanayi Ve Ticaret A.S.
-+00:09:E0  Xemics S.A.
- 00:09:E1  Gemtek Technology Co., Ltd.
- 00:09:E2  Sinbon Electronics Co., Ltd.
--00:09:E3  Angel Iglesias S.a.
-+00:09:E3  Angel Iglesias S.A.
- 00:09:E4  K Tech Infosystem Inc.
- 00:09:E5  Hottinger Baldwin Messtechnik Gmbh
- 00:09:E6  Cyber Switching Inc.
- 00:09:E7  Adc Techonology
--00:09:E8  Cisco	AIR-LMC352
-+00:09:E8  Cisco Systems
- 00:09:E9  Cisco Systems
- 00:09:EA  Yem Inc.
- 00:09:EB  Humandata Ltd.
- 00:09:EC  Daktronics, Inc.
- 00:09:ED  Cipheroptics
--00:09:EE  Meikyo Electric Co.,ltd
-+00:09:EE  Meikyo Electric Co.,Ltd
- 00:09:EF  Vocera Communications
- 00:09:F0  Shimizu Technology Inc.
- 00:09:F1  Yamaki Electric Corporation
- 00:09:F2  Cohu, Inc., Electronics Division
- 00:09:F3  Well Communication Corp.
- 00:09:F4  Alcon Laboratories, Inc.
--00:09:F5  Emerson Network Power Co.,ltd
-+00:09:F5  Emerson Network Power Co.,Ltd
- 00:09:F6  Shenzhen Eastern Digital Tech Ltd.
- 00:09:F7  Sed, A Division Of Calian
- 00:09:F8  Unimo Technology Co., Ltd.
-@@ -2529,17 +2538,17 @@
- 00:09:FC  Ipflex Inc.
- 00:09:FD  Ubinetics Limited
- 00:09:FE  Daisy Technologies, Inc.
--00:09:FF  X.net 2000 Gmbh
-+00:09:FF  X.Net 2000 Gmbh
- 00:0A:00  Mediatek Corp.
- 00:0A:01  Sohoware, Inc.
- 00:0A:02  Annso Co., Ltd.
--00:0A:03  Endesa Servicios, S.l.
--00:0A:04  3com Europe Ltd
-+00:0A:03  Endesa Servicios, S.L.
-+00:0A:04  3Com Europe Ltd
- 00:0A:05  Widax Corp.
- 00:0A:06  Teledex Llc
--00:0A:07  Beijing Comsys Technologies Co.,ltd.
-+00:0A:07  Webwayone Ltd
- 00:0A:08  Alpine Electronics, Inc.
--00:0A:09  Private
-+00:0A:09  Taracom Integrated Products, Inc.
- 00:0A:0A  Sunix Co., Ltd.
- 00:0A:0B  Sealevel Systems, Inc.
- 00:0A:0C  Scientific Research Corporation
-@@ -2550,7 +2559,7 @@
- 00:0A:11  Expet Technologies, Inc
- 00:0A:12  Azylex Technology, Inc
- 00:0A:13  Silent Witness
--00:0A:14  Teco A.s.
-+00:0A:14  Teco A.S.
- 00:0A:15  Silicon Data, Inc
- 00:0A:16  Lassen Research
- 00:0A:17  Nestar Communications, Inc
-@@ -2560,7 +2569,7 @@
- 00:0A:1B  Stream Labs
- 00:0A:1C  Bridge Information Co., Ltd.
- 00:0A:1D  Optical Communications Products Inc.
--00:0A:1E  Red-m (communications) Limited
-+00:0A:1E  Red-M (Communications) Limited
- 00:0A:1F  Art Ware Telecommunication Co., Ltd.
- 00:0A:20  Sva Networks, Inc.
- 00:0A:21  Integra Telecom Co. Ltd
-@@ -2568,17 +2577,17 @@
- 00:0A:23  Parama Networks Inc
- 00:0A:24  Octave Communications
- 00:0A:25  Ceragon Networks
--00:0A:26  Private
-+00:0A:26  Ceia S.P.A.
- 00:0A:27  Apple Computer, Inc.
--00:0A:28  Motorola Personal Communications Sector
-+00:0A:28  Motorola
- 00:0A:29  Pan Dacom Networking Ag
- 00:0A:2A  Qsi Systems Inc.
- 00:0A:2B  Etherstuff
- 00:0A:2C  Active Tchnology Corporation
- 00:0A:2D  Private
- 00:0A:2E  Maple Networks Co., Ltd
--00:0A:2F  Private
--00:0A:30  Johnson Controls-asg
-+00:0A:2F  Artnix Inc.
-+00:0A:30  Johnson Controls-Asg
- 00:0A:31  Hcv Wireless
- 00:0A:32  Xsido Corporation
- 00:0A:33  Sierra Logic, Inc.
-@@ -2587,19 +2596,19 @@
- 00:0A:36  Synelec Telecom Multimedia
- 00:0A:37  Procera Networks, Inc.
- 00:0A:38  Netlock Technologies, Inc.
--00:0A:39  Private
--00:0A:3A  J-three International Holding Co., Ltd.
-+00:0A:39  Lopa Information Technology
-+00:0A:3A  J-Three International Holding Co., Ltd.
- 00:0A:3B  Gct Semiconductor, Inc
- 00:0A:3C  Enerpoint Ltd.
--00:0A:3D  Elo Sistemas Eletronicos S.a.
-+00:0A:3D  Elo Sistemas Eletronicos S.A.
- 00:0A:3E  Eads Telecom
- 00:0A:3F  Data East Corporation
- 00:0A:40  Crown Audio
--00:0A:41  Cisco	AIR-PCM352
-+00:0A:41  Cisco Systems
- 00:0A:42  Cisco Systems
- 00:0A:43  Chunghwa Telecom Co., Ltd.
- 00:0A:44  Avery Dennison Deutschland Gmbh
--00:0A:45  Audio-technica Corp.
-+00:0A:45  Audio-Technica Corp.
- 00:0A:46  Aro Controls Sas
- 00:0A:47  Allied Vision Technologies
- 00:0A:48  Albatron Technology
-@@ -2617,26 +2626,26 @@
- 00:0A:54  Laguna Hills, Inc.
- 00:0A:55  Markem Corporation
- 00:0A:56  Hitachi Maxell Ltd.
--00:0A:57  Hewlett-packard Company - Standards
--00:0A:58  Ingenieur-buero Freyer & Siegel
-+00:0A:57  Hewlett-Packard Company - Standards
-+00:0A:58  Ingenieur-Buero Freyer & Siegel
- 00:0A:59  Hw Server
--00:0A:5A  Greennet Technologies Co.,ltd.
--00:0A:5B  Power-one As
--00:0A:5C  Carel S.p.a.
--00:0A:5D  Puc Founder (msc) Berhad
--00:0A:5E  3com Corporation
-+00:0A:5A  Greennet Technologies Co.,Ltd.
-+00:0A:5B  Power-One As
-+00:0A:5C  Carel S.P.A.
-+00:0A:5D  Puc Founder (Msc) Berhad
-+00:0A:5E  3Com Corporation
- 00:0A:5F  Almedio Inc.
- 00:0A:60  Autostar Technology Pte Ltd
- 00:0A:61  Cellinx Systems Inc.
- 00:0A:62  Crinis Networks, Inc.
- 00:0A:63  Dhd Gmbh
- 00:0A:64  Eracom Technologies
--00:0A:65  Gentechmedia.co.,ltd.
--00:0A:66  Mitsubishi Electric System & Service Co.,ltd.
-+00:0A:65  Gentechmedia.Co.,Ltd.
-+00:0A:66  Mitsubishi Electric System & Service Co.,Ltd.
- 00:0A:67  Ongcorp
- 00:0A:68  Solarflare Communications, Inc.
- 00:0A:69  Sunny Bell Technology Co., Ltd.
--00:0A:6A  Svm Microwaves S.r.o.
-+00:0A:6A  Svm Microwaves S.R.O.
- 00:0A:6B  Tadiran Telecom Business Systems Ltd
- 00:0A:6C  Walchem Corporation
- 00:0A:6D  Eks Elektronikservice Gmbh
-@@ -2648,27 +2657,27 @@
- 00:0A:73  Scientific Atlanta
- 00:0A:74  Manticom Networks Inc.
- 00:0A:75  Cat Electronics
--00:0A:76  Beida Jade Bird Huaguang Technology Co.,ltd
-+00:0A:76  Beida Jade Bird Huaguang Technology Co.,Ltd
- 00:0A:77  Bluewire Technologies Llc
- 00:0A:78  Olitec
--00:0A:79  Corega K.k.
-+00:0A:79  Corega K.K.
- 00:0A:7A  Kyoritsu Electric Co., Ltd.
--00:0A:7B  Private
-+00:0A:7B  Cornelius Consult
- 00:0A:7C  Tecton Ltd
- 00:0A:7D  Valo, Inc.
- 00:0A:7E  The Advantage Group
- 00:0A:7F  Teradon Industries, Inc
- 00:0A:80  Telkonet Inc.
--00:0A:81  Teima Audiotex S.l.
--00:0A:82  Tatsuta System Electronics Co.,ltd.
--00:0A:83  Salto Systems S.l.
-+00:0A:81  Teima Audiotex S.L.
-+00:0A:82  Tatsuta System Electronics Co.,Ltd.
-+00:0A:83  Salto Systems S.L.
- 00:0A:84  Rainsun Enterprise Co., Ltd.
--00:0A:85  Plat'c2,inc
-+00:0A:85  Plat'c2,Inc
- 00:0A:86  Lenze
- 00:0A:87  Integrated Micromachines Inc.
--00:0A:88  Incypher S.a.
-+00:0A:88  Incypher S.A.
- 00:0A:89  Creval Systems, Inc.
--00:0A:8A  Cisco	AIR-PCM352
-+00:0A:8A  Cisco Systems
- 00:0A:8B  Cisco Systems
- 00:0A:8C  Guardware Systems Ltd.
- 00:0A:8D  Eurotherm Limited
-@@ -2682,19 +2691,19 @@
- 00:0A:95  Apple Computer, Inc.
- 00:0A:96  Mewtel Technology Inc.
- 00:0A:97  Sonicblue, Inc.
--00:0A:98  M+f Gwinner Gmbh & Co
-+00:0A:98  M+F Gwinner Gmbh & Co
- 00:0A:99  Dataradio Inc.
- 00:0A:9A  Aiptek International Inc
- 00:0A:9B  Towa Meccs Corporation
- 00:0A:9C  Server Technology, Inc.
- 00:0A:9D  King Young Technology Co. Ltd.
- 00:0A:9E  Broadweb Corportation
--00:0A:9F  Private
-+00:0A:9F  Pannaway Technologies, Inc.
- 00:0A:A0  Cedar Point Communications
- 00:0A:A1  V V S Limited
- 00:0A:A2  Systek Inc.
--00:0A:A3  Shimafuji Electric Co.,ltd.
--00:0A:A4  Shanghai Surveillance Technology Co,ltd
-+00:0A:A3  Shimafuji Electric Co.,Ltd.
-+00:0A:A4  Shanghai Surveillance Technology Co,Ltd
- 00:0A:A5  Maxlink Industries Limited
- 00:0A:A6  Hochiki Corporation
- 00:0A:A7  Fei Company
-@@ -2705,7 +2714,7 @@
- 00:0A:AC  Terratec Electronic Gmbh
- 00:0A:AD  Stargames Corporation
- 00:0A:AE  Rosemount Process Analytical
--00:0A:AF  Private
-+00:0A:AF  Pipal Systems
- 00:0A:B0  Loytec Electronics Gmbh
- 00:0A:B1  Genetec Corporation
- 00:0A:B2  Fresnel Wireless Systems
-@@ -2719,26 +2728,26 @@
- 00:0A:BA  Arcon Technology Limited
- 00:0A:BB  Taiwan Secom Co,. Ltd
- 00:0A:BC  Seabridge Ltd.
--00:0A:BD  Private
-+00:0A:BD  Rupprecht & Patashnick Co.
- 00:0A:BE  Opnet Technologies Co., Ltd.
- 00:0A:BF  Hirota Ss
- 00:0A:C0  Fuyoh Video Industry Co., Ltd.
- 00:0A:C1  Futuretel
--00:0A:C2  Fiberhome Telecommunication Technologies Co.,ltd
-+00:0A:C2  Fiberhome Telecommunication Technologies Co.,Ltd
- 00:0A:C3  Em Technics Co., Ltd.
- 00:0A:C4  Daewoo Teletech Co., Ltd
- 00:0A:C5  Color Kinetics
- 00:0A:C6  Private
- 00:0A:C7  Unication Group
--00:0A:C8  Zpsys Co.,ltd. (planning&management)
-+00:0A:C8  Zpsys Co.,Ltd. (Planning&Management)
- 00:0A:C9  Zambeel Inc
--00:0A:CA  Yokoyama Shokai Co.,ltd.
-+00:0A:CA  Yokoyama Shokai Co.,Ltd.
- 00:0A:CB  Xpak Msa Group
- 00:0A:CC  Winnow Networks, Inc.
- 00:0A:CD  Sunrich Technology Limited
- 00:0A:CE  Radiantech, Inc.
- 00:0A:CF  Provideo Multimedia Co. Ltd.
--00:0A:D0  Niigata Develoment Center,  F.i.t. Co., Ltd.
-+00:0A:D0  Niigata Develoment Center,  F.I.T. Co., Ltd.
- 00:0A:D1  Mws
- 00:0A:D2  Jepico Corporation
- 00:0A:D3  Initech Co., Ltd
-@@ -2760,17 +2769,17 @@
- 00:0A:E3  Yang Mei Technology Co., Ltd
- 00:0A:E4  Wistron Corp.
- 00:0A:E5  Scottcare Corporation
--00:0A:E6  Elitegroup Computer System Co. (ecs)
--00:0A:E7  Eliop S.a.
-+00:0A:E6  Elitegroup Computer System Co. (Ecs)
-+00:0A:E7  Eliop S.A.
- 00:0A:E8  Cathay Roxus Information Technology Co. Ltd
- 00:0A:E9  Airvast Technology Inc.
--00:0A:EA  Adam Elektronik Ltd.sti.
--00:0A:EB  Shenzhen Tp-link Technology Co; Ltd.
-+00:0A:EA  Adam Elektronik Ltd.Sti.
-+00:0A:EB  Shenzhen Tp-Link Technology Co; Ltd.
- 00:0A:EC  Koatsu Gas Kogyo Co., Ltd.
--00:0A:ED  Harting Vending G.m.b.h. & Co Kg
-+00:0A:ED  Harting Vending G.M.B.H. & Co Kg
- 00:0A:EE  Gcd Hard- & Software Gmbh
- 00:0A:EF  Otrum Asa
--00:0A:F0  Shin-oh Electronics Co., Ltd. R&d
-+00:0A:F0  Shin-Oh Electronics Co., Ltd. R&D
- 00:0A:F1  Clarity Design, Inc.
- 00:0A:F2  Neoaxiom Corp.
- 00:0A:F3  Cisco Systems
-@@ -2779,14 +2788,14 @@
- 00:0A:F6  Computer Process Controls
- 00:0A:F7  Broadcom Corp.
- 00:0A:F8  American Telecare Inc.
--00:0A:F9  Private
-+00:0A:F9  Hiconnect, Inc.
- 00:0A:FA  Traverse Technologies Australia
- 00:0A:FB  Ambri Limited
- 00:0A:FC  Core Tec Communications, Llc
- 00:0A:FD  Viking Electronic Services
- 00:0A:FE  Novapal Ltd
- 00:0A:FF  Kilchherr Elektronik Ag
--00:0B:00  Fujian Start Computer Equipment Co.,ltd
-+00:0B:00  Fujian Start Computer Equipment Co.,Ltd
- 00:0B:01  Daiichi Electronics Co., Ltd.
- 00:0B:02  Dallmeier Electronic
- 00:0B:03  Taekwang Industrial Co., Ltd
-@@ -2799,12 +2808,12 @@
- 00:0B:0A  Dbm Optics
- 00:0B:0B  Corrent Corporation
- 00:0B:0C  Agile Systems Inc.
--00:0B:0D  Air2u, Inc.
-+00:0B:0D  Air2U, Inc.
- 00:0B:0E  Trapeze Networks
- 00:0B:0F  Nyquist Industrial Control Bv
--00:0B:10  11wave Technonlogy Co.,ltd
--00:0B:11  Himeji Abc Trading Co.,ltd.
--00:0B:12  Private
-+00:0B:10  11Wave Technonlogy Co.,Ltd
-+00:0B:11  Himeji Abc Trading Co.,Ltd.
-+00:0B:12  Nuri Telecom Co., Ltd.
- 00:0B:13  Zetron Inc
- 00:0B:14  Viewsonic Corporation
- 00:0B:15  Platypus Technology
-@@ -2816,10 +2825,10 @@
- 00:0B:1B  Systronix, Inc.
- 00:0B:1C  Private
- 00:0B:1D  Layerzero Power Systems, Inc.
--00:0B:1E  Kappa Opto-electronics Gmbh
-+00:0B:1E  Kappa Opto-Electronics Gmbh
- 00:0B:1F  I Con Computer Co.
- 00:0B:20  Hirata Corporation
--00:0B:21  G-star Communications Inc.
-+00:0B:21  G-Star Communications Inc.
- 00:0B:22  Environmental Systems And Services
- 00:0B:23  Efficient Networks, Inc.
- 00:0B:24  Airlogic
-@@ -2827,23 +2836,23 @@
- 00:0B:26  Wetek Corporation
- 00:0B:27  Scion Corporation
- 00:0B:28  Quatech Inc.
--00:0B:29  Lg Industrial Systems Co.,ltd.
-+00:0B:29  Lg Industrial Systems Co.,Ltd.
- 00:0B:2A  Howtel Co., Ltd.
- 00:0B:2B  Hostnet Corporation
- 00:0B:2C  Eiki Industrial Co. Ltd.
- 00:0B:2D  Danfoss Inc.
--00:0B:2E  Cal-comp Electronics (thailand) Public Company Limited Taipe
-+00:0B:2E  Cal-Comp Electronics (Thailand) Public Company Limited Taipe
- 00:0B:2F  Bplan Gmbh
--00:0B:30  Beijing Gongye Science & Technology Co.,ltd
-+00:0B:30  Beijing Gongye Science & Technology Co.,Ltd
- 00:0B:31  Yantai Zhiyang Scientific And Technology Industry Co., Ltd
- 00:0B:32  Vormetric, Inc.
- 00:0B:33  Vivato
--00:0B:34  Shanghai Broadband Technologies Co.ltd
-+00:0B:34  Shanghai Broadband Technologies Co.Ltd
- 00:0B:35  Quad Bit System Co., Ltd.
- 00:0B:36  Productivity Systems, Inc.
- 00:0B:37  Manufacture Des Montres Rolex Sa
- 00:0B:38  Knuerr Ag
--00:0B:39  Keisoku Giken Co.,ltd.
-+00:0B:39  Keisoku Giken Co.,Ltd.
- 00:0B:3A  Fortel Dtv, Inc.
- 00:0B:3B  Devolo Ag
- 00:0B:3C  Cygnal Integrated Products, Inc.
-@@ -2859,10 +2868,10 @@
- 00:0B:46  Cisco
- 00:0B:47  Advanced Energy
- 00:0B:48  Sofrel
--00:0B:49  Rf-link System Inc.
--00:0B:4A  Visimetrics (uk) Ltd
-+00:0B:49  Rf-Link System Inc.
-+00:0B:4A  Visimetrics (Uk) Ltd
- 00:0B:4B  Visiowave Sa
--00:0B:4C  Clarion (m) Sdn Bhd
-+00:0B:4C  Clarion (M) Sdn Bhd
- 00:0B:4D  Emuzed
- 00:0B:4E  Vertexrsi Antenna Products Division
- 00:0B:4F  Verifone, Inc.
-@@ -2874,20 +2883,20 @@
- 00:0B:55  Adinstruments
- 00:0B:56  Cybernetics
- 00:0B:57  Silicon Laboratories
--00:0B:58  Astronautics C.a  Ltd
-+00:0B:58  Astronautics C.A  Ltd
- 00:0B:59  Scriptpro, Llc
- 00:0B:5A  Hyperedge
- 00:0B:5B  Rincon Research Corporation
--00:0B:5C  Newtech Co.,ltd
-+00:0B:5C  Newtech Co.,Ltd
- 00:0B:5D  Fujitsu Limited
- 00:0B:5E  Atmava Ltd
- 00:0B:5F  Cisco Systems
- 00:0B:60  Cisco Systems
--00:0B:61  Friedrich L�tze Gmbh &co.
-+00:0B:61  Friedrich L�tze Gmbh &Co.
- 00:0B:62  Ingenieurb�ro Ingo Mohnen
--00:0B:63  Private
-+00:0B:63  Kaleidescape
- 00:0B:64  Kieback & Peter Gmbh & Co Kg
--00:0B:65  Sy.a.c. Srl
-+00:0B:65  Sy.A.C. Srl
- 00:0B:66  Teralink Communications
- 00:0B:67  Topview Technology Corporation
- 00:0B:68  Addvalue Communications Pte Ltd
-@@ -2904,12 +2913,12 @@
- 00:0B:73  Kodeos Communications
- 00:0B:74  Kingwave Technology Co., Ltd.
- 00:0B:75  Iosoft Ltd.
--00:0B:76  Et&t Co. Ltd.
-+00:0B:76  Et&T Co. Ltd.
- 00:0B:77  Cogent Systems, Inc.
- 00:0B:78  Taifatech Inc.
--00:0B:79  X-com, Inc.
--00:0B:7A  Private
--00:0B:7B  Test-um Inc.
-+00:0B:79  X-Com, Inc.
-+00:0B:7A  Wave Science Inc.
-+00:0B:7B  Test-Um Inc.
- 00:0B:7C  Telex Communications
- 00:0B:7D  Solomon Extreme International Ltd.
- 00:0B:7E  Saginomiya Seisakusho Inc.
-@@ -2917,27 +2926,27 @@
- 00:0B:80  Private
- 00:0B:81  Kaparel Corporation
- 00:0B:82  Grandstream Networks, Inc.
--00:0B:83  Datawatt B.v.
-+00:0B:83  Datawatt B.V.
- 00:0B:84  Bodet
--00:0B:85  Black Storm Networks
-+00:0B:85  Airespace, Inc.
- 00:0B:86  Aruba Networks
- 00:0B:87  American Reliance Inc.
- 00:0B:88  Vidisco Ltd.
- 00:0B:89  Top Global Technology, Ltd.
- 00:0B:8A  Miteq Inc.
--00:0B:8B  Kerajet, S.a.
-+00:0B:8B  Kerajet, S.A.
- 00:0B:8C  Flextronics Israel
- 00:0B:8D  Avvio Networks
- 00:0B:8E  Ascent Corporation
--00:0B:8F  Akita Electronics Systems Co.,ltd.
-+00:0B:8F  Akita Electronics Systems Co.,Ltd.
- 00:0B:90  Covaro Networks, Inc.
- 00:0B:91  Aglaia Gesellschaft F�r Bildverarbeitung Und Kommunikation M
--00:0B:92  Ascom Danmark A/s
-+00:0B:92  Ascom Danmark A/S
- 00:0B:93  Barmag Electronic
- 00:0B:94  Digital Monitoring Products, Inc.
- 00:0B:95  Ebet Gaming Systems Pty Ltd
- 00:0B:96  Innotrac Diagnostics Oy
--00:0B:97  Matsushita Electric Industrial Co.,ltd.
-+00:0B:97  Matsushita Electric Industrial Co.,Ltd.
- 00:0B:98  Nicetechvision
- 00:0B:99  Sensable Technologies, Inc.
- 00:0B:9A  Shanghai Ulink Telecom Equipment Co. Ltd.
-@@ -2946,22 +2955,22 @@
- 00:0B:9D  Twinmos Technologies Inc.
- 00:0B:9E  Yasing Technology Corp.
- 00:0B:9F  Neue Elsa Gmbh
--00:0B:A0  T&l Information Inc.
-+00:0B:A0  T&L Information Inc.
- 00:0B:A1  Syscom Ltd.
- 00:0B:A2  Sumitomo Electric Networks, Inc
--00:0B:A3  Siemens Ag, I&s
-+00:0B:A3  Siemens Ag, I&S
- 00:0B:A4  Shiron Satellite Communications Ltd. (1996)
- 00:0B:A5  Quasar Cipta Mandiri, Pt
- 00:0B:A6  Miyakawa Electric Works Ltd.
- 00:0B:A7  Maranti Networks
- 00:0B:A8  Hanback Electronics Co., Ltd.
--00:0B:A9  Private
--00:0B:AA  Aiphone Co.,ltd
--00:0B:AB  Advantech Technology (china) Co., Ltd.
--00:0B:AC  3com Europe Ltd.
--00:0B:AD  Pc-pos Inc.
-+00:0B:A9  Cloudshield Technologies, Inc.
-+00:0B:AA  Aiphone Co.,Ltd
-+00:0B:AB  Advantech Technology (China) Co., Ltd.
-+00:0B:AC  3Com Europe Ltd.
-+00:0B:AD  Pc-Pos Inc.
- 00:0B:AE  Vitals System Inc.
--00:0B:AF  Private
-+00:0B:AF  Wooju Communications Co,.Ltd
- 00:0B:B0  Sysnet Telematica Srl
- 00:0B:B1  Super Star Technology Co., Ltd.
- 00:0B:B2  Smallbig Technology
-@@ -2969,7 +2978,7 @@
- 00:0B:B4  Rdc Semiconductor Inc.,
- 00:0B:B5  Nstor Technologies, Inc.
- 00:0B:B6  Mototech Inc.
--00:0B:B7  Micro Systems Co.,ltd.
-+00:0B:B7  Micro Systems Co.,Ltd.
- 00:0B:B8  Kihoku Electronic Co.
- 00:0B:B9  Imsys Ab
- 00:0B:BA  Harmonic Broadband Access Networks
-@@ -2985,27 +2994,27 @@
- 00:0B:C4  Biotronik Gmbh & Co
- 00:0B:C5  Smc Networks, Inc.
- 00:0B:C6  Isac, Inc.
--00:0B:C7  Icet S.p.a.
-+00:0B:C7  Icet S.P.A.
- 00:0B:C8  Airflow Networks
- 00:0B:C9  Electroline Equipment
- 00:0B:CA  Datavan International Corporation
- 00:0B:CB  Fagor Automation , S. Coop
--00:0B:CC  Jusan, S.a.
--00:0B:CD  Compaq (hp)
--00:0B:CE  Free2move Ab
-+00:0B:CC  Jusan, S.A.
-+00:0B:CD  Compaq (Hp)
-+00:0B:CE  Free2Move Ab
- 00:0B:CF  Agfa Ndt Inc.
- 00:0B:D0  Ximeta Technology Americas Inc.
- 00:0B:D1  Aeronix, Inc.
- 00:0B:D2  Remopro Technology Inc.
--00:0B:D3  Cd3o
--00:0B:D4  Beijing Wise Technology & Science Development Co.ltd
-+00:0B:D3  Cd3O
-+00:0B:D4  Beijing Wise Technology & Science Development Co.Ltd
- 00:0B:D5  Nvergence, Inc.
- 00:0B:D6  Paxton Access Ltd
- 00:0B:D7  Mbb Gelma Gmbh
- 00:0B:D8  Industrial Scientific Corp.
- 00:0B:D9  General Hydrogen
--00:0B:DA  Eyecross Co.,inc.
--00:0B:DB  Esg Pcba Test
-+00:0B:DA  Eyecross Co.,Inc.
-+00:0B:DB  Dell Esg Pcba Test
- 00:0B:DC  Akcp
- 00:0B:DD  Tohoku Ricoh Co., Ltd.
- 00:0B:DE  Private
-@@ -3024,19 +3033,1053 @@
- 00:0B:EB  Systegra Ag
- 00:0B:EC  Nippon Electric Instrument, Inc.
- 00:0B:ED  Elm Inc.
--00:0B:EE  Inc.jet, Incorporated
-+00:0B:EE  Inc.Jet, Incorporated
- 00:0B:EF  Code Corporation
- 00:0B:F0  Motex Products Co., Ltd.
- 00:0B:F1  Lap Laser Applikations
--00:0B:F2  Chih-kan Technology Co., Ltd.
-+00:0B:F2  Chih-Kan Technology Co., Ltd.
- 00:0B:F3  Bae Systems
--00:0C:6E  Silicon Integrated Sys. Corp.
--00:0C:F1  Intel Pro Wireless (Centrino)
--00:10:00  Cable Television Laboraties, Inc.
-+00:0B:F4  Private
-+00:0B:F5  Shanghai Sibo Telecom Technology Co.,Ltd
-+00:0B:F6  Nitgen Co., Ltd
-+00:0B:F7  Nidek Co.,Ltd
-+00:0B:F8  Infinera
-+00:0B:F9  Gemstone Communications, Inc.
-+00:0B:FA  Private
-+00:0B:FB  D-Net International Corporation
-+00:0B:FC  Cisco Systems
-+00:0B:FD  Cisco Systems
-+00:0B:FE  Castel Broadband Limited
-+00:0B:FF  Berkeley Camera Engineering
-+00:0C:00  Beb Industrie-Elektronik Ag
-+00:0C:01  Abatron Ag
-+00:0C:02  Abb Oy
-+00:0C:03  Hdmi Licensing, Llc
-+00:0C:04  Tecnova
-+00:0C:05  Rpa Reserch Co., Ltd.
-+00:0C:06  Nixvue Systems  Pte Ltd
-+00:0C:07  Iftest Ag
-+00:0C:08  Humex Technologies Corp.
-+00:0C:09  Hitachi Ie Systems Co., Ltd
-+00:0C:0A  Guangdong Province Electronic Technology Research Institute
-+00:0C:0B  Broadbus Technologies
-+00:0C:0C  Appro Technology Inc.
-+00:0C:0D  Communications & Power Industries / Satcom Division
-+00:0C:0E  Xtremespectrum, Inc.
-+00:0C:0F  Techno-One Co., Ltd
-+00:0C:10  Pni Corporation
-+00:0C:11  Nippon Dempa Co.,Ltd.
-+00:0C:12  Micro-Optronic-Messtechnik Gmbh
-+00:0C:13  Mediaq
-+00:0C:14  Diagnostic Instruments, Inc.
-+00:0C:15  Cyberpower Systems, Inc.
-+00:0C:16  Concorde Microsystems Inc.
-+00:0C:17  Aja Video Systems Inc
-+00:0C:18  Zenisu Keisoku Inc.
-+00:0C:19  Telio Communications Gmbh
-+00:0C:1A  Quest Technical Solutions Inc.
-+00:0C:1B  Oracom Co, Ltd.
-+00:0C:1C  Microweb Co., Ltd.
-+00:0C:1D  Mettler & Fuchs Ag
-+00:0C:1E  Global Cache
-+00:0C:1F  Glimmerglass Networks
-+00:0C:20  Fi Win, Inc.
-+00:0C:21  Faculty Of Science And Technology, Keio University
-+00:0C:22  Double D Electronics Ltd
-+00:0C:23  Beijing Lanchuan Tech. Co., Ltd.
-+00:0C:24  Private
-+00:0C:25  Allied Telesyn Networks
-+00:0C:26  Weintek Labs. Inc.
-+00:0C:27  Sammy Corporation
-+00:0C:28  Rifatron
-+00:0C:29  Vmware, Inc.
-+00:0C:2A  Octtel Communication Co., Ltd.
-+00:0C:2B  Elias Technology, Inc.
-+00:0C:2C  Enwiser Inc.
-+00:0C:2D  Fullwave Technology Co., Ltd.
-+00:0C:2E  Openet Information Technology(Shenzhen) Co., Ltd.
-+00:0C:2F  Seorimtechnology Co.,Ltd.
-+00:0C:30  Cisco
-+00:0C:31  Cisco
-+00:0C:32  Avionic Design Development Gmbh
-+00:0C:33  Compucase Enterprise Co. Ltd.
-+00:0C:34  Vixen Co., Ltd.
-+00:0C:35  Kavo Dental Gmbh & Co. Kg
-+00:0C:36  Sharp Takaya Electronics Industry Co.,Ltd.
-+00:0C:37  Geomation, Inc.
-+00:0C:38  Telcobridges Inc.
-+00:0C:39  Sentinel Wireless Inc.
-+00:0C:3A  Oxance
-+00:0C:3B  Orion Electric Co., Ltd.
-+00:0C:3C  Mediachorus, Inc.
-+00:0C:3D  Glsystech Co., Ltd.
-+00:0C:3E  Crest Audio
-+00:0C:3F  Cogent Defence & Security Networks,
-+00:0C:40  Altech Controls
-+00:0C:41  The Linksys Group, Inc.
-+00:0C:42  Routerboard.Com
-+00:0C:43  Ralink Technology, Corp.
-+00:0C:44  Automated Interfaces, Inc.
-+00:0C:45  Animation Technologies Inc.
-+00:0C:46  Allied Telesyn Inc.
-+00:0C:47  Sk Teletech(R&D Planning Team)
-+00:0C:48  Qostek Corporation
-+00:0C:49  Dangaard Telecom Rtc Division A/S
-+00:0C:4A  Cygnus Microsystems Private Limited
-+00:0C:4B  Cheops Elektronik
-+00:0C:4C  Arcor Ag&Co.
-+00:0C:4D  Acra Control
-+00:0C:4E  Winbest Technology Co,Lt
-+00:0C:4F  Udtech Japan Corporation
-+00:0C:50  Seagate Technology
-+00:0C:51  Scientific Technologies Inc.
-+00:0C:52  Roll Systems Inc.
-+00:0C:53  Private
-+00:0C:54  Pedestal Networks, Inc
-+00:0C:55  Microlink Communications Inc.
-+00:0C:56  Megatel Computer (1986) Corp.
-+00:0C:57  Mackie Engineering Services Belgium Bvba
-+00:0C:58  M&S Systems
-+00:0C:59  Indyme Electronics, Inc.
-+00:0C:5A  Ibsmm Industrieelektronik Multimedia
-+00:0C:5B  Hanwang Technology Co.,Ltd
-+00:0C:5C  Gtn Systems B.V.
-+00:0C:5D  Chic Technology (China) Corp.
-+00:0C:5E  Private
-+00:0C:5F  Avtec, Inc.
-+00:0C:60  Acm Systems
-+00:0C:61  Ac Tech Corporation Dba Advanced Digital
-+00:0C:62  Abb Automation Technology Products Ab, Control
-+00:0C:63  Zenith Electronics Corporation
-+00:0C:64  X2 Msa Group
-+00:0C:65  Sunin Telecom
-+00:0C:66  Pronto Networks Inc
-+00:0C:67  Oyo Electric Co.,Ltd
-+00:0C:68  Oasis Semiconductor, Inc.
-+00:0C:69  National Radio Astronomy Observatory
-+00:0C:6A  Mbari
-+00:0C:6B  Kurz Industrie-Elektronik Gmbh
-+00:0C:6C  Elgato Systems Llc
-+00:0C:6D  Boc Edwards
-+00:0C:6E  Asustek Computer Inc.
-+00:0C:6F  Amtek System Co.,Ltd.
-+00:0C:70  Acc Gmbh
-+00:0C:71  Wybron, Inc
-+00:0C:72  Tempearl Industrial Co., Ltd.
-+00:0C:73  Telson Electronics Co., Ltd
-+00:0C:74  Rivertec Corporation
-+00:0C:75  Oriental Integrated Electronics. Ltd
-+00:0C:76  Micro-Star International Co., Ltd.
-+00:0C:77  Life Racing Ltd
-+00:0C:78  In-Tech Electronics Limited
-+00:0C:79  Extel Communications P/L
-+00:0C:7A  Datarius Technologies Gmbh
-+00:0C:7B  Alpha Project Co.,Ltd.
-+00:0C:7C  Internet Information Image Inc.
-+00:0C:7D  Teikoku Electric Mfg. Co., Ltd
-+00:0C:7E  Tellium Incorporated
-+00:0C:7F  Synertronixx Gmbh
-+00:0C:80  Opelcomm Inc.
-+00:0C:81  Nulec Industries Pty Ltd
-+00:0C:82  Network Technologies Inc
-+00:0C:83  Logical Solutions
-+00:0C:84  Eazix, Inc.
-+00:0C:85  Cisco Systems
-+00:0C:86  Cisco Systems
-+00:0C:87  Ati
-+00:0C:88  Apache Micro Peripherals, Inc.
-+00:0C:89  Ac Electric Vehicles, Ltd.
-+00:0C:8A  Bose Corporation
-+00:0C:8B  Connect Tech Inc
-+00:0C:8C  Kodicom Co.,Ltd.
-+00:0C:8D  Matrix Vision Gmbh
-+00:0C:8E  Mentor Engineering Inc
-+00:0C:8F  Nergal S.R.L.
-+00:0C:90  Octasic Inc.
-+00:0C:91  Riverhead Networks Inc.
-+00:0C:92  Wolfvision Gmbh
-+00:0C:93  Xeline Co., Ltd.
-+00:0C:94  United Electronic Industries, Inc.
-+00:0C:95  Primenet
-+00:0C:96  Oqo, Inc.
-+00:0C:97  Nv Adb Ttv Technologies Sa
-+00:0C:98  Letek Communications Inc.
-+00:0C:99  Hitel Link Co.,Ltd
-+00:0C:9A  Hitech Electronics Corp.
-+00:0C:9B  Ee Solutions, Inc
-+00:0C:9C  Chongho Information & Communications
-+00:0C:9D  Airwalk Communications, Inc.
-+00:0C:9E  Memorylink Corp.
-+00:0C:9F  Nke Corporation
-+00:0C:A0  Storcase Technology, Inc.
-+00:0C:A1  Sigmacom Co., Ltd.
-+00:0C:A2  Scopus Network Technologies Ltd
-+00:0C:A3  Rancho Technology, Inc.
-+00:0C:A4  Prompttec Product Management Gmbh
-+00:0C:A5  Naman Nz Ltd
-+00:0C:A6  Mintera Corporation
-+00:0C:A7  Metro (Suzhou) Technologies Co., Ltd.
-+00:0C:A8  Garuda Networks Corporation
-+00:0C:A9  Ebtron Inc.
-+00:0C:AA  Cubic Transportation Systems Inc
-+00:0C:AB  Commend International
-+00:0C:AC  Citizen Watch Co., Ltd.
-+00:0C:AD  Btu International
-+00:0C:AE  Ailocom Oy
-+00:0C:AF  Tri Term Co.,Ltd.
-+00:0C:B0  Star Semiconductor Corporation
-+00:0C:B1  Salland Engineering (Europe) Bv
-+00:0C:B2  Safei Co., Ltd.
-+00:0C:B3  Round Co.,Ltd.
-+00:0C:B4  Propagate Networks, Inc
-+00:0C:B5  Premier Technolgies, Inc
-+00:0C:B6  Nanjing Seu Mobile & Internet Technology Co.,Ltd
-+00:0C:B7  Nanjing Huazhuo Electronics Co., Ltd.
-+00:0C:B8  Medion Ag
-+00:0C:B9  Lea
-+00:0C:BA  Jamex
-+00:0C:BB  Iskraemeco
-+00:0C:BC  Iscutum
-+00:0C:BD  Interface Masters, Inc
-+00:0C:BE  Private
-+00:0C:BF  Holy Stone Ent. Co., Ltd.
-+00:0C:C0  Genera Oy
-+00:0C:C1  Cooper Industries Inc.
-+00:0C:C2  Private
-+00:0C:C3  Bewan Systems
-+00:0C:C4  Tiptel Ag
-+00:0C:C5  Nextlink Co., Ltd.
-+00:0C:C6  Ka-Ro Electronics Gmbh
-+00:0C:C7  Intelligent Computer Solutions Inc.
-+00:0C:C8  Integrated Digital Systems, Inc.
-+00:0C:C9  Ilwoo Data & Technology Co.,Ltd
-+00:0C:CA  Hitachi Global Storage Technologies
-+00:0C:CB  Design Combus Ltd
-+00:0C:CC  Bluesoft Ltd.
-+00:0C:CD  Iec - Tc57
-+00:0C:CE  Cisco Systems
-+00:0C:CF  Cisco Systems
-+00:0C:D0  Symetrix
-+00:0C:D1  Sfom Technology Corp.
-+00:0C:D2  Schaffner Emv Ag
-+00:0C:D3  Prettl Elektronik Radeberg Gmbh
-+00:0C:D4  Positron Public Safety Systems Inc.
-+00:0C:D5  Passave Inc.
-+00:0C:D6  Partner Tech
-+00:0C:D7  Nallatech Ltd
-+00:0C:D8  M. K. Juchheim Gmbh & Co
-+00:0C:D9  Itcare Co., Ltd
-+00:0C:DA  Freehand Systems, Inc.
-+00:0C:DB  Foundry Networks
-+00:0C:DC  Becs Technology, Inc
-+00:0C:DD  Aos Technologies Ag
-+00:0C:DE  Abb Stotz-Kontakt Gmbh
-+00:0C:DF  Pulnix America, Inc
-+00:0C:E0  Trek Diagnostics Inc.
-+00:0C:E1  The Open Group
-+00:0C:E2  Rolls-Royce
-+00:0C:E3  Option International N.V.
-+00:0C:E4  Neurocom International, Inc.
-+00:0C:E5  Motorola Bcs
-+00:0C:E6  Meru Networks Inc
-+00:0C:E7  Mediatek Inc.
-+00:0C:E8  Guangzhou Anjubao Co., Ltd
-+00:0C:E9  Bloomberg L.P.
-+00:0C:EA  Aphona Kommunikationssysteme
-+00:0C:EB  Cnmp Networks, Inc.
-+00:0C:EC  Spectracom Corp.
-+00:0C:ED  Real Digital Media
-+00:0C:EE  Q-Networks
-+00:0C:EF  Open Networks Engineering Ltd
-+00:0C:F0  M & N Gmbh
-+00:0C:F1  Intel Corporation
-+00:0C:F2  Gamesa E�lica
-+00:0C:F3  Call Image Sa
-+00:0C:F4  Akatsuki Electric Mfg.Co.,Ltd.
-+00:0C:F5  Infoexpress
-+00:0C:F6  Sitecom Europe Bv
-+00:0C:F7  Nortel Networks
-+00:0C:F8  Nortel Networks
-+00:0C:F9  Itt Flygt Ab
-+00:0C:FA  Digital Systems Corp
-+00:0C:FB  Korea Network Systems
-+00:0C:FC  S2Io Technologies Corp
-+00:0C:FD  Private
-+00:0C:FE  Grand Electronic Co., Ltd
-+00:0C:FF  Mro-Tek Limited
-+00:0D:00  Seaway Networks Inc.
-+00:0D:01  P&E Microcomputer Systems, Inc.
-+00:0D:02  Nec Access Technica,Ltd
-+00:0D:03  Matrics, Inc.
-+00:0D:04  Foxboro Eckardt Development Gmbh
-+00:0D:05  Cybernet Manufacturing Inc.
-+00:0D:06  Compulogic Limited
-+00:0D:07  Calrec Audio Ltd
-+00:0D:08  Abovecable, Inc.
-+00:0D:09  Yuehua(Zhuhai) Electronic Co. Ltd
-+00:0D:0A  Projectiondesign As
-+00:0D:0B  Melco Inc.
-+00:0D:0C  Mdi Security Systems
-+00:0D:0D  Itsupported, Llc
-+00:0D:0E  Inqnet Systems, Inc.
-+00:0D:0F  Finlux Ltd
-+00:0D:10  Embedtronics Oy
-+00:0D:11  Dentsply - Gendex
-+00:0D:12  Axell Corporation
-+00:0D:13  Wilhelm Rutenbeck Gmbh&Co.
-+00:0D:14  Vtech Innovation Lp Dba Advanced American Telephones
-+00:0D:15  Voipac S.R.O.
-+00:0D:16  Uhs Systems Pty Ltd
-+00:0D:17  Turbo Networks Co.Ltd
-+00:0D:18  Sunitec Enterprise Co., Ltd.
-+00:0D:19  Robe Show Lighting
-+00:0D:1A  Mustek System Inc.
-+00:0D:1B  Kyoto Electronics Manufacturing Co., Ltd.
-+00:0D:1C  I2E Telecom
-+00:0D:1D  High-Tek Harness Ent. Co., Ltd.
-+00:0D:1E  Control Techniques
-+00:0D:1F  Av Digital
-+00:0D:20  Asahikasei Technosystem Co.,Ltd.
-+00:0D:21  Wiscore Inc.
-+00:0D:22  Unitronics
-+00:0D:23  Smart Solution, Inc
-+00:0D:24  Sentec E&E Co., Ltd.
-+00:0D:25  Sanden Corporation
-+00:0D:26  Primagraphics Limited
-+00:0D:27  Microplex Printware Ag
-+00:0D:28  Cisco
-+00:0D:29  Cisco
-+00:0D:2A  Scanmatic As
-+00:0D:2B  Racal Instruments
-+00:0D:2C  Patapsco Designs Ltd
-+00:0D:2D  Nct Deutschland Gmbh
-+00:0D:2E  Matsushita Avionics Systems Corporation
-+00:0D:2F  Ain Comm.Tech.Co., Ltd
-+00:0D:30  Icefyre Semiconductor
-+00:0D:31  Compellent Technologies, Inc.
-+00:0D:32  Dispensesource, Inc.
-+00:0D:33  Prediwave Corp.
-+00:0D:34  Shell International Exploration And Production, Inc.
-+00:0D:35  Pac International Ltd
-+00:0D:36  Wu Han Routon Electronic Co., Ltd
-+00:0D:37  Wiplug
-+00:0D:38  Nissin Inc.
-+00:0D:39  Network Electronics
-+00:0D:3A  Microsoft Corp.
-+00:0D:3B  Microelectronics Technology Inc.
-+00:0D:3C  I.Tech Dynamic Ltd
-+00:0D:3D  Private
-+00:0D:3E  Aplux Communications Ltd.
-+00:0D:3F  Vxi Technology
-+00:0D:40  Verint Loronix Video Solutions
-+00:0D:41  Siemens Ag Icm Mp Uc Rd It Klf1
-+00:0D:42  Newbest Development Limited
-+00:0D:43  Drs Tactical Systems Inc.
-+00:0D:44  Private
-+00:0D:45  Tottori Sanyo Electric Co., Ltd.
-+00:0D:46  Eurotherm Drives, Ltd.
-+00:0D:47  Collex
-+00:0D:48  Aewin Technologies Co., Ltd.
-+00:0D:49  Triton Systems Of Delaware, Inc.
-+00:0D:4A  Steag Eta-Optik
-+00:0D:4B  Roku, Llc
-+00:0D:4C  Outline Electronics Ltd.
-+00:0D:4D  Ninelanes
-+00:0D:4E  Ndr Co.,Ltd.
-+00:0D:4F  Kenwood Corporation
-+00:0D:50  Galazar Networks
-+00:0D:51  Divr Systems, Inc.
-+00:0D:52  Comart System
-+00:0D:53  Beijing 5W Communication Corp.
-+00:0D:54  3Com Europe Ltd
-+00:0D:55  Sanycom Technology Co.,Ltd
-+00:0D:56  Dell Pcba Test
-+00:0D:57  Fujitsu I-Network Systems Limited.
-+00:0D:58  Private
-+00:0D:59  Amity Systems, Inc.
-+00:0D:5A  Tiesse Spa
-+00:0D:5B  Smart Empire Investments Limited
-+00:0D:5C  Robert Bosch Gmbh, Vt-Atmo
-+00:0D:5D  Raritan Computer, Inc
-+00:0D:5E  Nec Customtechnica, Ltd.
-+00:0D:5F  Minds Inc
-+00:0D:60  Ibm Corporation
-+00:0D:61  Giga-Byte Technology Co., Ltd.
-+00:0D:62  Funkwerk Dabendorf Gmbh
-+00:0D:63  Dent Instruments, Inc.
-+00:0D:64  Comag Handels Ag
-+00:0D:65  Cisco Systems
-+00:0D:66  Cisco Systems
-+00:0D:67  Belair Networks Inc.
-+00:0D:68  Vinci Systems, Inc.
-+00:0D:69  Tmt&D Corporation
-+00:0D:6A  Redwood Technologies Ltd
-+00:0D:6B  Mita-Teknik A/S
-+00:0D:6C  M-Audio
-+00:0D:6D  K-Tech Devices Corp.
-+00:0D:6E  K-Patents Oy
-+00:0D:6F  Ember Corporation
-+00:0D:70  Datamax Corporation
-+00:0D:71  Boca Systems
-+00:0D:72  2Wire, Inc
-+00:0D:73  Technical Support, Inc.
-+00:0D:74  Sand Network Systems, Inc.
-+00:0D:75  Kobian Pte Ltd - Taiwan Branch
-+00:0D:76  Hokuto Denshi Co,. Ltd.
-+00:0D:77  Falconstor Software
-+00:0D:78  Engineering & Security
-+00:0D:79  Dynamic Solutions Co,.Ltd.
-+00:0D:7A  Digatto Asia Pacific Pte Ltd
-+00:0D:7B  Consensys Computers Inc.
-+00:0D:7C  Codian Ltd
-+00:0D:7D  Afco Systems
-+00:0D:7E  Axiowave Networks, Inc.
-+00:0D:7F  Midas  Communication Technologies Pte Ltd ( Foreign Branch)
-+00:0D:80  Online Development Inc
-+00:0D:81  Pepperl+Fuchs Gmbh
-+00:0D:82  Phs Srl
-+00:0D:83  Sanmina-Sci Hungary  Ltd.
-+00:0D:84  Seodu Inchip, Inc.
-+00:0D:85  Tapwave, Inc.
-+00:0D:86  Huber + Suhner Ag
-+00:0D:87  Elitegroup Computer System Co. (Ecs)
-+00:0D:88  D-Link Corporation
-+00:0D:89  Bils Technology Inc
-+00:0D:8A  Winners Electronics Co., Ltd.
-+00:0D:8B  T&D Corporation
-+00:0D:8C  Shanghai Wedone Digital Ltd. Co.
-+00:0D:8D  Prolinx Communication Gateways, Inc.
-+00:0D:8E  Koden Electronics Co., Ltd.
-+00:0D:8F  King Tsushin Kogyo Co., Ltd.
-+00:0D:90  Factum Electronics Ab
-+00:0D:91  Eclipse (Hq Espana) S.L.
-+00:0D:92  Arima Communication Corporation
-+00:0D:93  Apple Computer
-+00:0D:94  Afar Communications,Inc
-+00:0D:95  Opti-Cell, Inc.
-+00:0D:96  Vtera Technology Inc.
-+00:0D:97  Tropos Networks, Inc.
-+00:0D:98  S.W.A.C. Schmitt-Walter Automation Consult Gmbh
-+00:0D:99  Orbital Sciences Corp.; Launch Systems Group
-+00:0D:9A  Infotec Ltd
-+00:0D:9B  Private
-+00:0D:9C  Elan Gmbh & Co Kg
-+00:0D:9D  Hewlett Packard
-+00:0D:9E  Tokuden Ohizumi Seisakusyo Co.,Ltd.
-+00:0D:9F  Rf Micro Devices
-+00:0D:A0  Nedap N.V.
-+00:0D:A1  Mirae Its Co.,Ltd.
-+00:0D:A2  Infrant Technologies, Inc.
-+00:0D:A3  Emerging Technologies Limited
-+00:0D:A4  Dosch & Amand Systems Ag
-+00:0D:A5  Fabric7 Systems, Inc
-+00:0D:A6  Universal Switching Corporation
-+00:0D:A7  Private
-+00:0D:A8  Teletronics Technology Corporation
-+00:0D:A9  T.E.A.M. S.L.
-+00:0D:AA  S.A.Tehnology Co.,Ltd.
-+00:0D:AB  Parker Hannifin Gmbh Electromechanical Division Europe
-+00:0D:AC  Japan Cbm Corporation
-+00:0D:AD  Dataprobe Inc
-+00:0D:AE  Samsung Heavy Industries Co., Ltd.
-+00:0D:AF  Plexus Corp (Uk) Ltd
-+00:0D:B0  Olym-Tech Co.,Ltd.
-+00:0D:B1  Japan Network Service Co., Ltd.
-+00:0D:B2  Ammasso, Inc.
-+00:0D:B3  Sdo Communication Corperation
-+00:0D:B4  Netasq
-+00:0D:B5  Globalsat Technology Corporation
-+00:0D:B6  Teknovus, Inc.
-+00:0D:B7  Sanko Electric Co,.Ltd
-+00:0D:B8  Schiller Ag
-+00:0D:B9  Pc Engines Gmbh
-+00:0D:BA  Oc� Document Technologies Gmbh
-+00:0D:BB  Nippon Dentsu Co.,Ltd.
-+00:0D:BC  Cisco Systems
-+00:0D:BD  Cisco Systems
-+00:0D:BE  Bel Fuse Europe Ltd.,Uk
-+00:0D:BF  Tektone Sound & Signal Mfg., Inc.
-+00:0D:C0  Spagat As
-+00:0D:C1  Safeweb Inc
-+00:0D:C2  Private
-+00:0D:C3  First Communication, Inc.
-+00:0D:C4  Emcore Corporation
-+00:0D:C5  Echostar International Corporation
-+00:0D:C6  Digirose Technology Co., Ltd.
-+00:0D:C7  Cosmic Engineering Inc.
-+00:0D:C8  Airmagnet, Inc
-+00:0D:C9  Thales Elektronik Systeme Gmbh
-+00:0D:CA  Tait Electronics
-+00:0D:CB  Petcomkorea Co., Ltd.
-+00:0D:CC  Neosmart Corp.
-+00:0D:CD  Groupe Txcom
-+00:0D:CE  Dynavac Technology Pte Ltd
-+00:0D:CF  Cidra Corp.
-+00:0D:D0  Tetratec Instruments Gmbh
-+00:0D:D1  Stryker Corporation
-+00:0D:D2  Simrad Optronics Asa
-+00:0D:D3  Samwoo Telecommunication Co.,Ltd.
-+00:0D:D4  Revivio Inc.
-+00:0D:D5  O'rite Technology Co.,Ltd
-+00:0D:D6  Iti    Ltd
-+00:0D:D7  Bright
-+00:0D:D8  Bbn
-+00:0D:D9  Anton Paar Gmbh
-+00:0D:DA  Allied Telesis K.K.
-+00:0D:DB  Airwave Technologies Inc.
-+00:0D:DC  Vac
-+00:0D:DD  Prof�lo Telra Elektron�k Sanay� Ve T�caret A.�.
-+00:0D:DE  Joyteck Co., Ltd.
-+00:0D:DF  Japan Image & Network Inc.
-+00:0D:E0  Icpdas Co.,Ltd
-+00:0D:E1  Control Products, Inc.
-+00:0D:E2  Cmz Sistemi Elettronici
-+00:0D:E3  At Sweden Ab
-+00:0D:E4  Diginics, Inc.
-+00:0D:E5  Samsung Thales
-+00:0D:E6  Youngbo Engineering Co.,Ltd
-+00:0D:E7  Snap-On Oem Group
-+00:0D:E8  Nasaco Electronics Pte. Ltd
-+00:0D:E9  Napatech Aps
-+00:0D:EA  Kingtel Telecommunication Corp.
-+00:0D:EB  Compxs Limited
-+00:0D:EC  Cisco Systems
-+00:0D:ED  Cisco Systems
-+00:0D:EE  Private
-+00:0D:EF  Soc. Coop. Bilanciai
-+00:0D:F0  Qcom Technology Inc.
-+00:0D:F1  Ionix Inc.
-+00:0D:F2  Private
-+00:0D:F3  Asmax Solutions
-+00:0D:F4  Watertek Co.
-+00:0D:F5  Teletronics International Inc.
-+00:0D:F6  Technology Thesaurus Corp.
-+00:0D:F7  Space Dynamics Lab
-+00:0D:F8  Orga Kartensysteme Gmbh
-+00:0D:F9  Nds Limited
-+00:0D:FA  Micro Control Systems Ltd.
-+00:0D:FB  Komax Ag
-+00:0D:FC  Itfor Inc. Resarch And Development
-+00:0D:FD  Huges Hi-Tech Inc.,
-+00:0D:FE  Hauppauge Computer Works, Inc.
-+00:0D:FF  Chenming Mold Industry Corp.
-+00:0E:00  Private
-+00:0E:01  Asip Technologies Inc.
-+00:0E:02  Advantech Amt Inc.
-+00:0E:03  Aarohi Communications, Inc.
-+00:0E:04  Private
-+00:0E:05  Wireless Matrix Corp.
-+00:0E:06  Team Simoco Ltd
-+00:0E:07  Sony Ericsson Mobile Communications Ab
-+00:0E:08  Sipura Technology, Inc.
-+00:0E:09  Shenzhen Coship Software Co.,Ltd.
-+00:0E:0A  Private
-+00:0E:0B  Netac Technology Co., Ltd.
-+00:0E:0C  Intel Corporation
-+00:0E:0D  Hesch Schr�der Gmbh
-+00:0E:0E  Esa Elettronica S.P.A.
-+00:0E:0F  Ermme
-+00:0E:10  Private
-+00:0E:11  Bdt B�ro- Und Datentechnik Gmbh & Co. Kg
-+00:0E:12  Adaptive Micro Systems Inc.
-+00:0E:13  Accu-Sort Systems Inc.
-+00:0E:14  Visionary Solutions, Inc.
-+00:0E:15  Tadlys Ltd
-+00:0E:16  Southwing
-+00:0E:17  Private
-+00:0E:18  Mya Technology
-+00:0E:19  Logicacmg Pty Ltd
-+00:0E:1A  Private
-+00:0E:1B  Iav Gmbh
-+00:0E:1C  Hach Company
-+00:0E:1D  Private
-+00:0E:1E  Private
-+00:0E:1F  Tcl Networks Equipment Co., Ltd.
-+00:0E:20  Palmsource, Inc.
-+00:0E:21  Mtu Friedrichshafen Gmbh
-+00:0E:22  Private
-+00:0E:23  Incipient, Inc.
-+00:0E:24  Private
-+00:0E:25  Hannae Technology Co., Ltd
-+00:0E:26  Gincom Technology Corp.
-+00:0E:27  Crere Networks, Inc.
-+00:0E:28  Dynamic Ratings P/L
-+00:0E:29  Shester Communications Inc
-+00:0E:2A  Private
-+00:0E:2B  Safari Technologies
-+00:0E:2C  Netcodec Co.
-+00:0E:2D  Hyundai Digital Technology Co.,Ltd.
-+00:0E:2E  Edimax Technology Co., Ltd.
-+00:0E:2F  Disetronic Medical Systems Ag
-+00:0E:30  Aeras Networks, Inc.
-+00:0E:31  Olympus Biosystems Gmbh
-+00:0E:32  Kontron Medical
-+00:0E:33  Shuko Electronics Co.,Ltd
-+00:0E:34  Nexgen City, Lp
-+00:0E:35  Intel Corp
-+00:0E:36  Heinesys, Inc.
-+00:0E:37  Harms & Wende Gmbh & Co.Kg
-+00:0E:38  Cisco Systems
-+00:0E:39  Cisco Systems
-+00:0E:3A  Cirrus Logic
-+00:0E:3B  Hawking Technologies, Inc.
-+00:0E:3C  Transact Technoloiges Inc.
-+00:0E:3D  Televic N.V.
-+00:0E:3E  Sun Optronics Inc
-+00:0E:3F  Soronti, Inc.
-+00:0E:40  Nortel Networks
-+00:0E:41  Nihon Mechatronics Co.,Ltd.
-+00:0E:42  Motic Incoporation Ltd.
-+00:0E:43  G-Tek Electronics Sdn. Bhd.
-+00:0E:44  Digital 5, Inc.
-+00:0E:45  Beijing Newtry Electronic Technology Ltd
-+00:0E:46  Niigata Seimitsu Co.,Ltd.
-+00:0E:47  Nci System Co.,Ltd.
-+00:0E:48  Lipman Transaction Solutions
-+00:0E:49  Forsway Scandinavia Ab
-+00:0E:4A  Changchun Huayu Webpad Co.,Ltd
-+00:0E:4B  Atrium C And I
-+00:0E:4C  Bermai Inc.
-+00:0E:4D  Numesa Inc.
-+00:0E:4E  Waveplus Technology Co., Ltd.
-+00:0E:4F  Trajet Gmbh
-+00:0E:50  Thomson Multi Media
-+00:0E:51  Tecna Elettronica Srl
-+00:0E:52  Optium Corporation
-+00:0E:53  Av Tech Corporation
-+00:0E:54  Alphacell Wireless Ltd.
-+00:0E:55  Auvitran
-+00:0E:56  4G Systems Gmbh
-+00:0E:57  Iworld Networking, Inc.
-+00:0E:58  Rincon Networks
-+00:0E:59  Private
-+00:0E:5A  Telefield Inc.
-+00:0E:5B  Parkervision - Direct2Data
-+00:0E:5C  Motorola Bcs
-+00:0E:5D  Com-X Networks
-+00:0E:5E  Beijing Raisecom Science & Technology Development Co.,Ltd
-+00:0E:5F  Activ-Net Gmbh & Co. Kg
-+00:0E:60  360Sun Digital Broadband Corporation
-+00:0E:61  Microtrol Limited
-+00:0E:62  Nortel Networks
-+00:0E:63  Lemke Diagnostics Gmbh
-+00:0E:64  Elphel, Inc
-+00:0E:65  Transcore
-+00:0E:66  Hitachi Advanced Digital, Inc.
-+00:0E:67  Eltis Microelectronics Ltd.
-+00:0E:68  E-Top Network Technology Inc.
-+00:0E:69  China Electric Power Research Institute
-+00:0E:6A  3Com Europe Ltd
-+00:0E:6B  Janitza Electronics Gmbh
-+00:0E:6C  Device Drivers Limited
-+00:0E:6D  Murata Manufacturing Co., Ltd.
-+00:0E:6E  Micrelec  Electronics S.A
-+00:0E:6F  Iris Corporation Berhad
-+00:0E:70  In2 Networks
-+00:0E:71  Gemstar Technology Development Ltd.
-+00:0E:72  Cts Electronics
-+00:0E:73  Tpack A/S
-+00:0E:74  Solar Telecom. Tech
-+00:0E:75  New York Air Brake Corp.
-+00:0E:76  Gemsoc Innovision Inc.
-+00:0E:77  Decru, Inc.
-+00:0E:78  Amtelco
-+00:0E:79  Ample Communications Inc.
-+00:0E:7A  Private
-+00:0E:7B  Toshiba
-+00:0E:7C  Private
-+00:0E:7D  Electronics Line 3000 Ltd.
-+00:0E:7E  Comprog Oy
-+00:0E:7F  Hewlett Packard
-+00:0E:80  Private
-+00:0E:81  Instant802 Networks Inc.
-+00:0E:82  Commtech Wireless
-+00:0E:83  Cisco Systems
-+00:0E:84  Cisco Systems
-+00:0E:85  Catalyst Enterprises, Inc.
-+00:0E:86  Alcatel North America
-+00:0E:87  Adp Gauselmann Gmbh
-+00:0E:88  Videotron Corp.
-+00:0E:89  Clematic
-+00:0E:8A  Avara Technologies Pty. Ltd.
-+00:0E:8B  Astarte Technology Co, Ltd.
-+00:0E:8C  Siemens Ag A&D Et
-+00:0E:8D  Systems In Progress Holding Gmbh
-+00:0E:8E  Sparklan Communications, Inc.
-+00:0E:8F  Sercomm Corp.
-+00:0E:90  Ponico Corp.
-+00:0E:91  Private
-+00:0E:92  Millinet Co., Ltd.
-+00:0E:93  Mil�nio 3 Sistemas Electr�nicos, Lda.
-+00:0E:94  Maas International Bv
-+00:0E:95  Fujiya Denki Seisakusho Co.,Ltd.
-+00:0E:96  Cubic Defense Applications, Inc.
-+00:0E:97  Ultracker Technology Co., Inc
-+00:0E:98  Vitec Cc, Inc.
-+00:0E:99  Spectrum Digital, Inc
-+00:0E:9A  Boe Technology Group Co.,Ltd
-+00:0E:9B  Private
-+00:0E:9C  Pemstar
-+00:0E:9D  Video Networks Ltd
-+00:0E:9E  Topfield Co., Ltd
-+00:0E:9F  Temic Sds Gmbh
-+00:0E:A0  Netklass Technology Inc.
-+00:0E:A1  Formosa Teletek Corporation
-+00:0E:A2  Cyberguard Corporation
-+00:0E:A3  Cncr-It Co.,Ltd,Hangzhou P.R.China
-+00:0E:A4  Certance Inc.
-+00:0E:A5  Blip Systems
-+00:0E:A6  Asustek Computer Inc.
-+00:0E:A7  Endace Inc Ltd.
-+00:0E:A8  United Technologists Europe Limited
-+00:0E:A9  Shanghai Xun Shi Communications Equipment Ltd. Co.
-+00:0E:AA  Private
-+00:0E:AB  Private
-+00:0E:AC  Mintron Enterprise Co., Ltd.
-+00:0E:AD  Metanoia Technologies, Inc.
-+00:0E:AE  Gawell Technologies Corp.
-+00:0E:AF  Castel
-+00:0E:B0  Solutions Radio Bv
-+00:0E:B1  Newcotech,Ltd
-+00:0E:B2  Micro-Research Finland Oy
-+00:0E:B3  Lefthand Networks
-+00:0E:B4  Guangzhou Gaoke Communications Technology Co.Ltd.
-+00:0E:B5  Ecastle Electronics Co., Ltd.
-+00:0E:B6  Riverbed Technology, Inc.
-+00:0E:B7  Knovative, Inc.
-+00:0E:B8  Iiga Co.,Ltd
-+00:0E:B9  Hashimoto Electronics Industry Co.,Ltd.
-+00:0E:BA  Hanmi Semiconductor Co., Ltd.
-+00:0E:BB  Everbee Networks
-+00:0E:BC  Cullmann Gmbh
-+00:0E:BD  Burdick, A Quinton Compny
-+00:0E:BE  B&B Electronics Manufacturing Co.
-+00:0E:BF  Private
-+00:0E:C0  Nortel Networks
-+00:0E:C1  Mynah Technologies
-+00:0E:C2  Lowrance Electronics, Inc.
-+00:0E:C3  Logic Controls, Inc.
-+00:0E:C4  Iskra Transmission D.D.
-+00:0E:C5  Private
-+00:0E:C6  Asix Electronics Corp.
-+00:0E:C7  Appeal Telecom Co.,Ltd.
-+00:0E:C8  Zoran Corporation
-+00:0E:C9  Yoko Technology Corp.
-+00:0E:CA  Private
-+00:0E:CB  Vinesys Technology
-+00:0E:CC  Tableau
-+00:0E:CD  Skov A/S
-+00:0E:CE  S.I.T.T.I. S.P.A.
-+00:0E:CF  Profibus Nutzerorganisation E.V.
-+00:0E:D0  Privaris, Inc.
-+00:0E:D1  Osaka Micro Computer.
-+00:0E:D2  Filtronic Plc
-+00:0E:D3  Epicenter, Inc.
-+00:0E:D4  Cresitt Industrie
-+00:0E:D5  Copan Systems Inc.
-+00:0E:D6  Cisco Systems
-+00:0E:D7  Cisco Systems
-+00:0E:D8  Aktino, Inc.
-+00:0E:D9  Aksys, Ltd.
-+00:0E:DA  C-Tech United Corp.
-+00:0E:DB  Xincom Corp.
-+00:0E:DC  Tellion Inc.
-+00:0E:DD  Shure Incorporated
-+00:0E:DE  Remec, Inc.
-+00:0E:DF  Plx Technology
-+00:0E:E0  Mcharge
-+00:0E:E1  Extremespeed Inc.
-+00:0E:E2  Custom Engineering S.P.A.
-+00:0E:E3  Chiyu Technology Co.,Ltd
-+00:0E:E4  Private
-+00:0E:E5  Bitwallet, Inc.
-+00:0E:E6  Adimos Systems Ltd
-+00:0E:E7  Aac Electronics Corp.
-+00:0E:E8  Zioncom
-+00:0E:E9  Waytech Development, Inc.
-+00:0E:EA  Shadong Luneng Jicheng Electronics,Co.,Ltd
-+00:0E:EB  Sandmartin(Zhong Shan)Electronics Co.,Ltd
-+00:0E:EC  Orban
-+00:0E:ED  Nokia Danmark A/S
-+00:0E:EE  Muco Industrie Bv
-+00:0E:EF  Private
-+00:0E:F0  Festo Ag & Co. Kg
-+00:0E:F1  Ezquest Inc.
-+00:0E:F2  World Axle Corporation
-+00:0E:F3  Smarthome
-+00:0E:F4  Shenzhen Kasda Digital Technology Co.,Ltd
-+00:0E:F5  Ipac Technology Co., Ltd.
-+00:0E:F6  E-Ten Information Systems Co., Ltd.
-+00:0E:F7  Vulcan Portals Inc
-+00:0E:F8  Sbc Asi
-+00:0E:F9  Rea Elektronik Gmbh
-+00:0E:FA  Optoway Technology Incorporation
-+00:0E:FB  Macey Enterprises
-+00:0E:FC  Jtag Technologies B.V.
-+00:0E:FD  Fuji Photo Optical Co., Ltd.
-+00:0E:FE  Endrun Technologies Llc
-+00:0E:FF  Megasolution,Inc.
-+00:0F:00  Legra Systems, Inc.
-+00:0F:01  Digitalks Inc
-+00:0F:02  Digicube Technology Co., Ltd
-+00:0F:03  Com&C Co., Ltd
-+00:0F:04  Cim-Usa Inc
-+00:0F:05  3B System Inc.
-+00:0F:06  Nortel Networks
-+00:0F:07  Mangrove Systems, Inc.
-+00:0F:08  Indagon Oy
-+00:0F:09  Private
-+00:0F:0A  Private
-+00:0F:0B  Kentima Technologies Ab
-+00:0F:0C  Synchronic Engineering
-+00:0F:0D  Hunt Electronic Co., Ltd.
-+00:0F:0E  Wavesplitter Technologies, Inc.
-+00:0F:0F  Real Id Technology Co., Ltd.
-+00:0F:10  Rdm Corporation
-+00:0F:11  Prodrive B.V.
-+00:0F:12  Panasonic Avc Networks Germany Gmbh
-+00:0F:13  Nisca Corporation
-+00:0F:14  Mindray Co., Ltd.
-+00:0F:15  Kjaerulff1 A/S
-+00:0F:16  Jay How Technology Co.,
-+00:0F:17  Insta Elektro Gmbh
-+00:0F:18  Industrial Control Systems
-+00:0F:19  Guidant Corporation
-+00:0F:1A  Gaming Support B.V.
-+00:0F:1B  Ego Systems Inc.
-+00:0F:1C  Digitall World Co., Ltd
-+00:0F:1D  Cosmo Techs Co., Ltd.
-+00:0F:1E  Chengdu Kt Electric Co.Of High & New Technology
-+00:0F:1F  Ww Pcba Test
-+00:0F:20  Hewlett Packard
-+00:0F:21  Scientific Atlanta, Inc
-+00:0F:22  Helius, Inc.
-+00:0F:23  Cisco Systems
-+00:0F:24  Cisco Systems
-+00:0F:25  Aimvalley B.V.
-+00:0F:26  Worldaccxx  Llc
-+00:0F:27  Teal Electronics, Inc.
-+00:0F:28  Itronix Corporation
-+00:0F:29  Augmentix Corporation
-+00:0F:2A  Cableware Electronics
-+00:0F:2B  Greenbell Systems
-+00:0F:2C  Uplogix, Inc.
-+00:0F:2D  Chung-Hsin Electric & Machinery Mfg.Corp.
-+00:0F:2E  Megapower International Corp.
-+00:0F:2F  W-Linx Technology Co., Ltd.
-+00:0F:30  Raza Microelectronics Inc
-+00:0F:31  Prosilica
-+00:0F:32  Lutong Electronic Technology Co.,Ltd
-+00:0F:33  Duali Inc.
-+00:0F:34  Cisco Systems
-+00:0F:35  Cisco Systems
-+00:0F:36  Accurate Techhnologies, Inc.
-+00:0F:37  Xambala Incorporated
-+00:0F:38  Netstar
-+00:0F:39  Iris Sensors
-+00:0F:3A  Hisharp
-+00:0F:3B  Fuji System Machines Co., Ltd.
-+00:0F:3C  Endeleo Limited
-+00:0F:3D  D-Link Corporation
-+00:0F:3E  Cardionet, Inc
-+00:0F:3F  Big Bear Networks
-+00:0F:40  Optical Internetworking Forum
-+00:0F:41  Zipher Ltd
-+00:0F:42  Xalyo Systems
-+00:0F:43  Wasabi Systems Inc.
-+00:0F:44  Tivella Inc.
-+00:0F:45  Stretch, Inc.
-+00:0F:46  Sinar Ag
-+00:0F:47  Robox Spa
-+00:0F:48  Polypix Inc.
-+00:0F:49  Northover Solutions Limited
-+00:0F:4A  Kyushu-Kyohan Co.,Ltd
-+00:0F:4B  Katana Technology
-+00:0F:4C  Elextech Inc
-+00:0F:4D  Centrepoint Technologies Inc.
-+00:0F:4E  Cellink
-+00:0F:4F  Cadmus Technology Ltd
-+00:0F:50  Braddahead Limited
-+00:0F:51  Private
-+00:0F:52  York Refrigeration, Marine & Controls
-+00:0F:53  Level 5 Networks, Inc.
-+00:0F:54  Entrelogic Corporation
-+00:0F:55  Datawire Communication Networks Inc.
-+00:0F:56  Continuum Photonics Inc
-+00:0F:57  Cablelogic Co., Ltd.
-+00:0F:58  Adder Technology Limited
-+00:0F:59  Phonak Communications Ag
-+00:0F:5A  Peribit Networks
-+00:0F:5B  Delta Information Systems, Inc.
-+00:0F:5C  Day One Digital Media Limited
-+00:0F:5D  42Networks Ab
-+00:0F:5E  Veo
-+00:0F:5F  Nicety Technologies Inc. (Nts)
-+00:0F:60  Lifetron Co.,Ltd
-+00:0F:61  Kiwi Networks
-+00:0F:62  Alcatel Bell Space N.V.
-+00:0F:63  Obzerv Technologies
-+00:0F:64  D&R Electronica Weesp Bv
-+00:0F:65  Icube Corp.
-+00:0F:66  Cisco-Linksys
-+00:0F:67  West Instruments
-+00:0F:68  Vavic Network Technology, Inc.
-+00:0F:69  Sew Eurodrive Gmbh & Co. Kg
-+00:0F:6A  Nortel Networks
-+00:0F:6B  Gateware Communications Gmbh
-+00:0F:6C  Addi-Data Gmbh
-+00:0F:6D  Midas Engineering
-+00:0F:6E  Bbox
-+00:0F:6F  Fta Communication Technologies
-+00:0F:70  Wintec Industries, Inc.
-+00:0F:71  Sanmei Electronics Co.,Ltd
-+00:0F:72  Sandburst
-+00:0F:73  Rockwell Samsung Automation
-+00:0F:74  Qamcom Technology Ab
-+00:0F:75  First Silicon Solutions
-+00:0F:76  Digital Keystone, Inc.
-+00:0F:77  Dentum Co.,Ltd
-+00:0F:78  Datacap Systems Inc
-+00:0F:79  Bluetooth Interest Group Inc.
-+00:0F:7A  Beijing Nuqx Technology Co.,Ltd
-+00:0F:7B  Arce Sistemas, S.A.
-+00:0F:7C  Acti Corporation
-+00:0F:7D  Xirrus
-+00:0F:7E  Uis Abler Electronics Co.,Ltd.
-+00:0F:7F  Ubstorage Co.,Ltd.
-+00:0F:80  Trinity Security Systems,Inc.
-+00:0F:81  Secure Info Imaging
-+00:0F:82  Mortara Instrument, Inc.
-+00:0F:83  Brainium Technologies Inc.
-+00:0F:84  Astute Networks, Inc.
-+00:0F:85  Addo-Japan Corporation
-+00:0F:86  Private
-+00:0F:87  Maxcess International
-+00:0F:88  Ametek, Inc.
-+00:0F:89  Winnertec System Co., Ltd.
-+00:0F:8A  Wideview
-+00:0F:8B  Orion Multisystems Inc
-+00:0F:8C  Gigawavetech Pte Ltd
-+00:0F:8D  Fast Tv-Server Ag
-+00:0F:8E  Dongyang Telecom Co.,Ltd.
-+00:0F:8F  Cisco Systems
-+00:0F:90  Cisco Systems
-+00:0F:91  Aerotelecom Co.,Ltd.
-+00:0F:92  Microhard Systems Inc.
-+00:0F:93  Landis+Gyr Ltd.
-+00:0F:94  Genexis
-+00:0F:95  Elecom Co.,Ltd Laneed Division
-+00:0F:96  Critical Telecom Corp.
-+00:0F:97  Avanex Corporation
-+00:0F:98  Avamax Co. Ltd.
-+00:0F:99  Apac Opto Electronics Inc.
-+00:0F:9A  Synchrony, Inc.
-+00:0F:9B  Ross Video Limited
-+00:0F:9C  Panduit Corp
-+00:0F:9D  Newnham Research Ltd
-+00:0F:9E  Murrelektronik Gmbh
-+00:0F:9F  Motorola Bcs
-+00:0F:A0  Lotte Canon Co., Ltd.
-+00:0F:A1  Gigabit Systems Inc.
-+00:0F:A2  Digital Path Networks
-+00:0F:A3  Alpha Networks Inc.
-+00:0F:A4  Sprecher Automation Gmbh
-+00:0F:A5  Smp / Bwa Technology Gmbh
-+00:0F:A6  S2 Security Corporation
-+00:0F:A7  Raptor Networks Technology
-+00:0F:A8  Photometrics, Inc.
-+00:0F:A9  Pc Fabrik
-+00:0F:AA  Nexus Technologies
-+00:0F:AB  Kyushu Electronics Systems Inc.
-+00:0F:AC  Ieee 802.11
-+00:0F:AD  Fmn Communications Gmbh
-+00:0F:AE  E2O Communications
-+00:0F:AF  Dialog Inc.
-+00:0F:B0  Compal Electronics,Inc.
-+00:0F:B1  Cognio Inc.
-+00:0F:B2  Broadband Pacenet (India) Pvt. Ltd.
-+00:0F:B3  Actiontec Electronics, Inc
-+00:0F:B4  Timespace Technology
-+00:0F:B5  Netgear Inc
-+00:0F:B6  Europlex Technologies
-+00:0F:B7  Cavium Networks
-+00:0F:B8  Callurl Inc.
-+00:0F:B9  Adaptive Instruments
-+00:0F:BA  Tevebox Ab
-+00:0F:BB  Siemens Ag, Icn M&L Tdc Ep
-+00:0F:BC  Onkey Technologies, Inc.
-+00:0F:BD  Mrv Communications (Networks) Ltd
-+00:0F:BE  E-W/You Inc.
-+00:0F:BF  Dgt Sp. Z O.O.
-+00:0F:C0  Delcomp
-+00:0F:C1  Wave Corporation
-+00:0F:C2  Uniwell Corporation
-+00:0F:C3  Palmpalm Technology, Inc.
-+00:0F:C4  Nst Co.,Ltd.
-+00:0F:C5  Keymed Ltd
-+00:0F:C6  Eurocom Industries A/S
-+00:0F:C7  Dionica R&D Ltd.
-+00:0F:C8  Chantry Networks
-+00:0F:C9  Allnet Gmbh
-+00:0F:CA  A-Jin Techline Co, Ltd
-+00:0F:CB  3Com Europe Ltd
-+00:0F:CC  Netopia, Inc.
-+00:0F:CD  Nortel Networks
-+00:0F:CE  Kikusui Electronics Corp.
-+00:0F:CF  Datawind Research
-+00:0F:D0  Astri
-+00:0F:D1  Applied Wireless Identifications Group, Inc.
-+00:0F:D2  Ewa Technologies, Inc.
-+00:0F:D3  Digium
-+00:0F:D4  Soundcraft
-+00:0F:D5  Schwechat - Rise
-+00:0F:D6  Sarotech Co., Ltd
-+00:0F:D7  Harman Music Group
-+00:0F:D8  Force, Inc.
-+00:0F:D9  Flexdsl Telecommunications Ag
-+00:0F:DA  Yazaki Corporation
-+00:0F:DB  Westell Technologies
-+00:0F:DC  Ueda Japan  Radio Co., Ltd.
-+00:0F:DD  Sordin Ab
-+00:0F:DE  Sony Ericsson Mobile Communications Ab
-+00:0F:DF  Solomon Technology Corp.
-+00:0F:E0  Ncomputing Co.,Ltd.
-+00:0F:E1  Id Digital Corporation
-+00:0F:E2  Hangzhou Huawei-3Com Tech. Co., Ltd.
-+00:0F:E3  Damm Cellular Systems A/S
-+00:0F:E4  Pantech Co.,Ltd
-+00:0F:E5  Mercury Security Corporation
-+00:0F:E6  Mbtech Systems, Inc.
-+00:0F:E7  Lutron Electronics Co., Inc.
-+00:0F:E8  Lobos, Inc.
-+00:0F:E9  Gw Technologies Co.,Ltd.
-+00:0F:EA  Giga-Byte Technology Co.,Ltd.
-+00:0F:EB  Cylon Controls
-+00:0F:EC  Arkus Inc.
-+00:0F:ED  Anam Electronics Co., Ltd
-+00:0F:EE  Xtec, Incorporated
-+00:0F:EF  Thales E-Transactions Gmbh
-+00:0F:F0  Sunray Enterprise
-+00:0F:F1  Nex-G Systems Pte.Ltd
-+00:0F:F2  Loud Technologies Inc.
-+00:0F:F3  Jung Myoung Communications&Technology
-+00:0F:F4  Guntermann & Drunck Gmbh
-+00:0F:F5  Gn&S Company
-+00:0F:F6  Darfon Electronics Corp.
-+00:0F:F7  Cisco Systems
-+00:0F:F8  Cisco  Systems
-+00:0F:F9  Valcretec, Inc.
-+00:0F:FA  Optinel Systems, Inc.
-+00:0F:FB  Nippon Denso Industry Co., Ltd.
-+00:0F:FC  Merit Li-Lin Ent.
-+00:0F:FD  Glorytek Network Inc.
-+00:0F:FE  G-Pro Computer
-+00:0F:FF  Control4
-+00:10:00  Cable Television Laboratories, Inc.
- 00:10:01  Mck Communications
- 00:10:02  Actia
- 00:10:03  Imatron, Inc.
--00:10:04  The Brantley Coile Company,inc
-+00:10:04  The Brantley Coile Company,Inc
- 00:10:05  Uec Commercial
- 00:10:06  Thales Contact Solutions Ltd.
- 00:10:07  Cisco Systems, Inc.
-@@ -3050,11 +4093,11 @@
- 00:10:0F  Industrial Cpu Systems
- 00:10:10  Initio Corporation
- 00:10:11  Cisco Systems, Inc.
--00:10:12  Processor Systems (i) Pvt Ltd
-+00:10:12  Processor Systems (I) Pvt Ltd
- 00:10:13  Industrial Computer Source
- 00:10:14  Cisco Systems, Inc.
- 00:10:15  Oomon Inc.
--00:10:16  T.sqware
-+00:10:16  T.Sqware
- 00:10:17  Micos Gmbh
- 00:10:18  Broadcom Corporation
- 00:10:19  Sirona Dental Systems Gmbh & Co. Kg
-@@ -3076,17 +4119,17 @@
- 00:10:29  Cisco Systems, Inc.
- 00:10:2A  Zf Microsystems, Inc.
- 00:10:2B  Umax Data Systems, Inc.
--00:10:2C  Lasat Networks A/s
-+00:10:2C  Lasat Networks A/S
- 00:10:2D  Hitachi Software Engineering
- 00:10:2E  Network Systems & Technologies Pvt. Ltd.
- 00:10:2F  Cisco Systems, Inc.
--00:10:30  Wi-lan, Inc.
-+00:10:30  Wi-Lan, Inc.
- 00:10:31  Objective Communications, Inc.
- 00:10:32  Alta Technology
- 00:10:33  Accesslan Communications, Inc.
- 00:10:34  Gnp Computers
- 00:10:35  Elitegroup Computer Systems Co., Ltd
--00:10:36  Inter-tel Integrated Systems
-+00:10:36  Inter-Tel Integrated Systems
- 00:10:37  Cyq've Technology Co., Ltd.
- 00:10:38  Micro Research Institute, Inc.
- 00:10:39  Vectron Systems Ag
-@@ -3107,32 +4150,32 @@
- 00:10:48  Htrc Automation, Inc.
- 00:10:49  Shoreline Teleworks, Inc.
- 00:10:4A  The Parvuc Corporation
--00:10:4B  3com Corporation
-+00:10:4B  3Com Corporation
- 00:10:4C  Computer Access Technology
- 00:10:4D  Surtec Industries, Inc.
- 00:10:4E  Ceologic
- 00:10:4F  Storage Technology Corporation
- 00:10:50  Rion Co., Ltd.
- 00:10:51  Cmicro Corporation
--00:10:52  Mettler-toledo (albstadt) Gmbh
-+00:10:52  Mettler-Toledo (Albstadt) Gmbh
- 00:10:53  Computer Technology Corp.
- 00:10:54  Cisco Systems, Inc.
- 00:10:55  Fujitsu Microelectronics, Inc.
- 00:10:56  Sodick Co., Ltd.
--00:10:57  Rebel.com, Inc.
-+00:10:57  Rebel.Com, Inc.
- 00:10:58  Arrowpoint Communications
- 00:10:59  Diablo Research Co. Llc
--00:10:5A  3com Corporation
-+00:10:5A  3Com Corporation
- 00:10:5B  Net Insight Ab
--00:10:5C  Quantum Designs (h.k.) Ltd.
-+00:10:5C  Quantum Designs (H.K.) Ltd.
- 00:10:5D  Draeger Medical
- 00:10:5E  Hekimian Laboratories, Inc.
--00:10:5F  In-snec
-+00:10:5F  In-Snec
- 00:10:60  Billionton Systems, Inc.
- 00:10:61  Hostlink Corp.
- 00:10:62  Nx Server, Ilnc.
- 00:10:63  Starguide Digital Networks
--00:10:64  Digital Equipment Corp.
-+00:10:64  Dnpg, Llc
- 00:10:65  Radyne Corporation
- 00:10:66  Advanced Control Systems, Inc.
- 00:10:67  Redback Networks, Inc.
-@@ -3156,15 +4199,15 @@
- 00:10:79  Cisco Systems, Inc.
- 00:10:7A  Ambicom, Inc.
- 00:10:7B  Cisco Systems, Inc.
--00:10:7C  P-com, Inc.
-+00:10:7C  P-Com, Inc.
- 00:10:7D  Aurora Communications, Ltd.
- 00:10:7E  Bachmann Electronic Gmbh
- 00:10:7F  Crestron Electronics, Inc.
- 00:10:80  Metawave Communications
- 00:10:81  Dps, Inc.
- 00:10:82  Jna Telecommunications Limited
--00:10:83  Hewlett-packard Company
--00:10:84  K-bot Communications
-+00:10:83  Hewlett-Packard Company
-+00:10:84  K-Bot Communications
- 00:10:85  Polaris Communications, Inc.
- 00:10:86  Atto Technology, Inc.
- 00:10:87  Xstreamis Plc
-@@ -3180,15 +4223,15 @@
- 00:10:91  No Wires Needed Bv
- 00:10:92  Netcore Inc.
- 00:10:93  Cms Computers, Ltd.
--00:10:94  Adtech, Inc.
--00:10:95  Thomson Multimedia, Inc.
-+00:10:94  Performance Analysis Broadband, Spirent Plc
-+00:10:95  Thompson Inc.
- 00:10:96  Tracewell Systems, Inc.
- 00:10:97  Winnet Metropolitan Communications Systems, Inc.
- 00:10:98  Starnet Technologies, Inc.
- 00:10:99  Innomedia, Inc.
- 00:10:9A  Netline
- 00:10:9B  Vixel Corporation
--00:10:9C  M-system Co., Ltd.
-+00:10:9C  M-System Co., Ltd.
- 00:10:9D  Clarinet Systems, Inc.
- 00:10:9E  Aware, Inc.
- 00:10:9F  Pavo, Inc.
-@@ -3209,7 +4252,7 @@
- 00:10:AE  Shinko Electric Industries Co.
- 00:10:AF  Tac Systems, Inc.
- 00:10:B0  Meridian Technology Corp.
--00:10:B1  For-a Co., Ltd.
-+00:10:B1  For-A Co., Ltd.
- 00:10:B2  Coactive Aesthetics
- 00:10:B3  Nokia Multimedia Terminals
- 00:10:B4  Atmosphere Networks
-@@ -3218,16 +4261,16 @@
- 00:10:B7  Coyote Technologies, Llc
- 00:10:B8  Ishigaki Computer System Co.
- 00:10:B9  Maxtor Corp.
--00:10:BA  Martinho-davis Systems, Inc.
-+00:10:BA  Martinho-Davis Systems, Inc.
- 00:10:BB  Data & Information Technology
--00:10:BC  Nortel Networks
-+00:10:BC  Aastra Telecom
- 00:10:BD  The Telecommunication Technology Committee
- 00:10:BE  Telexis Corp.
- 00:10:BF  Interair Wireless
- 00:10:C0  Arma, Inc.
- 00:10:C1  Oi Electric Co., Ltd.
- 00:10:C2  Willnet, Inc.
--00:10:C3  Csi-control Systems
-+00:10:C3  Csi-Control Systems
- 00:10:C4  Media Links Co., Ltd.
- 00:10:C5  Protocol Technologies, Inc.
- 00:10:C6  Usi
-@@ -3235,7 +4278,7 @@
- 00:10:C8  Communications Electronics Security Group
- 00:10:C9  Mitsubishi Electronics Logistic Support Co.
- 00:10:CA  Integral Access
--00:10:CB  Facit K.k.
-+00:10:CB  Facit K.K.
- 00:10:CC  Clp Computer Logistik Planung Gmbh
- 00:10:CD  Interface Concept
- 00:10:CE  Volamp, Ltd.
-@@ -3245,19 +4288,19 @@
- 00:10:D2  Nitto Tsushinki Co., Ltd
- 00:10:D3  Grips Electronic Gmbh
- 00:10:D4  Storage Computer Corporation
--00:10:D5  Imasde Canarias, S.a.
--00:10:D6  Itt - A/cd
-+00:10:D5  Imasde Canarias, S.A.
-+00:10:D6  Itt - A/Cd
- 00:10:D7  Argosy Research Inc.
- 00:10:D8  Calista
--00:10:D9  Ibm Japan, Fujisawa Mt+d
-+00:10:D9  Ibm Japan, Fujisawa Mt+D
- 00:10:DA  Motion Engineering, Inc.
- 00:10:DB  Netscreen Technologies, Inc.
--00:10:DC  Micro-star International Co., Ltd.
-+00:10:DC  Micro-Star International Co., Ltd.
- 00:10:DD  Enable Semiconductor, Inc.
- 00:10:DE  International Datacasting Corporation
- 00:10:DF  Rise Computer Inc.
- 00:10:E0  Cobalt Microserver, Inc.
--00:10:E1  S.i. Tech, Inc.
-+00:10:E1  S.I. Tech, Inc.
- 00:10:E2  Arraycomm, Inc.
- 00:10:E3  Compaq Computer Corporation
- 00:10:E4  Nsi Corporation
-@@ -3272,7 +4315,7 @@
- 00:10:ED  Sundance Technology, Inc.
- 00:10:EE  Cti Products, Inc.
- 00:10:EF  Dbtel Incorporated
--00:10:F1  I-o Corporation
-+00:10:F1  I-O Corporation
- 00:10:F2  Antec
- 00:10:F3  Nexcom International Co., Ltd.
- 00:10:F4  Vertical Networks, Inc.
-@@ -3284,21 +4327,258 @@
- 00:10:FA  Zayante, Inc.
- 00:10:FB  Zida Technologies Limited
- 00:10:FC  Broadband Networks, Inc.
--00:10:FD  Cocom A/s
-+00:10:FD  Cocom A/S
- 00:10:FE  Digital Equipment Corporation
- 00:10:FF  Cisco Systems, Inc.
-+00:11:00  Ram Industries, Llc
-+00:11:01  Cet Technologies Pte Ltd
-+00:11:02  Aurora Multimedia Corp.
-+00:11:03  Kawamura Electric Inc.
-+00:11:04  Telexy
-+00:11:05  Sunplus Technology Co., Ltd.
-+00:11:06  Siemens Nv (Belgium)
-+00:11:07  Rgb Networks Inc.
-+00:11:08  Orbital Data Corporation
-+00:11:09  Micro-Star International
-+00:11:0A  Hewlett Packard
-+00:11:0B  Franklin Technology Systems
-+00:11:0C  Atmark Techno, Inc.
-+00:11:0D  Sanblaze Technology, Inc.
-+00:11:0E  Tsurusaki Sealand Transportation Co. Ltd.
-+00:11:0F  Netplat,Inc.
-+00:11:10  Maxanna Technology Co., Ltd.
-+00:11:11  Intel Corporation
-+00:11:12  Honeywell Cmss
-+00:11:13  Fraunhofer Fokus
-+00:11:14  Everfocus Electronics Corp.
-+00:11:15  Epin Technologies, Inc.
-+00:11:16  Coteau Vert Co., Ltd.
-+00:11:17  Cesnet
-+00:11:18  Blx Ic Design Corp., Ltd.
-+00:11:19  Solteras, Inc.
-+00:11:1A  Motorola Bcs
-+00:11:1B  Targa Systems Div L-3 Communications Canada
-+00:11:1C  Pleora Technologies Inc.
-+00:11:1D  Hectrix Limited
-+00:11:1E  Epsg (Ethernet Powerlink Standardization Group)
-+00:11:1F  Doremi Labs, Inc.
-+00:11:20  Cisco Systems
-+00:11:21  Cisco Systems
-+00:11:22  Cimsys Inc
-+00:11:23  Appointech, Inc.
-+00:11:24  Apple Computer
-+00:11:25  Ibm Corporation
-+00:11:26  Venstar Inc.
-+00:11:27  Tasi, Inc
-+00:11:28  Streamit
-+00:11:29  Paradise Datacom Ltd.
-+00:11:2A  Niko Nv
-+00:11:2B  Netmodule
-+00:11:2C  Izt Gmbh
-+00:11:2D  Guys Without Ties
-+00:11:2E  Ceicom
-+00:11:2F  Asustek Computer Inc.
-+00:11:30  Allied Telesis (Hong Kong) Ltd.
-+00:11:31  Unatech. Co.,Ltd
-+00:11:32  Synology Incorporated
-+00:11:33  Siemens Austria Simea
-+00:11:34  Mediacell, Inc.
-+00:11:35  Grandeye Ltd
-+00:11:36  Goodrich Sensor Systems
-+00:11:37  Aichi Electric Co., Ltd.
-+00:11:38  Taishin Co., Ltd.
-+00:11:39  Stoeber Antriebstechnik Gmbh + Co. Kg.
-+00:11:3A  Shinboram
-+00:11:3B  Micronet Communications Inc.
-+00:11:3C  Micronas Gmbh
-+00:11:3D  Kn Soltec Co.,Ltd.
-+00:11:3E  Jl Corporation
-+00:11:3F  Alcatel Di
-+00:11:40  Nanometrics Inc.
-+00:11:41  Goodman Corporation
-+00:11:42  E-Smartcom  Inc.
-+00:11:43  Dell Inc.   (Ww Pcba Test)
-+00:11:44  Assurance Technology Corp
-+00:11:45  Valuepoint Networks
-+00:11:46  Private
-+00:11:47  Secom-Industry Co.Ltd.
-+00:11:48  Prolon Control Systems
-+00:11:49  Proliphix Llc
-+00:11:4A  Kayaba Industry Co,.Ltd.
-+00:11:4B  Francotyp-Postalia Ag & Co. Kg
-+00:11:4C  Caffeina Applied Research Ltd.
-+00:11:4D  Atsumi Electric Co.,Ltd.
-+00:11:4E  690885 Ontario Inc.
-+00:11:4F  Us Digital Television, Inc
-+00:11:50  Belkin Corporation
-+00:11:51  Mykotronx
-+00:11:52  Eidsvoll Electronics As
-+00:11:53  Trident Tek, Inc.
-+00:11:54  Webpro Technologies Inc.
-+00:11:55  Sevis Systems
-+00:11:56  Pharos Systems Nz
-+00:11:57  Of Networks Co., Ltd.
-+00:11:58  Nortel Networks
-+00:11:59  Matisse Networks Inc
-+00:11:5A  Ivoclar Vivadent Ag
-+00:11:5B  Elitegroup Computer System Co. (Ecs)
-+00:11:5C  Cisco
-+00:11:5D  Cisco
-+00:11:5E  Prominent Dosiertechnik Gmbh
-+00:11:5F  Intellix Co., Ltd.
-+00:11:60  Artdio Company Co., Ltd
-+00:11:61  Netstreams, Llc
-+00:11:62  Star Micronics Co.,Ltd.
-+00:11:63  System Spa Dept. Electronics
-+00:11:64  Acard Technology Corp.
-+00:11:65  Znyx Networks
-+00:11:66  Taelim Electronics Co., Ltd.
-+00:11:67  Integrated System Solution Corp.
-+00:11:68  Homelogic Llc
-+00:11:69  Ems Satcom
-+00:11:6A  Domo Ltd
-+00:11:6B  Digital Data Communications Asia Co.,Ltd
-+00:11:6C  Nanwang Multimedia Inc.,Ltd
-+00:11:6D  American Time And Signal
-+00:11:6E  Peplink Ltd.
-+00:11:6F  Netforyou Co., Ltd.
-+00:11:70  Gsc Srl
-+00:11:71  Dexter Communications, Inc.
-+00:11:72  Cotron Corporation
-+00:11:73  Adtron Corporation
-+00:11:74  Wibhu Technologies, Inc.
-+00:11:75  Pathscale, Inc.
-+00:11:76  Intellambda Systems, Inc.
-+00:11:77  Coaxial Networks, Inc.
-+00:11:78  Chiron Technology Ltd
-+00:11:79  Singular Technology Co. Ltd.
-+00:11:7A  Singim International Corp.
-+00:11:7B  B�chi Labortechnik Ag
-+00:11:7C  E-Zy.Net
-+00:11:7D  Zmd America, Inc.
-+00:11:7E  Progeny Inc.
-+00:11:7F  Neotune Information Technology Corporation,.Ltd
-+00:11:80  Motorola Bcs
-+00:11:81  Interenergy Co.Ltd,
-+00:11:82  Imi Norgren Ltd
-+00:11:83  Psc Scanning, Inc
-+00:11:84  Humo Laboratory,Ltd.
-+00:11:85  Hewlett Packard
-+00:11:86  Prime Systems, Inc.
-+00:11:87  Category Solutions, Inc
-+00:11:88  Enterasys
-+00:11:89  Aerotech Inc
-+00:11:8A  Viewtran Technology Limited
-+00:11:8B  Netdevices Inc.
-+00:11:8C  Missouri Department Of Transportation
-+00:11:8D  Hanchang System Corp.
-+00:11:8E  Halytech Mace
-+00:11:8F  Eutech Instruments Pte. Ltd.
-+00:11:90  Digital Design Corporation
-+00:11:91  Cts-Clima Temperatur Systeme Gmbh
-+00:11:92  Cisco Systems
-+00:11:93  Cisco Systems
-+00:11:94  Chi Mei Communication Systems, Inc.
-+00:11:95  Alpha Networks Inc.
-+00:11:96  Actuality Systems, Inc.
-+00:11:97  Monitoring Technologies Limited
-+00:11:98  Prism Media Products Limited
-+00:11:99  2Wcom Gmbh
-+00:11:9A  Alkeria Srl
-+00:11:9B  Telesynergy Research Inc.
-+00:11:9C  Ep&T Energy
-+00:11:9D  Diginfo Technology Corporation
-+00:11:9E  Solectron Brazil
-+00:11:9F  Nokia Danmark A/S
-+00:11:A0  Vtech Engineering Canada Ltd
-+00:11:A1  Vision Netware Co.,Ltd
-+00:11:A2  Manufacturing Technology Inc
-+00:11:A3  Lanready Technologies Inc.
-+00:11:A4  Jstream Technologies Inc.
-+00:11:A5  Fortuna Electronic Corp.
-+00:11:A6  Sypixx Networks
-+00:11:A7  Infilco Degremont Inc.
-+00:11:A8  Quest Technologies
-+00:11:A9  Moimstone Co., Ltd
-+00:11:AA  Uniclass Technology, Co., Ltd
-+00:11:AB  Trustable Technology Co.,Ltd.
-+00:11:AC  Simtec Electronics
-+00:11:AD  Shanghai Ruijie Technology
-+00:11:AE  Motorola Bcs
-+00:11:AF  Medialink-I,Inc
-+00:11:B0  Fortelink Inc.
-+00:11:B1  Blueexpert Technology Corp.
-+00:11:B2  2001 Technology Inc.
-+00:11:B3  Yoshimiya Co.,Ltd.
-+00:11:B4  Westermo Teleindustri Ab
-+00:11:B5  Shenzhen Powercom Co.,Ltd
-+00:11:B6  Open Systems International
-+00:11:B7  Melexis Nederland B.V.
-+00:11:B8  Liebherr - Elektronik Gmbh
-+00:11:B9  Inner Range Pty. Ltd.
-+00:11:BA  Elexol Pty Ltd
-+00:11:BB  Cisco Systems
-+00:11:BC  Cisco Systems
-+00:11:BD  Bombardier Transportation
-+00:11:BE  Agp Telecom Co. Ltd
-+00:11:BF  Aesys S.P.A.
-+00:11:C0  Aday Technology Inc
-+00:11:C1  4P Mobile Data Processing
-+00:11:C2  United Fiber Optic Communication
-+00:11:C3  Transceiving System Technology Corporation
-+00:11:C4  Terminales De Telecomunicacion Terrestre, S.L.
-+00:11:C5  Ten Technology
-+00:11:C6  Seagate Technology Llc
-+00:11:C7  Raymarine Group Ltd.
-+00:11:C8  Powercom Co., Ltd.
-+00:11:C9  Mtt Corporation
-+00:11:CA  Long Range Systems, Inc.
-+00:11:CB  Jacobsons Rkh Ab
-+00:11:CC  Guangzhou Jinpeng Group Co.,Ltd.
-+00:11:CD  Axsun Technologies
-+00:11:CE  Ubisense Limited
-+00:11:CF  Thrane & Thrane A/S
-+00:11:D0  Tandberg Data Asa
-+00:11:D1  Soft Imaging System Gmbh
-+00:11:D2  Perception Digital Ltd
-+00:11:D3  Nextgentel Holding Asa
-+00:11:D4  Netenrich, Inc
-+00:11:D5  Hangzhou Sunyard System Engineering Co.,Ltd.
-+00:11:D6  Handera, Inc.
-+00:11:D7  Ewerks Inc
-+00:11:D8  Asustek Computer Inc.
-+00:11:D9  Tivo
-+00:11:DA  Vivaas Technology Inc.
-+00:11:DB  Land-Cellular Corporation
-+00:11:DC  Glunz & Jensen
-+00:11:DD  Fromus Tec. Co., Ltd.
-+00:11:DE  Eurilogic
-+00:11:DF  Arecont Systems
-+00:11:E0  U-Media Communications, Inc.
-+00:11:E1  Beko Electronics Co.
-+00:11:E2  Hua Jung Components Co., Ltd.
-+00:11:E3  Broadband Access Products
-+00:11:E4  Danelec Electronics A/S
-+00:11:E5  Kcodes Corporation
-+00:11:E6  Scientific Atlanta
-+00:11:E7  Worldsat - Texas De France
-+00:11:E8  Tixi.Com
-+00:11:E9  Starnex Co., Ltd.
-+00:11:EA  Iwics Inc.
-+00:11:EB  Innovative Integration
-+00:11:EC  Avix Inc.
- 00:1C:7C  Perq Systems Corporation
- 00:20:00  Lexmark International, Inc.
- 00:20:01  Dsp Solutions, Inc.
- 00:20:02  Seritech Enterprise Co., Ltd.
- 00:20:03  Pixel Power Ltd.
--00:20:04  Yamatake-honeywell Co., Ltd.
-+00:20:04  Yamatake-Honeywell Co., Ltd.
- 00:20:05  Simple Technology
- 00:20:06  Garrett Communications, Inc.
- 00:20:07  Sfa, Inc.
- 00:20:08  Cable & Computer Technology
- 00:20:09  Packard Bell Elec., Inc.
--00:20:0A  Source-comm Corp.
-+00:20:0A  Source-Comm Corp.
- 00:20:0B  Octagon Systems Corp.
- 00:20:0C  Adastra Systems Corp.
- 00:20:0D  Carl Zeiss
-@@ -3314,8 +4594,8 @@
- 00:20:17  Orbotech
- 00:20:18  Cis Technology Inc.
- 00:20:19  Ohler Gmbh
--00:20:1A  N-base Switch Communications
--00:20:1B  Northern Telecom/network
-+00:20:1A  Mrv Communications, Inc.
-+00:20:1B  Northern Telecom/Network
- 00:20:1C  Excel, Inc.
- 00:20:1D  Katana Products
- 00:20:1E  Netquest Corporation
-@@ -3323,14 +4603,14 @@
- 00:20:20  Megatron Computer Industries Pty, Ltd.
- 00:20:21  Algorithms Software Pvt. Ltd.
- 00:20:22  Teknique, Inc.
--00:20:23  T.c. Technologies Pty. Ltd
-+00:20:23  T.C. Technologies Pty. Ltd
- 00:20:24  Pacific Communication Sciences
- 00:20:25  Control Technology, Inc.
- 00:20:26  Amkly Systems, Inc.
- 00:20:27  Ming Fortune Industry Co., Ltd
- 00:20:28  West Egg Systems, Inc.
- 00:20:29  Teleprocessing Products, Inc.
--00:20:2A  N.v. Dzine
-+00:20:2A  N.V. Dzine
- 00:20:2B  Advanced Telecommunications Modules, Ltd.
- 00:20:2C  Welltronix Co., Ltd.
- 00:20:2D  Taiyo Corporation
-@@ -3346,7 +4626,7 @@
- 00:20:37  Seagate Technology
- 00:20:38  Vme Microsystems International Corporation
- 00:20:39  Scinets
--00:20:3A  Digital Bi0metrics Inc.
-+00:20:3A  Digital Bi0Metrics Inc.
- 00:20:3B  Wisdm Ltd.
- 00:20:3C  Eurotime Ab
- 00:20:3D  Novar Electronics Corporation
-@@ -3369,7 +4649,7 @@
- 00:20:4E  Network Security Systems, Inc.
- 00:20:4F  Deutsche Aerospace Ag
- 00:20:50  Korea Computer Inc.
--00:20:51  Phoenix Data Commununications
-+00:20:51  Verilink Corporation
- 00:20:52  Ragula Systems
- 00:20:53  Huntsville Microsystems, Inc.
- 00:20:54  Eastern Research, Inc.
-@@ -3379,12 +4659,12 @@
- 00:20:58  Allied Signal Inc.
- 00:20:59  Miro Computer Products Ag
- 00:20:5A  Computer Identics
--00:20:5B  Skyline Technology
-+00:20:5B  Kentrox, Llc
- 00:20:5C  Internet Systems Of Florida, Inc.
- 00:20:5D  Nanomatic Oy
- 00:20:5E  Castle Rock, Inc.
- 00:20:5F  Gammadata Computer Gmbh
--00:20:60  Alcatel Italia S.p.a.
-+00:20:60  Alcatel Italia S.P.A.
- 00:20:61  Dynatech Communications, Inc.
- 00:20:62  Scorpion Logic, Ltd.
- 00:20:63  Wipro Infotech Ltd.
-@@ -3395,7 +4675,7 @@
- 00:20:68  Isdyne
- 00:20:69  Isdn Systems Corporation
- 00:20:6A  Osaka Computer Corp.
--00:20:6B  Minolta Camera Co., Ltd.
-+00:20:6B  Konica Minolta Holdings, Inc.
- 00:20:6C  Evergreen Technology Corp.
- 00:20:6D  Data Race, Inc.
- 00:20:6E  Xact, Inc.
-@@ -3416,7 +4696,7 @@
- 00:20:7D  Advanced Computer Applications
- 00:20:7E  Finecom Co., Ltd.
- 00:20:7F  Kyoei Sangyo Co., Ltd.
--00:20:80  Synergy (uk) Ltd.
-+00:20:80  Synergy (Uk) Ltd.
- 00:20:81  Titan Electronics
- 00:20:82  Oneac Corporation
- 00:20:83  Presticom Incorporated
-@@ -3425,7 +4705,7 @@
- 00:20:86  Microtech Electronics Limited
- 00:20:87  Memotec Communications Corp.
- 00:20:88  Global Village Communication
--00:20:89  T3plus Networking, Inc.
-+00:20:89  T3Plus Networking, Inc.
- 00:20:8A  Sonix Communications, Ltd.
- 00:20:8B  Lapis Technologies, Inc.
- 00:20:8C  Galaxy Networks, Inc.
-@@ -3434,7 +4714,7 @@
- 00:20:8F  Eci Telecom Ltd.
- 00:20:90  Advanced Compression Technology, Inc.
- 00:20:91  J125, National Security Agency
--00:20:92  Chess Engineering B.v.
-+00:20:92  Chess Engineering B.V.
- 00:20:93  Landings Technology Corp.
- 00:20:94  Cubix Corporation
- 00:20:95  Riva Electronics
-@@ -3442,7 +4722,7 @@
- 00:20:97  Applied Signal Technology
- 00:20:98  Hectronic Ab
- 00:20:99  Bon Electric Co., Ltd.
--00:20:9A  The 3do Company
-+00:20:9A  The 3Do Company
- 00:20:9B  Ersat Electronic Gmbh
- 00:20:9C  Primary Access Corp.
- 00:20:9D  Lippert Automationstechnik
-@@ -3463,7 +4743,7 @@
- 00:20:AC  Interflex Datensysteme Gmbh
- 00:20:AD  Linq Systems
- 00:20:AE  Ornet Data Communication Tech.
--00:20:AF  3com Corporation
-+00:20:AF  3Com Corporation
- 00:20:B0  Gateway Devices, Inc.
- 00:20:B1  Comtech Research Inc.
- 00:20:B2  Gkd Gesellschaft Fur Kommunikation Und Datentechnik
-@@ -3476,7 +4756,7 @@
- 00:20:B9  Metricom, Inc.
- 00:20:BA  Center For High Performance
- 00:20:BB  Zax Corporation
--00:20:BC  Jtec Pty Ltd.
-+00:20:BC  Long Reach Networks Pty Ltd
- 00:20:BD  Niobrara R & D Corporation
- 00:20:BE  Lan Access Corp.
- 00:20:BF  Aehr Test Systems
-@@ -3484,10 +4764,10 @@
- 00:20:C1  Taiko Electric Works, Ltd.
- 00:20:C2  Texas Memory Systems, Inc.
- 00:20:C3  Counter Solutions Ltd.
--00:20:C4  Inet,inc.
-+00:20:C4  Inet,Inc.
- 00:20:C5  Eagle Technology
- 00:20:C6  Nectec
--00:20:C7  Akai Professional M.i. Corp.
-+00:20:C7  Akai Professional M.I. Corp.
- 00:20:C8  Larscom Incorporated
- 00:20:C9  Victron Bv
- 00:20:CA  Digital Ocean
-@@ -3497,35 +4777,35 @@
- 00:20:CE  Logical Design Group, Inc.
- 00:20:CF  Test & Measurement Systems Inc
- 00:20:D0  Versalynx Corporation
--00:20:D1  Microcomputer Systems (m) Sdn.
-+00:20:D1  Microcomputer Systems (M) Sdn.
- 00:20:D2  Rad Data Communications, Ltd.
--00:20:D3  Ost (ouest Standard Telematiqu
-+00:20:D3  Ost (Ouest Standard Telematiqu
- 00:20:D4  Cabletron - Zeittnet Inc.
- 00:20:D5  Vipa Gmbh
- 00:20:D6  Breezecom
- 00:20:D7  Japan Minicomputer Systems Co., Ltd.
- 00:20:D8  Nortel Networks
--00:20:D9  Panasonic Technologies, Inc./mieco-us
-+00:20:D9  Panasonic Technologies, Inc./Mieco-Us
- 00:20:DA  Xylan Corporation
- 00:20:DB  Xnet Technology, Inc.
- 00:20:DC  Densitron Taiwan Ltd.
--00:20:DD  Awa Ltd.
--00:20:DE  Japan Digital Laborat'y Co.ltd
-+00:20:DD  Cybertec Pty Ltd
-+00:20:DE  Japan Digital Laborat'y Co.Ltd
- 00:20:DF  Kyosan Electric Mfg. Co., Ltd.
--00:20:E0  Premax Electronics, Inc.
-+00:20:E0  Actiontec Electronics, Inc.
- 00:20:E1  Alamar Electronics
- 00:20:E2  Information Resource Engineering
- 00:20:E3  Mcd Kencom Corporation
- 00:20:E4  Hsing Tech Enterprise Co., Ltd
- 00:20:E5  Apex Data, Inc.
- 00:20:E6  Lidkoping Machine Tools Ab
--00:20:E7  B&w Nuclear Service Company
-+00:20:E7  B&W Nuclear Service Company
- 00:20:E8  Datatrek Corporation
- 00:20:E9  Dantel
- 00:20:EA  Efficient Networks, Inc.
- 00:20:EB  Cincinnati Microwave, Inc.
- 00:20:EC  Techware Systems Corp.
--00:20:ED  Giga-byte Technology Co., Ltd.
-+00:20:ED  Giga-Byte Technology Co., Ltd.
- 00:20:EE  Gtech Corporation
- 00:20:EF  Usc Corporation
- 00:20:F0  Universal Microelectronics Co.
-@@ -3544,6 +4824,7 @@
- 00:20:FD  Itv Technologies, Inc.
- 00:20:FE  Topware Inc. / Grand Computer
- 00:20:FF  Symmetrical Technologies
-+00:26:54  3Com Corporation
- 00:30:00  Allwell Technology Corp.
- 00:30:01  Smp
- 00:30:02  Expand Networks
-@@ -3567,17 +4848,17 @@
- 00:30:14  Divio, Inc.
- 00:30:15  Cp Clare Corp.
- 00:30:16  Ishida Co., Ltd.
--00:30:17  Terastack Ltd.
-+00:30:17  Bluearc Uk Ltd
- 00:30:18  Jetway Information Co., Ltd.
- 00:30:19  Cisco Systems, Inc.
- 00:30:1A  Smartbridges Pte. Ltd.
- 00:30:1B  Shuttle, Inc.
- 00:30:1C  Altvater Airdata Systems
- 00:30:1D  Skystream, Inc.
--00:30:1E  3com Europe Ltd.
-+00:30:1E  3Com Europe Ltd.
- 00:30:1F  Optical Networks, Inc.
- 00:30:20  Tsi, Inc..
--00:30:21  Hsing Tech. Enterprise Co.,ltd
-+00:30:21  Hsing Tech. Enterprise Co.,Ltd
- 00:30:22  Fong Kai Industrial Co., Ltd.
- 00:30:23  Cogent Computer Systems, Inc.
- 00:30:24  Cisco Systems, Inc.
-@@ -3610,10 +4891,10 @@
- 00:30:3F  Turbocomm Tech Inc.
- 00:30:40  Cisco Systems, Inc.
- 00:30:41  Saejin T & M Co., Ltd.
--00:30:42  Detewe-deutsche Telephonwerke
-+00:30:42  Detewe-Deutsche Telephonwerke
- 00:30:43  Idream Technologies, Pte. Ltd.
- 00:30:44  Portsmith Llc
--00:30:45  Village Networks, Inc. (vni)
-+00:30:45  Village Networks, Inc. (Vni)
- 00:30:46  Controlled Electronic Manageme
- 00:30:47  Nissei Electric Co., Ltd.
- 00:30:48  Supermicro Computer, Inc.
-@@ -3631,9 +4912,9 @@
- 00:30:54  Castlenet Technology, Inc.
- 00:30:55  Hitachi Semiconductor America,
- 00:30:56  Beck Ipc Gmbh
--00:30:57  E-tel Corporation
-+00:30:57  E-Tel Corporation
- 00:30:58  Api Motion
--00:30:59  Digital-logic Ag
-+00:30:59  Digital-Logic Ag
- 00:30:5A  Telgen Corporation
- 00:30:5B  Module Department
- 00:30:5C  Smar Laboratories Corp.
-@@ -3645,7 +4926,7 @@
- 00:30:62  Path 1 Network Technol's Inc.
- 00:30:63  Santera Systems, Inc.
- 00:30:64  Adlink Technology, Inc.
--00:30:65  Apple	Airport Card 2002
-+00:30:65  Apple Computer, Inc.
- 00:30:66  Digital Wireless Corporation
- 00:30:67  Biostar Microtech Int'l Corp.
- 00:30:68  Cybernetics Tech. Co., Ltd.
-@@ -3656,7 +4937,7 @@
- 00:30:6D  Lucent Technologies
- 00:30:6E  Hewlett Packard
- 00:30:6F  Seyeon Tech. Co., Ltd.
--00:30:70  1net Corporation
-+00:30:70  1Net Corporation
- 00:30:71  Cisco Systems, Inc.
- 00:30:72  Intellibyte Inc.
- 00:30:73  International Microsystems, In
-@@ -3673,7 +4954,7 @@
- 00:30:7E  Redflex Communication Systems
- 00:30:7F  Irlan Ltd.
- 00:30:80  Cisco Systems, Inc.
--00:30:81  Altos C&c
-+00:30:81  Altos C&C
- 00:30:82  Taihan Electric Wire Co., Ltd.
- 00:30:83  Ivron Systems
- 00:30:84  Allied Telesyn Internaional
-@@ -3682,7 +4963,7 @@
- 00:30:87  Vega Grieshaber Kg
- 00:30:88  Siara Systems, Inc.
- 00:30:89  Spectrapoint Wireless, Llc
--00:30:8A  Nicotra Sistemi S.p.a
-+00:30:8A  Nicotra Sistemi S.P.A
- 00:30:8B  Brix Networks
- 00:30:8C  Advanced Digital Information
- 00:30:8D  Pinnacle Systems, Inc.
-@@ -3705,7 +4986,7 @@
- 00:30:9E  Workbit Corporation.
- 00:30:9F  Amber Networks
- 00:30:A0  Tyco Submarine Systems, Ltd.
--00:30:A1  Opti Tech Co., Ltd.
-+00:30:A1  Webgate Inc.
- 00:30:A2  Lightner Engineering
- 00:30:A3  Cisco Systems, Inc.
- 00:30:A4  Woodwind Communications System
-@@ -3719,9 +5000,9 @@
- 00:30:AC  Systeme Lauer Gmbh & Co., Ltd.
- 00:30:AD  Shanghai Communication
- 00:30:AE  Times N System, Inc.
--00:30:AF  Honeywell Reqelsysteme Gmbh
-+00:30:AF  Honeywell Gmbh
- 00:30:B0  Convergenet Technologies
--00:30:B1  Goc Gesellschaft Fur Optische
-+00:30:B1  Axess-Pro Networks Gmbh
- 00:30:B2  Wescam - Healdsburg
- 00:30:B3  San Valley Systems, Inc.
- 00:30:B4  Intersil Corp.
-@@ -3730,14 +5011,14 @@
- 00:30:B7  Teletrol Systems, Inc.
- 00:30:B8  Riverdelta Networks
- 00:30:B9  Ectel
--00:30:BA  Ac&t System Co., Ltd.
-+00:30:BA  Ac&T System Co., Ltd.
- 00:30:BB  Cacheflow, Inc.
- 00:30:BC  Optronic Ag
- 00:30:BD  Belkin Components
--00:30:BE  City-net Technology, Inc.
-+00:30:BE  City-Net Technology, Inc.
- 00:30:BF  Multidata Gmbh
- 00:30:C0  Lara Technology, Inc.
--00:30:C1  Hewlett-packard
-+00:30:C1  Hewlett-Packard
- 00:30:C2  Comone
- 00:30:C3  Flueckiger Elektronik Ag
- 00:30:C4  Niigata Canotec Co., Inc.
-@@ -3752,14 +5033,14 @@
- 00:30:CD  Conexant Systems, Inc.
- 00:30:CE  Zaffire
- 00:30:CF  Two Technologies, Inc.
--00:30:D0  Private
-+00:30:D0  Tellabs
- 00:30:D1  Inova Corporation
- 00:30:D2  Win Technologies, Co., Ltd.
- 00:30:D3  Agilent Technologies
- 00:30:D4  Comtier
- 00:30:D5  Dresearch Gmbh
- 00:30:D6  Msc Vertriebs Gmbh
--00:30:D7  Innovative Systems, L.l.c.
-+00:30:D7  Innovative Systems, L.L.C.
- 00:30:D8  Sitek
- 00:30:D9  Datacore Software Corp.
- 00:30:DA  Comtrend Co.
-@@ -3767,13 +5048,13 @@
- 00:30:DC  Rightech Corporation
- 00:30:DD  Indigita Corporation
- 00:30:DE  Wago Kontakttechnik Gmbh
--00:30:DF  Kb/tel Telecomunicaciones
-+00:30:DF  Kb/Tel Telecomunicaciones
- 00:30:E0  Oxford Semiconductor Ltd.
- 00:30:E1  Acrotron Systems, Inc.
- 00:30:E2  Garnet Systems Co., Ltd.
- 00:30:E3  Sedona Networks Corp.
- 00:30:E4  Chiyoda System Riken
--00:30:E5  Amper Datos S.a.
-+00:30:E5  Amper Datos S.A.
- 00:30:E6  Siemens Medical Systems
- 00:30:E7  Cnf Mobile Solutions, Inc.
- 00:30:E8  Ensim Corp.
-@@ -3813,7 +5094,7 @@
- 00:40:0A  Pivotal Technologies, Inc.
- 00:40:0B  Cisco Systems, Inc.
- 00:40:0C  General Micro Systems, Inc.
--00:40:0D  Lannet Data Communications,ltd
-+00:40:0D  Lannet Data Communications,Ltd
- 00:40:0E  Memotec Communications, Inc.
- 00:40:0F  Datacom Technologies
- 00:40:10  Sonic Systems, Inc.
-@@ -3823,7 +5104,7 @@
- 00:40:14  Comsoft Gmbh
- 00:40:15  Ascom Infrasys Ag
- 00:40:16  Hadax Electronics, Inc.
--00:40:17  Xcd Inc.
-+00:40:17  Troy Group, Inc.
- 00:40:18  Adobe Systems, Inc.
- 00:40:19  Aeon Systems, Inc.
- 00:40:1A  Fuji Electric Co., Ltd.
-@@ -3842,7 +5123,7 @@
- 00:40:27  Smc Massachusetts, Inc.
- 00:40:28  Netcomm Limited
- 00:40:29  Compex
--00:40:2A  Canoga-perkins
-+00:40:2A  Canoga-Perkins
- 00:40:2B  Trigem Computer, Inc.
- 00:40:2C  Isis Distributed Systems, Inc.
- 00:40:2D  Harris Adacom Corporation
-@@ -3855,7 +5136,7 @@
- 00:40:34  Bustek Corporation
- 00:40:35  Opcom
- 00:40:36  Tribe Computer Works, Inc.
--00:40:37  Sea-ilan, Inc.
-+00:40:37  Sea-Ilan, Inc.
- 00:40:38  Talent Electric Incorporated
- 00:40:39  Optec Daiichi Denko Co., Ltd.
- 00:40:3A  Impact Technologies
-@@ -3866,13 +5147,13 @@
- 00:40:3F  Ssangyong Computer Systems
- 00:40:40  Ring Access, Inc.
- 00:40:41  Fujikura Ltd.
--00:40:42  N.a.t. Gmbh
-+00:40:42  N.A.T. Gmbh
- 00:40:43  Nokia Telecommunications
- 00:40:44  Qnix Computer Co., Ltd.
- 00:40:45  Twinhead Corporation
- 00:40:46  Udc Research Limited
- 00:40:47  Wind River Systems
--00:40:48  Smd Informatica S.a.
-+00:40:48  Smd Informatica S.A.
- 00:40:49  Tegimenta Ag
- 00:40:4A  West Australian Department
- 00:40:4B  Maple Computer Systems
-@@ -3893,12 +5174,12 @@
- 00:40:5A  Goldstar Information & Comm.
- 00:40:5B  Funasset Limited
- 00:40:5C  Future Systems, Inc.
--00:40:5D  Star-tek, Inc.
-+00:40:5D  Star-Tek, Inc.
- 00:40:5E  North Hills Israel
- 00:40:5F  Afe Computers Ltd.
- 00:40:60  Comendec Ltd
- 00:40:61  Datatech Enterprises Co., Ltd.
--00:40:62  E-systems, Inc./garland Div.
-+00:40:62  E-Systems, Inc./Garland Div.
- 00:40:63  Via Technologies, Inc.
- 00:40:64  Kla Instruments Corporation
- 00:40:65  Gte Spacenet
-@@ -3906,7 +5187,7 @@
- 00:40:67  Omnibyte Corporation
- 00:40:68  Extended Systems
- 00:40:69  Lemcom Systems, Inc.
--00:40:6A  Kentek Information Systems,inc
-+00:40:6A  Kentek Information Systems,Inc
- 00:40:6B  Sysgen
- 00:40:6C  Copernique
- 00:40:6D  Lanco, Inc.
-@@ -3917,7 +5198,7 @@
- 00:40:72  Applied Innovation Inc.
- 00:40:73  Bass Associates
- 00:40:74  Cable And Wireless
--00:40:75  M-trade (uk) Ltd
-+00:40:75  M-Trade (Uk) Ltd
- 00:40:76  Sun Conversion Technologies
- 00:40:77  Maxton Technology Corporation
- 00:40:78  Wearnes Automation Pte Ltd
-@@ -3943,13 +5224,13 @@
- 00:40:8C  Axis Communications Ab
- 00:40:8D  The Goodyear Tire & Rubber Co.
- 00:40:8E  Digilog, Inc.
--00:40:8F  Wm-data Minfo Ab
-+00:40:8F  Wm-Data Minfo Ab
- 00:40:90  Ansel Communications
- 00:40:91  Procomp Industria Eletronica
- 00:40:92  Asp Computer Products, Inc.
- 00:40:93  Paxdata Networks Ltd.
- 00:40:94  Shographics, Inc.
--00:40:95  R.p.t. Intergroups Int'l Ltd.
-+00:40:95  R.P.T. Intergroups Int'l Ltd.
- 00:40:96  Aironet Wireless Communication
- 00:40:97  Datex Division Of
- 00:40:98  Dressler Gmbh & Co.
-@@ -3959,7 +5240,7 @@
- 00:40:9C  Transware
- 00:40:9D  Digiboard, Inc.
- 00:40:9E  Concurrent Technologies  Ltd.
--00:40:9F  Lancast/casat Technology, Inc.
-+00:40:9F  Lancast/Casat Technology, Inc.
- 00:40:A0  Goldstar Co., Ltd.
- 00:40:A1  Ergo Computing
- 00:40:A2  Kingstar Technology Inc.
-@@ -3967,7 +5248,7 @@
- 00:40:A4  Rose Electronics
- 00:40:A5  Clinicomp Intl.
- 00:40:A6  Cray, Inc.
--00:40:A7  Itautec Philco S.a.
-+00:40:A7  Itautec Philco S.A.
- 00:40:A8  Imf International Ltd.
- 00:40:A9  Datacom Inc.
- 00:40:AA  Valmet Automation Inc.
-@@ -3980,7 +5261,7 @@
- 00:40:B1  Codonics Inc.
- 00:40:B2  Systemforschung
- 00:40:B3  Par Microsystems Corporation
--00:40:B4  Nextcom K.k.
-+00:40:B4  Nextcom K.K.
- 00:40:B5  Video Technology Computers Ltd
- 00:40:B6  Computerm  Corporation
- 00:40:B7  Stealth Computer Systems
-@@ -3993,7 +5274,7 @@
- 00:40:BE  Boeing Defense & Space
- 00:40:BF  Channel Systems Intern'l Inc.
- 00:40:C0  Vista Controls Corporation
--00:40:C1  Bizerba-werke Wilheim Kraut
-+00:40:C1  Bizerba-Werke Wilheim Kraut
- 00:40:C2  Applied Computing Devices
- 00:40:C3  Fischer And Porter Co.
- 00:40:C4  Kinkei System Corporation
-@@ -4006,7 +5287,7 @@
- 00:40:CB  Lanwan Technologies
- 00:40:CC  Silcom Manuf'g Technology Inc.
- 00:40:CD  Tera Microsystems, Inc.
--00:40:CE  Net-source, Inc.
-+00:40:CE  Net-Source, Inc.
- 00:40:CF  Strawberry Tree, Inc.
- 00:40:D0  Mitac International Corp.
- 00:40:D1  Fukuda Denshi Co., Ltd.
-@@ -4014,7 +5295,7 @@
- 00:40:D3  Kimpsion International Corp.
- 00:40:D4  Gage Talker Corp.
- 00:40:D5  Sartorius Ag
--00:40:D6  Locamation B.v.
-+00:40:D6  Locamation B.V.
- 00:40:D7  Studio Gen Inc.
- 00:40:D8  Ocean Office Automation Ltd.
- 00:40:D9  American Megatrends Inc.
-@@ -4028,11 +5309,11 @@
- 00:40:E1  Marner International, Inc.
- 00:40:E2  Mesa Ridge Technologies, Inc.
- 00:40:E3  Quin Systems Ltd
--00:40:E4  E-m Technology, Inc.
-+00:40:E4  E-M Technology, Inc.
- 00:40:E5  Sybus Corporation
--00:40:E6  C.a.e.n.
-+00:40:E6  C.A.E.N.
- 00:40:E7  Arnos Instruments & Computer
--00:40:E8  Charles River Data Systems,inc
-+00:40:E8  Charles River Data Systems,Inc
- 00:40:E9  Accord Systems, Inc.
- 00:40:EA  Plain Tree Systems Inc
- 00:40:EB  Martin Marietta Corporation
-@@ -4061,14 +5342,14 @@
- 00:50:01  Yamashita Systems Corp.
- 00:50:02  Omnisec Ag
- 00:50:03  Gretag Macbeth Ag
--00:50:04  3com Corporation
-+00:50:04  3Com Corporation
- 00:50:06  Tac Ab
- 00:50:07  Siemens Telecommunication Systems Limited
--00:50:08  Compaq WL100
-+00:50:08  Tiva Microcomputer Corp. (Tmc)
- 00:50:09  Philips Broadband Networks
- 00:50:0A  Iris Technologies, Inc.
- 00:50:0B  Cisco Systems, Inc.
--00:50:0C  E-tek Labs, Inc.
-+00:50:0C  E-Tek Labs, Inc.
- 00:50:0D  Satori Electoric Co., Ltd.
- 00:50:0E  Chromatis Networks, Inc.
- 00:50:0F  Cisco Systems, Inc.
-@@ -4077,8 +5358,8 @@
- 00:50:13  Chaparral Network Storage
- 00:50:14  Cisco Systems, Inc.
- 00:50:15  Bright Star Engineering
--00:50:16  Sst/woodhead Industries
--00:50:17  Rsr S.r.l.
-+00:50:16  Sst/Woodhead Industries
-+00:50:17  Rsr S.R.L.
- 00:50:18  Advanced Multimedia Internet Technology Inc.
- 00:50:19  Spring Tide Networks, Inc.
- 00:50:1A  Uisiqn
-@@ -4124,8 +5405,8 @@
- 00:50:47  Private
- 00:50:48  Infolibria
- 00:50:49  Ellacoya Networks, Inc.
--00:50:4A  Elteco A.s.
--00:50:4B  Barconet N.v.
-+00:50:4A  Elteco A.S.
-+00:50:4B  Barconet N.V.
- 00:50:4C  Galil Motion Control, Inc.
- 00:50:4D  Tokyo Electron Device Ltd.
- 00:50:4E  Sierra Monitor Corp.
-@@ -4135,36 +5416,36 @@
- 00:50:52  Tiara Networks, Inc.
- 00:50:53  Cisco Systems, Inc.
- 00:50:54  Cisco Systems, Inc.
--00:50:55  Doms A/s
-+00:50:55  Doms A/S
- 00:50:56  Vmware, Inc.
- 00:50:57  Broadband Access Systems
--00:50:58  Vegastream Limited
-+00:50:58  Vegastream Limted
- 00:50:59  Suite Technology Systems Network
- 00:50:5A  Network Alchemy, Inc.
--00:50:5B  Kawasaki Lsi U.s.a., Inc.
-+00:50:5B  Kawasaki Lsi U.S.A., Inc.
- 00:50:5C  Tundo Corporation
--00:50:5E  Digitek Micrologic S.a.
-+00:50:5E  Digitek Micrologic S.A.
- 00:50:5F  Brand Innovators
- 00:50:60  Tandberg Telecom As
- 00:50:62  Kouwell Electronics Corp.  **
- 00:50:63  Oy Comsel System Ab
- 00:50:64  Cae Electronics
--00:50:65  Densei-lambad Co., Ltd.
-+00:50:65  Densei-Lambad Co., Ltd.
- 00:50:66  Atecom Gmbh Advanced Telecomunication Modules
- 00:50:67  Aerocomm, Inc.
- 00:50:68  Electronic Industries Association
- 00:50:69  Pixstream Incorporated
- 00:50:6A  Edeva, Inc.
--00:50:6B  Spx-ateg
-+00:50:6B  Spx-Ateg
- 00:50:6C  G & L Beijer Electronics Ab
- 00:50:6D  Videojet Systems
- 00:50:6E  Corder Engineering Corporation
--00:50:6F  G-connect
-+00:50:6F  G-Connect
- 00:50:70  Chaintech Computer Co., Ltd.
- 00:50:71  Aiwa Co., Ltd.
- 00:50:72  Corvis Corporation
- 00:50:73  Cisco Systems, Inc.
--00:50:74  Advanced Hi-tech Corp.
-+00:50:74  Advanced Hi-Tech Corp.
- 00:50:75  Kestrel Solutions
- 00:50:76  Ibm
- 00:50:77  Prolific Technology, Inc.
-@@ -4197,13 +5478,13 @@
- 00:50:94  Pace Micro Technology Plc
- 00:50:95  Peracom Networks
- 00:50:96  Salix Technologies, Inc.
--00:50:97  Mmc-embedded Computertechnik Gmbh
-+00:50:97  Mmc-Embedded Computertechnik Gmbh
- 00:50:98  Globaloop, Ltd.
--00:50:99  3com Europe, Ltd.
-+00:50:99  3Com Europe, Ltd.
- 00:50:9A  Tag Electronic Systems
- 00:50:9B  Switchcore Ab
- 00:50:9C  Beta Research
--00:50:9D  The Industree B.v.
-+00:50:9D  The Industree B.V.
- 00:50:9E  Les Technologies Softacoustik Inc.
- 00:50:9F  Horizon Computer
- 00:50:A0  Delta Computer Systems, Inc.
-@@ -4216,7 +5497,7 @@
- 00:50:A7  Cisco Systems, Inc.
- 00:50:A8  Opencon Systems, Inc.
- 00:50:A9  Moldat Wireless Technolgies
--00:50:AA  Konica Corporation
-+00:50:AA  Konica Minolta Holdings, Inc.
- 00:50:AB  Naltec, Inc.
- 00:50:AC  Maple Computer Corporation
- 00:50:AD  Communique Wireless Corp.
-@@ -4227,12 +5508,12 @@
- 00:50:B2  Brodel Automation
- 00:50:B3  Voiceboard Corporation
- 00:50:B4  Satchwell Control Systems, Ltd
--00:50:B5  Fichet-bauche
-+00:50:B5  Fichet-Bauche
- 00:50:B6  Good Way Ind. Co., Ltd.
- 00:50:B7  Boser Technology Co., Ltd.
- 00:50:B8  Inova Computers Gmbh & Co. Kg
- 00:50:B9  Xitron Technologies, Inc.
--00:50:BA  D-link
-+00:50:BA  D-Link
- 00:50:BB  Cms Technologies
- 00:50:BC  Hammer Storage Solutions
- 00:50:BD  Cisco Systems, Inc.
-@@ -4249,7 +5530,7 @@
- 00:50:CA  Net To Net Technologies
- 00:50:CB  Jetter
- 00:50:CC  Xyratex
--00:50:CD  Digianswer A/s
-+00:50:CD  Digianswer A/S
- 00:50:CE  Lg International Corp.
- 00:50:CF  Vanlink Communication Technology Research Institute
- 00:50:D0  Minerva Systems
-@@ -4261,23 +5542,23 @@
- 00:50:D6  Atlas Copco Tools Ab
- 00:50:D7  Telstrat
- 00:50:D8  Unicorn Computer Corp.
--00:50:D9  Engetron-engenharia Eletronica Ind. E Com. Ltda
--00:50:DA  3Com 3CRWE73796B
-+00:50:D9  Engetron-Engenharia Eletronica Ind. E Com. Ltda
-+00:50:DA  3Com Corporation
- 00:50:DB  Contemporary Control
- 00:50:DC  Tas Telefonbau A. Schwabe Gmbh & Co. Kg
--00:50:DD  Serra Soldadura, S.a.
-+00:50:DD  Serra Soldadura, S.A.
- 00:50:DE  Signum Systems Corp.
- 00:50:DF  Airfiber, Inc.
- 00:50:E1  Ns Tech Electronics Sdn Bhd
- 00:50:E2  Cisco Systems, Inc.
--00:50:E3  Telegate
-+00:50:E3  Terayon Communications Systems
- 00:50:E4  Apple Computer, Inc.
- 00:50:E6  Hakusan Corporation
--00:50:E7  Paradise Innovations (asia)
-+00:50:E7  Paradise Innovations (Asia)
- 00:50:E8  Nomadix Inc.
- 00:50:EA  Xel Communications, Inc.
--00:50:EB  Alpha-top Corporation
--00:50:EC  Olicom A/s
-+00:50:EB  Alpha-Top Corporation
-+00:50:EC  Olicom A/S
- 00:50:ED  Anda Networks
- 00:50:EE  Tek Digitel Corporation
- 00:50:EF  Spe Systemhaus Gmbh
-@@ -4286,8 +5567,8 @@
- 00:50:F2  Microsoft Corp.
- 00:50:F3  Global Net Information Co., Ltd.
- 00:50:F4  Sigmatek Gmbh & Co. Kg
--00:50:F6  Pan-international Industrial Corp.
--00:50:F7  Venture Manufacturing (singapore) Ltd.
-+00:50:F6  Pan-International Industrial Corp.
-+00:50:F7  Venture Manufacturing (Singapore) Ltd.
- 00:50:F8  Entrega Technologies, Inc.
- 00:50:F9  Private
- 00:50:FA  Oxtel, Ltd.
-@@ -4304,7 +5585,7 @@
- 00:60:05  Feedback Data Ltd.
- 00:60:06  Sotec Co., Ltd
- 00:60:07  Acres Gaming, Inc.
--00:60:08  3com Corporation
-+00:60:08  3Com Corporation
- 00:60:09  Cisco Systems, Inc.
- 00:60:0A  Sord Computer Corporation
- 00:60:0B  Logware Gmbh
-@@ -4317,7 +5598,7 @@
- 00:60:12  Power Computing Corporation
- 00:60:13  Netstal Maschinen Ag
- 00:60:14  Edec Co., Ltd.
--00:60:15  Net2net Corporation
-+00:60:15  Net2Net Corporation
- 00:60:16  Clariion
- 00:60:17  Tokimec Inc.
- 00:60:18  Stellar One Corporation
-@@ -4346,7 +5627,7 @@
- 00:60:2F  Cisco Systems, Inc.
- 00:60:30  Village Tronic Entwicklung
- 00:60:31  Hrk Systems
--00:60:32  I-cube, Inc.
-+00:60:32  I-Cube, Inc.
- 00:60:33  Acuity Imaging, Inc.
- 00:60:34  Robert Bosch Gmbh
- 00:60:35  Dallas Semiconductor, Inc.
-@@ -4356,15 +5637,15 @@
- 00:60:39  Sancom Technology, Inc.
- 00:60:3A  Quick Controls Ltd.
- 00:60:3B  Amtec Spa
--00:60:3C  Hagiwara Sys-com Co., Ltd.
--00:60:3D  3cx
-+00:60:3C  Hagiwara Sys-Com Co., Ltd.
-+00:60:3D  3Cx
- 00:60:3E  Cisco Systems, Inc.
- 00:60:3F  Patapsco Designs
- 00:60:40  Netro Corp.
- 00:60:41  Yokogawa Electric Corporation
--00:60:42  Tks (usa), Inc.
-+00:60:42  Tks (Usa), Inc.
- 00:60:43  Comsoft Systems, Inc.
--00:60:44  Litton/poly-scientific
-+00:60:44  Litton/Poly-Scientific
- 00:60:45  Pathlight Technologies
- 00:60:46  Vmetro, Inc.
- 00:60:47  Cisco Systems, Inc.
-@@ -4372,7 +5653,7 @@
- 00:60:49  Vina Technologies
- 00:60:4A  Saic Ideas Group
- 00:60:4B  Biodata Gmbh
--00:60:4C  Sat
-+00:60:4C  Sagem Sa
- 00:60:4D  Mmc Networks, Inc.
- 00:60:4E  Cycle Computer Corporation, Inc.
- 00:60:4F  Suzuki Mfg. Co., Ltd.
-@@ -4397,7 +5678,7 @@
- 00:60:62  Telesync, Inc.
- 00:60:63  Psion Dacom Plc.
- 00:60:64  Netcomm Limited
--00:60:65  Bernecker & Rainer Industrie-elektronic Gmbh
-+00:60:65  Bernecker & Rainer Industrie-Elektronic Gmbh
- 00:60:66  Lacroix Technolgie
- 00:60:67  Acer Netxus Inc.
- 00:60:68  Eicon Technology Corporation
-@@ -4405,7 +5686,7 @@
- 00:60:6A  Mitsubishi Wireless Communications. Inc.
- 00:60:6B  Synclayer Inc.
- 00:60:6C  Arescom
--00:60:6D  Cabletron CSIBB-AA
-+00:60:6D  Digital Equipment Corp.
- 00:60:6E  Davicom Semiconductor, Inc.
- 00:60:6F  Clarion Corporation Of America
- 00:60:70  Cisco Systems, Inc.
-@@ -4425,7 +5706,7 @@
- 00:60:7E  Gigalabs, Inc.
- 00:60:7F  Aurora Technologies, Inc.
- 00:60:80  Microtronix Datacom Ltd.
--00:60:81  Tv/com International
-+00:60:81  Tv/Com International
- 00:60:82  Novalink Technologies, Inc.
- 00:60:83  Cisco Systems, Inc.
- 00:60:84  Digital Video
-@@ -4436,23 +5717,23 @@
- 00:60:89  Xata
- 00:60:8A  Citadel Computer
- 00:60:8B  Confertech International
--00:60:8C  3com Corporation
-+00:60:8C  3Com Corporation
- 00:60:8D  Unipulse Corp.
- 00:60:8E  He Electronics, Technologie & Systemtechnik Gmbh
- 00:60:8F  Tekram Technology Co., Ltd.
- 00:60:90  Able Communications, Inc.
- 00:60:91  First Pacific Networks, Inc.
--00:60:92  Micro/sys, Inc.
-+00:60:92  Micro/Sys, Inc.
- 00:60:93  Varian
- 00:60:94  Ibm Corp.
--00:60:95  Accu-time Systems, Inc.
--00:60:96  T.s. Microtech Inc.
--00:60:97  3com Corporation
-+00:60:95  Accu-Time Systems, Inc.
-+00:60:96  T.S. Microtech Inc.
-+00:60:97  3Com Corporation
- 00:60:98  Ht Communications
--00:60:99  Lan Media Corporation
-+00:60:99  Sbe, Inc.
- 00:60:9A  Njk Techno Co.
--00:60:9B  Astro-med, Inc.
--00:60:9C  Perkin-elmer Incorporated
-+00:60:9B  Astro-Med, Inc.
-+00:60:9C  Perkin-Elmer Incorporated
- 00:60:9D  Pmi Food Equipment Group
- 00:60:9E  Asc X3 - Information Technology Standards Secretariats
- 00:60:9F  Phast Corporation
-@@ -4466,17 +5747,17 @@
- 00:60:A7  Microsens Gmbh & Co. Kg
- 00:60:A8  Tidomat Ab
- 00:60:A9  Gesytec Mbh
--00:60:AA  Intelligent Devices Inc. (idi)
-+00:60:AA  Intelligent Devices Inc. (Idi)
- 00:60:AB  Larscom Incorporated
- 00:60:AC  Resilience Corporation
- 00:60:AD  Megachips Corporation
- 00:60:AE  Trio Information Systems Ab
- 00:60:AF  Pacific Micro Data, Inc.
--00:60:B0  Hewlett-packard Co.
--00:60:B1  Input/output, Inc.
-+00:60:B0  Hewlett-Packard Co.
-+00:60:B1  Input/Output, Inc.
- 00:60:B2  Process Control Corp.
--00:60:B3  SMC SMC2642W
--00:60:B4  Glenayre R&d Inc.
-+00:60:B3  Z-Com, Inc.
-+00:60:B4  Glenayre R&D Inc.
- 00:60:B5  Keba Gmbh
- 00:60:B6  Land Computer Co., Ltd.
- 00:60:B7  Channelmatic, Inc.
-@@ -4485,14 +5766,14 @@
- 00:60:BA  Sahara Networks, Inc.
- 00:60:BB  Cabletron - Netlink, Inc.
- 00:60:BC  Keunyoung Electronics & Communication Co., Ltd.
--00:60:BD  Hubbell-pulsecom
-+00:60:BD  Hubbell-Pulsecom
- 00:60:BE  Webtronics
- 00:60:BF  Macraigor Systems, Inc.
- 00:60:C0  Nera As
- 00:60:C1  Wavespan Corporation
- 00:60:C2  Mpl Ag
- 00:60:C3  Netvision Corporation
--00:60:C4  Soliton Systems K.k.
-+00:60:C4  Soliton Systems K.K.
- 00:60:C5  Ancot Corp.
- 00:60:C6  Dcs Ag
- 00:60:C7  Amati Communications Corp.
-@@ -4507,19 +5788,19 @@
- 00:60:D0  Snmp Research Incorporated
- 00:60:D1  Cascade Communications
- 00:60:D2  Lucent Technologies Taiwan Telecommunications Co., Ltd.
--00:60:D3  At&t
-+00:60:D3  At&T
- 00:60:D4  Eldat Communication Ltd.
- 00:60:D5  Miyachi Technos Corp.
- 00:60:D6  Novatel Wireless Technologies Ltd.
--00:60:D7  Ecole Polytechnique Federale De Lausanne (epfl)
-+00:60:D7  Ecole Polytechnique Federale De Lausanne (Epfl)
- 00:60:D8  Elmic Systems, Inc.
- 00:60:D9  Transys Networks Inc.
- 00:60:DA  Jbm Electronics Co.
--00:60:DB  Ntp Elektronik A/s
-+00:60:DB  Ntp Elektronik A/S
- 00:60:DC  Toyo Communication Equipment Co., Ltd.
- 00:60:DD  Myricom, Inc.
--00:60:DE  Kayser-threde Gmbh
--00:60:DF  Inrange Technologies Corp.
-+00:60:DE  Kayser-Threde Gmbh
-+00:60:DF  Cnt Corporation
- 00:60:E0  Axiom Technology Co., Ltd.
- 00:60:E1  Orckit Communications Ltd.
- 00:60:E2  Quest Engineering & Development
-@@ -4528,7 +5809,7 @@
- 00:60:E5  Fuji Automation Co., Ltd.
- 00:60:E6  Shomiti Systems Incorporated
- 00:60:E7  Randata
--00:60:E8  Hitachi Computer Products (america), Inc.
-+00:60:E8  Hitachi Computer Products (America), Inc.
- 00:60:E9  Atop Technologies, Inc.
- 00:60:EA  Streamlogic
- 00:60:EB  Fourthtrack Systems
-@@ -4539,7 +5820,7 @@
- 00:60:F0  Johnson & Johnson Medical, Inc
- 00:60:F1  Exp Computer, Inc.
- 00:60:F2  Lasergraphics, Inc.
--00:60:F3  Netcom Systems, Inc.
-+00:60:F3  Performance Analysis Broadband, Spirent Plc
- 00:60:F4  Advanced Computer Solutions, Inc.
- 00:60:F5  Icon West, Inc.
- 00:60:F6  Nextest Communications Products, Inc.
-@@ -4552,28 +5833,28 @@
- 00:60:FD  Netics, Inc.
- 00:60:FE  Lynx System Developers, Inc.
- 00:60:FF  Quvis, Inc.
--00:70:B0  M/a-com Inc. Companies
-+00:70:B0  M/A-Com Inc. Companies
- 00:70:B3  Data Recall Ltd.
- 00:80:00  Multitech Systems, Inc.
- 00:80:01  Periphonics Corporation
--00:80:02  Satelcom (uk) Ltd
-+00:80:02  Satelcom (Uk) Ltd
- 00:80:03  Hytec Electronics Ltd.
- 00:80:04  Antlow Communications, Ltd.
- 00:80:05  Cactus Computer Inc.
- 00:80:06  Compuadd Corporation
--00:80:07  Dlog Nc-systeme
-+00:80:07  Dlog Nc-Systeme
- 00:80:08  Dynatech Computer Systems
- 00:80:09  Jupiter Systems, Inc.
- 00:80:0A  Japan Computer Corp.
- 00:80:0B  Csk Corporation
- 00:80:0C  Videcom Limited
--00:80:0D  Vosswinkel F.u.
-+00:80:0D  Vosswinkel F.U.
- 00:80:0E  Atlantix Corporation
- 00:80:0F  Standard Microsystems
- 00:80:10  Commodore International
- 00:80:11  Digital Systems Int'l. Inc.
- 00:80:12  Integrated Measurement Systems
--00:80:13  Thomas-conrad Corporation
-+00:80:13  Thomas-Conrad Corporation
- 00:80:14  Esprit Systems
- 00:80:15  Seiko Systems, Inc.
- 00:80:16  Wandel And Goltermann
-@@ -4587,14 +5868,14 @@
- 00:80:1E  Xinetron, Inc.
- 00:80:1F  Krupp Atlas Electronik Gmbh
- 00:80:20  Network Products
--00:80:21  Newbridge Research Corp.
--00:80:22  Scan-optics
-+00:80:21  Alcatel Canada Inc.
-+00:80:22  Scan-Optics
- 00:80:23  Integrated Business Networks
- 00:80:24  Kalpana, Inc.
- 00:80:25  Stollmann Gmbh
- 00:80:26  Network Products Corporation
- 00:80:27  Adaptive Systems, Inc.
--00:80:28  Tradpost (hk) Ltd
-+00:80:28  Tradpost (Hk) Ltd
- 00:80:29  Eagle Technology, Inc.
- 00:80:2A  Test Systems & Simulations Inc
- 00:80:2B  Integrated Marketing Co
-@@ -4625,11 +5906,11 @@
- 00:80:44  Systech Computer Corp.
- 00:80:45  Matsushita Electric Ind. Co
- 00:80:46  University Of Toronto
--00:80:47  In-net Corp.
-+00:80:47  In-Net Corp.
- 00:80:48  Compex Incorporated
- 00:80:49  Nissin Electric Co., Ltd.
--00:80:4A  Pro-log
--00:80:4B  Eagle Technologies Pty.ltd.
-+00:80:4A  Pro-Log
-+00:80:4B  Eagle Technologies Pty.Ltd.
- 00:80:4C  Contec Co., Ltd.
- 00:80:4D  Cyclone Microsystems, Inc.
- 00:80:4E  Apex Computer Company
-@@ -4644,7 +5925,7 @@
- 00:80:57  Adsoft, Ltd.
- 00:80:58  Printer Systems Corporation
- 00:80:59  Stanley Electric Co., Ltd
--00:80:5A  Tulip Computers Internat'l B.v
-+00:80:5A  Tulip Computers Internat'l B.V
- 00:80:5B  Condor Systems, Inc.
- 00:80:5C  Agilis Corporation
- 00:80:5D  Canstar
-@@ -4660,7 +5941,7 @@
- 00:80:67  Square D Company
- 00:80:68  Yamatech Scientific Ltd.
- 00:80:69  Computone Systems
--00:80:6A  Eri (empac Research Inc.)
-+00:80:6A  Eri (Empac Research Inc.)
- 00:80:6B  Schmid Telecommunication
- 00:80:6C  Cegelec Projects Ltd
- 00:80:6D  Century Systems Corp.
-@@ -4687,23 +5968,23 @@
- 00:80:82  Pep Modular Computers Gmbh
- 00:80:83  Amdahl
- 00:80:84  The Cloud Inc.
--00:80:85  H-three Systems Corporation
-+00:80:85  H-Three Systems Corporation
- 00:80:86  Computer Generation Inc.
- 00:80:87  Oki Electric Industry Co., Ltd
- 00:80:88  Victor Company Of Japan, Ltd.
--00:80:89  Tecnetics (pty) Ltd.
-+00:80:89  Tecnetics (Pty) Ltd.
- 00:80:8A  Summit Microsystems Corp.
- 00:80:8B  Dacoll Limited
- 00:80:8C  Netscout Systems, Inc.
--00:80:8D  Westcoast Technology B.v.
-+00:80:8D  Westcoast Technology B.V.
- 00:80:8E  Radstone Technology
- 00:80:8F  C. Itoh Electronics, Inc.
- 00:80:90  Microtek International, Inc.
--00:80:91  Tokyo Electric Co.,ltd
-+00:80:91  Tokyo Electric Co.,Ltd
- 00:80:92  Japan Computer Industry, Inc.
- 00:80:93  Xyron Corporation
- 00:80:94  Alfa Laval Automation Ab
--00:80:95  Basic Merton Handelsges.m.b.h.
-+00:80:95  Basic Merton Handelsges.M.B.H.
- 00:80:96  Human Designed Systems, Inc.
- 00:80:97  Centralp Automatismes
- 00:80:98  Tdk Corporation
-@@ -4714,7 +5995,7 @@
- 00:80:9D  Commscraft Ltd.
- 00:80:9E  Datus Gmbh
- 00:80:9F  Alcatel Business Systems
--00:80:A0  Edisa Hewlett Packard S/a
-+00:80:A0  Edisa Hewlett Packard S/A
- 00:80:A1  Microtest, Inc.
- 00:80:A2  Creative Electronic Systems
- 00:80:A3  Lantronix
-@@ -4731,7 +6012,7 @@
- 00:80:AE  Hughes Network Systems
- 00:80:AF  Allumer Co., Ltd.
- 00:80:B0  Advanced Information
--00:80:B1  Softcom A/s
-+00:80:B1  Softcom A/S
- 00:80:B2  Network Equipment Technologies
- 00:80:B3  Aval Data Corporation
- 00:80:B4  Sophia Systems
-@@ -4740,7 +6021,7 @@
- 00:80:B7  Stellar Computer
- 00:80:B8  Bug, Incorporated
- 00:80:B9  Arche Technoligies Inc.
--00:80:BA  Specialix (asia) Pte, Ltd
-+00:80:BA  Specialix (Asia) Pte, Ltd
- 00:80:BB  Hughes Lan Systems
- 00:80:BC  Hitachi Engineering Co., Ltd
- 00:80:BD  The Furukawa Electric Co., Ltd
-@@ -4748,13 +6029,13 @@
- 00:80:BF  Takaoka Electric Mfg. Co. Ltd.
- 00:80:C0  Penril Datacomm
- 00:80:C1  Lanex Corporation
--00:80:C2  Ieee 802 Committee
-+00:80:C2  Ieee 802.1 Committee
- 00:80:C3  Bicc Information Systems & Svc
- 00:80:C4  Document Technologies, Inc.
- 00:80:C5  Novellco De Mexico
- 00:80:C6  National Datacomm Corporation
--00:80:C7  Netwave (Xircom Netwave/Netwave Airsurfer)
--00:80:C8  D-link Systems, Inc.
-+00:80:C7  Xircom
-+00:80:C8  D-Link Systems, Inc.
- 00:80:C9  Alberta Microelectronic Centre
- 00:80:CA  Netcom Research Incorporated
- 00:80:CB  Falco Data Products
-@@ -4775,26 +6056,26 @@
- 00:80:DA  Bruel & Kjaer
- 00:80:DB  Graphon Corporation
- 00:80:DC  Picker International
--00:80:DD  Gmx Inc/gimix
--00:80:DE  Gipsi S.a.
-+00:80:DD  Gmx Inc/Gimix
-+00:80:DE  Gipsi S.A.
- 00:80:DF  Adc Codenoll Technology Corp.
- 00:80:E0  Xtp Systems, Inc.
- 00:80:E1  Stmicroelectronics
--00:80:E2  T.d.i. Co., Ltd.
-+00:80:E2  T.D.I. Co., Ltd.
- 00:80:E3  Coral Network Corporation
- 00:80:E4  Northwest Digital Systems, Inc
- 00:80:E5  Mylex Corporation
- 00:80:E6  Peer Networks, Inc.
- 00:80:E7  Lynwood Scientific Dev. Ltd.
- 00:80:E8  Cumulus Corporatiion
--00:80:E9  Madge Networks
-+00:80:E9  Madge Ltd.
- 00:80:EA  Adva Optical Networking Ltd.
--00:80:EB  Compcontrol B.v.
-+00:80:EB  Compcontrol B.V.
- 00:80:EC  Supercomputing Solutions, Inc.
- 00:80:ED  Iq Technologies, Inc.
- 00:80:EE  Thomson Csf
- 00:80:EF  Rational
--00:80:F0  Kyushu Matsushita Electric Co.
-+00:80:F0  Panasonic Communications Co., Ltd.
- 00:80:F1  Opus Systems
- 00:80:F2  Raycom Systems Inc
- 00:80:F3  Sun Electronics Corp.
-@@ -4814,9 +6095,9 @@
- 00:90:01  Nishimu Electronics Industries Co., Ltd.
- 00:90:02  Allgon Ab
- 00:90:03  Aplio
--00:90:04  3com Europe Ltd.
-+00:90:04  3Com Europe Ltd.
- 00:90:05  Protech Systems Co., Ltd.
--00:90:06  Hamamatsu Photonics K.k.
-+00:90:06  Hamamatsu Photonics K.K.
- 00:90:07  Domex Technology Corp.
- 00:90:08  Hana Systems Inc.
- 00:90:09  I Controls, Inc.
-@@ -4839,10 +6120,10 @@
- 00:90:1A  Unisphere Solutions
- 00:90:1B  Digital Controls
- 00:90:1C  Mps Software Gmbh
--00:90:1D  Pec (nz) Ltd.
--00:90:1E  Selesta Ingegne Ria S.p.a.
-+00:90:1D  Pec (Nz) Ltd.
-+00:90:1E  Selesta Ingegne Ria S.P.A.
- 00:90:1F  Adtec Productions, Inc.
--00:90:20  Philips Analytical X-ray B.v.
-+00:90:20  Philips Analytical X-Ray B.V.
- 00:90:21  Cisco Systems, Inc.
- 00:90:22  Ivex
- 00:90:23  Zilog Inc.
-@@ -4855,10 +6136,10 @@
- 00:90:2A  Communication Devices, Inc.
- 00:90:2B  Cisco Systems, Inc.
- 00:90:2C  Data & Control Equipment Ltd.
--00:90:2D  Data Electronics (aust.) Pty, Ltd.
-+00:90:2D  Data Electronics (Aust.) Pty, Ltd.
- 00:90:2E  Namco Limited
- 00:90:2F  Netcore Systems, Inc.
--00:90:30  Honeywell-dating
-+00:90:30  Honeywell-Dating
- 00:90:31  Mysticom, Ltd.
- 00:90:32  Pelcombe Group Ltd.
- 00:90:33  Innovaphone Gmbh
-@@ -4872,7 +6153,7 @@
- 00:90:3B  Triems Research Lab, Inc.
- 00:90:3C  Atlantic Network Systems
- 00:90:3D  Biopac Systems, Inc.
--00:90:3E  N.v. Philips Industrial Activities
-+00:90:3E  N.V. Philips Industrial Activities
- 00:90:3F  Aztec Radiomedia
- 00:90:40  Siemens Network Convergence Llc
- 00:90:41  Applied Digital Access
-@@ -4887,24 +6168,24 @@
- 00:90:4A  Concur System Technologies
- 00:90:4B  Gemtek Technology Co., Ltd.
- 00:90:4C  Epigram, Inc.
--00:90:4D  Spec S.a.
-+00:90:4D  Spec S.A.
- 00:90:4E  Delem Bv
--00:90:4F  Abb Power T&d Company, Inc.
-+00:90:4F  Abb Power T&D Company, Inc.
- 00:90:50  Teleste Oy
- 00:90:51  Ultimate Technology Corp.
--00:90:52  Selcom Elettronica S.r.l.
-+00:90:52  Selcom Elettronica S.R.L.
- 00:90:53  Daewoo Electronics Co., Ltd.
- 00:90:54  Innovative Semiconductors, Inc
- 00:90:55  Parker Hannifin Corporation Compumotor Division
- 00:90:56  Telestream, Inc.
- 00:90:57  Aanetcom, Inc.
- 00:90:58  Ultra Electronics Ltd., Command And Control Systems
--00:90:59  Telecom Device K.k.
-+00:90:59  Telecom Device K.K.
- 00:90:5A  Dearborn Group, Inc.
- 00:90:5B  Raymond And Lae Engineering
- 00:90:5C  Edmi
- 00:90:5D  Netcom Sicherheitstechnik Gmbh
--00:90:5E  Rauland-borg Corporation
-+00:90:5E  Rauland-Borg Corporation
- 00:90:5F  Cisco Systems, Inc.
- 00:90:60  System Create Corp.
- 00:90:61  Pacific Research & Engineering Corporation
-@@ -4927,13 +6208,13 @@
- 00:90:72  Simrad As
- 00:90:73  Gaio Technology
- 00:90:74  Argon Networks, Inc.
--00:90:75  Nec Do Brasil S.a.
-+00:90:75  Nec Do Brasil S.A.
- 00:90:76  Fmt Aircraft Gate Support Systems Ab
- 00:90:77  Advanced Fibre Communications
- 00:90:78  Mer Telemanagement Solutions, Ltd.
- 00:90:79  Clearone, Inc.
- 00:90:7A  Spectralink Corp.
--00:90:7B  E-tech, Inc.
-+00:90:7B  E-Tech, Inc.
- 00:90:7C  Digitalcast, Inc.
- 00:90:7D  Lake Communications
- 00:90:7E  Vetronix Corp.
-@@ -4954,7 +6235,7 @@
- 00:90:8D  Vickers Electronics Systems
- 00:90:8E  Nortel Networks Broadband Access
- 00:90:8F  Audio Codes Ltd.
--00:90:90  I-bus
-+00:90:90  I-Bus
- 00:90:91  Digitalscape, Inc.
- 00:90:92  Cisco Systems, Inc.
- 00:90:93  Nanao Corporation
-@@ -4963,14 +6244,14 @@
- 00:90:96  Askey Computer Corp.
- 00:90:97  Sycamore Networks
- 00:90:98  Sbc Designs, Inc.
--00:90:99  Allied Telesis, K.k.
-+00:90:99  Allied Telesis, K.K.
- 00:90:9A  One World Systems, Inc.
- 00:90:9B  Markpoint Ab
--00:90:9C  Combox, Ltd.
--00:90:9D  Gse Systems, Inc.
-+00:90:9C  Terayon Communications Systems
-+00:90:9D  Novatech Process Solutions, Llc
- 00:90:9E  Critical Io, Llc
--00:90:9F  Digi-data Corporation
--00:90:A0  8x8 Inc.
-+00:90:9F  Digi-Data Corporation
-+00:90:A0  8X8 Inc.
- 00:90:A1  Flying Pig Systems, Ltd.
- 00:90:A2  Cybertan Technology, Inc.
- 00:90:A3  Corecess Inc.
-@@ -4984,7 +6265,7 @@
- 00:90:AB  Cisco Systems, Inc.
- 00:90:AC  Optivision, Inc.
- 00:90:AD  Aspect Electronics, Inc.
--00:90:AE  Italtel S.p.a.
-+00:90:AE  Italtel S.P.A.
- 00:90:AF  J. Morita Mfg. Corp.
- 00:90:B0  Vadem
- 00:90:B1  Cisco Systems, Inc.
-@@ -5000,9 +6281,9 @@
- 00:90:BB  Tainet Communication System Corp.
- 00:90:BC  Telemann Co., Ltd.
- 00:90:BD  Omnia Communications, Inc.
--00:90:BE  Ibc/integrated Business Computers
-+00:90:BE  Ibc/Integrated Business Computers
- 00:90:BF  Cisco Systems, Inc.
--00:90:C0  K.j. Law Engineers, Inc.
-+00:90:C0  K.J. Law Engineers, Inc.
- 00:90:C1  Peco Ii, Inc.
- 00:90:C2  Jk Microsystems, Inc.
- 00:90:C3  Topic Semiconductor Corp.
-@@ -5010,16 +6291,16 @@
- 00:90:C5  Internet Magic, Inc.
- 00:90:C6  Optim Systems, Inc.
- 00:90:C7  Icom Inc.
--00:90:C8  Waverider Communications (canada) Inc.
--00:90:C9  Productivity Enhancement Products., Inc.
-+00:90:C8  Waverider Communications (Canada) Inc.
-+00:90:C9  Dpac Technologies
- 00:90:CA  Accord Video Telecommunications, Ltd.
- 00:90:CB  Wireless Online, Inc.
- 00:90:CC  Planet Communications, Inc.
--00:90:CD  Ent-empresa Nacional De Telecommunicacoes, S.a.
-+00:90:CD  Ent-Empresa Nacional De Telecommunicacoes, S.A.
- 00:90:CE  Tetra Gmbh
- 00:90:CF  Nortel
- 00:90:D0  Thomson Belgium
--00:90:D1  LeArtery SyncByAir LN101
-+00:90:D1  Leichu Enterprise Co., Ltd.
- 00:90:D2  Artel Video Systems
- 00:90:D3  Giesecke & Devrient Gmbh
- 00:90:D4  Bindview Development Corp.
-@@ -5035,7 +6316,7 @@
- 00:90:DE  Cardkey Systems, Inc.
- 00:90:DF  Mitsubishi Chemical America, Inc.
- 00:90:E0  Systran Corp.
--00:90:E1  Telena S.p.a.
-+00:90:E1  Telena S.P.A.
- 00:90:E2  Distributed Processing Technology
- 00:90:E3  Avex Electronics Inc.
- 00:90:E4  Nec America, Inc.
-@@ -5064,12 +6345,12 @@
- 00:90:FB  Portwell, Inc.
- 00:90:FC  Network Computing Devices
- 00:90:FD  Coppercom, Inc.
--00:90:FE  Elecom Co., Ltd.  (laneed Div.)
-+00:90:FE  Elecom Co., Ltd.  (Laneed Div.)
- 00:90:FF  Tellus Technology Inc.
- 00:91:D6  Crystal Group, Inc.
- 00:9D:8E  Cardiac Recorders, Inc.
- 00:A0:00  Centillion Networks, Inc.
--00:A0:01  Watkins-johnson Company
-+00:A0:01  Watkins-Johnson Company
- 00:A0:02  Leeds & Northrup Australia Pty Ltd
- 00:A0:03  Staefa Control System
- 00:A0:04  Netpower, Inc.
-@@ -5078,7 +6359,7 @@
- 00:A0:07  Apexx Technology, Inc.
- 00:A0:08  Netcorp
- 00:A0:09  Whitetree Network
--00:A0:0A  R.d.c. Communication
-+00:A0:0A  R.D.C. Communication
- 00:A0:0B  Computex Co., Ltd.
- 00:A0:0C  Kingmax Technology, Inc.
- 00:A0:0D  The Panda Project
-@@ -5086,7 +6367,7 @@
- 00:A0:0F  Broadband Technologies
- 00:A0:10  Syslogic Datentechnik Ag
- 00:A0:11  Mutoh Industries Ltd.
--00:A0:12  B.a.t.m. Advanced Technologies
-+00:A0:12  B.A.T.M. Advanced Technologies
- 00:A0:13  Teltrend Ltd.
- 00:A0:14  Csir
- 00:A0:15  Wyle
-@@ -5100,13 +6381,13 @@
- 00:A0:1D  Sixnet
- 00:A0:1E  Est Corporation
- 00:A0:1F  Tricord Systems, Inc.
--00:A0:20  Citicorp/tti
-+00:A0:20  Citicorp/Tti
- 00:A0:21  General Dynamics-
- 00:A0:22  Centre For Development Of Advanced Computing
- 00:A0:23  Applied Creative Technology, Inc.
--00:A0:24  3com Corporation
-+00:A0:24  3Com Corporation
- 00:A0:25  Redcom Labs Inc.
--00:A0:26  Teldat, S.a.
-+00:A0:26  Teldat, S.A.
- 00:A0:27  Firepower Systems, Inc.
- 00:A0:28  Conner Peripherals
- 00:A0:29  Coulter Corporation
-@@ -5116,7 +6397,7 @@
- 00:A0:2D  1394 Trade Association
- 00:A0:2E  Brand Communications, Ltd.
- 00:A0:2F  Pirelli Cavi
--00:A0:30  Captor Nv/sa
-+00:A0:30  Captor Nv/Sa
- 00:A0:31  Hazeltine Corporation, Ms 1-17
- 00:A0:32  Ges Singapore Pte. Ltd.
- 00:A0:33  Imc Mebsysteme Gmbh
-@@ -5128,15 +6409,15 @@
- 00:A0:39  Ross Technology, Inc.
- 00:A0:3A  Kubotek Corporation
- 00:A0:3B  Toshin Electric Co., Ltd.
--00:A0:3C  Eg&g Nuclear Instruments
-+00:A0:3C  Eg&G Nuclear Instruments
- 00:A0:3D  Opto-22
- 00:A0:3E  Atm Forum
- 00:A0:3F  Computer Society Microprocessor & Microprocessor Standards C
- 00:A0:40  Apple Computer
--00:A0:41  Leybold-inficon
-+00:A0:41  Leybold-Inficon
- 00:A0:42  Spur Products Corp.
- 00:A0:43  American Technology Labs, Inc.
--00:A0:44  Ntt Intelligent Technology
-+00:A0:44  Ntt It Co., Ltd.
- 00:A0:45  Phoenix Contact Gmbh & Co.
- 00:A0:46  Scitex Corp. Ltd.
- 00:A0:47  Integrated Fitness Corp.
-@@ -5153,7 +6434,7 @@
- 00:A0:52  Stanilite Electronics Pty. Ltd
- 00:A0:53  Compact Devices, Inc.
- 00:A0:54  Private
--00:A0:55  Linktech, Inc.
-+00:A0:55  Data Device Corporation
- 00:A0:56  Micropross
- 00:A0:57  Lancom Systems Gmbh
- 00:A0:58  Glory, Ltd.
-@@ -5168,20 +6449,20 @@
- 00:A0:61  Puritan Bennett
- 00:A0:62  Aes Prodata
- 00:A0:63  Jrl Systems, Inc.
--00:A0:64  Kvb/analect
--00:A0:65  Nexland, Inc.
-+00:A0:64  Kvb/Analect
-+00:A0:65  Symantec Corporation
- 00:A0:66  Isa Co., Ltd.
- 00:A0:67  Network Services Group
- 00:A0:68  Bhp Limited
--00:A0:69  Truetime
--00:A0:6A  Verilink Corp.
-+00:A0:69  Symmetricom, Inc.
-+00:A0:6A  Verilink Corporation
- 00:A0:6B  Dms Dorsch Mikrosystem Gmbh
- 00:A0:6C  Shindengen Electric Mfg. Co., Ltd.
- 00:A0:6D  Mannesmann Tally Corporation
- 00:A0:6E  Austron, Inc.
- 00:A0:6F  The Appcon Group, Inc.
- 00:A0:70  Coastcom
--00:A0:71  Video Lottery Technologies,inc
-+00:A0:71  Video Lottery Technologies,Inc
- 00:A0:72  Ovation Systems Ltd.
- 00:A0:73  Com21, Inc.
- 00:A0:74  Perception Technology
-@@ -5189,16 +6470,16 @@
- 00:A0:76  Cardware Lab, Inc.
- 00:A0:77  Fujitsu Nexion, Inc.
- 00:A0:78  Marconi Communications
--00:A0:79  Alps Electric (usa), Inc.
-+00:A0:79  Alps Electric (Usa), Inc.
- 00:A0:7A  Advanced Peripherals Technologies, Inc.
- 00:A0:7B  Dawn Computer Incorporation
- 00:A0:7C  Tonyang Nylon Co., Ltd.
- 00:A0:7D  Seeq Technology, Inc.
- 00:A0:7E  Avid Technology, Inc.
--00:A0:7F  Gsm-syntel, Ltd.
--00:A0:80  Antares Microsystems
-+00:A0:7F  Gsm-Syntel, Ltd.
-+00:A0:80  Sbe, Inc.
- 00:A0:81  Alcatel Data Networks
--00:A0:82  Nkt Elektronik A/s
-+00:A0:82  Nkt Elektronik A/S
- 00:A0:83  Asimmphony Turkey
- 00:A0:84  Dataplex Pty. Ltd.
- 00:A0:85  Private
-@@ -5215,13 +6496,13 @@
- 00:A0:90  Timestep Corporation
- 00:A0:91  Applicom International
- 00:A0:92  H. Bollmann Manufacturers, Ltd
--00:A0:93  B/e Aerospace, Inc.
-+00:A0:93  B/E Aerospace, Inc.
- 00:A0:94  Comsat Corporation
- 00:A0:95  Acacia Networks, Inc.
- 00:A0:96  Mitumi Electric Co., Ltd.
- 00:A0:97  Jc Information Systems
- 00:A0:98  Network Appliance Corp.
--00:A0:99  K-net Ltd.
-+00:A0:99  K-Net Ltd.
- 00:A0:9A  Nihon Kohden America
- 00:A0:9B  Qpsx Communications, Ltd.
- 00:A0:9C  Xyplex, Inc.
-@@ -5230,26 +6511,26 @@
- 00:A0:9F  Commvision Corp.
- 00:A0:A0  Compact Data, Ltd.
- 00:A0:A1  Epic Data Inc.
--00:A0:A2  Digicom S.p.a.
-+00:A0:A2  Digicom S.P.A.
- 00:A0:A3  Reliable Power Meters
- 00:A0:A4  Micros Systems, Inc.
- 00:A0:A5  Teknor Microsysteme, Inc.
--00:A0:A6  M.i. Systems, K.k.
-+00:A0:A6  M.I. Systems, K.K.
- 00:A0:A7  Vorax Corporation
- 00:A0:A8  Renex Corporation
--00:A0:A9  Gn Nettest (canada) Navtel Division
-+00:A0:A9  Gn Nettest (Canada) Navtel Division
- 00:A0:AA  Spacelabs Medical
- 00:A0:AB  Netcs Informationstechnik Gmbh
- 00:A0:AC  Gilat Satellite Networks, Ltd.
- 00:A0:AD  Marconi Spa
- 00:A0:AE  Nucom Systems, Inc.
- 00:A0:AF  Wms Industries
--00:A0:B0  I-o Data Device, Inc.
-+00:A0:B0  I-O Data Device, Inc.
- 00:A0:B1  First Virtual Corporation
- 00:A0:B2  Shima Seiki
- 00:A0:B3  Zykronix
- 00:A0:B4  Texas Microsystems, Inc.
--00:A0:B5  3h Technology
-+00:A0:B5  3H Technology
- 00:A0:B6  Sanritz Automation Co., Ltd.
- 00:A0:B7  Cordant, Inc.
- 00:A0:B8  Symbios Logic Inc.
-@@ -5257,12 +6538,12 @@
- 00:A0:BA  Patton Electronics Co.
- 00:A0:BB  Hilan Gmbh
- 00:A0:BC  Viasat, Incorporated
--00:A0:BD  I-tech Corp.
-+00:A0:BD  I-Tech Corp.
- 00:A0:BE  Integrated Circuit Systems, Inc. Communications Group
- 00:A0:BF  Wireless Data Group Motorola
- 00:A0:C0  Digital Link Corp.
- 00:A0:C1  Ortivus Medical Ab
--00:A0:C2  R.a. Systems Co., Ltd.
-+00:A0:C2  R.A. Systems Co., Ltd.
- 00:A0:C3  Unicomputer Gmbh
- 00:A0:C4  Cristie Electronics Ltd.
- 00:A0:C5  Zyxel Communication
-@@ -5272,7 +6553,7 @@
- 00:A0:C9  Intel Corporation - Hf1-06
- 00:A0:CA  Fujitsu Denso Ltd.
- 00:A0:CB  Ark Telecommunications, Inc.
--00:A0:CC  Lite-on Communications, Inc.
-+00:A0:CC  Lite-On Communications, Inc.
- 00:A0:CD  Dr. Johannes Heidenhain Gmbh
- 00:A0:CE  Astrocom Corporation
- 00:A0:CF  Sotas, Inc.
-@@ -5288,7 +6569,7 @@
- 00:A0:D9  Convex Computer Corporation
- 00:A0:DA  Integrated Systems Technology, Inc.
- 00:A0:DB  Fisher & Paykel Production
--00:A0:DC  O.n. Electronic Co., Ltd.
-+00:A0:DC  O.N. Electronic Co., Ltd.
- 00:A0:DD  Azonix Corporation
- 00:A0:DE  Yamaha Corporation
- 00:A0:DF  Sts Technologies, Inc.
-@@ -5303,7 +6584,7 @@
- 00:A0:E8  Reuters Holdings Plc
- 00:A0:E9  Electronic Retailing Systems International
- 00:A0:EA  Ethercom Corp.
--00:A0:EB  Fastcomm Communications Corp.
-+00:A0:EB  Encore Networks
- 00:A0:EC  Transmitton Ltd.
- 00:A0:ED  Pri Automation
- 00:A0:EE  Nashoba Networks
-@@ -5315,8 +6596,8 @@
- 00:A0:F4  Ge
- 00:A0:F5  Radguard Ltd.
- 00:A0:F6  Autogas Systems Inc.
--00:A0:F7  V.i Computer Corp.
--00:A0:F8  Symbol Spectrum24
-+00:A0:F7  V.I Computer Corp.
-+00:A0:F8  Symbol Technologies, Inc.
- 00:A0:F9  Bintec Communications Gmbh
- 00:A0:FA  Marconi Communication Gmbh
- 00:A0:FB  Toray Engineering Co., Ltd.
-@@ -5327,10 +6608,10 @@
- 00:AA:00  Intel Corporation
- 00:AA:01  Intel Corporation
- 00:AA:02  Intel Corporation
--00:AA:3C  Olivetti Telecom Spa (olteco)
-+00:AA:3C  Olivetti Telecom Spa (Olteco)
- 00:B0:09  Grass Valley Group
- 00:B0:17  Infogear Technology Corp.
--00:B0:19  Casi-rusco
-+00:B0:19  Casi-Rusco
- 00:B0:1C  Westport Technologies
- 00:B0:1E  Rantic Labs, Inc.
- 00:B0:2A  Orsys Gmbh
-@@ -5342,14 +6623,14 @@
- 00:B0:64  Cisco Systems, Inc.
- 00:B0:69  Honewell Oy
- 00:B0:6D  Jones Futurex Inc.
--00:B0:80  Mannesmann Ipulsys B.v.
-+00:B0:80  Mannesmann Ipulsys B.V.
- 00:B0:86  Locsoft Limited
- 00:B0:8E  Cisco Systems, Inc.
- 00:B0:91  Transmeta Corp.
- 00:B0:94  Alaris, Inc.
- 00:B0:9A  Morrow Technologies Corp.
- 00:B0:9D  Point Grey Research Inc.
--00:B0:AC  Siae-microelettronica S.p.a.
-+00:B0:AC  Siae-Microelettronica S.P.A.
- 00:B0:AE  Symmetricom
- 00:B0:B3  Xstreamis Plc
- 00:B0:C2  Cisco Systems, Inc.
-@@ -5364,19 +6645,19 @@
- 00:B0:F0  Caly Networks
- 00:B0:F5  Networth Technologies, Inc.
- 00:BB:01  Octothorpe Corp.
--00:BB:F0  Ungermann-bass Inc.
-+00:BB:F0  Ungermann-Bass Inc.
- 00:C0:00  Lanoptics, Ltd.
- 00:C0:01  Diatek Patient Managment
- 00:C0:02  Sercomm Corporation
- 00:C0:03  Globalnet Communications
--00:C0:04  Japan Business Computer Co.ltd
-+00:C0:04  Japan Business Computer Co.Ltd
- 00:C0:05  Livingston Enterprises, Inc.
- 00:C0:06  Nippon Avionics Co., Ltd.
- 00:C0:07  Pinnacle Data Systems, Inc.
- 00:C0:08  Seco Srl
--00:C0:09  Kt Technology (s) Pte Ltd
-+00:C0:09  Kt Technology (S) Pte Ltd
- 00:C0:0A  Micro Craft
--00:C0:0B  Norcontrol A.s.
-+00:C0:0B  Norcontrol A.S.
- 00:C0:0C  Relia Technolgies
- 00:C0:0D  Advanced Logic Research, Inc.
- 00:C0:0E  Psitech, Inc.
-@@ -5385,7 +6666,7 @@
- 00:C0:11  Interactive Computing Devices
- 00:C0:12  Netspan Corporation
- 00:C0:13  Netrix
--00:C0:14  Telematics Calabasas Int'l,inc
-+00:C0:14  Telematics Calabasas Int'l,Inc
- 00:C0:15  New Media Corporation
- 00:C0:16  Electronic Theatre Controls
- 00:C0:17  Forte Networks
-@@ -5396,7 +6677,7 @@
- 00:C0:1C  Interlink Communications Ltd.
- 00:C0:1D  Grand Junction Networks, Inc.
- 00:C0:1E  La Francaise Des Jeux
--00:C0:1F  S.e.r.c.e.l.
-+00:C0:1F  S.E.R.C.E.L.
- 00:C0:20  Arco Electronic, Control Ltd.
- 00:C0:21  Netexpress
- 00:C0:22  Lasermaster Technologies, Inc.
-@@ -5415,7 +6696,7 @@
- 00:C0:2F  Okuma Corporation
- 00:C0:30  Integrated Engineering B. V.
- 00:C0:31  Design Research Systems, Inc.
--00:C0:32  I-cubed Limited
-+00:C0:32  I-Cubed Limited
- 00:C0:33  Telebit Communications Aps
- 00:C0:34  Transaction Network
- 00:C0:35  Quintar Company
-@@ -5423,9 +6704,9 @@
- 00:C0:37  Dynatem
- 00:C0:38  Raster Image Processing System
- 00:C0:39  Tdk Semiconductor Corporation
--00:C0:3A  Men-mikro Elektronik Gmbh
-+00:C0:3A  Men-Mikro Elektronik Gmbh
- 00:C0:3B  Multiaccess Computing Corp.
--00:C0:3C  Tower Tech S.r.l.
-+00:C0:3C  Tower Tech S.R.L.
- 00:C0:3D  Wiesemann & Theis Gmbh
- 00:C0:3E  Fa. Gebr. Heller Gmbh
- 00:C0:3F  Stores Automated Systems, Inc.
-@@ -5438,16 +6719,16 @@
- 00:C0:46  Kemitron Ltd.
- 00:C0:47  Unimicro Systems, Inc.
- 00:C0:48  Bay Technical Associates
--00:C0:49  U.s. Robotics, Inc.
-+00:C0:49  U.S. Robotics, Inc.
- 00:C0:4A  Group 2000 Ag
- 00:C0:4B  Creative Microsystems
- 00:C0:4C  Department Of Foreign Affairs
- 00:C0:4D  Mitec, Inc.
- 00:C0:4E  Comtrol Corporation
- 00:C0:4F  Dell Computer Corporation
--00:C0:50  Toyo Denki Seizo K.k.
-+00:C0:50  Toyo Denki Seizo K.K.
- 00:C0:51  Advanced Integration Research
--00:C0:52  Burr-brown
-+00:C0:52  Burr-Brown
- 00:C0:53  Davox Corporation
- 00:C0:54  Network Peripherals, Ltd.
- 00:C0:55  Modular Computing Technologies
-@@ -5458,9 +6739,9 @@
- 00:C0:5A  Semaphore Communications Corp.
- 00:C0:5B  Networks Northwest, Inc.
- 00:C0:5C  Elonex Plc
--00:C0:5D  L&n Technologies
--00:C0:5E  Vari-lite, Inc.
--00:C0:5F  Fine-pal Company Limited
-+00:C0:5D  L&N Technologies
-+00:C0:5E  Vari-Lite, Inc.
-+00:C0:5F  Fine-Pal Company Limited
- 00:C0:60  Id Scandinavia As
- 00:C0:61  Solectek Corporation
- 00:C0:62  Impulse Technology
-@@ -5470,24 +6751,24 @@
- 00:C0:66  Docupoint, Inc.
- 00:C0:67  United Barcode Industries
- 00:C0:68  Philip Drake Electronics Ltd.
--00:C0:69  Adaptive Broadband Corporation
--00:C0:6A  Zahner-elektrik Gmbh & Co. Kg
-+00:C0:69  Axxcelera Broadband Wireless
-+00:C0:6A  Zahner-Elektrik Gmbh & Co. Kg
- 00:C0:6B  Osi Plus Corporation
- 00:C0:6C  Svec Computer Corp.
- 00:C0:6D  Boca Research, Inc.
- 00:C0:6E  Haft Technology, Inc.
- 00:C0:6F  Komatsu Ltd.
--00:C0:70  Sectra Secure-transmission Ab
-+00:C0:70  Sectra Secure-Transmission Ab
- 00:C0:71  Areanex Communications, Inc.
- 00:C0:72  Knx Ltd.
- 00:C0:73  Xedia Corporation
- 00:C0:74  Toyoda Automatic Loom
- 00:C0:75  Xante Corporation
--00:C0:76  I-data International A-s
-+00:C0:76  I-Data International A-S
- 00:C0:77  Daewoo Telecom Ltd.
- 00:C0:78  Computer Systems Engineering
--00:C0:79  Fonsys Co.,ltd.
--00:C0:7A  Priva B.v.
-+00:C0:79  Fonsys Co.,Ltd.
-+00:C0:7A  Priva B.V.
- 00:C0:7B  Ascend Communications, Inc.
- 00:C0:7C  Hightech Information
- 00:C0:7D  Risc Developments Ltd.
-@@ -5509,7 +6790,7 @@
- 00:C0:8D  Tronix Product Development
- 00:C0:8E  Network Information Technology
- 00:C0:8F  Matsushita Electric Works, Ltd
--00:C0:90  Praim S.r.l.
-+00:C0:90  Praim S.R.L.
- 00:C0:91  Jabil Circuit, Inc.
- 00:C0:92  Mennen Medical Inc.
- 00:C0:93  Alta Research Corp.
-@@ -5518,16 +6799,16 @@
- 00:C0:96  Tamura Corporation
- 00:C0:97  Archipel Sa
- 00:C0:98  Chuntex Electronic Co., Ltd.
--00:C0:99  Yoshiki Industrial Co.,ltd.
-+00:C0:99  Yoshiki Industrial Co.,Ltd.
- 00:C0:9A  Photonics Corporation
--00:C0:9B  Reliance Comm/tec, R-tec
-+00:C0:9B  Reliance Comm/Tec, R-Tec
- 00:C0:9C  Toa Electronic Ltd.
- 00:C0:9D  Distributed Systems Int'l, Inc
- 00:C0:9E  Cache Computers, Inc.
- 00:C0:9F  Quanta Computer, Inc.
- 00:C0:A0  Advance Micro Research, Inc.
- 00:C0:A1  Tokyo Denshi Sekei Co.
--00:C0:A2  Intermedium A/s
-+00:C0:A2  Intermedium A/S
- 00:C0:A3  Dual Enterprises Corporation
- 00:C0:A4  Unigraf Oy
- 00:C0:A5  Dickens Data Systems
-@@ -5541,24 +6822,24 @@
- 00:C0:AD  Marben Communication Systems
- 00:C0:AE  Towercom Co. Inc. Dba Pc House
- 00:C0:AF  Teklogix Inc.
--00:C0:B0  Gcc Technologies,inc.
-+00:C0:B0  Gcc Technologies,Inc.
- 00:C0:B1  Genius Net Co.
- 00:C0:B2  Norand Corporation
- 00:C0:B3  Comstat Datacomm Corporation
- 00:C0:B4  Myson Technology, Inc.
--00:C0:B5  Corporate Network Systems,inc.
--00:C0:B6  Snap Appliances, Inc.
-+00:C0:B5  Corporate Network Systems,Inc.
-+00:C0:B6  Snap Appliance, Inc.
- 00:C0:B7  American Power Conversion Corp
- 00:C0:B8  Fraser's Hill Ltd.
- 00:C0:B9  Funk Software, Inc.
- 00:C0:BA  Netvantage
- 00:C0:BB  Forval Creative, Inc.
--00:C0:BC  Telecom Australia/cssc
-+00:C0:BC  Telecom Australia/Cssc
- 00:C0:BD  Inex Technologies, Inc.
- 00:C0:BE  Alcatel - Sel
- 00:C0:BF  Technology Concepts, Ltd.
- 00:C0:C0  Shore Microsystems, Inc.
--00:C0:C1  Quad/graphics, Inc.
-+00:C0:C1  Quad/Graphics, Inc.
- 00:C0:C2  Infinite Networks Ltd.
- 00:C0:C3  Acuson Computed Sonography
- 00:C0:C4  Computer Operational
-@@ -5570,7 +6851,7 @@
- 00:C0:CA  Alfa, Inc.
- 00:C0:CB  Control Technology Corporation
- 00:C0:CC  Telesciences Co Systems, Inc.
--00:C0:CD  Comelta, S.a.
-+00:C0:CD  Comelta, S.A.
- 00:C0:CE  Cei Systems & Engineering Pte
- 00:C0:CF  Imatran Voima Oy
- 00:C0:D0  Ratoc System Inc.
-@@ -5584,7 +6865,7 @@
- 00:C0:D8  Universal Data Systems
- 00:C0:D9  Quinte Network Confidentiality
- 00:C0:DA  Nice Systems Ltd.
--00:C0:DB  Ipc Corporation (pte) Ltd.
-+00:C0:DB  Ipc Corporation (Pte) Ltd.
- 00:C0:DC  Eos Technologies, Inc.
- 00:C0:DD  Qlogic Corporation
- 00:C0:DE  Zcomm, Inc.
-@@ -5594,7 +6875,7 @@
- 00:C0:E2  Calcomp, Inc.
- 00:C0:E3  Ositech Communications, Inc.
- 00:C0:E4  Siemens Building
--00:C0:E5  Gespac, S.a.
-+00:C0:E5  Gespac, S.A.
- 00:C0:E6  Verilink Corporation
- 00:C0:E7  Fiberdata Ab
- 00:C0:E8  Plexcom, Inc.
-@@ -5633,7 +6914,7 @@
- 00:D0:07  Mic Associates, Inc.
- 00:D0:08  Mactell Corporation
- 00:D0:09  Hsing Tech. Enterprise Co. Ltd
--00:D0:0A  Lanaccess Telecom S.a.
-+00:D0:0A  Lanaccess Telecom S.A.
- 00:D0:0B  Rhk Technology, Inc.
- 00:D0:0C  Snijder Micro Systems
- 00:D0:0D  Micromeritics Instrument
-@@ -5649,7 +6930,7 @@
- 00:D0:17  Syntech Information Co., Ltd.
- 00:D0:18  Qwes. Com, Inc.
- 00:D0:19  Dainippon Screen Corporate
--00:D0:1A  Urmet Sud S.p.a.
-+00:D0:1A  Urmet Sud S.P.A.
- 00:D0:1B  Mimaki Engineering Co., Ltd.
- 00:D0:1C  Sbs Technologies,
- 00:D0:1D  Furuno Electric Co., Ltd.
-@@ -5665,7 +6946,7 @@
- 00:D0:27  Applied Automation, Inc.
- 00:D0:28  Omneon Video Networks
- 00:D0:29  Wakefern Food Corporation
--00:D0:2A  Flexion Systems
-+00:D0:2A  Voxent Systems Ltd.
- 00:D0:2B  Jetcell, Inc.
- 00:D0:2C  Campbell Scientific, Inc.
- 00:D0:2D  Ademco
-@@ -5678,13 +6959,13 @@
- 00:D0:34  Ormec Systems Corp.
- 00:D0:35  Behavior Tech. Computer Corp.
- 00:D0:36  Technology Atlanta Corp.
--00:D0:37  Philips-dvs-lo Bdr
-+00:D0:37  Philips-Dvs-Lo Bdr
- 00:D0:38  Fivemere, Ltd.
- 00:D0:39  Utilicom, Inc.
- 00:D0:3A  Zoneworx, Inc.
- 00:D0:3B  Vision Products Pty. Ltd.
- 00:D0:3C  Vieo, Inc.
--00:D0:3D  Private
-+00:D0:3D  Galileo Technology, Ltd.
- 00:D0:3E  Rocketchips, Inc.
- 00:D0:3F  American Communication
- 00:D0:40  Sysmate Co., Ltd.
-@@ -5698,7 +6979,7 @@
- 00:D0:48  Ecton, Inc.
- 00:D0:49  Impresstek Co., Ltd.
- 00:D0:4A  Presence Technology Gmbh
--00:D0:4B  La Cie Group S.a.
-+00:D0:4B  La Cie Group S.A.
- 00:D0:4C  Eurotel Telecom Ltd.
- 00:D0:4D  Div Of Research & Statistics
- 00:D0:4E  Logibag
-@@ -5708,7 +6989,7 @@
- 00:D0:52  Ascend Communications, Inc.
- 00:D0:53  Connected Systems
- 00:D0:54  Sas Institute Inc.
--00:D0:55  Kathrein-werke Kg
-+00:D0:55  Kathrein-Werke Kg
- 00:D0:56  Somat Corporation
- 00:D0:57  Ultrak, Inc.
- 00:D0:58  Cisco Systems, Inc.
-@@ -5747,7 +7028,7 @@
- 00:D0:79  Cisco Systems, Inc.
- 00:D0:7A  Amaquest Computer Corp.
- 00:D0:7B  Comcam International Ltd.
--00:D0:7C  Koyo Electronics Inc. Co.,ltd.
-+00:D0:7C  Koyo Electronics Inc. Co.,Ltd.
- 00:D0:7D  Cosine Communications
- 00:D0:7E  Keycorp Ltd.
- 00:D0:7F  Strategy & Technology, Limited
-@@ -5759,7 +7040,7 @@
- 00:D0:85  Otis Elevator Company
- 00:D0:86  Foveon, Inc.
- 00:D0:87  Microfirst Inc.
--00:D0:88  Mainsail Networks, Inc.
-+00:D0:88  Terayon Communications Systems
- 00:D0:89  Dynacolor, Inc.
- 00:D0:8A  Photron Usa
- 00:D0:8B  Adva Limited
-@@ -5773,7 +7054,7 @@
- 00:D0:93  Tq - Components Gmbh
- 00:D0:94  Timeline Vista, Inc.
- 00:D0:95  Xylan Corporation
--00:D0:96  3com Europe Ltd.
-+00:D0:96  3Com Europe Ltd.
- 00:D0:97  Cisco Systems, Inc.
- 00:D0:98  Photon Dynamics Canada Inc.
- 00:D0:99  Elcard Oy
-@@ -5781,7 +7062,7 @@
- 00:D0:9B  Spectel Ltd.
- 00:D0:9C  Kapadia Communications
- 00:D0:9D  Veris Industries
--00:D0:9E  2wire, Inc.
-+00:D0:9E  2Wire, Inc.
- 00:D0:9F  Novtek Test Systems
- 00:D0:A0  Mips Denmark
- 00:D0:A1  Oskar Vierling Gmbh + Co. Kg
-@@ -5798,7 +7079,7 @@
- 00:D0:AC  Grayson Wireless
- 00:D0:AD  Tl Industries
- 00:D0:AE  Oresis Communications, Inc.
--00:D0:AF  Cutler-hammer, Inc.
-+00:D0:AF  Cutler-Hammer, Inc.
- 00:D0:B0  Bitswitch Ltd.
- 00:D0:B1  Omega Electronics Sa
- 00:D0:B2  Xiotech Corporation
-@@ -5807,7 +7088,7 @@
- 00:D0:B5  Ipricot Formerly Dotcom
- 00:D0:B6  Crescent Networks, Inc.
- 00:D0:B7  Intel Corporation
--00:D0:B8  Iomega Corp.
-+00:D0:B8  Iomega Corporation
- 00:D0:B9  Microtek International, Inc.
- 00:D0:BA  Cisco Systems, Inc.
- 00:D0:BB  Cisco Systems, Inc.
-@@ -5823,7 +7104,7 @@
- 00:D0:C5  Computational Systems, Inc.
- 00:D0:C6  Thomas & Betts Corp.
- 00:D0:C7  Pathway, Inc.
--00:D0:C8  I/o Consulting A/s
-+00:D0:C8  I/O Consulting A/S
- 00:D0:C9  Advantech Co., Ltd.
- 00:D0:CA  Intrinsyc Software Inc.
- 00:D0:CB  Dasan Co., Ltd.
-@@ -5835,11 +7116,11 @@
- 00:D0:D1  Sirocco Systems, Inc.
- 00:D0:D2  Epilog Corporation
- 00:D0:D3  Cisco Systems, Inc.
--00:D0:D4  V-bits, Inc.
-+00:D0:D4  V-Bits, Inc.
- 00:D0:D5  Grundig Ag
- 00:D0:D6  Aethra Telecomunicazioni
--00:D0:D7  B2c2, Inc.
--00:D0:D8  3com Corporation
-+00:D0:D7  B2C2, Inc.
-+00:D0:D8  3Com Corporation
- 00:D0:D9  Dedicated Microcomputers
- 00:D0:DA  Taicom Data Systems Co., Ltd.
- 00:D0:DB  Mcquay International
-@@ -5850,7 +7131,7 @@
- 00:D0:E0  Dooin Electronics Co.
- 00:D0:E1  Avionitek Israel Inc.
- 00:D0:E2  Mrt Micro, Inc.
--00:D0:E3  Ele-chem Engineering Co., Ltd.
-+00:D0:E3  Ele-Chem Engineering Co., Ltd.
- 00:D0:E4  Cisco Systems, Inc.
- 00:D0:E5  Solidum Systems Corp.
- 00:D0:E6  Ibond Inc.
-@@ -5876,30 +7157,30 @@
- 00:D0:FA  Racal Guardata
- 00:D0:FB  Tek Microsystems, Incorporated
- 00:D0:FC  Granite Microsystems
--00:D0:FD  Optima Tele.com, Inc.
-+00:D0:FD  Optima Tele.Com, Inc.
- 00:D0:FE  Astral Point
- 00:D0:FF  Cisco Systems, Inc.
--00:DD:00  Ungermann-bass Inc.
--00:DD:01  Ungermann-bass Inc.
--00:DD:02  Ungermann-bass Inc.
--00:DD:03  Ungermann-bass Inc.
--00:DD:04  Ungermann-bass Inc.
--00:DD:05  Ungermann-bass Inc.
--00:DD:06  Ungermann-bass Inc.
--00:DD:07  Ungermann-bass Inc.
--00:DD:08  Ungermann-bass Inc.
--00:DD:09  Ungermann-bass Inc.
--00:DD:0A  Ungermann-bass Inc.
--00:DD:0B  Ungermann-bass Inc.
--00:DD:0C  Ungermann-bass Inc.
--00:DD:0D  Ungermann-bass Inc.
--00:DD:0E  Ungermann-bass Inc.
--00:DD:0F  Ungermann-bass Inc.
-+00:DD:00  Ungermann-Bass Inc.
-+00:DD:01  Ungermann-Bass Inc.
-+00:DD:02  Ungermann-Bass Inc.
-+00:DD:03  Ungermann-Bass Inc.
-+00:DD:04  Ungermann-Bass Inc.
-+00:DD:05  Ungermann-Bass Inc.
-+00:DD:06  Ungermann-Bass Inc.
-+00:DD:07  Ungermann-Bass Inc.
-+00:DD:08  Ungermann-Bass Inc.
-+00:DD:09  Ungermann-Bass Inc.
-+00:DD:0A  Ungermann-Bass Inc.
-+00:DD:0B  Ungermann-Bass Inc.
-+00:DD:0C  Ungermann-Bass Inc.
-+00:DD:0D  Ungermann-Bass Inc.
-+00:DD:0E  Ungermann-Bass Inc.
-+00:DD:0F  Ungermann-Bass Inc.
- 00:E0:00  Fujitsu, Ltd
- 00:E0:01  Strand Lighting Limited
- 00:E0:02  Crossroads Systems, Inc.
- 00:E0:03  Nokia Wireless Business Commun
--00:E0:04  Pmc-sierra, Inc.
-+00:E0:04  Pmc-Sierra, Inc.
- 00:E0:05  Technical Corp.
- 00:E0:06  Silicon Integrated Sys. Corp.
- 00:E0:07  Network Alchemy Ltd.
-@@ -5911,8 +7192,8 @@
- 00:E0:0D  Radiant Systems
- 00:E0:0E  Avalon Imaging Systems, Inc.
- 00:E0:0F  Shanghai Baud Data
--00:E0:10  Hess Sb-automatenbau Gmbh
--00:E0:11  Uniden San Diego R&d Center, Inc.
-+00:E0:10  Hess Sb-Automatenbau Gmbh
-+00:E0:11  Uniden San Diego R&D Center, Inc.
- 00:E0:12  Pluto Technologies International Inc.
- 00:E0:13  Eastern Electronic Co., Ltd.
- 00:E0:14  Cisco Systems, Inc.
-@@ -5929,24 +7210,24 @@
- 00:E0:1F  Avidia Systems, Inc.
- 00:E0:20  Tecnomen Oy
- 00:E0:21  Freegate Corp.
--00:E0:22  Medialight, Inc.
-+00:E0:22  Analog Devices Inc.
- 00:E0:23  Telrad
- 00:E0:24  Gadzoox Networks
- 00:E0:25  Dit Co., Ltd.
- 00:E0:26  Eastman Kodak Co.
- 00:E0:27  Dux, Inc.
- 00:E0:28  Aptix Corporation
--00:E0:29  OEM OEM
-+00:E0:29  Standard Microsystems Corp.
- 00:E0:2A  Tandberg Television As
- 00:E0:2B  Extreme Networks
- 00:E0:2C  Ast Computer
- 00:E0:2D  Innomedialogic, Inc.
- 00:E0:2E  Spc Electronics Corporation
--00:E0:2F  Mcns Holdings, L.p.
-+00:E0:2F  Mcns Holdings, L.P.
- 00:E0:30  Melita International Corp.
- 00:E0:31  Hagiwara Electric Co., Ltd.
- 00:E0:32  Misys Financial Systems, Ltd.
--00:E0:33  E.e.p.d. Gmbh
-+00:E0:33  E.E.P.D. Gmbh
- 00:E0:34  Cisco Systems, Inc.
- 00:E0:35  Loughborough Sound Images, Plc
- 00:E0:36  Pioneer Corporation
-@@ -5956,7 +7237,7 @@
- 00:E0:3A  Cabletron Systems, Inc.
- 00:E0:3B  Prominet Corporation
- 00:E0:3C  Advansys
--00:E0:3D  Focon Electronic Systems A/s
-+00:E0:3D  Focon Electronic Systems A/S
- 00:E0:3E  Alfatech, Inc.
- 00:E0:3F  Jaton Corporation
- 00:E0:40  Deskstation Technology, Inc.
-@@ -5980,17 +7261,17 @@
- 00:E0:52  Foundry Networks, Inc.
- 00:E0:53  Cellport Labs, Inc.
- 00:E0:54  Kodai Hitec Co., Ltd.
--00:E0:55  Ingenieria Electronica Comercial Inelcom S.a.
-+00:E0:55  Ingenieria Electronica Comercial Inelcom S.A.
- 00:E0:56  Holontech Corporation
- 00:E0:57  Han Microtelecom. Co., Ltd.
--00:E0:58  Phase One Denmark A/s
-+00:E0:58  Phase One Denmark A/S
- 00:E0:59  Controlled Environments, Ltd.
- 00:E0:5A  Galea Network Security
- 00:E0:5B  West End Systems Corp.
- 00:E0:5C  Matsushita Kotobuki Electronics Industries, Ltd.
- 00:E0:5D  Unitec Co., Ltd.
- 00:E0:5E  Japan Aviation Electronics Industry, Ltd.
--00:E0:5F  E-net, Inc.
-+00:E0:5F  E-Net, Inc.
- 00:E0:60  Sherwood
- 00:E0:61  Edgepoint Networks, Inc.
- 00:E0:62  Host Engineering
-@@ -5998,36 +7279,36 @@
- 00:E0:64  Samsung Electronics
- 00:E0:65  Optical Access International
- 00:E0:66  Promax Systems, Inc.
--00:E0:67  Eac Automation-consulting Gmbh
-+00:E0:67  Eac Automation-Consulting Gmbh
- 00:E0:68  Merrimac Systems Inc.
- 00:E0:69  Jaycor
- 00:E0:6A  Kapsch Ag
--00:E0:6B  W&g Special Products
-+00:E0:6B  W&G Special Products
- 00:E0:6C  Aep Systems International Ltd
- 00:E0:6D  Compuware Corporation
--00:E0:6E  Far Systems S.p.a.
--00:E0:6F  Terayon Corp.
-+00:E0:6E  Far Systems S.P.A.
-+00:E0:6F  Terayon Communications Systems
- 00:E0:70  Dh Technology
- 00:E0:71  Epis Microcomputer
- 00:E0:72  Lynk
- 00:E0:73  National Amusement Network, Inc.
- 00:E0:74  Tiernan Communications, Inc.
--00:E0:75  Atlas Computer Equipment, Inc.
-+00:E0:75  Verilink Corporation
- 00:E0:76  Development Concepts, Inc.
- 00:E0:77  Webgear, Inc.
- 00:E0:78  Berkeley Networks
--00:E0:79  A.t.n.r.
-+00:E0:79  A.T.N.R.
- 00:E0:7A  Mikrodidakt Ab
- 00:E0:7B  Bay Networks
--00:E0:7C  Mettler-toledo, Inc.
-+00:E0:7C  Mettler-Toledo, Inc.
- 00:E0:7D  Netronix, Inc.
- 00:E0:7E  Walt Disney Imagineering
--00:E0:7F  Logististem S.r.l.
-+00:E0:7F  Logististem S.R.L.
- 00:E0:80  Control Resources Corporation
- 00:E0:81  Tyan Computer Corp.
- 00:E0:82  Anerma
- 00:E0:83  Jato Technologies, Inc.
--00:E0:84  Compulite R&d
-+00:E0:84  Compulite R&D
- 00:E0:85  Global Maintech, Inc.
- 00:E0:86  Cybex Computer Products
- 00:E0:87  Lecroy - Networking Productions Division
-@@ -6044,7 +7325,7 @@
- 00:E0:92  Admtek Incorporated
- 00:E0:93  Ackfin Networks
- 00:E0:94  Osai Srl
--00:E0:95  Advanced-vision Technolgies Corp.
-+00:E0:95  Advanced-Vision Technolgies Corp.
- 00:E0:96  Shimadzu Corporation
- 00:E0:97  Carrier Access Corporation
- 00:E0:98  Abocom Systems, Inc.
-@@ -6059,14 +7340,14 @@
- 00:E0:A1  Hima Paul Hildebrandt Gmbh Co. Kg
- 00:E0:A2  Microslate Inc.
- 00:E0:A3  Cisco Systems, Inc.
--00:E0:A4  Esaote S.p.a.
-+00:E0:A4  Esaote S.P.A.
- 00:E0:A5  Comcore Semiconductor, Inc.
- 00:E0:A6  Telogy Networks, Inc.
- 00:E0:A7  Ipc Information Systems, Inc.
- 00:E0:A8  Sat Gmbh & Co.
- 00:E0:A9  Funai Electric Co., Ltd.
- 00:E0:AA  Electrosonic Ltd.
--00:E0:AB  Dimat S.a.
-+00:E0:AB  Dimat S.A.
- 00:E0:AC  Midsco, Inc.
- 00:E0:AD  Ees Technology, Ltd.
- 00:E0:AE  Xaqti Corporation
-@@ -6089,11 +7370,11 @@
- 00:E0:BF  Torrent Networking Technologies Corp.
- 00:E0:C0  Seiwa Electric Mfg. Co., Ltd.
- 00:E0:C1  Memorex Telex Japan, Ltd.
--00:E0:C2  Necsy S.p.a.
-+00:E0:C2  Necsy S.P.A.
- 00:E0:C3  Sakai System Development Corp.
- 00:E0:C4  Horner Electric, Inc.
- 00:E0:C5  Bcom Electronics Inc.
--00:E0:C6  Link2it, L.l.c.
-+00:E0:C6  Link2It, L.L.C.
- 00:E0:C7  Eurotech Srl
- 00:E0:C8  Virtual Access, Ltd.
- 00:E0:C9  Automatedlogic Corporation
-@@ -6118,15 +7399,15 @@
- 00:E0:DC  Nexware Corp.
- 00:E0:DD  Zenith Electronics Corporation
- 00:E0:DE  Datax Nv
--00:E0:DF  Ke Kommunikations-electronik
-+00:E0:DF  Ke Kommunikations-Electronik
- 00:E0:E0  Si Electronics, Ltd.
- 00:E0:E1  G2 Networks, Inc.
- 00:E0:E2  Innova Corp.
--00:E0:E3  Sk-elektronik Gmbh
-+00:E0:E3  Sk-Elektronik Gmbh
- 00:E0:E4  Fanuc Robotics North America, Inc.
- 00:E0:E5  Cinco Networks, Inc.
--00:E0:E6  Incaa Datacom B.v.
--00:E0:E7  Raytheon E-systems, Inc.
-+00:E0:E6  Incaa Datacom B.V.
-+00:E0:E7  Raytheon E-Systems, Inc.
- 00:E0:E8  Gretacoder Data Systems Ag
- 00:E0:E9  Data Labs, Inc.
- 00:E0:EA  Innovat Communications, Inc.
-@@ -6139,7 +7420,7 @@
- 00:E0:F1  That Corporation
- 00:E0:F2  Arlotto Comnet, Inc.
- 00:E0:F3  Websprint Communications, Inc.
--00:E0:F4  Inside Technology A/s
-+00:E0:F4  Inside Technology A/S
- 00:E0:F5  Teles Ag
- 00:E0:F6  Decision Europe
- 00:E0:F7  Cisco Systems, Inc.
-@@ -6148,25 +7429,25 @@
- 00:E0:FA  Trl Technology, Ltd.
- 00:E0:FB  Leightronix, Inc.
- 00:E0:FC  Huawei Technologies Co., Ltd.
--00:E0:FD  A-trend Technology Co., Ltd.
-+00:E0:FD  A-Trend Technology Co., Ltd.
- 00:E0:FE  Cisco Systems, Inc.
- 00:E0:FF  Security Dynamics Technologies, Inc.
- 00:E6:D3  Nixdorf Computer Corp.
--02:07:01  Racal-datacom
-+02:07:01  Racal-Datacom
- 02:1C:7C  Perq Systems Corporation
- 02:60:86  Logic Replacement Tech. Ltd.
--02:60:8C  3com Corporation
--02:70:01  Racal-datacom
--02:70:B0  M/a-com Inc. Companies
-+02:60:8C  3Com Corporation
-+02:70:01  Racal-Datacom
-+02:70:B0  M/A-Com Inc. Companies
- 02:70:B3  Data Recall Ltd
- 02:9D:8E  Cardiac Recorders Inc.
--02:AA:3C  Olivetti Telecomm Spa (olteco)
-+02:AA:3C  Olivetti Telecomm Spa (Olteco)
- 02:BB:01  Octothorpe Corp.
--02:C0:8C  3com Corporation
-+02:C0:8C  3Com Corporation
- 02:CF:1C  Communication Machinery Corp.
- 02:E6:D3  Nixdorf Computer Corporation
- 04:0A:E0  Xmit Ag Computer Networks
--04:E0:C4  Triumph-adler Ag
-+04:E0:C4  Triumph-Adler Ag
- 08:00:01  Computervision Corporation
- 08:00:02  Bridge Communications Inc.
- 08:00:03  Advanced Computer Comm.
-@@ -6191,36 +7472,38 @@
- 08:00:17  National Semiconductor
- 08:00:18  Pirelli Focom Networks
- 08:00:19  General Electric Corporation
--08:00:1A  Tiara/ 10net
-+08:00:1A  Tiara/ 10Net
- 08:00:1B  Data General
--08:00:1C  Kdd-kokusai Debnsin Denwa Co.
-+08:00:1C  Kdd-Kokusai Debnsin Denwa Co.
- 08:00:1D  Able Communications Inc.
- 08:00:1E  Apollo Computer Inc.
- 08:00:1F  Sharp Corporation
- 08:00:20  Sun Microsystems Inc.
--08:00:21  3m Company
-+08:00:21  3M Company
- 08:00:22  Nbi Inc.
--08:00:23  Matsuhita Graphic Comm Sys Inc
--08:00:24  10net Communications/dca
-+08:00:23  Panasonic Communications Co., Ltd.
-+08:00:24  10Net Communications/Dca
- 08:00:25  Control Data
--08:00:26  Norsk Data A.s.
-+08:00:26  Norsk Data A.S.
- 08:00:27  Cadmus Computer Systems
- 08:00:28  Texas Instruments
- 08:00:29  Megatek Corporation
- 08:00:2A  Mosaic Technologies Inc.
- 08:00:2B  Digital Equipment Corporation
- 08:00:2C  Britton Lee Inc.
--08:00:2D  Lan-tec Inc.
-+08:00:2D  Lan-Tec Inc.
- 08:00:2E  Metaphor Computer Systems
- 08:00:2F  Prime Computer Inc.
-+08:00:30  Network Research Corporation
- 08:00:30  Cern
-+08:00:30  Royal Melbourne Inst Of Tech
- 08:00:31  Little Machines Inc.
- 08:00:32  Tigan Incorporated
- 08:00:33  Bausch & Lomb
- 08:00:34  Filenet Corporation
- 08:00:35  Microfive Corporation
- 08:00:36  Intergraph Corporation
--08:00:37  Fuji-xerox Co. Ltd.
-+08:00:37  Fuji-Xerox Co. Ltd.
- 08:00:38  Cii Honeywell Bull
- 08:00:39  Spider Systems Limited
- 08:00:3A  Orcatech Inc.
-@@ -6230,7 +7513,7 @@
- 08:00:3E  Codex Corporation
- 08:00:3F  Fred Koschara Enterprises
- 08:00:40  Ferranti Computer Sys. Limited
--08:00:41  Racal-milgo Information Sys..
-+08:00:41  Racal-Milgo Information Sys..
- 08:00:42  Japan Macnics Corp.
- 08:00:43  Pixel Computer Inc.
- 08:00:44  David Systems Inc.
-@@ -6243,7 +7526,7 @@
- 08:00:4B  Planning Research Corp.
- 08:00:4C  Hydra Computer Systems Inc.
- 08:00:4D  Corvus Systems Inc.
--08:00:4E  3com Europe Ltd.
-+08:00:4E  3Com Europe Ltd.
- 08:00:4F  Cygnet Systems
- 08:00:50  Daisy Systems Corp.
- 08:00:51  Experdata
-@@ -6253,7 +7536,7 @@
- 08:00:56  Stanford Linear Accel. Center
- 08:00:57  Evans & Sutherland
- 08:00:58  Systems Concepts
--08:00:59  A/s Mycron
-+08:00:59  A/S Mycron
- 08:00:5A  Ibm Corporation
- 08:00:5B  Vta Technologies Inc.
- 08:00:5C  Four Phase Systems
-@@ -6275,9 +7558,9 @@
- 08:00:6C  Suntek Technology Int'l
- 08:00:6D  Whitechapel Computer Works
- 08:00:6E  Masscomp
--08:00:6F  Philips Apeldoorn B.v.
-+08:00:6F  Philips Apeldoorn B.V.
- 08:00:70  Mitsubishi Electric Corp.
--08:00:71  Matra (dsie)
-+08:00:71  Matra (Dsie)
- 08:00:72  Xerox Corp Univ Grant Program
- 08:00:73  Tecmar Inc.
- 08:00:74  Casio Computer Co. Ltd.
-@@ -6289,15 +7572,15 @@
- 08:00:7A  Indata
- 08:00:7B  Sanyo Electric Co. Ltd.
- 08:00:7C  Vitalink Communications Corp.
--08:00:7E  Amalgamated Wireless(aus) Ltd
--08:00:7F  Carnegie-mellon University
-+08:00:7E  Amalgamated Wireless(Aus) Ltd
-+08:00:7F  Carnegie-Mellon University
- 08:00:80  Aes Data Inc.
--08:00:81  Astech Inc.
-+08:00:81  ,Astech Inc.
- 08:00:82  Veritas Software
--08:00:83  Seiko Instrum. And Electronics
-+08:00:83  Seiko Instruments Inc.
- 08:00:84  Tomen Electronics Corp.
- 08:00:85  Elxsi
--08:00:86  Imagen Corporation
-+08:00:86  Konica Minolta Holdings, Inc.
- 08:00:87  Xyplex
- 08:00:88  Mcdata Corporation
- 08:00:89  Kinetics
-@@ -6308,8 +7591,8 @@
- 08:00:8E  Tandem Computers
- 08:00:8F  Chipcom Corporation
- 08:00:90  Sonoma Systems
--08:14:43  Unibrain S.a.
--08:BB:CC  Ak-nord Edv Vertriebsges. Mbh
-+08:14:43  Unibrain S.A.
-+08:BB:CC  Ak-Nord Edv Vertriebsges. Mbh
- 10:00:00  Private
- 10:00:5A  Ibm Corporation
- 10:00:E8  National Semiconductor
-@@ -6321,3 +7604,4 @@
- AA:00:02  Digital Equipment Corporation
- AA:00:03  Digital Equipment Corporation
- AA:00:04  Digital Equipment Corporation
-+AC:DE:48  Private

diff --git a/pads-1.2-extra-libs.patch b/pads-1.2-extra-libs.patch
deleted file mode 100644
index 85c8da0..0000000
--- a/pads-1.2-extra-libs.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur pads-1.2.orig/src/Makefile.am pads-1.2/src/Makefile.am
---- pads-1.2.orig/src/Makefile.am	2019-02-11 16:48:47.516302720 -0500
-+++ pads-1.2/src/Makefile.am	2019-02-11 17:49:51.772909507 -0500
-@@ -12,7 +12,7 @@
-                util.c util.h \
-                global.h
- pads_LDFLAGS = -pthread
--pads_LDADD = $(top_srcdir)/lib/bstring/libbstring.a output/liboutput.a
-+pads_LDADD = $(top_srcdir)/lib/bstring/libbstring.a output/liboutput.a $(EXTRA_LIBS)
- bin_SCRIPTS = pads-report
- 
- EXTRA_DIST = pads-report.pl

diff --git a/pads-1.2-inline-cleanup.patch b/pads-1.2-inline-cleanup.patch
deleted file mode 100644
index 9f76219..0000000
--- a/pads-1.2-inline-cleanup.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -urp pads-1.2.orig/src/storage.c pads-1.2/src/storage.c
---- pads-1.2.orig/src/storage.c	2015-08-17 10:18:51.304266249 -0400
-+++ pads-1.2/src/storage.c	2015-08-17 10:22:40.551260540 -0400
-@@ -369,7 +369,7 @@ void end_storage ()
-  *		: 2 - Protocol
-  * RETURN	: Pointer to Asset
-  * ---------------------------------------------------------- */
--inline Asset *
-+Asset *
- find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto)
- {
-     Asset *list;
-diff -urp pads-1.2.orig/src/storage.h pads-1.2/src/storage.h
---- pads-1.2.orig/src/storage.h	2015-08-17 10:18:51.304266249 -0400
-+++ pads-1.2/src/storage.h	2015-08-17 10:21:10.412262785 -0400
-@@ -56,7 +56,7 @@ void add_arp_asset (struct in_addr ip_ad
- unsigned short get_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
- short update_i_attempts (unsigned short i_attempts);
- short update_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application);
--inline Asset *find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
-+Asset *find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
- Asset *get_asset_pointer (void);
- ArpAsset *get_arp_pointer (void);
- void end_storage (void);

diff --git a/pads-1.2-leak.patch b/pads-1.2-leak.patch
deleted file mode 100644
index 2aca8d9..0000000
--- a/pads-1.2-leak.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-diff -urp pads-1.2.orig/src/monnet.c pads-1.2/src/monnet.c
---- pads-1.2.orig/src/monnet.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/monnet.c	2008-07-11 14:06:36.000000000 -0400
-@@ -214,3 +214,23 @@ short check_monnet (const struct in_addr
-     /* Asset does not fall within a monitored network. */
-     return 0;
- }
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION     : end_monnet
-+ * DESCRIPTION  : This function will free all the records
-+ *              : placed in the monnet data structure.
-+ * INPUT        : None!
-+ * RETURN       : None!
-+ * ---------------------------------------------------------- */
-+void end_monnet (void)
-+{
-+    struct mon_net *next;
-+
-+    /* Free records in monnet list (mn). */
-+    while (mn != NULL) {
-+        next = mn->next;
-+        free (mn);
-+        mn = next;
-+    }
-+}
-+
-diff -urp pads-1.2.orig/src/monnet.h pads-1.2/src/monnet.h
---- pads-1.2.orig/src/monnet.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/monnet.h	2008-07-11 14:06:36.000000000 -0400
-@@ -44,6 +44,6 @@ void parse_networks (char *cmdline);
- void init_netmasks (unsigned int nm[33]);
- void add_monnet(char *network, char *netmask);
- short check_monnet (const struct in_addr ip_addr);
--
-+void end_monnet (void);
- 
- /* GLOBALS ----------------------------------------- */
-diff -urp pads-1.2.orig/src/output/output-prelude.c pads-1.2/src/output/output-prelude.c
---- pads-1.2.orig/src/output/output-prelude.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/output/output-prelude.c	2008-07-11 14:06:49.000000000 -0400
-@@ -117,7 +117,7 @@ static int init_prelude(void)
- static int new_alert_common(idmef_message_t **idmef, idmef_alert_t **alert)
- {
-         int ret;
--        idmef_time_t *ctime;
-+        idmef_time_t *dt_time, *cr_time;
- 
-         ret = idmef_message_new(idmef);
-         PRELUDE_FAIL_CHECK;
-@@ -130,10 +130,12 @@ static int new_alert_common(idmef_messag
-                         IDMEF_LIST_PREPEND);
- 
-         // Set time this was created
--        ret = idmef_time_new_from_gettimeofday(&ctime);
-+        ret = idmef_time_new_from_gettimeofday(&dt_time);
-         PRELUDE_FAIL_CHECK;
--        idmef_alert_set_detect_time(*alert, ctime);
--        idmef_alert_set_create_time(*alert, ctime);
-+        ret = idmef_time_clone(dt_time, &cr_time);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_alert_set_detect_time(*alert, dt_time);
-+        idmef_alert_set_create_time(*alert, cr_time);
- 
-         return 0;
-  err:
-@@ -287,6 +289,7 @@ static int asset_alert(Asset *a, idmef_m
- 	PRELUDE_FAIL_CHECK;
- 	ret = prelude_string_set_dup(name, (char *)bdata(a->service));
- 	PRELUDE_FAIL_CHECK;
-+        idmef_service_set_name(service, name);
- 	if (bdata(a->application) != NULL) {
- 		ret = idmef_alert_new_additional_data(alert, &data,
- 			IDMEF_LIST_APPEND);
-@@ -508,6 +511,7 @@ end_output_prelude ()
- 
-     if (client)
-         prelude_client_destroy(client, PRELUDE_CLIENT_EXIT_STATUS_SUCCESS);
-+    prelude_deinit();
-     free(profile);
- 
-     return 0;
-diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-07-11 14:06:36.000000000 -0400
-@@ -392,6 +392,7 @@ end_pads(void)
-     if (gc.handle) {
-         log_message("Closing PCAP Connection");
-         pcap_close(gc.handle);
-+        pcap_freecode(&gc.filter);
-     }
- 
-     /* Remove PID File */
-@@ -407,10 +408,13 @@ end_pads(void)
- #ifndef DISABLE_VENDOR
-     end_mac_resolution();
- #endif
-+    end_monnet();
- 
-     /* Garbage Collect GC Variable */
-     if (gc.conf_file != NULL)
-         bdestroy(gc.conf_file);
-+    if (gc.dev != NULL)
-+        free(gc.dev);
-     if (gc.report_file != NULL)
-         bdestroy(gc.report_file);
-     if (gc.fifo_file != NULL)
-diff -urp pads-1.2.orig/src/packet.c pads-1.2/src/packet.c
---- pads-1.2.orig/src/packet.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/packet.c	2008-07-10 13:04:38.000000000 -0400
-@@ -95,6 +95,10 @@ void process_sll (const struct pcap_pkth
-     /* Extract the sll header from the packet. */
-     sllh = (struct sll_header*) packet;
- 
-+    /* Avoid bogus packets */
-+    if (pkthdr->caplen < ETH_HLEN)
-+	return;
-+
-     /* Determine what type of sll packet this is. */
-     switch(ntohs(sllh->sll_protocol)) {
- 	/* IP */

diff --git a/pads-1.2-memleak.patch b/pads-1.2-memleak.patch
deleted file mode 100644
index 01f486d..0000000
--- a/pads-1.2-memleak.patch
+++ /dev/null
@@ -1,280 +0,0 @@
-diff -urp pads-1.2.orig/src/identification.c pads-1.2/src/identification.c
---- pads-1.2.orig/src/identification.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/identification.c	2008-06-30 16:12:11.000000000 -0400
-@@ -96,7 +96,7 @@ int parse_raw_signature (bstring line, i
-     struct bstrList *raw_sig;
-     struct bstrList *title = NULL;
-     Signature *sig;
--    bstring pcre_string;
-+    bstring pcre_string = NULL;
-     const char *err;            /* PCRE */
-     int erroffset;              /* PCRE */
-     int ret = 0;
-@@ -117,10 +117,12 @@ int parse_raw_signature (bstring line, i
-     } else if (raw_sig->qty > 3) {
-         pcre_string = bstrcpy(raw_sig->entry[2]);
-         for (i = 3; i < raw_sig->qty; i++) {
--            if ((bconcat(pcre_string, bfromcstr(","))) == BSTR_ERR)
-+            bstring tmp = bfromcstr(",");
-+            if ((bconcat(pcre_string, tmp)) == BSTR_ERR)
-                 ret = -1;
-             if ((bconcat(pcre_string, raw_sig->entry[i])) == BSTR_ERR)
-                 ret = -1;
-+            bdestroy(tmp);
-         }
-     } else {
-         pcre_string = bstrcpy(raw_sig->entry[2]);
-@@ -129,8 +131,10 @@ int parse_raw_signature (bstring line, i
-     /* Split Title */
-     if (raw_sig->entry[1] != NULL && ret != -1)
-         title = bsplit(raw_sig->entry[1], '/');
--    if (title == NULL)
-+    if (title == NULL) {
-+            bdestroy(pcre_string);
-             return -1;
-+    }
- 
-     if (title->qty < 3)
-         ret = -1;
-@@ -139,6 +143,7 @@ int parse_raw_signature (bstring line, i
-     if (ret != -1) {
-         sig = (Signature*)malloc(sizeof(Signature));
-         sig->next = NULL;
-+        sig->regex = NULL;
-         if (raw_sig->entry[0] != NULL)
-             sig->service = bstrcpy(raw_sig->entry[0]);
-         if (title->entry[1] != NULL)
-@@ -280,6 +285,7 @@ int pcre_identify (struct in_addr ip_add
-         if (rc != -1) {
-             app = get_app_name(list, payload, ovector, rc);
-             update_asset(ip_addr, port, proto, list->service, app);
-+            bdestroy(app);
-             return 1;
-         }
- 
-@@ -359,7 +365,7 @@ bstring get_app_name (Signature *sig,
-     }
-     sub[z] = '\0';
- 
--    retval = bstrcpy(bfromcstr(sub));
-+    retval = bfromcstr(sub);
-     return retval;
- 
- }
-@@ -388,6 +394,7 @@ void end_identification()
-             bdestroy(signature_list->title.ver);
-         if (signature_list->title.misc != NULL)
-             bdestroy(signature_list->title.misc);
-+        pcre_free(signature_list->regex);
- 
-         /* Free Record */
-         if (signature_list != NULL)
-diff -urp pads-1.2.orig/src/output/output.c pads-1.2/src/output/output.c
---- pads-1.2.orig/src/output/output.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/output/output.c	2008-06-30 16:12:11.000000000 -0400
-@@ -31,8 +31,8 @@
- #include "output-fifo.h"
- #include "storage.h"
- 
--/* Global Variables */
--OutputPluginList *output_plugin_list;
-+/* Local Variables */
-+static OutputPluginList *output_plugin_list = NULL;
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: init_output()
-@@ -77,6 +77,7 @@ int register_output_plugin (OutputPlugin
-     list = (OutputPluginList*)malloc(sizeof(OutputPluginList));
-     list->plugin = plugin;
-     list->active = 0;
-+    list->next = NULL;
- 
-     /* Place plugin in data structure. */
-     if (output_plugin_list == NULL) {
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-06-30 16:12:11.000000000 -0400
-@@ -46,7 +46,7 @@ setup_output_csv (void)
- 
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
--    plugin->name = bstrcpy(bfromcstr("csv"));
-+    plugin->name = bfromcstr("csv");
-     plugin->init = init_output_csv;
-     plugin->print_asset = print_asset_csv;
-     plugin->print_arp = print_arp_asset_csv;
-@@ -83,7 +83,7 @@ init_output_csv (bstring filename)
-     if (filename != NULL)
- 	output_csv_conf.filename = bstrcpy(filename);
-     else
--	output_csv_conf.filename = bstrcpy(bfromcstr("assets.csv"));
-+	output_csv_conf.filename = bfromcstr("assets.csv");
- 
-     /* Check to see if *filename exists. */
-     if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) {
-diff -urp pads-1.2.orig/src/output/output-fifo.c pads-1.2/src/output/output-fifo.c
---- pads-1.2.orig/src/output/output-fifo.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/output/output-fifo.c	2008-06-30 16:12:11.000000000 -0400
-@@ -71,7 +71,7 @@ setup_output_fifo (void)
- 
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
--    plugin->name = bstrcpy(bfromcstr("fifo"));
-+    plugin->name = bfromcstr("fifo");
-     plugin->init = init_output_fifo;
-     plugin->print_asset = print_asset_fifo;
-     plugin->print_arp = print_arp_asset_fifo;
-@@ -102,7 +102,7 @@ init_output_fifo (bstring fifo_file)
- 
-     /* Make sure report_file isn't NULL. */
-     if (fifo_file == NULL)
--	fifo_file = bstrcpy(bfromcstr("pads.fifo"));
-+	fifo_file = bfromcstr("pads.fifo");
- 
-     output_fifo_conf.filename = bstrcpy(fifo_file);
- 
-diff -urp pads-1.2.orig/src/output/output-screen.c pads-1.2/src/output/output-screen.c
---- pads-1.2.orig/src/output/output-screen.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/output/output-screen.c	2008-06-30 16:12:11.000000000 -0400
-@@ -43,7 +43,7 @@ setup_output_screen (void)
- 
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
--    plugin->name = bstrcpy(bfromcstr("screen"));
-+    plugin->name = bfromcstr("screen");
-     plugin->init = init_output_screen;
-     plugin->print_asset = print_asset_screen;
-     plugin->print_arp = print_arp_asset_screen;
-diff -urp pads-1.2.orig/src/packet.c pads-1.2/src/packet.c
---- pads-1.2.orig/src/packet.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/packet.c	2008-06-30 16:12:11.000000000 -0400
-@@ -211,8 +211,13 @@ void process_tcp (const struct pcap_pkth
- 
- 		/* Check to see if this is a known asset. */
- 		if(check_tcp_asset(ip_src, tcph->th_sport)) {
-+		    bstring serv, app;
-+		    serv = bfromcstr("unknown");
-+		    app = bfromcstr("unknown");
- 		    add_asset(ip_src, tcph->th_sport,
--			    IPPROTO_TCP, bfromcstr("unknown"), bfromcstr("unknown"), 0);
-+			    IPPROTO_TCP, serv, app, 0);
-+		    bdestroy(serv);
-+		    bdestroy(app);
- 		} else {
- 		    /* Record connection for statistical purposes. */
- 		    print_stat(ip_src, tcph->th_sport, IPPROTO_TCP);
-@@ -269,8 +274,13 @@ void process_icmp (const struct pcap_pkt
- 
-     if (icmp->icmp_type == ICMP_ECHOREPLY) {
- 	if(check_icmp_asset(ip_src)) {
--	    add_asset(ip_src, 0, IPPROTO_ICMP, bfromcstr("ICMP"), bfromcstr("ICMP"), 0);
-+	    bstring serv, app;
-+	    serv = bfromcstr("ICMP");
-+	    app = bfromcstr("ICMP");
-+	    add_asset(ip_src, 0, IPPROTO_ICMP, serv, app, 0);
- 	    print_asset(ip_src, 0, IPPROTO_ICMP);
-+	    bdestroy(serv);
-+	    bdestroy(app);
- 	}
-     }
- 
-diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-06-30 16:23:31.000000000 -0400
-@@ -165,9 +165,33 @@ print_version (void)
-  * FUNCTION     : init_pads
-  * DESCRIPTION  : This function will initialize PADS.
-  * ---------------------------------------------------------- */
-+void init_gc(void)
-+{
-+    gc.handle = NULL;
-+    gc.dev = NULL;
-+    gc.pcap_filter = NULL;
-+    gc.conf_file = NULL;
-+    gc.report_file = NULL;
-+    gc.fifo_file = NULL;
-+    gc.pcap_file = NULL;
-+    gc.dump_file = NULL;
-+    gc.pid_file = NULL;
-+    gc.sig_file = NULL;
-+    gc.mac_file = NULL;
-+    gc.priv_user = NULL;
-+    gc.priv_group = NULL;
-+}
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION     : init_pads
-+ * DESCRIPTION  : This function will initialize PADS.
-+ * ---------------------------------------------------------- */
- void
- init_pads (void)
- {
-+    /* Init global config to known state */
-+    init_gc();
-+
-     /* Process the command line parameters. */
-     process_cmdline(prog_argc, prog_argv);
- 
-@@ -179,15 +203,22 @@ init_pads (void)
-         init_configuration(gc.conf_file);
- 
-     } else {
--        /* Default Output Plugins:  These plugins are activated if a configuration
--         * file is not specified. */
-+        bstring name, args;
-+        /* Default Output Plugins:  These plugins are activated if a
-+         *  configuration file is not specified. */
- 
-         /* output:  screen */
--        if ((activate_output_plugin(bfromcstr("screen"), bfromcstr(""))) == -1)
-+        name = bfromcstr("screen");
-+        args = bfromcstr("");
-+        if ((activate_output_plugin(name, args)) == -1)
-             log_message("warning:  'activate_output_plugin' in function 'init_pads' failed.");
-+        bdestroy(name);
-+        bdestroy(args);
-         /* output:  csv */
--        if ((activate_output_plugin(bfromcstr("csv"), gc.report_file)) == -1)
-+        name = bfromcstr("csv");
-+        if ((activate_output_plugin(name, gc.report_file)) == -1)
-             log_message("warning:  'activate_output_plugin' in function 'init_pads' failed.");
-+        bdestroy(name);
-     }
- 
-     /* Initialize Modules */
-diff -urp pads-1.2.orig/src/storage.c pads-1.2/src/storage.c
---- pads-1.2.orig/src/storage.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/storage.c	2008-06-30 16:12:11.000000000 -0400
-@@ -29,8 +29,8 @@
- #include "storage.h"
- #include "mac-resolution.h"
- 
--Asset *asset_list;
--ArpAsset *arp_asset_list;
-+static Asset *asset_list = NULL;
-+static ArpAsset *arp_asset_list = NULL;
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: check_tcp_asset
-@@ -343,7 +343,9 @@ short update_asset (struct in_addr ip_ad
- 		&& port == list->port
- 		&& proto == list->proto) {
- 	    /* Found! */
-+	    bdestroy(list->service);
- 	    list->service = bstrcpy(service);
-+	    bdestroy(list->application);
- 	    list->application = bstrcpy(application);
- 	    return 0;
- 
-diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/util.c	2008-06-30 16:26:24.000000000 -0400
-@@ -120,7 +120,7 @@ init_pid_file (bstring pid_file, bstring
-     struct passwd *this_user;
- 
-     /* Default PID File */
--    if (gc.pid_file->slen >= 0)
-+    if (gc.pid_file == NULL || gc.pid_file->slen == 0)
-         gc.pid_file = bfromcstr("/var/run/pads.pid");
- 
-     /* Create PID File */

diff --git a/pads-1.2-misc.patch b/pads-1.2-misc.patch
deleted file mode 100644
index 544c178..0000000
--- a/pads-1.2-misc.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff -ur pads-1.2.orig/src/configuration.c pads-1.2/src/configuration.c
---- pads-1.2.orig/src/configuration.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/configuration.c	2008-07-01 21:11:22.000000000 -0400
-@@ -191,8 +191,10 @@
-                 log_message("warning:  'ptrFunc' in function 'conf_module_processor' failed.");
-         } else {
-             /* Input processor does not contain an argument. */
--            if (((*ptrFunc)(list->entry[0], bfromcstr(""))) == -1)
-+            bstring empty = bfromcstr("");
-+            if (((*ptrFunc)(list->entry[0], empty)) == -1)
-                 log_message("warning:  'ptrFunc' in function 'conf_module_processor' failed.");
-+            bdestroy(empty);
-         }
-         if (list != NULL)
-             bstrListDestroy(list);
-diff -ur pads-1.2.orig/src/monnet.c pads-1.2/src/monnet.c
---- pads-1.2.orig/src/monnet.c	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/monnet.c	2008-07-01 20:37:50.000000000 -0400
-@@ -32,7 +32,7 @@
- #include "monnet.h"
- #include "util.h"
- 
--struct mon_net *mn;
-+static struct mon_net *mn = NULL;
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: parse_networks
-diff -ur pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-07-01 21:35:45.000000000 -0400
-@@ -343,11 +343,11 @@
- 
-     /* Display PCAP Statistics */
-     if (!pcap_stats(gc.handle, &pstat)) {
--        log_message("\n");
--        log_message("%d Packets Received\n", pstat.ps_recv);
--        log_message("%d Packets Dropped by Software\n", pstat.ps_drop);
--        log_message("%d Packets Dropped by Interface\n", pstat.ps_ifdrop);
--        log_message("\n");
-+        verbose_message("\n");
-+        verbose_message("%d Packets Received\n", pstat.ps_recv);
-+        verbose_message("%d Packets Dropped by Software\n", pstat.ps_drop);
-+        verbose_message("%d Packets Dropped by Interface\n", pstat.ps_ifdrop);
-+        verbose_message("\n");
-     }
- 
-     /* Close banner dump file if specifed (-d). */

diff --git a/pads-1.2-overrun.patch b/pads-1.2-overrun.patch
deleted file mode 100644
index 7df4fc9..0000000
--- a/pads-1.2-overrun.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -urp pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/util.c	2008-06-30 17:27:44.000000000 -0400
-@@ -465,7 +465,7 @@ hex2mac(const char *mac)
- {
-     static char buf[18];
- 
--    sprintf(buf, "%X:%02X:%02X:%02X:%02X:%02X",
-+    snprintf(buf, sizeof(buf), "%02X:%02X:%02X:%02X:%02X:%02X",
-         mac[0], mac[1], mac[2],
-         mac[3], mac[4], mac[5]);
- 

diff --git a/pads-1.2-perf.patch b/pads-1.2-perf.patch
deleted file mode 100644
index a4a667b..0000000
--- a/pads-1.2-perf.patch
+++ /dev/null
@@ -1,472 +0,0 @@
-diff -urp pads-1.2.orig/src/identification.c pads-1.2/src/identification.c
---- pads-1.2.orig/src/identification.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/identification.c	2008-07-12 10:56:07.000000000 -0400
-@@ -30,7 +30,10 @@
- #include "storage.h"
- #include "output/output.h"
- 
--Signature *signature_list;
-+static Signature *signature_list = NULL, **tail = NULL;
-+
-+/* Local Functions */
-+static void add_signature (Signature *sig);
- 
- /* ----------------------------------------------------------
-  * FUNCTION     : init_identification
-@@ -40,7 +43,7 @@ Signature *signature_list;
-  * RETURN       : -1 - Error
-  *              : 0 - Normal Return
-  * ---------------------------------------------------------- */
--int init_identification()
-+int init_identification(void)
- {
-     FILE *fp;
-     bstring filename;
-@@ -191,25 +194,13 @@ int parse_raw_signature (bstring line, i
-  * RETURN       : 0 - Success
-  *              : -1 - Error
-  * ---------------------------------------------------------- */
--int add_signature (Signature *sig)
-+static void add_signature (Signature *sig)
- {
--    Signature *list;
--
--    if (signature_list == NULL) {
-+    if (tail == NULL)
-         signature_list = sig;
--    } else {
--        list = signature_list;
--        while (list != NULL) {
--            if (list->next == NULL) {
--                list->next = sig;
--                break;
--            } else {
--                list = list->next;
--            }
--        }
--    }
--
--    return 0;
-+    else
-+        *tail = sig;
-+    tail = &sig->next;
- }
- 
- /* ----------------------------------------------------------
-@@ -235,12 +226,12 @@ int tcp_identify (struct in_addr ip_addr
- 
-     if (i_attempts > 0) {
-         i_attempts--;
--        update_i_attempts(ip_addr, port, IPPROTO_TCP, i_attempts);
-+        update_i_attempts(i_attempts);
- 
-         if (pcre_identify(ip_addr, port, IPPROTO_TCP, payload, plen) == 1) {
-             /* MATCH! */
-             i_attempts = 0;
--            update_i_attempts(ip_addr, port, IPPROTO_TCP, 0);
-+            update_i_attempts(0);
-         }
- 
-         /* Print asset if this is the last time to identify it. */
-diff -urp pads-1.2.orig/src/identification.h pads-1.2/src/identification.h
---- pads-1.2.orig/src/identification.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/identification.h	2008-07-12 10:56:07.000000000 -0400
-@@ -39,7 +39,6 @@
- /* PROTOTYPES -------------------------------------- */
- int init_identification(void);
- int parse_raw_signature (bstring line, int lineno);
--int add_signature (Signature *sig);
- int tcp_identify (struct in_addr ip_addr, u_int16_t port, char *payload, int plen);
- int pcre_identify (struct in_addr ip_addr, u_int16_t port, unsigned short proto, const char *payload, int plen);
- bstring get_app_name (Signature *sig, const char *payload, int *ovector, int rc);
-diff -urp pads-1.2.orig/src/mac-resolution.c pads-1.2/src/mac-resolution.c
---- pads-1.2.orig/src/mac-resolution.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/mac-resolution.c	2008-07-12 10:56:07.000000000 -0400
-@@ -34,9 +34,14 @@
- #include "mac-resolution.h"
- #include "util.h"
- 
--Vendor *vendor_list = NULL;
-+static Vendor *vendor_list = NULL;
-+static Vendor **vtail = NULL;
- 
--/* ----------------------------------------------------------
-+/* Local function prototype */
-+static int parse_raw_mac (bstring line);
-+static int add_vendor (const char *mac, const char *vendor);
-+
-+    /* ----------------------------------------------------------
-  * FUNCTION     : init_mac_resolution
-  * DESCRIPTION  : This file reads in the MAC address table.
-  * INPUT        : None
-@@ -94,7 +99,7 @@ int init_mac_resolution (void) {
-  * RETURN       : 0 - Success
-  *              : -1 - Error
-  * ---------------------------------------------------------- */
--int parse_raw_mac (bstring line)
-+static int parse_raw_mac (bstring line)
- {
-     char mac[4];
-     char vendor[80];
-@@ -125,8 +130,8 @@ int parse_raw_mac (bstring line)
-  * INPUT        : 0 - MAC Address (bstring)
-  *              : 1 - Vendor (bstring)
-  * ---------------------------------------------------------- */
--int add_vendor (char *mac, char *vendor){
--    Vendor *list;
-+static int add_vendor (const char *mac, const char *vendor)
-+{
-     Vendor *rec;
- 
-     /* Assign data to temporary data structure. */
-@@ -136,19 +141,11 @@ int add_vendor (char *mac, char *vendor)
-     rec->next = NULL;
- 
-     /* Place data structure in MAC address list. */
--    if(vendor_list == NULL) {
-+    if(vtail == NULL)
-         vendor_list = rec;
--    } else {
--        list = vendor_list;
--        while (list != NULL) {
--            if (list->next == NULL) {
--                list->next = rec;
--                break;
--            } else {
--                list = list->next;
--            }
--        }
--    }
-+    else
-+        *vtail = rec;
-+    vtail = &rec->next;
- 
-     return 0;
- }
-diff -urp pads-1.2.orig/src/mac-resolution.h pads-1.2/src/mac-resolution.h
---- pads-1.2.orig/src/mac-resolution.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/mac-resolution.h	2008-07-12 10:56:07.000000000 -0400
-@@ -39,8 +39,6 @@
- 
- /* PROTOTYPES -------------------------------------- */
- int init_mac_resolution (void);
--int parse_raw_mac (bstring line);
--int add_vendor (char *mac, char *vendor);
- bstring get_vendor (const char *m);
- void end_mac_resolution (void);
- 
-diff -urp pads-1.2.orig/src/monnet.c pads-1.2/src/monnet.c
---- pads-1.2.orig/src/monnet.c	2008-07-12 08:36:10.000000000 -0400
-+++ pads-1.2/src/monnet.c	2008-07-12 10:56:07.000000000 -0400
-@@ -87,49 +87,41 @@ void parse_networks (char *cmdline)
-     }
- }
- 
--/* ----------------------------------------------------------
-- * FUNCTION	: init_netmasks
-- * DESCRIPTION	: This function will load netmasks into an
-- *		: array.
-- * INPUT	: 0 - Array
-- * RETURN	: None!
-- * ---------------------------------------------------------- */
--void init_netmasks (unsigned int nm[33])
--{
--    nm[0] = 0x0;
--    nm[1] = 0x80000000;
--    nm[2] = 0xC0000000;
--    nm[3] = 0xE0000000;
--    nm[4] = 0xF0000000;
--    nm[5] = 0xF8000000;
--    nm[6] = 0xFC000000;
--    nm[7] = 0xFE000000;
--    nm[8] = 0xFF000000;
--    nm[9] = 0xFF800000;
--    nm[10] = 0xFFC00000;
--    nm[11] = 0xFFE00000;
--    nm[12] = 0xFFF00000;
--    nm[13] = 0xFFF80000;
--    nm[14] = 0xFFFC0000;
--    nm[15] = 0xFFFE0000;
--    nm[16] = 0xFFFF0000;
--    nm[17] = 0xFFFF8000;
--    nm[18] = 0xFFFFC000;
--    nm[19] = 0xFFFFE000;
--    nm[20] = 0xFFFFF000;
--    nm[21] = 0xFFFFF800;
--    nm[22] = 0xFFFFFC00;
--    nm[23] = 0xFFFFFE00;
--    nm[24] = 0xFFFFFF00;
--    nm[25] = 0xFFFFFF80;
--    nm[26] = 0xFFFFFFC0;
--    nm[27] = 0xFFFFFFE0;
--    nm[28] = 0xFFFFFFF0;
--    nm[29] = 0xFFFFFFF8;
--    nm[30] = 0xFFFFFFFC;
--    nm[31] = 0xFFFFFFFE;
--    nm[32] = 0xFFFFFFFF;
--}
-+static unsigned int netmasks[33] = {
-+    0x0,
-+    0x80000000,
-+    0xC0000000,
-+    0xE0000000,
-+    0xF0000000,
-+    0xF8000000,
-+    0xFC000000,
-+    0xFE000000,
-+    0xFF000000,
-+    0xFF800000,
-+    0xFFC00000,
-+    0xFFE00000,
-+    0xFFF00000,
-+    0xFFF80000,
-+    0xFFFC0000,
-+    0xFFFE0000,
-+    0xFFFF0000,
-+    0xFFFF8000,
-+    0xFFFFC000,
-+    0xFFFFE000,
-+    0xFFFFF000,
-+    0xFFFFF800,
-+    0xFFFFFC00,
-+    0xFFFFFE00,
-+    0xFFFFFF00,
-+    0xFFFFFF80,
-+    0xFFFFFFC0,
-+    0xFFFFFFE0,
-+    0xFFFFFFF0,
-+    0xFFFFFFF8,
-+    0xFFFFFFFC,
-+    0xFFFFFFFE,
-+    0xFFFFFFFF,
-+};
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: add_monnet
-@@ -143,12 +135,8 @@ void add_monnet(char *network, char *net
- {
-     struct mon_net *rec, *data;
-     struct in_addr net_addr;
--    unsigned int netmasks[33];
-     int nmask;
- 
--    /* Fill netmasks variable.  See init_netmasks in util.c. */
--    init_netmasks(netmasks);
--
-     nmask = atoi(netmask);
- 
-     /* Ensure that the netmask is correct. */
-diff -urp pads-1.2.orig/src/monnet.h pads-1.2/src/monnet.h
---- pads-1.2.orig/src/monnet.h	2008-07-12 08:36:10.000000000 -0400
-+++ pads-1.2/src/monnet.h	2008-07-12 10:56:07.000000000 -0400
-@@ -41,7 +41,6 @@ struct mon_net {
- 
- /* PROTOTYPES -------------------------------------- */
- void parse_networks (char *cmdline);
--void init_netmasks (unsigned int nm[33]);
- void add_monnet(char *network, char *netmask);
- short check_monnet (const struct in_addr ip_addr);
- void end_monnet (void);
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-07-12 10:59:31.000000000 -0400
-@@ -231,10 +231,6 @@ parse_raw_report (bstring line)
-     // Clean Up
-     if (list != NULL)
- 	bstrListDestroy(list);
--    if (service != NULL)
--	bdestroy(service);
--    if (application != NULL)
--	bdestroy(application);
- 
-     return ret;
- }
-diff -urp pads-1.2.orig/src/packet.c pads-1.2/src/packet.c
---- pads-1.2.orig/src/packet.c	2008-07-12 08:36:10.000000000 -0400
-+++ pads-1.2/src/packet.c	2008-07-12 10:56:07.000000000 -0400
-@@ -232,8 +232,6 @@ void process_tcp (const struct pcap_pkth
- 		    app = bfromcstr("unknown");
- 		    add_asset(ip_src, tcph->th_sport,
- 			    IPPROTO_TCP, serv, app, 0);
--		    bdestroy(serv);
--		    bdestroy(app);
- 		} else {
- 		    /* Record connection for statistical purposes. */
- 		    print_stat(ip_src, tcph->th_sport, IPPROTO_TCP);
-@@ -295,8 +293,6 @@ void process_icmp (const struct pcap_pkt
- 	    app = bfromcstr("ICMP");
- 	    add_asset(ip_src, 0, IPPROTO_ICMP, serv, app, 0);
- 	    print_asset(ip_src, 0, IPPROTO_ICMP);
--	    bdestroy(serv);
--	    bdestroy(app);
- 	}
-     }
- 
-diff -urp pads-1.2.orig/src/storage.c pads-1.2/src/storage.c
---- pads-1.2.orig/src/storage.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/storage.c	2008-07-12 10:56:07.000000000 -0400
-@@ -29,8 +29,8 @@
- #include "storage.h"
- #include "mac-resolution.h"
- 
--static Asset *asset_list = NULL;
--static ArpAsset *arp_asset_list = NULL;
-+static Asset *asset_list = NULL, *current = NULL, **tail = NULL;
-+static ArpAsset *arp_asset_list = NULL, **arp_tail = NULL;
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: check_tcp_asset
-@@ -127,8 +127,8 @@ int check_arp_asset (struct in_addr ip_a
-  * INPUT	: 0 - IP Address
-  *		: 1 - Port
-  *		: 2 - Protocol
-- *		: 3 - Service
-- *		: 4 - Application
-+ *		: 3 - Service - takes custody of this memory
-+ *		: 4 - Application - takes custody of this memory
-  *		: 5 - Discovered
-  * RETURN	: None!
-  * ---------------------------------------------------------- */
-@@ -140,15 +140,14 @@ void add_asset (struct in_addr ip_addr,
- 		time_t discovered)
- {
-     Asset *rec;
--    Asset *list;
- 
-     /* Assign list to temp structure.  */
-     rec = (Asset*)malloc(sizeof(Asset));
-     rec->ip_addr.s_addr = ip_addr.s_addr;
-     rec->port = port;
-     rec->proto = proto;
--    rec->service = bstrcpy(service);
--    rec->application = bstrcpy(application);
-+    rec->service = service;
-+    rec->application = application;
-     rec->next = NULL;
- 
-     /*
-@@ -174,19 +173,11 @@ void add_asset (struct in_addr ip_addr,
-     }
- 
-     /* Find this record's location within linked list.  */
--    if (asset_list == NULL) {
-+    if (tail == NULL) 
- 	asset_list = rec;
--    } else {
--	list = asset_list;
--	while (list != NULL) {
--	    if (list->next == NULL) {
--		list->next = rec;
--		break;
--	    } else {
--		list = list->next;
--	    }
--	}
--    }
-+    else
-+	*tail = rec;
-+    tail = &rec->next;
- 
-     return;
- }
-@@ -203,7 +194,6 @@ void add_asset (struct in_addr ip_addr,
- void add_arp_asset (struct in_addr ip_addr, const char *mac_addr,
- 		    time_t discovered)
- {
--    ArpAsset *list;
-     ArpAsset *rec;
-     bstring mac_resolved;
- 
-@@ -233,20 +223,11 @@ void add_arp_asset (struct in_addr ip_ad
-     }
- 
-     /* Find this record's location within linked list.  */
--    if (arp_asset_list == NULL) {
-+    if (arp_tail == NULL) 
- 	arp_asset_list = rec;
--    } else {
--	list = arp_asset_list;
--
--	while (list != NULL) {
--	    if (list->next == NULL) {
--		list->next = rec;
--		break;
--	    } else {
--		list = list->next;
--	    }
--	}
--    }
-+    else
-+	*arp_tail = arp_asset_list;
-+    arp_tail = &arp_asset_list->next;
- }
- 
- /* ----------------------------------------------------------
-@@ -270,6 +251,7 @@ unsigned short get_i_attempts (struct in
- 		&& port == rec->port
- 		&& proto == rec->proto) {
- 	    /* Found! */
-+            current = rec;
- 	    return rec->i_attempts;
- 
- 	} else {
-@@ -277,13 +259,14 @@ unsigned short get_i_attempts (struct in
- 	}
-     }
- 
-+    current = NULL;
-     return 0;
- }
- 
- /* ----------------------------------------------------------
-  * FUNCTION	: update_i_attempts
-- * DESCRIPTION	: Updates the i_attempts field for a
-- *		: specified asset.
-+ * DESCRIPTION	: Updates the i_attempts field of the current
-+ *		: asset from previous call to get_i_attempts.
-  * INPUT	: 0 - IP Address
-  *		: 1 - Port
-  *		: 2 - Proto
-@@ -291,26 +274,11 @@ unsigned short get_i_attempts (struct in
-  * RETURN	: 0 - Success
-  *		: 1 - Failure
-  * ---------------------------------------------------------- */
--short update_i_attempts (struct in_addr ip_addr,
--			 u_int16_t port,
--			 unsigned short proto,
--			 unsigned short i_attempts)
-+short update_i_attempts (unsigned short i_attempts)
- {
--    Asset *rec;
--
--    /* Find asset within linked list.  */
--    rec = asset_list;
--    while (rec != NULL) {
--	if (ip_addr.s_addr == rec->ip_addr.s_addr
--		&& port == rec->port
--		&& proto == rec->proto) {
--	    /* Found! */
--	    rec->i_attempts = i_attempts;
--	    return 0;
--
--	} else {
--	    rec = rec->next;
--	}
-+    if (current) {
-+        current->i_attempts = i_attempts;
-+        return 0;
-     }
- 
-     return 1;
-diff -urp pads-1.2.orig/src/storage.h pads-1.2/src/storage.h
---- pads-1.2.orig/src/storage.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/storage.h	2008-07-12 10:56:07.000000000 -0400
-@@ -54,7 +54,7 @@ int check_arp_asset (struct in_addr ip_a
- void add_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application, time_t discovered);
- void add_arp_asset (struct in_addr ip_addr, const char *mac_addr, time_t discovered);
- unsigned short get_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
--short update_i_attempts (struct in_addr ip_addr, u_int16_t port, unsigned short proto, unsigned short i_attempts);
-+short update_i_attempts (unsigned short i_attempts);
- short update_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto, bstring service, bstring application);
- inline Asset *find_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
- Asset *get_asset_pointer (void);

diff --git a/pads-1.2-prelude-cleanup.patch b/pads-1.2-prelude-cleanup.patch
deleted file mode 100644
index 3adca4b..0000000
--- a/pads-1.2-prelude-cleanup.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-diff -urp pads-1.2.orig/src/output/output.c pads-1.2/src/output/output.c
---- pads-1.2.orig/src/output/output.c	2008-07-08 10:53:14.000000000 -0400
-+++ pads-1.2/src/output/output.c	2008-07-08 10:41:13.000000000 -0400
-@@ -129,7 +129,8 @@ int activate_output_plugin (bstring name
- 	    /* MATCH! Set record to active and run 'init' function. */
- 	    list->active = 1;
- 	    if (plugin != NULL && plugin->init != NULL)
--		(*plugin->init)(args);
-+		if ((*plugin->init)(args) < 0)
-+			return -1;
- 	    break;
- 	}
- 
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-07-07 13:56:10.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-07-08 10:44:48.000000000 -0400
-@@ -58,6 +58,7 @@ setup_output_csv (void)
- 	if (plugin != NULL)
- 	    free(plugin);
- 	log_message("warning:  'register_output_plugin' in function 'setup_output_csv' failed.");
-+	return -1;
-     }
- 
-     return 0;
-diff -urp pads-1.2.orig/src/output/output-fifo.c pads-1.2/src/output/output-fifo.c
---- pads-1.2.orig/src/output/output-fifo.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/output/output-fifo.c	2008-07-08 10:46:32.000000000 -0400
-@@ -83,6 +83,7 @@ setup_output_fifo (void)
- 	if (plugin != NULL)
- 	    free(plugin);
- 	log_message("warning:  'register_output_plugin' in function 'setup_output_fifo' failed.");
-+	return -1;
-     }
- 
-     return 0;
-@@ -109,8 +110,10 @@ init_output_fifo (bstring fifo_file)
-     mkfifo ((char *)bdata(fifo_file), 0755);
- 
-     verbose_message("Open FIFO File\n");
--    if ((output_fifo_conf.file = fopen((char*)bdata(fifo_file), "w+")) == NULL)
-+    if ((output_fifo_conf.file = fopen((char*)bdata(fifo_file), "w+")) == NULL){
- 	err_message("Unable to open FIFO file (%s)!\n", bdata(fifo_file));
-+        return -1;
-+    }
- 
-     return 0;
- }
-diff -urp pads-1.2.orig/src/output/output-prelude.c pads-1.2/src/output/output-prelude.c
---- pads-1.2.orig/src/output/output-prelude.c	2008-07-08 10:53:14.000000000 -0400
-+++ pads-1.2/src/output/output-prelude.c	2008-07-08 10:44:25.000000000 -0400
-@@ -407,9 +407,6 @@ setup_output_prelude (void)
-     OutputPlugin *plugin;
- 
- 
--    if (init_prelude() < 0)
--	return -1;
--
-     /* Allocate and setup plugin data record. */
-     plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
-     plugin->name = bfromcstr("prelude");
-@@ -424,6 +421,7 @@ setup_output_prelude (void)
- 	if (plugin != NULL)
- 	    free(plugin);
- 	log_message("warning:  'register_output_plugin' in function 'setup_output_prelude' failed.");
-+	return -1;
-     }
- 
-     return 0;
-@@ -442,6 +440,10 @@ init_output_prelude (bstring args)
- {
-     verbose_message("Initializing PRELUDE output processor.");
-     profile = strdup((char *)bdata(args));
-+
-+    if (init_prelude() < 0)
-+	return -1;
-+
-     return 0;
- }
- 
-diff -urp pads-1.2.orig/src/output/output-screen.c pads-1.2/src/output/output-screen.c
---- pads-1.2.orig/src/output/output-screen.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/output/output-screen.c	2008-07-08 10:45:03.000000000 -0400
-@@ -55,6 +55,7 @@ setup_output_screen (void)
- 	if (plugin != NULL)
- 	    free(plugin);
- 	log_message("warning:  'register_output_plugin' in function 'setup_output_screen' failed.");
-+	return -1;
-     }
- 
-     return 0;
-diff -urp pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-07-08 10:53:14.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-07-08 10:42:58.000000000 -0400
-@@ -228,13 +228,13 @@ init_pads (void)
-         name = bfromcstr("screen");
-         args = bfromcstr("");
-         if ((activate_output_plugin(name, args)) == -1)
--            log_message("warning:  'activate_output_plugin' in function 'init_pads' failed.");
-+            err_message("Error:  'activate_output_plugin' in function 'init_pads' failed.");
-         bdestroy(name);
-         bdestroy(args);
-         /* output:  csv */
-         name = bfromcstr("csv");
-         if ((activate_output_plugin(name, gc.report_file)) == -1)
--            log_message("warning:  'activate_output_plugin' in function 'init_pads' failed.");
-+            err_message("Error:  'activate_output_plugin' in function 'init_pads' failed.");
-         bdestroy(name);
-     }
- 

diff --git a/pads-1.2-prelude.patch b/pads-1.2-prelude.patch
deleted file mode 100644
index 8e25db2..0000000
--- a/pads-1.2-prelude.patch
+++ /dev/null
@@ -1,1024 +0,0 @@
-diff -urpN pads-1.2.orig/config.h.in pads-1.2/config.h.in
---- pads-1.2.orig/config.h.in	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/config.h.in	2008-07-07 15:41:50.000000000 -0400
-@@ -24,6 +24,9 @@
- /* Define to 1 if you have the <pcre.h> header file. */
- #undef HAVE_PCRE_H
- 
-+/* PRELUDE */
-+#undef HAVE_PRELUDE
-+
- /* Define to 1 if you have the <signal.h> header file. */
- #undef HAVE_SIGNAL_H
- 
-diff -urpN pads-1.2.orig/configure.in pads-1.2/configure.in
---- pads-1.2.orig/configure.in	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/configure.in	2008-07-07 15:42:55.000000000 -0400
-@@ -97,6 +97,26 @@ AC_CHECK_LIB(pcap, pcap_open_live,
-     AC_MSG_ERROR([Cannot find PCAP libraries!!]))
- 
- ##
-+# Configure prelude
-+##
-+AC_ARG_WITH(prelude,
-+AS_HELP_STRING([--with-prelude],[enable prelude IDS support]),
-+use_prelude=$withval,
-+use_prelude=no)
-+if test x$use_prelude = xno ; then
-+    have_prelude=no;
-+else
-+    AC_CHECK_LIB(prelude, prelude_init, have_prelude=yes, have_prelude=no)
-+    if test x$have_prelude = xno ; then
-+       AC_MSG_ERROR([Prelude explicitly required and prelude library not found])
-+    else
-+       AC_DEFINE(HAVE_PRELUDE,1,[Have Prelude Libraries])
-+       LIBS="$LIBS -lprelude"
-+    fi
-+fi
-+AM_CONDITIONAL(HAVE_PRELUDE, test x$have_prelude = xyes)
-+
-+##
- # Checks for header files.
- ##
- AC_CHECK_HEADERS([stdio.h stdarg.h signal.h time.h unistd.h])
-diff -urpN pads-1.2.orig/doc/pads.conf.8 pads-1.2/doc/pads.conf.8
---- pads-1.2.orig/doc/pads.conf.8	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/doc/pads.conf.8	2008-07-07 15:41:50.000000000 -0400
-@@ -77,6 +77,9 @@ can be specified as an argument.
- This output plugin writes PADS data to a FIFO file.  Optionally, a FIFO
- filename can be specified as an argument.
- 
-+.IP "output prelude: <profilename>"
-+This output plugin writes PADS data as IDMEF alerts via prelude. Optionally you can add a profile name if you want something different than the default of pads.
-+
- .SH SEE ALSO
- pads(8)
- 
-diff -urpN pads-1.2.orig/etc/pads.conf pads-1.2/etc/pads.conf
---- pads-1.2.orig/etc/pads.conf	2008-07-02 09:24:19.000000000 -0400
-+++ pads-1.2/etc/pads.conf	2008-07-07 15:41:50.000000000 -0400
-@@ -75,3 +75,11 @@ output csv: /etc/pads-assets.csv
- # This output plugin writes PADS data to a FIFO file.  Optionally, a FIFO
- # filename can be specified as an argument.
- #output fifo:  pads.fifo
-+
-+# output:  prelude
-+# -------------------------
-+# This output plugin writes PADS data as IDMEF alerts via prelude.  Optionally
-+# you can add a profile name if you want something different than the default
-+# of pads.
-+#
-+#output prelude: pads
-diff -urpN pads-1.2.orig/src/configuration.h pads-1.2/src/configuration.h
---- pads-1.2.orig/src/configuration.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/configuration.h	2008-07-07 15:41:50.000000000 -0400
-@@ -26,6 +26,8 @@
-  * $Id: pads-1.2-prelude.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef CONFIGURATION_HEADER
-+#define CONFIGURATION_HEADER
- 
- /* DEFINES ----------------------------------------- */
- #ifdef LINUX
-@@ -40,8 +42,7 @@
- 
- /* INCLUDES ---------------------------------------- */
- #include "global.h"
--
--#include <stdio.h>
-+#include "configuration.h"
- #include "bstring/bstrlib.h"
- 
- /* PROTOTYPES -------------------------------------- */
-@@ -51,3 +52,6 @@ int conf_module_plugin (bstring value, i
- 
- /* External Prototypes */
- int activate_output_plugin (bstring name, bstring args);
-+
-+#endif
-+
-diff -urpN pads-1.2.orig/src/output/Makefile.am pads-1.2/src/output/Makefile.am
---- pads-1.2.orig/src/output/Makefile.am	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/output/Makefile.am	2008-07-07 15:41:50.000000000 -0400
-@@ -6,4 +6,8 @@ liboutput_a_SOURCES = output.c output.h 
-                       output-csv.c output-csv.h \
-                       output-fifo.c output-fifo.h
- 
-+if HAVE_PRELUDE 
-+liboutput_a_SOURCES +=  output-prelude.c output-prelude.h
-+endif
-+
- INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/lib
-diff -urpN pads-1.2.orig/src/output/output.c pads-1.2/src/output/output.c
---- pads-1.2.orig/src/output/output.c	2008-06-30 17:54:33.000000000 -0400
-+++ pads-1.2/src/output/output.c	2008-07-07 15:41:50.000000000 -0400
-@@ -29,6 +29,7 @@
- #include "output-screen.h"
- #include "output-csv.h"
- #include "output-fifo.h"
-+#include "output-prelude.h"
- #include "storage.h"
- 
- /* Local Variables */
-@@ -43,7 +44,7 @@ static OutputPluginList *output_plugin_l
-  * INPUT	: None!
-  * RETURN	: None!
-  * ---------------------------------------------------------- */
--void init_output()
-+int init_output(void)
- {
- 
-     /* Load Screen Plug-in */
-@@ -55,6 +56,11 @@ void init_output()
-     /* Load FIFO Plug-in */
-     setup_output_fifo();
- 
-+    /* Load Prelude Plug-in */
-+    if (setup_output_prelude() < 0)
-+	return -1;
-+
-+    return 0;
- }
- 
- /* ----------------------------------------------------------
-diff -urpN pads-1.2.orig/src/output/output.h pads-1.2/src/output/output.h
---- pads-1.2.orig/src/output/output.h	2008-06-30 13:56:52.000000000 -0400
-+++ pads-1.2/src/output/output.h	2008-07-07 15:41:50.000000000 -0400
-@@ -71,7 +71,7 @@ typedef struct _OutputPluginList
- } OutputPluginList;
- 
- /* PROTOTYPES -------------------------------------- */
--void init_output();
-+int init_output(void);
- int register_output_plugin (OutputPlugin *plugin);
- int activate_output_plugin (bstring name, bstring args);
- int print_asset (struct in_addr ip_addr, u_int16_t port, unsigned short proto);
-diff -urpN pads-1.2.orig/src/output/output-prelude.c pads-1.2/src/output/output-prelude.c
---- pads-1.2.orig/src/output/output-prelude.c	1969-12-31 19:00:00.000000000 -0500
-+++ pads-1.2/src/output/output-prelude.c	2008-07-07 15:41:50.000000000 -0400
-@@ -0,0 +1,513 @@
-+/*************************************************************************
-+ * output-prelude.c
-+ *
-+ * This module contains the output mechanism for PADS to send IDMEF alerts
-+ * via the prelude library
-+ *
-+ * Copyright (C) 2008 Steve Grubb <sgrubb@redhat.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ **************************************************************************/
-+#include "output-prelude.h"
-+#include "util.h"
-+#include "pads.h"	// For argc/v and gc
-+#include <arpa/inet.h>
-+#include <libprelude/prelude.h>
-+
-+#define ANALYZER_MODEL "pads"
-+#define ANALYZER_CLASS "PVS"
-+#define ANALYZER_MANUFACTURER "http://passive.sourceforge.net"
-+#define PRELUDE_FAIL_CHECK  if (ret < 0) goto err;
-+static prelude_client_t *client = NULL;
-+static char *profile = NULL;
-+
-+static int setup_analyzer(idmef_analyzer_t *analyzer)
-+{
-+        int ret;
-+        prelude_string_t *string;
-+
-+        ret = idmef_analyzer_new_model(analyzer, &string);
-+        PRELUDE_FAIL_CHECK;
-+        prelude_string_set_dup(string, ANALYZER_MODEL);
-+
-+        ret = idmef_analyzer_new_class(analyzer, &string);
-+        PRELUDE_FAIL_CHECK;
-+        prelude_string_set_dup(string, ANALYZER_CLASS);
-+
-+        ret = idmef_analyzer_new_manufacturer(analyzer, &string);
-+        PRELUDE_FAIL_CHECK;
-+        prelude_string_set_dup(string, ANALYZER_MANUFACTURER);
-+
-+        ret = idmef_analyzer_new_version(analyzer, &string);
-+        PRELUDE_FAIL_CHECK;
-+        prelude_string_set_dup(string, PACKAGE_VERSION);
-+
-+        return 0;
-+
-+ err:
-+        log_message("%s: IDMEF error: %s.\n",
-+                prelude_strsource(ret), prelude_strerror(ret));
-+
-+        return -1;
-+}
-+
-+static int init_prelude(void)
-+{
-+        int ret;
-+        prelude_client_flags_t flags;
-+
-+        ret = prelude_thread_init(NULL);
-+        ret = prelude_init(&prog_argc, prog_argv);
-+        if (ret < 0) {
-+                log_message("Unable to initialize the Prelude library: %s.\n",
-+                        prelude_strerror(ret));
-+                return -1;
-+        }
-+        ret = prelude_client_new(&client, profile ? profile : ANALYZER_MODEL);
-+        if (!client) {
-+                log_message("Unable to create a prelude client object: %s.\n",
-+                        prelude_strerror(ret));
-+                return -1;
-+        }
-+        ret = setup_analyzer(prelude_client_get_analyzer(client));
-+        if (ret < 0) {
-+                log_message("Unable to setup analyzer: %s\n",
-+                        prelude_strerror(ret));
-+
-+                prelude_client_destroy(client,
-+                                        PRELUDE_CLIENT_EXIT_STATUS_FAILURE);
-+                return -1;
-+        }
-+        flags = prelude_client_get_flags(client);
-+        flags |= PRELUDE_CLIENT_FLAGS_ASYNC_TIMER;
-+        ret = prelude_client_set_flags(client, flags);
-+        if (ret < 0) {
-+                log_message("Unable to set prelude client flags: %s\n",
-+                        prelude_strerror(ret));
-+
-+                prelude_client_destroy(client,
-+                                        PRELUDE_CLIENT_EXIT_STATUS_FAILURE);
-+                return -1;
-+        }
-+        ret = prelude_client_start(client);
-+        if (ret < 0) {
-+                log_message("Unable to start prelude client: %s\n",
-+                        prelude_strerror(ret));
-+
-+                prelude_client_destroy(client,
-+                                        PRELUDE_CLIENT_EXIT_STATUS_FAILURE);
-+                return -1;
-+        }
-+        return 0;
-+}
-+
-+static int new_alert_common(idmef_message_t **idmef, idmef_alert_t **alert)
-+{
-+        int ret;
-+        idmef_time_t *ctime;
-+
-+        ret = idmef_message_new(idmef);
-+        PRELUDE_FAIL_CHECK;
-+
-+        ret = idmef_message_new_alert(*idmef, alert);
-+        PRELUDE_FAIL_CHECK;
-+
-+        idmef_alert_set_analyzer(*alert,
-+                        idmef_analyzer_ref(prelude_client_get_analyzer(client)),
-+                        IDMEF_LIST_PREPEND);
-+
-+        // Set time this was created
-+        ret = idmef_time_new_from_gettimeofday(&ctime);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_alert_set_detect_time(*alert, ctime);
-+        idmef_alert_set_create_time(*alert, ctime);
-+
-+        return 0;
-+ err:
-+        syslog(LOG_ERR, "%s: IDMEF error: %s.\n",
-+               prelude_strsource(ret), prelude_strerror(ret));
-+        idmef_message_destroy(*idmef);
-+        return -1;
-+}
-+
-+static int set_classification(idmef_alert_t *alert, const char *text)
-+{
-+        int ret;
-+        idmef_classification_t *classification;
-+        prelude_string_t *str;
-+
-+        ret = idmef_alert_new_classification(alert, &classification);
-+        PRELUDE_FAIL_CHECK;
-+        ret = prelude_string_new(&str);
-+        PRELUDE_FAIL_CHECK;
-+        ret = prelude_string_set_ref(str, text);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_classification_set_text(classification, str);
-+
-+        return 0;
-+ err:
-+        return -1;
-+}
-+
-+static int do_assessment(idmef_alert_t *alert,
-+		idmef_impact_severity_t severity,
-+		idmef_impact_type_t type, const char *descr)
-+{
-+        int ret;
-+        idmef_assessment_t *assessment;
-+        idmef_impact_t *impact;
-+
-+        ret = idmef_alert_new_assessment(alert, &assessment);
-+        PRELUDE_FAIL_CHECK;
-+        ret = idmef_assessment_new_impact(assessment, &impact);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_impact_set_severity(impact, severity);
-+        idmef_impact_set_type(impact, type);
-+        if (descr) {
-+               prelude_string_t *str;
-+               ret = idmef_impact_new_description(impact, &str);
-+               prelude_string_set_ref(str, descr);
-+        }
-+        idmef_impact_set_completion(impact, IDMEF_IMPACT_COMPLETION_SUCCEEDED);
-+        return 0;
-+ err:
-+        return -1;
-+}
-+
-+// FIXME: handle ipv6 addresses
-+static int fill_in_node_addr(idmef_node_t *node, struct in_addr *addr)
-+{
-+        int ret;
-+        prelude_string_t *str;
-+	char buf[INET6_ADDRSTRLEN+1];
-+
-+	inet_ntop(AF_INET, addr, buf, sizeof(buf));
-+
-+        /* Setup the address string */
-+        ret = prelude_string_new(&str);
-+        PRELUDE_FAIL_CHECK;
-+        ret = prelude_string_set_dup(str, buf);
-+        PRELUDE_FAIL_CHECK;
-+
-+        /* Now record IP address */
-+        idmef_address_t *my_addr;
-+        ret = idmef_address_new(&my_addr);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_address_set_category(my_addr, IDMEF_ADDRESS_CATEGORY_IPV4_ADDR);
-+        idmef_address_set_address(my_addr, str);
-+        idmef_node_set_address(node, my_addr, 0);
-+
-+        return 0;
-+ err:
-+        return -1;
-+}
-+
-+// FIXME: handle ipv6 addresses
-+static int fill_in_node_mac(idmef_node_t *node, ArpAsset *a)
-+{
-+        int ret;
-+        prelude_string_t *str, *mac_str;
-+	char buf[INET6_ADDRSTRLEN+1];
-+
-+	inet_ntop(AF_INET, &a->ip_addr, buf, sizeof(buf));
-+
-+        /* Setup the address string */
-+        ret = prelude_string_new(&str);
-+        PRELUDE_FAIL_CHECK;
-+        ret = prelude_string_set_dup(str, buf);
-+        PRELUDE_FAIL_CHECK;
-+
-+        /* Now record IP address */
-+        idmef_address_t *my_addr;
-+        ret = idmef_address_new(&my_addr);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_address_set_category(my_addr, IDMEF_ADDRESS_CATEGORY_IPV4_ADDR);
-+        idmef_address_set_address(my_addr, str);
-+        idmef_node_set_address(node, my_addr, 0);
-+
-+        /* Now record MAC address */
-+        idmef_address_t *mac_addr;
-+        ret = idmef_address_new(&mac_addr);
-+        PRELUDE_FAIL_CHECK;
-+        ret = prelude_string_new(&mac_str);
-+        PRELUDE_FAIL_CHECK;
-+        idmef_address_set_category(mac_addr, IDMEF_ADDRESS_CATEGORY_MAC);
-+        ret = prelude_string_set_dup(mac_str, hex2mac(a->mac_addr));
-+        PRELUDE_FAIL_CHECK;
-+        idmef_address_set_address(mac_addr, mac_str);
-+        idmef_node_set_address(node, mac_addr, 0);
-+        return 0;
-+ err:
-+        return -1;
-+}
-+
-+
-+static int asset_alert(Asset *a, idmef_message_t *idmef,
-+                idmef_alert_t *alert, const char *msg,
-+                idmef_impact_severity_t severity, char *descr)
-+{
-+        int ret;
-+        idmef_source_t *source;
-+        idmef_target_t *target;
-+	idmef_node_t *node, *node2;
-+	idmef_service_t *service;
-+        idmef_impact_type_t impact;
-+        prelude_string_t *name, *str;
-+	idmef_additional_data_t *data;
-+
-+        /* Fill in information about the event's source */
-+        ret = idmef_alert_new_source(alert, &source, -1);
-+        PRELUDE_FAIL_CHECK;
-+	ret = idmef_source_new_node(source, &node);
-+        PRELUDE_FAIL_CHECK;
-+	idmef_node_set_category(node, IDMEF_NODE_CATEGORY_UNKNOWN);
-+	ret = fill_in_node_addr(node, &a->ip_addr);
-+	PRELUDE_FAIL_CHECK;
-+
-+	// Describe the service
-+	ret = idmef_source_new_service(source, &service);
-+	PRELUDE_FAIL_CHECK;
-+	idmef_service_set_iana_protocol_number(service, a->proto);
-+	idmef_service_set_ip_version(service, 4);
-+	idmef_service_set_port(service, ntohs(a->port));
-+	ret = prelude_string_new(&name);
-+	PRELUDE_FAIL_CHECK;
-+	ret = prelude_string_set_dup(name, (char *)bdata(a->service));
-+	PRELUDE_FAIL_CHECK;
-+	if (bdata(a->application) != NULL) {
-+		ret = idmef_alert_new_additional_data(alert, &data,
-+			IDMEF_LIST_APPEND);
-+		PRELUDE_FAIL_CHECK;
-+		ret = idmef_additional_data_new_meaning(data, &str);
-+		PRELUDE_FAIL_CHECK;
-+		prelude_string_set_ref(str, "Application");
-+		idmef_additional_data_set_type(data,
-+				IDMEF_ADDITIONAL_DATA_TYPE_STRING);
-+		idmef_additional_data_set_string_dup(data,
-+				(char *)bdata(a->application));
-+	}
-+
-+        /* Fill in information about the target of the event */
-+        ret = idmef_alert_new_target(alert, &target, -1);
-+        PRELUDE_FAIL_CHECK;
-+
-+	/* FIXME: I assume that the target is the whole network */
-+	ret = idmef_target_new_node(target, &node2);
-+        PRELUDE_FAIL_CHECK;
-+	idmef_node_set_category(node, IDMEF_NODE_CATEGORY_UNKNOWN);
-+
-+        /* Describe event */
-+        ret = set_classification(alert, msg);
-+        PRELUDE_FAIL_CHECK;
-+
-+        /* Assess impact */
-+        impact = IDMEF_IMPACT_TYPE_OTHER;
-+        ret = do_assessment(alert, severity, impact, descr);
-+        PRELUDE_FAIL_CHECK;
-+
-+        prelude_client_send_idmef(client, idmef);
-+        idmef_message_destroy(idmef);
-+
-+        return 0;
-+ err:
-+        syslog(LOG_ERR, "asset_alert: IDMEF error: %s.\n",
-+                prelude_strerror(ret));
-+        idmef_message_destroy(idmef);
-+        return -1;
-+}
-+
-+
-+static int arp_alert(ArpAsset *a, idmef_message_t *idmef,
-+                idmef_alert_t *alert, const char *msg,
-+                idmef_impact_severity_t severity, char *descr)
-+{
-+        int ret;
-+        idmef_source_t *source;
-+        idmef_target_t *target;
-+	idmef_node_t *node, *node2;
-+        idmef_impact_type_t impact;
-+        prelude_string_t *str;
-+	idmef_additional_data_t *data;
-+
-+        /* Fill in information about the event's source */
-+        ret = idmef_alert_new_source(alert, &source, -1);
-+        PRELUDE_FAIL_CHECK;
-+	ret = idmef_source_new_node(source, &node);
-+        PRELUDE_FAIL_CHECK;
-+	idmef_node_set_category(node, IDMEF_NODE_CATEGORY_UNKNOWN);
-+	ret = fill_in_node_mac(node, a);
-+	PRELUDE_FAIL_CHECK;
-+
-+	if (bdata(a->mac_resolved) != NULL) {
-+		ret = idmef_alert_new_additional_data(alert, &data,
-+			IDMEF_LIST_APPEND);
-+		PRELUDE_FAIL_CHECK;
-+		ret = idmef_additional_data_new_meaning(data, &str);
-+		PRELUDE_FAIL_CHECK;
-+		prelude_string_set_ref(str, "Vendor");
-+		idmef_additional_data_set_type(data,
-+				IDMEF_ADDITIONAL_DATA_TYPE_STRING);
-+		idmef_additional_data_set_string_dup(data,
-+				(char *)bdata(a->mac_resolved));
-+	}
-+
-+        /* Fill in information about the target of the event */
-+        ret = idmef_alert_new_target(alert, &target, -1);
-+        PRELUDE_FAIL_CHECK;
-+
-+	/* FIXME: I assume that the target is the whole network */
-+	ret = idmef_target_new_node(target, &node2);
-+        PRELUDE_FAIL_CHECK;
-+	idmef_node_set_category(node, IDMEF_NODE_CATEGORY_UNKNOWN);
-+
-+        /* Describe event */
-+        ret = set_classification(alert, msg);
-+        PRELUDE_FAIL_CHECK;
-+
-+        /* Assess impact */
-+        impact = IDMEF_IMPACT_TYPE_OTHER;
-+        ret = do_assessment(alert, severity, impact, descr);
-+        PRELUDE_FAIL_CHECK;
-+
-+        prelude_client_send_idmef(client, idmef);
-+        idmef_message_destroy(idmef);
-+
-+        return 0;
-+ err:
-+        syslog(LOG_ERR, "arp_alert: IDMEF error: %s.\n",
-+                prelude_strerror(ret));
-+        idmef_message_destroy(idmef);
-+        return -1;
-+}
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION	: setup_output_screen
-+ * DESCRIPTION	: This function will register the output
-+ *		: plugin.
-+ * INPUT	: None!
-+ * RETURN	: 0 - Success
-+ *		: -1 - Error
-+ * ---------------------------------------------------------- */
-+int
-+setup_output_prelude (void)
-+{
-+    OutputPlugin *plugin;
-+
-+
-+    if (init_prelude() < 0)
-+	return -1;
-+
-+    /* Allocate and setup plugin data record. */
-+    plugin = (OutputPlugin*)malloc(sizeof(OutputPlugin));
-+    plugin->name = bfromcstr("prelude");
-+    plugin->init = init_output_prelude;
-+    plugin->print_asset = print_asset_prelude;
-+    plugin->print_arp = print_arp_asset_prelude;
-+    plugin->print_stat = NULL;
-+    plugin->end = end_output_prelude;
-+
-+    /* Register plugin with input module. */
-+    if ((register_output_plugin(plugin)) == -1) {
-+	if (plugin != NULL)
-+	    free(plugin);
-+	log_message("warning:  'register_output_plugin' in function 'setup_output_prelude' failed.");
-+    }
-+
-+    return 0;
-+}
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION	: init_output_prelude
-+ * DESCRIPTION	: This output module will initialize the prelude
-+ *		: subsystem.
-+ * INPUT	: None
-+ * RETURN	: 0 - Success
-+ *		: -1 - Error
-+ * --------------------------------------------------------- */
-+int
-+init_output_prelude (bstring args)
-+{
-+    verbose_message("Initializing PRELUDE output processor.");
-+    profile = strdup((char *)bdata(args));
-+    return 0;
-+}
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION	: print_asset_prelude
-+ * DESCRIPTION	: This function will send asset events to prelude
-+ * INPUT	: 0 - Port
-+ *		: 1 - IP Address
-+ *		: 2 - Service
-+ *		: 3 - Application
-+ * RETURN	: 0 - Success
-+ *		: -1 - Error
-+ * ---------------------------------------------------------- */
-+int
-+print_asset_prelude (Asset *rec)
-+{
-+    idmef_message_t *idmef;
-+    idmef_alert_t *alert;
-+
-+    if (new_alert_common(&idmef, &alert) >= 0){ 
-+	asset_alert(rec, idmef, alert, 
-+		"New Network Asset Detected", IDMEF_IMPACT_SEVERITY_LOW,
-+		"A service that was not previously known has been used.");
-+    }
-+    return 0;
-+}
-+
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION	: print_arp_asset_prelude
-+ * DESCRIPTION	: This function will send ARP asset events to prelude
-+ * INPUT	: 0 - IP Address
-+ *		: 1 - MAC Address
-+ * RETURN	: 0 - Success
-+ *		: -1 - Error
-+ * ---------------------------------------------------------- */
-+int
-+print_arp_asset_prelude (ArpAsset *rec)
-+{
-+    idmef_message_t *idmef;
-+    idmef_alert_t *alert;
-+
-+    if (new_alert_common(&idmef, &alert) >= 0){ 
-+	arp_alert(rec, idmef, alert, 
-+		"New MAC Address Detected", IDMEF_IMPACT_SEVERITY_INFO,
-+		"A network card that was not previously known has been used.");
-+    }
-+    return 0;
-+}
-+
-+/* ----------------------------------------------------------
-+ * FUNCTION	: end_output_prelude
-+ * DESCRIPTION	: This function will free the resources used
-+ *		: by the prelude output module.
-+ * INPUT	: None!
-+ * RETURN	: None!
-+ * ---------------------------------------------------------- */
-+int
-+end_output_prelude ()
-+{
-+    verbose_message("Ending PRELUDE Output Processor.");
-+
-+    if (client)
-+        prelude_client_destroy(client, PRELUDE_CLIENT_EXIT_STATUS_SUCCESS);
-+    free(profile);
-+
-+    return 0;
-+}
-+
-diff -urpN pads-1.2.orig/src/output/output-prelude.h pads-1.2/src/output/output-prelude.h
---- pads-1.2.orig/src/output/output-prelude.h	1969-12-31 19:00:00.000000000 -0500
-+++ pads-1.2/src/output/output-prelude.h	2008-07-07 15:41:50.000000000 -0400
-@@ -0,0 +1,54 @@
-+/*************************************************************************
-+ * output-prelude.h
-+ *
-+ * This module contains the output mechanism for PADS to send IDMEF alerts
-+ * via the prelude library. 
-+ *
-+ * Copyright (C) 2008 Steve Grubb <sgrubb@redhat.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ **************************************************************************/
-+#ifndef OUTPUT_PRELUDE_HEADER
-+#define OUTPUT_PRELUDE_HEADER
-+
-+/* DEFINES ----------------------------------------- */
-+#ifdef LINUX
-+#ifndef __FAVOR_BSD
-+#define __FAVOR_BSD
-+#endif
-+#ifndef _BSD_SOURCE
-+#define _BSD_SOURCE
-+#endif
-+#endif /* ifdef LINUX */
-+
-+
-+/* INCLUDES ---------------------------------------- */
-+#include "output.h"
-+
-+
-+/* PROTOTYPES -------------------------------------- */
-+#ifdef HAVE_PRELUDE
-+int setup_output_prelude (void);
-+#else
-+#define setup_output_prelude() 0
-+#endif
-+int init_output_prelude (bstring args);
-+int print_asset_prelude (Asset *rec);
-+int print_arp_asset_prelude (ArpAsset *rec);
-+int end_output_prelude (void);
-+
-+#endif
-+
-diff -urpN pads-1.2.orig/src/pads.c pads-1.2/src/pads.c
---- pads-1.2.orig/src/pads.c	2008-07-02 09:24:53.000000000 -0400
-+++ pads-1.2/src/pads.c	2008-07-07 15:41:50.000000000 -0400
-@@ -43,6 +43,18 @@ int prog_argc;
- 
- /* Function Declarations */
- static int process_cmdline (int argc, char *argv[]);
-+static void set_processor (pcap_t *this_handle);
-+static void print_header(void);
-+static void print_usage(void);
-+static void print_version(void);
-+static int  init_pads(void);
-+static int  main_pads(void);
-+
-+static void sig_term_handler(int signal);
-+static void sig_int_handler(int signal);
-+static void sig_quit_handler(int signal);
-+static void sig_hup_handler(int signal);
-+
- 
- /* ----------------------------------------------------------
-  * FUNCTION     : process_pkt
-@@ -68,7 +80,7 @@ process_pkt (u_char *args, const struct 
-  * INPUT        : PCAP Handle
-  * RETURN       : None!
-  * ---------------------------------------------------------- */
--void
-+static void
- set_processor (pcap_t *this_handle)
- {
-     int datalink;
-@@ -100,7 +112,7 @@ set_processor (pcap_t *this_handle)
-  * FUNCTION     : print_header
-  * DESCRIPTION  : Prints initial header.
-  * ---------------------------------------------------------- */
--void
-+static void
- print_header ()
- {
-     printf("pads - Passive Asset Detection System\n");
-@@ -113,7 +125,7 @@ print_header ()
-  * FUNCTION    : print_usage
-  * DESCRIPTION    : Prints the Program Usage
-  * ---------------------------------------------------------- */
--void
-+static void
- print_usage()
- {
-     printf("Usage:\n"
-@@ -148,7 +160,7 @@ print_usage()
-  * DESCRIPTION  : This function will print version
-  *              : version information.
-  * ---------------------------------------------------------- */
--void
-+static void
- print_version (void)
- {
-     printf("Build:\n");
-@@ -162,7 +174,7 @@ print_version (void)
- }
- 
- /* ----------------------------------------------------------
-- * FUNCTION     : init_pads
-+ * FUNCTION     : init_gc
-  * DESCRIPTION  : This function will initialize PADS.
-  * ---------------------------------------------------------- */
- void init_gc(void)
-@@ -185,8 +197,9 @@ void init_gc(void)
- /* ----------------------------------------------------------
-  * FUNCTION     : init_pads
-  * DESCRIPTION  : This function will initialize PADS.
-+ * RETURN       : 0 success, -1 failure
-  * ---------------------------------------------------------- */
--void
-+static int
- init_pads (void)
- {
-     /* Init global config to known state */
-@@ -199,7 +212,8 @@ init_pads (void)
-         print_header();
- 
-     /* Initialize Output Module */
--    init_output();
-+    if (init_output() < 0)
-+        return -1;
- 
-     /* Process the configuration file. */
-     if (gc.conf_file) {
-@@ -230,7 +244,10 @@ init_pads (void)
- 
-     /* Daemon Mode:  fork child process */
-     if (gc.daemon_mode) {
--        daemonize();
-+        verbose_message("[-] Daemonizing...\n");
-+        if (daemon(0, 0) < 0) {
-+            err_message("Daemonize failed");
-+        }
-         init_pid_file(gc.pid_file, gc.priv_user, gc.priv_group);
-     }
- 
-@@ -239,17 +256,21 @@ init_pads (void)
-     (void) signal(SIGINT, sig_int_handler);
-     (void) signal(SIGQUIT, sig_quit_handler);
-     (void) signal(SIGHUP, sig_hup_handler);
-+
-+    return 0;
- }
- 
- /* ----------------------------------------------------------
-  * FUNCTION     : main_pads
-  * DESCRIPTION  : This is the main function for PADS.
-+ * RETURN       : 0 success, -1 failure
-  * ---------------------------------------------------------- */
--void
-+static int
- main_pads (void)
- {
-     /* Initialize */
--    init_pads();
-+    if (init_pads() < 0)
-+        return -1;
- 
-     if (gc.pcap_file) {
-         /* Read from PCAP file specified by '-r' switch. */
-@@ -324,6 +345,7 @@ main_pads (void)
- 
-     /* End */
-     end_pads();
-+    return 0;
- }
- 
- /* ----------------------------------------------------------
-@@ -490,25 +512,25 @@ process_cmdline (int argc, char *argv[])
-  * initialized in 'init_pads' and will perform a function
-  * based on the signal.
-  * ---------------------------------------------------------- */
--void
-+static void
- sig_term_handler(int signal)
- {
-     end_pads();
- }
- 
--void
-+static void
- sig_int_handler(int signal)
- {
-     end_pads();
- }
- 
--void
-+static void
- sig_quit_handler(int signal)
- {
-     end_pads();
- }
- 
--void
-+static void
- sig_hup_handler(int signal)
- {
-     /* The HUP signal has not been implemented yet. */
-@@ -526,9 +548,7 @@ main(int argc, char *argv[])
-     prog_argv = argv;
- 
-     /* Main Program */
--    main_pads();
--
--    return(0);
-+    return main_pads();
- }
- 
- /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4:
-diff -urpN pads-1.2.orig/src/pads.h pads-1.2/src/pads.h
---- pads-1.2.orig/src/pads.h	2008-06-29 20:16:30.000000000 -0400
-+++ pads-1.2/src/pads.h	2008-07-07 15:41:50.000000000 -0400
-@@ -25,6 +25,8 @@
-  * $Id: pads-1.2-prelude.patch,v 1.1 2008/08/13 17:35:11 sgrubb Exp $
-  *
-  **************************************************************************/
-+#ifndef PADS_HEADER
-+#define PADS_HEADER
- 
- /* DEFINES ----------------------------------------- */
- #ifdef LINUX
-@@ -51,25 +53,19 @@
- /* TYPEDEFS ---------------------------------------- */
- typedef void (*proc_t)(const struct pcap_pkthdr *, const u_char *);
- 
-+extern char **prog_argv;
-+extern int prog_argc;
-+extern GC gc;
-+
- 
- /* PROTOTYPES -------------------------------------- */
- void process_pkt(u_char *args, const struct pcap_pkthdr* pkthdr, const u_char* packet);
--void set_processor (pcap_t *this_handle);
--void print_header(void);
--void print_usage(void);
--void print_version(void);
--void init_pads(void);
--void main_pads(void);
- void end_pads(void);
- 
--void sig_term_handler(int signal);
--void sig_int_handler(int signal);
--void sig_quit_handler(int signal);
--void sig_hup_handler(int signal);
--
- /* packet.h LLC prototypes */
- void process_eth (const struct pcap_pkthdr* pkthdr, const u_char* packet);
- void process_sll (const struct pcap_pkthdr* pkthdr, const u_char* packet);
- 
- /* vim:expandtab:cindent:smartindent:ts=4:tw=0:sw=4:
-  */
-+#endif
-diff -urpN pads-1.2.orig/src/util.c pads-1.2/src/util.c
---- pads-1.2.orig/src/util.c	2008-07-07 13:56:10.000000000 -0400
-+++ pads-1.2/src/util.c	2008-07-07 15:41:50.000000000 -0400
-@@ -75,38 +75,6 @@ chomp (char *string, int size)
- }
- 
- /* ----------------------------------------------------------
-- * FUNCTION     : daemonize
-- * DESCRIPTION  : This function will place the application in
-- *              : the background.
-- * INPUT        : None!
-- * RETURN       : None!
-- * ---------------------------------------------------------- */
--void
--daemonize ()
--{
--    pid_t pid;
--
--    if (!gc.daemon_mode)
--        printf("[-] Daemonizing...\n");
--
--    pid = fork();
--    if (pid > 0) {
--        /* Parent */
--        exit(0);
--    } else if (pid < 0) {
--        /* Error */
--        err_message("fork");
--        exit(0);
--    } else {
--        /* Child */
--        setsid();
--        close(0);
--        close(1);
--        close(2);
--    }
--}
--
--/* ----------------------------------------------------------
-  * FUNCTION     : init_pid_file
-  * DESCRIPTION  : This function will generate a file
-  *              : containing the application's PID.
-diff -urpN pads-1.2.orig/src/util.h pads-1.2/src/util.h
---- pads-1.2.orig/src/util.h	2008-07-07 13:56:10.000000000 -0400
-+++ pads-1.2/src/util.h	2008-07-07 15:41:50.000000000 -0400
-@@ -39,12 +39,27 @@
- /* PROTOTYPES -------------------------------------- */
- void strip_comment (char *string);
- int chomp (char *string, int size);
--void daemonize (void);
- void init_pid_file (bstring pid_file, bstring user, bstring group);
- char *copy_argv(register char **argv);
--void log_message (const char *msg, ...);
--void err_message (const char *msg, ...);
--void verbose_message (const char *msg, ...);
-+void log_message (const char *msg, ...)
-+#ifdef __GNUC__
-+        __attribute__ ((format (printf, 1, 2)));
-+#else
-+        ;
-+#endif
-+void err_message (const char *msg, ...)
-+#ifdef __GNUC__
-+        __attribute__ ((format (printf, 1, 2)));
-+#else
-+        ;
-+#endif
-+void verbose_message (const char *msg, ...)
-+#ifdef __GNUC__
-+        __attribute__ ((format (printf, 1, 2)));
-+#else
-+        ;
-+#endif
-+
- #ifndef HAVE_STRLCPY
- size_t strlcpy(char *dst, const char *src, size_t size);
- #endif

diff --git a/pads-1.2-pthreads.patch b/pads-1.2-pthreads.patch
deleted file mode 100644
index 13ede64..0000000
--- a/pads-1.2-pthreads.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-diff -ur pads-1.2.orig/lib/bstring/Makefile.am pads-1.2/lib/bstring/Makefile.am
---- pads-1.2.orig/lib/bstring/Makefile.am	2008-10-26 09:54:10.000000000 -0400
-+++ pads-1.2/lib/bstring/Makefile.am	2008-10-28 09:40:50.000000000 -0400
-@@ -1,5 +1,6 @@
- # $Id: Makefile.am,v 1.1 2005/02/13 17:54:58 mattshelton Exp $
- AUTOMAKE_OPTIONS=foreign no-dependencies
- noinst_LIBRARIES = libbstring.a
-+libbstring_a_CFLAGS = -pthread
- libbstring_a_SOURCES = bstrlib.c bstrlib.h bstraux.c bstraux.h util.c util.h
- INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src
-diff -ur pads-1.2.orig/src/Makefile.am pads-1.2/src/Makefile.am
---- pads-1.2.orig/src/Makefile.am	2008-10-26 09:54:10.000000000 -0400
-+++ pads-1.2/src/Makefile.am	2008-10-28 09:41:43.000000000 -0400
-@@ -1,6 +1,7 @@
- ## $Id: Makefile.am,v 1.3 2005/02/17 16:29:54 mattshelton Exp $
- AUTOMAKE_OPTIONS=foreign no-dependencies
- bin_PROGRAMS = pads
-+pads_CFLAGS = -pthread
- pads_SOURCES = pads.c pads.h \
- 	       storage.c storage.h \
-                identification.c identification.h \
-@@ -10,6 +11,7 @@
- 	       configuration.c configuration.h \
-                util.c util.h \
-                global.h
-+pads_LDFLAGS = -pthread
- pads_LDADD = $(top_srcdir)/lib/bstring/libbstring.a output/liboutput.a
- bin_SCRIPTS = pads-report
- 
-diff -ur pads-1.2.orig/src/output/Makefile.am pads-1.2/src/output/Makefile.am
---- pads-1.2.orig/src/output/Makefile.am	2008-10-26 09:54:10.000000000 -0400
-+++ pads-1.2/src/output/Makefile.am	2008-10-28 09:40:50.000000000 -0400
-@@ -1,6 +1,7 @@
- # $Id: Makefile.am,v 1.1 2005/02/10 06:05:06 mattshelton Exp $
- AUTOMAKE_OPTIONS=foreign no-dependencies
- noinst_LIBRARIES = liboutput.a
-+liboutput_a_CFLAGS = -pthread
- liboutput_a_SOURCES = output.c output.h \
- 		      output-screen.c output-screen.h \
-                       output-csv.c output-csv.h \

diff --git a/pads-1.2-readonly.patch b/pads-1.2-readonly.patch
deleted file mode 100644
index 0304097..0000000
--- a/pads-1.2-readonly.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-diff -urp pads-1.2.orig/doc/pads.conf.8 pads-1.2/doc/pads.conf.8
---- pads-1.2.orig/doc/pads.conf.8	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/doc/pads.conf.8	2008-07-08 17:36:41.000000000 -0400
-@@ -69,9 +69,12 @@ assets found in these networks will be r
- This output plugin displays PADS data to the screen.  When using the
- configuration file, it defaults to off.
- 
--.IP "output csv: <filename>"
-+.IP "output csv: <filename> [readonly]"
- This output plugin writes PADS data to a CSV file.  Optionally, a CSV filename
--can be specified as an argument.
-+can be specified as an argument. If you want the file used only to populate
-+the internal known assets list but never be updated, then use the readonly
-+option. This would be handy when you have a baseline and want to use it for
-+intrusion detection.
- 
- .IP "output fifo: <filename>"
- This output plugin writes PADS data to a FIFO file.  Optionally, a FIFO
-diff -urp pads-1.2.orig/etc/pads.conf pads-1.2/etc/pads.conf
---- pads-1.2.orig/etc/pads.conf	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/etc/pads.conf	2008-07-08 17:36:51.000000000 -0400
-@@ -67,7 +67,9 @@ pid_file /var/run/pads.pid
- # output:  csv
- # -------------------------
- # This output plugin writes PADS data to a CSV file.  Optionally, a CSV filename
--# can be specified as an argument.
-+# can be specified as an argument. If you want the file used only to populate
-+# the internal known assets list but never be updated, then add the readonly
-+# option.
- output csv: /etc/pads-assets.csv
- 
- # output:  fifo
-@@ -81,5 +83,4 @@ output csv: /etc/pads-assets.csv
- # This output plugin writes PADS data as IDMEF alerts via prelude.  Optionally
- # you can add a profile name if you want something different than the default
- # of pads.
--#
- #output prelude: pads
-diff -urp pads-1.2.orig/src/output/output-csv.c pads-1.2/src/output/output-csv.c
---- pads-1.2.orig/src/output/output-csv.c	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/output/output-csv.c	2008-07-08 17:36:41.000000000 -0400
-@@ -60,6 +60,9 @@ setup_output_csv (void)
- 	log_message("warning:  'register_output_plugin' in function 'setup_output_csv' failed.");
- 	return -1;
-     }
-+    output_csv_conf.filename = NULL;
-+    output_csv_conf.file = NULL;
-+    output_csv_conf.readonly = 0;
- 
-     return 0;
- }
-@@ -81,22 +84,39 @@ init_output_csv (bstring filename)
-     verbose_message("Initializing CSV output plugin.");
- 
-     /* Make sure filename isn't NULL. */
--    if (filename != NULL)
--	output_csv_conf.filename = bstrcpy(filename);
--    else
-+    if (filename != NULL) {
-+        /* Parse the args looking for readonly and file name */
-+        int i;
-+        struct bstrList *list = bsplit(filename, ' ');
-+        if (list->qty > 2) {
-+            err_message("Too many args for output csv");
-+            return -1;
-+        }
-+        for (i=0; i< list->qty; i++) {
-+            if (biseqcstr(list->entry[i], "readonly") == 1) {
-+                output_csv_conf.readonly = 1;
-+                verbose_message("Using csv file in read only mode.");
-+            } else if (output_csv_conf.filename == NULL)
-+	        output_csv_conf.filename = bstrcpy(filename);
-+            else
-+                err_message("Unrecognized output csv option");
-+	} 
-+        bstrListDestroy(list);
-+    } else
- 	output_csv_conf.filename = bfromcstr("assets.csv");
- 
-     /* Check to see if *filename exists. */
-     if ((fp = fopen((char *)bdata(output_csv_conf.filename), "r")) == NULL) {
- 
--	/* File does not exist, create new.. */
--	if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "w")) != NULL) {
--	    fprintf(output_csv_conf.file, "asset,port,proto,service,application,discovered\n");
--	    fflush(output_csv_conf.file);
--
--	} else {
--	    err_message("Cannot open file %s!", bdata(output_csv_conf.filename));
--	    return -1;
-+	if (output_csv_conf.readonly == 0) {
-+	    /* File does not exist, create new.. */
-+	    if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "w")) != NULL) {
-+	        fprintf(output_csv_conf.file, "asset,port,proto,service,application,discovered\n");
-+	        fflush(output_csv_conf.file);
-+	    } else {
-+	        err_message("Cannot open file %s!", bdata(output_csv_conf.filename));
-+	        return -1;
-+            }
- 	}
- 
-     } else {
-@@ -105,11 +125,14 @@ init_output_csv (bstring filename)
- 	fclose(fp);
- 	read_report_file();
- 
--	/* Open file and assign it to the global FILE pointer.  */
--	if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "a")) == NULL) {
--	    err_message("Cannot open file %s!", bdata(output_csv_conf.filename));
--	    return -1;
--	}
-+	if (output_csv_conf.readonly == 0) {
-+	    /* Open file and assign it to the global FILE pointer.  */
-+	    if ((output_csv_conf.file = fopen((char *)bdata(output_csv_conf.filename), "a")) == NULL) {
-+	        err_message("Cannot open file %s!",
-+                            bdata(output_csv_conf.filename));
-+	        return -1;
-+	    }
-+        }
-     }
- 
-     return 0;
-@@ -255,6 +278,9 @@ parse_raw_report (bstring line)
- int
- print_asset_csv (Asset *rec)
- {
-+    if (output_csv_conf.readonly)
-+        return 0;
-+
-     if (output_csv_conf.file != NULL) {
- 	if (gc.hide_unknowns == 0 || ((biseqcstr(rec->service, "unknown") != 0) &&
- 		    (biseqcstr(rec->application, "unknown") != 0))) {
-@@ -285,6 +311,9 @@ print_asset_csv (Asset *rec)
- int
- print_arp_asset_csv (ArpAsset *rec)
- {
-+    if (output_csv_conf.readonly)
-+        return 0;
-+
-     /* Print to File */
-     if (output_csv_conf.file != NULL) {
- 	if (rec->mac_resolved != NULL) {
-diff -urp pads-1.2.orig/src/output/output-csv.h pads-1.2/src/output/output-csv.h
---- pads-1.2.orig/src/output/output-csv.h	2008-07-08 14:28:29.000000000 -0400
-+++ pads-1.2/src/output/output-csv.h	2008-07-08 17:36:41.000000000 -0400
-@@ -50,6 +50,7 @@ typedef struct _OutputCSVConf
- {
-     FILE *file;
-     bstring filename;
-+    int readonly;
- } OutputCSVConf;
- 
- 

diff --git a/pads-aarch64.patch b/pads-aarch64.patch
deleted file mode 100644
index 33e9263..0000000
--- a/pads-aarch64.patch
+++ /dev/null
@@ -1,2549 +0,0 @@
-diff -urN pads-1.2/config.guess pads-1.2-aarch64/config.guess
---- pads-1.2/config.guess	2004-09-29 00:15:05.000000000 -0500
-+++ pads-1.2-aarch64/config.guess	2013-03-03 07:01:43.314424034 -0600
-@@ -1,9 +1,10 @@
- #! /bin/sh
- # Attempt to guess a canonical system name.
- #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--#   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-+#   2011, 2012 Free Software Foundation, Inc.
- 
--timestamp='2004-09-07'
-+timestamp='2012-09-25'
- 
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
-@@ -16,24 +17,24 @@
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
- 
--# Originally written by Per Bothner <per@bothner.com>.
--# Please send patches to <config-patches@gnu.org>.  Submit a context
--# diff and a properly formatted ChangeLog entry.
-+
-+# Originally written by Per Bothner.  Please send patches (context
-+# diff format) to <config-patches@gnu.org> and include a ChangeLog
-+# entry.
- #
- # This script attempts to guess a canonical system name similar to
- # config.sub.  If it succeeds, it prints the system name on stdout, and
- # exits with 0.  Otherwise, it exits with 1.
- #
--# The plan is that this can be called by configure scripts if you
--# don't specify an explicit build system type.
-+# You can get the latest version of this script from:
-+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
- 
- me=`echo "$0" | sed -e 's,.*/,,'`
- 
-@@ -53,7 +54,8 @@
- GNU config.guess ($timestamp)
- 
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
- Free Software Foundation, Inc.
- 
- This is free software; see the source for copying conditions.  There is NO
-@@ -66,11 +68,11 @@
- while test $# -gt 0 ; do
-   case $1 in
-     --time-stamp | --time* | -t )
--       echo "$timestamp" ; exit 0 ;;
-+       echo "$timestamp" ; exit ;;
-     --version | -v )
--       echo "$version" ; exit 0 ;;
-+       echo "$version" ; exit ;;
-     --help | --h* | -h )
--       echo "$usage"; exit 0 ;;
-+       echo "$usage"; exit ;;
-     -- )     # Stop option processing
-        shift; break ;;
-     - )	# Use stdin as input.
-@@ -104,7 +106,7 @@
- trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
- trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
- : ${TMPDIR=/tmp} ;
-- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
-  { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-  { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-@@ -123,7 +125,7 @@
- 	;;
-  ,,*)   CC_FOR_BUILD=$CC ;;
-  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
--esac ;'
-+esac ; set_cc_for_build= ;'
- 
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
- # (ghazi@noc.rutgers.edu 1994-08-24)
-@@ -141,7 +143,7 @@
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-     *:NetBSD:*:*)
- 	# NetBSD (nbsd) targets should (where applicable) match one or
--	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
- 	# switched to ELF, *-*-netbsd* would select the old
- 	# object file format.  This provides both forward
-@@ -158,6 +160,7 @@
- 	    arm*) machine=arm-unknown ;;
- 	    sh3el) machine=shl-unknown ;;
- 	    sh3eb) machine=sh-unknown ;;
-+	    sh5el) machine=sh5le-unknown ;;
- 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
- 	esac
- 	# The Operating System including object format, if it has switched
-@@ -166,7 +169,7 @@
- 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- 		eval $set_cc_for_build
- 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
--			| grep __ELF__ >/dev/null
-+			| grep -q __ELF__
- 		then
- 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- 		    # Return netbsd for either.  FIX?
-@@ -176,7 +179,7 @@
- 		fi
- 		;;
- 	    *)
--	        os=netbsd
-+		os=netbsd
- 		;;
- 	esac
- 	# The OS release
-@@ -196,62 +199,34 @@
- 	# contains redundant information, the shorter form:
- 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- 	echo "${machine}-${os}${release}"
--	exit 0 ;;
--    amd64:OpenBSD:*:*)
--	echo x86_64-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    amiga:OpenBSD:*:*)
--	echo m68k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    cats:OpenBSD:*:*)
--	echo arm-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    hp300:OpenBSD:*:*)
--	echo m68k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    luna88k:OpenBSD:*:*)
--    	echo m88k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    mac68k:OpenBSD:*:*)
--	echo m68k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    macppc:OpenBSD:*:*)
--	echo powerpc-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    mvme68k:OpenBSD:*:*)
--	echo m68k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    mvme88k:OpenBSD:*:*)
--	echo m88k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    mvmeppc:OpenBSD:*:*)
--	echo powerpc-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    sgi:OpenBSD:*:*)
--	echo mips64-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
--    sun3:OpenBSD:*:*)
--	echo m68k-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-+    *:Bitrig:*:*)
-+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-+	exit ;;
-     *:OpenBSD:*:*)
--	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
--	exit 0 ;;
-+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-+	exit ;;
-     *:ekkoBSD:*:*)
- 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-+    *:SolidBSD:*:*)
-+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-+	exit ;;
-     macppc:MirBSD:*:*)
--	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
--	exit 0 ;;
-+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-+	exit ;;
-     *:MirBSD:*:*)
- 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     alpha:OSF1:*:*)
- 	case $UNAME_RELEASE in
- 	*4.0)
- 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- 		;;
- 	*5.*)
--	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
- 		;;
- 	esac
- 	# According to Compaq, /usr/sbin/psrinfo has been available on
-@@ -297,37 +272,46 @@
- 	# A Xn.n version is an unreleased experimental baselevel.
- 	# 1.2 uses "1.2" for uname -r.
- 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
--	exit 0 ;;
-+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-+	exitcode=$?
-+	trap '' 0
-+	exit $exitcode ;;
-     Alpha\ *:Windows_NT*:*)
- 	# How do we know it's Interix rather than the generic POSIX subsystem?
- 	# Should we change UNAME_MACHINE based on the output of uname instead
- 	# of the specific Alpha model?
- 	echo alpha-pc-interix
--	exit 0 ;;
-+	exit ;;
-     21064:Windows_NT:50:3)
- 	echo alpha-dec-winnt3.5
--	exit 0 ;;
-+	exit ;;
-     Amiga*:UNIX_System_V:4.0:*)
- 	echo m68k-unknown-sysv4
--	exit 0;;
-+	exit ;;
-     *:[Aa]miga[Oo][Ss]:*:*)
- 	echo ${UNAME_MACHINE}-unknown-amigaos
--	exit 0 ;;
-+	exit ;;
-     *:[Mm]orph[Oo][Ss]:*:*)
- 	echo ${UNAME_MACHINE}-unknown-morphos
--	exit 0 ;;
-+	exit ;;
-     *:OS/390:*:*)
- 	echo i370-ibm-openedition
--	exit 0 ;;
-+	exit ;;
-+    *:z/VM:*:*)
-+	echo s390-ibm-zvmoe
-+	exit ;;
-     *:OS400:*:*)
--        echo powerpc-ibm-os400
--	exit 0 ;;
-+	echo powerpc-ibm-os400
-+	exit ;;
-     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- 	echo arm-acorn-riscix${UNAME_RELEASE}
--	exit 0;;
-+	exit ;;
-+    arm*:riscos:*:*|arm*:RISCOS:*:*)
-+	echo arm-unknown-riscos
-+	exit ;;
-     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- 	echo hppa1.1-hitachi-hiuxmpp
--	exit 0;;
-+	exit ;;
-     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
- 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- 	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-@@ -335,32 +319,51 @@
- 	else
- 		echo pyramid-pyramid-bsd
- 	fi
--	exit 0 ;;
-+	exit ;;
-     NILE*:*:*:dcosx)
- 	echo pyramid-pyramid-svr4
--	exit 0 ;;
-+	exit ;;
-     DRS?6000:unix:4.0:6*)
- 	echo sparc-icl-nx6
--	exit 0 ;;
--    DRS?6000:UNIX_SV:4.2*:7*)
-+	exit ;;
-+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- 	case `/usr/bin/uname -p` in
--	    sparc) echo sparc-icl-nx7 && exit 0 ;;
-+	    sparc) echo sparc-icl-nx7; exit ;;
- 	esac ;;
-+    s390x:SunOS:*:*)
-+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-+	exit ;;
-     sun4H:SunOS:5.*:*)
- 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
--	exit 0 ;;
-+	exit ;;
-     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
--	exit 0 ;;
--    i86pc:SunOS:5.*:*)
--	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
--	exit 0 ;;
-+	exit ;;
-+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-+	echo i386-pc-auroraux${UNAME_RELEASE}
-+	exit ;;
-+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-+	eval $set_cc_for_build
-+	SUN_ARCH="i386"
-+	# If there is a compiler, see if it is configured for 64-bit objects.
-+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-+	# This test works for both compilers.
-+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-+		grep IS_64BIT_ARCH >/dev/null
-+	    then
-+		SUN_ARCH="x86_64"
-+	    fi
-+	fi
-+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-+	exit ;;
-     sun4*:SunOS:6*:*)
- 	# According to config.sub, this is the proper way to canonicalize
- 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
- 	# it's likely to be more like Solaris than SunOS4.
- 	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
--	exit 0 ;;
-+	exit ;;
-     sun4*:SunOS:*:*)
- 	case "`/usr/bin/arch -k`" in
- 	    Series*|S4*)
-@@ -369,10 +372,10 @@
- 	esac
- 	# Japanese Language versions have a version number like `4.1.3-JL'.
- 	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
--	exit 0 ;;
-+	exit ;;
-     sun3*:SunOS:*:*)
- 	echo m68k-sun-sunos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     sun*:*:4.2BSD:*)
- 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- 	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-@@ -384,10 +387,10 @@
- 		echo sparc-sun-sunos${UNAME_RELEASE}
- 		;;
- 	esac
--	exit 0 ;;
-+	exit ;;
-     aushp:SunOS:*:*)
- 	echo sparc-auspex-sunos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     # The situation for MiNT is a little confusing.  The machine name
-     # can be virtually everything (everything which is not
-     # "atarist" or "atariste" at least should have a processor
-@@ -397,41 +400,41 @@
-     # MiNT.  But MiNT is downward compatible to TOS, so this should
-     # be no problem.
-     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
--        echo m68k-atari-mint${UNAME_RELEASE}
--	exit 0 ;;
-+	echo m68k-atari-mint${UNAME_RELEASE}
-+	exit ;;
-     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- 	echo m68k-atari-mint${UNAME_RELEASE}
--        exit 0 ;;
-+	exit ;;
-     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
--        echo m68k-atari-mint${UNAME_RELEASE}
--	exit 0 ;;
-+	echo m68k-atari-mint${UNAME_RELEASE}
-+	exit ;;
-     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
--        echo m68k-milan-mint${UNAME_RELEASE}
--        exit 0 ;;
-+	echo m68k-milan-mint${UNAME_RELEASE}
-+	exit ;;
-     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
--        echo m68k-hades-mint${UNAME_RELEASE}
--        exit 0 ;;
-+	echo m68k-hades-mint${UNAME_RELEASE}
-+	exit ;;
-     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
--        echo m68k-unknown-mint${UNAME_RELEASE}
--        exit 0 ;;
-+	echo m68k-unknown-mint${UNAME_RELEASE}
-+	exit ;;
-     m68k:machten:*:*)
- 	echo m68k-apple-machten${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     powerpc:machten:*:*)
- 	echo powerpc-apple-machten${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     RISC*:Mach:*:*)
- 	echo mips-dec-mach_bsd4.3
--	exit 0 ;;
-+	exit ;;
-     RISC*:ULTRIX:*:*)
- 	echo mips-dec-ultrix${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     VAX*:ULTRIX*:*:*)
- 	echo vax-dec-ultrix${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     2020:CLIX:*:* | 2430:CLIX:*:*)
- 	echo clipper-intergraph-clix${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     mips:*:*:UMIPS | mips:*:*:RISCos)
- 	eval $set_cc_for_build
- 	sed 's/^	//' << EOF >$dummy.c
-@@ -455,35 +458,36 @@
- 	  exit (-1);
- 	}
- EOF
--	$CC_FOR_BUILD -o $dummy $dummy.c \
--	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
--	  && exit 0
-+	$CC_FOR_BUILD -o $dummy $dummy.c &&
-+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-+	  SYSTEM_NAME=`$dummy $dummyarg` &&
-+	    { echo "$SYSTEM_NAME"; exit; }
- 	echo mips-mips-riscos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     Motorola:PowerMAX_OS:*:*)
- 	echo powerpc-motorola-powermax
--	exit 0 ;;
-+	exit ;;
-     Motorola:*:4.3:PL8-*)
- 	echo powerpc-harris-powermax
--	exit 0 ;;
-+	exit ;;
-     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- 	echo powerpc-harris-powermax
--	exit 0 ;;
-+	exit ;;
-     Night_Hawk:Power_UNIX:*:*)
- 	echo powerpc-harris-powerunix
--	exit 0 ;;
-+	exit ;;
-     m88k:CX/UX:7*:*)
- 	echo m88k-harris-cxux7
--	exit 0 ;;
-+	exit ;;
-     m88k:*:4*:R4*)
- 	echo m88k-motorola-sysv4
--	exit 0 ;;
-+	exit ;;
-     m88k:*:3*:R3*)
- 	echo m88k-motorola-sysv3
--	exit 0 ;;
-+	exit ;;
-     AViiON:dgux:*:*)
--        # DG/UX returns AViiON for all architectures
--        UNAME_PROCESSOR=`/usr/bin/uname -p`
-+	# DG/UX returns AViiON for all architectures
-+	UNAME_PROCESSOR=`/usr/bin/uname -p`
- 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- 	then
- 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-@@ -496,29 +500,29 @@
- 	else
- 	    echo i586-dg-dgux${UNAME_RELEASE}
- 	fi
-- 	exit 0 ;;
-+	exit ;;
-     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
- 	echo m88k-dolphin-sysv3
--	exit 0 ;;
-+	exit ;;
-     M88*:*:R3*:*)
- 	# Delta 88k system running SVR3
- 	echo m88k-motorola-sysv3
--	exit 0 ;;
-+	exit ;;
-     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- 	echo m88k-tektronix-sysv3
--	exit 0 ;;
-+	exit ;;
-     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- 	echo m68k-tektronix-bsd
--	exit 0 ;;
-+	exit ;;
-     *:IRIX*:*:*)
- 	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
--	exit 0 ;;
-+	exit ;;
-     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
--	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
--	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
-+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-     i*86:AIX:*:*)
- 	echo i386-ibm-aix
--	exit 0 ;;
-+	exit ;;
-     ia64:AIX:*:*)
- 	if [ -x /usr/bin/oslevel ] ; then
- 		IBM_REV=`/usr/bin/oslevel`
-@@ -526,7 +530,7 @@
- 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- 	fi
- 	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
--	exit 0 ;;
-+	exit ;;
-     *:AIX:2:3)
- 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- 		eval $set_cc_for_build
-@@ -541,15 +545,19 @@
- 			exit(0);
- 			}
- EOF
--		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
--		echo rs6000-ibm-aix3.2.5
-+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-+		then
-+			echo "$SYSTEM_NAME"
-+		else
-+			echo rs6000-ibm-aix3.2.5
-+		fi
- 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- 		echo rs6000-ibm-aix3.2.4
- 	else
- 		echo rs6000-ibm-aix3.2
- 	fi
--	exit 0 ;;
--    *:AIX:*:[45])
-+	exit ;;
-+    *:AIX:*:[4567])
- 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
- 		IBM_ARCH=rs6000
-@@ -562,28 +570,28 @@
- 		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
- 	fi
- 	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
--	exit 0 ;;
-+	exit ;;
-     *:AIX:*:*)
- 	echo rs6000-ibm-aix
--	exit 0 ;;
-+	exit ;;
-     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
- 	echo romp-ibm-bsd4.4
--	exit 0 ;;
-+	exit ;;
-     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
- 	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
--	exit 0 ;;                           # report: romp-ibm BSD 4.3
-+	exit ;;                             # report: romp-ibm BSD 4.3
-     *:BOSX:*:*)
- 	echo rs6000-bull-bosx
--	exit 0 ;;
-+	exit ;;
-     DPX/2?00:B.O.S.:*:*)
- 	echo m68k-bull-sysv3
--	exit 0 ;;
-+	exit ;;
-     9000/[34]??:4.3bsd:1.*:*)
- 	echo m68k-hp-bsd
--	exit 0 ;;
-+	exit ;;
-     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- 	echo m68k-hp-bsd4.4
--	exit 0 ;;
-+	exit ;;
-     9000/[34678]??:HP-UX:*:*)
- 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- 	case "${UNAME_MACHINE}" in
-@@ -592,52 +600,52 @@
- 	    9000/[678][0-9][0-9])
- 		if [ -x /usr/bin/getconf ]; then
- 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
--                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
--                    case "${sc_cpu_version}" in
--                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
--                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
--                      532)                      # CPU_PA_RISC2_0
--                        case "${sc_kernel_bits}" in
--                          32) HP_ARCH="hppa2.0n" ;;
--                          64) HP_ARCH="hppa2.0w" ;;
-+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-+		    case "${sc_cpu_version}" in
-+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-+		      532)                      # CPU_PA_RISC2_0
-+			case "${sc_kernel_bits}" in
-+			  32) HP_ARCH="hppa2.0n" ;;
-+			  64) HP_ARCH="hppa2.0w" ;;
- 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
--                        esac ;;
--                    esac
-+			esac ;;
-+		    esac
- 		fi
- 		if [ "${HP_ARCH}" = "" ]; then
- 		    eval $set_cc_for_build
--		    sed 's/^              //' << EOF >$dummy.c
-+		    sed 's/^		//' << EOF >$dummy.c
- 
--              #define _HPUX_SOURCE
--              #include <stdlib.h>
--              #include <unistd.h>
--
--              int main ()
--              {
--              #if defined(_SC_KERNEL_BITS)
--                  long bits = sysconf(_SC_KERNEL_BITS);
--              #endif
--                  long cpu  = sysconf (_SC_CPU_VERSION);
--
--                  switch (cpu)
--              	{
--              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
--              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
--              	case CPU_PA_RISC2_0:
--              #if defined(_SC_KERNEL_BITS)
--              	    switch (bits)
--              		{
--              		case 64: puts ("hppa2.0w"); break;
--              		case 32: puts ("hppa2.0n"); break;
--              		default: puts ("hppa2.0"); break;
--              		} break;
--              #else  /* !defined(_SC_KERNEL_BITS) */
--              	    puts ("hppa2.0"); break;
--              #endif
--              	default: puts ("hppa1.0"); break;
--              	}
--                  exit (0);
--              }
-+		#define _HPUX_SOURCE
-+		#include <stdlib.h>
-+		#include <unistd.h>
-+
-+		int main ()
-+		{
-+		#if defined(_SC_KERNEL_BITS)
-+		    long bits = sysconf(_SC_KERNEL_BITS);
-+		#endif
-+		    long cpu  = sysconf (_SC_CPU_VERSION);
-+
-+		    switch (cpu)
-+			{
-+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-+			case CPU_PA_RISC2_0:
-+		#if defined(_SC_KERNEL_BITS)
-+			    switch (bits)
-+				{
-+				case 64: puts ("hppa2.0w"); break;
-+				case 32: puts ("hppa2.0n"); break;
-+				default: puts ("hppa2.0"); break;
-+				} break;
-+		#else  /* !defined(_SC_KERNEL_BITS) */
-+			    puts ("hppa2.0"); break;
-+		#endif
-+			default: puts ("hppa1.0"); break;
-+			}
-+		    exit (0);
-+		}
- EOF
- 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
- 		    test -z "$HP_ARCH" && HP_ARCH=hppa
-@@ -645,9 +653,19 @@
- 	esac
- 	if [ ${HP_ARCH} = "hppa2.0w" ]
- 	then
--	    # avoid double evaluation of $set_cc_for_build
--	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
--	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
-+	    eval $set_cc_for_build
-+
-+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-+	    # generating 64-bit code.  GNU and HP use different nomenclature:
-+	    #
-+	    # $ CC_FOR_BUILD=cc ./config.guess
-+	    # => hppa2.0w-hp-hpux11.23
-+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-+	    # => hppa64-hp-hpux11.23
-+
-+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-+		grep -q __LP64__
- 	    then
- 		HP_ARCH="hppa2.0w"
- 	    else
-@@ -655,11 +673,11 @@
- 	    fi
- 	fi
- 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
--	exit 0 ;;
-+	exit ;;
-     ia64:HP-UX:*:*)
- 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- 	echo ia64-hp-hpux${HPUX_REV}
--	exit 0 ;;
-+	exit ;;
-     3050*:HI-UX:*:*)
- 	eval $set_cc_for_build
- 	sed 's/^	//' << EOF >$dummy.c
-@@ -687,216 +705,269 @@
- 	  exit (0);
- 	}
- EOF
--	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
-+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-+		{ echo "$SYSTEM_NAME"; exit; }
- 	echo unknown-hitachi-hiuxwe2
--	exit 0 ;;
-+	exit ;;
-     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
- 	echo hppa1.1-hp-bsd
--	exit 0 ;;
-+	exit ;;
-     9000/8??:4.3bsd:*:*)
- 	echo hppa1.0-hp-bsd
--	exit 0 ;;
-+	exit ;;
-     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- 	echo hppa1.0-hp-mpeix
--	exit 0 ;;
-+	exit ;;
-     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
- 	echo hppa1.1-hp-osf
--	exit 0 ;;
-+	exit ;;
-     hp8??:OSF1:*:*)
- 	echo hppa1.0-hp-osf
--	exit 0 ;;
-+	exit ;;
-     i*86:OSF1:*:*)
- 	if [ -x /usr/sbin/sysversion ] ; then
- 	    echo ${UNAME_MACHINE}-unknown-osf1mk
- 	else
- 	    echo ${UNAME_MACHINE}-unknown-osf1
- 	fi
--	exit 0 ;;
-+	exit ;;
-     parisc*:Lites*:*:*)
- 	echo hppa1.1-hp-lites
--	exit 0 ;;
-+	exit ;;
-     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- 	echo c1-convex-bsd
--        exit 0 ;;
-+	exit ;;
-     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
- 	if getsysinfo -f scalar_acc
- 	then echo c32-convex-bsd
- 	else echo c2-convex-bsd
- 	fi
--        exit 0 ;;
-+	exit ;;
-     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- 	echo c34-convex-bsd
--        exit 0 ;;
-+	exit ;;
-     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- 	echo c38-convex-bsd
--        exit 0 ;;
-+	exit ;;
-     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- 	echo c4-convex-bsd
--        exit 0 ;;
-+	exit ;;
-     CRAY*Y-MP:*:*:*)
- 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
--	exit 0 ;;
-+	exit ;;
-     CRAY*[A-Z]90:*:*:*)
- 	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
- 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
- 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
- 	      -e 's/\.[^.]*$/.X/'
--	exit 0 ;;
-+	exit ;;
-     CRAY*TS:*:*:*)
- 	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
--	exit 0 ;;
-+	exit ;;
-     CRAY*T3E:*:*:*)
- 	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
--	exit 0 ;;
-+	exit ;;
-     CRAY*SV1:*:*:*)
- 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
--	exit 0 ;;
-+	exit ;;
-     *:UNICOS/mp:*:*)
- 	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
--	exit 0 ;;
-+	exit ;;
-     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
--        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
--        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
--        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
--        exit 0 ;;
-+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+	exit ;;
-     5000:UNIX_System_V:4.*:*)
--        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
--        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
--        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
--	exit 0 ;;
-+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-+	exit ;;
-     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     sparc*:BSD/OS:*:*)
- 	echo sparc-unknown-bsdi${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:BSD/OS:*:*)
- 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:FreeBSD:*:*)
--	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
--	exit 0 ;;
-+	UNAME_PROCESSOR=`/usr/bin/uname -p`
-+	case ${UNAME_PROCESSOR} in
-+	    amd64)
-+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+	    *)
-+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+	esac
-+	exit ;;
-     i*:CYGWIN*:*)
- 	echo ${UNAME_MACHINE}-pc-cygwin
--	exit 0 ;;
--    i*:MINGW*:*)
-+	exit ;;
-+    *:MINGW64*:*)
-+	echo ${UNAME_MACHINE}-pc-mingw64
-+	exit ;;
-+    *:MINGW*:*)
- 	echo ${UNAME_MACHINE}-pc-mingw32
--	exit 0 ;;
-+	exit ;;
-+    i*:MSYS*:*)
-+	echo ${UNAME_MACHINE}-pc-msys
-+	exit ;;
-+    i*:windows32*:*)
-+	# uname -m includes "-pc" on this system.
-+	echo ${UNAME_MACHINE}-mingw32
-+	exit ;;
-     i*:PW*:*)
- 	echo ${UNAME_MACHINE}-pc-pw32
--	exit 0 ;;
--    x86:Interix*:[34]*)
--	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
--	exit 0 ;;
-+	exit ;;
-+    *:Interix*:*)
-+	case ${UNAME_MACHINE} in
-+	    x86)
-+		echo i586-pc-interix${UNAME_RELEASE}
-+		exit ;;
-+	    authenticamd | genuineintel | EM64T)
-+		echo x86_64-unknown-interix${UNAME_RELEASE}
-+		exit ;;
-+	    IA64)
-+		echo ia64-unknown-interix${UNAME_RELEASE}
-+		exit ;;
-+	esac ;;
-     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- 	echo i${UNAME_MACHINE}-pc-mks
--	exit 0 ;;
-+	exit ;;
-+    8664:Windows_NT:*)
-+	echo x86_64-pc-mks
-+	exit ;;
-     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- 	# How do we know it's Interix rather than the generic POSIX subsystem?
- 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- 	# UNAME_MACHINE based on the output of uname instead of i386?
- 	echo i586-pc-interix
--	exit 0 ;;
-+	exit ;;
-     i*:UWIN*:*)
- 	echo ${UNAME_MACHINE}-pc-uwin
--	exit 0 ;;
-+	exit ;;
-+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-+	echo x86_64-unknown-cygwin
-+	exit ;;
-     p*:CYGWIN*:*)
- 	echo powerpcle-unknown-cygwin
--	exit 0 ;;
-+	exit ;;
-     prep*:SunOS:5.*:*)
- 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
--	exit 0 ;;
-+	exit ;;
-     *:GNU:*:*)
- 	# the GNU system
- 	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
--	exit 0 ;;
-+	exit ;;
-     *:GNU/*:*:*)
- 	# other systems with GNU libc and userland
- 	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
--	exit 0 ;;
-+	exit ;;
-     i*86:Minix:*:*)
- 	echo ${UNAME_MACHINE}-pc-minix
--	exit 0 ;;
-+	exit ;;
-+    aarch64:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    aarch64_be:Linux:*:*)
-+	UNAME_MACHINE=aarch64_be
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    alpha:Linux:*:*)
-+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-+	  EV5)   UNAME_MACHINE=alphaev5 ;;
-+	  EV56)  UNAME_MACHINE=alphaev56 ;;
-+	  PCA56) UNAME_MACHINE=alphapca56 ;;
-+	  PCA57) UNAME_MACHINE=alphapca56 ;;
-+	  EV6)   UNAME_MACHINE=alphaev6 ;;
-+	  EV67)  UNAME_MACHINE=alphaev67 ;;
-+	  EV68*) UNAME_MACHINE=alphaev68 ;;
-+	esac
-+	objdump --private-headers /bin/sh | grep -q ld.so.1
-+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-+	exit ;;
-     arm*:Linux:*:*)
-+	eval $set_cc_for_build
-+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-+	    | grep -q __ARM_EABI__
-+	then
-+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	else
-+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-+		| grep -q __ARM_PCS_VFP
-+	    then
-+		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
-+	    else
-+		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
-+	    fi
-+	fi
-+	exit ;;
-+    avr32*:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
-+	exit ;;
-     cris:Linux:*:*)
--	echo cris-axis-linux-gnu
--	exit 0 ;;
-+	echo ${UNAME_MACHINE}-axis-linux-gnu
-+	exit ;;
-     crisv32:Linux:*:*)
--	echo crisv32-axis-linux-gnu
--	exit 0 ;;
-+	echo ${UNAME_MACHINE}-axis-linux-gnu
-+	exit ;;
-     frv:Linux:*:*)
--    	echo frv-unknown-linux-gnu
--	exit 0 ;;
--    ia64:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
--    m32r*:Linux:*:*)
-+	exit ;;
-+    hexagon:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
--    m68*:Linux:*:*)
--	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
--    mips:Linux:*:*)
-+	exit ;;
-+    i*86:Linux:*:*)
-+	LIBC=gnu
- 	eval $set_cc_for_build
- 	sed 's/^	//' << EOF >$dummy.c
--	#undef CPU
--	#undef mips
--	#undef mipsel
--	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
--	CPU=mipsel
--	#else
--	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
--	CPU=mips
--	#else
--	CPU=
--	#endif
-+	#ifdef __dietlibc__
-+	LIBC=dietlibc
- 	#endif
- EOF
--	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
--	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
--	;;
--    mips64:Linux:*:*)
-+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-+	exit ;;
-+    ia64:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    m32r*:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    m68*:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    mips:Linux:*:* | mips64:Linux:*:*)
- 	eval $set_cc_for_build
- 	sed 's/^	//' << EOF >$dummy.c
- 	#undef CPU
--	#undef mips64
--	#undef mips64el
-+	#undef ${UNAME_MACHINE}
-+	#undef ${UNAME_MACHINE}el
- 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
--	CPU=mips64el
-+	CPU=${UNAME_MACHINE}el
- 	#else
- 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
--	CPU=mips64
-+	CPU=${UNAME_MACHINE}
- 	#else
- 	CPU=
- 	#endif
- 	#endif
- EOF
--	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
--	test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
-+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- 	;;
--    ppc:Linux:*:*)
--	echo powerpc-unknown-linux-gnu
--	exit 0 ;;
--    ppc64:Linux:*:*)
--	echo powerpc64-unknown-linux-gnu
--	exit 0 ;;
--    alpha:Linux:*:*)
--	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
--	  EV5)   UNAME_MACHINE=alphaev5 ;;
--	  EV56)  UNAME_MACHINE=alphaev56 ;;
--	  PCA56) UNAME_MACHINE=alphapca56 ;;
--	  PCA57) UNAME_MACHINE=alphapca56 ;;
--	  EV6)   UNAME_MACHINE=alphaev6 ;;
--	  EV67)  UNAME_MACHINE=alphaev67 ;;
--	  EV68*) UNAME_MACHINE=alphaev68 ;;
--        esac
--	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
--	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
--	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
--	exit 0 ;;
-+    or32:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    padre:Linux:*:*)
-+	echo sparc-unknown-linux-gnu
-+	exit ;;
-+    parisc64:Linux:*:* | hppa64:Linux:*:*)
-+	echo hppa64-unknown-linux-gnu
-+	exit ;;
-     parisc:Linux:*:* | hppa:Linux:*:*)
- 	# Look for CPU level
- 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-@@ -904,115 +975,71 @@
- 	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
- 	  *)    echo hppa-unknown-linux-gnu ;;
- 	esac
--	exit 0 ;;
--    parisc64:Linux:*:* | hppa64:Linux:*:*)
--	echo hppa64-unknown-linux-gnu
--	exit 0 ;;
-+	exit ;;
-+    ppc64:Linux:*:*)
-+	echo powerpc64-unknown-linux-gnu
-+	exit ;;
-+    ppc:Linux:*:*)
-+	echo powerpc-unknown-linux-gnu
-+	exit ;;
-     s390:Linux:*:* | s390x:Linux:*:*)
- 	echo ${UNAME_MACHINE}-ibm-linux
--	exit 0 ;;
-+	exit ;;
-     sh64*:Linux:*:*)
--    	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-     sh*:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
-+	exit ;;
-     sparc:Linux:*:* | sparc64:Linux:*:*)
- 	echo ${UNAME_MACHINE}-unknown-linux-gnu
--	exit 0 ;;
-+	exit ;;
-+    tile*:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    vax:Linux:*:*)
-+	echo ${UNAME_MACHINE}-dec-linux-gnu
-+	exit ;;
-     x86_64:Linux:*:*)
--	echo x86_64-unknown-linux-gnu
--	exit 0 ;;
--    i*86:Linux:*:*)
--	# The BFD linker knows what the default object file format is, so
--	# first see if it will tell us. cd to the root directory to prevent
--	# problems with other programs or directories called `ld' in the path.
--	# Set LC_ALL=C to ensure ld outputs messages in English.
--	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
--			 | sed -ne '/supported targets:/!d
--				    s/[ 	][ 	]*/ /g
--				    s/.*supported targets: *//
--				    s/ .*//
--				    p'`
--        case "$ld_supported_targets" in
--	  elf32-i386)
--		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
--		;;
--	  a.out-i386-linux)
--		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
--		exit 0 ;;
--	  coff-i386)
--		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
--		exit 0 ;;
--	  "")
--		# Either a pre-BFD a.out linker (linux-gnuoldld) or
--		# one that does not give us useful --help.
--		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
--		exit 0 ;;
--	esac
--	# Determine whether the default compiler is a.out or elf
--	eval $set_cc_for_build
--	sed 's/^	//' << EOF >$dummy.c
--	#include <features.h>
--	#ifdef __ELF__
--	# ifdef __GLIBC__
--	#  if __GLIBC__ >= 2
--	LIBC=gnu
--	#  else
--	LIBC=gnulibc1
--	#  endif
--	# else
--	LIBC=gnulibc1
--	# endif
--	#else
--	#ifdef __INTEL_COMPILER
--	LIBC=gnu
--	#else
--	LIBC=gnuaout
--	#endif
--	#endif
--	#ifdef __dietlibc__
--	LIBC=dietlibc
--	#endif
--EOF
--	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
--	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
--	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
--	;;
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-+    xtensa*:Linux:*:*)
-+	echo ${UNAME_MACHINE}-unknown-linux-gnu
-+	exit ;;
-     i*86:DYNIX/ptx:4*:*)
- 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
- 	# earlier versions are messed up and put the nodename in both
- 	# sysname and nodename.
- 	echo i386-sequent-sysv4
--	exit 0 ;;
-+	exit ;;
-     i*86:UNIX_SV:4.2MP:2.*)
--        # Unixware is an offshoot of SVR4, but it has its own version
--        # number series starting with 2...
--        # I am not positive that other SVR4 systems won't match this,
-+	# Unixware is an offshoot of SVR4, but it has its own version
-+	# number series starting with 2...
-+	# I am not positive that other SVR4 systems won't match this,
- 	# I just have to hope.  -- rms.
--        # Use sysv4.2uw... so that sysv4* matches it.
-+	# Use sysv4.2uw... so that sysv4* matches it.
- 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
--	exit 0 ;;
-+	exit ;;
-     i*86:OS/2:*:*)
- 	# If we were able to find `uname', then EMX Unix compatibility
- 	# is probably installed.
- 	echo ${UNAME_MACHINE}-pc-os2-emx
--	exit 0 ;;
-+	exit ;;
-     i*86:XTS-300:*:STOP)
- 	echo ${UNAME_MACHINE}-unknown-stop
--	exit 0 ;;
-+	exit ;;
-     i*86:atheos:*:*)
- 	echo ${UNAME_MACHINE}-unknown-atheos
--	exit 0 ;;
--	i*86:syllable:*:*)
-+	exit ;;
-+    i*86:syllable:*:*)
- 	echo ${UNAME_MACHINE}-pc-syllable
--	exit 0 ;;
--    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
-+	exit ;;
-+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- 	echo i386-unknown-lynxos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     i*86:*DOS:*:*)
- 	echo ${UNAME_MACHINE}-pc-msdosdjgpp
--	exit 0 ;;
-+	exit ;;
-     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
- 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-@@ -1020,15 +1047,16 @@
- 	else
- 		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- 	fi
--	exit 0 ;;
--    i*86:*:5:[78]*)
-+	exit ;;
-+    i*86:*:5:[678]*)
-+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
- 	case `/bin/uname -X | grep "^Machine"` in
- 	    *486*)	     UNAME_MACHINE=i486 ;;
- 	    *Pentium)	     UNAME_MACHINE=i586 ;;
- 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
- 	esac
- 	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
--	exit 0 ;;
-+	exit ;;
-     i*86:*:3.2:*)
- 	if test -f /usr/options/cb.name; then
- 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-@@ -1046,73 +1074,86 @@
- 	else
- 		echo ${UNAME_MACHINE}-pc-sysv32
- 	fi
--	exit 0 ;;
-+	exit ;;
-     pc:*:*:*)
- 	# Left here for compatibility:
--        # uname -m prints for DJGPP always 'pc', but it prints nothing about
--        # the processor, so we play safe by assuming i386.
--	echo i386-pc-msdosdjgpp
--        exit 0 ;;
-+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-+	# the processor, so we play safe by assuming i586.
-+	# Note: whatever this is, it MUST be the same as what config.sub
-+	# prints for the "djgpp" host, or else GDB configury will decide that
-+	# this is a cross-build.
-+	echo i586-pc-msdosdjgpp
-+	exit ;;
-     Intel:Mach:3*:*)
- 	echo i386-pc-mach3
--	exit 0 ;;
-+	exit ;;
-     paragon:*:*:*)
- 	echo i860-intel-osf1
--	exit 0 ;;
-+	exit ;;
-     i860:*:4.*:*) # i860-SVR4
- 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- 	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
- 	else # Add other i860-SVR4 vendors below as they are discovered.
- 	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
- 	fi
--	exit 0 ;;
-+	exit ;;
-     mini*:CTIX:SYS*5:*)
- 	# "miniframe"
- 	echo m68010-convergent-sysv
--	exit 0 ;;
-+	exit ;;
-     mc68k:UNIX:SYSTEM5:3.51m)
- 	echo m68k-convergent-sysv
--	exit 0 ;;
-+	exit ;;
-     M680?0:D-NIX:5.3:*)
- 	echo m68k-diab-dnix
--	exit 0 ;;
-+	exit ;;
-     M68*:*:R3V[5678]*:*)
--	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
- 	OS_REL=''
- 	test -r /etc/.relid \
- 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
--	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
-+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
--	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
-+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
--        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
--          && echo i486-ncr-sysv4 && exit 0 ;;
-+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+	  && { echo i486-ncr-sysv4; exit; } ;;
-+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-+	OS_REL='.3'
-+	test -r /etc/.relid \
-+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- 	echo m68k-unknown-lynxos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     mc68030:UNIX_System_V:4.*:*)
- 	echo m68k-atari-sysv4
--	exit 0 ;;
-+	exit ;;
-     TSUNAMI:LynxOS:2.*:*)
- 	echo sparc-unknown-lynxos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     rs6000:LynxOS:2.*:*)
- 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
--	exit 0 ;;
--    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
-+	exit ;;
-+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     SM[BE]S:UNIX_SV:*:*)
- 	echo mips-dde-sysv${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     RM*:ReliantUNIX-*:*:*)
- 	echo mips-sni-sysv4
--	exit 0 ;;
-+	exit ;;
-     RM*:SINIX-*:*:*)
- 	echo mips-sni-sysv4
--	exit 0 ;;
-+	exit ;;
-     *:SINIX-*:*:*)
- 	if uname -p 2>/dev/null >/dev/null ; then
- 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-@@ -1120,69 +1161,97 @@
- 	else
- 		echo ns32k-sni-sysv
- 	fi
--	exit 0 ;;
--    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
--                      # says <Richard.M.Bartel@ccMail.Census.GOV>
--        echo i586-unisys-sysv4
--        exit 0 ;;
-+	exit ;;
-+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-+			# says <Richard.M.Bartel@ccMail.Census.GOV>
-+	echo i586-unisys-sysv4
-+	exit ;;
-     *:UNIX_System_V:4*:FTX*)
- 	# From Gerald Hewes <hewes@openmarket.com>.
- 	# How about differentiating between stratus architectures? -djm
- 	echo hppa1.1-stratus-sysv4
--	exit 0 ;;
-+	exit ;;
-     *:*:*:FTX*)
- 	# From seanf@swdc.stratus.com.
- 	echo i860-stratus-sysv4
--	exit 0 ;;
-+	exit ;;
-+    i*86:VOS:*:*)
-+	# From Paul.Green@stratus.com.
-+	echo ${UNAME_MACHINE}-stratus-vos
-+	exit ;;
-     *:VOS:*:*)
- 	# From Paul.Green@stratus.com.
- 	echo hppa1.1-stratus-vos
--	exit 0 ;;
-+	exit ;;
-     mc68*:A/UX:*:*)
- 	echo m68k-apple-aux${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     news*:NEWS-OS:6*:*)
- 	echo mips-sony-newsos6
--	exit 0 ;;
-+	exit ;;
-     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- 	if [ -d /usr/nec ]; then
--	        echo mips-nec-sysv${UNAME_RELEASE}
-+		echo mips-nec-sysv${UNAME_RELEASE}
- 	else
--	        echo mips-unknown-sysv${UNAME_RELEASE}
-+		echo mips-unknown-sysv${UNAME_RELEASE}
- 	fi
--        exit 0 ;;
-+	exit ;;
-     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
- 	echo powerpc-be-beos
--	exit 0 ;;
-+	exit ;;
-     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
- 	echo powerpc-apple-beos
--	exit 0 ;;
-+	exit ;;
-     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
- 	echo i586-pc-beos
--	exit 0 ;;
-+	exit ;;
-+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-+	echo i586-pc-haiku
-+	exit ;;
-+    x86_64:Haiku:*:*)
-+	echo x86_64-unknown-haiku
-+	exit ;;
-     SX-4:SUPER-UX:*:*)
- 	echo sx4-nec-superux${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     SX-5:SUPER-UX:*:*)
- 	echo sx5-nec-superux${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     SX-6:SUPER-UX:*:*)
- 	echo sx6-nec-superux${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-+    SX-7:SUPER-UX:*:*)
-+	echo sx7-nec-superux${UNAME_RELEASE}
-+	exit ;;
-+    SX-8:SUPER-UX:*:*)
-+	echo sx8-nec-superux${UNAME_RELEASE}
-+	exit ;;
-+    SX-8R:SUPER-UX:*:*)
-+	echo sx8r-nec-superux${UNAME_RELEASE}
-+	exit ;;
-     Power*:Rhapsody:*:*)
- 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:Rhapsody:*:*)
- 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:Darwin:*:*)
- 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- 	case $UNAME_PROCESSOR in
--	    *86) UNAME_PROCESSOR=i686 ;;
-+	    i386)
-+		eval $set_cc_for_build
-+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-+		      grep IS_64BIT_ARCH >/dev/null
-+		  then
-+		      UNAME_PROCESSOR="x86_64"
-+		  fi
-+		fi ;;
- 	    unknown) UNAME_PROCESSOR=powerpc ;;
- 	esac
- 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:procnto*:*:* | *:QNX:[0123456789]*:*)
- 	UNAME_PROCESSOR=`uname -p`
- 	if test "$UNAME_PROCESSOR" = "x86"; then
-@@ -1190,22 +1259,28 @@
- 		UNAME_MACHINE=pc
- 	fi
- 	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:QNX:*:4*)
- 	echo i386-pc-qnx
--	exit 0 ;;
-+	exit ;;
-+    NEO-?:NONSTOP_KERNEL:*:*)
-+	echo neo-tandem-nsk${UNAME_RELEASE}
-+	exit ;;
-+    NSE-*:NONSTOP_KERNEL:*:*)
-+	echo nse-tandem-nsk${UNAME_RELEASE}
-+	exit ;;
-     NSR-?:NONSTOP_KERNEL:*:*)
- 	echo nsr-tandem-nsk${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:NonStop-UX:*:*)
- 	echo mips-compaq-nonstopux
--	exit 0 ;;
-+	exit ;;
-     BS2000:POSIX*:*:*)
- 	echo bs2000-siemens-sysv
--	exit 0 ;;
-+	exit ;;
-     DS/*:UNIX_System_V:*:*)
- 	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
--	exit 0 ;;
-+	exit ;;
-     *:Plan9:*:*)
- 	# "uname -m" is not consistent, so use $cputype instead. 386
- 	# is converted to i386 for consistency with other x86
-@@ -1216,43 +1291,55 @@
- 	    UNAME_MACHINE="$cputype"
- 	fi
- 	echo ${UNAME_MACHINE}-unknown-plan9
--	exit 0 ;;
-+	exit ;;
-     *:TOPS-10:*:*)
- 	echo pdp10-unknown-tops10
--	exit 0 ;;
-+	exit ;;
-     *:TENEX:*:*)
- 	echo pdp10-unknown-tenex
--	exit 0 ;;
-+	exit ;;
-     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- 	echo pdp10-dec-tops20
--	exit 0 ;;
-+	exit ;;
-     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- 	echo pdp10-xkl-tops20
--	exit 0 ;;
-+	exit ;;
-     *:TOPS-20:*:*)
- 	echo pdp10-unknown-tops20
--	exit 0 ;;
-+	exit ;;
-     *:ITS:*:*)
- 	echo pdp10-unknown-its
--	exit 0 ;;
-+	exit ;;
-     SEI:*:*:SEIUX)
--        echo mips-sei-seiux${UNAME_RELEASE}
--	exit 0 ;;
-+	echo mips-sei-seiux${UNAME_RELEASE}
-+	exit ;;
-     *:DragonFly:*:*)
- 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
--	exit 0 ;;
-+	exit ;;
-     *:*VMS:*:*)
--    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
- 	case "${UNAME_MACHINE}" in
--	    A*) echo alpha-dec-vms && exit 0 ;;
--	    I*) echo ia64-dec-vms && exit 0 ;;
--	    V*) echo vax-dec-vms && exit 0 ;;
--	esac
-+	    A*) echo alpha-dec-vms ; exit ;;
-+	    I*) echo ia64-dec-vms ; exit ;;
-+	    V*) echo vax-dec-vms ; exit ;;
-+	esac ;;
-+    *:XENIX:*:SysV)
-+	echo i386-pc-xenix
-+	exit ;;
-+    i*86:skyos:*:*)
-+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-+	exit ;;
-+    i*86:rdos:*:*)
-+	echo ${UNAME_MACHINE}-pc-rdos
-+	exit ;;
-+    i*86:AROS:*:*)
-+	echo ${UNAME_MACHINE}-pc-aros
-+	exit ;;
-+    x86_64:VMkernel:*:*)
-+	echo ${UNAME_MACHINE}-unknown-esx
-+	exit ;;
- esac
- 
--#echo '(No uname command or uname output not recognized.)' 1>&2
--#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
--
- eval $set_cc_for_build
- cat >$dummy.c <<EOF
- #ifdef _SEQUENT_
-@@ -1270,16 +1357,16 @@
- #include <sys/param.h>
-   printf ("m68k-sony-newsos%s\n",
- #ifdef NEWSOS4
--          "4"
-+	"4"
- #else
--	  ""
-+	""
- #endif
--         ); exit (0);
-+	); exit (0);
- #endif
- #endif
- 
- #if defined (__arm) && defined (__acorn) && defined (__unix)
--  printf ("arm-acorn-riscix"); exit (0);
-+  printf ("arm-acorn-riscix\n"); exit (0);
- #endif
- 
- #if defined (hp300) && !defined (hpux)
-@@ -1368,11 +1455,12 @@
- }
- EOF
- 
--$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
-+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-+	{ echo "$SYSTEM_NAME"; exit; }
- 
- # Apollos put the system type in the environment.
- 
--test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
-+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
- 
- # Convex versions that predate uname can use getsysinfo(1)
- 
-@@ -1381,22 +1469,22 @@
-     case `getsysinfo -f cpu_type` in
-     c1*)
- 	echo c1-convex-bsd
--	exit 0 ;;
-+	exit ;;
-     c2*)
- 	if getsysinfo -f scalar_acc
- 	then echo c32-convex-bsd
- 	else echo c2-convex-bsd
- 	fi
--	exit 0 ;;
-+	exit ;;
-     c34*)
- 	echo c34-convex-bsd
--	exit 0 ;;
-+	exit ;;
-     c38*)
- 	echo c38-convex-bsd
--	exit 0 ;;
-+	exit ;;
-     c4*)
- 	echo c4-convex-bsd
--	exit 0 ;;
-+	exit ;;
-     esac
- fi
- 
-@@ -1407,7 +1495,9 @@
- the operating system you are using. It is advised that you
- download the most up to date version of the config scripts from
- 
--    ftp://ftp.gnu.org/pub/gnu/config/
-+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-+and
-+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
- 
- If the version you run ($0) is already up to date, please
- send the following data and any information you think might be
-diff -urN pads-1.2/config.sub pads-1.2-aarch64/config.sub
---- pads-1.2/config.sub	2004-09-29 00:15:05.000000000 -0500
-+++ pads-1.2-aarch64/config.sub	2013-03-03 07:01:43.339421146 -0600
-@@ -1,9 +1,10 @@
- #! /bin/sh
- # Configuration validation subroutine script.
- #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
--#   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-+#   2011, 2012 Free Software Foundation, Inc.
- 
--timestamp='2004-08-29'
-+timestamp='2012-10-10'
- 
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
-@@ -20,23 +21,25 @@
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 59 Temple Place - Suite 330,
--# Boston, MA 02111-1307, USA.
--
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
-+#
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
- # configuration script generated by Autoconf, you may include it under
- # the same distribution terms that you use for the rest of that program.
- 
-+
- # Please send patches to <config-patches@gnu.org>.  Submit a context
--# diff and a properly formatted ChangeLog entry.
-+# diff and a properly formatted GNU ChangeLog entry.
- #
- # Configuration subroutine to validate and canonicalize a configuration type.
- # Supply the specified configuration type as an argument.
- # If it is invalid, we print an error message on stderr and exit with code 1.
- # Otherwise, we print the canonical config type on stdout and succeed.
- 
-+# You can get the latest version of this script from:
-+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-+
- # This file is supposed to be the same for all GNU packages
- # and recognize all the CPU types, system types and aliases
- # that are meaningful with *any* GNU software.
-@@ -70,7 +73,8 @@
- version="\
- GNU config.sub ($timestamp)
- 
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
-+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
- Free Software Foundation, Inc.
- 
- This is free software; see the source for copying conditions.  There is NO
-@@ -83,11 +87,11 @@
- while test $# -gt 0 ; do
-   case $1 in
-     --time-stamp | --time* | -t )
--       echo "$timestamp" ; exit 0 ;;
-+       echo "$timestamp" ; exit ;;
-     --version | -v )
--       echo "$version" ; exit 0 ;;
-+       echo "$version" ; exit ;;
-     --help | --h* | -h )
--       echo "$usage"; exit 0 ;;
-+       echo "$usage"; exit ;;
-     -- )     # Stop option processing
-        shift; break ;;
-     - )	# Use stdin as input.
-@@ -99,7 +103,7 @@
-     *local*)
-        # First pass through any local machine types.
-        echo $1
--       exit 0;;
-+       exit ;;
- 
-     * )
-        break ;;
-@@ -118,11 +122,18 @@
- # Here we must recognize all the valid KERNEL-OS combinations.
- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
- case $maybe_os in
--  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
--  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
-+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-+  knetbsd*-gnu* | netbsd*-gnu* | \
-+  kopensolaris*-gnu* | \
-+  storm-chaos* | os2-emx* | rtmk-nova*)
-     os=-$maybe_os
-     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-     ;;
-+  android-linux)
-+    os=-linux-android
-+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-+    ;;
-   *)
-     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-     if [ $basic_machine != $1 ]
-@@ -145,10 +156,13 @@
- 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
--	-apple | -axis | -knuth | -cray)
-+	-apple | -axis | -knuth | -cray | -microblaze*)
- 		os=
- 		basic_machine=$1
- 		;;
-+	-bluegene*)
-+		os=-cnk
-+		;;
- 	-sim | -cisco | -oki | -wec | -winbond)
- 		os=
- 		basic_machine=$1
-@@ -163,13 +177,17 @@
- 		os=-chorusos
- 		basic_machine=$1
- 		;;
-- 	-chorusrdb)
-- 		os=-chorusrdb
-+	-chorusrdb)
-+		os=-chorusrdb
- 		basic_machine=$1
-- 		;;
-+		;;
- 	-hiux*)
- 		os=-hiuxwe2
- 		;;
-+	-sco6)
-+		os=-sco5v6
-+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-+		;;
- 	-sco5)
- 		os=-sco3.2v5
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-@@ -186,6 +204,10 @@
- 		# Don't forget version if it is 3.2v4 or newer.
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- 		;;
-+	-sco5v6*)
-+		# Don't forget version if it is 3.2v4 or newer.
-+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-+		;;
- 	-sco*)
- 		os=-sco3.2v2
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-@@ -203,6 +225,12 @@
- 	-isc*)
- 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- 		;;
-+	-lynx*178)
-+		os=-lynxos178
-+		;;
-+	-lynx*5)
-+		os=-lynxos5
-+		;;
- 	-lynx*)
- 		os=-lynxos
- 		;;
-@@ -227,25 +255,36 @@
- 	# Some are omitted here because they have special meanings below.
- 	1750a | 580 \
- 	| a29k \
-+	| aarch64 | aarch64_be \
- 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- 	| am33_2.0 \
--	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
-+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-+        | be32 | be64 \
-+	| bfin \
- 	| c4x | clipper \
- 	| d10v | d30v | dlx | dsp16xx \
--	| fr30 | frv \
-+	| epiphany \
-+	| fido | fr30 | frv \
- 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+	| hexagon \
- 	| i370 | i860 | i960 | ia64 \
- 	| ip2k | iq2000 \
--	| m32r | m32rle | m68000 | m68k | m88k | mcore \
-+	| le32 | le64 \
-+	| lm32 \
-+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- 	| mips | mipsbe | mipseb | mipsel | mipsle \
- 	| mips16 \
- 	| mips64 | mips64el \
--	| mips64vr | mips64vrel \
-+	| mips64octeon | mips64octeonel \
- 	| mips64orion | mips64orionel \
-+	| mips64r5900 | mips64r5900el \
-+	| mips64vr | mips64vrel \
- 	| mips64vr4100 | mips64vr4100el \
- 	| mips64vr4300 | mips64vr4300el \
- 	| mips64vr5000 | mips64vr5000el \
-+	| mips64vr5900 | mips64vr5900el \
- 	| mipsisa32 | mipsisa32el \
- 	| mipsisa32r2 | mipsisa32r2el \
- 	| mipsisa64 | mipsisa64el \
-@@ -254,30 +293,65 @@
- 	| mipsisa64sr71k | mipsisa64sr71kel \
- 	| mipstx39 | mipstx39el \
- 	| mn10200 | mn10300 \
-+	| moxie \
-+	| mt \
- 	| msp430 \
-+	| nds32 | nds32le | nds32be \
-+	| nios | nios2 \
- 	| ns16k | ns32k \
--	| openrisc | or32 \
-+	| open8 \
-+	| or32 \
- 	| pdp10 | pdp11 | pj | pjl \
--	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
-+	| powerpc | powerpc64 | powerpc64le | powerpcle \
- 	| pyramid \
--	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
-+	| rl78 | rx \
-+	| score \
-+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- 	| sh64 | sh64le \
--	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
--	| strongarm \
--	| tahoe | thumb | tic4x | tic80 | tron \
--	| v850 | v850e \
-+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-+	| spu \
-+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-+	| ubicom32 \
-+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- 	| we32k \
--	| x86 | xscale | xstormy16 | xtensa \
--	| z8k)
-+	| x86 | xc16x | xstormy16 | xtensa \
-+	| z8k | z80)
- 		basic_machine=$basic_machine-unknown
- 		;;
--	m6811 | m68hc11 | m6812 | m68hc12)
--		# Motorola 68HC11/12.
-+	c54x)
-+		basic_machine=tic54x-unknown
-+		;;
-+	c55x)
-+		basic_machine=tic55x-unknown
-+		;;
-+	c6x)
-+		basic_machine=tic6x-unknown
-+		;;
-+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
- 		basic_machine=$basic_machine-unknown
- 		os=-none
- 		;;
- 	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- 		;;
-+	ms1)
-+		basic_machine=mt-unknown
-+		;;
-+
-+	strongarm | thumb | xscale)
-+		basic_machine=arm-unknown
-+		;;
-+	xgate)
-+		basic_machine=$basic_machine-unknown
-+		os=-none
-+		;;
-+	xscaleeb)
-+		basic_machine=armeb-unknown
-+		;;
-+
-+	xscaleel)
-+		basic_machine=armel-unknown
-+		;;
- 
- 	# We use `pc' rather than `unknown'
- 	# because (1) that's what they normally are, and
-@@ -293,32 +367,41 @@
- 	# Recognize the basic CPU types with company name.
- 	580-* \
- 	| a29k-* \
-+	| aarch64-* | aarch64_be-* \
- 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
--	| avr-* \
--	| bs2000-* \
--	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-+	| avr-* | avr32-* \
-+	| be32-* | be64-* \
-+	| bfin-* | bs2000-* \
-+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
- 	| clipper-* | craynv-* | cydra-* \
- 	| d10v-* | d30v-* | dlx-* \
- 	| elxsi-* \
--	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
-+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- 	| h8300-* | h8500-* \
- 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+	| hexagon-* \
- 	| i*86-* | i860-* | i960-* | ia64-* \
- 	| ip2k-* | iq2000-* \
--	| m32r-* | m32rle-* \
-+	| le32-* | le64-* \
-+	| lm32-* \
-+	| m32c-* | m32r-* | m32rle-* \
- 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
--	| m88110-* | m88k-* | mcore-* \
-+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-+	| microblaze-* | microblazeel-* \
- 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- 	| mips16-* \
- 	| mips64-* | mips64el-* \
--	| mips64vr-* | mips64vrel-* \
-+	| mips64octeon-* | mips64octeonel-* \
- 	| mips64orion-* | mips64orionel-* \
-+	| mips64r5900-* | mips64r5900el-* \
-+	| mips64vr-* | mips64vrel-* \
- 	| mips64vr4100-* | mips64vr4100el-* \
- 	| mips64vr4300-* | mips64vr4300el-* \
- 	| mips64vr5000-* | mips64vr5000el-* \
-+	| mips64vr5900-* | mips64vr5900el-* \
- 	| mipsisa32-* | mipsisa32el-* \
- 	| mipsisa32r2-* | mipsisa32r2el-* \
- 	| mipsisa64-* | mipsisa64el-* \
-@@ -327,26 +410,38 @@
- 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
- 	| mipstx39-* | mipstx39el-* \
- 	| mmix-* \
-+	| mt-* \
- 	| msp430-* \
-+	| nds32-* | nds32le-* | nds32be-* \
-+	| nios-* | nios2-* \
- 	| none-* | np1-* | ns16k-* | ns32k-* \
-+	| open8-* \
- 	| orion-* \
- 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
--	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
-+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- 	| pyramid-* \
--	| romp-* | rs6000-* \
--	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
-+	| rl78-* | romp-* | rs6000-* | rx-* \
-+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
--	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
--	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
--	| tahoe-* | thumb-* \
-+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-+	| sparclite-* \
-+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-+	| tahoe-* \
- 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-+	| tile*-* \
- 	| tron-* \
--	| v850-* | v850e-* | vax-* \
-+	| ubicom32-* \
-+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-+	| vax-* \
- 	| we32k-* \
--	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
--	| xtensa-* \
-+	| x86-* | x86_64-* | xc16x-* | xps100-* \
-+	| xstormy16-* | xtensa*-* \
- 	| ymp-* \
--	| z8k-*)
-+	| z8k-* | z80-*)
-+		;;
-+	# Recognize the basic CPU types without company name, with glob match.
-+	xtensa*)
-+		basic_machine=$basic_machine-unknown
- 		;;
- 	# Recognize the various machine names and aliases which stand
- 	# for a CPU type and a company and sometimes even an OS.
-@@ -364,7 +459,7 @@
- 		basic_machine=a29k-amd
- 		os=-udi
- 		;;
--    	abacus)
-+	abacus)
- 		basic_machine=abacus-unknown
- 		;;
- 	adobe68k)
-@@ -410,6 +505,10 @@
- 		basic_machine=m68k-apollo
- 		os=-bsd
- 		;;
-+	aros)
-+		basic_machine=i386-pc
-+		os=-aros
-+		;;
- 	aux)
- 		basic_machine=m68k-apple
- 		os=-aux
-@@ -418,10 +517,35 @@
- 		basic_machine=ns32k-sequent
- 		os=-dynix
- 		;;
-+	blackfin)
-+		basic_machine=bfin-unknown
-+		os=-linux
-+		;;
-+	blackfin-*)
-+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		os=-linux
-+		;;
-+	bluegene*)
-+		basic_machine=powerpc-ibm
-+		os=-cnk
-+		;;
-+	c54x-*)
-+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
-+	c55x-*)
-+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
-+	c6x-*)
-+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
- 	c90)
- 		basic_machine=c90-cray
- 		os=-unicos
- 		;;
-+	cegcc)
-+		basic_machine=arm-unknown
-+		os=-cegcc
-+		;;
- 	convex-c1)
- 		basic_machine=c1-convex
- 		os=-bsd
-@@ -450,8 +574,8 @@
- 		basic_machine=craynv-cray
- 		os=-unicosmp
- 		;;
--	cr16c)
--		basic_machine=cr16c-unknown
-+	cr16 | cr16-*)
-+		basic_machine=cr16-unknown
- 		os=-elf
- 		;;
- 	crds | unos)
-@@ -489,6 +613,14 @@
- 		basic_machine=m88k-motorola
- 		os=-sysv3
- 		;;
-+	dicos)
-+		basic_machine=i686-pc
-+		os=-dicos
-+		;;
-+	djgpp)
-+		basic_machine=i586-pc
-+		os=-msdosdjgpp
-+		;;
- 	dpx20 | dpx20-*)
- 		basic_machine=rs6000-bull
- 		os=-bosx
-@@ -600,7 +732,6 @@
- 	i370-ibm* | ibm*)
- 		basic_machine=i370-ibm
- 		;;
--# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
- 	i*86v32)
- 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- 		os=-sysv32
-@@ -639,6 +770,14 @@
- 		basic_machine=m68k-isi
- 		os=-sysv
- 		;;
-+	m68knommu)
-+		basic_machine=m68k-unknown
-+		os=-linux
-+		;;
-+	m68knommu-*)
-+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		os=-linux
-+		;;
- 	m88k-omron*)
- 		basic_machine=m88k-omron
- 		;;
-@@ -650,10 +789,21 @@
- 		basic_machine=ns32k-utek
- 		os=-sysv
- 		;;
-+	microblaze*)
-+		basic_machine=microblaze-xilinx
-+		;;
-+	mingw64)
-+		basic_machine=x86_64-pc
-+		os=-mingw64
-+		;;
- 	mingw32)
- 		basic_machine=i386-pc
- 		os=-mingw32
- 		;;
-+	mingw32ce)
-+		basic_machine=arm-unknown
-+		os=-mingw32ce
-+		;;
- 	miniframe)
- 		basic_machine=m68000-convergent
- 		;;
-@@ -679,10 +829,21 @@
- 		basic_machine=i386-pc
- 		os=-msdos
- 		;;
-+	ms1-*)
-+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-+		;;
-+	msys)
-+		basic_machine=i386-pc
-+		os=-msys
-+		;;
- 	mvs)
- 		basic_machine=i370-ibm
- 		os=-mvs
- 		;;
-+	nacl)
-+		basic_machine=le32-unknown
-+		os=-nacl
-+		;;
- 	ncr3000)
- 		basic_machine=i486-ncr
- 		os=-sysv4
-@@ -747,6 +908,12 @@
- 	np1)
- 		basic_machine=np1-gould
- 		;;
-+	neo-tandem)
-+		basic_machine=neo-tandem
-+		;;
-+	nse-tandem)
-+		basic_machine=nse-tandem
-+		;;
- 	nsr-tandem)
- 		basic_machine=nsr-tandem
- 		;;
-@@ -754,9 +921,8 @@
- 		basic_machine=hppa1.1-oki
- 		os=-proelf
- 		;;
--	or32 | or32-*)
-+	openrisc | openrisc-*)
- 		basic_machine=or32-unknown
--		os=-coff
- 		;;
- 	os400)
- 		basic_machine=powerpc-ibm
-@@ -778,6 +944,14 @@
- 		basic_machine=i860-intel
- 		os=-osf
- 		;;
-+	parisc)
-+		basic_machine=hppa-unknown
-+		os=-linux
-+		;;
-+	parisc-*)
-+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		os=-linux
-+		;;
- 	pbd)
- 		basic_machine=sparc-tti
- 		;;
-@@ -787,6 +961,12 @@
- 	pc532 | pc532-*)
- 		basic_machine=ns32k-pc532
- 		;;
-+	pc98)
-+		basic_machine=i386-pc
-+		;;
-+	pc98-*)
-+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
- 	pentium | p5 | k5 | k6 | nexgen | viac3)
- 		basic_machine=i586-pc
- 		;;
-@@ -816,9 +996,10 @@
- 		;;
- 	power)	basic_machine=power-ibm
- 		;;
--	ppc)	basic_machine=powerpc-unknown
-+	ppc | ppcbe)	basic_machine=powerpc-unknown
- 		;;
--	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-+	ppc-* | ppcbe-*)
-+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- 		;;
- 	ppcle | powerpclittle | ppc-le | powerpc-little)
- 		basic_machine=powerpcle-unknown
-@@ -843,6 +1024,10 @@
- 		basic_machine=i586-unknown
- 		os=-pw32
- 		;;
-+	rdos)
-+		basic_machine=i386-pc
-+		os=-rdos
-+		;;
- 	rom68k)
- 		basic_machine=m68k-rom68k
- 		os=-coff
-@@ -869,6 +1054,10 @@
- 	sb1el)
- 		basic_machine=mipsisa64sb1el-unknown
- 		;;
-+	sde)
-+		basic_machine=mipsisa32-sde
-+		os=-elf
-+		;;
- 	sei)
- 		basic_machine=mips-sei
- 		os=-seiux
-@@ -880,6 +1069,9 @@
- 		basic_machine=sh-hitachi
- 		os=-hms
- 		;;
-+	sh5el)
-+		basic_machine=sh5le-unknown
-+		;;
- 	sh64)
- 		basic_machine=sh64-unknown
- 		;;
-@@ -901,6 +1093,9 @@
- 		basic_machine=i860-stratus
- 		os=-sysv4
- 		;;
-+	strongarm-* | thumb-*)
-+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-+		;;
- 	sun2)
- 		basic_machine=m68000-sun
- 		;;
-@@ -957,17 +1152,9 @@
- 		basic_machine=t90-cray
- 		os=-unicos
- 		;;
--	tic54x | c54x*)
--		basic_machine=tic54x-unknown
--		os=-coff
--		;;
--	tic55x | c55x*)
--		basic_machine=tic55x-unknown
--		os=-coff
--		;;
--	tic6x | c6x*)
--		basic_machine=tic6x-unknown
--		os=-coff
-+	tile*)
-+		basic_machine=$basic_machine-unknown
-+		os=-linux-gnu
- 		;;
- 	tx39)
- 		basic_machine=mipstx39-unknown
-@@ -1029,9 +1216,16 @@
- 		basic_machine=hppa1.1-winbond
- 		os=-proelf
- 		;;
-+	xbox)
-+		basic_machine=i686-pc
-+		os=-mingw32
-+		;;
- 	xps | xps100)
- 		basic_machine=xps100-honeywell
- 		;;
-+	xscale-* | xscalee[bl]-*)
-+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-+		;;
- 	ymp)
- 		basic_machine=ymp-cray
- 		os=-unicos
-@@ -1040,6 +1234,10 @@
- 		basic_machine=z8k-unknown
- 		os=-sim
- 		;;
-+	z80-*-coff)
-+		basic_machine=z80-unknown
-+		os=-sim
-+		;;
- 	none)
- 		basic_machine=none-none
- 		os=-none
-@@ -1078,13 +1276,10 @@
- 	we32k)
- 		basic_machine=we32k-att
- 		;;
--	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
-+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- 		basic_machine=sh-unknown
- 		;;
--	sh64)
--		basic_machine=sh64-unknown
--		;;
--	sparc | sparcv8 | sparcv9 | sparcv9b)
-+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- 		basic_machine=sparc-sun
- 		;;
- 	cydra)
-@@ -1128,9 +1323,12 @@
- if [ x"$os" != x"" ]
- then
- case $os in
--        # First match some system type aliases
--        # that might get confused with valid system types.
-+	# First match some system type aliases
-+	# that might get confused with valid system types.
- 	# -solaris* is a basic system type, with this one exception.
-+	-auroraux)
-+		os=-auroraux
-+		;;
- 	-solaris1 | -solaris1.*)
- 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
- 		;;
-@@ -1151,26 +1349,31 @@
- 	# Each alternative MUST END IN A *, to match a version number.
- 	# -sysv* is not here because it comes later, after sysvr4.
- 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
--	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
--	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
-+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-+	      | -sym* | -kopensolaris* \
- 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
--	      | -aos* \
-+	      | -aos* | -aros* \
- 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
--	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
-+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-+	      | -bitrig* | -openbsd* | -solidbsd* \
- 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
--	      | -chorusos* | -chorusrdb* \
--	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
--	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
-+	      | -chorusos* | -chorusrdb* | -cegcc* \
-+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-+	      | -uxpv* | -beos* | -mpeix* | -udk* \
- 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
--	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
-+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
- 	# Remember, each alternative MUST END IN *, to match a version number.
- 		;;
- 	-qnx*)
-@@ -1188,7 +1391,7 @@
- 		os=`echo $os | sed -e 's|nto|nto-qnx|'`
- 		;;
- 	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
--	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
-+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- 	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- 		;;
- 	-mac*)
-@@ -1209,7 +1412,7 @@
- 	-opened*)
- 		os=-openedition
- 		;;
--        -os400*)
-+	-os400*)
- 		os=-os400
- 		;;
- 	-wince*)
-@@ -1258,7 +1461,7 @@
- 	-sinix*)
- 		os=-sysv4
- 		;;
--        -tpf*)
-+	-tpf*)
- 		os=-tpf
- 		;;
- 	-triton*)
-@@ -1297,6 +1500,14 @@
- 	-kaos*)
- 		os=-kaos
- 		;;
-+	-zvmoe)
-+		os=-zvmoe
-+		;;
-+	-dicos*)
-+		os=-dicos
-+		;;
-+	-nacl*)
-+		;;
- 	-none)
- 		;;
- 	*)
-@@ -1319,6 +1530,12 @@
- # system, and we'll never get to this point.
- 
- case $basic_machine in
-+	score-*)
-+		os=-elf
-+		;;
-+	spu-*)
-+		os=-elf
-+		;;
- 	*-acorn)
- 		os=-riscix1.2
- 		;;
-@@ -1328,9 +1545,21 @@
- 	arm*-semi)
- 		os=-aout
- 		;;
--    c4x-* | tic4x-*)
--        os=-coff
--        ;;
-+	c4x-* | tic4x-*)
-+		os=-coff
-+		;;
-+	hexagon-*)
-+		os=-elf
-+		;;
-+	tic54x-*)
-+		os=-coff
-+		;;
-+	tic55x-*)
-+		os=-coff
-+		;;
-+	tic6x-*)
-+		os=-coff
-+		;;
- 	# This must come before the *-dec entry.
- 	pdp10-*)
- 		os=-tops20
-@@ -1349,13 +1578,13 @@
- 		;;
- 	m68000-sun)
- 		os=-sunos3
--		# This also exists in the configure program, but was not the
--		# default.
--		# os=-sunos4
- 		;;
- 	m68*-cisco)
- 		os=-aout
- 		;;
-+	mep-*)
-+		os=-elf
-+		;;
- 	mips*-cisco)
- 		os=-elf
- 		;;
-@@ -1374,10 +1603,13 @@
- 	*-be)
- 		os=-beos
- 		;;
-+	*-haiku)
-+		os=-haiku
-+		;;
- 	*-ibm)
- 		os=-aix
- 		;;
--    	*-knuth)
-+	*-knuth)
- 		os=-mmixware
- 		;;
- 	*-wec)
-@@ -1482,7 +1714,7 @@
- 			-sunos*)
- 				vendor=sun
- 				;;
--			-aix*)
-+			-cnk*|-aix*)
- 				vendor=ibm
- 				;;
- 			-beos*)
-@@ -1545,7 +1777,7 @@
- esac
- 
- echo $basic_machine$os
--exit 0
-+exit
- 
- # Local variables:
- # eval: (add-hook 'write-file-hooks 'time-stamp)

diff --git a/pads.init b/pads.init
deleted file mode 100644
index 98ceacd..0000000
--- a/pads.init
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/sh
-# Startup script for pads
-#
-# chkconfig: - 40 60
-# description: Run pads
-# config /etc/pads/pads.conf
-
-PATH=/sbin:/bin:/usr/bin:/usr/sbin
-prog="pads"
-
-# Source function library.
-. /etc/rc.d/init.d/functions
-
-# Allow anyone to run status
-if [ "$1" = "status" ] ; then
-	status $prog
-	RETVAL=$?
-	exit $RETVAL
-fi
-
-# Check that we are root ... so non-root users stop here
-test $EUID = 0  ||  exit 4
-
-# Check config
-test -f /etc/sysconfig/pads && . /etc/sysconfig/pads
-
-RETVAL=0
-
-start() {
-	test -x /usr/bin/$prog  || exit 5
-	test -f $CONFIG_FILE  || exit 6
-
-	if test "x`pidof $prog`" != x; then
-		echo "$prog already started"
-		action $"Starting $prog: " /bin/false
-		RETVAL=1
-		return $RETVAL
-	else
-		echo -n $"Starting $prog: "
-		unset HOME MAIL USER USERNAME
-		daemon $prog -D -c $CONFIG_FILE $EXTRA_OPTIONS
-		RETVAL=$?
-		if test $RETVAL = 0 ; then
-			touch /var/lock/subsys/$prog
-		fi
-		echo
-		return $RETVAL
-	fi
-}
-
-stop() {
-	if test "x`pidof $prog`" != x; then
-		echo -n $"Stopping $prog: "
-		killproc $prog
-		RETVAL=$?
-		echo
-	fi
-	rm -f /var/lock/subsys/$prog
-	return $RETVAL
-}
-
-case "$1" in
-	start)
-	    start
-	    ;;
-	
-	stop)
-	    stop
-	    ;;
-	
-	restart|reload)
-	    stop
-	    sleep 3
-	    start
-	    ;;
-	condrestart)
-	    if test "x`pidof prog`" != x; then
-		stop
-		start
-	    fi
-	    ;;
-	
-	*)
-	    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
-	    RETVAL=3
-
-esac
-
-exit $RETVAL
-

diff --git a/pads.service b/pads.service
deleted file mode 100644
index f4e5340..0000000
--- a/pads.service
+++ /dev/null
@@ -1,20 +0,0 @@
-[Unit]
-Description=Passive Asset Detection System
-After=network.target
-Documentation=man:pads(8)
-
-[Service]
-Type=forking
-PIDFile=/run/pads.pid
-ExecStart=/usr/bin/pads -D -c /etc/pads.conf
-
-### Security Settings ###
-MemoryDenyWriteExecute=true
-LockPersonality=true
-ProtectKernelModules=true
-ProtectKernelTunables=true
-ProtectControlGroups=true
-RestrictRealtime=true
-
-[Install]
-WantedBy=multi-user.target

diff --git a/pads.spec b/pads.spec
deleted file mode 100644
index 08ccaa3..0000000
--- a/pads.spec
+++ /dev/null
@@ -1,239 +0,0 @@
-%define _default_patch_fuzz 2
-Name: pads
-Version: 1.2
-Release: 45%{?dist}
-Summary: Passive Asset Detection System
-License: GPL-2.0-or-later 
-URL: http://passive.sourceforge.net/
-Source0: http://prdownloads.sourceforge.net/passive/%{name}-%{version}.tar.gz
-Source1: pads.service
-Source2: pads.sysconfig
-Patch1: pads-1.2-cleanup.patch
-Patch2: pads-1.2-memleak.patch
-Patch3: pads-1.2-overrun.patch
-Patch4: pads-1.2-disable-debug.patch
-Patch5: pads-1.2-daemonize.patch
-Patch6: pads-1.2-ether-codes-update.patch
-Patch7: pads-1.2-misc.patch
-Patch8: pads-1.2-arp.patch
-Patch9: pads-1.2-prelude.patch
-Patch10: pads+vlan.patch
-Patch11: pads-1.2-prelude-cleanup.patch
-Patch12: pads-1.2-readonly.patch
-Patch13: pads-1.2-bstring.patch
-Patch14: pads-1.2-leak.patch
-Patch15: pads-1.2-perf.patch
-Patch16: pads-1.2-daemon.patch
-Patch17: pads-1.2-pthreads.patch
-Patch18: pads-aarch64.patch
-Patch19: pads-1.2-inline-cleanup.patch
-Patch20: pads-1.2-extra-libs.patch
-BuildRequires: make
-BuildRequires:  gcc
-BuildRequires: automake autoconf
-BuildRequires: pcre-devel libpcap-devel
-BuildRequires: perl-generators
-BuildRequires: systemd
-Requires(post): systemd-units
-Requires(preun): systemd-units
-Requires(postun): systemd-units
-
-
-%description
-PADS is a libpcap based detection engine used to passively 
-detect network assets.
-
-%prep
-%setup -q
-%patch 1 -p1
-%patch 2 -p1
-%patch 3 -p1
-%patch 4 -p1
-%patch 5 -p1
-%patch 6 -p1
-%patch 7 -p1
-%patch 8 -p1
-%patch 9 -p1
-%patch 10 -p1
-%patch 11 -p1
-%patch 12 -p1
-%patch 13 -p1
-%patch 14 -p1
-%patch 15 -p1
-%patch 16 -p1
-%patch 17 -p1
-%patch 18 -p1
-%patch 19 -p1
-%patch 20 -p1
-
-%build
-autoreconf -fv --install
-%configure 
-make %{?_smp_mflags}
-
-%install
-rm -rf %{buildroot}
-mkdir -p %{buildroot}%{_unitdir}
-mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
-make install DESTDIR=%{buildroot}
-install -m 644 %SOURCE1 %{buildroot}%{_unitdir}/pads.service
-install -m 640 %SOURCE2 %{buildroot}%{_sysconfdir}/sysconfig/%{name}
-# Remove installed docs since we pick this up another way
-rm -rf $RPM_BUILD_ROOT/usr/share/pads/
-
-%post
-%systemd_post pads.service
-
-%preun
-%systemd_preun pads.service
-
-%postun
-%systemd_postun_with_restart pads.service
-
-%files
-%doc doc/AUTHORS doc/COPYING doc/README doc/ChangeLog
-%{_sysconfdir}/pads-ether-codes
-%{_sysconfdir}/pads-signature-list
-%config(noreplace) %attr(0640,root,root) %{_sysconfdir}/pads.conf
-%config(noreplace) %attr(0640,root,root) %{_sysconfdir}/sysconfig/%{name}
-%{_unitdir}/pads.service
-%{_bindir}/pads
-%{_bindir}/pads-report
-%{_mandir}/*/*
-
-%changelog
-* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-45
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
-
-* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-44
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
-
-* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-43
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
-
-* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-42
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
-
-* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-41
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
-
-* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-40
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-39
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Tue Nov 14 2023 Steve Grubb <sgrubb@redhat.com> - 1.2-38
-- Fix patching and improve security settings in service file
-
-* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-37
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-36
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
-
-* Thu Dec 22 2022 Steve Grubb <sgrubb@redhat.com> - 1.2-35
-- SPDX Migration
-
-* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-34
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
-
-* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-33
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
-
-* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-32
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.2-31
-- Rebuilt for updated systemd-rpm-macros
-  See https://pagure.io/fesco/issue/2583.
-
-* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-30
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-29
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-28
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-27
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-26
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
-
-* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-25
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
-
-* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-24
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-
-* Thu Sep 21 2017 Steve Grubb <sgrubb@redhat.com> 1.2-23
-- Add systemd macros. (#850262)
-
-* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-22
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
-
-* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-21
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
-
-* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-20
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
-
-* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.2-19
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
-
-* Mon Aug 17 2015 Steve Grubb <sgrubb@redhat.com> 1.2-18
-- Fix bad inline keyword use (#1239755)
-
-* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-17
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
-
-* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-16
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
-
-* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-15
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
-
-* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-14
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
-
-* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 1.2-13
-- Perl 5.18 rebuild
-
-* Fri Jun 21 2013 Steve Grubb <sgrubb@redhat.com> 1.2-12
-- Drop prelude support
-
-* Sun Jun 02 2013 Steve Grubb <sgrubb@redhat.com> 1.2-11
-- Support Aarch64 (#926298)
-
-* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
-
-* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-9
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
-
-* Mon Feb 20 2012 Jon Ciesla <limburgher@gmail.com> - 1.2-8
-- Migrate to systemd, BZ 661632.
-
-* Fri Feb 10 2012 Petr Pisar <ppisar@redhat.com> - 1.2-7
-- Rebuild against PCRE 8.30
-
-* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-6
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
-
-* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-5
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
-
-* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
-
-* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
-
-* Tue Oct 28 2008 Steve Grubb <sgrubb@redhat.com> 1.2-2
-- Update CFLAGS for newer libprelude (#465964)
-
-* Tue Aug 12 2008 Steve Grubb <sgrubb@redhat.com> 1.2-1
- Initial rpm build with many bug fixes

diff --git a/pads.sysconfig b/pads.sysconfig
deleted file mode 100644
index 87053a2..0000000
--- a/pads.sysconfig
+++ /dev/null
@@ -1,6 +0,0 @@
-# Config file location
-CONFIG_FILE="/etc/pads.conf"
-
-# Add extra options here
-EXTRA_OPTIONS=""
-

diff --git a/sources b/sources
deleted file mode 100644
index ccb5115..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-2a366195c55ad6b6859c4c84ce877ee8  pads-1.2.tar.gz

                 reply	other threads:[~2026-07-22  5:23 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178469780826.1.10852557131615079775.rpms-pads-ddfaf23f7505@fedoraproject.org \
    --to=packaging-reports@fedoraproject.org \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox