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 & 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&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