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..a72aec0 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +epel8-playground decommissioned : https://pagure.io/epel/issue/136 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 - #include - -- - /* 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 - #include -+#include - #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 - #include - #include -+#include - #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 - #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 -+#include - #include - #include - #include -@@ -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 -+/* 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 - #include - #include -+#include -+ -+#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 - #include - #include -+#include - - #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 -+#include - #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 - #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 - #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 - #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 -+#include - #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 -+#include - #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 header file. */ - #undef HAVE_PCRE_H - -+/* PRELUDE */ -+#undef HAVE_PRELUDE -+ - /* Define to 1 if you have the 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: " -+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 -+#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 -+ * -+ * 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 -+#include -+ -+#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 -+ * -+ * 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: " -+.IP "output csv: [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: " - 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 . - # - # 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 . --# Please send patches to . Submit a context --# diff and a properly formatted ChangeLog entry. -+ -+# Originally written by Per Bothner. Please send patches (context -+# diff format) to 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 -- #include -- -- 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 -+ #include -+ -+ 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 -- #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' /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 -- echo i586-unisys-sysv4 -- exit 0 ;; -+ exit ;; -+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -+ # says -+ echo i586-unisys-sysv4 -+ exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # 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 < - 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 . -+# - # 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 . 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 fb18f27..0000000 --- a/pads.spec +++ /dev/null @@ -1,233 +0,0 @@ -%define _default_patch_fuzz 2 -Name: pads -Version: 1.2 -Release: 43%{?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 24 2025 Fedora Release Engineering - 1.2-43 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jan 17 2025 Fedora Release Engineering - 1.2-42 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Thu Jul 18 2024 Fedora Release Engineering - 1.2-41 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Jan 25 2024 Fedora Release Engineering - 1.2-40 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sun Jan 21 2024 Fedora Release Engineering - 1.2-39 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Nov 14 2023 Steve Grubb - 1.2-38 -- Fix patching and improve security settings in service file - -* Thu Jul 20 2023 Fedora Release Engineering - 1.2-37 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Jan 19 2023 Fedora Release Engineering - 1.2-36 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Thu Dec 22 2022 Steve Grubb - 1.2-35 -- SPDX Migration - -* Fri Jul 22 2022 Fedora Release Engineering - 1.2-34 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Thu Jan 20 2022 Fedora Release Engineering - 1.2-33 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Thu Jul 22 2021 Fedora Release Engineering - 1.2-32 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Mar 02 2021 Zbigniew JÄ™drzejewski-Szmek - 1.2-31 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Tue Jan 26 2021 Fedora Release Engineering - 1.2-30 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Tue Jul 28 2020 Fedora Release Engineering - 1.2-29 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jan 29 2020 Fedora Release Engineering - 1.2-28 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Thu Jul 25 2019 Fedora Release Engineering - 1.2-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Fri Feb 01 2019 Fedora Release Engineering - 1.2-26 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Fri Jul 13 2018 Fedora Release Engineering - 1.2-25 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Thu Feb 08 2018 Fedora Release Engineering - 1.2-24 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Sep 21 2017 Steve Grubb 1.2-23 -- Add systemd macros. (#850262) - -* Thu Aug 03 2017 Fedora Release Engineering - 1.2-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 1.2-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 1.2-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Mon Aug 17 2015 Steve Grubb 1.2-18 -- Fix bad inline keyword use (#1239755) - -* Thu Jun 18 2015 Fedora Release Engineering - 1.2-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sun Aug 17 2014 Fedora Release Engineering - 1.2-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Fri Jun 06 2014 Fedora Release Engineering - 1.2-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sat Aug 03 2013 Fedora Release Engineering - 1.2-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Wed Jul 17 2013 Petr Pisar - 1.2-13 -- Perl 5.18 rebuild - -* Fri Jun 21 2013 Steve Grubb 1.2-12 -- Drop prelude support - -* Sun Jun 02 2013 Steve Grubb 1.2-11 -- Support Aarch64 (#926298) - -* Thu Feb 14 2013 Fedora Release Engineering - 1.2-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Fri Jul 20 2012 Fedora Release Engineering - 1.2-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Mon Feb 20 2012 Jon Ciesla - 1.2-8 -- Migrate to systemd, BZ 661632. - -* Fri Feb 10 2012 Petr Pisar - 1.2-7 -- Rebuild against PCRE 8.30 - -* Fri Jan 13 2012 Fedora Release Engineering - 1.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Tue Feb 08 2011 Fedora Release Engineering - 1.2-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Sat Jul 25 2009 Fedora Release Engineering - 1.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Thu Feb 26 2009 Fedora Release Engineering - 1.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Tue Oct 28 2008 Steve Grubb 1.2-2 -- Update CFLAGS for newer libprelude (#465964) - -* Tue Aug 12 2008 Steve Grubb 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