Bug 36463 - ports/net/jwhois - chase CVS version for new domains
Summary: ports/net/jwhois - chase CVS version for new domains
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: matusita
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-03-29 05:00 UTC by jharris
Modified: 2002-04-22 16:34 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jharris 2002-03-29 05:00:08 UTC
	Update jwhois to gain features from a recent CVS version:

		direct lookup of .edu domains
		new domains:  .gt .hr. .sa .tt .name .coop
		updated domains:  .mt .int .us

Fix: -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
NotDashEscaped: You need GnuPG to verify this message



iD8DBQE8o+ziSypIl9OdoOMRArztAKDRdpApZITPOLDgsfPIP7nkjsuYbwCfQ9uM
DTb0ojE/Sn1lxh0/S5Gw4m0=
=82bj
-----END PGP SIGNATURE-------ZmXMVQnPer1enivpCxwofq9S0dFQMWAqXvZLZrNRAmXk5xBb
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

Index: AUTHORS
===================================================================
RCS file: /cvsroot/jwhois/jwhois/AUTHORS,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- AUTHORS	25 Sep 2001 20:14:45 -0000	1.6
+++ AUTHORS	20 Mar 2002 18:45:35 -0000	1.7
@@ -1,3 +1,2 @@
 jwhois is written and maintained by Jonas Öberg <jonas@gnu.org>
-Debian packaging, some modifications and HTTP support by Peter
-Karlsson <peterk@debian.org>
+and Peter Karlsson <peterk@debian.org>
Index: ChangeLog
===================================================================
RCS file: /cvsroot/jwhois/jwhois/ChangeLog,v
retrieving revision 1.94
retrieving revision 1.107
diff -u -r1.94 -r1.107
--- ChangeLog	9 Jan 2002 18:50:00 -0000	1.94
+++ ChangeLog	28 Mar 2002 12:56:16 -0000	1.107
@@ -1,3 +1,69 @@
+2002-03-28  peter karlsson <peter@softwolves.pp.se>
+
+	* examples/jwhois.conf: Added .edu.
+	  (Lee Maguire, Debian bug#140279)
+
+2002-03-25  peter karlsson <peter@softwolves.pp.se>
+
+	* examples/jwhois.conf: Added .gt.
+	  (Lee Maguire, Debian bug#139877)
+
+2002-03-21  peter karlsson <peter@softwolves.pp.se>
+
+	* configure.in, po/id.po: Added Indonesian translation from TP.
+
+2002-03-20  peter karlsson <peter@softwolves.pp.se>
+
+	* src/http.c, examples/jwhois.conf: Advanced queries for http.
+	* src/lookup.c: Bugfix for advanced queries.
+
+2002-03-19  peter karlsson <peter@softwolves.pp.se>
+
+	* src/lookup.c: Added code to split domain name for advanced
+	  queries.
+	* src/jwhois.c: Fix a memory leak.
+	* examples/jwhois.conf: Updated .mt data.
+	  (Lee Maguire, Debian bug#138488)
+
+2002-02-04  Jonas Oberg  <jonas@gnu.org>
+
+	* src/rwhois.c (rwhois_parse_line): Fix %info
+	(rwhois_query_internal): Check for correct return values from
+	rwhois_read_line
+
+2002-03-07  peter karlsson <peter@softwolves.pp.se>
+
+	* examples/jwhois.conf: Added .tt data.
+	  (Lee Maguire, Debian bug#137088)
+
+2002-03-03  peter karlsson <peter@softwolves.pp.se>
+
+	* example/jwhois.conf: Fixed incorrect .dk data.
+	  (Klaus Alexander Seistrup, Debian bug#129018)
+
+2002-02-28  peter karlsson <peter@softwolves.pp.se>
+
+	* example/jwhois.conf: Updated .int and .us data.
+	  (Lee Maguire, Debian bug#136200)
+
+2002-02-11  peter karlsson <peter@softwolves.pp.se>
+
+	* example/jwhois.conf: Added .name and .coop data.
+	  (Lee Maguire, Debian bug#133429)
+
+2002-02-06  peter karlsson <peter@softwolves.pp.se>
+
+	* src/rwhois.c: Applied fix for segmentation fault on certain rwhois
+	  servers. (Colin Phipps, Debian bug#132607)
+
+2002-01-13  Jonas Oberg  <jonas@gnu.org>
+
+	* example/jwhois.conf: Updated .dk definition
+
+2002-01-12  peter karlsson <peter@softwolves.pp.se>
+
+	* po/sv.po: Some brush-ups to the translation.
+
 2002-01-09  Jonas Oberg  <jonas@gnu.org>
 
 	* Released 3.1.0
Index: example/jwhois.conf
===================================================================
RCS file: /cvsroot/jwhois/jwhois/example/jwhois.conf,v
retrieving revision 1.54
retrieving revision 1.63
diff -u -r1.54 -r1.63
--- example/jwhois.conf	8 Dec 2001 17:34:25 -0000	1.54
+++ example/jwhois.conf	28 Mar 2002 12:56:16 -0000	1.63
@@ -77,6 +77,7 @@
 	"\\.cl$" = "whois.nic.cl";
 	"\\.edu\\.cn$" = "whois.edu.cn";
 	"\\.cn$" = "whois.cnnic.net.cn";
+	"\\.coop$" = "whois.nic.coop";
 	"\\.cx$" = "whois.nic.cx";
 	"\\.cy$" = "whois.ripe.net";
 	"\\.cz$" = "whois.nic.cz";
@@ -84,6 +85,7 @@
 	"\\.dk$" = "www.dk-hostmaster.dk";
 	"\\.do$" = "whois.nic.do";
 	"\\.dz$" = "whois.ripe.net";
+	"\\.edu$" = "whois.educause.net";
 	"\\.ee$" = "whois.ripe.net";
 	"\\.eg$" = "whois.ripe.net";
 	"\\.es$" = "www.nic.es";
@@ -97,16 +99,16 @@
 	"\\.gm$" = "whois.ripe.net";
 	"\\.gr$" = "whois.ripe.net";
 	"\\.gs$" = "whois.adamsnames.tc";
+	"\\.gt$" = "www.gt";
 	"\\.hk$" = "whois.hkdnr.net.hk";
 	"\\.hm$" = "whois.registry.hm";
-	"\\.hr$" = "whois.ripe.net";
-	"\\.hu$" = "whois.nic.hu";
+	"\\.hr$" = "www.dns.hr";
 	"\\.id$" = "whois.idnic.net.id";
 	"\\.ie$" = "whois.domainregistry.ie";
 	"\\.il$" = "whois.isoc.org.il";
 	"\\.in$" = "whois.ncst.ernet.in";
 	"\\.info$" = "whois.afilias.info";
-	"\\.int$" = "whois.isi.edu";
+	"\\.int$" = "whois.iana.org";
 	"\\.is$" = "whois.isnet.is";
 	"\\.it$" = "whois.nic.it";
 	"\\.je$" = "whois.isles.net";
@@ -128,10 +130,11 @@
 	"\\.mk$" = "whois.ripe.net";
 	"\\.mm$" = "whois.nic.mm";
 	"\\.ms$" = "whois.adamsnames.tc";
-	"\\.mt$" = "whois.ripe.net";
+	"\\.mt$" = "www.um.edu.mt";
 	"\\.museum$" = "whois.museum";
 	"\\.mx$" = "whois.nic.mx";
 	"\\.my$" = "whois.mynic.net";
+	"\\.name$" = "whois.nic.name";
 	"\\.ng$" = "pgebrehiwot.iat.cnr.it";
 	"\\.nl$" = "whois.domain-registry.nl";
 	"\\.no$" = "whois.norid.no";
@@ -144,6 +147,7 @@
 	"\\.pw$" = "whois.nic.pw";
 	"\\.ro$" = "whois.rotld.ro";
 	"\\.ru$" = "whois.ripn.net";
+	"\\.sa$" = "www.saudinic.net.sa";
 	"\\.se$" = "www.nic-se.se"; # "whois.nic-se.se";
 	"\\.sg$" = "whois.nic.net.sg";
 	"\\.sh$" = "whois.nic.sh";
@@ -161,12 +165,13 @@
 	"\\.tn$" = "whois.ripe.net";
 	"\\.to$" = "whois.tonic.to";
 	"\\.tr$" = "whois.metu.edu.tr";
+	"\\.tt$" = "www.nic.tt";
 	"\\.tw$" = "whois.twnic.net";
 	"\\.ua$" = "whois.ripe.net";
 	"\\.ac\\.uk$" = "whois.ja.net";
 	"\\.gov\\.uk$" = "whois.ja.net";
 	"\\.uk$" = "whois.nic.uk";
-	"\\.us$" = "whois.isi.edu";
+	"\\.us$" = "whois.nic.us";
 	"\\.va$" = "whois.ripe.net";
 	"\\.ve$" = "rwhois.nic.ve 4321";
 	"\\.vg$" = "whois.adamsnames.tc";
@@ -391,8 +396,9 @@
 	"www\\.dk-hostmaster\\.dk" {
 		http = "true";
 		http-method = "GET";
-		http-action = "/perl/Whois.pl";
+		http-action = "/script/whois.php";
 		form-element = "query";
+		form-extra = "lang=eng";
 	}
 
 	"www\\.nic\\.es" {
@@ -401,6 +407,43 @@
 		http-action = "/cgi-bin/consulta.whois";
 		form-element = "key";
 		form-extra = "list=Dominios&tipo=procesar";	# Other <input> elements
+	}
+
+	"www\\.nic\\.tt" {
+		http = "true";
+		http-method = "POST";
+		http-action = "/cgi-bin/search.pl";
+		form-element = "name";
+	}
+
+	"www\\.um\\.edu\\.mt" {
+		http = "true";
+		http-method = "GET";
+		http-action = "/cgi-bin/nic/whois";
+		form-element = "domain";
+	}
+
+	"www\\.gt" {
+		http = "true";
+		http-method = "GET";
+		http-action = "/cgi-bin/whois.cgi";
+		form-element = "domain";
+	}
+
+	# This uses an advanced query using the query-format syntax.
+	# query-format cannot be combined with form-element or form-extra.
+	"www\\.dns\\.hr" {
+		http = "true";
+		http-method = "POST";
+		http-action = "/asp/trazidomenu.asp";
+		query-format = "Upit=${+2}"; # All but last domain segment
+	}
+
+	"www\\.saudinic\\.net\\.sa" {
+		http = "true";
+		http-method = "GET";
+		http-action = "/cgi-bin/whois.cgi";
+		query-format = "Domain=${+3}&Level=.${2+1}";
 	}
 }
 
Index: src/dns.c
===================================================================
RCS file: /cvsroot/jwhois/jwhois/src/dns.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- src/dns.c	5 Jan 2002 23:41:30 -0000	1.9
+++ src/dns.c	18 Mar 2002 09:58:42 -0000	1.10
@@ -72,6 +72,8 @@
       res->sin_port = htons(IPPORT_WHOIS);
     else
       res->sin_port = sp->s_port;
+  } else {
+     res->sin_port = htons(port);
   }
 
 #ifdef HAVE_INET_ATON
Index: src/http.c
===================================================================
RCS file: /cvsroot/jwhois/jwhois/src/http.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- src/http.c	5 Jan 2002 23:41:30 -0000	1.12
+++ src/http.c	22 Mar 2002 16:26:34 -0000	1.13
@@ -32,6 +32,7 @@
 #include <whois.h>
 #include <http.h>
 #include <utils.h>
+#include <lookup.h>
 
 #ifdef ENABLE_NLS
 # include <libintl.h>
@@ -52,6 +53,7 @@
     const char *action = get_whois_server_option(wq->host, "http-action");
     const char *element= get_whois_server_option(wq->host, "form-element");
     const char *extra  = get_whois_server_option(wq->host, "form-extra");
+    const char *format = get_whois_server_option(wq->host, "query-format");
     char **command;
     char *url;
     char *browser;
@@ -62,12 +64,12 @@
     struct jconfig *j;
 
     /* Check host configuration */
-    if (!method || !action || !element)
+    if (!method || !action || !(element || format))
     {
         printf("[HTTP: %s: %s]\n", wq->host, _("HTTP configuration is incomplete:"));
-        if (!method) printf("[HTTP: %s: %s]\n", _("Option is missing:"), "http-method");
-        if (!action) printf("[HTTP: %s: %s]\n", _("Option is missing:"), "http-action");
-        if (!element) printf("[HTTP: %s: %s]\n", _("Option is missing:"), "form-element");
+        if (!method) printf("[HTTP: %s %s]\n", _("Option is missing:"), "http-method");
+        if (!action) printf("[HTTP: %s %s]\n", _("Option is missing:"), "http-action");
+        if (!element && !format) printf("[HTTP: %s %s]\n", _("Option is missing:"), "form-element");
         return -1;
     }
 
@@ -111,14 +113,29 @@
         command[1] = command[0];
         command[2] = browser_arg;
 
-        command[3] = (char *) malloc(strlen("http://") + strlen(wq->host) +
-                                     strlen(action) + 1 + strlen(element) + 1 +
-                                     strlen(wq->query) +
-                                     (extra ? strlen(extra) + 1 : 0) + 1);
-        if (!command[3]) return -1;
-        sprintf(command[3], "http://%s%s?%s=%s%s%s",
-                wq->host, action, element, wq->query,
-                extra ? "&" : "", extra ? extra : "");
+        if (format)
+        {
+            /* Query already formatted */
+            command[3] = (char *) malloc(strlen("http://") + strlen(wq->host) +
+                                         strlen(action) + 1 +
+                                         strlen(wq->query) + 1);
+            if (!command[3]) return -1;
+            sprintf(command[3], "http://%s%s?%s",
+                    wq->host, action, wq->query);
+        }
+        else
+        {
+            /* Format query using supplied data */
+            command[3] = (char *) malloc(strlen("http://") + strlen(wq->host) +
+                                         strlen(action) + 1 +
+                                         strlen(element) + 1 +
+                                         strlen(wq->query) +
+                                         (extra ? strlen(extra) + 1 : 0) + 1);
+            if (!command[3]) return -1;
+            sprintf(command[3], "http://%s%s?%s=%s%s%s",
+                    wq->host, action, element, wq->query,
+                    extra ? "&" : "", extra ? extra : "");
+        }
         command[4] = NULL;
 
         url = command[3];
@@ -153,7 +170,7 @@
         url = command[4];
     }
 
-    if (verbose>1)
+    if (verbose > 1)
     {
         int i;
 
@@ -212,9 +229,19 @@
         if (!isget)
         {
             /* Send POST data */
-            sprintf(data, "%s=%s%s%s\n---\n",
-                    element, wq->query,
-                    extra ? "&" : "", extra ? extra : "");
+            if (format)
+            {
+                /* Query already formatted */
+                snprintf(data, MAXBUFSIZE, "%s\n---\n",
+                         wq->query);
+            }
+            else
+            {
+                /* Format query using supplied data */
+                snprintf(data, MAXBUFSIZE, "%s=%s%s%s\n---\n",
+                         element, wq->query,
+                         extra ? "&" : "", extra ? extra : "");
+            }
             write(to_browser[1], data, strlen(data) + 1);
         }
 
Index: src/jwhois.c
===================================================================
RCS file: /cvsroot/jwhois/jwhois/src/jwhois.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- src/jwhois.c	5 Jan 2002 23:41:30 -0000	1.42
+++ src/jwhois.c	22 Mar 2002 16:26:34 -0000	1.43
@@ -214,7 +214,11 @@
       exit(1);
     }
   if (ret > 0)
-    return jwhois_query(wq, text);
+    {
+      int rc = jwhois_query(wq, text);
+      free(wq->query);
+      return rc;
+    }
   else
     return 0;
 }
Index: src/lookup.c
===================================================================
RCS file: /cvsroot/jwhois/jwhois/src/lookup.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- src/lookup.c	9 Jan 2002 17:53:59 -0000	1.30
+++ src/lookup.c	22 Mar 2002 16:26:34 -0000	1.31
@@ -471,39 +471,223 @@
     }
 }
 
+/* Utility function for lookup_query_format; inserts a string into
+ * the allocated buffer, growing it if needed.
+ */
+static void
+add_string(char **bufpos, const char *string, size_t stringlen, char **bufstart, size_t *buflen)
+{
+  /* Check if string needs to be enlarged */
+  if ((*bufpos - *bufstart) + stringlen > *buflen)
+    {
+      char *new = realloc(*bufstart, *buflen * 2);
+      if (!new)
+        {
+          printf("[%s]\n", _("Error allocating memory"));
+          exit(1);
+        }
+      *buflen *= 2;
+      *bufpos = new + (*bufpos - *bufstart);
+      *bufstart = new;
+    }
+
+  /* Copy string */
+  strncpy(*bufpos, string, stringlen);
+  *bufpos += stringlen;
+}
+
+/* Utility function for lookup_query_format; selects the parts of the
+ * domain to add into the query string and calls add_string with it.
+ */
+static void
+add_part(char **bufpos, const char *string, size_t begin, size_t end, char **bufstart, size_t *buflen)
+{
+  size_t count = 1;
+  const char *first = string, *last = string, *p;
+
+  /* Find begin of first section to copy */
+  while (count < begin)
+    {
+      first = strchr(first, '.');
+      if (!first)
+        return;
+      count ++;
+      first ++;
+      if (!*first)
+        return;
+      last = first;
+    }
+
+  /* Find begin of last section to copy */
+  while (count < end)
+    {
+      last = strchr(last, '.');
+      if (!last)
+        break;
+      count ++;
+      last ++;
+      if (!*last)
+        break;
+    }
+
+  /* Find end of last section to copy */
+  if (last)
+    {
+      p = strchr(last, '.');
+      if (p)
+        last = p;
+      else
+        last = last + strlen(last);
+    }
+  else
+    last = string + strlen(string);
+
+  /* Copy */
+  add_string(bufpos, first, last - first, bufstart, buflen);
+}
+
 /*
  * This function looks into the query-format configuration and tries
  * to find out if we need any special considerations for the host we're
  * querying. If so, it returns the proper string for the query. If not,
- * it simply returns qstring.
+ * it simply returns a copy of qstring.
  */
 char *
 lookup_query_format(struct s_whois_query *wq)
 {
   char *ret = NULL, *tmpqstring, *tmpptr;
   struct jconfig *j = NULL;
+  size_t buflen, bufused, dots;
 
   if (wq->domain)
     j = jconfig_getone(wq->domain, "query-format");
   if (!j)
     {
-      ret = (char *)get_whois_server_option(wq->host, "query-format");
+      ret = get_whois_server_option(wq->host, "query-format");
       if (!ret)
-	return wq->query;
+	return strdup(wq->query);
     }
   else 
     {
       ret = j->value;
     }
-  tmpqstring = malloc(strlen(wq->query)+strlen(ret)+2);
-  strncpy(tmpqstring, ret, strlen(ret)+1);
 
-  tmpptr = (char *)strstr(tmpqstring, "$*");
-  if (!tmpptr)
-    return wq->query;
+  /* Count number of dots in domain name */
+  dots = 0;
+  tmpptr = wq->query;
+  while (NULL != (tmpptr = strchr(tmpptr, '.')))
+    {
+       dots ++;
+       tmpptr ++;
+    }
+
+  /* Allocate a buffer to work in, we grow it when needed */
+  buflen = strlen(ret) + strlen(wq->query) * 5;
+  tmpqstring = malloc(buflen);
+  if (!tmpqstring)
+    {
+      printf("[%s]\n", _("Error allocating memory"));
+      exit(1);
+    }
+  tmpptr = tmpqstring;
+
+  while (*ret)
+    {
+      /* Copy verbatim data */
+      const char *dollar = strchr(ret, '$');
+      size_t chars = dollar ? (dollar - ret) : strlen(ret);
+      if (chars)
+        add_string(&tmpptr, ret, chars, &tmpqstring, &buflen);
+      ret += chars;
+
+      /* Handle parameter */
+      if ('$' == *ret)
+        {
+          ret ++;
+          switch (*ret)
+            {
+              case '*': /* Entire hostname */
+                add_string(&tmpptr, wq->query, strlen(wq->query) - 1, &tmpqstring, &buflen);
+                ret ++;
+                break;
+
+              case '{': /* Field range */
+                {
+                  size_t startfield = 0, endfield = 0;
+                  int right = 0;
+                  char *p;
+                  ret ++;
+
+                  /* Parse start field */
+                  if (isdigit((unsigned char) *ret))
+                    {
+                      startfield = strtol(ret, &p, 10);
+                      if (*p) ret = p;
+                    }
+
+                  /* Check direction to count from */
+                  if ('+' == *ret)
+                    right = 1;
+
+                  /* Check if range */
+                  if ('+' == *ret || '-' == *ret)
+                    ret ++;
+                  else
+                    endfield = startfield;
+
+                  /* Parse end field */
+                  if (isdigit((unsigned char) *ret))
+                    {
+                      endfield = strtol(ret, &p, 10);
+                      if (*p) ret = p;
+                    }
+
+                  /* End parsing */
+                  if ('}' == *ret)
+                    {
+                      ret ++;
+                      /* Calculate field numbers */
+                      if (right)
+                        {
+                          if (startfield)
+                            {
+                              startfield = dots + 2 - startfield;
+                              if (startfield < 0)
+                                startfield = 1;
+                            }
+                          if (endfield)
+                            endfield = dots + 2 - endfield;
+                        }
+
+                      if (startfield && !endfield)
+                        {
+                          endfield = dots + 1;
+                        }
+
+                      if (!startfield && endfield)
+                        {
+                          startfield = 1;
+                        }
+
+                      /* Add fields if we have a valid range */
+                      if ((startfield || endfield) && startfield <= endfield)
+                        {
+                          add_part(&tmpptr, wq->query, startfield, endfield, &tmpqstring, &buflen);
+                        }
+                    }
+                  break;
+                }
+
+              case '$': /* Literal */
+                add_string(&tmpptr, "$", 1, &tmpqstring, &buflen);
+                ret ++;
+                break;
+            }
+        }
+    }
 
-  strncpy(tmpptr, wq->query, strlen(wq->query)+1);
-  strncat(tmpptr, strstr(ret, "$*")+2, strlen((char *)strstr(ret, "$*"))-1);
+  /* Null-terminate */
+  add_string(&tmpptr, "", 1, &tmpqstring, &buflen);
 
   return tmpqstring;
 }
Index: src/rwhois.c
===================================================================
RCS file: /cvsroot/jwhois/jwhois/src/rwhois.c,v
retrieving revision 1.11
retrieving revision 1.13
diff -u -r1.11 -r1.13
--- src/rwhois.c	5 Jan 2002 23:41:30 -0000	1.11
+++ src/rwhois.c	18 Mar 2002 09:58:42 -0000	1.13
@@ -133,7 +133,7 @@
   info_on = 0;
 
   sockfd = make_connect(wq->host, wq->port);
-  if (!sockfd)
+  if (sockfd < 0)
     {
       printf(_("[Unable to connect to remote host]\n"));
       return -1;
@@ -153,7 +153,7 @@
     {
       ret = rwhois_read_line(f, reply, text);
     }
-  while (ret != REP_OK && ret != REP_ERROR);
+  while (ret != REP_INIT && ret != REP_ERROR && ret != REP_OK);
 
   if (ret == REP_ERROR)
     printf(_("[RWHOIS: Protocol error while sending -rwhois option]\n"));
@@ -400,7 +400,9 @@
       exit(1);
     }
 
-  fgets(ptr, MAXBUFSIZE-1, f);
+  if (!fgets(ptr, MAXBUFSIZE-1, f))
+      return REP_ERROR;
+
   if (!ptr)
     {
       return REP_ERROR;
@@ -414,22 +416,24 @@
 int
 rwhois_parse_line(const char *reply, char **text)
 {
-  char *capab, *tmpptr;
+  char *tmpptr;
 
   tmpptr = (char *)strchr(reply, '\n');
   if (tmpptr)
     *tmpptr = '\0';
   
-  if (info_on)
+  if (info_on && strncasecmp(reply, "%info", 5) != 0)
     {
       add_text_to_buffer(text, create_string("%s\n", reply));
       return REP_CONT;
     }
+
   if (strncasecmp(reply, "%rwhois", 7) == 0) 
     {
-      capab = (char *)strchr(reply, ':')+1;
+      char *capab = (char *)strchr(reply, ':');
       if (!capab)
 	return REP_ERROR;
+      capab++; /* skip past first : */
       tmpptr = (char *)strchr(capab, ':');
       if (!tmpptr)
 	return REP_ERROR;
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org
How-To-Repeat: 
	With the maintainer's approval, _bump PORTREVISION_ and apply the
	following patch below _in place of_ files/patch-3.1.0-fix.
	
	(The patch was created with:

	cvs diff -l -u -r jwhois_3_1_0 -D "2002-03-29 02:00 UTC" AUTHORS \
	ChangeLog example/jwhois.conf src

	v. grabbing a fleeting tarball.)
Comment 1 Pete Fritchman freebsd_committer 2002-03-30 00:14:07 UTC
State Changed
From-To: open->feedback

Is there any hope of having the jwhois people release a new version for 
these changes?  I'd rather have a PORTREVISION bump and PATCHFILES than 
adding these diffs to ${FILESDIR}.
Comment 2 matusita freebsd_committer 2002-03-30 08:11:14 UTC
Responsible Changed
From-To: freebsd-ports->matusita

I'll handle this since I'm the MAINTAINER of this ports. 

As stated by petef, it would be better waiting a new release if 
it comes in a few days.  If not, I'll create a tarball from jwhois 
CVS repository, then update the ports using the tarball. 

jharris, do you hear anything about the release date of new jwhois?
Comment 3 jharris 2002-04-20 21:58:55 UTC
> State-Changed-By: petef 
> State-Changed-When: Fri Mar 29 16:14:07 PST 2002 
> State-Changed-Why:  
> Is there any hope of having the jwhois people release a new version for 
> these changes?  I'd rather have a PORTREVISION bump and PATCHFILES than 
> adding these diffs to ${FILESDIR}. 


Sure.  (Sorry about the delay, but there are even more new domains now. :)
Remove files/patch-3.1.0-fix and try this patch instead:

cvs server: Diffing .
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/net/jwhois/Makefile,v
retrieving revision 1.10
diff -u -r1.10 Makefile
--- Makefile	2002/04/12 17:09:57	1.10
+++ Makefile	2002/04/20 20:57:23
@@ -7,10 +7,13 @@
 
 PORTNAME=	jwhois
 PORTVERSION=	3.1.0
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	net
 MASTER_SITES=	${MASTER_SITE_GNU}
 MASTER_SITE_SUBDIR=	jwhois
+
+PATCH_SITES=	http://galileo.spaceports.com/~jharris/distfiles/
+PATCHFILES=	jwhois.rel_3_1_0-to-2002-04-20@2000UTC.patch.asc.gz
 
 MAINTAINER=	matusita@FreeBSD.org
 
Index: distinfo
===================================================================
RCS file: /home/ncvs/ports/net/jwhois/distinfo,v
retrieving revision 1.4
diff -u -r1.4 distinfo
--- distinfo	2002/02/09 09:53:52	1.4
+++ distinfo	2002/04/20 20:57:23
@@ -1 +1,2 @@
 MD5 (jwhois-3.1.0.tar.gz) = b33c23aeec9093ef5efaf1a97d69135c
+MD5 (jwhois.rel_3_1_0-to-2002-04-20@2000UTC.patch.asc.gz) = d3c89ae0a2bc9a82b4068fe55ecfed36
cvs server: Diffing files
cvs server: cannot find files/patch-3.1.0-fix

-- 
Jason Harris
jharris@widomaker.com
Comment 4 Makoto Matsushita 2002-04-21 04:46:46 UTC
jharris> Sure.  (Sorry about the delay, but there are even more new
jharris> domains now. :) Remove files/patch-3.1.0-fix and try this
jharris> patch instead:

I'll check and commit it later.  But I have one thing to be cleared
before committing - the version number.

In this patch, you set the version number 3.1.0_2 (simply bumps
PORTREVISION).  However, your patch also includes other non-3.1.0 and
upcoming features, and I'm afraid this makes some confusion to ports
users.

Do you still like the version number is 3.1.0_2?  If yes, I don't care
about this, but I want to be cleared what you think.  Thanks.

-- -
Makoto `MAR' Matsushita
Comment 5 matusita freebsd_committer 2002-04-22 16:33:39 UTC
State Changed
From-To: feedback->closed

Patch committed, thanks!